registerInputEvent("fxDTSBrick", "onPowerChange", "Self fxDTSBrick", 0); registerInputEvent("fxDTSBrick", "onPowerOn", "Self fxDTSBrick", 0); registerInputEvent("fxDTSBrick", "onPowerOff", "Self fxDTSBrick", 0); registerOutputEvent("fxDTSBrick", "setPowerState", "bool 0"); function fxDTSBrick::onPowerChange(%this) { $InputTarget_["Self"] = %this; %this.processInputEvent("onPowerChange"); } function fxDTSBrick::onPowerOn(%this) { $InputTarget_["Self"] = %this; %this.processInputEvent("onPowerOn"); } function fxDTSBrick::onPowerOff(%this) { $InputTarget_["Self"] = %this; %this.processInputEvent("onPowerOff"); } function fxDTSBrick::setPowerState(%this, %state, %client) { if(%this.getDatablock().isLogicEventGate) lualogic_sendinput(%this, 1, %state); } datablock fxDTSBrickData(LogicGate_EventGate_Data : brick1x1fData) { category = "Logic Bricks"; subCategory = "Wires - Special"; uiName = "Event Gate"; iconName = $LuaLogic::Path @ "icons/EventGate"; brickFile = $LuaLogic::Path @ "bricks/blb/1x1f_1i_1o.blb"; hasPrint = 1; printAspectRatio = "Logic"; isLogic = true; isLogicGate = true; isLogicEventGate = true; logicUIName = ""; logicUIDesc = "Special gate which can be used to trigger events and use events to control its output."; logicInput = lualogic_readfile($LuaLogic::Path @ "bricks/special/EventGate-input.lua" ); logicUpdate = lualogic_readfile($LuaLogic::Path @ "bricks/special/EventGate-update.lua"); numLogicPorts = 2; logicPortType[0] = 1; logicPortPos[0] = "0 0 0"; logicPortDir[0] = "0"; logicPortCauseUpdate[0] = true; logicPortUIName[0] = "Input"; logicPortUIDesc[0] = "Input which triggers the onPower input events"; logicPortType[1] = 0; logicPortPos[1] = "0 0 0"; logicPortDir[1] = "2"; logicPortUIName[1] = "Output"; logicPortUIDesc[1] = "Output controlled by the setPowerState output event"; }; lualogic_registergatedefinition("LogicGate_EventGate_Data"); function LogicGate_EventGate_Data::LuaLogic_Callback(%this, %obj, %data) { %obj.onPowerChange(); if(%data) %obj.onPowerOn(); else %obj.onPowerOff(); }