Ver código fonte

Added missing DelayedStart() functionality to LuaScriptInstance.

Lasse Öörni 10 anos atrás
pai
commit
1f0fc3de93

+ 10 - 1
Source/Urho3D/LuaScript/LuaScriptInstance.cpp

@@ -51,6 +51,7 @@ namespace Urho3D
 static const char* scriptObjectMethodNames[] = {
     "Start",
     "Stop",
+    "DelayedStart",
     "Update",
     "PostUpdate",
     "FixedUpdate",
@@ -601,7 +602,7 @@ void LuaScriptInstance::SubscribeToScriptMethodEvents()
 {
     Scene* scene = GetScene();
 
-    if (scene && scriptObjectMethods_[LSOM_UPDATE])
+    if (scene && (scriptObjectMethods_[LSOM_UPDATE] || scriptObjectMethods_[LSOM_DELAYEDSTART]))
         SubscribeToEvent(scene, E_SCENEUPDATE, URHO3D_HANDLER(LuaScriptInstance, HandleUpdate));
 
     if (scene && scriptObjectMethods_[LSOM_POSTUPDATE])
@@ -640,6 +641,14 @@ void LuaScriptInstance::HandleUpdate(StringHash eventType, VariantMap& eventData
     using namespace Update;
     float timeStep = eventData[P_TIMESTEP].GetFloat();
 
+    // Execute delayed start before first update
+    if (scriptObjectMethods_[LSOM_DELAYEDSTART])
+    {
+        if (scriptObjectMethods_[LSOM_DELAYEDSTART]->BeginCall(this))
+            scriptObjectMethods_[LSOM_DELAYEDSTART]->EndCall();
+        scriptObjectMethods_[LSOM_DELAYEDSTART] = 0;  // Only execute once
+    }
+
     LuaFunction* function = scriptObjectMethods_[LSOM_UPDATE];
     if (function && function->BeginCall(this))
     {

+ 1 - 0
Source/Urho3D/LuaScript/LuaScriptInstance.h

@@ -40,6 +40,7 @@ enum LuaScriptObjectMethod
 {
     LSOM_START = 0,
     LSOM_STOP,
+    LSOM_DELAYEDSTART,
     LSOM_UPDATE,
     LSOM_POSTUPDATE,
     LSOM_FIXEDUPDATE,