Commit ce678088 by Ignacio Etcheverry

C#: Add random functions to GD class

parent 325efb60
...@@ -50,7 +50,7 @@ namespace Godot ...@@ -50,7 +50,7 @@ namespace Godot
return godot_icall_GD_hash(var); return godot_icall_GD_hash(var);
} }
public static Object InstanceFromId(int instanceId) public static Object InstanceFromId(ulong instanceId)
{ {
return godot_icall_GD_instance_from_id(instanceId); return godot_icall_GD_instance_from_id(instanceId);
} }
...@@ -110,6 +110,31 @@ namespace Godot ...@@ -110,6 +110,31 @@ namespace Godot
godot_icall_GD_printt(what); godot_icall_GD_printt(what);
} }
public static double Randf()
{
return godot_icall_GD_randf();
}
public static uint Randi()
{
return godot_icall_GD_randi();
}
public static void Randomize()
{
godot_icall_GD_randomize();
}
public static double rand_range(double from, double to)
{
return godot_icall_GD_rand_range(from, to);
}
public static uint RandSeed(ulong seed, out ulong newSeed)
{
return godot_icall_GD_rand_seed(seed, out newSeed);
}
public static int[] Range(int length) public static int[] Range(int length)
{ {
var ret = new int[length]; var ret = new int[length];
...@@ -174,7 +199,7 @@ namespace Godot ...@@ -174,7 +199,7 @@ namespace Godot
return ret; return ret;
} }
public static void Seed(int seed) public static void Seed(ulong seed)
{ {
godot_icall_GD_seed(seed); godot_icall_GD_seed(seed);
} }
...@@ -214,7 +239,7 @@ namespace Godot ...@@ -214,7 +239,7 @@ namespace Godot
internal extern static int godot_icall_GD_hash(object var); internal extern static int godot_icall_GD_hash(object var);
[MethodImpl(MethodImplOptions.InternalCall)] [MethodImpl(MethodImplOptions.InternalCall)]
internal extern static Object godot_icall_GD_instance_from_id(int instance_id); internal extern static Object godot_icall_GD_instance_from_id(ulong instance_id);
[MethodImpl(MethodImplOptions.InternalCall)] [MethodImpl(MethodImplOptions.InternalCall)]
internal extern static void godot_icall_GD_print(object[] what); internal extern static void godot_icall_GD_print(object[] what);
...@@ -232,7 +257,22 @@ namespace Godot ...@@ -232,7 +257,22 @@ namespace Godot
internal extern static void godot_icall_GD_printt(object[] what); internal extern static void godot_icall_GD_printt(object[] what);
[MethodImpl(MethodImplOptions.InternalCall)] [MethodImpl(MethodImplOptions.InternalCall)]
internal extern static void godot_icall_GD_seed(int seed); internal extern static double godot_icall_GD_randf();
[MethodImpl(MethodImplOptions.InternalCall)]
internal extern static uint godot_icall_GD_randi();
[MethodImpl(MethodImplOptions.InternalCall)]
internal extern static void godot_icall_GD_randomize();
[MethodImpl(MethodImplOptions.InternalCall)]
internal extern static double godot_icall_GD_rand_range(double from, double to);
[MethodImpl(MethodImplOptions.InternalCall)]
internal extern static uint godot_icall_GD_rand_seed(ulong seed, out ulong newSeed);
[MethodImpl(MethodImplOptions.InternalCall)]
internal extern static void godot_icall_GD_seed(ulong seed);
[MethodImpl(MethodImplOptions.InternalCall)] [MethodImpl(MethodImplOptions.InternalCall)]
internal extern static string godot_icall_GD_str(object[] what); internal extern static string godot_icall_GD_str(object[] what);
......
...@@ -52,7 +52,7 @@ MonoObject *godot_icall_GD_bytes2var(MonoArray *p_bytes) { ...@@ -52,7 +52,7 @@ MonoObject *godot_icall_GD_bytes2var(MonoArray *p_bytes) {
return GDMonoMarshal::variant_to_mono_object(ret); return GDMonoMarshal::variant_to_mono_object(ret);
} }
MonoObject *godot_icall_GD_convert(MonoObject *p_what, int p_type) { MonoObject *godot_icall_GD_convert(MonoObject *p_what, int32_t p_type) {
Variant what = GDMonoMarshal::mono_object_to_variant(p_what); Variant what = GDMonoMarshal::mono_object_to_variant(p_what);
const Variant *args[1] = { &what }; const Variant *args[1] = { &what };
Variant::CallError ce; Variant::CallError ce;
...@@ -65,7 +65,7 @@ int godot_icall_GD_hash(MonoObject *p_var) { ...@@ -65,7 +65,7 @@ int godot_icall_GD_hash(MonoObject *p_var) {
return GDMonoMarshal::mono_object_to_variant(p_var).hash(); return GDMonoMarshal::mono_object_to_variant(p_var).hash();
} }
MonoObject *godot_icall_GD_instance_from_id(int p_instance_id) { MonoObject *godot_icall_GD_instance_from_id(uint64_t p_instance_id) {
return GDMonoUtils::unmanaged_get_managed(ObjectDB::get_instance(p_instance_id)); return GDMonoUtils::unmanaged_get_managed(ObjectDB::get_instance(p_instance_id));
} }
...@@ -115,7 +115,29 @@ void godot_icall_GD_printt(MonoArray *p_what) { ...@@ -115,7 +115,29 @@ void godot_icall_GD_printt(MonoArray *p_what) {
print_line(str); print_line(str);
} }
void godot_icall_GD_seed(int p_seed) { double godot_icall_GD_randf() {
return Math::randf();
}
uint32_t godot_icall_GD_randi() {
return Math::rand();
}
void godot_icall_GD_randomize() {
Math::randomize();
}
double godot_icall_GD_rand_range(double from, double to) {
return Math::random(from, to);
}
uint32_t godot_icall_GD_rand_seed(uint64_t seed, uint64_t *newSeed) {
int ret = Math::rand_from_seed(&seed);
*newSeed = seed;
return ret;
}
void godot_icall_GD_seed(uint64_t p_seed) {
Math::seed(p_seed); Math::seed(p_seed);
} }
...@@ -201,6 +223,11 @@ void godot_register_gd_icalls() { ...@@ -201,6 +223,11 @@ void godot_register_gd_icalls() {
mono_add_internal_call("Godot.GD::godot_icall_GD_printraw", (void *)godot_icall_GD_printraw); mono_add_internal_call("Godot.GD::godot_icall_GD_printraw", (void *)godot_icall_GD_printraw);
mono_add_internal_call("Godot.GD::godot_icall_GD_prints", (void *)godot_icall_GD_prints); mono_add_internal_call("Godot.GD::godot_icall_GD_prints", (void *)godot_icall_GD_prints);
mono_add_internal_call("Godot.GD::godot_icall_GD_printt", (void *)godot_icall_GD_printt); mono_add_internal_call("Godot.GD::godot_icall_GD_printt", (void *)godot_icall_GD_printt);
mono_add_internal_call("Godot.GD::godot_icall_GD_randf", (void *)godot_icall_GD_randf);
mono_add_internal_call("Godot.GD::godot_icall_GD_randi", (void *)godot_icall_GD_randi);
mono_add_internal_call("Godot.GD::godot_icall_GD_randomize", (void *)godot_icall_GD_randomize);
mono_add_internal_call("Godot.GD::godot_icall_GD_rand_range", (void *)godot_icall_GD_rand_range);
mono_add_internal_call("Godot.GD::godot_icall_GD_rand_seed", (void *)godot_icall_GD_rand_seed);
mono_add_internal_call("Godot.GD::godot_icall_GD_seed", (void *)godot_icall_GD_seed); mono_add_internal_call("Godot.GD::godot_icall_GD_seed", (void *)godot_icall_GD_seed);
mono_add_internal_call("Godot.GD::godot_icall_GD_str", (void *)godot_icall_GD_str); mono_add_internal_call("Godot.GD::godot_icall_GD_str", (void *)godot_icall_GD_str);
mono_add_internal_call("Godot.GD::godot_icall_GD_str2var", (void *)godot_icall_GD_str2var); mono_add_internal_call("Godot.GD::godot_icall_GD_str2var", (void *)godot_icall_GD_str2var);
......
...@@ -37,11 +37,11 @@ ...@@ -37,11 +37,11 @@
MonoObject *godot_icall_GD_bytes2var(MonoArray *p_bytes); MonoObject *godot_icall_GD_bytes2var(MonoArray *p_bytes);
MonoObject *godot_icall_GD_convert(MonoObject *p_what, int p_type); MonoObject *godot_icall_GD_convert(MonoObject *p_what, int32_t p_type);
int godot_icall_GD_hash(MonoObject *p_var); int godot_icall_GD_hash(MonoObject *p_var);
MonoObject *godot_icall_GD_instance_from_id(int p_instance_id); MonoObject *godot_icall_GD_instance_from_id(uint64_t p_instance_id);
void godot_icall_GD_print(MonoArray *p_what); void godot_icall_GD_print(MonoArray *p_what);
...@@ -53,7 +53,17 @@ void godot_icall_GD_prints(MonoArray *p_what); ...@@ -53,7 +53,17 @@ void godot_icall_GD_prints(MonoArray *p_what);
void godot_icall_GD_printt(MonoArray *p_what); void godot_icall_GD_printt(MonoArray *p_what);
void godot_icall_GD_seed(int p_seed); double godot_icall_GD_randf();
uint32_t godot_icall_GD_randi();
void godot_icall_GD_randomize();
double godot_icall_GD_rand_range(double from, double to);
uint32_t godot_icall_GD_rand_seed(uint64_t seed, uint64_t *newSeed);
void godot_icall_GD_seed(uint64_t p_seed);
MonoString *godot_icall_GD_str(MonoArray *p_what); MonoString *godot_icall_GD_str(MonoArray *p_what);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment