From 8d10c48645f758467a0948618f7fa0116d083392 Mon Sep 17 00:00:00 2001 From: Glence Date: Tue, 21 Feb 2023 19:31:50 +0800 Subject: [PATCH 1/4] Bug fixes and WIP for alpha --- Assets/Materials/UIMat.shmat | 2 +- Assets/Materials/UIMat_MainMenu.shmat | 2 +- Assets/Scenes/MainGame.shade | 39 +++++++++++++----- Assets/Scenes/MainMenu.shade | 13 +++--- Assets/Scenes/WinScene.shade | 1 + .../AIBehaviour/Implemented/Homeowner1.cs | 14 +++++++ Assets/Scripts/Gameplay/Item/SC_Item.cs | 20 +++++++++ .../Gameplay/Player/SC_PickAndThrow.cs | 17 ++++++-- .../Gameplay/Player/SC_PlayerController.cs | 18 ++++++-- .../Gameplay/Player/SC_ThirdPersonCamera.cs | 5 +++ Assets/Scripts/Gameplay/SC_GameManager.cs | 2 - Assets/Scripts/{ => Gameplay}/SC_JumpPad.cs | 0 Assets/Scripts/Gameplay/SC_JumpPad.cs.shmeta | 3 ++ Assets/Scripts/UI/SC_MainMenu.cs | 26 ++++++++++++ Assets/Scripts/UI/SC_PauseMenu.cs | 7 +--- Assets/Shaders/UI_FS.glsl | 4 +- Assets/Shaders/UI_FS.shshaderb | Bin 2101 -> 2125 bytes Assets/Shaders/UI_VS.glsl | 7 +++- Assets/Shaders/UI_VS.shshaderb | Bin 3817 -> 3901 bytes .../Graphics/MiddleEnd/Batching/SHBatch.cpp | 2 +- .../MiddleEnd/Interface/SHGraphicsSystem.cpp | 3 +- SHADE_Engine/src/UI/SHUISystem.cpp | 2 +- SHADE_Managed/src/Scene/SceneManager.cxx | 8 ++++ SHADE_Managed/src/Scene/SceneManager.hxx | 2 + 24 files changed, 156 insertions(+), 41 deletions(-) rename Assets/Scripts/{ => Gameplay}/SC_JumpPad.cs (100%) create mode 100644 Assets/Scripts/Gameplay/SC_JumpPad.cs.shmeta diff --git a/Assets/Materials/UIMat.shmat b/Assets/Materials/UIMat.shmat index 36c2f66c..b56d1bcb 100644 --- a/Assets/Materials/UIMat.shmat +++ b/Assets/Materials/UIMat.shmat @@ -4,5 +4,5 @@ Properties: data.color: {x: 1, y: 1, z: 1, w: 1} data.textureIndex: 51995224 - data.alpha: 0 + data.alpha: 1 data.beta: {x: 1, y: 1, z: 1} \ No newline at end of file diff --git a/Assets/Materials/UIMat_MainMenu.shmat b/Assets/Materials/UIMat_MainMenu.shmat index 0ca4c7a1..ba2069e9 100644 --- a/Assets/Materials/UIMat_MainMenu.shmat +++ b/Assets/Materials/UIMat_MainMenu.shmat @@ -4,5 +4,5 @@ Properties: data.color: {x: 1, y: 1, z: 1, w: 1} data.textureIndex: 54429632 - data.alpha: 0 + data.alpha: 1 data.beta: {x: 1, y: 1, z: 1} \ No newline at end of file diff --git a/Assets/Scenes/MainGame.shade b/Assets/Scenes/MainGame.shade index 591c386f..ddac35e8 100644 --- a/Assets/Scenes/MainGame.shade +++ b/Assets/Scenes/MainGame.shade @@ -8540,6 +8540,7 @@ currCategory: 1 density: 1 dontReturn: false + soundDistance: 10 - EID: 157 Name: Mesh_Meat IsActive: true @@ -8587,6 +8588,7 @@ currCategory: 1 density: 1 dontReturn: false + soundDistance: 10 - EID: 156 Name: Mesh_Meat IsActive: true @@ -8634,6 +8636,7 @@ currCategory: 1 density: 1 dontReturn: false + soundDistance: 10 - EID: 155 Name: Mesh_Cheese IsActive: true @@ -8681,6 +8684,7 @@ currCategory: 2 density: 1 dontReturn: false + soundDistance: 10 - EID: 154 Name: Mesh_Cheese IsActive: true @@ -8728,6 +8732,7 @@ currCategory: 2 density: 1 dontReturn: false + soundDistance: 10 - EID: 153 Name: Mesh_Cheese IsActive: true @@ -8775,6 +8780,7 @@ currCategory: 2 density: 1 dontReturn: false + soundDistance: 10 - EID: 65778 Name: Mesh_Apple IsActive: true @@ -8822,6 +8828,7 @@ currCategory: 0 density: 1 dontReturn: false + soundDistance: 10 - EID: 152 Name: Mesh_Apple IsActive: true @@ -8869,6 +8876,7 @@ currCategory: 0 density: 1 dontReturn: false + soundDistance: 10 - EID: 151 Name: Mesh_Apple IsActive: true @@ -8916,6 +8924,7 @@ currCategory: 0 density: 1 dontReturn: false + soundDistance: 10 - EID: 65686 Name: Watermelon IsActive: true @@ -8967,6 +8976,7 @@ currCategory: 2 density: 1 dontReturn: false + soundDistance: 10 - EID: 131220 Name: Piece1 IsActive: true @@ -9014,6 +9024,7 @@ currCategory: 1 density: 3 dontReturn: false + soundDistance: 10 - EID: 131219 Name: Piece2 IsActive: true @@ -9061,6 +9072,7 @@ currCategory: 1 density: 3 dontReturn: false + soundDistance: 10 - EID: 131221 Name: Piece3 IsActive: true @@ -9108,6 +9120,7 @@ currCategory: 0 density: 3 dontReturn: false + soundDistance: 10 - EID: 145 Name: Piece4 IsActive: true @@ -9155,6 +9168,7 @@ currCategory: 0 density: 3 dontReturn: false + soundDistance: 10 - EID: 196754 Name: Piece5 IsActive: true @@ -9202,6 +9216,7 @@ currCategory: 0 density: 3 dontReturn: false + soundDistance: 10 - EID: 144 Name: Egg IsActive: true @@ -9253,6 +9268,7 @@ currCategory: 0 density: 2 dontReturn: false + soundDistance: 10 - EID: 143 Name: Piece1 IsActive: true @@ -9653,7 +9669,7 @@ Components: Transform Component: Translate: {x: 2.35245037, y: 0.38365531, z: 7.10571432} - Rotate: {x: -0, y: 0, z: -0} + Rotate: {x: 0, y: 0.326376587, z: 0.0698131472} Scale: {x: 0.999999881, y: 1, z: 0.999999881} IsActive: true Renderable Component: @@ -9731,7 +9747,7 @@ Components: Transform Component: Translate: {x: 0, y: -5.96046448e-08, z: 0} - Rotate: {x: 0, y: 6.28318548, z: 2.23517329e-08} + Rotate: {x: 0, y: 5.95680904, z: -0.0698131248} Scale: {x: 1, y: 1, z: 1} IsActive: true Camera Component: @@ -9739,8 +9755,8 @@ Pitch: 0 Yaw: 360 Roll: 1.28065994e-06 - Width: 2560 - Height: 1369 + Width: 1055 + Height: 604 Near: 0.00999999978 Far: 10000 Perspective: true @@ -10512,14 +10528,14 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 2.70000005, y: 0.100000001, z: -2} + Translate: {x: 0, y: 0, z: -2.64324665} Rotate: {x: -0, y: 0, z: -0} Scale: {x: 1, y: 1, z: 1} - IsActive: false + IsActive: true Renderable Component: Mesh: 140697366 Material: 129495479 - IsActive: false + IsActive: true RigidBody Component: Type: Dynamic Drag: 0.00999999978 @@ -10533,7 +10549,7 @@ Freeze Rotation X: true Freeze Rotation Y: false Freeze Rotation Z: true - IsActive: false + IsActive: true Collider Component: Colliders: - Is Trigger: false @@ -10545,7 +10561,7 @@ Density: 1 Position Offset: {x: 0, y: 0.899999976, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - IsActive: false + IsActive: true Scripts: - Type: Homeowner1 Enabled: true @@ -10605,6 +10621,7 @@ currCategory: 1 density: 1 dontReturn: false + soundDistance: 10 - EID: 16 Name: JumpPad IsActive: false @@ -10632,13 +10649,13 @@ Enabled: true - EID: 10 Name: Canvas - IsActive: false + IsActive: true NumberOfChildren: 3 Components: Canvas Component: Canvas Width: 1920 Canvas Height: 1080 - IsActive: false + IsActive: true Scripts: ~ - EID: 8 Name: ResumeButton diff --git a/Assets/Scenes/MainMenu.shade b/Assets/Scenes/MainMenu.shade index 30ef368a..a19514d7 100644 --- a/Assets/Scenes/MainMenu.shade +++ b/Assets/Scenes/MainMenu.shade @@ -15,7 +15,7 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 0, y: 0, z: 0} + Translate: {x: 0, y: 0, z: 0.5} Rotate: {x: 0, y: 0, z: 0} Scale: {x: 1920, y: 1080, z: 1} IsActive: true @@ -35,7 +35,7 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 0, y: 75, z: 0} + Translate: {x: 0, y: 75, z: 0.400000006} Rotate: {x: 0, y: 0, z: 0} Scale: {x: 400, y: 200, z: 1} IsActive: true @@ -63,7 +63,7 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 0, y: -200, z: 0} + Translate: {x: 0, y: -200, z: 0.400000006} Rotate: {x: 0, y: 0, z: 0} Scale: {x: 400, y: 200, z: 1} IsActive: true @@ -113,8 +113,8 @@ Pitch: 0 Yaw: 0 Roll: 0 - Width: 1319 - Height: 622 + Width: 1055 + Height: 604 Near: 0.00999999978 Far: 10000 Perspective: true @@ -129,4 +129,5 @@ Scripts: - Type: MainMenu Enabled: true - sceneID: 96668835 \ No newline at end of file + sceneID: 96668835 + obj: 1 \ No newline at end of file diff --git a/Assets/Scenes/WinScene.shade b/Assets/Scenes/WinScene.shade index 3edd223b..0727860e 100644 --- a/Assets/Scenes/WinScene.shade +++ b/Assets/Scenes/WinScene.shade @@ -111,6 +111,7 @@ Near: 0.00999999978 Far: 10000 Perspective: true + FOV: 90 IsActive: true Scripts: ~ - EID: 4 diff --git a/Assets/Scripts/Gameplay/AIBehaviour/Implemented/Homeowner1.cs b/Assets/Scripts/Gameplay/AIBehaviour/Implemented/Homeowner1.cs index 84c7c485..e37aab36 100644 --- a/Assets/Scripts/Gameplay/AIBehaviour/Implemented/Homeowner1.cs +++ b/Assets/Scripts/Gameplay/AIBehaviour/Implemented/Homeowner1.cs @@ -74,6 +74,9 @@ public partial class Homeowner1 : BehaviourTree private float footstepSFXIntervalMultiplier; private float footstepTimeRemaining; + + //singleton for AI + public static Homeowner1 aiInstance { get; private set; } } //AI tree @@ -111,6 +114,11 @@ public partial class Homeowner1 : BehaviourTree AudioHandler.audioClipHandlers["SFXFootstep"] = Audio.CreateAudioClip("event:/Homeowner/homeowner_footsteps"); AudioHandler.audioClipHandlers["SFXDetectAh"] = Audio.CreateAudioClip("event:/Homeowner/homeowner_detect_raccoon"); AudioHandler.audioClipHandlers["SFXDetectSting"] = Audio.CreateAudioClip("event:/Music/stingers/player_detected"); + + if (aiInstance != null && aiInstance != this) + RemoveScript(); + else + aiInstance = this; } //Called every tick @@ -182,4 +190,10 @@ public partial class Homeowner1 : BehaviourTree //Debug.Log("Tree Created"); return root; } + + protected override void onDestroy() + { + if (aiInstance == this) + aiInstance = null; + } } \ No newline at end of file diff --git a/Assets/Scripts/Gameplay/Item/SC_Item.cs b/Assets/Scripts/Gameplay/Item/SC_Item.cs index 1109f8f3..e4c264be 100644 --- a/Assets/Scripts/Gameplay/Item/SC_Item.cs +++ b/Assets/Scripts/Gameplay/Item/SC_Item.cs @@ -22,6 +22,10 @@ public class Item : Script private Collider collider; public float density = 1.0f; public bool dontReturn = false; + + + private bool checkSound = false; + public float soundDistance = 10; protected override void awake() @@ -55,10 +59,25 @@ public class Item : Script returnBack = false; } + + + if (checkSound) + { +/* //need to wait for collisionEnter Fix + Vector3 itemPos = transform.LocalPosition; + Vector3 len = Homeowner1.aiInstance.GetComponent().LocalPosition - itemPos; + Debug.Log($"distance: {len.GetSqrMagnitude()}"); + if (len.GetSqrMagnitude() <= soundDistance) + { + //set ai to alert + } + checkSound = false;*/ + } } protected override void onCollisionEnter(CollisionInfo info) { + if (!caputurePos) { firstPostion = transform.LocalPosition; @@ -83,6 +102,7 @@ public class Item : Script protected override void onCollisionExit(CollisionInfo info) { playSound = true; + checkSound = true; } } \ No newline at end of file diff --git a/Assets/Scripts/Gameplay/Player/SC_PickAndThrow.cs b/Assets/Scripts/Gameplay/Player/SC_PickAndThrow.cs index d5046db1..4132edca 100644 --- a/Assets/Scripts/Gameplay/Player/SC_PickAndThrow.cs +++ b/Assets/Scripts/Gameplay/Player/SC_PickAndThrow.cs @@ -26,6 +26,7 @@ public class PickAndThrow : Script private float lastZDir; private bool inRange = false; public bool throwItem = false; + private Vector3 prevTargetOffSet; [Tooltip("Lenght of ray")] public float rayDistance = 1; @@ -56,8 +57,12 @@ public class PickAndThrow : Script } protected override void update() { + if (GameManager.Instance.GamePause) + { + return; + } - if(timer <= delayTimer) + if (timer <= delayTimer) timer += Time.DeltaTimeF; CalculateDir(); @@ -76,6 +81,7 @@ public class PickAndThrow : Script { pc.isAiming = true; pc.camArm.ArmLength = aimingLength; + prevTargetOffSet = pc.camArm.TargetOffset; pc.camArm.TargetOffset = cameraArmOffSet; pc.cam.FOV = aimingFOV; } @@ -86,7 +92,7 @@ public class PickAndThrow : Script itemRidigBody.IsGravityEnabled = true; itemCollider.GetCollisionShape(0).IsTrigger = false; pc.isAiming = false; - pc.camArm.TargetOffset = Vector3.Zero; + pc.camArm.TargetOffset = prevTargetOffSet; pc.cam.FOV = defaultFOV; if (tpc) pc.camArm.ArmLength = tpc.armLength; @@ -109,7 +115,7 @@ public class PickAndThrow : Script { pc.isAiming = false; pc.cam.FOV = defaultFOV; - pc.camArm.TargetOffset = Vector3.Zero; + pc.camArm.TargetOffset = prevTargetOffSet; if (tpc) pc.camArm.ArmLength = tpc.armLength; } @@ -134,6 +140,11 @@ public class PickAndThrow : Script protected override void fixedUpdate() { + if (GameManager.Instance.GamePause) + { + return; + } + if (throwItem && itemRidigBody && pc) { if (itemScript) diff --git a/Assets/Scripts/Gameplay/Player/SC_PlayerController.cs b/Assets/Scripts/Gameplay/Player/SC_PlayerController.cs index 202e587e..87e42032 100644 --- a/Assets/Scripts/Gameplay/Player/SC_PlayerController.cs +++ b/Assets/Scripts/Gameplay/Player/SC_PlayerController.cs @@ -124,8 +124,14 @@ public class PlayerController : Script protected override void lateUpdate() { } + protected override void update() { + if (GameManager.Instance.GamePause) + { + return; + } + if (delayTimer <= 1) delayTimer += Time.DeltaTimeF; @@ -158,22 +164,27 @@ public class PlayerController : Script if (tranform) tranform.LocalEulerAngles = new Vector3(0.0f, tranform.LocalEulerAngles.y, 0.0f); + GotCaught(); Rotation(); MoveKey(); Sprint(); Jump(); - GotCaught(); //Debug.Log($"{currentState}"); //Debug.Log($" axisX: {axisMove.x} axisY:{axisMove.y}"); //Debug.Log($"X: {rb.LinearVelocity.x}" + $" Z: {rb.LinearVelocity.z}"); //Debug.Log(currentState.ToString() + " x:" + rb.LinearVelocity.x.ToString() + " y:" + rb.LinearVelocity.y.ToString() + " z:" + rb.LinearVelocity.z.ToString()); + } protected override void fixedUpdate() { + if (GameManager.Instance.GamePause) + { + return; + } + Move(); Gravity(); - //Debug.Log($"X: {rb.LinearVelocity.x}" + $" Z: {rb.LinearVelocity.z}"); } @@ -234,7 +245,7 @@ public class PlayerController : Script private void Move() { - if (rb != null) + if (rb != null && currentState != RaccoonStates.CAUGHT) { rb.LinearVelocity += new Vector3(axisMove.x * moveForce, 0.0f, axisMove.y * moveForce) * Time.DeltaTimeF; @@ -286,7 +297,6 @@ public class PlayerController : Script } } - //press and hold jump private void Jump() { if (currentState == RaccoonStates.WALKING || currentState == RaccoonStates.RUNNING || currentState == RaccoonStates.IDLE) diff --git a/Assets/Scripts/Gameplay/Player/SC_ThirdPersonCamera.cs b/Assets/Scripts/Gameplay/Player/SC_ThirdPersonCamera.cs index c3026ce6..f339122e 100644 --- a/Assets/Scripts/Gameplay/Player/SC_ThirdPersonCamera.cs +++ b/Assets/Scripts/Gameplay/Player/SC_ThirdPersonCamera.cs @@ -41,6 +41,11 @@ namespace SHADE_Scripting protected override void update() { + if (GameManager.Instance.GamePause) + { + return; + } + CameraArm arm = GetComponent(); if (arm) { diff --git a/Assets/Scripts/Gameplay/SC_GameManager.cs b/Assets/Scripts/Gameplay/SC_GameManager.cs index 6478b5ea..3657904b 100644 --- a/Assets/Scripts/Gameplay/SC_GameManager.cs +++ b/Assets/Scripts/Gameplay/SC_GameManager.cs @@ -38,13 +38,11 @@ public class GameManager : Script private Vector3 fontScalar; public static GameManager Instance { get; private set; } - //public static int highScore { get; private set; } maybe need public bool GamePause { get; set; } protected override void start() { - base.start(); AudioHandler.audioClipHandlers["BGMAdaptive"] = Audio.CreateAudioClip("event:/Music/bgm_adaptive"); AudioHandler.audioClipHandlers["BGMAdaptive"].Play(); diff --git a/Assets/Scripts/SC_JumpPad.cs b/Assets/Scripts/Gameplay/SC_JumpPad.cs similarity index 100% rename from Assets/Scripts/SC_JumpPad.cs rename to Assets/Scripts/Gameplay/SC_JumpPad.cs diff --git a/Assets/Scripts/Gameplay/SC_JumpPad.cs.shmeta b/Assets/Scripts/Gameplay/SC_JumpPad.cs.shmeta new file mode 100644 index 00000000..c84294b0 --- /dev/null +++ b/Assets/Scripts/Gameplay/SC_JumpPad.cs.shmeta @@ -0,0 +1,3 @@ +Name: SC_JumpPad +ID: 163951275 +Type: 9 diff --git a/Assets/Scripts/UI/SC_MainMenu.cs b/Assets/Scripts/UI/SC_MainMenu.cs index 8af27d64..8c887d3c 100644 --- a/Assets/Scripts/UI/SC_MainMenu.cs +++ b/Assets/Scripts/UI/SC_MainMenu.cs @@ -5,6 +5,10 @@ using SHADE_Scripting.Audio; public class MainMenu : Script { public uint sceneID; + + public GameObject obj; + private Renderable renderable; + protected override void awake() { AudioHandler.audioClipHandlers["BGMMainMenu"] = Audio.CreateAudioClip("event:/Music/main_menu"); @@ -12,9 +16,31 @@ public class MainMenu : Script AudioHandler.audioClipHandlers["SFXUISuccess"] = Audio.CreateAudioClip("event:/UI/success"); //Audio.PlayBGMOnce2D("event:/Music/main_menu"); AudioHandler.audioClipHandlers["BGMMainMenu"].Play(); + + renderable = obj.GetComponent(); + } + + protected override void start() + { } protected override void update() { + if (Input.GetKeyDown(Input.KeyCode.K) && obj) + { + if (renderable.Material.GetProperty("data.alpha") == 1) + { + Debug.Log("ALPHA ZERO"); + Debug.Log($"{obj.EntityId}"); + obj.GetComponent().Material.SetProperty("data.alpha", 0); + } + else if (renderable.Material.GetProperty("data.alpha") == 0) + { + Debug.Log("ALPHA ONE"); + Debug.Log($"{obj.EntityId}"); + obj.GetComponent().Material.SetProperty("data.alpha", 1); + } + } + if (Input.GetKeyDown(Input.KeyCode.Space)) { //Audio.PlaySFXOnce2D("event:/UI/mouse_down_element"); diff --git a/Assets/Scripts/UI/SC_PauseMenu.cs b/Assets/Scripts/UI/SC_PauseMenu.cs index eae7aa91..521b48ea 100644 --- a/Assets/Scripts/UI/SC_PauseMenu.cs +++ b/Assets/Scripts/UI/SC_PauseMenu.cs @@ -59,8 +59,7 @@ public class PauseMenu : Script retry.OnClick.RegisterAction(() => { Audio.StopAllSounds(); - //get curr scene - //SceneManager.ChangeScene(); + SceneManager.RestartScene(); }); } else @@ -86,10 +85,6 @@ public class PauseMenu : Script protected override void update() { - if (GameManager.Instance.GamePause) - { - return; - } if (Input.GetKeyDown(Input.KeyCode.Escape) && !GameManager.Instance.GamePause) { diff --git a/Assets/Shaders/UI_FS.glsl b/Assets/Shaders/UI_FS.glsl index 3d40bc14..26abfece 100644 --- a/Assets/Shaders/UI_FS.glsl +++ b/Assets/Shaders/UI_FS.glsl @@ -5,10 +5,8 @@ struct MatPropData { - vec4 color; int textureIndex; float alpha; - vec3 beta; }; layout(location = 0) in struct @@ -39,10 +37,12 @@ layout(location = 1) out uint outEntityID; void main() { fragColor = texture(textures[nonuniformEXT(MatProp.data[In2.materialIndex].textureIndex)], In.uv); + fragColor.a = MatProp.data[In2.materialIndex].alpha; if (fragColor.a < 0.01f) { discard; } + // fragColor.a = 1.0f; outEntityID = In2.eid; } \ No newline at end of file diff --git a/Assets/Shaders/UI_FS.shshaderb b/Assets/Shaders/UI_FS.shshaderb index 024d0a3d8912a8a893cbc4520e1df418fe57781c..236eeaf5a1b24fa5af5b8c66d7f574e12705c4ef 100644 GIT binary patch literal 2125 zcmZ9LZEqA+6vwaZZfO^xMV>^UY+DqyT1zd+Gqko@n=GNRMtwKA?%r+(rZdazY(u}7 z8WZ2~CHN>BBMJZC%)PL1lC$S={^#lL%*LcCsdi-Hs4*Xyra5lbE0;NGj>uz5`N!!> z{^{l4l1(#dcD8?xHh=vo>bYSzj|WATM{(M7&*QXjj+u$_`*vrivotJvORLwHfj(hs zWd*RO&6KH2!uvK(2~3I4i?53Bi)WNiTn$RAsVie%=;OLF+ns3b$MtCF1~#{ai-vo) z=kh4~?TPCa!*_EOQd?1C)BeczU9`HgJh0uT!kGkzG14p@rSWc-??=x@Hi>s*mn+^R z-hTYJ-Pw$~gF!Sb4igt8aq6O8oU2lN;HXvN_`EpnCZpbXLPHtjb2dz)oOL(1{qM6R z%QY9i6Ox5{UW{_52`b-=b=h{-c%@;{Ok zhRb7{0Oax_rULoIpdR2NdewRdLV=UVw@w)BeFBX1`g6`N@h z7l&ILrY#KK)~p!9X4mtj_12z~O`RWv5q7-bbApdJKJE$5Ny!N@eY)F8v3ax)8bSh2Dsv({uH0&9tQdE&%et2s*VYyKBt=e*RYwdrC;VE7ylh^vrByEwbiC1`QVRJurDa{m;&TolK!D2HrU4{A$(wC zGdpxf_OxV64A!h{Zi0_`V6l6Av(niyHn^uGnGGMf*z6tOqQ^ZW9iq-z$rgraRyX7w zQwM()tDBFd(+4pyvAGXEYJTGNs^_};tLg=NPBz5s?D>i$bI=ntdH3uXKN8H(B*7;} zP3)`Q7v}if+vI=Ybuh5Mkp!PQ5oj!@*&@9yC{XpdWD^EjmO~35vf|%WLgL}$kM;FET*EBu5jodM%2S5C&aHy4{>@12N76ov1T z3J8J3|Jj}rMmjnBGXEK8?DD9|Pi5=WHe0-h z(3%Zn9NR@lMHfVOL}QA_uK^`hG?g*mlw4J0vlYy}cog(q&!#qWL4VbDTpA?HZ(Td< z{~sfl#tI@EcL%oXg4vmCJ==b#I-}I#8gUX2;&3HN*Mj#08-**OOXaWQZ$5wCY|RJl zUN7ip8<7j5Fm^#FOw}n|cl65ZlyPC)js~6KfSMwP?^!do{H`mh?LJPTB-OpJ?H146 zhis5K-Jr0Ii$Am3Vw&`x*vtyqn)Xthc9}aOgs_2YnZLj;i1P7ZXQSS#9kQ{FWv8M# zHPzTBu3jz;ZA3$tW+9VM10Scu5IWrHfOt8Z^olu*Lx*|1yjIrp1C1yTAG5l!vl+{L zQP^G0T6V*wMKm>e4-4^3UjLkA4)b_X(^L)K;Dm^S&Q4C{+CP0#I(?q1hTp|h8RKpEv5gJIF$*?*LYukl z09!*uzrErkB0d;udEANNG<64TCA#=APx02_5)G)-Imfg!| zHsxxL*DxMnhR*%=sVjXal}}CNgOZrPAv&az34q5iCr=maoF+GgPq`; zkPP2{(b8Hes#VfnYi2HYCF2R026J0b=j*!kE=$qms`nR`kyHtJ7_^Nslb19EtGd@IoyS poL`E^cTHzPQzR9!7ov@3gdt$tcM zw@?eMAJ-PbqanyJ@H&IM)>4kykk5>3WFL}0gdB(Y9GjEVCOG=!bRY|bwam+caRzbY zSM8W^FF@fAWD|%XHes)T&*3mhy$GMW2`nPM8T%qp?^c#Qj+(3MQiIPGICd9xjCo3O zoD&e4lUt8q!WMj|{~F3nG2&YG;4Ac@cajLX-6gOMq|k%khH)B~!VRwhaz_C3P1q7Z z-a!uIGC+=}^Xn?`{W|t#%slGrunm!ptij=?Y`g+{=L+MPf5Havf+Fe<0CULu%QxY3 z(1Ev13qCnMKKBTpoHD_+<;*4d>2mlIyz3``4Oq|y5@7%tjie7^qRD}d(7-5%h2`bhoU{0 zGCuxZWvk@X*1cNbU8*9*=QqFYfjOyGlyT%&gEjx!3p2Xfm3F8tRQ%&b|1{XH?s(Lq zHQmHuTKDKA`Rc9R#ErG7hB|$rG0RBtCE|2h%&ED!L93rq_MPfpaGPlN4VGvpv`FcE<01KydpbV$6kS0 l-@q@J6{kJrbtK+LQ{NDa(;DOATl~&qT_8@mzr1A@`~kbMPhAddNode(SHGraphicsConstants::RenderGraphEntityNames::SCREEN_SPACE_PASS.data(), {"Scene", "Entity ID"}, {SHGraphicsConstants::RenderGraphEntityNames::DEFERRED_COMPOSITE_PASS.data(), SHGraphicsConstants::RenderGraphEntityNames::GBUFFER_PASS.data(), SHGraphicsConstants::RenderGraphEntityNames::DEBUG_DRAW.data()}); + auto screenSpaceNode = renderGraph->AddNode(SHGraphicsConstants::RenderGraphEntityNames::SCREEN_SPACE_PASS.data(), {"Scene", "Entity ID", "Depth Buffer"}, {SHGraphicsConstants::RenderGraphEntityNames::DEFERRED_COMPOSITE_PASS.data(), SHGraphicsConstants::RenderGraphEntityNames::GBUFFER_PASS.data(), SHGraphicsConstants::RenderGraphEntityNames::DEBUG_DRAW.data()}); auto uiSubpass = screenSpaceNode->AddSubpass(SHGraphicsConstants::RenderGraphEntityNames::UI_SUBPASS.data(), worldViewport, screenRenderer); uiSubpass->AddColorOutput("Scene"); uiSubpass->AddColorOutput("Entity ID"); + uiSubpass->AddDepthOutput("Depth Buffer"); uiSubpass->AddExteriorDrawCalls([=](Handle cmdBuffer, Handle renderer, uint32_t frameIndex) { textRenderingSubSystem->Render(cmdBuffer, renderer, frameIndex); diff --git a/SHADE_Engine/src/UI/SHUISystem.cpp b/SHADE_Engine/src/UI/SHUISystem.cpp index 3552e47b..641743b8 100644 --- a/SHADE_Engine/src/UI/SHUISystem.cpp +++ b/SHADE_Engine/src/UI/SHUISystem.cpp @@ -312,7 +312,7 @@ namespace SHADE { auto material = renderable->GetModifiableMaterial(); comp.currentTexture = textureID; - material->SetProperty("data.textureIndex", SHResourceManager::LoadOrGet(textureID)); + material->SetProperty("data.textureIndex", SHResourceManager::LoadOrGet(textureID)->TextureArrayIndex); } diff --git a/SHADE_Managed/src/Scene/SceneManager.cxx b/SHADE_Managed/src/Scene/SceneManager.cxx index 1e139a95..a0ebc3a8 100644 --- a/SHADE_Managed/src/Scene/SceneManager.cxx +++ b/SHADE_Managed/src/Scene/SceneManager.cxx @@ -22,4 +22,12 @@ namespace SHADE { SHSceneManager::RestartScene(sceneAssetID); } + void SceneManager::RestartScene() + { + SHSceneManager::RestartScene(); + } + AssetID SceneManager::GetCurrentSceneID() + { + return SHSceneManager::GetCurrentSceneAssetID(); + } } \ No newline at end of file diff --git a/SHADE_Managed/src/Scene/SceneManager.hxx b/SHADE_Managed/src/Scene/SceneManager.hxx index e1e1ec0a..712b203c 100644 --- a/SHADE_Managed/src/Scene/SceneManager.hxx +++ b/SHADE_Managed/src/Scene/SceneManager.hxx @@ -23,5 +23,7 @@ namespace SHADE { public : static void ChangeScene(AssetID sceneAssetID); + static void RestartScene(); + static AssetID GetCurrentSceneID(); }; } From 6045214b136244e0d35c17816c911b5eab5c2d5d Mon Sep 17 00:00:00 2001 From: maverickdgg Date: Fri, 24 Feb 2023 15:35:02 +0800 Subject: [PATCH 2/4] Camera width to resize with view port --- Assets/Scenes/MainMenu.shade | 3 +-- SHADE_Engine/src/Camera/SHCameraSystem.cpp | 21 +++++++++++++++++++++ SHADE_Engine/src/Camera/SHCameraSystem.h | 1 + 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/Assets/Scenes/MainMenu.shade b/Assets/Scenes/MainMenu.shade index 30ef368a..15df64f4 100644 --- a/Assets/Scenes/MainMenu.shade +++ b/Assets/Scenes/MainMenu.shade @@ -113,8 +113,7 @@ Pitch: 0 Yaw: 0 Roll: 0 - Width: 1319 - Height: 622 + Width: 1175 Near: 0.00999999978 Far: 10000 Perspective: true diff --git a/SHADE_Engine/src/Camera/SHCameraSystem.cpp b/SHADE_Engine/src/Camera/SHCameraSystem.cpp index e577207a..a574b47f 100644 --- a/SHADE_Engine/src/Camera/SHCameraSystem.cpp +++ b/SHADE_Engine/src/Camera/SHCameraSystem.cpp @@ -144,8 +144,24 @@ namespace SHADE //std::cout << EVENT_DATA->resizeWidth << std::endl; //std::cout << EVENT_DATA->resizeHeight << std::endl; screenAspectRatio = (float)EVENT_DATA->resizeWidth / (float)EVENT_DATA->resizeHeight; + +#ifdef SHEDITOR + auto editor = SHSystemManager::GetSystem(); + if (editor->editorState != SHEditor::State::PLAY) + return eventPtr->handle; +#endif // SHEDITOR + + for (auto& director : directorHandleList) + { + auto camera = SHComponentManager::GetComponent_s(director->mainCameraEID); + if (camera) + { + camera->SetWidth(EVENT_DATA->resizeWidth); + } + } + return eventPtr->handle; } @@ -574,4 +590,9 @@ namespace SHADE #endif } + SHCameraComponent* SHCameraSystem::GetMainCamera() const noexcept + { + return SHComponentManager::GetComponent_s(directorHandleList[0]->mainCameraEID); + } + } diff --git a/SHADE_Engine/src/Camera/SHCameraSystem.h b/SHADE_Engine/src/Camera/SHCameraSystem.h index 92728537..65761eb1 100644 --- a/SHADE_Engine/src/Camera/SHCameraSystem.h +++ b/SHADE_Engine/src/Camera/SHCameraSystem.h @@ -65,6 +65,7 @@ namespace SHADE void SetCameraViewMatrix(SHCameraComponent& camera, SHMatrix const& viewMatrix, bool takePos) noexcept; void CameraLookAt(SHCameraComponent& camera, SHVec3 target) noexcept; void UpdateEditorArm(double dt,bool active ,SHVec3 const& targetPos) noexcept; + SHCameraComponent* GetMainCamera() const noexcept; SHVec2 GetCameraWidthHeight(size_t index) noexcept; }; From 4690fa5f913610306a262f6a20420eceb80b7183 Mon Sep 17 00:00:00 2001 From: maverickdgg Date: Fri, 24 Feb 2023 16:31:53 +0800 Subject: [PATCH 3/4] GetMainCamera exposed to scripts. --- SHADE_Engine/src/Camera/SHCameraSystem.cpp | 4 ++-- SHADE_Engine/src/Camera/SHCameraSystem.h | 2 +- SHADE_Managed/src/Components/Camera.cxx | 7 ++++++- SHADE_Managed/src/Components/Camera.hxx | 6 ++++++ 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/SHADE_Engine/src/Camera/SHCameraSystem.cpp b/SHADE_Engine/src/Camera/SHCameraSystem.cpp index a574b47f..95a461f8 100644 --- a/SHADE_Engine/src/Camera/SHCameraSystem.cpp +++ b/SHADE_Engine/src/Camera/SHCameraSystem.cpp @@ -590,9 +590,9 @@ namespace SHADE #endif } - SHCameraComponent* SHCameraSystem::GetMainCamera() const noexcept + EntityID SHCameraSystem::GetMainCameraEID() const noexcept { - return SHComponentManager::GetComponent_s(directorHandleList[0]->mainCameraEID); + return directorHandleList[0]->mainCameraEID; } } diff --git a/SHADE_Engine/src/Camera/SHCameraSystem.h b/SHADE_Engine/src/Camera/SHCameraSystem.h index 65761eb1..e7d06ddc 100644 --- a/SHADE_Engine/src/Camera/SHCameraSystem.h +++ b/SHADE_Engine/src/Camera/SHCameraSystem.h @@ -65,7 +65,7 @@ namespace SHADE void SetCameraViewMatrix(SHCameraComponent& camera, SHMatrix const& viewMatrix, bool takePos) noexcept; void CameraLookAt(SHCameraComponent& camera, SHVec3 target) noexcept; void UpdateEditorArm(double dt,bool active ,SHVec3 const& targetPos) noexcept; - SHCameraComponent* GetMainCamera() const noexcept; + EntityID GetMainCameraEID() const noexcept; SHVec2 GetCameraWidthHeight(size_t index) noexcept; }; diff --git a/SHADE_Managed/src/Components/Camera.cxx b/SHADE_Managed/src/Components/Camera.cxx index 4640c17a..22eb2124 100644 --- a/SHADE_Managed/src/Components/Camera.cxx +++ b/SHADE_Managed/src/Components/Camera.cxx @@ -13,7 +13,6 @@ namespace SHADE } - float Camera::Pitch::get() { return (GetNativeComponent()->GetPitch()); @@ -126,4 +125,10 @@ namespace SHADE } + Camera^ Camera::GetMainCamera() + { + auto system = SHSystemManager::GetSystem(); + return ECS::GetComponent(system->GetMainCameraEID()); + } + } \ No newline at end of file diff --git a/SHADE_Managed/src/Components/Camera.hxx b/SHADE_Managed/src/Components/Camera.hxx index c793f1ed..babf2c28 100644 --- a/SHADE_Managed/src/Components/Camera.hxx +++ b/SHADE_Managed/src/Components/Camera.hxx @@ -15,6 +15,9 @@ namespace SHADE Camera(Entity entity); public: + + + property float Pitch { float get(); @@ -65,5 +68,8 @@ namespace SHADE Vector3 GetForward(); Vector3 GetRight(); + + static Camera^ GetMainCamera(); + }; } \ No newline at end of file From a27b3fb80e5c11880a54a6e9a8f64fa57bdd9f3c Mon Sep 17 00:00:00 2001 From: Glence Date: Fri, 24 Feb 2023 21:10:45 +0800 Subject: [PATCH 4/4] fix vulkan red line --- .../src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp index 36359bd1..f0503741 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp @@ -350,7 +350,13 @@ namespace SHADE /*-----------------------------------------------------------------------*/ /* SCREEN SPACE PASS */ /*-----------------------------------------------------------------------*/ - auto screenSpaceNode = renderGraph->AddNode(SHGraphicsConstants::RenderGraphEntityNames::SCREEN_SPACE_PASS.data(), {"Scene", "Entity ID", "Depth Buffer"}, {SHGraphicsConstants::RenderGraphEntityNames::DEFERRED_COMPOSITE_PASS.data(), SHGraphicsConstants::RenderGraphEntityNames::GBUFFER_PASS.data(), SHGraphicsConstants::RenderGraphEntityNames::DEBUG_DRAW.data()}); + auto screenSpaceNode = renderGraph->AddNode(SHGraphicsConstants::RenderGraphEntityNames::SCREEN_SPACE_PASS.data(), { "Scene", "Entity ID", "Depth Buffer" }, + { + SHGraphicsConstants::RenderGraphEntityNames::DEFERRED_COMPOSITE_PASS.data(), + SHGraphicsConstants::RenderGraphEntityNames::GBUFFER_PASS.data(), + SHGraphicsConstants::RenderGraphEntityNames::DEBUG_DRAW.data(), + SHGraphicsConstants::RenderGraphEntityNames::DEBUG_DRAW_DEPTH_PASS.data() + }); auto uiSubpass = screenSpaceNode->AddSubpass(SHGraphicsConstants::RenderGraphEntityNames::UI_SUBPASS.data(), worldViewport, screenRenderer); uiSubpass->AddColorOutput("Scene"); uiSubpass->AddColorOutput("Entity ID");