Procházet zdrojové kódy

Updated Lua bindings
Added ContainerDirection Lua binding which was previously missing

Rcmaniac25 před 11 roky
rodič
revize
abd2df8524

+ 2 - 0
gameplay/CMakeLists.txt

@@ -292,6 +292,8 @@ set(GAMEPLAY_LUA
     src/lua/lua_CheckBox.h
     src/lua/lua_CheckBox.h
     src/lua/lua_Container.cpp
     src/lua/lua_Container.cpp
     src/lua/lua_Container.h
     src/lua/lua_Container.h
+    src/lua/lua_ContainerDirection.cpp
+    src/lua/lua_ContainerDirection.h
     src/lua/lua_ContainerScroll.cpp
     src/lua/lua_ContainerScroll.cpp
     src/lua/lua_ContainerScroll.h
     src/lua/lua_ContainerScroll.h
     src/lua/lua_Control.cpp
     src/lua/lua_Control.cpp

+ 1 - 0
gameplay/android/jni/Android.mk

@@ -138,6 +138,7 @@ LOCAL_SRC_FILES := \
     lua/lua_CameraType.cpp \
     lua/lua_CameraType.cpp \
     lua/lua_CheckBox.cpp \
     lua/lua_CheckBox.cpp \
     lua/lua_Container.cpp \
     lua/lua_Container.cpp \
+    lua/lua_ContainerDirection.cpp \
     lua/lua_ContainerScroll.cpp \
     lua/lua_ContainerScroll.cpp \
     lua/lua_Control.cpp \
     lua/lua_Control.cpp \
     lua/lua_ControlAlignment.cpp \
     lua/lua_ControlAlignment.cpp \

+ 2 - 0
gameplay/gameplay.vcxproj

@@ -93,6 +93,7 @@
     <ClCompile Include="src\lua\lua_CameraType.cpp" />
     <ClCompile Include="src\lua\lua_CameraType.cpp" />
     <ClCompile Include="src\lua\lua_CheckBox.cpp" />
     <ClCompile Include="src\lua\lua_CheckBox.cpp" />
     <ClCompile Include="src\lua\lua_Container.cpp" />
     <ClCompile Include="src\lua\lua_Container.cpp" />
+    <ClCompile Include="src\lua\lua_ContainerDirection.cpp" />
     <ClCompile Include="src\lua\lua_ContainerScroll.cpp" />
     <ClCompile Include="src\lua\lua_ContainerScroll.cpp" />
     <ClCompile Include="src\lua\lua_Control.cpp" />
     <ClCompile Include="src\lua\lua_Control.cpp" />
     <ClCompile Include="src\lua\lua_ControlAlignment.cpp" />
     <ClCompile Include="src\lua\lua_ControlAlignment.cpp" />
@@ -380,6 +381,7 @@
     <ClInclude Include="src\lua\lua_CameraType.h" />
     <ClInclude Include="src\lua\lua_CameraType.h" />
     <ClInclude Include="src\lua\lua_CheckBox.h" />
     <ClInclude Include="src\lua\lua_CheckBox.h" />
     <ClInclude Include="src\lua\lua_Container.h" />
     <ClInclude Include="src\lua\lua_Container.h" />
+    <ClInclude Include="src\lua\lua_ContainerDirection.h" />
     <ClInclude Include="src\lua\lua_ContainerScroll.h" />
     <ClInclude Include="src\lua\lua_ContainerScroll.h" />
     <ClInclude Include="src\lua\lua_Control.h" />
     <ClInclude Include="src\lua\lua_Control.h" />
     <ClInclude Include="src\lua\lua_ControlAlignment.h" />
     <ClInclude Include="src\lua\lua_ControlAlignment.h" />

+ 6 - 0
gameplay/gameplay.vcxproj.filters

@@ -873,6 +873,9 @@
     <ClCompile Include="src\lua\lua_JoystickControl.cpp">
     <ClCompile Include="src\lua\lua_JoystickControl.cpp">
       <Filter>src\lua</Filter>
       <Filter>src\lua</Filter>
     </ClCompile>
     </ClCompile>
+    <ClCompile Include="src\lua\lua_ContainerDirection.cpp">
+      <Filter>src\lua</Filter>
+    </ClCompile>
   </ItemGroup>
   </ItemGroup>
   <ItemGroup>
   <ItemGroup>
     <ClInclude Include="src\Plane.h">
     <ClInclude Include="src\Plane.h">
@@ -1733,6 +1736,9 @@
     <ClInclude Include="src\lua\lua_JoystickControl.h">
     <ClInclude Include="src\lua\lua_JoystickControl.h">
       <Filter>src\lua</Filter>
       <Filter>src\lua</Filter>
     </ClInclude>
     </ClInclude>
+    <ClInclude Include="src\lua\lua_ContainerDirection.h">
+      <Filter>src\lua</Filter>
+    </ClInclude>
   </ItemGroup>
   </ItemGroup>
   <ItemGroup>
   <ItemGroup>
     <None Include="src\ScriptController.inl">
     <None Include="src\ScriptController.inl">

+ 8 - 0
gameplay/gameplay.xcodeproj/project.pbxproj

@@ -586,6 +586,8 @@
 		5B2BC7621512514D00D176CD /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5B2BC7611512514D00D176CD /* QuartzCore.framework */; };
 		5B2BC7621512514D00D176CD /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5B2BC7611512514D00D176CD /* QuartzCore.framework */; };
 		6290E04A18223DCC00A28FB9 /* GameKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6290E04918223DCC00A28FB9 /* GameKit.framework */; };
 		6290E04A18223DCC00A28FB9 /* GameKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6290E04918223DCC00A28FB9 /* GameKit.framework */; };
 		6290E04C18223DDD00A28FB9 /* GameKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6290E04B18223DDD00A28FB9 /* GameKit.framework */; };
 		6290E04C18223DDD00A28FB9 /* GameKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6290E04B18223DDD00A28FB9 /* GameKit.framework */; };
+		8BA1B8BF197C3212009FF517 /* lua_ContainerDirection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA1B8BD197C3212009FF517 /* lua_ContainerDirection.cpp */; };
+		8BA1B8C0197C3212009FF517 /* lua_ContainerDirection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA1B8BD197C3212009FF517 /* lua_ContainerDirection.cpp */; };
 		BD2636E516CF5B7400CFE15F /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BD2636DF16CF5B7400CFE15F /* CoreMotion.framework */; };
 		BD2636E516CF5B7400CFE15F /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BD2636DF16CF5B7400CFE15F /* CoreMotion.framework */; };
 		BD2636E616CF5B7400CFE15F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BD2636E016CF5B7400CFE15F /* Foundation.framework */; };
 		BD2636E616CF5B7400CFE15F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BD2636E016CF5B7400CFE15F /* Foundation.framework */; };
 		BD2636E716CF5B7400CFE15F /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BD2636E116CF5B7400CFE15F /* OpenAL.framework */; };
 		BD2636E716CF5B7400CFE15F /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BD2636E116CF5B7400CFE15F /* OpenAL.framework */; };
@@ -1215,6 +1217,8 @@
 		5BC4E7D4150F8C3C00CBE1C0 /* res */ = {isa = PBXFileReference; lastKnownFileType = folder; path = res; sourceTree = "<group>"; };
 		5BC4E7D4150F8C3C00CBE1C0 /* res */ = {isa = PBXFileReference; lastKnownFileType = folder; path = res; sourceTree = "<group>"; };
 		6290E04918223DCC00A28FB9 /* GameKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/GameKit.framework; sourceTree = DEVELOPER_DIR; };
 		6290E04918223DCC00A28FB9 /* GameKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/GameKit.framework; sourceTree = DEVELOPER_DIR; };
 		6290E04B18223DDD00A28FB9 /* GameKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameKit.framework; path = System/Library/Frameworks/GameKit.framework; sourceTree = SDKROOT; };
 		6290E04B18223DDD00A28FB9 /* GameKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameKit.framework; path = System/Library/Frameworks/GameKit.framework; sourceTree = SDKROOT; };
+		8BA1B8BD197C3212009FF517 /* lua_ContainerDirection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_ContainerDirection.cpp; sourceTree = "<group>"; };
+		8BA1B8BE197C3212009FF517 /* lua_ContainerDirection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_ContainerDirection.h; sourceTree = "<group>"; };
 		BD2636DF16CF5B7400CFE15F /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/CoreMotion.framework; sourceTree = DEVELOPER_DIR; };
 		BD2636DF16CF5B7400CFE15F /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/CoreMotion.framework; sourceTree = DEVELOPER_DIR; };
 		BD2636E016CF5B7400CFE15F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
 		BD2636E016CF5B7400CFE15F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
 		BD2636E116CF5B7400CFE15F /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/OpenAL.framework; sourceTree = DEVELOPER_DIR; };
 		BD2636E116CF5B7400CFE15F /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/OpenAL.framework; sourceTree = DEVELOPER_DIR; };
@@ -1319,6 +1323,8 @@
 				420BBADF1817416D00C7B720 /* lua_CheckBox.h */,
 				420BBADF1817416D00C7B720 /* lua_CheckBox.h */,
 				420BBAE01817416D00C7B720 /* lua_Container.cpp */,
 				420BBAE01817416D00C7B720 /* lua_Container.cpp */,
 				420BBAE11817416D00C7B720 /* lua_Container.h */,
 				420BBAE11817416D00C7B720 /* lua_Container.h */,
+				8BA1B8BD197C3212009FF517 /* lua_ContainerDirection.cpp */,
+				8BA1B8BE197C3212009FF517 /* lua_ContainerDirection.h */,
 				420BBAE21817416D00C7B720 /* lua_ContainerScroll.cpp */,
 				420BBAE21817416D00C7B720 /* lua_ContainerScroll.cpp */,
 				420BBAE31817416D00C7B720 /* lua_ContainerScroll.h */,
 				420BBAE31817416D00C7B720 /* lua_ContainerScroll.h */,
 				420BBAE41817416D00C7B720 /* lua_Control.cpp */,
 				420BBAE41817416D00C7B720 /* lua_Control.cpp */,
@@ -2160,6 +2166,7 @@
 				42CC5A121809A4EF00AAD8AD /* Vector4.cpp in Sources */,
 				42CC5A121809A4EF00AAD8AD /* Vector4.cpp in Sources */,
 				420BBE661817416F00C7B720 /* lua_Technique.cpp in Sources */,
 				420BBE661817416F00C7B720 /* lua_Technique.cpp in Sources */,
 				420BBE5A1817416F00C7B720 /* lua_ScriptTarget.cpp in Sources */,
 				420BBE5A1817416F00C7B720 /* lua_ScriptTarget.cpp in Sources */,
+				8BA1B8BF197C3212009FF517 /* lua_ContainerDirection.cpp in Sources */,
 				420BBD361817416F00C7B720 /* lua_Light.cpp in Sources */,
 				420BBD361817416F00C7B720 /* lua_Light.cpp in Sources */,
 				42CC59BA1809A4EF00AAD8AD /* Slider.cpp in Sources */,
 				42CC59BA1809A4EF00AAD8AD /* Slider.cpp in Sources */,
 				420BBC5E1817416F00C7B720 /* lua_AudioListener.cpp in Sources */,
 				420BBC5E1817416F00C7B720 /* lua_AudioListener.cpp in Sources */,
@@ -2453,6 +2460,7 @@
 				42CC5A0B1809A4EF00AAD8AD /* Vector2.cpp in Sources */,
 				42CC5A0B1809A4EF00AAD8AD /* Vector2.cpp in Sources */,
 				420BBE671817416F00C7B720 /* lua_Technique.cpp in Sources */,
 				420BBE671817416F00C7B720 /* lua_Technique.cpp in Sources */,
 				420BBE5B1817416F00C7B720 /* lua_ScriptTarget.cpp in Sources */,
 				420BBE5B1817416F00C7B720 /* lua_ScriptTarget.cpp in Sources */,
+				8BA1B8C0197C3212009FF517 /* lua_ContainerDirection.cpp in Sources */,
 				420BBD371817416F00C7B720 /* lua_Light.cpp in Sources */,
 				420BBD371817416F00C7B720 /* lua_Light.cpp in Sources */,
 				42CC55A11809A4EF00AAD8AD /* AudioListener.cpp in Sources */,
 				42CC55A11809A4EF00AAD8AD /* AudioListener.cpp in Sources */,
 				42CC5A131809A4EF00AAD8AD /* Vector4.cpp in Sources */,
 				42CC5A131809A4EF00AAD8AD /* Vector4.cpp in Sources */,

+ 72 - 1
gameplay/src/lua/lua_AudioSource.cpp

@@ -31,6 +31,7 @@ void luaRegister_AudioSource()
         {"getState", lua_AudioSource_getState},
         {"getState", lua_AudioSource_getState},
         {"getVelocity", lua_AudioSource_getVelocity},
         {"getVelocity", lua_AudioSource_getVelocity},
         {"isLooped", lua_AudioSource_isLooped},
         {"isLooped", lua_AudioSource_isLooped},
+        {"isStreamed", lua_AudioSource_isStreamed},
         {"pause", lua_AudioSource_pause},
         {"pause", lua_AudioSource_pause},
         {"play", lua_AudioSource_play},
         {"play", lua_AudioSource_play},
         {"release", lua_AudioSource_release},
         {"release", lua_AudioSource_release},
@@ -393,6 +394,41 @@ int lua_AudioSource_isLooped(lua_State* state)
     return 0;
     return 0;
 }
 }
 
 
+int lua_AudioSource_isStreamed(lua_State* state)
+{
+    // Get the number of parameters.
+    int paramCount = lua_gettop(state);
+
+    // Attempt to match the parameters to a valid binding.
+    switch (paramCount)
+    {
+        case 1:
+        {
+            if ((lua_type(state, 1) == LUA_TUSERDATA))
+            {
+                AudioSource* instance = getInstance(state);
+                bool result = instance->isStreamed();
+
+                // Push the return value onto the stack.
+                lua_pushboolean(state, result);
+
+                return 1;
+            }
+
+            lua_pushstring(state, "lua_AudioSource_isStreamed - Failed to match the given parameters to a valid function signature.");
+            lua_error(state);
+            break;
+        }
+        default:
+        {
+            lua_pushstring(state, "Invalid number of parameters (expected 1).");
+            lua_error(state);
+            break;
+        }
+    }
+    return 0;
+}
+
 int lua_AudioSource_pause(lua_State* state)
 int lua_AudioSource_pause(lua_State* state)
 {
 {
     // Get the number of parameters.
     // Get the number of parameters.
@@ -799,9 +835,44 @@ int lua_AudioSource_static_create(lua_State* state)
             lua_error(state);
             lua_error(state);
             break;
             break;
         }
         }
+        case 2:
+        {
+            do
+            {
+                if ((lua_type(state, 1) == LUA_TSTRING || lua_type(state, 1) == LUA_TNIL) &&
+                    lua_type(state, 2) == LUA_TBOOLEAN)
+                {
+                    // Get parameter 1 off the stack.
+                    const char* param1 = gameplay::ScriptUtil::getString(1, false);
+
+                    // Get parameter 2 off the stack.
+                    bool param2 = gameplay::ScriptUtil::luaCheckBool(state, 2);
+
+                    void* returnPtr = (void*)AudioSource::create(param1, param2);
+                    if (returnPtr)
+                    {
+                        gameplay::ScriptUtil::LuaObject* object = (gameplay::ScriptUtil::LuaObject*)lua_newuserdata(state, sizeof(gameplay::ScriptUtil::LuaObject));
+                        object->instance = returnPtr;
+                        object->owns = true;
+                        luaL_getmetatable(state, "AudioSource");
+                        lua_setmetatable(state, -2);
+                    }
+                    else
+                    {
+                        lua_pushnil(state);
+                    }
+
+                    return 1;
+                }
+            } while (0);
+
+            lua_pushstring(state, "lua_AudioSource_static_create - Failed to match the given parameters to a valid function signature.");
+            lua_error(state);
+            break;
+        }
         default:
         default:
         {
         {
-            lua_pushstring(state, "Invalid number of parameters (expected 1).");
+            lua_pushstring(state, "Invalid number of parameters (expected 1 or 2).");
             lua_error(state);
             lua_error(state);
             break;
             break;
         }
         }

+ 1 - 0
gameplay/src/lua/lua_AudioSource.h

@@ -14,6 +14,7 @@ int lua_AudioSource_getRefCount(lua_State* state);
 int lua_AudioSource_getState(lua_State* state);
 int lua_AudioSource_getState(lua_State* state);
 int lua_AudioSource_getVelocity(lua_State* state);
 int lua_AudioSource_getVelocity(lua_State* state);
 int lua_AudioSource_isLooped(lua_State* state);
 int lua_AudioSource_isLooped(lua_State* state);
+int lua_AudioSource_isStreamed(lua_State* state);
 int lua_AudioSource_pause(lua_State* state);
 int lua_AudioSource_pause(lua_State* state);
 int lua_AudioSource_play(lua_State* state);
 int lua_AudioSource_play(lua_State* state);
 int lua_AudioSource_release(lua_State* state);
 int lua_AudioSource_release(lua_State* state);

+ 41 - 0
gameplay/src/lua/lua_Container.cpp

@@ -26,6 +26,7 @@
 #include "TextBox.h"
 #include "TextBox.h"
 #include "Theme.h"
 #include "Theme.h"
 #include "VerticalLayout.h"
 #include "VerticalLayout.h"
+#include "lua_ContainerDirection.h"
 #include "lua_ContainerScroll.h"
 #include "lua_ContainerScroll.h"
 #include "lua_ControlAlignment.h"
 #include "lua_ControlAlignment.h"
 #include "lua_ControlAutoSize.h"
 #include "lua_ControlAutoSize.h"
@@ -116,6 +117,7 @@ void luaRegister_Container()
         {"isWidthPercentage", lua_Container_isWidthPercentage},
         {"isWidthPercentage", lua_Container_isWidthPercentage},
         {"isXPercentage", lua_Container_isXPercentage},
         {"isXPercentage", lua_Container_isXPercentage},
         {"isYPercentage", lua_Container_isYPercentage},
         {"isYPercentage", lua_Container_isYPercentage},
+        {"moveFocus", lua_Container_moveFocus},
         {"release", lua_Container_release},
         {"release", lua_Container_release},
         {"removeControl", lua_Container_removeControl},
         {"removeControl", lua_Container_removeControl},
         {"removeListener", lua_Container_removeListener},
         {"removeListener", lua_Container_removeListener},
@@ -3694,6 +3696,45 @@ int lua_Container_isYPercentage(lua_State* state)
     return 0;
     return 0;
 }
 }
 
 
+int lua_Container_moveFocus(lua_State* state)
+{
+    // Get the number of parameters.
+    int paramCount = lua_gettop(state);
+
+    // Attempt to match the parameters to a valid binding.
+    switch (paramCount)
+    {
+        case 2:
+        {
+            if ((lua_type(state, 1) == LUA_TUSERDATA) &&
+                (lua_type(state, 2) == LUA_TSTRING || lua_type(state, 2) == LUA_TNIL))
+            {
+                // Get parameter 1 off the stack.
+                Container::Direction param1 = (Container::Direction)lua_enumFromString_ContainerDirection(luaL_checkstring(state, 2));
+
+                Container* instance = getInstance(state);
+                bool result = instance->moveFocus(param1);
+
+                // Push the return value onto the stack.
+                lua_pushboolean(state, result);
+
+                return 1;
+            }
+
+            lua_pushstring(state, "lua_Container_moveFocus - Failed to match the given parameters to a valid function signature.");
+            lua_error(state);
+            break;
+        }
+        default:
+        {
+            lua_pushstring(state, "Invalid number of parameters (expected 2).");
+            lua_error(state);
+            break;
+        }
+    }
+    return 0;
+}
+
 int lua_Container_release(lua_State* state)
 int lua_Container_release(lua_State* state)
 {
 {
     // Get the number of parameters.
     // Get the number of parameters.

+ 1 - 0
gameplay/src/lua/lua_Container.h

@@ -80,6 +80,7 @@ int lua_Container_isVisibleInHierarchy(lua_State* state);
 int lua_Container_isWidthPercentage(lua_State* state);
 int lua_Container_isWidthPercentage(lua_State* state);
 int lua_Container_isXPercentage(lua_State* state);
 int lua_Container_isXPercentage(lua_State* state);
 int lua_Container_isYPercentage(lua_State* state);
 int lua_Container_isYPercentage(lua_State* state);
+int lua_Container_moveFocus(lua_State* state);
 int lua_Container_release(lua_State* state);
 int lua_Container_release(lua_State* state);
 int lua_Container_removeControl(lua_State* state);
 int lua_Container_removeControl(lua_State* state);
 int lua_Container_removeListener(lua_State* state);
 int lua_Container_removeListener(lua_State* state);

+ 51 - 0
gameplay/src/lua/lua_ContainerDirection.cpp

@@ -0,0 +1,51 @@
+#include "Base.h"
+#include "lua_ContainerDirection.h"
+
+namespace gameplay
+{
+
+static const char* enumStringEmpty = "";
+
+static const char* luaEnumString_ContainerDirection_UP = "UP";
+static const char* luaEnumString_ContainerDirection_DOWN = "DOWN";
+static const char* luaEnumString_ContainerDirection_LEFT = "LEFT";
+static const char* luaEnumString_ContainerDirection_RIGHT = "RIGHT";
+static const char* luaEnumString_ContainerDirection_NEXT = "NEXT";
+static const char* luaEnumString_ContainerDirection_PREVIOUS = "PREVIOUS";
+
+Container::Direction lua_enumFromString_ContainerDirection(const char* s)
+{
+    if (strcmp(s, luaEnumString_ContainerDirection_UP) == 0)
+        return Container::UP;
+    if (strcmp(s, luaEnumString_ContainerDirection_DOWN) == 0)
+        return Container::DOWN;
+    if (strcmp(s, luaEnumString_ContainerDirection_LEFT) == 0)
+        return Container::LEFT;
+    if (strcmp(s, luaEnumString_ContainerDirection_RIGHT) == 0)
+        return Container::RIGHT;
+    if (strcmp(s, luaEnumString_ContainerDirection_NEXT) == 0)
+        return Container::NEXT;
+    if (strcmp(s, luaEnumString_ContainerDirection_PREVIOUS) == 0)
+        return Container::PREVIOUS;
+    return Container::UP;
+}
+
+const char* lua_stringFromEnum_ContainerDirection(Container::Direction e)
+{
+    if (e == Container::UP)
+        return luaEnumString_ContainerDirection_UP;
+    if (e == Container::DOWN)
+        return luaEnumString_ContainerDirection_DOWN;
+    if (e == Container::LEFT)
+        return luaEnumString_ContainerDirection_LEFT;
+    if (e == Container::RIGHT)
+        return luaEnumString_ContainerDirection_RIGHT;
+    if (e == Container::NEXT)
+        return luaEnumString_ContainerDirection_NEXT;
+    if (e == Container::PREVIOUS)
+        return luaEnumString_ContainerDirection_PREVIOUS;
+    return enumStringEmpty;
+}
+
+}
+

+ 15 - 0
gameplay/src/lua/lua_ContainerDirection.h

@@ -0,0 +1,15 @@
+#ifndef LUA_CONTAINERDIRECTION_H_
+#define LUA_CONTAINERDIRECTION_H_
+
+#include "Container.h"
+
+namespace gameplay
+{
+
+// Lua bindings for enum conversion functions for Container::Direction.
+Container::Direction lua_enumFromString_ContainerDirection(const char* s);
+const char* lua_stringFromEnum_ContainerDirection(Container::Direction e);
+
+}
+
+#endif

+ 70 - 1
gameplay/src/lua/lua_Form.cpp

@@ -27,6 +27,7 @@
 #include "TextBox.h"
 #include "TextBox.h"
 #include "Theme.h"
 #include "Theme.h"
 #include "VerticalLayout.h"
 #include "VerticalLayout.h"
+#include "lua_ContainerDirection.h"
 #include "lua_ContainerScroll.h"
 #include "lua_ContainerScroll.h"
 #include "lua_ControlAlignment.h"
 #include "lua_ControlAlignment.h"
 #include "lua_ControlAutoSize.h"
 #include "lua_ControlAutoSize.h"
@@ -119,6 +120,7 @@ void luaRegister_Form()
         {"isWidthPercentage", lua_Form_isWidthPercentage},
         {"isWidthPercentage", lua_Form_isWidthPercentage},
         {"isXPercentage", lua_Form_isXPercentage},
         {"isXPercentage", lua_Form_isXPercentage},
         {"isYPercentage", lua_Form_isYPercentage},
         {"isYPercentage", lua_Form_isYPercentage},
+        {"moveFocus", lua_Form_moveFocus},
         {"release", lua_Form_release},
         {"release", lua_Form_release},
         {"removeControl", lua_Form_removeControl},
         {"removeControl", lua_Form_removeControl},
         {"removeListener", lua_Form_removeListener},
         {"removeListener", lua_Form_removeListener},
@@ -3774,6 +3776,45 @@ int lua_Form_isYPercentage(lua_State* state)
     return 0;
     return 0;
 }
 }
 
 
+int lua_Form_moveFocus(lua_State* state)
+{
+    // Get the number of parameters.
+    int paramCount = lua_gettop(state);
+
+    // Attempt to match the parameters to a valid binding.
+    switch (paramCount)
+    {
+        case 2:
+        {
+            if ((lua_type(state, 1) == LUA_TUSERDATA) &&
+                (lua_type(state, 2) == LUA_TSTRING || lua_type(state, 2) == LUA_TNIL))
+            {
+                // Get parameter 1 off the stack.
+                Container::Direction param1 = (Container::Direction)lua_enumFromString_ContainerDirection(luaL_checkstring(state, 2));
+
+                Form* instance = getInstance(state);
+                bool result = instance->moveFocus(param1);
+
+                // Push the return value onto the stack.
+                lua_pushboolean(state, result);
+
+                return 1;
+            }
+
+            lua_pushstring(state, "lua_Form_moveFocus - Failed to match the given parameters to a valid function signature.");
+            lua_error(state);
+            break;
+        }
+        default:
+        {
+            lua_pushstring(state, "Invalid number of parameters (expected 2).");
+            lua_error(state);
+            break;
+        }
+    }
+    return 0;
+}
+
 int lua_Form_release(lua_State* state)
 int lua_Form_release(lua_State* state)
 {
 {
     // Get the number of parameters.
     // Get the number of parameters.
@@ -6426,9 +6467,37 @@ int lua_Form_static_getActiveControl(lua_State* state)
             return 1;
             return 1;
             break;
             break;
         }
         }
+        case 1:
+        {
+            if (lua_type(state, 1) == LUA_TNUMBER)
+            {
+                // Get parameter 1 off the stack.
+                unsigned int param1 = (unsigned int)luaL_checkunsigned(state, 1);
+
+                void* returnPtr = (void*)Form::getActiveControl(param1);
+                if (returnPtr)
+                {
+                    gameplay::ScriptUtil::LuaObject* object = (gameplay::ScriptUtil::LuaObject*)lua_newuserdata(state, sizeof(gameplay::ScriptUtil::LuaObject));
+                    object->instance = returnPtr;
+                    object->owns = false;
+                    luaL_getmetatable(state, "Control");
+                    lua_setmetatable(state, -2);
+                }
+                else
+                {
+                    lua_pushnil(state);
+                }
+
+                return 1;
+            }
+
+            lua_pushstring(state, "lua_Form_static_getActiveControl - Failed to match the given parameters to a valid function signature.");
+            lua_error(state);
+            break;
+        }
         default:
         default:
         {
         {
-            lua_pushstring(state, "Invalid number of parameters (expected 0).");
+            lua_pushstring(state, "Invalid number of parameters (expected 0 or 1).");
             lua_error(state);
             lua_error(state);
             break;
             break;
         }
         }

+ 1 - 0
gameplay/src/lua/lua_Form.h

@@ -82,6 +82,7 @@ int lua_Form_isVisibleInHierarchy(lua_State* state);
 int lua_Form_isWidthPercentage(lua_State* state);
 int lua_Form_isWidthPercentage(lua_State* state);
 int lua_Form_isXPercentage(lua_State* state);
 int lua_Form_isXPercentage(lua_State* state);
 int lua_Form_isYPercentage(lua_State* state);
 int lua_Form_isYPercentage(lua_State* state);
+int lua_Form_moveFocus(lua_State* state);
 int lua_Form_release(lua_State* state);
 int lua_Form_release(lua_State* state);
 int lua_Form_removeControl(lua_State* state);
 int lua_Form_removeControl(lua_State* state);
 int lua_Form_removeListener(lua_State* state);
 int lua_Form_removeListener(lua_State* state);

+ 14 - 0
gameplay/src/lua/lua_Global.cpp

@@ -182,6 +182,18 @@ void luaRegister_lua_Global()
         gameplay::ScriptUtil::registerConstantString("ORTHOGRAPHIC", "ORTHOGRAPHIC", scopePath);
         gameplay::ScriptUtil::registerConstantString("ORTHOGRAPHIC", "ORTHOGRAPHIC", scopePath);
     }
     }
 
 
+    // Register enumeration Container::Direction.
+    {
+        std::vector<std::string> scopePath;
+        scopePath.push_back("Container");
+        gameplay::ScriptUtil::registerConstantString("UP", "UP", scopePath);
+        gameplay::ScriptUtil::registerConstantString("DOWN", "DOWN", scopePath);
+        gameplay::ScriptUtil::registerConstantString("LEFT", "LEFT", scopePath);
+        gameplay::ScriptUtil::registerConstantString("RIGHT", "RIGHT", scopePath);
+        gameplay::ScriptUtil::registerConstantString("NEXT", "NEXT", scopePath);
+        gameplay::ScriptUtil::registerConstantString("PREVIOUS", "PREVIOUS", scopePath);
+    }
+
     // Register enumeration Container::Scroll.
     // Register enumeration Container::Scroll.
     {
     {
         std::vector<std::string> scopePath;
         std::vector<std::string> scopePath;
@@ -963,6 +975,8 @@ const char* lua_stringFromEnumGlobal(std::string& enumname, unsigned int value)
         return lua_stringFromEnum_AudioSourceState((AudioSource::State)value);
         return lua_stringFromEnum_AudioSourceState((AudioSource::State)value);
     if (enumname == "Camera::Type")
     if (enumname == "Camera::Type")
         return lua_stringFromEnum_CameraType((Camera::Type)value);
         return lua_stringFromEnum_CameraType((Camera::Type)value);
+    if (enumname == "Container::Direction")
+        return lua_stringFromEnum_ContainerDirection((Container::Direction)value);
     if (enumname == "Container::Scroll")
     if (enumname == "Container::Scroll")
         return lua_stringFromEnum_ContainerScroll((Container::Scroll)value);
         return lua_stringFromEnum_ContainerScroll((Container::Scroll)value);
     if (enumname == "Control::Alignment")
     if (enumname == "Control::Alignment")

+ 1 - 0
gameplay/src/lua/lua_Global.h

@@ -5,6 +5,7 @@
 #include "lua_AnimationClipListenerEventType.h"
 #include "lua_AnimationClipListenerEventType.h"
 #include "lua_AudioSourceState.h"
 #include "lua_AudioSourceState.h"
 #include "lua_CameraType.h"
 #include "lua_CameraType.h"
+#include "lua_ContainerDirection.h"
 #include "lua_ContainerScroll.h"
 #include "lua_ContainerScroll.h"
 #include "lua_ControlAlignment.h"
 #include "lua_ControlAlignment.h"
 #include "lua_ControlAutoSize.h"
 #include "lua_ControlAutoSize.h"

+ 22 - 1
gameplay/src/lua/lua_Touch.cpp

@@ -12,7 +12,11 @@ void luaRegister_Touch()
     {
     {
         {NULL, NULL}
         {NULL, NULL}
     };
     };
-    const luaL_Reg* lua_statics = NULL;
+    const luaL_Reg lua_statics[] = 
+    {
+        {"MAX_TOUCH_POINTS", lua_Touch_static_MAX_TOUCH_POINTS},
+        {NULL, NULL}
+    };
     std::vector<std::string> scopePath;
     std::vector<std::string> scopePath;
 
 
     gameplay::ScriptUtil::registerClass("Touch", lua_members, NULL, lua_Touch__gc, lua_statics, scopePath);
     gameplay::ScriptUtil::registerClass("Touch", lua_members, NULL, lua_Touch__gc, lua_statics, scopePath);
@@ -63,4 +67,21 @@ int lua_Touch__gc(lua_State* state)
     return 0;
     return 0;
 }
 }
 
 
+int lua_Touch_static_MAX_TOUCH_POINTS(lua_State* state)
+{
+    // Validate the number of parameters.
+    if (lua_gettop(state) > 0)
+    {
+        lua_pushstring(state, "Invalid number of parameters (expected 0).");
+        lua_error(state);
+    }
+
+    unsigned int result = Touch::MAX_TOUCH_POINTS;
+
+    // Push the return value onto the stack.
+    lua_pushunsigned(state, result);
+
+    return 1;
+}
+
 }
 }

+ 1 - 0
gameplay/src/lua/lua_Touch.h

@@ -6,6 +6,7 @@ namespace gameplay
 
 
 // Lua bindings for Touch.
 // Lua bindings for Touch.
 int lua_Touch__gc(lua_State* state);
 int lua_Touch__gc(lua_State* state);
+int lua_Touch_static_MAX_TOUCH_POINTS(lua_State* state);
 
 
 void luaRegister_Touch();
 void luaRegister_Touch();