11#include "Components/ActorComponent.h"
14#include "SquirrelRNG.generated.h"
26UCLASS(BlueprintType, Blueprintable, DefaultToInstanced)
27class YASIUMATH_API USquirrel13 : public UObject {
33 USquirrel13(
unsigned int seed )
34 : m_seed(seed), init_seed(seed) {};
36 USquirrel13(
int position,
unsigned int seed )
37 : m_position(position), m_seed(seed), init_position(position), init_seed(seed) {};
39 USquirrel13(
int position,
unsigned int seed,
unsigned int variant )
40 : m_position(position), m_seed(seed),
m_variant(variant), init_position(position), init_seed(seed) {};
42 virtual void GetLifetimeReplicatedProps( TArray<class FLifetimeProperty>& OutLifetimeProps )
const override;
49 UPROPERTY(Replicated, SaveGame)
52 UPROPERTY(Replicated, SaveGame)
56 UPROPERTY(Replicated, SaveGame)
60 uint32 init_position = 0;
71 UFUNCTION(BlueprintCallable, Category=
"Yasiu|RNG")
72 void
InitBP(
int seed,
int position = 0 );
75 UFUNCTION(BlueprintCallable, Category=
"Yasiu|RNG")
79 UFUNCTION(BlueprintCallable, Category=
"Yasiu|RNG")
83 UFUNCTION(BlueprintCallable, Category=
"Yasiu|RNG")
89 UFUNCTION(BlueprintCallable, Category=
"Yasiu|RNG")
93 UFUNCTION(BlueprintCallable, Category=
"Yasiu|RNG")
97 UFUNCTION(BlueprintCallable, Category=
"Yasiu|RNG")
104 UFUNCTION(BlueprintCallable, Category=
"Yasiu|RNG")
108 UFUNCTION(BlueprintCallable, Category=
"Yasiu|RNG")
112 UFUNCTION(BlueprintCallable, Category=
"Yasiu|RNG")
118 UFUNCTION(BlueprintCallable, Category=
"Yasiu|RNG")
122 UFUNCTION(BlueprintCallable, Category=
"Yasiu|RNG")
128 virtual uint32 get_current_random() const;
131 uint32 get_next_random();
134 static uint32
RNG_0(
int position,
unsigned int seed );
137 static uint32
RNG_1(
int position,
unsigned int seed );
140 static uint32
RNG_2(
int position,
unsigned int seed );
143 static uint32
RNG_3(
int position,
unsigned int seed );
146 static uint32
RNG_4(
int position,
unsigned int seed );
149 static uint32
RNG_5(
int position,
unsigned int seed );
158UCLASS(BlueprintType, Blueprintable, meta=(BlueprintSpawnableComponent), DefaultToInstanced)
159class YASIUMATH_API USquirrel13_RNGComponent : public UActorComponent {
164 USquirrel13_RNGComponent();
166 virtual void GetLifetimeReplicatedProps( TArray<class FLifetimeProperty>& OutLifetimeProps )
const override;
168 UPROPERTY(BlueprintReadWrite, Replicated, Category=
"Yasiu|RNG")
169 TObjectPtr<USquirrel13> RNG;
176 UFUNCTION(BlueprintCallable, Category=
"Yasiu|RNG")
179 UFUNCTION(BlueprintCallable, Category=
"Yasiu|RNG")
180 int32 GetSeed() const;
182 UFUNCTION(BlueprintCallable, Category=
"Yasiu|RNG")
183 void SetSeed( int64 Seed );
185 UFUNCTION(BlueprintCallable, Category=
"Yasiu|RNG")
186 int GetPosition() const;
188 UFUNCTION(BlueprintCallable, Category=
"Yasiu|RNG")
189 void SetPosition(
int Pos );
191 UFUNCTION(BlueprintCallable, Category=
"Yasiu|RNG", BlueprintPure=false)
192 int GetCurrentInt(
int min,
int max ) const;
194 UFUNCTION(BlueprintCallable, Category=
"Yasiu|RNG")
195 int GetNextInt(
int min,
int max );
197 UFUNCTION(BlueprintCallable, Category=
"Yasiu|RNG", BlueprintPure=false)
198 double GetCurrentDouble() const;
200 UFUNCTION(BlueprintCallable, Category=
"Yasiu|RNG")
201 double GetNextDouble();
void InitBP(int seed, int pos=0)
Initialize values of RNG.
void SetSeed(int new_seed)
Set seed noise seed.
int GetCurrentInt(int min, int max) const
Return random value scaled to integer range <min, max> at current position.
virtual void Serialize(FArchive &Ar) override
Serialization of RNG Object.
static uint32 RNG_4(int position, unsigned int seed)
Noise variant.
void OffsetPosition(int offset=1)
Offset current position, can be positive and negative.
static uint32 RNG_3(int position, unsigned int seed)
Noise variant.
double GetNextDouble()
Move position by 1 and return double in range <0, 1>.
void InitBP(int seed, int position=0)
Modify internal values to custom.
static uint32 RNG_2(int position, unsigned int seed)
Noise variant.
int GetNextInt(int min, int max)
Move position by 1 and return random value as integer in range <min, max>.
void SetPosition(int new_position)
Set generator position.
static uint32 RNG_1(int position, unsigned int seed)
Noise variant.
int32 GetSeed() const
Get generator position.
void ResetSeedPos()
Reset to internal initial values, InitBP must be used before!
int m_variant
variable related to selected noise variant
Definition SquirrelRNG.h:57
void SetNoiseVariant(int newVariant=0)
Internal noise variants (it is not initialized, but saved), default=0, max=5 Invalid variants will us...
static uint32 RNG_5(int position, unsigned int seed)
Noise variant.
double GetCurrentDouble() const
Return last random double in range <0, 1>.
static uint32 RNG_0(int position, unsigned int seed)
Noise variant.
int GetPosition() const
Get generator position.