summaryrefslogtreecommitdiff
path: root/Runtime
diff options
context:
space:
mode:
Diffstat (limited to 'Runtime')
-rw-r--r--Runtime/Graphics/OpenGL.cpp3
-rw-r--r--Runtime/ImGUI/GUIButton.cpp0
-rw-r--r--Runtime/ImGUI/GUIButton.h6
-rw-r--r--Runtime/ImGUI/GUILabel.cpp0
-rw-r--r--Runtime/ImGUI/GUILabel.h0
-rw-r--r--Runtime/LuaBind/LuaBindCFunctions.h21
-rw-r--r--Runtime/LuaBind/LuaBindState.cpp33
-rw-r--r--Runtime/Scripting/GL/GL.bind.cpp (renamed from Runtime/Scripting/GL.bind.cpp)0
8 files changed, 52 insertions, 11 deletions
diff --git a/Runtime/Graphics/OpenGL.cpp b/Runtime/Graphics/OpenGL.cpp
index e69de29..e0dc8f1 100644
--- a/Runtime/Graphics/OpenGL.cpp
+++ b/Runtime/Graphics/OpenGL.cpp
@@ -0,0 +1,3 @@
+#include "OpenGL.h"
+
+#pragma comment(lib, "opengl32.lib")
diff --git a/Runtime/ImGUI/GUIButton.cpp b/Runtime/ImGUI/GUIButton.cpp
deleted file mode 100644
index e69de29..0000000
--- a/Runtime/ImGUI/GUIButton.cpp
+++ /dev/null
diff --git a/Runtime/ImGUI/GUIButton.h b/Runtime/ImGUI/GUIButton.h
deleted file mode 100644
index fbcd0bb..0000000
--- a/Runtime/ImGUI/GUIButton.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef GUI_BUTTON_H
-#define GUI_BUTTON_H
-
-
-
-#endif \ No newline at end of file
diff --git a/Runtime/ImGUI/GUILabel.cpp b/Runtime/ImGUI/GUILabel.cpp
deleted file mode 100644
index e69de29..0000000
--- a/Runtime/ImGUI/GUILabel.cpp
+++ /dev/null
diff --git a/Runtime/ImGUI/GUILabel.h b/Runtime/ImGUI/GUILabel.h
deleted file mode 100644
index e69de29..0000000
--- a/Runtime/ImGUI/GUILabel.h
+++ /dev/null
diff --git a/Runtime/LuaBind/LuaBindCFunctions.h b/Runtime/LuaBind/LuaBindCFunctions.h
index 25ccbc2..f0f07dd 100644
--- a/Runtime/LuaBind/LuaBindCFunctions.h
+++ b/Runtime/LuaBind/LuaBindCFunctions.h
@@ -10,16 +10,29 @@
namespace
{
- //
// 获得第一个upvalue
- //
extern int luax_c_getupvalue(lua_State* L);
- //
// 调用此函数时会报错,upvalue(1)是错误信息
- //
extern int luax_c_errfunc(lua_State* L);
+#define luax_is(T, L, i) (lua_is##T(L, i))
+#define luax_isnumber(L, i) luax_is(number, L, i)
+
+ inline int luax_isinteger(lua_State* L, int i)
+ {
+ if (!luax_isnumber(L, i))
+ return 0;
+ return lua_tonumber(L, i) == lua_tointeger(L, i);
+ }
+
+ inline int luax_isfloat(lua_State* L, int i)
+ {
+ if (!luax_isnumber(L, i))
+ return 0;
+ return lua_tonumber(L, i) != lua_tointeger(L, i);
+ }
+
}
#endif \ No newline at end of file
diff --git a/Runtime/LuaBind/LuaBindState.cpp b/Runtime/LuaBind/LuaBindState.cpp
index a9520a8..4ee87f4 100644
--- a/Runtime/LuaBind/LuaBindState.cpp
+++ b/Runtime/LuaBind/LuaBindState.cpp
@@ -4,6 +4,8 @@
#include "LuaBindClass.hpp"
#include "LuaBindInternal.h"
+#include <string>
+
namespace LuaBind
{
@@ -40,6 +42,7 @@ namespace LuaBind
void State::PushGlobalNamespace()
{
+#if false
int top = GetTop();
lua_newtable(mState); // pseudo namespace table
@@ -59,6 +62,9 @@ namespace LuaBind
// stack:
// -1 pseudo global namespace
+#else
+ lua_pushvalue(mState, LUA_GLOBALSINDEX);
+#endif
}
void State::PushNamespace(cc8* name)
@@ -533,13 +539,38 @@ namespace LuaBind
return value;
}
-
+ static std::string s_str;
template <>
cc8* State::GetValue < cc8* >(int idx, const cc8* value) {
if (this->IsType(idx, LUA_TSTRING)) {
return lua_tostring(this->mState, idx);
}
+
+ if (this->IsType(idx, LUA_TNUMBER)) {
+ if (luax_isinteger(mState, -1)) {
+ int num = lua_tointeger(this->mState, idx);
+ s_str = std::to_string(num);
+ cc8* str = s_str.c_str();
+ return str;
+ }
+ else {
+ float num = lua_tonumber(this->mState, idx);
+ s_str = std::to_string(num);
+ cc8* str = s_str.c_str();
+ return str;
+ }
+ }
+
+ if (this->IsType(idx, LUA_TBOOLEAN)) {
+ bool b = lua_toboolean(this->mState, idx);
+ return b ? "true" : "false";
+ }
+
+ if (this->IsType(idx, LUA_TNIL)) {
+ return "NIL";
+ }
+
return value;
}
diff --git a/Runtime/Scripting/GL.bind.cpp b/Runtime/Scripting/GL/GL.bind.cpp
index 57dba09..57dba09 100644
--- a/Runtime/Scripting/GL.bind.cpp
+++ b/Runtime/Scripting/GL/GL.bind.cpp