You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-24 15:26:15 +00:00
C#: Add DynamicGodotObject class
Expands to Object.call, Object.set and Object.get for accessing members. This means it can also access members from scripts written in other languages, like GDScript.
(cherry picked from commit bb6814aef0)
This commit is contained in:
committed by
Hein-Pieter van Braam-Stewart
parent
7851d828a2
commit
4c10a322d1
@@ -81,7 +81,7 @@ void godot_icall_Array_Clear(Array *ptr) {
|
||||
ptr->clear();
|
||||
}
|
||||
|
||||
bool godot_icall_Array_Contains(Array *ptr, MonoObject *item) {
|
||||
MonoBoolean godot_icall_Array_Contains(Array *ptr, MonoObject *item) {
|
||||
return ptr->find(GDMonoMarshal::mono_object_to_variant(item)) != -1;
|
||||
}
|
||||
|
||||
@@ -113,7 +113,7 @@ void godot_icall_Array_Insert(Array *ptr, int index, MonoObject *item) {
|
||||
ptr->insert(index, GDMonoMarshal::mono_object_to_variant(item));
|
||||
}
|
||||
|
||||
bool godot_icall_Array_Remove(Array *ptr, MonoObject *item) {
|
||||
MonoBoolean godot_icall_Array_Remove(Array *ptr, MonoObject *item) {
|
||||
int idx = ptr->find(GDMonoMarshal::mono_object_to_variant(item));
|
||||
if (idx >= 0) {
|
||||
ptr->remove(idx);
|
||||
@@ -208,21 +208,21 @@ void godot_icall_Dictionary_Clear(Dictionary *ptr) {
|
||||
ptr->clear();
|
||||
}
|
||||
|
||||
bool godot_icall_Dictionary_Contains(Dictionary *ptr, MonoObject *key, MonoObject *value) {
|
||||
MonoBoolean godot_icall_Dictionary_Contains(Dictionary *ptr, MonoObject *key, MonoObject *value) {
|
||||
// no dupes
|
||||
Variant *ret = ptr->getptr(GDMonoMarshal::mono_object_to_variant(key));
|
||||
return ret != NULL && *ret == GDMonoMarshal::mono_object_to_variant(value);
|
||||
}
|
||||
|
||||
bool godot_icall_Dictionary_ContainsKey(Dictionary *ptr, MonoObject *key) {
|
||||
MonoBoolean godot_icall_Dictionary_ContainsKey(Dictionary *ptr, MonoObject *key) {
|
||||
return ptr->has(GDMonoMarshal::mono_object_to_variant(key));
|
||||
}
|
||||
|
||||
bool godot_icall_Dictionary_RemoveKey(Dictionary *ptr, MonoObject *key) {
|
||||
MonoBoolean godot_icall_Dictionary_RemoveKey(Dictionary *ptr, MonoObject *key) {
|
||||
return ptr->erase(GDMonoMarshal::mono_object_to_variant(key));
|
||||
}
|
||||
|
||||
bool godot_icall_Dictionary_Remove(Dictionary *ptr, MonoObject *key, MonoObject *value) {
|
||||
MonoBoolean godot_icall_Dictionary_Remove(Dictionary *ptr, MonoObject *key, MonoObject *value) {
|
||||
Variant varKey = GDMonoMarshal::mono_object_to_variant(key);
|
||||
|
||||
// no dupes
|
||||
@@ -235,7 +235,7 @@ bool godot_icall_Dictionary_Remove(Dictionary *ptr, MonoObject *key, MonoObject
|
||||
return false;
|
||||
}
|
||||
|
||||
bool godot_icall_Dictionary_TryGetValue(Dictionary *ptr, MonoObject *key, MonoObject **value) {
|
||||
MonoBoolean godot_icall_Dictionary_TryGetValue(Dictionary *ptr, MonoObject *key, MonoObject **value) {
|
||||
Variant *ret = ptr->getptr(GDMonoMarshal::mono_object_to_variant(key));
|
||||
if (ret == NULL) {
|
||||
*value = NULL;
|
||||
@@ -245,7 +245,7 @@ bool godot_icall_Dictionary_TryGetValue(Dictionary *ptr, MonoObject *key, MonoOb
|
||||
return true;
|
||||
}
|
||||
|
||||
bool godot_icall_Dictionary_TryGetValue_Generic(Dictionary *ptr, MonoObject *key, MonoObject **value, uint32_t type_encoding, GDMonoClass *type_class) {
|
||||
MonoBoolean godot_icall_Dictionary_TryGetValue_Generic(Dictionary *ptr, MonoObject *key, MonoObject **value, uint32_t type_encoding, GDMonoClass *type_class) {
|
||||
Variant *ret = ptr->getptr(GDMonoMarshal::mono_object_to_variant(key));
|
||||
if (ret == NULL) {
|
||||
*value = NULL;
|
||||
|
||||
Reference in New Issue
Block a user