EventGate.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. registerInputEvent("fxDTSBrick", "onPowerChange", "Self fxDTSBrick", 0);
  2. registerInputEvent("fxDTSBrick", "onPowerOn", "Self fxDTSBrick", 0);
  3. registerInputEvent("fxDTSBrick", "onPowerOff", "Self fxDTSBrick", 0);
  4. registerOutputEvent("fxDTSBrick", "setPowerState", "bool 0");
  5. function fxDTSBrick::onPowerChange(%this)
  6. {
  7. $InputTarget_["Self"] = %this;
  8. %this.processInputEvent("onPowerChange");
  9. }
  10. function fxDTSBrick::onPowerOn(%this)
  11. {
  12. $InputTarget_["Self"] = %this;
  13. %this.processInputEvent("onPowerOn");
  14. }
  15. function fxDTSBrick::onPowerOff(%this)
  16. {
  17. $InputTarget_["Self"] = %this;
  18. %this.processInputEvent("onPowerOff");
  19. }
  20. function fxDTSBrick::setPowerState(%this, %state, %client)
  21. {
  22. if(%this.getDatablock().isLogicEventGate)
  23. lualogic_sendinput(%this, 1, %state);
  24. }
  25. datablock fxDTSBrickData(LogicGate_EventGate_Data : brick1x1fData)
  26. {
  27. category = "Logic Bricks";
  28. subCategory = "Special";
  29. uiName = "Event Gate";
  30. iconName = $LuaLogic::Path @ "icons/EventGate";
  31. brickFile = $LuaLogic::Path @ "bricks/blb/1x1f_1i_1o.blb";
  32. hasPrint = 1;
  33. printAspectRatio = "Logic";
  34. isLogic = true;
  35. isLogicGate = true;
  36. isLogicEventGate = true;
  37. logicUIName = "";
  38. logicUIDesc = "Special gate which can be used to trigger events and use events to control its output.";
  39. logicForceColor = "YELLOW";
  40. logicForcePrint = "ARROW";
  41. logicInput = lualogic_readfile($LuaLogic::Path @ "bricks/special/EventGate-input.lua" );
  42. logicUpdate = lualogic_readfile($LuaLogic::Path @ "bricks/special/EventGate-update.lua");
  43. numLogicPorts = 2;
  44. logicPortType[0] = 1;
  45. logicPortPos[0] = "0 0 0";
  46. logicPortDir[0] = "0";
  47. logicPortCauseUpdate[0] = true;
  48. logicPortUIName[0] = "Input";
  49. logicPortUIDesc[0] = "Input which triggers the onPower input events";
  50. logicPortType[1] = 0;
  51. logicPortPos[1] = "0 0 0";
  52. logicPortDir[1] = "2";
  53. logicPortUIName[1] = "Output";
  54. logicPortUIDesc[1] = "Output controlled by the setPowerState output event";
  55. };
  56. lualogic_registergatedefinition("LogicGate_EventGate_Data");
  57. function LogicGate_EventGate_Data::LuaLogic_Callback(%this, %obj, %data)
  58. {
  59. %obj.onPowerChange();
  60. if(%data)
  61. %obj.onPowerOn();
  62. else
  63. %obj.onPowerOff();
  64. }