From 6e197d192066fae77089c9172386685af3cff5cd Mon Sep 17 00:00:00 2001 From: turanszkij Date: Tue, 1 Sep 2015 19:11:20 +0200 Subject: [PATCH] updated lua --- WickedEngine/MainComponent.cpp | 2 ++ WickedEngine/Vector_BindLua.cpp | 2 +- WickedEngine/wiLoader_BindLua.cpp | 12 ++++++++++++ WickedEngine/wiLoader_BindLua.h | 2 ++ WickedEngine/wiLua.cpp | 4 ++++ WickedEngine/wiLua.h | 2 ++ WickedEngine/wiLua_Globals.h | 3 +++ 7 files changed, 26 insertions(+), 1 deletion(-) diff --git a/WickedEngine/MainComponent.cpp b/WickedEngine/MainComponent.cpp index b34e9735f..433284513 100644 --- a/WickedEngine/MainComponent.cpp +++ b/WickedEngine/MainComponent.cpp @@ -86,6 +86,8 @@ void MainComponent::Update() wiBackLog::Update(); getActiveComponent()->Update(); + + wiLua::GetGlobal()->Update(); } void MainComponent::Render() diff --git a/WickedEngine/Vector_BindLua.cpp b/WickedEngine/Vector_BindLua.cpp index 4ecab8d4c..4760be6f3 100644 --- a/WickedEngine/Vector_BindLua.cpp +++ b/WickedEngine/Vector_BindLua.cpp @@ -143,7 +143,7 @@ int Vector_BindLua::Transform(lua_State* L) } int Vector_BindLua::Length(lua_State* L) { - Luna::push(L, new Vector_BindLua(XMVector3Length(vector))); + wiLua::SSetFloat(L, XMVectorGetX(XMVector3Length(vector))); return 1; } int Vector_BindLua::Normalize(lua_State* L) diff --git a/WickedEngine/wiLoader_BindLua.cpp b/WickedEngine/wiLoader_BindLua.cpp index 4c2120639..40ec3154f 100644 --- a/WickedEngine/wiLoader_BindLua.cpp +++ b/WickedEngine/wiLoader_BindLua.cpp @@ -473,6 +473,7 @@ Luna::FunctionType Object_BindLua::methods[] = { lunamethod(Object_BindLua, GetTransparency), lunamethod(Object_BindLua, SetColor), lunamethod(Object_BindLua, GetColor), + lunamethod(Object_BindLua, IsValid), { NULL, NULL } }; Luna::PropertyType Object_BindLua::properties[] = { @@ -551,6 +552,11 @@ int Object_BindLua::GetColor(lua_State *L) wiLua::SSetFloat3(L, object->color); return 3; } +int Object_BindLua::IsValid(lua_State *L) +{ + wiLua::SSetBool(L, object != nullptr); + return 1; +} void Object_BindLua::Bind() { @@ -596,6 +602,7 @@ Luna::FunctionType Armature_BindLua::methods[] = { lunamethod(Armature_BindLua, PauseAction), lunamethod(Armature_BindLua, PlayAction), lunamethod(Armature_BindLua, ResetAction), + lunamethod(Armature_BindLua, IsValid), { NULL, NULL } }; Luna::PropertyType Armature_BindLua::properties[] = { @@ -677,6 +684,11 @@ int Armature_BindLua::GetFrameCount(lua_State* L) wiLua::SSetFloat(L, (float)armature->actions[armature->activeAction].frameCount); return 1; } +int Armature_BindLua::IsValid(lua_State *L) +{ + wiLua::SSetBool(L, armature != nullptr); + return 1; +} int Armature_BindLua::ChangeAction(lua_State* L) { diff --git a/WickedEngine/wiLoader_BindLua.h b/WickedEngine/wiLoader_BindLua.h index 19a19b8bb..01e343dfd 100644 --- a/WickedEngine/wiLoader_BindLua.h +++ b/WickedEngine/wiLoader_BindLua.h @@ -93,6 +93,7 @@ public: int GetTransparency(lua_State *L); int SetColor(lua_State *L); int GetColor(lua_State *L); + int IsValid(lua_State *L); static void Bind(); }; @@ -115,6 +116,7 @@ public: int GetBones(lua_State* L); int GetFrame(lua_State* L); int GetFrameCount(lua_State* L); + int IsValid(lua_State *L); int ChangeAction(lua_State* L); int StopAction(lua_State* L); diff --git a/WickedEngine/wiLua.cpp b/WickedEngine/wiLua.cpp index 9437eea75..2ee2d3811 100644 --- a/WickedEngine/wiLua.cpp +++ b/WickedEngine/wiLua.cpp @@ -197,6 +197,10 @@ void wiLua::SetDeltaTime(double dt) SSetDouble(m_luaState, dt); lua_call(m_luaState, 1, 0); } +void wiLua::Update() +{ + Signal("game_update_tick"); +} void wiLua::Signal(const string& name) { diff --git a/WickedEngine/wiLua.h b/WickedEngine/wiLua.h index 62a9f06b2..8fbf2b62b 100644 --- a/WickedEngine/wiLua.h +++ b/WickedEngine/wiLua.h @@ -59,6 +59,8 @@ public: //set delta time to use with lua void SetDeltaTime(double dt); + //update lua scripts which are waiting for a game tick + void Update(); //send a signal to lua void Signal(const string& name); diff --git a/WickedEngine/wiLua_Globals.h b/WickedEngine/wiLua_Globals.h index 1204755ae..40b9ce4c4 100644 --- a/WickedEngine/wiLua_Globals.h +++ b/WickedEngine/wiLua_Globals.h @@ -127,5 +127,8 @@ function signal(signalName) end end +function tick() + waitSignal("game_update_tick") +end )";