summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Data/BuiltIn/Libraries/GameLab/Engine/GUI/IMGUI.lua4
-rw-r--r--Data/Libraries/GameLab/Editor/Window/GUIWindow.lua12
-rw-r--r--Documents/Unity.xlsxbin0 -> 195084 bytes
-rw-r--r--Editor/GUI/GUIWindow.cpp59
-rw-r--r--Editor/GUI/GUIWindow.h17
-rw-r--r--Editor/Scripting/Window/GUIWindow.bind.cpp17
-rw-r--r--Runtime/Lua/LuaBind/LuaBindInvoker.h4
-rw-r--r--Runtime/Lua/LuaBind/LuaBindLFunction.h2
8 files changed, 76 insertions, 39 deletions
diff --git a/Data/BuiltIn/Libraries/GameLab/Engine/GUI/IMGUI.lua b/Data/BuiltIn/Libraries/GameLab/Engine/GUI/IMGUI.lua
index 7ed156b..3030b38 100644
--- a/Data/BuiltIn/Libraries/GameLab/Engine/GUI/IMGUI.lua
+++ b/Data/BuiltIn/Libraries/GameLab/Engine/GUI/IMGUI.lua
@@ -70,4 +70,8 @@ GUI.HorizontalScrollbar = function()
end
+GUI.DrawLine = function()
+
+end
+
return GUI \ No newline at end of file
diff --git a/Data/Libraries/GameLab/Editor/Window/GUIWindow.lua b/Data/Libraries/GameLab/Editor/Window/GUIWindow.lua
index 53f08a8..e434aed 100644
--- a/Data/Libraries/GameLab/Editor/Window/GUIWindow.lua
+++ b/Data/Libraries/GameLab/Editor/Window/GUIWindow.lua
@@ -61,6 +61,14 @@ GUIWindow.set_position = function(self, position)
self.m_Native:SetPosition({position.x, position.y, position.width, position.height})
end
+GUIWindow.Start = function(self)
+
+end
+
+GUIWindow.Destroy = function(self)
+
+end
+
GUIWindow.SetContainerWindow = function(self, containerWindow)
self.m_ContainerWindow = containerWindow
self.m_Native:SetContainerWindow(containerWindow:GetNative())
@@ -85,6 +93,7 @@ end
-- 最主要的回调函数,同时处理窗口管理、事件、布局、渲染
GUIWindow.OnGUI = function(self)
+ Debug.Log("OnGUI")
self:ClearBackground()
local event = Event.current
@@ -102,12 +111,11 @@ end
GUIWindow.OnFocus = function(self)
Debug.Log("GUIWindow.OnFocus")
-end
+end
GUIWindow.ClearBackground = function(self)
GL.ClearColor(self.m_ClearColor)
GL.Clear(GL.EBufferType.ColorBuffer)
-
end
return GUIWindow \ No newline at end of file
diff --git a/Documents/Unity.xlsx b/Documents/Unity.xlsx
new file mode 100644
index 0000000..70d0a73
--- /dev/null
+++ b/Documents/Unity.xlsx
Binary files differ
diff --git a/Editor/GUI/GUIWindow.cpp b/Editor/GUI/GUIWindow.cpp
index 028a654..fe19a95 100644
--- a/Editor/GUI/GUIWindow.cpp
+++ b/Editor/GUI/GUIWindow.cpp
@@ -12,7 +12,6 @@ using namespace std;
GUIWindowProxy::GUIWindowProxy(GUIWindow *owner, LuaBind::MemberRef script)
{
-
}
void GUIWindowProxy::OnGUI(LuaBind::State& state)
@@ -24,13 +23,41 @@ void GUIWindowProxy::OnGUI(LuaBind::State& state)
invoker.Invoke(0);
}
-void GUIWindowProxy::DoGUI()
+void GUIWindowProxy::OnFocus(LuaBind::State& state)
{
- LuaBind::State state = owner->GetVM()->GetCurThread();
+ LuaBind::MemberInvoker invoker = MemberInvoker(state, owner);
+ invoker.member = script;
+ invoker.method = "OnFocus";
+ invoker.AddMember(script);
+ invoker.Invoke(0);
+}
+void GUIWindowProxy::DoGUI(LuaBind::State& state)
+{
+ OnGUI(state);
+}
+void GUIWindowProxy::DoClean(LuaBind::State& state)
+{
- OnGUI(state);
+}
+
+void GUIWindowProxy::Start(LuaBind::State& state)
+{
+ LuaBind::MemberInvoker invoker = MemberInvoker(state, owner);
+ invoker.member = script;
+ invoker.method = "Start";
+ invoker.AddMember(script);
+ invoker.Invoke(0);
+}
+
+void GUIWindowProxy::Destroy(LuaBind::State& state)
+{
+ LuaBind::MemberInvoker invoker = MemberInvoker(state, owner);
+ invoker.member = script;
+ invoker.method = "Destroy";
+ invoker.AddMember(script);
+ invoker.Invoke(0);
}
//------------------------------------------------------------------------------------
@@ -232,8 +259,6 @@ void GUIWindow::RepaintAll()
{
}
-////////////////////////////////////////////////////////////
-
GUIWindow::GUIWindow(LuaBind::VM* vm, std::string name)
: LuaBind::NativeClass<GUIWindow>(vm)
{
@@ -292,19 +317,15 @@ void GUIWindow::ProcessEventMessages(UINT message, WPARAM wParam, LPARAM lParam)
LuaBind::State state = GetVM()->GetCurThread();
SCRIPT_GLOBAL.setCurrentEvent.AddTable(state, ie);
- SCRIPT_GLOBAL.setCurrentEvent.Invoke(state, 0);
+ SCRIPT_GLOBAL.setCurrentEvent.Invoke(state);
- SCRIPT_GLOBAL.guiBeginOnGUI.Invoke(state, 0);
+ SCRIPT_GLOBAL.guiBeginOnGUI.Invoke(state);
SetAsRenderContext();
- LuaBind::MemberInvoker invoker = LuaBind::MemberInvoker(state, this);
- invoker.member = m_Script;
- invoker.method = "OnGUI";
- invoker.AddMember(m_Script);
- invoker.Invoke(0);
+ m_Script.DoGUI(state);
- SCRIPT_GLOBAL.guiEndOnGUI.Invoke(state, 0);
+ SCRIPT_GLOBAL.guiEndOnGUI.Invoke(state);
}
bool GUIWindow::SetRenderContext()
@@ -371,7 +392,8 @@ void GUIWindow::DoPaint()
void GUIWindow::OnFocus()
{
- InvokeLuaCallback(m_Script, "OnFocus");
+ LuaBind::State state = GetVM()->GetCurThread();
+ m_Script.OnFocus(state);
}
void GUIWindow::OnLostFocus()
@@ -380,11 +402,8 @@ void GUIWindow::OnLostFocus()
void GUIWindow::OnPaint()
{
- LuaBind::MemberInvoker invoker = MemberInvoker(GetVM()->GetCurThread(), this);
- invoker.member = m_Script;
- invoker.method = "OnGUI";
- invoker.AddMember(m_Script);
- invoker.Invoke(0);
+ LuaBind::State state = GetVM()->GetCurThread();
+ m_Script.OnGUI(state);
}
void GUIWindow::SetPosition(Rect position)
diff --git a/Editor/GUI/GUIWindow.h b/Editor/GUI/GUIWindow.h
index bbf2687..ed79f26 100644
--- a/Editor/GUI/GUIWindow.h
+++ b/Editor/GUI/GUIWindow.h
@@ -25,11 +25,17 @@ public:
GUIWindowProxy() {}
GUIWindowProxy(GUIWindow *owner, LuaBind::MemberRef script);
- void DoGUI();
- void DoClean();
+ void DoGUI(LuaBind::State& state);
+ void DoClean(LuaBind::State& state);
-private:
- void OnGUI(LuaBind::State& state);
+ //------------------------------------------------------
+ // callbacks
+ //------------------------------------------------------
+
+ void Start(LuaBind::State& state);
+ void Destroy(LuaBind::State& state);
+ void OnGUI(LuaBind::State& state);
+ void OnFocus(LuaBind::State& state);
};
@@ -65,8 +71,7 @@ private:
std::string m_Name;
- LuaBind::MemberRef m_Script;
- GUIWindowProxy m_Instance;
+ GUIWindowProxy m_Script;
BOOL m_MouseTracking;
DWORD m_MouseHoverTime;
diff --git a/Editor/Scripting/Window/GUIWindow.bind.cpp b/Editor/Scripting/Window/GUIWindow.bind.cpp
index 7fc0d4d..5a61592 100644
--- a/Editor/Scripting/Window/GUIWindow.bind.cpp
+++ b/Editor/Scripting/Window/GUIWindow.bind.cpp
@@ -4,11 +4,11 @@
LUA_BIND_REGISTRY(GUIWindow)
{
LUA_BIND_REGISTER_METHODS(state,
- { "DoPaint", _DoPaint },
- { "Focus", _Focus },
+ { "New", _New },
+ { "DoPaint", _DoPaint },
+ { "Focus", _Focus },
{ "SetContainerWindow", _SetContainerWindow },
- { "SetPosition", _SetPosition },
- { "New", _New }
+ { "SetPosition", _SetPosition }
);
}
@@ -16,7 +16,7 @@ LUA_BIND_POSTPROCESS(GUIWindow)
{
}
-// GUIWindow.New([script])
+// GUIWindow.New(script)
LUA_BIND_IMPL_METHOD(GUIWindow, _New)
{
LUA_BIND_STATE(L, GUIWindow);
@@ -30,9 +30,10 @@ LUA_BIND_IMPL_METHOD(GUIWindow, _New)
GUIWindow* wnd = new GUIWindow(state.GetVM());
- wnd->SetMemberRef(state, wnd->m_Script, -1);
- wnd->m_Instance.owner = wnd;
- wnd->m_Instance.script = wnd->m_Script;
+ LuaBind::MemberRef script;
+ wnd->SetMemberRef(state, script, -1);
+ wnd->m_Script.owner = wnd;
+ wnd->m_Script.script = script;
wnd->PushUserdata(state);
diff --git a/Runtime/Lua/LuaBind/LuaBindInvoker.h b/Runtime/Lua/LuaBind/LuaBindInvoker.h
index 45a4e63..5f24b15 100644
--- a/Runtime/Lua/LuaBind/LuaBindInvoker.h
+++ b/Runtime/Lua/LuaBind/LuaBindInvoker.h
@@ -26,7 +26,7 @@ namespace LuaBind
++argc;
}
- virtual void Invoke(int nReturns);
+ virtual void Invoke(int nReturns = 0);
protected:
State state;
@@ -60,7 +60,7 @@ namespace LuaBind
++argc;
}
- void Invoke(int nReturns);
+ void Invoke(int nReturns = 0);
private:
LuaBind::Object* owner;
diff --git a/Runtime/Lua/LuaBind/LuaBindLFunction.h b/Runtime/Lua/LuaBind/LuaBindLFunction.h
index 5c4346b..0d4a8a8 100644
--- a/Runtime/Lua/LuaBind/LuaBindLFunction.h
+++ b/Runtime/Lua/LuaBind/LuaBindLFunction.h
@@ -22,7 +22,7 @@ namespace LuaBind
++argc;
}
- void Invoke(State& state, int nReturns);
+ void Invoke(State& state, int nReturns = 0);
private:
int argc;