From 382a2d0f6a6777d798b1956a0d1108d5d705e9b8 Mon Sep 17 00:00:00 2001 From: maverickdgg Date: Fri, 3 Feb 2023 22:44:02 +0800 Subject: [PATCH] Added start game button. Texture changing for buttons now only change when necessary --- Assets/Editor/Layouts/UserLayout.ini | 34 ++++++++--------- Assets/Scenes/MainMenu.shade | 27 +++++++++++++- Assets/Scripts/UI/SC_ChangeSceneButton.cs | 28 ++++++++++++++ .../Scripts/UI/SC_ChangeSceneButton.cs.shmeta | 3 ++ Assets/Shaders/UI_FS.glsl | 5 +++ Assets/Shaders/UI_FS.shshaderb | Bin 1941 -> 2101 bytes SHADE_Engine/src/UI/SHButtonComponent.cpp | 2 +- SHADE_Engine/src/UI/SHButtonComponent.h | 2 + .../src/UI/SHToggleButtonComponent.cpp | 2 +- SHADE_Engine/src/UI/SHToggleButtonComponent.h | 2 + SHADE_Engine/src/UI/SHUISystem.cpp | 35 ++++++++++++++---- 11 files changed, 112 insertions(+), 28 deletions(-) create mode 100644 Assets/Scripts/UI/SC_ChangeSceneButton.cs create mode 100644 Assets/Scripts/UI/SC_ChangeSceneButton.cs.shmeta diff --git a/Assets/Editor/Layouts/UserLayout.ini b/Assets/Editor/Layouts/UserLayout.ini index c9b890bd..9710aef1 100644 --- a/Assets/Editor/Layouts/UserLayout.ini +++ b/Assets/Editor/Layouts/UserLayout.ini @@ -1,16 +1,16 @@ [Window][MainStatusBar] -Pos=0,981 -Size=1920,20 +Pos=0,989 +Size=2560,20 Collapsed=0 [Window][SHEditorMenuBar] Pos=0,48 -Size=1920,933 +Size=2560,941 Collapsed=0 [Window][Hierarchy Panel] -Pos=0,186 -Size=300,795 +Pos=0,187 +Size=300,802 Collapsed=0 DockId=0x00000004,0 @@ -20,14 +20,14 @@ Size=400,400 Collapsed=0 [Window][Inspector] -Pos=1434,48 -Size=486,933 +Pos=2074,48 +Size=486,941 Collapsed=0 DockId=0x00000006,0 [Window][Profiler] Pos=0,48 -Size=300,136 +Size=300,137 Collapsed=0 DockId=0x00000003,0 @@ -76,7 +76,7 @@ DockId=0x0000000B,0 [Window][ Viewport] Pos=302,48 -Size=1130,697 +Size=1770,705 Collapsed=0 DockId=0x0000000B,0 @@ -93,14 +93,14 @@ Collapsed=0 DockId=0x0000000A,0 [Window][ Asset Browser] -Pos=302,747 -Size=1130,234 +Pos=302,755 +Size=1770,234 Collapsed=0 DockId=0x0000000C,0 [Window][Material Inspector] -Pos=1434,48 -Size=486,933 +Pos=2074,48 +Size=486,941 Collapsed=0 DockId=0x00000006,1 @@ -116,13 +116,13 @@ Collapsed=0 [Window][Collider Tag Panel] Pos=302,48 -Size=1130,697 +Size=1770,705 Collapsed=0 DockId=0x0000000B,1 [Window][Input Bindings Panel] -Pos=1434,48 -Size=486,933 +Pos=2074,48 +Size=486,941 Collapsed=0 DockId=0x00000006,2 @@ -151,7 +151,7 @@ Column 15 Weight=1.2009 Column 16 Weight=1.0132 [Docking][Data] -DockSpace ID=0xC5C9B8AB Window=0xBE4044E9 Pos=0,77 Size=1920,933 Split=X +DockSpace ID=0xC5C9B8AB Window=0xBE4044E9 Pos=0,71 Size=2560,941 Split=X DockNode ID=0x00000005 Parent=0xC5C9B8AB SizeRef=1432,1036 Split=X DockNode ID=0x00000001 Parent=0x00000005 SizeRef=300,1036 Split=Y Selected=0x1E6EB881 DockNode ID=0x00000003 Parent=0x00000001 SizeRef=225,147 Selected=0x1E6EB881 diff --git a/Assets/Scenes/MainMenu.shade b/Assets/Scenes/MainMenu.shade index 9e6be582..e33b8115 100644 --- a/Assets/Scenes/MainMenu.shade +++ b/Assets/Scenes/MainMenu.shade @@ -1,7 +1,7 @@ - EID: 0 Name: Canvas IsActive: true - NumberOfChildren: 1 + NumberOfChildren: 2 Components: Canvas Component: Canvas Width: 1920 @@ -9,7 +9,7 @@ IsActive: true Scripts: ~ - EID: 1 - Name: Default + Name: Background IsActive: true NumberOfChildren: 0 Components: @@ -23,6 +23,29 @@ Material: 121834459 IsActive: true Scripts: ~ +- EID: 5 + Name: Start Game Button + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 75, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 400, y: 200, z: 1} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 129340704 + IsActive: true + Button Component: + Default Texture: 52901020 + Hovered Texture: 62235279 + Clicked Texture: 64722619 + IsActive: true + Scripts: + - Type: ChangeSceneButton + Enabled: true + sceneID: 86098106 - EID: 2 Name: Light IsActive: true diff --git a/Assets/Scripts/UI/SC_ChangeSceneButton.cs b/Assets/Scripts/UI/SC_ChangeSceneButton.cs new file mode 100644 index 00000000..72e15f85 --- /dev/null +++ b/Assets/Scripts/UI/SC_ChangeSceneButton.cs @@ -0,0 +1,28 @@ +using System; +using SHADE; + +public class ChangeSceneButton : Script +{ + public uint sceneID = 0; + + + protected override void awake() + { + UIElement ui = GetComponent(); + ui.OnClick.RegisterAction(() => + { + if(sceneID != 0) + { + Audio.PlaySFXOnce2D("event:/UI/success"); + SceneManager.ChangeScene(86098106); + Audio.StopAllSounds(); + } + }); + + + } + protected override void update() + { + + } +} diff --git a/Assets/Scripts/UI/SC_ChangeSceneButton.cs.shmeta b/Assets/Scripts/UI/SC_ChangeSceneButton.cs.shmeta new file mode 100644 index 00000000..ec10252b --- /dev/null +++ b/Assets/Scripts/UI/SC_ChangeSceneButton.cs.shmeta @@ -0,0 +1,3 @@ +Name: SC_ChangeSceneButton +ID: 155329160 +Type: 9 diff --git a/Assets/Shaders/UI_FS.glsl b/Assets/Shaders/UI_FS.glsl index a28642f4..3d40bc14 100644 --- a/Assets/Shaders/UI_FS.glsl +++ b/Assets/Shaders/UI_FS.glsl @@ -39,5 +39,10 @@ layout(location = 1) out uint outEntityID; void main() { fragColor = texture(textures[nonuniformEXT(MatProp.data[In2.materialIndex].textureIndex)], In.uv); + if (fragColor.a < 0.01f) + { + discard; + } + outEntityID = In2.eid; } \ No newline at end of file diff --git a/Assets/Shaders/UI_FS.shshaderb b/Assets/Shaders/UI_FS.shshaderb index ce1dd7e9c0a416be4f198d797c9709fa254dd63e..024d0a3d8912a8a893cbc4520e1df418fe57781c 100644 GIT binary patch delta 306 zcmXX>OA5kJ49t72RSVKCq=KLbT`K;n(y!n_T)FoO9>A4|7w`rmf;aIXE)-F4ro0Ek zB$H&4ck*t2;16n2K1+vH5hboPq&Nh7m0Zpnt&*!_MGBPKo?iFGmKNHFfCcoBk4)@< zStm~c_Yvkz(GnqMUkv69=QEQhMq@oaZk^|jZeySha7$qvCq}}2dKSq0pl;e#+cd)9w|5j+CUfJ9$eOu+!U5D<$2717>(comp.GetEID()); //auto texture = SHResourceManager::Get(comp.GetDefaultTexture()); - auto material = renderable->GetModifiableMaterial(); + + AssetID textureID = 0; if (!comp.isHovered && !comp.isClicked) { if (comp.GetDefaultTexture() != 0 && SHAssetManager::GetType(comp.GetDefaultTexture()) == AssetType::TEXTURE) { - material->SetProperty("data.textureIndex", SHResourceManager::LoadOrGet(comp.GetDefaultTexture())); + textureID = comp.GetDefaultTexture(); + //material->SetProperty("data.textureIndex", SHResourceManager::LoadOrGet(comp.GetDefaultTexture())); //SHLOG_INFO("SETTING DEFAULT TEXTURE") } } @@ -249,7 +251,8 @@ namespace SHADE { if (comp.GetClickedTexture() != 0 && SHAssetManager::GetType(comp.GetClickedTexture()) == AssetType::TEXTURE) { - material->SetProperty("data.textureIndex", SHResourceManager::LoadOrGet(comp.GetClickedTexture())); + textureID = comp.GetClickedTexture(); + //material->SetProperty("data.textureIndex", SHResourceManager::LoadOrGet(comp.GetClickedTexture())); //SHLOG_INFO("SETTING CLICKED TEXTURE") } } @@ -257,10 +260,17 @@ namespace SHADE { if (comp.GetHoveredTexture() != 0 && SHAssetManager::GetType(comp.GetHoveredTexture()) == AssetType::TEXTURE) { - material->SetProperty("data.textureIndex", SHResourceManager::LoadOrGet( comp.GetHoveredTexture())); + textureID = comp.GetHoveredTexture(); + //material->SetProperty("data.textureIndex", SHResourceManager::LoadOrGet( comp.GetHoveredTexture())); //SHLOG_INFO("SETTING HOVERED TEXTURE") } } + if (textureID != 0 && textureID != comp.currentTexture) + { + auto material = renderable->GetModifiableMaterial(); + comp.currentTexture = textureID; + material->SetProperty("data.textureIndex", SHResourceManager::LoadOrGet(textureID)); + } @@ -358,12 +368,14 @@ namespace SHADE auto renderable = SHComponentManager::GetComponent_s(comp.GetEID()); //auto texture = SHResourceManager::Get(comp.GetDefaultTexture()); - auto material = renderable->GetModifiableMaterial(); + //auto material = renderable->GetModifiableMaterial(); + AssetID textureID = 0; if (comp.GetValue() == false) { if (comp.GetDefaultTexture()!= 0 && SHAssetManager::GetType(comp.GetDefaultTexture()) == AssetType::TEXTURE) { - material->SetProperty("data.textureIndex", SHResourceManager::LoadOrGet(comp.GetDefaultTexture())); + textureID = comp.GetDefaultTexture(); + //material->SetProperty("data.textureIndex", SHResourceManager::LoadOrGet(comp.GetDefaultTexture())); //SHLOG_INFO("SETTING DEFAULT TEXTURE") } } @@ -371,11 +383,20 @@ namespace SHADE { if (comp.GetToggledTexture() != 0 && SHAssetManager::GetType(comp.GetToggledTexture()) == AssetType::TEXTURE) { - material->SetProperty("data.textureIndex", SHResourceManager::LoadOrGet(comp.GetToggledTexture())); + textureID = comp.GetToggledTexture(); + //material->SetProperty("data.textureIndex", SHResourceManager::LoadOrGet(comp.GetToggledTexture())); //SHLOG_INFO("SETTING DEFAULT TEXTURE") } } + if (textureID != 0 && textureID != comp.currentTexture) + { + auto material = renderable->GetModifiableMaterial(); + comp.currentTexture = textureID; + material->SetProperty("data.textureIndex", SHResourceManager::LoadOrGet(textureID)); + } + + } }