diff options
Diffstat (limited to 'Data')
| -rw-r--r-- | Data/BuiltIn/Libraries/GameLab/Engine/GUI/IMGUI.lua | 39 | ||||
| -rw-r--r-- | Data/BuiltIn/Libraries/GameLab/Engine/Math/Rect.lua | 8 | ||||
| -rw-r--r-- | Data/Libraries/GameLab/Editor/Window/GUIWindow.lua | 37 | ||||
| -rw-r--r-- | Data/Libraries/GameLab/Editor/Window/SplitWindow.lua | 6 | ||||
| -rw-r--r-- | Data/Resources/Shaders/Editor-Text.glsl | 5 | ||||
| -rw-r--r-- | Data/Scripts/EditorApplication.lua | 4 | ||||
| -rw-r--r-- | Data/boot.lua | 2 | 
7 files changed, 65 insertions, 36 deletions
diff --git a/Data/BuiltIn/Libraries/GameLab/Engine/GUI/IMGUI.lua b/Data/BuiltIn/Libraries/GameLab/Engine/GUI/IMGUI.lua index c2677bc..a16c2ed 100644 --- a/Data/BuiltIn/Libraries/GameLab/Engine/GUI/IMGUI.lua +++ b/Data/BuiltIn/Libraries/GameLab/Engine/GUI/IMGUI.lua @@ -12,6 +12,8 @@ local shaders  = Res.shaders  local GL       = GameLab.Engine.GL
  local Matrix44 = find "GameLab.Engine.Math.Matrix44"
  local Rendering = GameLab.Engine.Rendering
 +local EEventType = GameLab.Events.EEventType
 +local Resource = GameLab.Engine.Resource
  GUI.BeginOnGUI = function() 
      GUIState.ResetControlID()
 @@ -45,18 +47,33 @@ GUI.Label = function()  end 
  local shader 
 +local tex
 +
  GUI.Box = function(position, color, size) 
 -    --Rendering.UseShader(Res.shaders["EditorShape"])
 -	local ortho = Matrix44() 
 -    ortho:SetOrtho(0, size.x, size.y, 0,  0.1, 10)
 -	if shader == nil then 
 -    	shader = Rendering.Shader.CreateFromFile("./Resources/Shaders/Editor-Text.glsl")
 -	end 
 -
 -	Rendering.UseShader(shader)
 -	Rendering.SetMatrix44("gamelab_mat_mvp", ortho)
 -	Rendering.SetVector2("gamelab_ui_position", {0, 0})
 -	EditorGUI.Text(_G["default_font"], "你好世界!\nMaterials\nHello,World!\nProject Window Properties", 12)	
 +    if Event.current.type == EEventType.Repaint then 
 +        -- GL.ClearColor({0.13, 0.13, 0.13, 1})
 +        -- GL.Clear(GL.EBufferType.ColorBuffer)
 +        --Rendering.UseShader(Res.shaders["EditorShape"])
 +        local ortho = Matrix44() 
 +        ortho:SetOrtho(0, size.x, size.y, 0,  0.1, 10)
 +        if shader == nil then   
 +            shader = Rendering.Shader.CreateFromFile("./Resources/Shaders/Editor-Text.glsl")
 +            --shader = Rendering.Shader.CreateFromFile("./Resources/Shaders/Editor-UI.glsl")
 +        end 
 +        if tex == nil then 
 +            tex = Resource.LoadTexture("./Resources/Images/tile.png")
 +            --tex = Engine.Resource.LoadTexture("./Resources/Images/brickwall_small.jpg")
 +        end
 +    
 +        Rendering.UseShader(shader)
 +        Rendering.SetMatrix44("gamelab_mat_mvp", ortho)
 +        Rendering.SetVector2("gamelab_ui_position", {0, 0})
 +        --Rendering.SetTexture("gamelab_main_tex", tex)
 +        --Rendering.DrawUIQuad({0, 0, 200, 200})
 +        --Rendering.DrawUI9Slicing(1, {25, 25}, {25, 25}, {80, 80}, {400, 30} )
 +        EditorGUI.Text(_G["default_font"], "你好世界!\nMaterials\nHello,World!\nProject Window Properties", 12)	
 +        --EditorGUI.Text(_G["default_font"], "hello", 12)	
 +    end
  end
  GUI.HorizontalSlider = function() 
 diff --git a/Data/BuiltIn/Libraries/GameLab/Engine/Math/Rect.lua b/Data/BuiltIn/Libraries/GameLab/Engine/Math/Rect.lua index afadee8..2a1733a 100644 --- a/Data/BuiltIn/Libraries/GameLab/Engine/Math/Rect.lua +++ b/Data/BuiltIn/Libraries/GameLab/Engine/Math/Rect.lua @@ -10,10 +10,10 @@ end  Rect.Set = function(self, rect)
      if rect.Is and rect:Is(Rect) then 
 -        self.x = rect.x or rect.x
 -        self.y = rect.y or rect.y
 -        self.width = rect.z or rect.width
 -        self.height = rect.w or rect.height
 +        self.x = rect.x 
 +        self.y = rect.y 
 +        self.width = rect.width
 +        self.height = rect.height
      else
          self.x = rect.x or rect[1]
          self.y = rect.y or rect[2]
 diff --git a/Data/Libraries/GameLab/Editor/Window/GUIWindow.lua b/Data/Libraries/GameLab/Editor/Window/GUIWindow.lua index e2ceee5..c430cfd 100644 --- a/Data/Libraries/GameLab/Editor/Window/GUIWindow.lua +++ b/Data/Libraries/GameLab/Editor/Window/GUIWindow.lua @@ -9,10 +9,11 @@ local Utils     = require "GameLab.Utils"  local Events    = require "GameLab.Events"
  local GUI       = require "GameLab.Engine.GUI"
 -local Rect    = Math.Rect
 -local Event   = Events.Event
 -local Vector2 = Math.Vector2
 -local Color   = Rendering.Color
 +local Rect       = Math.Rect
 +local Event      = Events.Event
 +local EEventType = Events.EEventType
 +local Vector2    = Math.Vector2
 +local Color      = Rendering.Color
  local clone = Utils.Clone
 @@ -99,20 +100,22 @@ end  -- 最主要的回调函数,同时处理窗口管理、事件、布局、渲染
  GUIWindow.OnGUI = function(self)
      Debug.Log("OnGUI")
 -    self:ClearBackground()
      local event = Event.current
 -    local sp = self.splitWindow
 -    if sp ~= nil and event ~= nil then
 -        local e = clone(event)
 -        e.mousePosition:Add(self.position.xy) -- 坐标转换到全局containerWindow的坐标
 -        sp:DoSplit(e)
 +    if event.type ~= EEventType.Repaint then 
 +        local sp = self.splitWindow
 +        if sp ~= nil and event ~= nil then
 +            local e = clone(event)
 +            e.mousePosition:Add(self.position.xy) -- 坐标转换到全局containerWindow的坐标
 +            sp:DoSplit(e)
 +        end 
      end 
 +    self:ClearBackground()
      GUI.Box(Rect(), Color(), self.position.size)
 -end 
 +end
  GUIWindow.GetContainerWindow = function(self)
      return self.m_ContainerWindow
 @@ -120,11 +123,17 @@ 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)
 +    if Event.current.type == EEventType.Repaint then 
 +        GL.ClearColor(self.m_ClearColor)
 +        GL.Clear(GL.EBufferType.ColorBuffer)
 +    end 
  end
 +GUIWindow.DoRepaint = function(self)
 +    self.m_Native:DoPaint()
 +end 
 +
  return GUIWindow
\ No newline at end of file diff --git a/Data/Libraries/GameLab/Editor/Window/SplitWindow.lua b/Data/Libraries/GameLab/Editor/Window/SplitWindow.lua index fea443d..cd8d3a3 100644 --- a/Data/Libraries/GameLab/Editor/Window/SplitWindow.lua +++ b/Data/Libraries/GameLab/Editor/Window/SplitWindow.lua @@ -179,4 +179,10 @@ SplitWindow.AddSubWindow = function(self, subWindow)      subWindow.m_Parent = self  end   +SplitWindow.DoRepaint = function(self) +    for _, wnd in ipairs(self.m_SubWindows) do  +        wnd:DoRepaint() +    end  +end  +  return SplitWindow
\ No newline at end of file diff --git a/Data/Resources/Shaders/Editor-Text.glsl b/Data/Resources/Shaders/Editor-Text.glsl index d1003c3..3c1ad4f 100644 --- a/Data/Resources/Shaders/Editor-Text.glsl +++ b/Data/Resources/Shaders/Editor-Text.glsl @@ -5,7 +5,7 @@ Cull Off  Blend SrcAlpha OneMinusSrcAlpha  DepthTest Off  CMD_END -  +  uniform mat4 gamelab_mat_mvp;  uniform sampler2D gamelab_main_tex;  uniform vec2 gamelab_ui_position; @@ -36,11 +36,8 @@ out vec4 FragColor;  void main()  { -	//vec2 uv = vec2(uv.x, 1 - uv.y);      vec4 sampled = vec4(0.8,0.8,0.8,texture(gamelab_main_tex, uv).r);  	sampled *= color; -	// if(sampled.a == 0) -	// 	sampled = vec4(1,0,0,1);  	FragColor = sampled;  }  FSH_END diff --git a/Data/Scripts/EditorApplication.lua b/Data/Scripts/EditorApplication.lua index 92df9ad..1a31cdd 100644 --- a/Data/Scripts/EditorApplication.lua +++ b/Data/Scripts/EditorApplication.lua @@ -45,8 +45,8 @@ local v = GameLab.Engine.Math.Vector4(1,2,3,4)  local c = Engine.Rendering.Color(1,1,1,1) -GL.ClearColor({1,1,1,1}) -GL.Clear(GL.EBufferType.ColorBuffer)  +-- GL.ClearColor({1,1,1,1}) +-- GL.Clear(GL.EBufferType.ColorBuffer)   local files = {  	"README.txt", diff --git a/Data/boot.lua b/Data/boot.lua index ff8e93f..94dabd1 100644 --- a/Data/boot.lua +++ b/Data/boot.lua @@ -37,7 +37,7 @@ require "GameLab.Editor"  require "GameLab.Editor.Window"
  -- debugging
 ---require("LuaPanda").start("127.0.0.1",8818)
 +require("LuaPanda").start("127.0.0.1",8818)
  -- launch editor
  dofile("./Scripts/EditorApplication.lua") 
  | 
