diff --git a/Assets/Audio/Master.bank b/Assets/Audio/Master.bank index 21c524fe..49135fbc 100644 Binary files a/Assets/Audio/Master.bank and b/Assets/Audio/Master.bank differ diff --git a/Assets/Audio/Master.strings.bank b/Assets/Audio/Master.strings.bank index 3992afa1..b769c07f 100644 Binary files a/Assets/Audio/Master.strings.bank and b/Assets/Audio/Master.strings.bank differ diff --git a/Assets/Audio/Music.bank b/Assets/Audio/Music.bank index a7a856e5..41112f65 100644 Binary files a/Assets/Audio/Music.bank and b/Assets/Audio/Music.bank differ diff --git a/Assets/Audio/SFX.bank b/Assets/Audio/SFX.bank index d1c9cf58..acf5260a 100644 Binary files a/Assets/Audio/SFX.bank and b/Assets/Audio/SFX.bank differ diff --git a/Assets/Materials/UI/UIMat_Black.shmat b/Assets/Materials/UI/UIMat_Black.shmat index 183b5f26..8451828f 100644 --- a/Assets/Materials/UI/UIMat_Black.shmat +++ b/Assets/Materials/UI/UIMat_Black.shmat @@ -1,6 +1,6 @@ - VertexShader: 46580970 FragmentShader: 50110174 - SubPass: UI + SubPass: UI Translucent Properties: data.color: {x: 0, y: 0, z: 0, w: 1} data.textureIndex: 0 diff --git a/Assets/Scenes/Level1.shade b/Assets/Scenes/Level1.shade index cd5ba82e..8989b183 100644 --- a/Assets/Scenes/Level1.shade +++ b/Assets/Scenes/Level1.shade @@ -277,7 +277,12 @@ Position Offset: {x: 0, y: 0.5, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} IsActive: true - Scripts: ~ + Scripts: + - Type: SHADE_Scripting.Audio.SoundLoopEmitter + Enabled: true + clipHandlerName: SFXWash65 + clipPath: event:/Props/washing_machine_loop + volume: 0.300000012 - EID: 66 Name: washingMachineDoor IsActive: true @@ -418,7 +423,12 @@ Position Offset: {x: 0, y: 0.5, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} IsActive: true - Scripts: ~ + Scripts: + - Type: SHADE_Scripting.Audio.SoundLoopEmitter + Enabled: true + clipHandlerName: SFXWash43 + clipPath: event:/Props/washing_machine_loop + volume: 0.300000012 - EID: 44 Name: washingMachineDoor IsActive: true @@ -460,7 +470,12 @@ Position Offset: {x: 0, y: 0.5, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} IsActive: true - Scripts: ~ + Scripts: + - Type: SHADE_Scripting.Audio.SoundLoopEmitter + Enabled: true + clipHandlerName: SFXWash42 + clipPath: event:/Props/washing_machine_loop + volume: 0.300000012 - EID: 131081 Name: washingMachineDoor IsActive: true @@ -2403,7 +2418,7 @@ Components: Transform Component: Translate: {x: 0, y: 0, z: 0} - Rotate: {x: 0, y: 0, z: 0} + Rotate: {x: 0.5, y: -299.5, z: 0.5} Scale: {x: 1, y: 1, z: 1} IsActive: true Renderable Component: @@ -4101,60 +4116,6 @@ Rotation Offset: {x: 0, y: 0, z: 0} IsActive: true Scripts: ~ -- EID: 199 - Name: =====Text==== - IsActive: true - NumberOfChildren: 3 - Components: ~ - Scripts: ~ -- EID: 237 - Name: Score - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: -800, y: 400, z: 0.100000001} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 60, y: 60, z: 60} - IsActive: true - Text Renderer Component: - Text: "Score: 0" - Font: 176667660 - Color: {x: 1, y: 1, z: 1, w: 1} - IsActive: true - Scripts: ~ -- EID: 206 - Name: Timer - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: 500, y: 400, z: 0.100000001} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 60, y: 60, z: 60} - IsActive: true - Text Renderer Component: - Text: "Time Left: 200" - Font: 176667660 - Color: {x: 1, y: 1, z: 1, w: 1} - IsActive: true - Scripts: ~ -- EID: 238 - Name: Multiplier - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: -800, y: 300, z: 0.100000001} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 60, y: 60, z: 60} - IsActive: true - Text Renderer Component: - Text: "" - Font: 176667660 - Color: {x: 1, y: 1, z: 1, w: 1} - IsActive: true - Scripts: ~ - EID: 236 Name: ====GameManager==== IsActive: true @@ -4169,9 +4130,9 @@ totalItemCount: 4 Score: 0 timer: 200 - scoreText: 237 - timeText: 206 - multiplierText: 238 + scoreText: 449 + timeText: 520 + multiplierText: 139 maxMultiplierDuration: 5 maxMultiplierCombo: 10 multiplierFont: 60 @@ -4225,6 +4186,7 @@ - Type: Homeowner1 Enabled: true waypointsPool: 234 + startWaypoint: 233 patrolSpeed: 3 chaseSpeed: 6 turningSpeed: 5 @@ -5221,7 +5183,7 @@ Transform Component: Translate: {x: 0, y: 100, z: 0} Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 300, y: 200, z: 500} + Scale: {x: 400, y: 100, z: 500} IsActive: true Renderable Component: Mesh: 141771688 @@ -5237,7 +5199,15 @@ Hovered: false Clicked: false IsActive: true - Scripts: ~ + Scripts: + - Type: SHADE_Scripting.UI.ButtonFX + Enabled: true + onHoverEnterSound: event:/Music/player_undetected + onHoverExitSound: event:/Music/player_undetected + onClickSound: event:/Music/player_undetected + onReleaseSound: event:/Music/player_undetected + hoverScale: 1.10000002 + clickScale: 0.899999976 - EID: 456 Name: QuitButton IsActive: true @@ -5246,7 +5216,7 @@ Transform Component: Translate: {x: 0, y: -300, z: 0} Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 300, y: 200, z: 500} + Scale: {x: 400, y: 100, z: 500} IsActive: true Renderable Component: Mesh: 141771688 @@ -5262,7 +5232,15 @@ Hovered: false Clicked: false IsActive: true - Scripts: ~ + Scripts: + - Type: SHADE_Scripting.UI.ButtonFX + Enabled: true + onHoverEnterSound: event:/Music/player_undetected + onHoverExitSound: event:/Music/player_undetected + onClickSound: event:/Music/player_undetected + onReleaseSound: event:/Music/player_undetected + hoverScale: 1.10000002 + clickScale: 0.899999976 - EID: 455 Name: RetryButton IsActive: true @@ -5271,7 +5249,7 @@ Transform Component: Translate: {x: 0, y: -100, z: 0} Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 300, y: 200, z: 500} + Scale: {x: 400, y: 100, z: 500} IsActive: true Renderable Component: Mesh: 141771688 @@ -5287,7 +5265,15 @@ Hovered: false Clicked: false IsActive: true - Scripts: ~ + Scripts: + - Type: SHADE_Scripting.UI.ButtonFX + Enabled: true + onHoverEnterSound: event:/Music/player_undetected + onHoverExitSound: event:/Music/player_undetected + onClickSound: event:/Music/player_undetected + onReleaseSound: event:/Music/player_undetected + hoverScale: 1.10000002 + clickScale: 0.899999976 - EID: 454 Name: GamePauseText IsActive: true @@ -5300,8 +5286,9 @@ IsActive: true Text Renderer Component: Text: Game Pause - Font: 176667660 + Font: 174412429 Color: {x: 1, y: 1, z: 1, w: 1} + Text Size: {x: 1, y: 1, z: 1} IsActive: false UI Component: Canvas ID: 458 @@ -5344,4 +5331,146 @@ Enabled: true alphaValue: 1 fadeInTime: 0.5 - fadeOutTime: 0.5 \ No newline at end of file + fadeOutTime: 0.5 +- EID: 459 + Name: Gameplay Canvas + IsActive: true + NumberOfChildren: 3 + Components: + Canvas Component: + Canvas Width: 1920 + Canvas Height: 1080 + Scale by canvas width: false + IsActive: true + Scripts: ~ +- EID: 449 + Name: Score Text + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: -800, y: 365, z: 0.600000024} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 100, y: 100, z: 60} + IsActive: true + Text Renderer Component: + Text: My name is Brandon. + Font: 174412429 + Color: {x: 1, y: 1, z: 1, w: 1} + Text Size: {x: 1, y: 1, z: 1} + IsActive: true + UI Component: + Canvas ID: 459 + Hovered: false + Clicked: false + IsActive: true + Scripts: ~ +- EID: 521 + Name: Score BG + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.300000012, y: 0.600000024, z: 0.98999995} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 3.45600009, y: 2, z: 1} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 127527215 + IsActive: true + UI Component: + Canvas ID: 459 + Hovered: false + Clicked: false + IsActive: true + Scripts: ~ +- EID: 520 + Name: Timer Text + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 700, y: 400, z: 0.100000001} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 60, y: 60, z: 60} + IsActive: true + Text Renderer Component: + Text: My name is Brandon. + Font: 174412429 + Color: {x: 1, y: 1, z: 1, w: 1} + Text Size: {x: 1, y: 1, z: 1} + IsActive: true + UI Component: + Canvas ID: 459 + Hovered: false + Clicked: false + IsActive: true + Scripts: ~ +- EID: 519 + Name: Timer BG + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.5, y: 0.300000012, z: 0.98999995} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 5, y: 2, z: 1} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 126220632 + IsActive: true + UI Component: + Canvas ID: 459 + Hovered: false + Clicked: false + IsActive: true + Scripts: ~ +- EID: 139 + Name: Multiplier Text + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: -800, y: 250, z: 0.100000001} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 50, y: 50, z: 60} + IsActive: true + Text Renderer Component: + Text: X2 + Font: 174412429 + Color: {x: 1, y: 1, z: 1, w: 1} + Text Size: {x: 1, y: 1, z: 1} + IsActive: true + UI Component: + Canvas ID: 459 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.MultiplierTextFx + Enabled: true + maxSize: 1 + minSize: 0.300000012 + minAlpha: 0.300000012 +- EID: 518 + Name: Multiplier BG + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.400000006, y: 0.400000006, z: 0.98999995} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 4.26499987, y: 2, z: 1} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 133784677 + IsActive: true + UI Component: + Canvas ID: 459 + Hovered: false + Clicked: false + IsActive: true + Scripts: ~ \ No newline at end of file diff --git a/Assets/Scenes/Level2.shade b/Assets/Scenes/Level2.shade index 3989fa4a..9a185359 100644 --- a/Assets/Scenes/Level2.shade +++ b/Assets/Scenes/Level2.shade @@ -17,7 +17,7 @@ Light Component: Position: {x: 0, y: 0, z: 0} Type: Directional - Direction: {x: 15, y: 90, z: 15} + Direction: {x: 15, y: -90, z: 15} Color: {x: 1, y: 1, z: 1, w: 1} Layer: 4294967295 Strength: 1 @@ -464,6 +464,8 @@ Enabled: true threshHold: 0.5 ignoreRaccoon: true + breakClipHandlerName: SFXEggBreak144 + breakClipPath: event:/Props/impact_egg - Type: Item Enabled: true Score: 10 @@ -1652,6 +1654,8 @@ Enabled: true threshHold: 4 ignoreRaccoon: true + breakClipHandlerName: SFXWatermelonBreak464 + breakClipPath: event:/Props/impact_watermelon_break - Type: Item Enabled: true Score: 500 @@ -2064,6 +2068,8 @@ Enabled: true threshHold: 4 ignoreRaccoon: true + breakClipHandlerName: SFXWatermelonBreak522 + breakClipPath: event:/Props/impact_watermelon_break - Type: Item Enabled: true Score: 500 @@ -2085,8 +2091,8 @@ Scale: {x: 1, y: 1, z: 1} IsActive: false Renderable Component: - Mesh: 0 - Material: 0 + Mesh: 144023586 + Material: 122370915 IsActive: false RigidBody Component: Type: Dynamic @@ -2182,8 +2188,8 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: -0.230162144, y: -0.0580062866, z: -0.00789308548} - Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} Scale: {x: 1, y: 1, z: 1} IsActive: false Renderable Component: @@ -2195,8 +2201,8 @@ Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Interpolate: false - Sleeping Enabled: true + Interpolate: true + Sleeping Enabled: false Freeze Position X: false Freeze Position Y: false Freeze Position Z: false @@ -2374,6 +2380,8 @@ Enabled: true threshHold: 4 ignoreRaccoon: true + breakClipHandlerName: SFXWatermelonBreak156 + breakClipPath: event:/Props/impact_watermelon_break - Type: Item Enabled: true Score: 500 @@ -2684,6 +2692,8 @@ Enabled: true threshHold: 0.5 ignoreRaccoon: true + breakClipHandlerName: SFXEggBreak533 + breakClipPath: event:/Props/impact_egg - Type: Item Enabled: true Score: 10 @@ -2903,6 +2913,8 @@ Enabled: true threshHold: 0.5 ignoreRaccoon: true + breakClipHandlerName: SFXEggBreak538 + breakClipPath: event:/Props/impact_egg - Type: Item Enabled: true Score: 10 @@ -3122,6 +3134,8 @@ Enabled: true threshHold: 0.5 ignoreRaccoon: true + breakClipHandlerName: SFXEggBreak543 + breakClipPath: event:/Props/impact_egg - Type: Item Enabled: true Score: 10 @@ -3477,6 +3491,7 @@ Text: My name is Brandon. Font: 174412429 Color: {x: 1, y: 1, z: 1, w: 1} + Text Size: {x: 1, y: 1, z: 1} IsActive: true UI Component: Canvas ID: 199 @@ -3505,19 +3520,40 @@ IsActive: true Scripts: ~ - EID: 206 - Name: Timer + Name: Timer Text IsActive: true - NumberOfChildren: 0 + NumberOfChildren: 1 Components: Transform Component: - Translate: {x: 500, y: 400, z: 0.100000001} + Translate: {x: 700, y: 400, z: 0.100000001} Rotate: {x: 0, y: 0, z: 0} Scale: {x: 60, y: 60, z: 60} IsActive: true Text Renderer Component: Text: My name is Brandon. - Font: 176667660 + Font: 174412429 Color: {x: 1, y: 1, z: 1, w: 1} + Text Size: {x: 1, y: 1, z: 1} + IsActive: true + UI Component: + Canvas ID: 199 + Hovered: false + Clicked: false + IsActive: true + Scripts: ~ +- EID: 520 + Name: Timer BG + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.5, y: 0.300000012, z: 0.98999995} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 5, y: 2, z: 1} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 126220632 IsActive: true UI Component: Canvas ID: 199 @@ -3539,6 +3575,7 @@ Text: X2 Font: 174412429 Color: {x: 1, y: 1, z: 1, w: 1} + Text Size: {x: 1, y: 1, z: 1} IsActive: true UI Component: Canvas ID: 199 @@ -3551,7 +3588,7 @@ maxSize: 1 minSize: 0.300000012 minAlpha: 0.300000012 -- EID: 520 +- EID: 519 Name: Multiplier BG IsActive: true NumberOfChildren: 0 @@ -3803,6 +3840,8 @@ Enabled: true threshHold: 0.100000001 ignoreRaccoon: false + breakClipHandlerName: SFXBreak1 + breakClipPath: event:/Props/impact_break - EID: 196 Name: Piece1 IsActive: false @@ -4012,6 +4051,8 @@ Enabled: true threshHold: 0.100000001 ignoreRaccoon: false + breakClipHandlerName: SFXBreak171 + breakClipPath: event:/Props/impact_break - EID: 65703 Name: Piece1 IsActive: false @@ -4221,6 +4262,8 @@ Enabled: true threshHold: 0.100000001 ignoreRaccoon: false + breakClipHandlerName: SFXBreak150 + breakClipPath: event:/Props/impact_break - EID: 149 Name: Piece1 IsActive: false @@ -4430,6 +4473,8 @@ Enabled: true threshHold: 0.100000001 ignoreRaccoon: false + breakClipHandlerName: SFXBreak145 + breakClipPath: event:/Props/impact_break - EID: 488 Name: Piece1 IsActive: false @@ -4639,6 +4684,8 @@ Enabled: true threshHold: 0.100000001 ignoreRaccoon: false + breakClipHandlerName: SFXBreak492 + breakClipPath: event:/Props/impact_break - EID: 493 Name: Piece1 IsActive: false @@ -4848,6 +4895,8 @@ Enabled: true threshHold: 0.100000001 ignoreRaccoon: false + breakClipHandlerName: SFXBreak497 + breakClipPath: event:/Props/impact_break - EID: 498 Name: Piece1 IsActive: false @@ -5057,6 +5106,8 @@ Enabled: true threshHold: 0.100000001 ignoreRaccoon: false + breakClipHandlerName: SFXBreak502 + breakClipPath: event:/Props/impact_break - EID: 503 Name: Piece1 IsActive: false @@ -5266,6 +5317,8 @@ Enabled: true threshHold: 0.100000001 ignoreRaccoon: false + breakClipHandlerName: SFXBreak507 + breakClipPath: event:/Props/impact_break - EID: 508 Name: Piece1 IsActive: false @@ -5475,6 +5528,8 @@ Enabled: true threshHold: 0.100000001 ignoreRaccoon: false + breakClipHandlerName: SFXBreak512 + breakClipPath: event:/Props/impact_break - EID: 513 Name: Piece1 IsActive: false @@ -5684,6 +5739,8 @@ Enabled: true threshHold: 0.100000001 ignoreRaccoon: false + breakClipHandlerName: SFXBreak517 + breakClipPath: event:/Props/impact_break - EID: 518 Name: Piece1 IsActive: false @@ -5725,7 +5782,7 @@ Rotation Offset: {x: 0, y: 0, z: 0} IsActive: false Scripts: ~ -- EID: 519 +- EID: 461 Name: Piece2 IsActive: false NumberOfChildren: 0 @@ -5766,7 +5823,7 @@ Rotation Offset: {x: 0, y: 0, z: 0} IsActive: false Scripts: ~ -- EID: 461 +- EID: 460 Name: Piece3 IsActive: false NumberOfChildren: 0 @@ -5807,7 +5864,7 @@ Rotation Offset: {x: 0, y: 0, z: 0} IsActive: false Scripts: ~ -- EID: 460 +- EID: 459 Name: Piece4 IsActive: false NumberOfChildren: 0 @@ -5855,7 +5912,7 @@ Components: ~ Scripts: ~ - EID: 165 - Name: 1 + Name: 0 IsActive: true NumberOfChildren: 0 Components: @@ -5866,7 +5923,7 @@ IsActive: true Scripts: ~ - EID: 164 - Name: 2 + Name: 1 IsActive: true NumberOfChildren: 0 Components: @@ -5877,7 +5934,7 @@ IsActive: true Scripts: ~ - EID: 163 - Name: 3 + Name: 2 IsActive: true NumberOfChildren: 0 Components: @@ -5888,7 +5945,7 @@ IsActive: true Scripts: ~ - EID: 162 - Name: 4 + Name: 3 IsActive: true NumberOfChildren: 0 Components: @@ -5899,7 +5956,7 @@ IsActive: true Scripts: ~ - EID: 161 - Name: 5 + Name: 4 IsActive: true NumberOfChildren: 0 Components: @@ -5910,7 +5967,7 @@ IsActive: true Scripts: ~ - EID: 160 - Name: 6 + Name: 5 IsActive: true NumberOfChildren: 0 Components: @@ -5921,7 +5978,7 @@ IsActive: true Scripts: ~ - EID: 159 - Name: 7 + Name: 6 IsActive: true NumberOfChildren: 0 Components: @@ -5937,7 +5994,7 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 0.0576689839, y: 0, z: -2.61272359} + Translate: {x: -3.45969725, y: 0, z: -2.61272359} Rotate: {x: -0, y: 0, z: -0} Scale: {x: 1, y: 1, z: 1} IsActive: true @@ -5975,12 +6032,13 @@ - Type: Homeowner1 Enabled: true waypointsPool: 166 + startWaypoint: 162 patrolSpeed: 3 chaseSpeed: 6 turningSpeed: 5 sightDistance: 8 eyeOffset: [0, 1.64999998, 0] - distanceToCapture: 0.5 + distanceToCapture: 0.800000012 captureTime: 0.5 footstepSFXIntervalMultiplier: 0.5 - EID: 12 @@ -6061,14 +6119,14 @@ Enabled: true - EID: 10 Name: Pause Canvas - IsActive: true + IsActive: false NumberOfChildren: 4 Components: Canvas Component: Canvas Width: 1920 Canvas Height: 1080 Scale by canvas width: false - IsActive: true + IsActive: false Scripts: ~ - EID: 8 Name: ResumeButton @@ -6110,7 +6168,7 @@ Components: Transform Component: Translate: {x: 0, y: -300, z: 0} - Rotate: {x: -4.5, y: 2, z: -2.5} + Rotate: {x: 0, y: 0, z: 0} Scale: {x: 400, y: 100, z: 500} IsActive: true Renderable Component: @@ -6136,7 +6194,7 @@ onReleaseSound: event:/Music/player_undetected hoverScale: 1.10000002 clickScale: 0.899999976 -- EID: 459 +- EID: 458 Name: RetryButton IsActive: true NumberOfChildren: 0 @@ -6175,14 +6233,15 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: -250, y: 300, z: 0} + Translate: {x: -250, y: 300, z: 0.100000001} Rotate: {x: 0, y: 0, z: 0} Scale: {x: 100, y: 100, z: 100} IsActive: true Text Renderer Component: Text: Game Pause - Font: 176667660 + Font: 174412429 Color: {x: 1, y: 1, z: 1, w: 1} + Text Size: {x: 1, y: 1, z: 1} IsActive: false UI Component: Canvas ID: 10 @@ -11912,7 +11971,7 @@ Rotation Offset: {x: 0, y: 0, z: 0} IsActive: true Scripts: ~ -- EID: 458 +- EID: 457 Name: Exterior IsActive: true NumberOfChildren: 5 @@ -14576,7 +14635,7 @@ Material: 131956078 IsActive: true Scripts: ~ -- EID: 457 +- EID: 174 Name: Exterior_Bush02 IsActive: true NumberOfChildren: 0 @@ -14591,7 +14650,7 @@ Material: 131956078 IsActive: true Scripts: ~ -- EID: 174 +- EID: 173 Name: Exterior_Bush01 IsActive: true NumberOfChildren: 0 @@ -14606,7 +14665,7 @@ Material: 131956078 IsActive: true Scripts: ~ -- EID: 173 +- EID: 172 Name: Exterior_Bush02 IsActive: true NumberOfChildren: 0 @@ -14621,7 +14680,7 @@ Material: 131956078 IsActive: true Scripts: ~ -- EID: 172 +- EID: 548 Name: TweenManager IsActive: true NumberOfChildren: 0 @@ -14629,7 +14688,7 @@ Scripts: - Type: SHADE_Scripting.UI.TweenManager Enabled: true -- EID: 548 +- EID: 549 Name: StealFoodCanvas IsActive: true NumberOfChildren: 1 @@ -14640,7 +14699,7 @@ Scale by canvas width: false IsActive: true Scripts: ~ -- EID: 549 +- EID: 550 Name: StealFoodLogo IsActive: true NumberOfChildren: 0 @@ -14655,7 +14714,7 @@ Material: 127459277 IsActive: true UI Component: - Canvas ID: 548 + Canvas ID: 549 Hovered: false Clicked: false IsActive: true @@ -14668,7 +14727,7 @@ rotationAmt: 1800 scaleAmtX: 538 scaleAmtY: 377 -- EID: 550 +- EID: 551 Name: TransitionCanvas IsActive: true NumberOfChildren: 1 @@ -14679,7 +14738,7 @@ Scale by canvas width: false IsActive: true Scripts: ~ -- EID: 551 +- EID: 552 Name: Transition IsActive: true NumberOfChildren: 0 @@ -14694,7 +14753,7 @@ Material: 120016136 IsActive: true UI Component: - Canvas ID: 550 + Canvas ID: 551 Hovered: false Clicked: false IsActive: true @@ -14704,7 +14763,7 @@ alphaValue: 1 fadeInTime: 0.5 fadeOutTime: 0.5 -- EID: 552 +- EID: 553 Name: TweenManager IsActive: true NumberOfChildren: 0 @@ -14712,7 +14771,7 @@ Scripts: - Type: SHADE_Scripting.UI.TweenManager Enabled: true -- EID: 553 +- EID: 554 Name: CameraPoints IsActive: true NumberOfChildren: 3 @@ -14725,7 +14784,7 @@ endPoint3: [1.14999998, 2.20000005, 2] playerCamera: 4 duration: 3 -- EID: 554 +- EID: 555 Name: PreviewLevel1 IsActive: true NumberOfChildren: 0 @@ -14747,7 +14806,7 @@ FOV: 90 IsActive: true Scripts: ~ -- EID: 555 +- EID: 556 Name: PreviewLevel2 IsActive: true NumberOfChildren: 0 @@ -14769,7 +14828,7 @@ FOV: 90 IsActive: true Scripts: ~ -- EID: 556 +- EID: 557 Name: PreviewLevel3 IsActive: true NumberOfChildren: 0 diff --git a/Assets/Scenes/MainMenu.shade b/Assets/Scenes/MainMenu.shade index 1edd67b5..6e569b46 100644 --- a/Assets/Scenes/MainMenu.shade +++ b/Assets/Scenes/MainMenu.shade @@ -1100,7 +1100,11 @@ Hovered: false Clicked: false IsActive: true - Scripts: ~ + Scripts: + - Type: SHADE_Scripting.UI.ScrollingCredits + Enabled: true + endY: 4000 + duration: 20 - EID: 48 Name: BackButton IsActive: true @@ -1131,23 +1135,23 @@ canvasToActivate: 0 - EID: 49 Name: Credits Title Text - IsActive: true + IsActive: false NumberOfChildren: 0 Components: Transform Component: Translate: {x: -150, y: 400, z: 0.100000001} Rotate: {x: 0, y: 0, z: 0} Scale: {x: 100, y: 100, z: 1} - IsActive: true + IsActive: false Text Renderer Component: Text: Credits Font: 174412429 - IsActive: true + IsActive: false UI Component: Canvas ID: 46 Hovered: false Clicked: false - IsActive: true + IsActive: false Scripts: ~ - EID: 50 Name: Level Select Canvas diff --git a/Assets/Scenes/Scene2.shade b/Assets/Scenes/Scene2.shade index de902c55..891c9664 100644 --- a/Assets/Scenes/Scene2.shade +++ b/Assets/Scenes/Scene2.shade @@ -14,10 +14,10 @@ Yaw: 0 Roll: 0 Width: 1200 - Height: 1080 Near: 0.00999999978 Far: 10000 Perspective: true + FOV: 90 IsActive: true Scripts: ~ - EID: 1 @@ -26,9 +26,9 @@ NumberOfChildren: 1 Components: Transform Component: - Translate: {x: -1.86388135, y: 0.0544953719, z: 0} - Rotate: {x: -0, y: 0, z: -0} - Scale: {x: 1, y: 1, z: 1} + Translate: {x: 0, y: 0.189419448, z: 0} + Rotate: {x: 0.00523597933, y: -2.96353412, z: -6.40293041e-10} + Scale: {x: 1.00000191, y: 1, z: 1.00000191} IsActive: true Renderable Component: Mesh: 149697411 @@ -55,10 +55,15 @@ IsActive: true NumberOfChildren: 0 Components: + Transform Component: + Translate: {x: 0, y: 1.82978272, z: -3.28967047} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true Light Component: Position: {x: 3, y: 4.5, z: 7} Type: Directional - Direction: {x: -0.298000008, y: 0.522498012, z: 0.798600018} + Direction: {x: 0, y: 0, z: 1} Color: {x: 1, y: 1, z: 1, w: 1} Layer: 4294967295 Strength: 0 @@ -85,8 +90,8 @@ Components: Transform Component: Translate: {x: 0, y: 0.0810000002, z: 0} - Rotate: {x: -1.57079637, y: 0, z: 0} - Scale: {x: 50, y: 50, z: 50} + Rotate: {x: -1.57079625, y: 0, z: -0} + Scale: {x: 50, y: 49.9999924, z: 49.9999924} IsActive: true Renderable Component: Mesh: 141771688 diff --git a/Assets/Scripts/Audio/CS_SoundLoopEmitter.cs b/Assets/Scripts/Audio/CS_SoundLoopEmitter.cs new file mode 100644 index 00000000..7100a23f --- /dev/null +++ b/Assets/Scripts/Audio/CS_SoundLoopEmitter.cs @@ -0,0 +1,32 @@ +using SHADE; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SHADE_Scripting.Audio +{ + public class SoundLoopEmitter : Script + { + [SerializeField] + private string clipHandlerName; + + [SerializeField] + private string clipPath; + + public float volume; + + protected override void awake() + { + AudioHandler.audioClipHandlers[clipHandlerName] = SHADE.Audio.CreateAudioClip(clipPath); + } + + protected override void start() + { + SHADE.Audio.AttachAudioClipToObject(AudioHandler.audioClipHandlers[clipHandlerName], GameObject.EntityId); + AudioHandler.audioClipHandlers[clipHandlerName].SetVolume(volume); + AudioHandler.audioClipHandlers[clipHandlerName].Play(); + } + } +} diff --git a/Assets/Scripts/Audio/CS_SoundLoopEmitter.cs.shmeta b/Assets/Scripts/Audio/CS_SoundLoopEmitter.cs.shmeta new file mode 100644 index 00000000..af1a932f --- /dev/null +++ b/Assets/Scripts/Audio/CS_SoundLoopEmitter.cs.shmeta @@ -0,0 +1,3 @@ +Name: CS_SoundLoopEmitter +ID: 154714630 +Type: 9 diff --git a/Assets/Scripts/Gameplay/AIBehaviour/Implemented/Homeowner1.cs b/Assets/Scripts/Gameplay/AIBehaviour/Implemented/Homeowner1.cs index e37aab36..b57e7fcd 100644 --- a/Assets/Scripts/Gameplay/AIBehaviour/Implemented/Homeowner1.cs +++ b/Assets/Scripts/Gameplay/AIBehaviour/Implemented/Homeowner1.cs @@ -37,6 +37,9 @@ public partial class Homeowner1 : BehaviourTree private List waypoints; + [SerializeField] + private GameObject startWaypoint; + [SerializeField] [Tooltip("The AI will patrol at this speed")] private float patrolSpeed; @@ -112,8 +115,14 @@ public partial class Homeowner1 : BehaviourTree AudioHandler.audioClipHandlers["BGMAdaptive"] = Audio.CreateAudioClip("event:/Music/bgm_adaptive"); AudioHandler.audioClipHandlers["SFXFootstep"] = Audio.CreateAudioClip("event:/Homeowner/homeowner_footsteps"); + Audio.AttachAudioClipToObject(AudioHandler.audioClipHandlers["SFXFootstep"], GameObject.EntityId); AudioHandler.audioClipHandlers["SFXDetectAh"] = Audio.CreateAudioClip("event:/Homeowner/homeowner_detect_raccoon"); + Audio.AttachAudioClipToObject(AudioHandler.audioClipHandlers["SFXDetectAh"], GameObject.EntityId); AudioHandler.audioClipHandlers["SFXDetectSting"] = Audio.CreateAudioClip("event:/Music/stingers/player_detected"); + AudioHandler.audioClipHandlers["SFXHumming"] = Audio.CreateAudioClip("event:/Homeowner/homeowner_humming"); + Audio.AttachAudioClipToObject(AudioHandler.audioClipHandlers["SFXHumming"], GameObject.EntityId); + AudioHandler.audioClipHandlers["SFXHumming"].SetVolume(0.15f); + AudioHandler.audioClipHandlers["SFXHumming"].Play(); if (aiInstance != null && aiInstance != this) RemoveScript(); @@ -151,6 +160,8 @@ public partial class Homeowner1 : BehaviourTree SetData("distanceToCapture", distanceToCapture); if (GetData("baseCaptureTime") == null || (float)GetData("baseCaptureTime") != captureTime) SetData("baseCaptureTime", captureTime); + if (GetData("startWaypoint") == null || (GameObject)GetData("startWaypoint") != startWaypoint) + SetData("startWaypoint", startWaypoint); events.Tick(); diff --git a/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafAttack.cs b/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafAttack.cs index 86ac07e0..59470e56 100644 --- a/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafAttack.cs +++ b/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafAttack.cs @@ -12,6 +12,7 @@ using SHADE; using SHADE_Scripting.AIBehaviour.BehaviourTree; +using SHADE_Scripting.Audio; using System; using System.Collections.Generic; using System.Linq; @@ -98,6 +99,35 @@ public partial class LeafAttack : BehaviourTreeNode if (player.GetScript().stateMachine && !player.GetScript().stateMachine.IsState(typeof(PlayerCaughtState))) player.GetScript().stateMachine.SetState(typeof(PlayerCaughtState)); + //Teleport AI back to home waypoint + int homeIndex = 0; + GameObject? startWaypoint = null; + List? waypoints = (List)GetNodeData("waypoints"); + if (GetNodeData("startWaypoint") != null) + startWaypoint = (GameObject)GetNodeData("startWaypoint"); + if (startWaypoint != null) + { + for (int i = 0; i < waypoints.Count; ++i) + { + if (startWaypoint == waypoints[i]) + { + homeIndex = i; + } + } + } + SetNodeData("currentWaypointIndex", homeIndex); + SetNodeData("playerLastSightedWaypointIndex", homeIndex); + SetNodeData("isAlert", false); + Audio.SetParameterWithLabel("PlayerDetection", "Undetected"); + AudioHandler.audioClipHandlers["SFXHumming"].Play(); + + Transform? transform = (Transform)GetNodeData("transform"); + if (waypoints != null && transform != null) + { + transform.GlobalPosition = waypoints[homeIndex].GetComponent().GlobalPosition; + } + ClearNodeData("target"); + status = BehaviourTreeNodeStatus.SUCCESS; onExit(BehaviourTreeNodeStatus.SUCCESS); return status; diff --git a/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafChase.cs b/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafChase.cs index 2a3647b3..982ee818 100644 --- a/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafChase.cs +++ b/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafChase.cs @@ -60,7 +60,7 @@ public partial class LeafChase : BehaviourTreeNode } } //Debug.Log("Player is nearest " + nearestWaypointIndex); - //Debug.Log("I'm at " + (int)GetNodeData("currentWaypointIndex")); + //Debug.Log("AI going to " + (int)GetNodeData("currentWaypointIndex")); SetNodeData("playerLastSightedWaypointIndex", nearestWaypointIndex); } @@ -78,6 +78,7 @@ public partial class LeafChase : BehaviourTreeNode GetNodeData("distanceToCapture") == null || GetNodeData("baseCaptureTime") == null) { + //Debug.Log("Chase Failure: null values"); status = BehaviourTreeNodeStatus.FAILURE; onExit(BehaviourTreeNodeStatus.FAILURE); return status; @@ -113,7 +114,8 @@ public partial class LeafChase : BehaviourTreeNode if (GetNodeData("isAlert") != null && (bool)GetNodeData("isAlert") == true) { //AudioHandler.audioClipHandlers["BGMAdpative"].SetParameter("Detected", 0.0f); - Audio.SetParameter("Detected", 0.0f); + //Audio.SetParameter("Detected", 0.0f); + Audio.SetParameterWithLabel("PlayerDetection", "Undetected"); AudioHandler.audioClipHandlers["SFXHumming"].Play(); } SetNodeData("isAlert", false); diff --git a/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafPatrol.cs b/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafPatrol.cs index ba061972..68f649fa 100644 --- a/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafPatrol.cs +++ b/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafPatrol.cs @@ -29,7 +29,7 @@ public partial class LeafPatrol : BehaviourTreeNode private float chaseSpeed; private float turningSpeed; private float retreatTimer = 0.0f; - private int currentWaypointIndex = 0; + private int currentWaypointIndex = -1; private bool retreatState = false; private bool goingForwards = true; @@ -47,7 +47,7 @@ public partial class LeafPatrol : BehaviourTreeNode //node, and hence we do not need to inherit its constructors public LeafPatrol(string name) : base(name) { - currentWaypointIndex = 0; + currentWaypointIndex = -1; } //When it comes to evaluating, @@ -57,6 +57,42 @@ public partial class LeafPatrol : BehaviourTreeNode //Debug.LogWarning("LeafPatrol"); onEnter(BehaviourTreeNodeStatus.RUNNING); + //Initialise home waypoint + waypoints = (List)GetNodeData("waypoints"); + if (currentWaypointIndex == -1) + { + if (waypoints != null) + { + //Debug.Log("Waypoints not null"); + if (GetNodeData("startWaypoint") != null) + { + //Debug.Log("Getting start waypoint"); + GameObject startWaypoint = (GameObject)(GetNodeData("startWaypoint")); + for (int i = 0; i < waypoints.Count; ++i) + { + if (startWaypoint == waypoints[i]) + { + //Debug.Log("Leaf Patrol Constructor: Start Waypoint Index: " + i.ToString()); + currentWaypointIndex = i; + SetNodeData("currentWaypointIndex", i); + } + } + } + else + { + status = BehaviourTreeNodeStatus.FAILURE; + onExit(BehaviourTreeNodeStatus.FAILURE); + return status; + } + } + else + { + status = BehaviourTreeNodeStatus.FAILURE; + onExit(BehaviourTreeNodeStatus.FAILURE); + return status; + } + } + //Get data if (GetNodeData("transform") == null || GetNodeData("patrolSpeed") == null || @@ -104,12 +140,13 @@ public partial class LeafPatrol : BehaviourTreeNode ClearNodeData("isWaiting"); return; } - waypoints = (List)GetNodeData("waypoints"); - if (waypoints == null) + if (GetNodeData("currentWaypointIndex") != null) { - return; + //2023 Mar 4, 0400, this is needed when the AI teleports back to the first spot after catching + currentWaypointIndex = (int)GetNodeData("currentWaypointIndex"); } - Vector3 targetPosition = waypoints[currentWaypointIndex].GetComponent().GlobalPosition; + //Modulo operator to prevent out of range exceptions + Vector3 targetPosition = waypoints[(currentWaypointIndex % waypoints.Count)].GetComponent().GlobalPosition; //Reach waypoint by X and Z being near enough //Do not consider Y of waypoints yet Vector3 remainingDistance = targetPosition - transform.GlobalPosition; @@ -195,6 +232,8 @@ public partial class LeafPatrol : BehaviourTreeNode //Debug.Log("AI is at " + transform.GlobalPosition.x.ToString() + " " + transform.GlobalPosition.y.ToString() + " " + transform.GlobalPosition.z.ToString()); Vector3 normalisedDifference = targetPosition - transform.GlobalPosition; normalisedDifference.y = 0.0f; //Do not move vertically + //Debug.Log("Leaf Patrol Current Waypoint Index: " + currentWaypointIndex.ToString()); + //Debug.Log("True Difference x " + normalisedDifference.x.ToString() + " z " + normalisedDifference.z.ToString()); normalisedDifference /= normalisedDifference.GetMagnitude(); //Debug.Log("Normalised Difference x " + normalisedDifference.x.ToString() + " z " + normalisedDifference.z.ToString()); @@ -245,7 +284,8 @@ public partial class LeafPatrol : BehaviourTreeNode AudioHandler.audioClipHandlers["SFXHumming"].Play(); //AudioHandler.audioClipHandlers["BGMUnalert"].Play(); //AudioHandler.audioClipHandlers["BGMAdaptive"].SetParameter("Detected", 0.0f); - Audio.SetParameter("Detected", 0.0f); + //Audio.SetParameter("Detected", 0.0f); + Audio.SetParameterWithLabel("PlayerDetection", "Undetected"); } SetNodeData("isAlert", false); } diff --git a/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafSearch.cs b/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafSearch.cs index b2760e4a..c433f912 100644 --- a/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafSearch.cs +++ b/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafSearch.cs @@ -26,6 +26,7 @@ public partial class LeafSearch : BehaviourTreeNode private Vector3 eyeOffset; private float sightDistance; private GameObject? player; //To be searched for and marked + private bool screamOnce; } //FUNCTIONS HERE @@ -67,7 +68,8 @@ public partial class LeafSearch : BehaviourTreeNode if (GetNodeData("isAlert") != null && (bool)GetNodeData("isAlert") == true) { //AudioHandler.audioClipHandlers["BGMAdaptive"].SetParameter("Detected", 0.0f); - Audio.SetParameter("Detected", 0.0f); + //Audio.SetParameter("Detected", 0.0f); + Audio.SetParameterWithLabel("PlayerDetection", "Undetected"); AudioHandler.audioClipHandlers["SFXHumming"].Play(); reevaluateWaypoint(); } @@ -97,6 +99,7 @@ public partial class LeafSearch : BehaviourTreeNode //Search for player player = GameObject.Find("Player"); + screamOnce = false; //Automatically fail if no player is found if (player == null) @@ -188,31 +191,41 @@ public partial class LeafSearch : BehaviourTreeNode if (GetNodeData("isAlert") == null) { SetNodeData("isAlert", true); + screamOnce = true; //Audio.StopAllSounds(); - AudioHandler.audioClipHandlers["SFXDetectAh"].Play(); + //AudioHandler.audioClipHandlers["SFXDetectAh"].Play(); AudioHandler.audioClipHandlers["SFXDetectSting"].Play(); //AudioHandler.audioClipHandlers["BGMAlert"].Play(); AudioHandler.audioClipHandlers["SFXHumming"].Stop(false); //AudioHandler.audioClipHandlers["BGMUnalert"].Stop(true); //AudioHandler.audioClipHandlers["BGMAdaptive"].SetParameter("Detected", 1.0f); - Audio.SetParameter("Detected", 1.0f); + //Audio.SetParameter("Detected", 1.0f); + Audio.SetParameterWithLabel("PlayerDetection", "Detected"); } else { if (GetNodeData("isAlert") != null && (bool)GetNodeData("isAlert") == false) { //Audio.StopAllSounds(); - AudioHandler.audioClipHandlers["SFXDetectAh"].Play(); + screamOnce = true; + //AudioHandler.audioClipHandlers["SFXDetectAh"].Play(); AudioHandler.audioClipHandlers["SFXDetectSting"].Play(); //AudioHandler.audioClipHandlers["BGMAlert"].Play(); AudioHandler.audioClipHandlers["SFXHumming"].Stop(false); //AudioHandler.audioClipHandlers["BGMUnalert"].Stop(true); //AudioHandler.audioClipHandlers["BGMAdaptive"].SetParameter("Detected", 1.0f); - Audio.SetParameter("Detected", 1.0f); + //Audio.SetParameter("Detected", 1.0f); + Audio.SetParameterWithLabel("PlayerDetection", "Detected"); } SetNodeData("isAlert", true); } + if (screamOnce) + { + screamOnce = false; + AudioHandler.audioClipHandlers["SFXDetectAh"].Play(); + } + status = BehaviourTreeNodeStatus.SUCCESS; onExit(BehaviourTreeNodeStatus.SUCCESS); return status; diff --git a/Assets/Scripts/Gameplay/Item/SC_Breakable.cs b/Assets/Scripts/Gameplay/Item/SC_Breakable.cs index 4ff49791..a42df17d 100644 --- a/Assets/Scripts/Gameplay/Item/SC_Breakable.cs +++ b/Assets/Scripts/Gameplay/Item/SC_Breakable.cs @@ -14,6 +14,12 @@ public class Breakable : Script public bool isBreak { get; set; } private List itemPieces = new List(); + [SerializeField] + private string breakClipHandlerName; + + [SerializeField] + private string breakClipPath; + protected override void awake() { rb = GetComponent(); @@ -32,7 +38,7 @@ public class Breakable : Script isBreak = false; - AudioHandler.audioClipHandlers["SFXBreak"] = Audio.CreateAudioClip("event:/Props/impact_break"); + AudioHandler.audioClipHandlers[breakClipHandlerName] = Audio.CreateAudioClip(breakClipPath); } protected override void update() @@ -76,7 +82,9 @@ public class Breakable : Script GameManager.Instance.itemShatter = false; isBreak = false; - AudioHandler.audioClipHandlers["SFXBreak"].Play(); + Audio.AttachAudioClipToObject(AudioHandler.audioClipHandlers[breakClipHandlerName], GameObject.EntityId); + AudioHandler.audioClipHandlers[breakClipHandlerName].Play(); + //Audio.DetachAudioClipFromObject(AudioHandler.audioClipHandlers[breakClipHandlerName]); GameObject.SetActive(false); } } \ 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 c8fa1bcd..b315ab08 100644 --- a/Assets/Scripts/Gameplay/Item/SC_Item.cs +++ b/Assets/Scripts/Gameplay/Item/SC_Item.cs @@ -121,11 +121,15 @@ public class Item : Script if (playSound) { + Audio.AttachAudioClipToObject(AudioHandler.audioClipHandlers["SFXImpactElastic"], GameObject.EntityId); + Audio.AttachAudioClipToObject(AudioHandler.audioClipHandlers["SFXImpactHard"], GameObject.EntityId); if (currCategory == ItemCategory.LIGHT) AudioHandler.audioClipHandlers["SFXImpactElastic"].Play(); else if (currCategory == ItemCategory.MEDIUM || currCategory == ItemCategory.HEAVY) AudioHandler.audioClipHandlers["SFXImpactHard"].Play(); playSound = false; + Audio.DetachAudioClipFromObject(AudioHandler.audioClipHandlers["SFXImpactElastic"]); + Audio.DetachAudioClipFromObject(AudioHandler.audioClipHandlers["SFXImpactHard"]); } if (info.GameObject.GetScript() && !returnBack) diff --git a/Assets/Scripts/Gameplay/SC_GameManager.cs b/Assets/Scripts/Gameplay/SC_GameManager.cs index f9f453f4..0b50090e 100644 --- a/Assets/Scripts/Gameplay/SC_GameManager.cs +++ b/Assets/Scripts/Gameplay/SC_GameManager.cs @@ -76,47 +76,47 @@ public class GameManager : Script goingToLose = false; if (scoreText) - scoreText.GetComponent().Text = $"Score: {Score}"; + scoreText.GetComponent().Text = $"{Score}"; if (timeText) - timeText.GetComponent().Text = $"Time Left: {timer.ToString("0")}"; + timeText.GetComponent().Text = $"{timer.ToString("0")}"; } protected override void start() { - AudioHandler.audioClipHandlers["BGMAdaptive"] = Audio.CreateAudioClip("event:/Music/bgm_adaptive"); + AudioHandler.audioClipHandlers["BGMAdaptive"] = Audio.CreateAudioClip("event:/Music/bgm_adaptive_new"); AudioHandler.audioClipHandlers["BGMAdaptive"].Play(); - Audio.SetParameter("Detected", 0.0f); + Audio.SetParameterWithLabel("PlayerDetection", "Undetected"); AudioHandler.audioClipHandlers["KitchenAmbience"] = Audio.CreateAudioClip("event:/Ambience/roomtone_kitchen"); AudioHandler.audioClipHandlers["KitchenAmbience"].Play(); - AudioHandler.audioClipHandlers["SFXHumming"] = Audio.CreateAudioClip("event:/Homeowner/homeowner_humming"); - AudioHandler.audioClipHandlers["SFXHumming"].SetVolume(0.15f); - AudioHandler.audioClipHandlers["SFXHumming"].Play(); - - SceneFadeInOut.Instance.CallFadeOut(); + if (SceneFadeInOut.Instance != null) + SceneFadeInOut.Instance.CallFadeOut(); + Application.IsCursorVisible = false; } protected override void update() { if (GamePause || !stealFoodPopUpDone) { + Input.SetMouseCentering(false); + Application.IsCursorVisible = true; return; } if (currGameState == GameState.START) { + Input.SetMouseCentering(true); + timer -= Time.DeltaTimeF; if(scoreText) scoreText.GetComponent().Text = $"{Score}"; if(timeText) - timeText.GetComponent().Text = $"Time Left: {timer.ToString("0")}"; + timeText.GetComponent().Text = $"{timer.ToString("0.00")}"; if (itemScored) { - //multiplierText.GetComponent().Text = $"X {currMultiplierCombo}"; - //multiplierText.GetComponent().LocalScale -= fontScalar * Time.DeltaTimeF; currMultiplierDuration += Time.DeltaTimeF; if (currMultiplierDuration >= maxMultiplierDuration) @@ -138,7 +138,8 @@ public class GameManager : Script AudioHandler.StopAllSounds(false); AudioHandler.audioClipHandlers["BGMWin"].Play(); goingToWin = true; - SceneFadeInOut.Instance.CallFadeIn(); + if (SceneFadeInOut.Instance != null) + SceneFadeInOut.Instance.CallFadeIn(); } else if(!goingToWin && (timer < 0 || Input.GetKeyDown(Input.KeyCode.F2))) { @@ -146,12 +147,27 @@ public class GameManager : Script AudioHandler.StopAllSounds(false); AudioHandler.audioClipHandlers["BGMLose"].Play(); goingToLose = true; - SceneFadeInOut.Instance.CallFadeIn(); + if (SceneFadeInOut.Instance != null) + SceneFadeInOut.Instance.CallFadeIn(); } } //Handling transitions - if (SceneFadeInOut.Instance.FadeInFinished()) + if (SceneFadeInOut.Instance != null) + { + if (SceneFadeInOut.Instance.FadeInFinished()) + { + if (goingToWin) + { + SceneManager.ChangeScene(winScene); + } + if (goingToLose) + { + SceneManager.ChangeScene(loseScene); + } + } + } + else { if (goingToWin) { @@ -175,7 +191,6 @@ public class GameManager : Script totalItemCount -= 1; itemScored = true; currMultiplierDuration = 0; - //multiplierText.GetComponent().LocalScale = new Vector3(multiplierFont, multiplierFont, multiplierFont); if (currMultiplierCombo < maxMultiplierCombo) currMultiplierCombo += 1; @@ -183,9 +198,9 @@ public class GameManager : Script MultiplierTextFx fx = multiplierText.GetScript(); if (fx) { - fx.ShowMultiplier(currMultiplierCombo, maxMultiplierDuration); + fx.ShowMultiplier(currMultiplierCombo, maxMultiplierDuration); } - } + } } diff --git a/Assets/Scripts/Gameplay/SC_JumpPad.cs b/Assets/Scripts/Gameplay/SC_JumpPad.cs index 0e331f8c..7aa573df 100644 --- a/Assets/Scripts/Gameplay/SC_JumpPad.cs +++ b/Assets/Scripts/Gameplay/SC_JumpPad.cs @@ -1,10 +1,12 @@ using SHADE; +using SHADE_Scripting.Audio; using System; public class JumpPad : Script { protected override void awake() { + AudioHandler.audioClipHandlers["SFXJumpPad"] = Audio.CreateAudioClip("event:/Props/jumppad_boing"); } protected override void update() @@ -15,6 +17,8 @@ public class JumpPad : Script { if (info.GameObject.GetScript() && info.GameObject.GetScript().currentState == PlayerController.RaccoonStates.FALLING) { + Audio.AttachAudioClipToObject(AudioHandler.audioClipHandlers["SFXJumpPad"], GameObject.EntityId); + AudioHandler.audioClipHandlers["SFXJumpPad"].Play(); info.GameObject.GetScript().landedOnJumpPad = true; } } diff --git a/Assets/Scripts/UI/EasingHelper.cs b/Assets/Scripts/UI/EasingHelper.cs index 0b434833..dadae5bb 100644 --- a/Assets/Scripts/UI/EasingHelper.cs +++ b/Assets/Scripts/UI/EasingHelper.cs @@ -52,12 +52,15 @@ namespace SHADE_Scripting.UI private static float EaseInSine(float value) { - return (float)(1.0f - Math.Cos((value * Math.PI / 2.0f))); + + return (float)(1.0f - Math.Cos((value * Math.PI / 2.0f) )); + } private static float EaseOutSine(float value) { - return (float)(Math.Sin(value * Math.PI / 2.0f)); + return (float)(Math.Sin(value * Math.PI / 2.0f) ); + } diff --git a/Assets/Scripts/UI/SC_ChangeSceneButton.cs b/Assets/Scripts/UI/SC_ChangeSceneButton.cs index 6a51716b..09e4cf5b 100644 --- a/Assets/Scripts/UI/SC_ChangeSceneButton.cs +++ b/Assets/Scripts/UI/SC_ChangeSceneButton.cs @@ -22,22 +22,19 @@ public class ChangeSceneButton : Script { ui.OnRelease.RegisterAction(() => { - if (sceneID != 0) { - Audio.PlaySFXOnce2D("event:/UI/success"); - - Audio.StopAllSounds(); - + Audio.PlaySFXOnce2D("event:/UI/success"); + Audio.StopAllSounds(); + if (SceneFadeInOut.Instance != null) SceneFadeInOut.Instance.CallFadeIn(); - clickedFlag = true; + clickedFlag = true; } }); } else { Debug.LogError("Failed to register button action for ChangeSceneButton."); - } } protected override void update() diff --git a/Assets/Scripts/UI/SC_EndScene.cs b/Assets/Scripts/UI/SC_EndScene.cs index 2117b24a..3812db2a 100644 --- a/Assets/Scripts/UI/SC_EndScene.cs +++ b/Assets/Scripts/UI/SC_EndScene.cs @@ -1,6 +1,7 @@ using System; using SHADE; using SHADE_Scripting.Audio; +using SHADE_Scripting.UI; public class EndScene : Script { @@ -12,6 +13,15 @@ public class EndScene : Script AudioHandler.audioClipHandlers["SFXMouseDownElement"] = Audio.CreateAudioClip("event:/UI/mouse_down_element"); AudioHandler.audioClipHandlers["SFXUISuccess"] = Audio.CreateAudioClip("event:/UI/success"); } + + protected override void start() + { + Debug.Log("EndScene::Start():"); + Input.SetMouseCentering(false); + Application.IsCursorVisible = true; + SceneFadeInOut.Instance.CallFadeOut(); + } + protected override void update() { if (Input.GetKeyDown(Input.KeyCode.R)) diff --git a/Assets/Scripts/UI/SC_MainMenu.cs b/Assets/Scripts/UI/SC_MainMenu.cs index 59b6594e..d2caaba0 100644 --- a/Assets/Scripts/UI/SC_MainMenu.cs +++ b/Assets/Scripts/UI/SC_MainMenu.cs @@ -1,6 +1,7 @@ using System; using SHADE; using SHADE_Scripting.Audio; +using SHADE_Scripting.UI; public class MainMenu : Script { @@ -23,6 +24,9 @@ public class MainMenu : Script protected override void start() { + //Input.SetMouseCentering(false); + //Application.IsCursorVisible = true; + SceneFadeInOut.Instance.CallFadeOut(); } protected override void update() { diff --git a/Assets/Scripts/UI/SC_MultiplierTextFx.cs b/Assets/Scripts/UI/SC_MultiplierTextFx.cs index 1b3129ec..ccd2a4a8 100644 --- a/Assets/Scripts/UI/SC_MultiplierTextFx.cs +++ b/Assets/Scripts/UI/SC_MultiplierTextFx.cs @@ -11,6 +11,7 @@ namespace SHADE_Scripting.UI { [NonSerialized] private TweenThread sizeThread; + private TweenThread sizeInvertThread; private TweenThread alphaThread; @@ -20,6 +21,7 @@ namespace SHADE_Scripting.UI private bool showMultiplier = false; + const float sizeUpDuration = 0.1f; [NonSerialized] private Vector3 defaultScale; @@ -27,6 +29,7 @@ namespace SHADE_Scripting.UI protected override void start() { sizeThread = TweenManager.CreateTweenThread(0.0f, maxSize, minSize, EASING_METHOD.EASE_IN_SINE); + sizeInvertThread = TweenManager.CreateTweenThread(sizeUpDuration, minSize, maxSize, EASING_METHOD.EASE_IN_SINE); alphaThread = TweenManager.CreateTweenThread(0.0f, 1.0f, minAlpha, EASING_METHOD.EASE_OUT_SINE); Transform transform = GetComponent(); if (transform != null) @@ -43,8 +46,29 @@ namespace SHADE_Scripting.UI protected override void update() { Transform transform = GetComponent(); + + if (transform != null && showMultiplier == true) { + if(!sizeInvertThread.IsCompleted()) + { + transform.LocalScale = defaultScale * sizeInvertThread.GetValue(); + + Renderable rend = GetComponentInChildren(); + if(rend) + { + rend.Material.SetProperty("data.alpha", 1.0f); + } + + TextRenderable text = GetComponent(); + if (text) + { + Color clr = text.TextColor; + text.TextColor = new Color(clr.r, clr.g, clr.b, 1.0f); + } + return; + } + if(sizeThread.IsCompleted()) { transform.LocalScale = Vector3.Zero; @@ -53,7 +77,18 @@ namespace SHADE_Scripting.UI else { transform.LocalScale = defaultScale * sizeThread.GetValue(); - GetComponentInChildren().Material.SetProperty("data.alpha",alphaThread.GetValue()); + + Renderable rend = GetComponentInChildren(); + if (rend) + { + rend.Material.SetProperty("data.alpha", alphaThread.GetValue()); + } + TextRenderable text = GetComponent(); + if(text) + { + Color clr = text.TextColor; + text.TextColor = new Color(clr.r,clr.g,clr.b,alphaThread.GetValue() * 1.3f); + } } } } @@ -62,9 +97,10 @@ namespace SHADE_Scripting.UI public void ShowMultiplier(int multiplier, float duration) { GetComponent().Text = $"X {multiplier}"; - sizeThread.duration = duration; - alphaThread.duration = duration; + sizeThread.duration = duration + sizeUpDuration; + alphaThread.duration = duration + sizeUpDuration; + sizeInvertThread.Reset(); sizeThread.Reset(); alphaThread.Reset(); showMultiplier = true; diff --git a/Assets/Scripts/UI/SC_PauseMenu.cs b/Assets/Scripts/UI/SC_PauseMenu.cs index c92965d8..a20dd586 100644 --- a/Assets/Scripts/UI/SC_PauseMenu.cs +++ b/Assets/Scripts/UI/SC_PauseMenu.cs @@ -13,7 +13,8 @@ public class PauseMenu : Script protected override void awake() { - GameManager.Instance.GamePause = false; + if (GameManager.Instance != null) + GameManager.Instance.GamePause = false; if (canvas) { @@ -41,6 +42,8 @@ public class PauseMenu : Script if (GameManager.Instance.GamePause) { GameManager.Instance.GamePause = false; + Input.SetMouseCentering(true); + Application.IsCursorVisible = false; AudioHandler.PauseAllSounds(false); if (gamePauseText) gamePauseText.Enabled = false; @@ -91,6 +94,8 @@ public class PauseMenu : Script if (Input.GetKeyDown(Input.KeyCode.Escape) && !GameManager.Instance.GamePause && GameManager.Instance.stealFoodPopUpDone) { GameManager.Instance.GamePause = true; + Input.SetMouseCentering(false); + Application.IsCursorVisible = true; AudioHandler.PauseAllSounds(true); if (gamePauseText) gamePauseText.Enabled = true; diff --git a/Assets/Scripts/UI/SC_SceneFadeInOut.cs b/Assets/Scripts/UI/SC_SceneFadeInOut.cs index 15047e49..c426f8a6 100644 --- a/Assets/Scripts/UI/SC_SceneFadeInOut.cs +++ b/Assets/Scripts/UI/SC_SceneFadeInOut.cs @@ -43,7 +43,6 @@ namespace SHADE_Scripting.UI protected override void start() { - } protected override void update() @@ -56,7 +55,6 @@ namespace SHADE_Scripting.UI if (fadeInTime == 0.0f) { alphaValue = 1.0f; - } else { @@ -64,7 +62,8 @@ namespace SHADE_Scripting.UI } if (alphaValue >= 1.0f) { - alphaValue = 1.0f; + alphaValue = 1.0f; + //GameObject.Parent.SetActive(false); } } @@ -82,8 +81,10 @@ namespace SHADE_Scripting.UI } if (alphaValue <= 0.0f) { - alphaValue = 0.0f; - GameObject.Parent.SetActive(false); + alphaValue = 0.0f; + //This line is to be added so that (because the fade in and out item is usually the front-most UI element) + //the fade in and out UI element does not block functionality of other UI elements + GameObject.Parent.SetActive(false); } } diff --git a/Assets/Scripts/UI/SC_ScrollingCredits.cs b/Assets/Scripts/UI/SC_ScrollingCredits.cs new file mode 100644 index 00000000..d4b362d8 --- /dev/null +++ b/Assets/Scripts/UI/SC_ScrollingCredits.cs @@ -0,0 +1,49 @@ +using System; +using SHADE; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SHADE_Scripting.UI +{ + public class ScrollingCredits: Script + { + + public float endY = 4000.0f; + public float duration = 30.0f; + + + [NonSerialized] + TweenThread thread; + + protected override void awake() + { + base.awake(); + + } + + protected override void start() + { + base.start(); + + Transform transform = GetComponent(); + if(transform != null) + { + thread = TweenManager.CreateTweenThread(duration, transform.LocalPosition.y, endY, EASING_METHOD.EASE_IN_SINE); + } + } + + protected override void update() + { + base.update(); + + Transform transform = GetComponent(); + + if(thread != null && transform != null) + { + transform.LocalPosition = new Vector3( transform.LocalPosition.x ,thread.GetValue() , transform.LocalPosition.z); + } + } + } +} diff --git a/Assets/Scripts/UI/SC_ScrollingCredits.cs.shmeta b/Assets/Scripts/UI/SC_ScrollingCredits.cs.shmeta new file mode 100644 index 00000000..df5d7056 --- /dev/null +++ b/Assets/Scripts/UI/SC_ScrollingCredits.cs.shmeta @@ -0,0 +1,3 @@ +Name: SC_ScrollingCredits +ID: 159139676 +Type: 9 diff --git a/Assets/Shaders/DeferredComposite_CS.glsl b/Assets/Shaders/DeferredComposite_CS.glsl index f17c9d84..12352d4d 100644 --- a/Assets/Shaders/DeferredComposite_CS.glsl +++ b/Assets/Shaders/DeferredComposite_CS.glsl @@ -78,8 +78,12 @@ float CalcShadowValue (sampler2D shadowMap, vec4 worldSpaceFragPos, mat4 lightPV float pMax = LinStep (variance / (variance + (d * d)), 0.9f, 1.0f); return min (max (p, pMax), 1.0f); } + else if (fragPosLightPOV.z > 1.0f) + { + return 0.0f; + } else - return 1.0f; + return 0.3f; // return step (fragPosLightPOV.z, ); } @@ -125,7 +129,7 @@ void main() vec3 dLightNormalized = normalize (DirLightData.dLightData[i].direction); // Get diffuse strength - float diffuseStrength = max (0, dot (dLightNormalized, normalView)); + float diffuseStrength = max (0, dot (-dLightNormalized, normalView)); // Calculate the fragment color fragColor += DirLightData.dLightData[i].diffuseColor.rgb * diffuseStrength.rrr * pixelDiffuse; diff --git a/Assets/Shaders/DeferredComposite_CS.shshaderb b/Assets/Shaders/DeferredComposite_CS.shshaderb index e5a0a730..a5197b3b 100644 Binary files a/Assets/Shaders/DeferredComposite_CS.shshaderb and b/Assets/Shaders/DeferredComposite_CS.shshaderb differ diff --git a/Assets/Shaders/ShinyHighlight_FS.glsl b/Assets/Shaders/ShinyHighlight_FS.glsl index 8d7f4a90..bb41a0fb 100644 --- a/Assets/Shaders/ShinyHighlight_FS.glsl +++ b/Assets/Shaders/ShinyHighlight_FS.glsl @@ -78,8 +78,14 @@ void main() outEntityID = In2.eid; lightLayerIndices = In2.lightLayerIndex; - float vpHeight = float (In2.screenSpacePos.y) - MatProp.data[In2.materialIndex].highlightPosition; - vpHeight = float (int (vpHeight) % genericDataBuffer.data.viewportHeight); + // float vpHeight = float (In2.screenSpacePos.y) - MatProp.data[In2.materialIndex].highlightPosition; + // bring the frame of reference to the object's screen space pos + int scale = 470; + float vpHeight = float (In2.screenSpacePos.y); + float relativePos = float(int (-MatProp.data[In2.materialIndex].highlightPosition) % scale) - float (scale / 2); + vpHeight += relativePos; + + // vpHeight = float (int (vpHeight) % genericDataBuffer.data.viewportHeight); float scanlineScale = MatProp.data[In2.materialIndex].thickness * (1.0f - In2.screenSpacePos.z) * 100.0f; float lowerLimit = vpHeight - scanlineScale; diff --git a/Assets/Shaders/ToSwapchain_FS.glsl b/Assets/Shaders/ToSwapchain_FS.glsl index d353c15f..3cf1752f 100644 --- a/Assets/Shaders/ToSwapchain_FS.glsl +++ b/Assets/Shaders/ToSwapchain_FS.glsl @@ -3,7 +3,7 @@ #extension GL_ARB_shading_language_420pack : enable #extension GL_EXT_nonuniform_qualifier : require -layout (input_attachment_index = 0, set = 3, binding = 0) uniform subpassInput sceneTexture; +layout (input_attachment_index = 0, set = 0, binding = 0) uniform subpassInput sceneTexture; layout(location = 0) out vec4 fragColor; diff --git a/Assets/Shaders/ToSwapchain_FS.shshaderb b/Assets/Shaders/ToSwapchain_FS.shshaderb index 24cb54fe..0bee0ac6 100644 Binary files a/Assets/Shaders/ToSwapchain_FS.shshaderb and b/Assets/Shaders/ToSwapchain_FS.shshaderb differ diff --git a/SHADE_Engine/src/AudioSystem/SHAudioSystem.cpp b/SHADE_Engine/src/AudioSystem/SHAudioSystem.cpp index e02eac50..60b709c2 100644 --- a/SHADE_Engine/src/AudioSystem/SHAudioSystem.cpp +++ b/SHADE_Engine/src/AudioSystem/SHAudioSystem.cpp @@ -656,6 +656,15 @@ namespace SHADE } } + void SHAudioSystem::SetParameterWithLabel(const char* path, const char* label) + { + result = fmodStudioSystem->setParameterByNameWithLabel(path, label); + if (result != FMOD_OK) + { + ErrorCheck(); + } + } + void AudioClip::Play() { if(!instance) @@ -734,12 +743,16 @@ namespace SHADE } } - //void AudioClip::SetParameterLabel(const char* paramName, const char* label) - //{ - // if (!instance) - // return; - // instance->setParameterByNameWithLabel(paramName, label); - //} + void AudioClip::SetParameterWithLabel(const char* paramName, const char* label) + { + if (!instance) + return; + FMOD_RESULT result = instance->setParameterByNameWithLabel(paramName, label); + if (result != FMOD_OK) + { + SHLOG_ERROR("Audio system error: {}", FMOD_ErrorString(result)) + } + } float AudioClip::GetParameterValue(const char* paramName) { diff --git a/SHADE_Engine/src/AudioSystem/SHAudioSystem.h b/SHADE_Engine/src/AudioSystem/SHAudioSystem.h index 68942a8e..99ff7953 100644 --- a/SHADE_Engine/src/AudioSystem/SHAudioSystem.h +++ b/SHADE_Engine/src/AudioSystem/SHAudioSystem.h @@ -33,7 +33,7 @@ namespace SHADE void SetPause(bool pause); bool IsPaused(); void SetParameter(const char* paramName, float value); - //void SetParameterLabel(const char* paramName, const char* label); + void SetParameterWithLabel(const char* paramName, const char* label); float GetParameterValue(const char* paramName); float GetVolume(); void SetVolume(float volume); @@ -94,6 +94,7 @@ namespace SHADE float GetParameterValue(const char* path); void SetParameter(const char* path, float value); + void SetParameterWithLabel(const char* path, const char* label); private: FMOD::Studio::System* fmodStudioSystem; diff --git a/SHADE_Engine/src/Editor/EditorWindow/AssetBrowser/SHAssetBrowser.cpp b/SHADE_Engine/src/Editor/EditorWindow/AssetBrowser/SHAssetBrowser.cpp index a0aaf0fa..a6e506b5 100644 --- a/SHADE_Engine/src/Editor/EditorWindow/AssetBrowser/SHAssetBrowser.cpp +++ b/SHADE_Engine/src/Editor/EditorWindow/AssetBrowser/SHAssetBrowser.cpp @@ -376,7 +376,9 @@ namespace SHADE { if(editor->LoadScene(asset->id)) { +#ifdef SHEDITOR editor->editorConfig->workingSceneID = asset->id; +#endif } } break; diff --git a/SHADE_Engine/src/Editor/SHEditor.cpp b/SHADE_Engine/src/Editor/SHEditor.cpp index 346bfbed..6d71f98d 100644 --- a/SHADE_Engine/src/Editor/SHEditor.cpp +++ b/SHADE_Engine/src/Editor/SHEditor.cpp @@ -592,8 +592,10 @@ namespace SHADE { //Load the scene sceneToLoad = 0; +#ifdef SHEDITOR editorConfig->workingSceneID = assetID; SHConfigurationManager::SaveEditorConfig(); +#endif SHSceneManager::RestartScene(assetID); return true; } diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp index e7f1ae68..bbbbd1dd 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp @@ -669,7 +669,7 @@ namespace SHADE #endif } - static bool shadowAdded = false; + //static bool shadowAdded = false; //if (shadowAdded == false && SHInputManager::GetKey(SHInputManager::SH_KEYCODE::B)) //{ diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Lights/SHLightingSubSystem.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Lights/SHLightingSubSystem.cpp index 6f8a9030..cace495c 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Lights/SHLightingSubSystem.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Lights/SHLightingSubSystem.cpp @@ -398,7 +398,10 @@ namespace SHADE { SHTransformComponent* transform = SHComponentManager::GetComponent(lightComp->GetEID()); - return SHMatrix::Transpose(SHMatrix::LookAtLH(transform->GetWorldPosition(), SHVec3::Normalise(lightComp->GetLightData().direction), SHVec3(0.0f, -1.0f, 0.0f))); + if (transform) + return SHMatrix::Transpose(SHMatrix::LookAtLH(transform->GetWorldPosition(), SHVec3::Normalise(lightComp->GetLightData().direction), SHVec3(0.0f, -1.0f, 0.0f))); + else + return{}; } //return SHMatrix::Transpose(SHMatrix::LookAtLH(/*lightComp->GetLightData().position*/SHVec3(1.27862f, 4.78952f, 4.12811f), SHVec3(-0.280564f, -0.66262f, -0.69422f), SHVec3(0.0f, -1.0f, 0.0f))); case SH_LIGHT_TYPE::POINT: diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Lights/SHLightingSubSystem.h b/SHADE_Engine/src/Graphics/MiddleEnd/Lights/SHLightingSubSystem.h index 7794a2fb..69b00f2c 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Lights/SHLightingSubSystem.h +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Lights/SHLightingSubSystem.h @@ -73,8 +73,8 @@ namespace SHADE public: using DynamicOffsetArray = std::array, static_cast(SHGraphicsConstants::NUM_FRAME_BUFFERS)>; static constexpr uint32_t MAX_SHADOWS = 200; - static constexpr uint32_t SHADOW_MAP_WIDTH = 1024; - static constexpr uint32_t SHADOW_MAP_HEIGHT = 1024; + static constexpr uint32_t SHADOW_MAP_WIDTH = 2048; + static constexpr uint32_t SHADOW_MAP_HEIGHT = 2048; private: class PerTypeData diff --git a/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraph.cpp b/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraph.cpp index ea650274..e4e6889c 100644 --- a/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraph.cpp +++ b/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraph.cpp @@ -512,9 +512,9 @@ namespace SHADE uint32_t h = static_cast(resource->GetHeight()); cmdBuffer->SetViewportScissor(static_cast(w), static_cast(h), w, h); - //static constexpr uint32_t INPUT_IMAGE_SET_INDEX = 0; - auto const& mappings = SHGraphicsPredefinedData::GetMappings(SHGraphicsPredefinedData::SystemType::BATCHING); - newSubpass->BindInputDescriptorSets (cmdBuffer, mappings.at(SHPredefinedDescriptorTypes::RENDER_GRAPH_RESOURCE), frameIndex); + static constexpr uint32_t INPUT_IMAGE_SET_INDEX = 0; + //auto const& mappings = SHGraphicsPredefinedData::GetMappings(SHGraphicsPredefinedData::SystemType::BATCHING); + newSubpass->BindInputDescriptorSets (cmdBuffer, INPUT_IMAGE_SET_INDEX, frameIndex); // draw a quad. cmdBuffer->DrawArrays(4, 1, 0, 0); diff --git a/SHADE_Engine/src/Graphics/RenderGraph/SHRenderToSwapchainImageSystem.cpp b/SHADE_Engine/src/Graphics/RenderGraph/SHRenderToSwapchainImageSystem.cpp index 80260b7b..cffc3aa8 100644 --- a/SHADE_Engine/src/Graphics/RenderGraph/SHRenderToSwapchainImageSystem.cpp +++ b/SHADE_Engine/src/Graphics/RenderGraph/SHRenderToSwapchainImageSystem.cpp @@ -21,7 +21,7 @@ namespace SHADE void SHRenderToSwapchainImageSystem::ConstructPipelines(Handle logicalDevice) noexcept { - auto pipelineLayout = logicalDevice->CreatePipelineLayout(SHPipelineLayoutParams + pipelineLayout = logicalDevice->CreatePipelineLayout(SHPipelineLayoutParams { .shaderModules = {shaderModules.first, shaderModules.second}, .predefinedDescSetLayouts = {} diff --git a/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.cpp b/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.cpp index d45789ce..14a5d864 100644 --- a/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.cpp +++ b/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.cpp @@ -78,6 +78,7 @@ namespace SHADE , viewport {rhs.viewport} , renderer {rhs.renderer} , companionSubpass {rhs.companionSubpass} + , dummyPipelineLayout{rhs.dummyPipelineLayout} { } @@ -115,6 +116,7 @@ namespace SHADE renderer = rhs.renderer; viewport = rhs.viewport; companionSubpass = rhs.companionSubpass; + dummyPipelineLayout = rhs.dummyPipelineLayout; return *this; @@ -457,17 +459,20 @@ namespace SHADE /***************************************************************************/ void SHSubpass::GenerateDummyPipielineLayout(void) noexcept { - auto const& batchingSystemData = SHGraphicsPredefinedData::GetSystemData(SHGraphicsPredefinedData::SystemType::BATCHING); - std::vector newLayouts = batchingSystemData.descSetLayouts; - if (inputDescriptorLayout) + if (!dummyPipelineLayout) { - newLayouts.push_back(inputDescriptorLayout); - } + auto const& batchingSystemData = SHGraphicsPredefinedData::GetSystemData(SHGraphicsPredefinedData::SystemType::BATCHING); + std::vector newLayouts = batchingSystemData.descSetLayouts; + if (inputDescriptorLayout) + { + newLayouts.push_back(inputDescriptorLayout); + } - dummyPipelineLayout = graphStorage->logicalDevice->CreatePipelineLayoutDummy - ( - SHPipelineLayoutParamsDummy{ newLayouts } - ); + dummyPipelineLayout = graphStorage->logicalDevice->CreatePipelineLayoutDummy + ( + SHPipelineLayoutParamsDummy{ newLayouts } + ); + } } /***************************************************************************/ diff --git a/SHADE_Engine/src/Graphics/Windowing/SHWindow.cpp b/SHADE_Engine/src/Graphics/Windowing/SHWindow.cpp index 078d9fc8..84df5f88 100644 --- a/SHADE_Engine/src/Graphics/Windowing/SHWindow.cpp +++ b/SHADE_Engine/src/Graphics/Windowing/SHWindow.cpp @@ -198,7 +198,8 @@ namespace SHADE void SHWindow::SetMouseVisible(bool show) { - ShowCursor(show); + while(GetMouseVisible() != show) + ShowCursor(show); } void SHWindow::SetMousePosition(int x, int y) diff --git a/SHADE_Managed/src/Audio/Audio.cxx b/SHADE_Managed/src/Audio/Audio.cxx index c3994cd4..33cfdd83 100644 --- a/SHADE_Managed/src/Audio/Audio.cxx +++ b/SHADE_Managed/src/Audio/Audio.cxx @@ -124,6 +124,12 @@ namespace SHADE audioSys->SetParameter(Convert::ToNative(path).data(), value); } + void Audio::SetParameterWithLabel(System::String^ path, System::String^ label) + { + auto audioSys = SHSystemManager::GetSystem(); + audioSys->SetParameterWithLabel(Convert::ToNative(path).data(), Convert::ToNative(label).data()); + } + AudioClipHandler Audio::CreateAudioClip(System::String^ path) { auto audioSys = SHSystemManager::GetSystem(); diff --git a/SHADE_Managed/src/Audio/Audio.hxx b/SHADE_Managed/src/Audio/Audio.hxx index 179a3eb7..fa1e97de 100644 --- a/SHADE_Managed/src/Audio/Audio.hxx +++ b/SHADE_Managed/src/Audio/Audio.hxx @@ -105,6 +105,7 @@ namespace SHADE static void SetVCAVolume(System::String^ path, float volume); static float GetParameterValue(System::String^ path); static void SetParameter(System::String^ path, float value); + static void SetParameterWithLabel(System::String^ path, System::String^ label); //to comment ltr static AudioClipHandler CreateAudioClip(System::String^ path); diff --git a/SHADE_Managed/src/Audio/AudioClip.cxx b/SHADE_Managed/src/Audio/AudioClip.cxx index 7ed58714..062b543e 100644 --- a/SHADE_Managed/src/Audio/AudioClip.cxx +++ b/SHADE_Managed/src/Audio/AudioClip.cxx @@ -79,6 +79,11 @@ namespace SHADE NativeObject->SetParameter(Convert::ToNative(paramName).data(), value); } + void AudioClipHandler::SetParameterWithLabel(System::String^ paramName, System::String^ label) + { + NativeObject->SetParameterWithLabel(Convert::ToNative(paramName).data(), Convert::ToNative(label).data()); + } + float AudioClipHandler::GetParameterValue(System::String^ paramName) { return NativeObject->GetParameterValue(Convert::ToNative(paramName).data()); diff --git a/SHADE_Managed/src/Audio/AudioClip.hxx b/SHADE_Managed/src/Audio/AudioClip.hxx index 34e9b4a5..317c5bad 100644 --- a/SHADE_Managed/src/Audio/AudioClip.hxx +++ b/SHADE_Managed/src/Audio/AudioClip.hxx @@ -71,6 +71,7 @@ namespace SHADE void SetPause(bool pause); bool IsPaused(); void SetParameter(System::String^ paramName, float value); + void SetParameterWithLabel(System::String^ paramName, System::String^ label); float GetParameterValue(System::String^ paramName); float GetVolume(); void SetVolume(float volume); diff --git a/SHADE_Managed/src/Components/TextRenderable.cxx b/SHADE_Managed/src/Components/TextRenderable.cxx index 3eb1f3b9..c75d4556 100644 --- a/SHADE_Managed/src/Components/TextRenderable.cxx +++ b/SHADE_Managed/src/Components/TextRenderable.cxx @@ -19,6 +19,7 @@ of DigiPen Institute of Technology is prohibited. #include "Assets/NativeAsset.hxx" #include "Utility/Convert.hxx" + namespace SHADE { /*---------------------------------------------------------------------------------*/ @@ -55,4 +56,16 @@ namespace SHADE GetNativeComponent()->SetFont(value.NativeObject); } } + + Color TextRenderable::TextColor::get() + { + return Convert::ToCLI(GetNativeComponent()->GetColor()); + } + + void TextRenderable::TextColor::set(Color value) + { + GetNativeComponent()->SetColor(Convert::ToNative(value)); + } + + } diff --git a/SHADE_Managed/src/Components/TextRenderable.hxx b/SHADE_Managed/src/Components/TextRenderable.hxx index b17a919c..b65f9c59 100644 --- a/SHADE_Managed/src/Components/TextRenderable.hxx +++ b/SHADE_Managed/src/Components/TextRenderable.hxx @@ -60,6 +60,13 @@ namespace SHADE FontAsset get(); void set(FontAsset value); } + + property Color TextColor + { + Color get(); + void set(Color value); + } + }; } diff --git a/SHADE_Managed/src/Components/Transform.cxx b/SHADE_Managed/src/Components/Transform.cxx index d5b38967..3216d0f0 100644 --- a/SHADE_Managed/src/Components/Transform.cxx +++ b/SHADE_Managed/src/Components/Transform.cxx @@ -22,6 +22,7 @@ namespace SHADE : Component(entity) {} + /*-----------------------------------------------------------------------------------*/ /* Properties */ /*-----------------------------------------------------------------------------------*/ diff --git a/SHADE_Managed/src/Engine/Application.cxx b/SHADE_Managed/src/Engine/Application.cxx index ba0cb592..e5aeeb9d 100644 --- a/SHADE_Managed/src/Engine/Application.cxx +++ b/SHADE_Managed/src/Engine/Application.cxx @@ -77,7 +77,7 @@ namespace SHADE } void Application::IsCursorVisible::set(bool value) { - SHWindow::SetMouseVisible(value); + //SHWindow::SetMouseVisible(value); } /*---------------------------------------------------------------------------------*/ /* Usage Functions */ diff --git a/SHADE_Managed/src/Input/Input.cxx b/SHADE_Managed/src/Input/Input.cxx index ee628523..5b76392b 100644 --- a/SHADE_Managed/src/Input/Input.cxx +++ b/SHADE_Managed/src/Input/Input.cxx @@ -149,7 +149,7 @@ namespace SHADE void Input::SetMouseCentering(bool state) { - SHInputManager::SetMouseCentering(state); + //SHInputManager::SetMouseCentering(state); } bool Input::GetMouseCentering()