Browse Source

Add UnsubscribeFromEvent function to ScriptObject, rename basic.lua to ToCppHook.lua.

aster2013 12 years ago
parent
commit
82c1a7c59c

+ 2 - 2
Source/Engine/LuaScript/CMakeLists.txt

@@ -49,8 +49,8 @@ foreach (API_PKG_FILE ${API_PKG_FILES})
     set (GEN_CPP_FILES ${GEN_CPP_FILES} ${GEN_CPP_FILE})
     file (GLOB PKG_FILES ${CMAKE_CURRENT_SOURCE_DIR}/pkgs/${API}/*.pkg)
     add_custom_command (OUTPUT ${GEN_CPP_FILE} 
-        COMMAND ${PROJECT_ROOT_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/${GEN_CPP_FILE} ${NAME}
-        DEPENDS ${TOLUADEP} ${API_PKG_FILE} ${PKG_FILES} ${CMAKE_CURRENT_SOURCE_DIR}/pkgs/basic.lua
+        COMMAND ${PROJECT_ROOT_DIR}/Bin/tolua++ -L ToCppHook.lua -o ${CMAKE_CURRENT_BINARY_DIR}/${GEN_CPP_FILE} ${NAME}
+        DEPENDS ${TOLUADEP} ${API_PKG_FILE} ${PKG_FILES} ${CMAKE_CURRENT_SOURCE_DIR}/pkgs/ToCppHook.lua
         WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/pkgs
         COMMENT "Generating tolua++ API binding on the fly for ${API}")
 endforeach ()

+ 1 - 3
Source/Engine/LuaScript/pkgs/LuaScript/LuaScript.pkg

@@ -9,8 +9,6 @@ void UnsubscribeFromEvent(void* sender, const String eventName);
 void UnsubscribeFromEvents(void* sender);
 
 ${
-
-
 #define TOLUA_DISABLE_tolua_LuaScriptLuaAPI_SendEvent00
 static int tolua_LuaScriptLuaAPI_SendEvent00(lua_State* tolua_S)
 {
@@ -190,4 +188,4 @@ static int tolua_LuaScriptLuaAPI_UnsubscribeFromEvents00(lua_State* tolua_S)
  return 0;
 #endif
 }
-$}
+$}

+ 35 - 4
Source/Engine/LuaScript/pkgs/LuaScript/LuaScriptInstance.pkg

@@ -33,10 +33,11 @@ function LuaScriptObject:GetNode()
 end
 
 function LuaScriptObject:SubscribeToEvent(param1, param2, param3)
-    local instance = self.instance
+    local instance = self.instance    
     if instance == nil then
         return
     end
+
     if param3 == nil then
         instance:SubscribeToEvent(param1, param2)
     else
@@ -44,6 +45,36 @@ function LuaScriptObject:SubscribeToEvent(param1, param2, param3)
     end
 end
 
+function LuaScriptObject:UnsubscribeFromEvent(param1, param2)
+    local instance = self.instance
+    if instance == nil then
+        return
+    end
+
+    if param2 == nil then
+        instance:UnsubscribeFromEvent(param1)
+    else
+        instance:UnsubscribeFromEvent(param1, param2)
+    end
+end
+
+function LuaScriptObject:UnsubscribeFromAllEvents()
+    local instance = self.instance
+    if instance == nil then
+        return
+    end 
+    instance:UnsubscribeFromAllEvents()
+end
+
+function LuaScriptObject:UnsubscribeFromEvents(sender)
+    local instance = self.instance
+    if instance == nil then
+        return
+    end
+
+    instance:UnsubscribeFromEvents(sender)
+end
+
 function ScriptObject()
     local o = {}
     setmetatable(o, LuaScriptObject)
@@ -60,7 +91,7 @@ function CreateScriptObjectInstance(object, instance)
     o.instance = instance
     o.node = instance:GetNode()
     
-    -- Call object's start function.
+    -- Call start function
     o:Start()
     
     return o
@@ -72,11 +103,11 @@ function DestroyScriptObjectInstance(instance)
         return
     end
     
-    -- Call stop function.
+    -- Call stop function
     object:Stop()
     
     object.node = nil
     object.instance = nil
     instance.object = nil
 end
-$]
+$]

+ 0 - 0
Source/Engine/LuaScript/pkgs/basic.lua → Source/Engine/LuaScript/pkgs/ToCppHook.lua