diff --git a/WickedEngine/Vector_BindLua.cpp b/WickedEngine/Vector_BindLua.cpp index 080dea3ff..b1c193b83 100644 --- a/WickedEngine/Vector_BindLua.cpp +++ b/WickedEngine/Vector_BindLua.cpp @@ -140,6 +140,7 @@ int Vector_BindLua::Transform(lua_State* L) } + int Vector_BindLua::Dot(lua_State* L) { int argc = wiLua::SGetArgCount(L); @@ -220,6 +221,40 @@ int Vector_BindLua::Subtract(lua_State* L) wiLua::SError(L, "VectorSubtract(Vector v1,v2) not enough arguments!"); return 0; } +int Vector_BindLua::Lerp(lua_State* L) +{ + int argc = wiLua::SGetArgCount(L); + if (argc > 2) + { + Vector_BindLua* v1 = Luna::lightcheck(L, 1); + Vector_BindLua* v2 = Luna::lightcheck(L, 2); + float t = wiLua::SGetFloat(L, 3); + if (v1 && v2) + { + Luna::push(L, new Vector_BindLua(XMVectorLerp(v1->vector, v2->vector, t))); + return 1; + } + } + wiLua::SError(L, "VectorLerp(Vector v1,v2, float t) not enough arguments!"); + return 0; +} +int Vector_BindLua::Slerp(lua_State* L) +{ + int argc = wiLua::SGetArgCount(L); + if (argc > 2) + { + Vector_BindLua* v1 = Luna::lightcheck(L, 1); + Vector_BindLua* v2 = Luna::lightcheck(L, 2); + float t = wiLua::SGetFloat(L, 3); + if (v1 && v2) + { + Luna::push(L, new Vector_BindLua(XMQuaternionSlerp(v1->vector, v2->vector, t))); + return 1; + } + } + wiLua::SError(L, "QuaternionSlerp(Vector v1,v2, float t) not enough arguments!"); + return 0; +} void Vector_BindLua::Bind() { @@ -233,6 +268,8 @@ void Vector_BindLua::Bind() wiLua::GetGlobal()->RegisterFunc("VectorMultiply", Multiply); wiLua::GetGlobal()->RegisterFunc("VectorDot", Dot); wiLua::GetGlobal()->RegisterFunc("VectorCross", Cross); + wiLua::GetGlobal()->RegisterFunc("VectorLerp", Lerp); + wiLua::GetGlobal()->RegisterFunc("QuaternionSlerp", Slerp); } } diff --git a/WickedEngine/Vector_BindLua.h b/WickedEngine/Vector_BindLua.h index 02560f299..4f2b69c98 100644 --- a/WickedEngine/Vector_BindLua.h +++ b/WickedEngine/Vector_BindLua.h @@ -34,6 +34,8 @@ public: static int Multiply(lua_State* L); static int Add(lua_State* L); static int Subtract(lua_State* L); + static int Lerp(lua_State* L); + static int Slerp(lua_State* L); static void Bind();