Skip to content

Instantly share code, notes, and snippets.

@Airyzz
Created November 8, 2023 05:13
Show Gist options
  • Save Airyzz/347416544acf34a880f2e38fe949b01a to your computer and use it in GitHub Desktop.
Save Airyzz/347416544acf34a880f2e38fe949b01a to your computer and use it in GitHub Desktop.
import SwiftGodot
class ArrayTest : Node {
// MARK: - Required initializers for Godot
required init(nativeHandle _: UnsafeRawPointer) {
fatalError("init(nativeHandle:) called, it is a sign that something is wrong, as these objects should not be re-hydrated")
}
required init() {
ArrayTest._initClass
super.init()
}
var array: GArray = GArray(base: GArray(), type: Int32(Variant.GType.object.rawValue), className: StringName("Resource"), script: Variant())
static var _initClass: Void = {
let className = StringName("ArrayTest")
let classInfo = ClassInfo<ArrayTest>(name: className)
let args = [
PropInfo(
propertyType: .array,
propertyName: "nodes",
className: className,
hint: .none,
hintStr: "",
usage: .default)
]
classInfo.registerMethod(name: "get_nodes", flags: .default, returnValue: args[0], arguments: [], function: ArrayTest.getNodes)
classInfo.registerMethod(name: "set_nodes", flags: .default, returnValue: nil, arguments: args, function: ArrayTest.setNodes)
let prop = PropInfo(
propertyType: .array,
propertyName: "nodes",
className: "ArrayTest",
hint: .arrayType,
hintStr: "NodePath",
usage: .default
)
classInfo.registerProperty(prop, getter: "get_nodes", setter: "set_nodes")
} ()
func setNodes (args: [Variant]) -> Variant? {
let v = args[0]
print(v)
let garray = GArray(v)
if(garray != nil) {
array = garray!
}
return nil
}
func getNodes (args: [Variant]) -> Variant? {
if(array == nil) {
return nil
}
return Variant(array)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment