-
Notifications
You must be signed in to change notification settings - Fork 155
Open
Description
Hello,
I'm trying to implement some sort of duplication mechanism with Python instances in order to use temporary results without altering my initial instance. My problem is that I can't find a way to either return a new instance from Python to Godot, or to pass an instance created in Godot to Python.
For the first option, returning a new instance from Python doesn't seem accepted by Godot:
# MyClass.py
@exposed
class MyClass(Object):
# [...]
def duplicate(self) -> "MyClass":
new_instance = MyClass()
# assign new_instance attributes from self
return new_instance
# script.gd
var MyClass = preload("res://.../MyClass.py")
var instance = MyClass.new()
var instance2 = instance.duplicate() # -> instance2 is Null !
For the second option, I tried to pass a new instance created in the GDScript to copy the fields in the Python class directly, but I don't get the right class and I didn't find how to retrieve the Python instance:
# script.gd
var MyClass = preload("res://.../MyClass.py")
var instance1 = MyClass.new()
var instance2 = MyClass.new()
instance2.copy(instance1)
# MyClass.py
@exposed
class MyClass(Object):
# [...]
def copy(self, initial) -> None:
# initial is a <godot.builtins.Object> and not a <MyClass> object, I can't access the attributes
Does somebody known how to overcome these issues?
I'm using Godot 3.5.1_stable and PythonScript 0.5.
Thanks !
Metadata
Metadata
Assignees
Labels
No labels