From bb452bba78dc1870d6316b383180472fe3a8a06a Mon Sep 17 00:00:00 2001
From: chai <chaifix@163.com>
Date: Sat, 20 Nov 2021 17:32:55 +0800
Subject: *gui

---
 Runtime/Scripting/GUI/GUI.bind.cpp          | 21 +++++++++++++++++++--
 Runtime/Scripting/Rendering/Shader.bind.cpp | 17 +++++++++++++++--
 2 files changed, 34 insertions(+), 4 deletions(-)

(limited to 'Runtime/Scripting')

diff --git a/Runtime/Scripting/GUI/GUI.bind.cpp b/Runtime/Scripting/GUI/GUI.bind.cpp
index e05d373..cc4ef88 100644
--- a/Runtime/Scripting/GUI/GUI.bind.cpp
+++ b/Runtime/Scripting/GUI/GUI.bind.cpp
@@ -12,6 +12,7 @@
 #include "Runtime/Utilities/AutoInvoke.h"
 #include "Editor/Win/Win.h"
 #include "Runtime/GUI/UILine.h"
+#include "Runtime/GUI/UIQuad.h"
 
 using namespace std;
 using namespace LuaBind;
@@ -103,10 +104,26 @@ static int DrawLine(lua_State* L)
 	return 0;
 }
 
+// GUI.DrawQuad(topleft, size)
+static int DrawQuad(lua_State* L)
+{
+    LUA_BIND_STATE(L);
+
+    Vector2f tl, size;
+    tl.RestoreFromLuaObject(state, 1);
+    size.RestoreFromLuaObject(state, 2);
+
+    UIQuad quad = UIQuad(tl.x, tl.x + size.x, tl.y, tl.y + size.y);
+    quad.Draw();
+
+    return 0;
+}
+
 static luaL_Reg guiFuncs[] = {
 	{ "DrawText", DrawText },
-	{ "DrawLine", DrawLine },
-	{0, 0}
+    { "DrawLine", DrawLine },
+    { "DrawQuad", DrawQuad },
+    {0, 0}
 };
 
 int luaopen_GameLab_Engine_GUI(lua_State* L)
diff --git a/Runtime/Scripting/Rendering/Shader.bind.cpp b/Runtime/Scripting/Rendering/Shader.bind.cpp
index 4c0c321..a001633 100644
--- a/Runtime/Scripting/Rendering/Shader.bind.cpp
+++ b/Runtime/Scripting/Rendering/Shader.bind.cpp
@@ -16,12 +16,11 @@ LUA_BIND_REGISTRY(Shader)
 		{ "IsValid", _IsValid },
         { "Use", _Use },
         { "Unuse", _UnUse },
-        //{ "SetColor", _SetColor },
+        { "SetColor", _SetColor },
         { "SetTexture", _SetTexture },
         { "SetVector2", _SetVector2 },
         { "SetVector3", _SetVector3 },
         { "SetVector4", _SetVector4 },
-        //{ "SetMatrix3", _SetMatrix3 },
         { "SetMatrix44", _SetMatrix4 }
     );
 }
@@ -165,6 +164,20 @@ LUA_BIND_IMPL_METHOD(Shader, _SetVector4)
     return 1;
 }
 
+// SetColor(name, color)
+LUA_BIND_IMPL_METHOD(Shader, _SetColor)
+{
+    LUA_BIND_PREPARE(L, Shader);
+    LUA_BIND_CHECK(L, "ST");
+
+    cc8* name = state.GetValue(1, "");
+    Color col = state.GetValue<Color>(2, Color());
+    Vector4 v = Vector4(col.r, col.g, col.b, col.a);
+
+    g_GfxDevice.SetUniformVec4(name, v);
+    return 1;
+}
+
 // shader.SetMatrix4(name, mat4)
 // shader.SetMatrix4(name, {})
 LUA_BIND_IMPL_METHOD(Shader, _SetMatrix4)
-- 
cgit v1.1-26-g67d0