public override object CreateInstance(Type neosType) { Data.OverloadSetting typeOverloadSetting = GetOverload(neosType); if (typeOverloadSetting is null) { UniLog.Log($"Missing Component overload for {neosType.FullName}"); return(null); } Component instance = InstanceSlot.AttachComponent(typeOverloadSetting.OverloadType ?? neosType.FullName); if (typeOverloadSetting.Initializer != null) { try { //Create a new environment each time LuaTable environment = LuaInstance.CreateEnvironment(); environment.DefineFunction("FindType", new Func <string, Type>(luaFindType)); //Set "Instance" to point to the component we want to modify environment.SetMemberValue("Instance", instance); //Compile and run the initializer script LuaInstance.CompileChunk(typeOverloadSetting.Initializer, "Init.lua", new LuaCompileOptions() { ClrEnabled = false }).Run(environment); } catch (Exception ex) { UniLog.Log($"Unable to run initializer on {typeOverloadSetting.OverloadType}: {ex}"); return(null); } } return(instance); }
public override object CreateInstance(Type neosType) { Data.OverloadSetting typeOverloadSetting = GetOverload(neosType); if (typeOverloadSetting is null || typeOverloadSetting.OverloadType is null) { UniLog.Log($"Missing LogiX overload for {neosType.FullName}"); return(null); } return(InstanceSlot.AttachComponent(typeOverloadSetting.OverloadType)); }