2
0

LuaScriptInstance.pkg 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. $#include "LuaScriptInstance.h"
  2. class LuaScriptInstance : public Component
  3. {
  4. bool CreateObject(const String scriptObjectType);
  5. bool CreateObject(const String scriptFileName, const String scriptObjectType);
  6. void SetScriptFileName(const String scriptFileName);
  7. void SetScriptObjectType(const String scriptObjectType);
  8. void ScriptSubscribeToEvent @ SubscribeToEvent(const String eventName, const String functionName);
  9. void ScriptUnsubscribeFromEvent @ UnsubscribeFromEvent(const String eventName);
  10. void ScriptUnsubscribeFromAllEvents @ UnsubscribeFromAllEvents();
  11. void ScriptSubscribeToEvent @ SubscribeToEvent(void* sender, const String eventName, const String functionName);
  12. void ScriptUnsubscribeFromEvent @ UnsubscribeFromEvent(void* sender, const String eventName);
  13. void ScriptUnsubscribeFromEvents @ UnsubscribeFromEvents(void* sender);
  14. const String GetScriptFileName() const;
  15. const String GetScriptObjectType() const;
  16. tolua_property__get_set const String scriptFileName;
  17. tolua_property__get_set const String scriptObjectType;
  18. };
  19. $[
  20. LuaScriptObject = {}
  21. function LuaScriptObject:Start()
  22. end
  23. function LuaScriptObject:Stop()
  24. end
  25. function LuaScriptObject:GetNode()
  26. return self.node
  27. end
  28. function LuaScriptObject:SubscribeToEvent(param1, param2, param3)
  29. local instance = self.instance
  30. if instance == nil then
  31. return
  32. end
  33. if param3 == nil then
  34. instance:SubscribeToEvent(param1, param2)
  35. else
  36. instance:SubscribeToEvent(param1, param2, param3)
  37. end
  38. end
  39. function LuaScriptObject:UnsubscribeFromEvent(param1, param2)
  40. local instance = self.instance
  41. if instance == nil then
  42. return
  43. end
  44. if param2 == nil then
  45. instance:UnsubscribeFromEvent(param1)
  46. else
  47. instance:UnsubscribeFromEvent(param1, param2)
  48. end
  49. end
  50. function LuaScriptObject:UnsubscribeFromAllEvents()
  51. local instance = self.instance
  52. if instance == nil then
  53. return
  54. end
  55. instance:UnsubscribeFromAllEvents()
  56. end
  57. function LuaScriptObject:UnsubscribeFromEvents(sender)
  58. local instance = self.instance
  59. if instance == nil then
  60. return
  61. end
  62. instance:UnsubscribeFromEvents(sender)
  63. end
  64. function ScriptObject()
  65. local o = {}
  66. setmetatable(o, LuaScriptObject)
  67. LuaScriptObject.__index = LuaScriptObject
  68. return o
  69. end
  70. function CreateScriptObjectInstance(object, instance)
  71. local o = {}
  72. setmetatable(o, object)
  73. object.__index = object
  74. instance.object = o
  75. o.instance = instance
  76. o.node = instance:GetNode()
  77. -- Call start function
  78. o:Start()
  79. return o
  80. end
  81. function DestroyScriptObjectInstance(instance)
  82. local object = instance.object
  83. if object == nil then
  84. return
  85. end
  86. -- Call stop function
  87. object:Stop()
  88. object.node = nil
  89. object.instance = nil
  90. instance.object = nil
  91. end
  92. $]