LuaScriptInstance.pkg 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. $#include "LuaScriptInstance.h"
  2. class LuaScriptInstance : public Component
  3. {
  4. bool CreateObject(const String scriptObjectType);
  5. bool CreateObject(LuaFile* scriptFile, const String scriptObjectType);
  6. void SetScriptFile(LuaFile* scriptFile);
  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. LuaFile* GetScriptFile() const;
  15. const String GetScriptObjectType() const;
  16. tolua_property__get_set const LuaFile* scriptFile;
  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. local keys = {}
  78. for k, v in pairs(o) do
  79. keys[k] = true
  80. end
  81. -- Call start function
  82. o:Start()
  83. local attrNames = {}
  84. for k, v in pairs(o) do
  85. if keys[k] == nil then
  86. table.insert(attrNames, k)
  87. end
  88. end
  89. return o, attrNames
  90. end
  91. function DestroyScriptObjectInstance(instance)
  92. local object = instance.object
  93. if object == nil then
  94. return
  95. end
  96. -- Call stop function
  97. object:Stop()
  98. object.node = nil
  99. object.instance = nil
  100. instance.object = nil
  101. end
  102. $]