armory/Sources/armory/logicnode/GetTraitNameNode.hx

45 lines
1.2 KiB
Haxe

package armory.logicnode;
import iron.Trait;
class GetTraitNameNode extends LogicNode {
public function new(tree: LogicTree) {
super(tree);
}
override function get(from: Int): Dynamic {
var trait: Dynamic = inputs[0].get();
if (trait == null) return null;
switch (from) {
// Name
case 0: {
// Check CanvasScript
var cname = cast Type.resolveClass("armory.trait.internal.CanvasScript");
if (Std.isOfType(trait, cname)) {
return trait.cnvName;
}
// Check WasmScript
var cname = cast Type.resolveClass("armory.trait.internal.WasmScript");
if (Std.isOfType(trait, cname)) {
return trait.wasmName;
}
// Other
var res_arr = (Type.getClassName(Type.getClass(trait))).split(".");
return res_arr[res_arr.length - 1];
}
// Class Type
case 1: {
var cname = Type.getClassName(Type.getClass(trait));
if (cname.indexOf("CanvasScript") > -1) return "Canvas";
if (cname.indexOf("WasmScript") > -1) return "Wasm";
if (cname.indexOf("armory.trait.") > -1) return "Bundle";
if (cname.indexOf("arm.node.") > -1) return "LogicNode";
if (cname.indexOf("Trait") > -1) return "Haxe";
return null;
}
}
return null;
}
}