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/CutScene/CutScene_04a.shmat b/Assets/Materials/CutScene/CutScene_04a.shmat new file mode 100644 index 00000000..799b5eb9 --- /dev/null +++ b/Assets/Materials/CutScene/CutScene_04a.shmat @@ -0,0 +1,8 @@ +- VertexShader: 46580970 + FragmentShader: 35983630 + SubPass: UI + Properties: + data.color: {x: 1, y: 1, z: 1, w: 1} + data.textureIndex: 51238312 + data.alpha: 1 + data.beta: {x: 1, y: 1, z: 1} \ No newline at end of file diff --git a/Assets/Materials/CutScene/CutScene_04a.shmat.shmeta b/Assets/Materials/CutScene/CutScene_04a.shmat.shmeta new file mode 100644 index 00000000..19ff9435 --- /dev/null +++ b/Assets/Materials/CutScene/CutScene_04a.shmat.shmeta @@ -0,0 +1,3 @@ +Name: CutScene_04a +ID: 130935405 +Type: 7 diff --git a/Assets/Materials/CutScene/CutScene_04b.shmat b/Assets/Materials/CutScene/CutScene_04b.shmat new file mode 100644 index 00000000..c01d8434 --- /dev/null +++ b/Assets/Materials/CutScene/CutScene_04b.shmat @@ -0,0 +1,8 @@ +- VertexShader: 46580970 + FragmentShader: 35983630 + SubPass: UI + Properties: + data.color: {x: 1, y: 1, z: 1, w: 1} + data.textureIndex: 61471971 + data.alpha: 1 + data.beta: {x: 1, y: 1, z: 1} \ No newline at end of file diff --git a/Assets/Materials/CutScene/CutScene_04b.shmat.shmeta b/Assets/Materials/CutScene/CutScene_04b.shmat.shmeta new file mode 100644 index 00000000..e80fb355 --- /dev/null +++ b/Assets/Materials/CutScene/CutScene_04b.shmat.shmeta @@ -0,0 +1,3 @@ +Name: CutScene_04b +ID: 122461516 +Type: 7 diff --git a/Assets/Materials/CutScene/CutScene_04c.shmat b/Assets/Materials/CutScene/CutScene_04c.shmat new file mode 100644 index 00000000..ffe9aab1 --- /dev/null +++ b/Assets/Materials/CutScene/CutScene_04c.shmat @@ -0,0 +1,8 @@ +- VertexShader: 46580970 + FragmentShader: 35983630 + SubPass: UI + Properties: + data.color: {x: 1, y: 1, z: 1, w: 1} + data.textureIndex: 58217538 + data.alpha: 1 + data.beta: {x: 1, y: 1, z: 1} \ No newline at end of file diff --git a/Assets/Materials/CutScene/CutScene_04c.shmat.shmeta b/Assets/Materials/CutScene/CutScene_04c.shmat.shmeta new file mode 100644 index 00000000..ac7452ab --- /dev/null +++ b/Assets/Materials/CutScene/CutScene_04c.shmat.shmeta @@ -0,0 +1,3 @@ +Name: CutScene_04c +ID: 124507864 +Type: 7 diff --git a/Assets/Materials/CutScene/CutScene_05a.shmat b/Assets/Materials/CutScene/CutScene_05a.shmat new file mode 100644 index 00000000..c1436c21 --- /dev/null +++ b/Assets/Materials/CutScene/CutScene_05a.shmat @@ -0,0 +1,8 @@ +- VertexShader: 46580970 + FragmentShader: 35983630 + SubPass: UI + Properties: + data.color: {x: 1, y: 1, z: 1, w: 1} + data.textureIndex: 61980534 + data.alpha: 1 + data.beta: {x: 1, y: 1, z: 1} \ No newline at end of file diff --git a/Assets/Materials/CutScene/CutScene_05a.shmat.shmeta b/Assets/Materials/CutScene/CutScene_05a.shmat.shmeta new file mode 100644 index 00000000..8f93d07b --- /dev/null +++ b/Assets/Materials/CutScene/CutScene_05a.shmat.shmeta @@ -0,0 +1,3 @@ +Name: CutScene_05a +ID: 118069989 +Type: 7 diff --git a/Assets/Materials/CutScene/CutScene_05b.shmat b/Assets/Materials/CutScene/CutScene_05b.shmat new file mode 100644 index 00000000..82a612d8 --- /dev/null +++ b/Assets/Materials/CutScene/CutScene_05b.shmat @@ -0,0 +1,8 @@ +- VertexShader: 46580970 + FragmentShader: 35983630 + SubPass: UI + Properties: + data.color: {x: 1, y: 1, z: 1, w: 1} + data.textureIndex: 51561286 + data.alpha: 1 + data.beta: {x: 1, y: 1, z: 1} \ No newline at end of file diff --git a/Assets/Materials/CutScene/CutScene_05b.shmat.shmeta b/Assets/Materials/CutScene/CutScene_05b.shmat.shmeta new file mode 100644 index 00000000..73c9b778 --- /dev/null +++ b/Assets/Materials/CutScene/CutScene_05b.shmat.shmeta @@ -0,0 +1,3 @@ +Name: CutScene_05b +ID: 132945336 +Type: 7 diff --git a/Assets/Materials/UI/Instruction_01.shmat b/Assets/Materials/UI/Instruction_01.shmat index bbcb6352..4dc449f7 100644 --- a/Assets/Materials/UI/Instruction_01.shmat +++ b/Assets/Materials/UI/Instruction_01.shmat @@ -3,6 +3,6 @@ SubPass: UI Properties: data.color: {x: 1, y: 1, z: 1, w: 1} - data.textureIndex: 62200943 + data.textureIndex: 52834559 data.alpha: 1 data.beta: {x: 1, y: 1, z: 1} \ No newline at end of file diff --git a/Assets/Materials/UI/Instruction_02.shmat b/Assets/Materials/UI/Instruction_02.shmat index 3084049a..d5947130 100644 --- a/Assets/Materials/UI/Instruction_02.shmat +++ b/Assets/Materials/UI/Instruction_02.shmat @@ -3,6 +3,6 @@ SubPass: UI Properties: data.color: {x: 1, y: 1, z: 1, w: 1} - data.textureIndex: 53303669 + data.textureIndex: 60762613 data.alpha: 1 data.beta: {x: 1, y: 1, z: 1} \ No newline at end of file diff --git a/Assets/Materials/UI/Instruction_03.shmat b/Assets/Materials/UI/Instruction_03.shmat index b548319f..9dd722c0 100644 --- a/Assets/Materials/UI/Instruction_03.shmat +++ b/Assets/Materials/UI/Instruction_03.shmat @@ -3,6 +3,6 @@ SubPass: UI Properties: data.color: {x: 1, y: 1, z: 1, w: 1} - data.textureIndex: 61780097 + data.textureIndex: 53309226 data.alpha: 1 data.beta: {x: 1, y: 1, z: 1} \ No newline at end of file diff --git a/Assets/Materials/UI/Instruction_04.shmat b/Assets/Materials/UI/Instruction_04.shmat index dba0a45d..430ee860 100644 --- a/Assets/Materials/UI/Instruction_04.shmat +++ b/Assets/Materials/UI/Instruction_04.shmat @@ -3,6 +3,6 @@ SubPass: UI Properties: data.color: {x: 1, y: 1, z: 1, w: 1} - data.textureIndex: 59178524 + data.textureIndex: 63002526 data.alpha: 1 data.beta: {x: 1, y: 1, z: 1} \ No newline at end of file diff --git a/Assets/Materials/UI/UIMat_Black.shmat b/Assets/Materials/UI/UIMat_Black.shmat new file mode 100644 index 00000000..8451828f --- /dev/null +++ b/Assets/Materials/UI/UIMat_Black.shmat @@ -0,0 +1,8 @@ +- VertexShader: 46580970 + FragmentShader: 50110174 + SubPass: UI Translucent + Properties: + data.color: {x: 0, y: 0, z: 0, w: 1} + data.textureIndex: 0 + data.alpha: 0 + data.beta: {x: 1, y: 1, z: 1} \ No newline at end of file diff --git a/Assets/Materials/UI/UIMat_Black.shmat.shmeta b/Assets/Materials/UI/UIMat_Black.shmat.shmeta new file mode 100644 index 00000000..caac5feb --- /dev/null +++ b/Assets/Materials/UI/UIMat_Black.shmat.shmeta @@ -0,0 +1,3 @@ +Name: UIMat_Black +ID: 120016136 +Type: 7 diff --git a/Assets/Materials/UI/UIMat_MainMenu.shmat b/Assets/Materials/UI/UIMat_MainMenu.shmat index ba2069e9..8aefe36e 100644 --- a/Assets/Materials/UI/UIMat_MainMenu.shmat +++ b/Assets/Materials/UI/UIMat_MainMenu.shmat @@ -3,6 +3,6 @@ SubPass: UI Properties: data.color: {x: 1, y: 1, z: 1, w: 1} - data.textureIndex: 54429632 + data.textureIndex: 58181851 data.alpha: 1 data.beta: {x: 1, y: 1, z: 1} \ No newline at end of file diff --git a/Assets/Materials/UIMat_Credits.shmat b/Assets/Materials/UIMat_Credits.shmat new file mode 100644 index 00000000..4c5f5a74 --- /dev/null +++ b/Assets/Materials/UIMat_Credits.shmat @@ -0,0 +1,8 @@ +- VertexShader: 46580970 + FragmentShader: 35983630 + SubPass: UI + Properties: + data.color: {x: 1, y: 1, z: 1, w: 1} + data.textureIndex: 59379300 + data.alpha: 1 + data.beta: {x: 1, y: 1, z: 1} \ No newline at end of file diff --git a/Assets/Materials/UIMat_Credits.shmat.shmeta b/Assets/Materials/UIMat_Credits.shmat.shmeta new file mode 100644 index 00000000..9ee55eef --- /dev/null +++ b/Assets/Materials/UIMat_Credits.shmat.shmeta @@ -0,0 +1,3 @@ +Name: UIMat_Credits +ID: 120332672 +Type: 7 diff --git a/Assets/Materials/UIMat_Multiplier.shmat b/Assets/Materials/UIMat_Multiplier.shmat new file mode 100644 index 00000000..f8ac5bf9 --- /dev/null +++ b/Assets/Materials/UIMat_Multiplier.shmat @@ -0,0 +1,8 @@ +- VertexShader: 46580970 + FragmentShader: 35983630 + SubPass: UI + Properties: + data.color: {x: 1, y: 1, z: 1, w: 1} + data.textureIndex: 52018575 + data.alpha: 1 + data.beta: {x: 1, y: 1, z: 1} \ No newline at end of file diff --git a/Assets/Materials/UIMat_Multiplier.shmat.shmeta b/Assets/Materials/UIMat_Multiplier.shmat.shmeta new file mode 100644 index 00000000..76e66de1 --- /dev/null +++ b/Assets/Materials/UIMat_Multiplier.shmat.shmeta @@ -0,0 +1,3 @@ +Name: UIMat_Multiplier +ID: 133784677 +Type: 7 diff --git a/Assets/Materials/UIMat_Score.shmat b/Assets/Materials/UIMat_Score.shmat new file mode 100644 index 00000000..b6ef4e94 --- /dev/null +++ b/Assets/Materials/UIMat_Score.shmat @@ -0,0 +1,8 @@ +- VertexShader: 46580970 + FragmentShader: 35983630 + SubPass: UI + Properties: + data.color: {x: 1, y: 1, z: 1, w: 1} + data.textureIndex: 54238246 + data.alpha: 1 + data.beta: {x: 1, y: 1, z: 1} \ No newline at end of file diff --git a/Assets/Materials/UIMat_Score.shmat.shmeta b/Assets/Materials/UIMat_Score.shmat.shmeta new file mode 100644 index 00000000..72f21348 --- /dev/null +++ b/Assets/Materials/UIMat_Score.shmat.shmeta @@ -0,0 +1,3 @@ +Name: UIMat_Score +ID: 127527215 +Type: 7 diff --git a/Assets/Materials/UIMat_Timer.shmat b/Assets/Materials/UIMat_Timer.shmat new file mode 100644 index 00000000..b96493d8 --- /dev/null +++ b/Assets/Materials/UIMat_Timer.shmat @@ -0,0 +1,8 @@ +- VertexShader: 46580970 + FragmentShader: 35983630 + SubPass: UI + Properties: + data.color: {x: 1, y: 1, z: 1, w: 1} + data.textureIndex: 60494030 + data.alpha: 1 + data.beta: {x: 1, y: 1, z: 1} \ No newline at end of file diff --git a/Assets/Materials/UIMat_Timer.shmat.shmeta b/Assets/Materials/UIMat_Timer.shmat.shmeta new file mode 100644 index 00000000..9419bd1a --- /dev/null +++ b/Assets/Materials/UIMat_Timer.shmat.shmeta @@ -0,0 +1,3 @@ +Name: UIMat_Timer +ID: 126220632 +Type: 7 diff --git a/Assets/Scenes/CutSceneEnd.shade b/Assets/Scenes/CutSceneEnd.shade new file mode 100644 index 00000000..62c7389f --- /dev/null +++ b/Assets/Scenes/CutSceneEnd.shade @@ -0,0 +1,334 @@ +- EID: 1 + Name: Canvas4 + IsActive: true + NumberOfChildren: 3 + Components: + Canvas Component: + Canvas Width: 1920 + Canvas Height: 1080 + Scale by canvas width: false + IsActive: true + Scripts: ~ +- EID: 10 + Name: CutScene4 + IsActive: true + NumberOfChildren: 3 + Components: + UI Component: + Canvas ID: 1 + Hovered: false + Clicked: false + IsActive: true + Scripts: ~ +- EID: 2 + Name: pic1 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1275, y: 255, z: 0.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1313, y: 544, z: 1} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 130935405 + IsActive: true + UI Component: + Canvas ID: 1 + Hovered: false + Clicked: false + IsActive: true + Scripts: ~ +- EID: 65542 + Name: pic2 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1600, y: 150, z: 0.400000006} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 640, y: 661, z: 1} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 122461516 + IsActive: true + UI Component: + Canvas ID: 1 + Hovered: false + Clicked: false + IsActive: true + Scripts: ~ +- EID: 5 + Name: pic3 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2000, y: -275, z: 0.300000012} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1848, y: 575, z: 1} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 124507864 + IsActive: true + UI Component: + Canvas ID: 1 + Hovered: false + Clicked: false + IsActive: true + Scripts: ~ +- EID: 11 + Name: Background + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0.699999988} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1920, y: 1080, z: 1} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 117531460 + IsActive: true + UI Component: + Canvas ID: 1 + Hovered: false + Clicked: false + IsActive: true + Scripts: ~ +- EID: 12 + Name: Text + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 250, y: -500, z: 0.100000001} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 50, y: 50, z: 50} + IsActive: true + Text Renderer Component: + Text: Press Space to contiune + Font: 176667660 + Color: {x: 0, y: 0, z: 0, w: 1} + Text Size: {x: 1, y: 1, z: 1} + IsActive: true + UI Component: + Canvas ID: 1 + Hovered: false + Clicked: false + IsActive: true + Scripts: ~ +- EID: 3 + Name: Camera + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Camera Component: + Position: {x: 0, y: 0, z: 0} + Pitch: 0 + Yaw: 0 + Roll: 0 + Width: 1920 + Near: 0.00999999978 + Far: 10000 + Perspective: true + FOV: 90 + IsActive: true + Scripts: ~ +- EID: 7 + Name: CutsceneManager + IsActive: true + NumberOfChildren: 0 + Components: ~ + Scripts: + - Type: CutsceneEnd + Enabled: true + nextScene: 92009475 + duration: 1 + skipDuration: 0.100000001 + cutscene4Points: 4 + cutscene4Pics: 10 + cutscene5Points: 21 + cutscene5Pics: 15 + canvas4: 1 + canvas5: 14 +- EID: 4 + Name: CutScene4Points + IsActive: true + NumberOfChildren: 3 + Components: ~ + Scripts: ~ +- EID: 9 + Name: Pic1Point + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -275, y: 255, z: 0.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 8 + Name: Pic2Point + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 600, y: 150, z: 0.400000006} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 65549 + Name: Pic3Point + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: -275, z: 0.300000012} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 14 + Name: Canvas5 + IsActive: false + NumberOfChildren: 3 + Components: + Canvas Component: + Canvas Width: 1920 + Canvas Height: 1080 + Scale by canvas width: false + IsActive: false + Scripts: ~ +- EID: 15 + Name: CutScene5 + IsActive: true + NumberOfChildren: 2 + Components: + UI Component: + Canvas ID: 14 + Hovered: false + Clicked: false + IsActive: true + Scripts: ~ +- EID: 16 + Name: pic1 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -600, y: 1000, z: 0.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 634, y: 1027, z: 1} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 118069989 + IsActive: true + UI Component: + Canvas ID: 14 + Hovered: false + Clicked: false + IsActive: true + Scripts: ~ +- EID: 17 + Name: pic2 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 250, y: -1000, z: 0.400000006} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1337, y: 1028, z: 1} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 132945336 + IsActive: true + UI Component: + Canvas ID: 14 + Hovered: false + Clicked: false + IsActive: true + Scripts: ~ +- EID: 19 + Name: Background + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0.699999988} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1920, y: 1080, z: 1} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 117531460 + IsActive: true + UI Component: + Canvas ID: 14 + Hovered: false + Clicked: false + IsActive: true + Scripts: ~ +- EID: 20 + Name: Text + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 250, y: -500, z: 0.100000001} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 50, y: 50, z: 50} + IsActive: true + Text Renderer Component: + Text: Press Space to contiune + Font: 176667660 + Color: {x: 0, y: 0, z: 0, w: 1} + Text Size: {x: 1, y: 1, z: 1} + IsActive: false + UI Component: + Canvas ID: 14 + Hovered: false + Clicked: false + IsActive: true + Scripts: ~ +- EID: 21 + Name: CutScene5Points + IsActive: true + NumberOfChildren: 2 + Components: ~ + Scripts: ~ +- EID: 22 + Name: Pic1Point + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -600, y: 0, z: 0.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 23 + Name: Pic2Point + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 250, y: 0, z: 0.400000006} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ \ No newline at end of file diff --git a/Assets/Scenes/CutSceneEnd.shade.shmeta b/Assets/Scenes/CutSceneEnd.shade.shmeta new file mode 100644 index 00000000..eb1fe3b8 --- /dev/null +++ b/Assets/Scenes/CutSceneEnd.shade.shmeta @@ -0,0 +1,3 @@ +Name: CutSceneEnd +ID: 84606951 +Type: 5 diff --git a/Assets/Scenes/CutSceneIntro.shade b/Assets/Scenes/CutSceneIntro.shade index a61e92cb..abb83046 100644 --- a/Assets/Scenes/CutSceneIntro.shade +++ b/Assets/Scenes/CutSceneIntro.shade @@ -113,6 +113,8 @@ Text Renderer Component: Text: Press Space to contiune Font: 176667660 + Color: {x: 0, y: 0, z: 0, w: 1} + Text Size: {x: 1, y: 1, z: 1} IsActive: true UI Component: Canvas ID: 1 @@ -148,9 +150,11 @@ NumberOfChildren: 0 Components: ~ Scripts: - - Type: Cutscene + - Type: CutsceneIntro Enabled: true - duration: 2 + nextScene: 96668835 + duration: 1 + skipDuration: 0.100000001 cutscene1Points: 4 cutscene1Pics: 10 cutscene2Points: 20 @@ -314,6 +318,8 @@ Text Renderer Component: Text: Press Space to contiune Font: 176667660 + Color: {x: 0, y: 0, z: 0, w: 1} + Text Size: {x: 1, y: 1, z: 1} IsActive: true UI Component: Canvas ID: 13 @@ -448,7 +454,7 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: -1425, y: -200, z: 0.5} + Translate: {x: -1600, y: -200, z: 0.5} Rotate: {x: 0, y: 0, z: 0} Scale: {x: 1299, y: 575, z: 1} IsActive: true @@ -515,6 +521,8 @@ Text Renderer Component: Text: Press Space to contiune Font: 176667660 + Color: {x: 0, y: 0, z: 0, w: 1} + Text Size: {x: 1, y: 1, z: 1} IsActive: false UI Component: Canvas ID: 24 diff --git a/Assets/Scenes/Level1.shade b/Assets/Scenes/Level1.shade index e06548c0..e565b531 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 @@ -521,47 +536,11 @@ - Is Trigger: false Collision Tag: 0 Type: Box - Half Extents: {x: 1.04999995, y: 0.0500000007, z: 0.550000012} + Half Extents: {x: 1.10000002, y: 2, z: 0.550000012} Friction: 0.400000006 Bounciness: 0 Density: 1 - Position Offset: {x: 0, y: 0.0299999993, z: 0} - Rotation Offset: {x: 0, y: 0, z: 0} - - Is Trigger: false - Collision Tag: 0 - Type: Box - Half Extents: {x: 1.04999995, y: 0.0500000007, z: 0.550000012} - Friction: 0.400000006 - Bounciness: 0 - Density: 1 - Position Offset: {x: 0, y: 0.5, z: 0} - Rotation Offset: {x: 0, y: 0, z: 0} - - Is Trigger: false - Collision Tag: 0 - Type: Box - Half Extents: {x: 1.04999995, y: 0.0500000007, z: 0.550000012} - Friction: 0.400000006 - Bounciness: 0 - Density: 1 - Position Offset: {x: 0, y: 0.985000014, z: 0} - Rotation Offset: {x: 0, y: 0, z: 0} - - Is Trigger: false - Collision Tag: 0 - Type: Box - Half Extents: {x: 1.04999995, y: 0.0500000007, z: 0.550000012} - Friction: 0.400000006 - Bounciness: 0 - Density: 1 - Position Offset: {x: 0, y: 1.47500002, z: 0} - Rotation Offset: {x: 0, y: 0, z: 0} - - Is Trigger: false - Collision Tag: 0 - Type: Box - Half Extents: {x: 1.04999995, y: 0.0500000007, z: 0.550000012} - Friction: 0.400000006 - Bounciness: 0 - Density: 1 - Position Offset: {x: 0, y: 1.97000003, z: 0} + Position Offset: {x: 0, y: 1, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} IsActive: true Scripts: ~ @@ -584,47 +563,11 @@ - Is Trigger: false Collision Tag: 0 Type: Box - Half Extents: {x: 1.04999995, y: 0.0500000007, z: 0.550000012} + Half Extents: {x: 1.10000002, y: 2, z: 0.550000012} Friction: 0.400000006 Bounciness: 0 Density: 1 - Position Offset: {x: 0, y: 0.0299999993, z: 0} - Rotation Offset: {x: 0, y: 0, z: 0} - - Is Trigger: false - Collision Tag: 0 - Type: Box - Half Extents: {x: 1.04999995, y: 0.0500000007, z: 0.550000012} - Friction: 0.400000006 - Bounciness: 0 - Density: 1 - Position Offset: {x: 0, y: 0.5, z: 0} - Rotation Offset: {x: 0, y: 0, z: 0} - - Is Trigger: false - Collision Tag: 0 - Type: Box - Half Extents: {x: 1.04999995, y: 0.0500000007, z: 0.550000012} - Friction: 0.400000006 - Bounciness: 0 - Density: 1 - Position Offset: {x: 0, y: 0.985000014, z: 0} - Rotation Offset: {x: 0, y: 0, z: 0} - - Is Trigger: false - Collision Tag: 0 - Type: Box - Half Extents: {x: 1.04999995, y: 0.0500000007, z: 0.550000012} - Friction: 0.400000006 - Bounciness: 0 - Density: 1 - Position Offset: {x: 0, y: 1.47500002, z: 0} - Rotation Offset: {x: 0, y: 0, z: 0} - - Is Trigger: false - Collision Tag: 0 - Type: Box - Half Extents: {x: 1.04999995, y: 0.0500000007, z: 0.550000012} - Friction: 0.400000006 - Bounciness: 0 - Density: 1 - Position Offset: {x: 0, y: 1.97000003, z: 0} + Position Offset: {x: 0, y: 1, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} IsActive: true Scripts: ~ @@ -647,47 +590,11 @@ - Is Trigger: false Collision Tag: 0 Type: Box - Half Extents: {x: 1.04999995, y: 0.0500000007, z: 0.550000012} + Half Extents: {x: 1.10000002, y: 2, z: 0.550000012} Friction: 0.400000006 Bounciness: 0 Density: 1 - Position Offset: {x: 0, y: 0.0299999993, z: 0} - Rotation Offset: {x: 0, y: 0, z: 0} - - Is Trigger: false - Collision Tag: 0 - Type: Box - Half Extents: {x: 1.04999995, y: 0.0500000007, z: 0.550000012} - Friction: 0.400000006 - Bounciness: 0 - Density: 1 - Position Offset: {x: 0, y: 0.5, z: 0} - Rotation Offset: {x: 0, y: 0, z: 0} - - Is Trigger: false - Collision Tag: 0 - Type: Box - Half Extents: {x: 1.04999995, y: 0.0500000007, z: 0.550000012} - Friction: 0.400000006 - Bounciness: 0 - Density: 1 - Position Offset: {x: 0, y: 0.985000014, z: 0} - Rotation Offset: {x: 0, y: 0, z: 0} - - Is Trigger: false - Collision Tag: 0 - Type: Box - Half Extents: {x: 1.04999995, y: 0.0500000007, z: 0.550000012} - Friction: 0.400000006 - Bounciness: 0 - Density: 1 - Position Offset: {x: 0, y: 1.47500002, z: 0} - Rotation Offset: {x: 0, y: 0, z: 0} - - Is Trigger: false - Collision Tag: 0 - Type: Box - Half Extents: {x: 1.04999995, y: 0.0500000007, z: 0.550000012} - Friction: 0.400000006 - Bounciness: 0 - Density: 1 - Position Offset: {x: 0, y: 1.97000003, z: 0} + Position Offset: {x: 0, y: 1, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} IsActive: true Scripts: ~ @@ -836,47 +743,11 @@ - Is Trigger: false Collision Tag: 0 Type: Box - Half Extents: {x: 1.04999995, y: 0.0500000007, z: 0.550000012} + Half Extents: {x: 1.10000002, y: 2, z: 0.550000012} Friction: 0.400000006 Bounciness: 0 Density: 1 - Position Offset: {x: 0, y: 0.0299999993, z: 0} - Rotation Offset: {x: 0, y: 0, z: 0} - - Is Trigger: false - Collision Tag: 0 - Type: Box - Half Extents: {x: 1.04999995, y: 0.0500000007, z: 0.550000012} - Friction: 0.400000006 - Bounciness: 0 - Density: 1 - Position Offset: {x: 0, y: 0.5, z: 0} - Rotation Offset: {x: 0, y: 0, z: 0} - - Is Trigger: false - Collision Tag: 0 - Type: Box - Half Extents: {x: 1.04999995, y: 0.0500000007, z: 0.550000012} - Friction: 0.400000006 - Bounciness: 0 - Density: 1 - Position Offset: {x: 0, y: 0.985000014, z: 0} - Rotation Offset: {x: 0, y: 0, z: 0} - - Is Trigger: false - Collision Tag: 0 - Type: Box - Half Extents: {x: 1.04999995, y: 0.0500000007, z: 0.550000012} - Friction: 0.400000006 - Bounciness: 0 - Density: 1 - Position Offset: {x: 0, y: 1.47500002, z: 0} - Rotation Offset: {x: 0, y: 0, z: 0} - - Is Trigger: false - Collision Tag: 0 - Type: Box - Half Extents: {x: 1.04999995, y: 0.0500000007, z: 0.550000012} - Friction: 0.400000006 - Bounciness: 0 - Density: 1 - Position Offset: {x: 0, y: 1.97000003, z: 0} + Position Offset: {x: 0, y: 1, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} IsActive: true Scripts: ~ @@ -962,47 +833,11 @@ - Is Trigger: false Collision Tag: 0 Type: Box - Half Extents: {x: 1.04999995, y: 0.0500000007, z: 0.550000012} + Half Extents: {x: 1.10000002, y: 2, z: 0.550000012} Friction: 0.400000006 Bounciness: 0 Density: 1 - Position Offset: {x: 0, y: 0.0299999993, z: 0} - Rotation Offset: {x: 0, y: 0, z: 0} - - Is Trigger: false - Collision Tag: 0 - Type: Box - Half Extents: {x: 1.04999995, y: 0.0500000007, z: 0.550000012} - Friction: 0.400000006 - Bounciness: 0 - Density: 1 - Position Offset: {x: 0, y: 0.5, z: 0} - Rotation Offset: {x: 0, y: 0, z: 0} - - Is Trigger: false - Collision Tag: 0 - Type: Box - Half Extents: {x: 1.04999995, y: 0.0500000007, z: 0.550000012} - Friction: 0.400000006 - Bounciness: 0 - Density: 1 - Position Offset: {x: 0, y: 0.985000014, z: 0} - Rotation Offset: {x: 0, y: 0, z: 0} - - Is Trigger: false - Collision Tag: 0 - Type: Box - Half Extents: {x: 1.04999995, y: 0.0500000007, z: 0.550000012} - Friction: 0.400000006 - Bounciness: 0 - Density: 1 - Position Offset: {x: 0, y: 1.47500002, z: 0} - Rotation Offset: {x: 0, y: 0, z: 0} - - Is Trigger: false - Collision Tag: 0 - Type: Box - Half Extents: {x: 1.04999995, y: 0.0500000007, z: 0.550000012} - Friction: 0.400000006 - Bounciness: 0 - Density: 1 - Position Offset: {x: 0, y: 1.97000003, z: 0} + Position Offset: {x: 0, y: 1, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} IsActive: true Scripts: ~ @@ -2583,7 +2418,7 @@ Components: Transform Component: Translate: {x: 0, y: 0, z: 0} - Rotate: {x: -1.48352981, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} Scale: {x: 1, y: 1, z: 1} IsActive: true Renderable Component: @@ -2709,7 +2544,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 1 Type: Box Half Extents: {x: 1.79999995, y: 1, z: 4} Friction: 0.400000006 @@ -2718,7 +2553,7 @@ Position Offset: {x: 0, y: 0.550000012, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 1 Type: Box Half Extents: {x: 1.79999995, y: 1, z: 2.70000005} Friction: 0.400000006 @@ -4281,57 +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} - 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 - IsActive: true - Scripts: ~ -- EID: 206 - Name: Timer - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: 500, y: 400, z: 0} - 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 - IsActive: true - Scripts: ~ -- EID: 238 - Name: Multiplier - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: -800, y: 300, z: 0} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 60, y: 60, z: 60} - IsActive: true - Text Renderer Component: - Text: TEST - Font: 176667660 - IsActive: true - Scripts: ~ - EID: 236 Name: ====GameManager==== IsActive: true @@ -4343,23 +4127,29 @@ winScene: 86098106 loseScene: 91685359 currGameState: 0 - totalItemCount: 0 + totalItemCount: 4 Score: 0 timer: 200 - scoreText: 237 - timeText: 206 - multiplierText: 238 + scoreText: 449 + timeText: 520 + multiplierText: 139 maxMultiplierDuration: 5 maxMultiplierCombo: 10 multiplierFont: 60 + - Type: PauseMenu + Enabled: true + resumeBtn: 457 + retryBtn: 455 + quitBtn: 456 + canvas: 458 - EID: 235 Name: ====AI===== IsActive: true NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 0.406909943, y: 0.100000001, z: -2} - Rotate: {x: -0, y: 0, z: -0} + Translate: {x: 2.13981342, y: 0.0490087792, z: -1.96055627} + Rotate: {x: 0, y: -1.53675354, z: 0} Scale: {x: 1, y: 1, z: 1} IsActive: true Renderable Component: @@ -4385,7 +4175,7 @@ - Is Trigger: false Collision Tag: 5 Type: Box - Half Extents: {x: 1, y: 1.79999995, z: 0.400000006} + Half Extents: {x: 0.600000024, y: 1.79999995, z: 0.400000006} Friction: 0.400000006 Bounciness: 0 Density: 1 @@ -4396,6 +4186,7 @@ - Type: Homeowner1 Enabled: true waypointsPool: 234 + startWaypoint: 233 patrolSpeed: 3 chaseSpeed: 6 turningSpeed: 5 @@ -4466,8 +4257,8 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 3.71994686, y: 1.14058578, z: -9.35119247} - Rotate: {x: -0, y: 0, z: -0} + Translate: {x: 3.71994758, y: 1.0997268, z: -9.35119152} + Rotate: {x: 4.18975469e-06, y: -1.08915871e-11, z: -5.03928231e-06} Scale: {x: 1, y: 1, z: 1} IsActive: true Renderable Component: @@ -4509,7 +4300,7 @@ dontReturn: false soundDistance: 10 highlightSpeed: 200 - highlightThickness: 600 + highlightThickness: 120 highlightLowerClamp: 0.25 - EID: 227 Name: Mesh_Cheese @@ -4517,8 +4308,8 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 3.22328258, y: 1.08429813, z: -0.57395637} - Rotate: {x: -0, y: 0, z: -0} + Translate: {x: 3.22328258, y: 1.02709854, z: -0.57395637} + Rotate: {x: 5.62993963e-09, y: -7.03049191e-17, z: -1.92319405e-08} Scale: {x: 1, y: 1, z: 1} IsActive: true Renderable Component: @@ -4530,7 +4321,7 @@ Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Interpolate: true + Interpolate: false Sleeping Enabled: true Freeze Position X: false Freeze Position Y: false @@ -4560,7 +4351,7 @@ dontReturn: false soundDistance: 10 highlightSpeed: 200 - highlightThickness: 600 + highlightThickness: 50 highlightLowerClamp: 0.25 - EID: 65778 Name: Mesh_Apple @@ -4568,8 +4359,8 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: -2.5, y: 0.778462529, z: -5} - Rotate: {x: -0, y: 0, z: -0} + Translate: {x: -2.50000072, y: 0.799999774, z: -5.00000095} + Rotate: {x: -4.09249949e-08, y: 1.40052995e-13, z: 2.95086267e-08} Scale: {x: 1, y: 1, z: 1} IsActive: true Renderable Component: @@ -4581,7 +4372,7 @@ Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Interpolate: true + Interpolate: false Sleeping Enabled: true Freeze Position X: false Freeze Position Y: false @@ -4611,7 +4402,7 @@ dontReturn: false soundDistance: 10 highlightSpeed: 200 - highlightThickness: 600 + highlightThickness: 60 highlightLowerClamp: 0.25 - EID: 216 Name: Mesh_Apple @@ -4619,8 +4410,8 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: -2.5, y: 0.778462529, z: -4.28408813} - Rotate: {x: -0, y: 0, z: -0} + Translate: {x: -2.50000072, y: 0.799999893, z: -4.28408909} + Rotate: {x: -5.83341553e-08, y: 7.48974247e-14, z: 1.10461471e-08} Scale: {x: 1, y: 1, z: 1} IsActive: true Renderable Component: @@ -4632,7 +4423,7 @@ Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Interpolate: true + Interpolate: false Sleeping Enabled: true Freeze Position X: false Freeze Position Y: false @@ -4662,7 +4453,7 @@ dontReturn: false soundDistance: 10 highlightSpeed: 200 - highlightThickness: 600 + highlightThickness: 60 highlightLowerClamp: 0.25 - EID: 229 Name: ====ScoreZonePool==== @@ -4677,7 +4468,7 @@ Components: Transform Component: Translate: {x: -7.47360849, y: 1.4327563, z: -2.44241929} - Rotate: {x: -0, y: 0, z: -0} + Rotate: {x: -0, y: 0, z: 0} Scale: {x: 1, y: 1, z: 1} IsActive: true RigidBody Component: @@ -4739,7 +4530,7 @@ Components: Transform Component: Translate: {x: 1.97487497, y: 1.3500793, z: -10.195508} - Rotate: {x: -0, y: 0, z: -0} + Rotate: {x: -0, y: 0, z: 0} Scale: {x: 1, y: 1, z: 1} IsActive: true RigidBody Component: @@ -4800,8 +4591,8 @@ NumberOfChildren: 1 Components: Transform Component: - Translate: {x: -5.47656059, y: 1.4327563, z: -2.44241929} - Rotate: {x: -0, y: 0, z: -0} + Translate: {x: -5.47656107, y: 1.4327563, z: -2.44241929} + Rotate: {x: -0, y: 0, z: 0} Scale: {x: 1, y: 1, z: 1} IsActive: true RigidBody Component: @@ -4863,7 +4654,7 @@ Components: Transform Component: Translate: {x: 6.09239721, y: 1.4327563, z: -6.03106117} - Rotate: {x: -0, y: 0, z: -0} + Rotate: {x: -0, y: 0, z: 0} Scale: {x: 1, y: 1, z: 1} IsActive: true RigidBody Component: @@ -4925,7 +4716,7 @@ Components: Transform Component: Translate: {x: 6.09239721, y: 1.4327563, z: -3.94262314} - Rotate: {x: -0, y: 0, z: -0} + Rotate: {x: -0, y: 0, z: 0} Scale: {x: 1, y: 1, z: 1} IsActive: true RigidBody Component: @@ -5074,9 +4865,9 @@ NumberOfChildren: 5 Components: Transform Component: - Translate: {x: -8, y: 1.142977, z: -4} - Rotate: {x: -0, y: 0, z: -0} - Scale: {x: 0.999999881, y: 1, z: 0.999999881} + Translate: {x: -8, y: 0.899999976, z: -4} + Rotate: {x: -0, y: 1.57079649, z: 0} + Scale: {x: 0.999965608, y: 1, z: 0.999965608} IsActive: true Renderable Component: Mesh: 149697411 @@ -5090,7 +4881,7 @@ Interpolate: false Sleeping Enabled: true Freeze Position X: false - Freeze Position Y: true + Freeze Position Y: false Freeze Position Z: false Freeze Rotation X: true Freeze Rotation Y: true @@ -5120,23 +4911,27 @@ maxJumpHeight: 2 maxJumpTime: 0.75 fallMultipler: 3 - jumpPadMultiplayer: 2 - lightMultiper: 0.75 - mediumMultiper: 0.5 - heavyMultiper: 0.25 + jumpPadMultiplayer: 1.20000005 + lightMultiper: 0.899999976 + mediumMultiper: 0.699999988 + heavyMultiper: 0.5 + silhouettePlayer: 462 + silhouetteBag: 465 - Type: PickAndThrow Enabled: true throwForce: [8, 10, 8] - cameraArmOffSet: [0, 0.25, 0] + cameraArmOffSet: [0.25, 0.600000024, 0.200000003] delayTimer: 1 - aimingLength: 0.899999976 + aimingLength: 1 throwItem: false - silhouettePlayer: 462 - silhouetteBag: 465 - rayDistance: 0.5 + rayDistance: 0.75 rayHeight: 0.100000001 aimingFOV: 50 defaultFOV: 45 + - Type: StateMachine + Enabled: true + currentStateName: Idle State + currentAnimName: "" - EID: 65733 Name: HoldingPoint IsActive: true @@ -5155,36 +4950,36 @@ Components: Transform Component: Translate: {x: 0, y: -2.98023224e-08, z: 4.76837158e-07} - Rotate: {x: 0, y: 6.28318548, z: 2.23517329e-08} + Rotate: {x: -0.173316926, y: 3.1415925, z: 2.23517329e-08} Scale: {x: 1, y: 1, z: 1} IsActive: true Camera Component: - Position: {x: 2.12735963, y: 0.362327784, z: 7.98933029} - Pitch: 0 - Yaw: 360 + Position: {x: -8.9091711, y: 2.05214882, z: -4} + Pitch: -9.93032837 + Yaw: 270 Roll: 1.28065994e-06 Width: 1920 Near: 0.00999999978 Far: 10000 Perspective: true - FOV: 90 + FOV: 45 IsActive: true Camera Arm Component: - Arm Pitch: 0 - Arm Yaw: 0 - Arm Length: 1 + Arm Pitch: 45 + Arm Yaw: -90 + Arm Length: 3 Look At Camera Origin: true - Target Offset: {x: 0, y: 0, z: 0} + Target Offset: {x: 0, y: 0.75, z: 0} Camera Collision: true IsActive: true Scripts: - Type: SHADE_Scripting.ThirdPersonCamera Enabled: true - armLength: 2 - turnSpeedPitch: 0.300000012 - turnSpeedYaw: 0.5 + armLength: 3 + turnSpeedPitch: 0.200000003 + turnSpeedYaw: 0.400000006 inverseXControls: true - inverseYControls: true + inverseYControls: false pitchUpperClamp: 45 pitchLowerClamp: 5 - EID: 65731 @@ -5244,7 +5039,7 @@ IsActive: true Scripts: ~ - EID: 464 - Name: Canvas + Name: StealFoodCanvas IsActive: true NumberOfChildren: 1 Components: @@ -5277,7 +5072,7 @@ - Type: SHADE_Scripting.UI.StealFoodPopUp Enabled: true popInDuration: 0.5 - popOutDuration: 0.5 + popOutDuration: 0.075000003 stayDuration: 1 rotationAmt: 1800 scaleAmtX: 538 @@ -5289,4 +5084,394 @@ Components: ~ Scripts: - Type: SHADE_Scripting.UI.TweenManager - Enabled: true \ No newline at end of file + Enabled: true +- EID: 461 + Name: CameraPoints + IsActive: true + NumberOfChildren: 3 + Components: ~ + Scripts: + - Type: SHADE_Scripting.UI.PreviewLevel + Enabled: true + endPoint1: [-5.5, 1.5, -2] + endPoint2: [1, 1.5, -7.5] + endPoint3: [2.5, 1.5, -3] + playerCamera: 65730 + gameplayCanvas: 459 + duration: 3 +- EID: 453 + Name: PreviewLevel1 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -7.5, y: 1.5, z: -2} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Camera Component: + Position: {x: -5.5, y: 1.5, z: -2} + Pitch: 0 + Yaw: 0 + Roll: 0 + Width: 1920 + Near: 0.00999999978 + Far: 10000 + Perspective: true + FOV: 90 + IsActive: true + Scripts: ~ +- EID: 452 + Name: PreviewLevel2 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.5, y: 1.5, z: -7.5} + Rotate: {x: 0, y: -3.14159274, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Camera Component: + Position: {x: -0.24528563, y: 1.5, z: -7.5} + Pitch: 0 + Yaw: -180 + Roll: 0 + Width: 1920 + Near: 0.00999999978 + Far: 10000 + Perspective: true + FOV: 90 + IsActive: true + Scripts: ~ +- EID: 451 + Name: PreviewLevel3 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.5, y: 1.5, z: -7.5} + Rotate: {x: 0, y: 4.71238899, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Camera Component: + Position: {x: 2.5, y: 1.5, z: -7.5} + Pitch: 0 + Yaw: 270 + Roll: 0 + Width: 1920 + Near: 0.00999999978 + Far: 10000 + Perspective: true + FOV: 90 + IsActive: true + Scripts: ~ +- EID: 458 + Name: PauseCanvas + IsActive: false + NumberOfChildren: 4 + Components: + Canvas Component: + Canvas Width: 1920 + Canvas Height: 1080 + Scale by canvas width: false + IsActive: false + Scripts: ~ +- EID: 457 + Name: ResumeButton + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 100, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 400, y: 100, z: 500} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 129340704 + IsActive: true + Button Component: + Default Texture: 63979907 + Hovered Texture: 51379325 + Clicked Texture: 66788278 + IsActive: true + UI Component: + Canvas ID: 458 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.ButtonFX + Enabled: true + onHoverEnterSound: Empty + onHoverExitSound: Empty + onClickSound: event:/UI/mouse_down_element + onReleaseSound: Empty + hoverScale: 1.10000002 + clickScale: 0.899999976 +- EID: 456 + Name: QuitButton + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: -300, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 400, y: 100, z: 500} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 129340704 + IsActive: true + Button Component: + Default Texture: 61602036 + Hovered Texture: 58910810 + Clicked Texture: 57786063 + IsActive: true + UI Component: + Canvas ID: 458 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.ButtonFX + Enabled: true + onHoverEnterSound: Empty + onHoverExitSound: Empty + onClickSound: event:/UI/mouse_down_element + onReleaseSound: Empty + hoverScale: 1.10000002 + clickScale: 0.899999976 +- EID: 455 + Name: RetryButton + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: -100, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 400, y: 100, z: 500} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 129340704 + IsActive: true + Button Component: + Default Texture: 64806384 + Hovered Texture: 58347825 + Clicked Texture: 63234380 + IsActive: true + UI Component: + Canvas ID: 458 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.ButtonFX + Enabled: true + onHoverEnterSound: Empty + onHoverExitSound: Empty + onClickSound: event:/UI/mouse_down_element + onReleaseSound: Empty + hoverScale: 1.10000002 + clickScale: 0.899999976 +- EID: 454 + Name: GamePauseText + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + 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: 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 + Hovered: false + Clicked: false + IsActive: true + Scripts: ~ +- EID: 450 + Name: TransitionCanvas + IsActive: true + NumberOfChildren: 1 + Components: + Canvas Component: + Canvas Width: 1920 + Canvas Height: 1080 + Scale by canvas width: false + IsActive: true + Scripts: ~ +- EID: 65982 + Name: Transition + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0.100000001} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 2500, y: 1080, z: 1} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 120016136 + IsActive: true + UI Component: + Canvas ID: 450 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.SceneFadeInOut + Enabled: true + alphaValue: 1 + fadeInTime: 0.5 + 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 47b32e34..d068f3ca 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 @@ -164,57 +164,6 @@ highlightSpeed: 300 highlightThickness: 250 highlightLowerClamp: 0.25 -- EID: 156 - Name: Mesh_Meat - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: 0.461924851, y: 0.988175511, z: -0.383091867} - Rotate: {x: -0, y: 0, z: -0} - Scale: {x: 1, y: 1, z: 1} - IsActive: true - Renderable Component: - Mesh: 136892700 - Material: 122370915 - IsActive: true - RigidBody Component: - Type: Dynamic - Drag: 0.00999999978 - Angular Drag: 0.100000001 - Use Gravity: true - Interpolate: false - Sleeping Enabled: true - Freeze Position X: false - Freeze Position Y: false - Freeze Position Z: false - Freeze Rotation X: false - Freeze Rotation Y: false - Freeze Rotation Z: false - IsActive: true - Collider Component: - Colliders: - - Is Trigger: false - Collision Tag: 2 - Type: Box - Half Extents: {x: 0.300000012, y: 0.300000012, z: 0.300000012} - Friction: 0.400000006 - Bounciness: 0 - Density: 1 - Position Offset: {x: 0, y: 0, z: 0} - Rotation Offset: {x: 0, y: 0, z: 0} - IsActive: true - Scripts: - - Type: Item - Enabled: true - Score: 50 - currCategory: 1 - density: 1 - dontReturn: false - soundDistance: 10 - highlightSpeed: 300 - highlightThickness: 250 - highlightLowerClamp: 0.25 - EID: 155 Name: Mesh_Cheese IsActive: true @@ -264,7 +213,7 @@ dontReturn: false soundDistance: 10 highlightSpeed: 300 - highlightThickness: 250 + highlightThickness: 100 highlightLowerClamp: 0.25 - EID: 154 Name: Mesh_Cheese @@ -315,7 +264,7 @@ dontReturn: false soundDistance: 10 highlightSpeed: 300 - highlightThickness: 250 + highlightThickness: 100 highlightLowerClamp: 0.25 - EID: 65778 Name: Mesh_Apple @@ -476,8 +425,8 @@ NumberOfChildren: 4 Components: Transform Component: - Translate: {x: 3.11708331, y: 0.333341181, z: 6.14019775} - Rotate: {x: 0, y: 0, z: 0} + Translate: {x: 0.199520111, y: 1.25556076, z: 1.23466492} + Rotate: {x: -0, y: 0, z: -0} Scale: {x: 0.999979734, y: 1, z: 0.999979734} IsActive: true Renderable Component: @@ -515,6 +464,8 @@ Enabled: true threshHold: 0.5 ignoreRaccoon: true + breakClipHandlerName: SFXEggBreak144 + breakClipPath: event:/Props/impact_egg - Type: Item Enabled: true Score: 10 @@ -942,7 +893,7 @@ dontReturn: false soundDistance: 10 highlightSpeed: 300 - highlightThickness: 250 + highlightThickness: 100 highlightLowerClamp: 0.25 - EID: 475 Name: Mesh_Meat @@ -1503,7 +1454,7 @@ dontReturn: false soundDistance: 10 highlightSpeed: 300 - highlightThickness: 250 + highlightThickness: 100 highlightLowerClamp: 0.25 - EID: 485 Name: Mesh_Apple @@ -1664,8 +1615,8 @@ NumberOfChildren: 5 Components: Transform Component: - Translate: {x: 1.65356398, y: 0.333341181, z: 5.9183445} - Rotate: {x: 0, y: 0, z: 0} + Translate: {x: -3.26610065, y: 1.34320831, z: 4.47019911} + Rotate: {x: -0, y: 0, z: -0} Scale: {x: 0.999979734, y: 1, z: 0.999979734} IsActive: true Renderable Component: @@ -1703,6 +1654,8 @@ Enabled: true threshHold: 4 ignoreRaccoon: true + breakClipHandlerName: SFXWatermelonBreak464 + breakClipPath: event:/Props/impact_watermelon_break - Type: Item Enabled: true Score: 500 @@ -1746,7 +1699,7 @@ - Is Trigger: false Collision Tag: 2 Type: Box - Half Extents: {x: 0.400000006, y: 0.300000012, z: 0.300000012} + Half Extents: {x: 0.449999988, y: 0.349999994, z: 0.349999994} Friction: 0.400000006 Bounciness: 0 Density: 1 @@ -1797,7 +1750,7 @@ - Is Trigger: false Collision Tag: 2 Type: Box - Half Extents: {x: 0.300000012, y: 0.200000003, z: 0.200000003} + Half Extents: {x: 0.349999994, y: 0.25, z: 0.25} Friction: 0.400000006 Bounciness: 0 Density: 1 @@ -1848,7 +1801,7 @@ - Is Trigger: false Collision Tag: 2 Type: Box - Half Extents: {x: 0.200000003, y: 0.0799999982, z: 0.200000003} + Half Extents: {x: 0.25, y: 0.200000003, z: 0.25} Friction: 0.400000006 Bounciness: 0 Density: 1 @@ -1899,7 +1852,7 @@ - Is Trigger: false Collision Tag: 2 Type: Box - Half Extents: {x: 0.200000003, y: 0.0500000007, z: 0.200000003} + Half Extents: {x: 0.25, y: 0.100000001, z: 0.25} Friction: 0.400000006 Bounciness: 0 Density: 1 @@ -1950,7 +1903,7 @@ - Is Trigger: false Collision Tag: 2 Type: Box - Half Extents: {x: 0.25, y: 0.0500000007, z: 0.200000003} + Half Extents: {x: 0.300000012, y: 0.100000001, z: 0.25} Friction: 0.400000006 Bounciness: 0 Density: 1 @@ -1968,18 +1921,18 @@ highlightSpeed: 300 highlightThickness: 250 highlightLowerClamp: 0.25 -- EID: 176 - Name: Mesh_Apple +- EID: 131228 + Name: Watermelon IsActive: true - NumberOfChildren: 0 + NumberOfChildren: 5 Components: Transform Component: - Translate: {x: 1.33684826, y: 0.0771836638, z: 6.68176699} - Rotate: {x: -0, y: 0, z: -0} - Scale: {x: 1, y: 1, z: 1} + Translate: {x: 0.623170555, y: 1.0488801, z: -0.65238905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} IsActive: true Renderable Component: - Mesh: 144128170 + Mesh: 134305891 Material: 122370915 IsActive: true RigidBody Component: @@ -2000,8 +1953,8 @@ Colliders: - Is Trigger: false Collision Tag: 2 - Type: Box - Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Type: Sphere + Radius: 0.5 Friction: 0.400000006 Bounciness: 0 Density: 1 @@ -2009,30 +1962,36 @@ Rotation Offset: {x: 0, y: 0, z: 0} IsActive: true Scripts: + - Type: Breakable + Enabled: true + threshHold: 4 + ignoreRaccoon: true + breakClipHandlerName: SFXWatermelonBreak156 + breakClipPath: event:/Props/impact_watermelon_break - Type: Item Enabled: true - Score: 10 - currCategory: 0 + Score: 500 + currCategory: 2 density: 1 dontReturn: false soundDistance: 10 highlightSpeed: 300 highlightThickness: 250 highlightLowerClamp: 0.25 -- EID: 175 - Name: Mesh_Meat - IsActive: true +- EID: 66068 + Name: Piece1 + IsActive: false NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 3.2909081, y: 0.179948017, z: 6.6051631} - Rotate: {x: -0, y: 0, z: -0} + Translate: {x: 0.0218036175, y: 5.38527966e-05, z: 0.202852726} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} Scale: {x: 1, y: 1, z: 1} - IsActive: true + IsActive: false Renderable Component: - Mesh: 136892700 + Mesh: 144023586 Material: 122370915 - IsActive: true + IsActive: false RigidBody Component: Type: Dynamic Drag: 0.00999999978 @@ -2046,30 +2005,676 @@ Freeze Rotation X: false Freeze Rotation Y: false Freeze Rotation Z: false - IsActive: true + IsActive: false Collider Component: Colliders: - Is Trigger: false Collision Tag: 2 Type: Box - Half Extents: {x: 0.300000012, y: 0.300000012, z: 0.300000012} + Half Extents: {x: 0.449999988, y: 0.349999994, z: 0.349999994} Friction: 0.400000006 Bounciness: 0 Density: 1 Position Offset: {x: 0, y: 0, z: 0} - Rotation Offset: {x: 0, y: 0, z: 0} - IsActive: true + Rotation Offset: {x: 0.164060935, y: 0, z: 0} + IsActive: false Scripts: - Type: Item Enabled: true Score: 50 currCategory: 1 - density: 1 + density: 3 dontReturn: false soundDistance: 10 highlightSpeed: 300 highlightThickness: 250 highlightLowerClamp: 0.25 +- EID: 66067 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0812162161, y: 0.0825212598, z: -0.0991339684} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 142132679 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.349999994, y: 0.25, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.34906584} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 3 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 66066 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0350502729, y: -0.210244894, z: -0.0336794853} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 138231239 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.25, y: 0.200000003, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.261799395} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 3 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 66065 + Name: Piece4 + IsActive: false + 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} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 135293480 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.25, y: 0.100000001, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -1.04719758} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 3 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 66064 + Name: Piece5 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.129600644, y: 0.219047099, z: 0.0484838486} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146157335 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.100000001, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0.436332315} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 3 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 538 + Name: Egg + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: -0.272738755, y: 1.24863148, z: -4.62824583} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 147457317 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Sphere + Radius: 0.200000003 + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 0.5 + ignoreRaccoon: true + breakClipHandlerName: SFXEggBreak538 + breakClipPath: event:/Props/impact_egg + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 2 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 539 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0224030018, y: 0.0607728958, z: -0.00627422333} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 134900190 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0.164060935, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 540 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.00627422333, y: 0.0337567925, z: -0.00243234634} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146271645 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.34906584} + IsActive: false + Scripts: ~ +- EID: 541 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0166685581, y: -0.0367090404, z: 0.0114421844} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 135945648 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.261799395} + IsActive: false + Scripts: ~ +- EID: 542 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.020128727, y: -0.0155199468, z: -0.0045747757} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 141722646 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -1.04719758} + IsActive: false + Scripts: ~ +- EID: 66079 + Name: Egg + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: -1.86591768, y: 0.84575963, z: -1.40127254} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 147457317 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Sphere + Radius: 0.200000003 + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 0.5 + ignoreRaccoon: true + breakClipHandlerName: SFXEggBreak543 + breakClipPath: event:/Props/impact_egg + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 2 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 66083 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0224030018, y: 0.0607728958, z: -0.00627422333} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 134900190 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0.164060935, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 66082 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.00627422333, y: 0.0337567925, z: -0.00243234634} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146271645 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.34906584} + IsActive: false + Scripts: ~ +- EID: 66081 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0166685581, y: -0.0367090404, z: 0.0114421844} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 135945648 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.261799395} + IsActive: false + Scripts: ~ +- EID: 66080 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.020128727, y: -0.0155199468, z: -0.0045747757} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 141722646 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -1.04719758} + IsActive: false + Scripts: ~ - EID: 15 Name: ====ScoreZonePool==== IsActive: true @@ -2128,7 +2733,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 4 Type: Box Half Extents: {x: 1.79999995, y: 1, z: 0.200000003} Friction: 0.400000006 @@ -2190,7 +2795,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 4 Type: Box Half Extents: {x: 1, y: 1.5, z: 0.200000003} Friction: 0.400000006 @@ -2208,7 +2813,7 @@ Scripts: - Type: GameManager Enabled: true - winScene: 92009475 + winScene: 88928066 loseScene: 91685359 currGameState: 0 totalItemCount: 0 @@ -2223,76 +2828,153 @@ - Type: PauseMenu Enabled: true resumeBtn: 8 - retryBtn: 461 + retryBtn: 458 quitBtn: 0 - gamePauseText: 11 canvas: 10 - EID: 199 - Name: =====Text==== + Name: Gameplay Canvas IsActive: true - NumberOfChildren: 4 - Components: ~ + NumberOfChildren: 3 + Components: + Canvas Component: + Canvas Width: 1920 + Canvas Height: 1080 + Scale by canvas width: false + IsActive: true Scripts: ~ - EID: 237 - Name: Score + 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: 199 + Hovered: false + Clicked: false + IsActive: true + Scripts: ~ +- EID: 521 + Name: Score BG IsActive: true NumberOfChildren: 0 Components: Transform Component: - Translate: {x: -800, y: 400, z: 0} + Translate: {x: 0.300000012, y: 0.600000024, z: 0.98999995} Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 60, y: 60, z: 60} + Scale: {x: 3.45600009, y: 2, z: 1} IsActive: true - Text Renderer Component: - Text: My name is Brandon. - Font: 176667660 + Renderable Component: + Mesh: 141771688 + Material: 127527215 + IsActive: true + UI Component: + Canvas ID: 199 + Hovered: false + Clicked: false 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} + 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 + Hovered: false + Clicked: false IsActive: true Scripts: ~ - EID: 139 - Name: Multiplier + 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: 199 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.MultiplierTextFx + Enabled: true + maxSize: 1 + minSize: 0.300000012 + minAlpha: 0.300000012 +- EID: 519 + Name: Multiplier BG IsActive: true NumberOfChildren: 0 Components: Transform Component: - Translate: {x: -800, y: 300, z: 0} + Translate: {x: 0.400000006, y: 0.400000006, z: 0.98999995} Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 60, y: 60, z: 60} + Scale: {x: 4.26499987, y: 2, z: 1} IsActive: true - Text Renderer Component: - Text: TEST - Font: 176667660 + Renderable Component: + Mesh: 141771688 + Material: 133784677 IsActive: true - Scripts: ~ -- EID: 11 - Name: GamePause - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: -250, y: 300, z: 0} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 100, y: 100, z: 100} + UI Component: + Canvas ID: 199 + Hovered: false + Clicked: false IsActive: true - Text Renderer Component: - Text: Game Pause - Font: 176667660 - IsActive: false - Scripts: ~ + Scripts: + - Type: FixRotation + Enabled: true - EID: 198 Name: ====Raccoon==== IsActive: true @@ -2305,8 +2987,8 @@ NumberOfChildren: 5 Components: Transform Component: - Translate: {x: 2.35245037, y: 0.38365531, z: 7.10571432} - Rotate: {x: 0, y: 0.326376587, z: 0.0698131472} + Translate: {x: 2.35245037, y: 0.0613552481, z: 7.10571432} + Rotate: {x: -0, y: 3.14159274, z: -0} Scale: {x: 0.999999881, y: 1, z: 0.999999881} IsActive: true Renderable Component: @@ -2321,7 +3003,7 @@ Interpolate: false Sleeping Enabled: true Freeze Position X: false - Freeze Position Y: true + Freeze Position Y: false Freeze Position Z: false Freeze Rotation X: true Freeze Rotation Y: true @@ -2355,6 +3037,8 @@ lightMultiper: 0.899999976 mediumMultiper: 0.699999988 heavyMultiper: 0.5 + silhouettePlayer: 462 + silhouetteBag: 465 - Type: PickAndThrow Enabled: true throwForce: [10, 8, 10] @@ -2362,8 +3046,6 @@ delayTimer: 1 aimingLength: 1 throwItem: false - silhouettePlayer: 462 - silhouetteBag: 465 rayDistance: 0.75 rayHeight: 0.100000001 aimingFOV: 50 @@ -2386,7 +3068,7 @@ Components: Transform Component: Translate: {x: 0, y: -5.96046448e-08, z: 0} - Rotate: {x: 0, y: 5.95680904, z: -0.0698131248} + Rotate: {x: 0, y: 3.14159274, z: 2.23517329e-08} Scale: {x: 1, y: 1, z: 1} IsActive: true Camera Component: @@ -2394,14 +3076,14 @@ Pitch: 0 Yaw: 360 Roll: 1.28065994e-06 - Width: 1055 + Width: 1920 Near: 0.00999999978 Far: 10000 Perspective: true FOV: 45 IsActive: true Camera Arm Component: - Arm Pitch: 0 + Arm Pitch: 20 Arm Yaw: 0 Arm Length: 3 Look At Camera Origin: true @@ -2414,7 +3096,7 @@ armLength: 3 turnSpeedPitch: 0.200000003 turnSpeedYaw: 0.400000006 - inverseXControls: false + inverseXControls: true inverseYControls: false pitchUpperClamp: 45 pitchLowerClamp: 5 @@ -2525,6 +3207,8 @@ Enabled: true threshHold: 0.100000001 ignoreRaccoon: false + breakClipHandlerName: SFXBreak1 + breakClipPath: event:/Props/impact_break - EID: 196 Name: Piece1 IsActive: false @@ -2734,6 +3418,8 @@ Enabled: true threshHold: 0.100000001 ignoreRaccoon: false + breakClipHandlerName: SFXBreak171 + breakClipPath: event:/Props/impact_break - EID: 65703 Name: Piece1 IsActive: false @@ -2943,6 +3629,8 @@ Enabled: true threshHold: 0.100000001 ignoreRaccoon: false + breakClipHandlerName: SFXBreak150 + breakClipPath: event:/Props/impact_break - EID: 149 Name: Piece1 IsActive: false @@ -3152,6 +3840,8 @@ Enabled: true threshHold: 0.100000001 ignoreRaccoon: false + breakClipHandlerName: SFXBreak145 + breakClipPath: event:/Props/impact_break - EID: 488 Name: Piece1 IsActive: false @@ -3361,6 +4051,8 @@ Enabled: true threshHold: 0.100000001 ignoreRaccoon: false + breakClipHandlerName: SFXBreak492 + breakClipPath: event:/Props/impact_break - EID: 493 Name: Piece1 IsActive: false @@ -3570,6 +4262,8 @@ Enabled: true threshHold: 0.100000001 ignoreRaccoon: false + breakClipHandlerName: SFXBreak497 + breakClipPath: event:/Props/impact_break - EID: 498 Name: Piece1 IsActive: false @@ -3779,6 +4473,8 @@ Enabled: true threshHold: 0.100000001 ignoreRaccoon: false + breakClipHandlerName: SFXBreak502 + breakClipPath: event:/Props/impact_break - EID: 503 Name: Piece1 IsActive: false @@ -3988,6 +4684,8 @@ Enabled: true threshHold: 0.100000001 ignoreRaccoon: false + breakClipHandlerName: SFXBreak507 + breakClipPath: event:/Props/impact_break - EID: 508 Name: Piece1 IsActive: false @@ -4197,6 +4895,8 @@ Enabled: true threshHold: 0.100000001 ignoreRaccoon: false + breakClipHandlerName: SFXBreak512 + breakClipPath: event:/Props/impact_break - EID: 513 Name: Piece1 IsActive: false @@ -4406,6 +5106,8 @@ Enabled: true threshHold: 0.100000001 ignoreRaccoon: false + breakClipHandlerName: SFXBreak517 + breakClipPath: event:/Props/impact_break - EID: 518 Name: Piece1 IsActive: false @@ -4447,7 +5149,7 @@ Rotation Offset: {x: 0, y: 0, z: 0} IsActive: false Scripts: ~ -- EID: 519 +- EID: 461 Name: Piece2 IsActive: false NumberOfChildren: 0 @@ -4488,7 +5190,7 @@ Rotation Offset: {x: 0, y: 0, z: 0} IsActive: false Scripts: ~ -- EID: 520 +- EID: 460 Name: Piece3 IsActive: false NumberOfChildren: 0 @@ -4529,7 +5231,7 @@ Rotation Offset: {x: 0, y: 0, z: 0} IsActive: false Scripts: ~ -- EID: 521 +- EID: 459 Name: Piece4 IsActive: false NumberOfChildren: 0 @@ -4577,7 +5279,7 @@ Components: ~ Scripts: ~ - EID: 165 - Name: 1 + Name: 0 IsActive: true NumberOfChildren: 0 Components: @@ -4588,7 +5290,7 @@ IsActive: true Scripts: ~ - EID: 164 - Name: 2 + Name: 1 IsActive: true NumberOfChildren: 0 Components: @@ -4599,7 +5301,7 @@ IsActive: true Scripts: ~ - EID: 163 - Name: 3 + Name: 2 IsActive: true NumberOfChildren: 0 Components: @@ -4610,7 +5312,7 @@ IsActive: true Scripts: ~ - EID: 162 - Name: 4 + Name: 3 IsActive: true NumberOfChildren: 0 Components: @@ -4621,7 +5323,7 @@ IsActive: true Scripts: ~ - EID: 161 - Name: 5 + Name: 4 IsActive: true NumberOfChildren: 0 Components: @@ -4632,7 +5334,7 @@ IsActive: true Scripts: ~ - EID: 160 - Name: 6 + Name: 5 IsActive: true NumberOfChildren: 0 Components: @@ -4643,7 +5345,7 @@ IsActive: true Scripts: ~ - EID: 159 - Name: 7 + Name: 6 IsActive: true NumberOfChildren: 0 Components: @@ -4659,7 +5361,7 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 0, 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 @@ -4672,7 +5374,7 @@ Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Interpolate: true + Interpolate: false Sleeping Enabled: true Freeze Position X: false Freeze Position Y: false @@ -4686,7 +5388,7 @@ - Is Trigger: false Collision Tag: 5 Type: Box - Half Extents: {x: 1, y: 1.79999995, z: 0.400000006} + Half Extents: {x: 0.600000024, y: 1.79999995, z: 0.400000006} Friction: 0.400000006 Bounciness: 0 Density: 1 @@ -4697,101 +5399,32 @@ - Type: Homeowner1 Enabled: true waypointsPool: 166 - patrolSpeed: 3 - chaseSpeed: 6 + startWaypoint: 162 + patrolSpeed: 0.75 + chaseSpeed: 2 turningSpeed: 5 sightDistance: 8 eyeOffset: [0, 1.64999998, 0] - distanceToCapture: 0.5 + distanceToCapture: 0.800000012 captureTime: 0.5 footstepSFXIntervalMultiplier: 0.5 -- EID: 12 - Name: Mesh_Meat - IsActive: false - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: 0.964969039, y: 0.103873327, z: 6.05876541} - Rotate: {x: -0, y: 0, z: -0} - Scale: {x: 1, y: 1, z: 1} - IsActive: false - Renderable Component: - Mesh: 136892700 - Material: 122370915 - IsActive: false - RigidBody Component: - Type: Dynamic - Drag: 0.00999999978 - Angular Drag: 0.100000001 - Use Gravity: true - Interpolate: false - Sleeping Enabled: true - Freeze Position X: false - Freeze Position Y: false - Freeze Position Z: false - Freeze Rotation X: false - Freeze Rotation Y: false - Freeze Rotation Z: false - IsActive: false - Collider Component: - Colliders: - - Is Trigger: false - Collision Tag: 2 - Type: Box - Half Extents: {x: 0.300000012, y: 0.300000012, z: 0.300000012} - Friction: 0.400000006 - Bounciness: 0 - Density: 1 - Position Offset: {x: 0, y: 0, z: 0} - Rotation Offset: {x: 0, y: 0, z: 0} - IsActive: false - Scripts: - - Type: Item - Enabled: true - Score: 50 - currCategory: 1 - density: 1 - dontReturn: false - soundDistance: 10 - highlightSpeed: 300 - highlightThickness: 250 - highlightLowerClamp: 0.25 -- EID: 16 - Name: JumpPad - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: 3.52692485, y: 0, z: 6.85981083} - Rotate: {x: -0, y: 0, z: -0} - Scale: {x: 1, y: 1, z: 1} - IsActive: true - Collider Component: - Colliders: - - Is Trigger: false - Collision Tag: 1 - Type: Box - Half Extents: {x: 1, y: 0.25, z: 1} - Friction: 0.400000006 - Bounciness: 0 - Density: 1 - Position Offset: {x: 0, y: 0, z: 0} - Rotation Offset: {x: 0, y: 0, z: 0} - IsActive: true - Scripts: - - Type: JumpPad - Enabled: true - EID: 10 - Name: Canvas - IsActive: true - NumberOfChildren: 3 + Name: Pause Canvas + IsActive: false + NumberOfChildren: 4 Components: Canvas Component: Canvas Width: 1920 Canvas Height: 1080 Scale by canvas width: false - IsActive: true - Scripts: ~ + IsActive: false + Scripts: + - Type: PauseMenu + Enabled: true + resumeBtn: 8 + retryBtn: 458 + quitBtn: 0 + canvas: 10 - EID: 8 Name: ResumeButton IsActive: true @@ -4800,23 +5433,31 @@ 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 Material: 129340704 IsActive: true Button Component: - Default Texture: 52901020 - Hovered Texture: 62235279 - Clicked Texture: 64722619 + Default Texture: 63979907 + Hovered Texture: 51379325 + Clicked Texture: 66788278 IsActive: true UI Component: Canvas ID: 10 Hovered: false Clicked: false IsActive: true - Scripts: ~ + Scripts: + - Type: SHADE_Scripting.UI.ButtonFX + Enabled: true + onHoverEnterSound: Empty + onHoverExitSound: Empty + onClickSound: event:/UI/mouse_down_element + onReleaseSound: Empty + hoverScale: 1.10000002 + clickScale: 0.899999976 - EID: 0 Name: QuitButton IsActive: true @@ -4824,25 +5465,35 @@ Components: Transform Component: Translate: {x: 0, y: -300, z: 0} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 300, y: 200, z: 500} + Rotate: {x: -3.74789906, y: 1.43110418, z: 2.63486958} + Scale: {x: 400, y: 100, z: 500} IsActive: true Renderable Component: Mesh: 141771688 Material: 129340704 IsActive: true Button Component: - Default Texture: 66477839 - Hovered Texture: 65045286 - Clicked Texture: 58607560 + Default Texture: 61602036 + Hovered Texture: 58910810 + Clicked Texture: 57786063 IsActive: true UI Component: Canvas ID: 10 Hovered: false Clicked: false IsActive: true - Scripts: ~ -- EID: 461 + Scripts: + - Type: SHADE_Scripting.UI.ButtonFX + Enabled: true + onHoverEnterSound: Empty + onHoverExitSound: Empty + onClickSound: event:/UI/mouse_down_element + onReleaseSound: Empty + hoverScale: 1.10000002 + clickScale: 0.899999976 + - Type: FixRotation + Enabled: true +- EID: 458 Name: RetryButton IsActive: true NumberOfChildren: 0 @@ -4850,22 +5501,52 @@ 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 Material: 129340704 IsActive: true Button Component: - Default Texture: 55782622 - Hovered Texture: 58972174 - Clicked Texture: 55224464 + Default Texture: 64806384 + Hovered Texture: 58347825 + Clicked Texture: 63234380 IsActive: true UI Component: Canvas ID: 10 Hovered: false Clicked: false IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.ButtonFX + Enabled: true + onHoverEnterSound: Empty + onHoverExitSound: Empty + onClickSound: event:/UI/mouse_down_element + onReleaseSound: Empty + hoverScale: 1.10000002 + clickScale: 0.899999976 +- EID: 11 + Name: GamePause + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + 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: 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 + Hovered: false + Clicked: false + IsActive: true Scripts: ~ - EID: 19 Name: ====EnvironmentMaster==== @@ -5345,11 +6026,11 @@ - Is Trigger: false Collision Tag: 0 Type: Box - Half Extents: {x: 10, y: 0.0500000007, z: 18} + Half Extents: {x: 10, y: 1, z: 18} Friction: 0.400000006 Bounciness: 0 Density: 1 - Position Offset: {x: 0, y: -0.00999999978, z: 0} + Position Offset: {x: 0, y: -0.5, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} IsActive: true Scripts: ~ @@ -7467,7 +8148,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 1 Type: Box Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} Friction: 0.400000006 @@ -7476,7 +8157,7 @@ Position Offset: {x: 0, y: 0.219999999, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 1 Type: Box Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} Friction: 0.400000006 @@ -8233,7 +8914,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 1 Type: Box Half Extents: {x: 0.400000006, y: 1.29999995, z: 1} Friction: 0.400000006 @@ -8316,7 +8997,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 1 Type: Box Half Extents: {x: 0.699999988, y: 0.0500000007, z: 1.20000005} Friction: 0.400000006 @@ -8325,7 +9006,7 @@ Position Offset: {x: 0, y: 0.77700001, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 1 Type: Box Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} Friction: 0.400000006 @@ -8334,7 +9015,7 @@ Position Offset: {x: -0.449999988, y: 0.400000006, z: -0.850000024} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 1 Type: Box Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} Friction: 0.400000006 @@ -8343,7 +9024,7 @@ Position Offset: {x: -0.449999988, y: 0.400000006, z: 0.850000024} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 1 Type: Box Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} Friction: 0.400000006 @@ -8352,7 +9033,7 @@ Position Offset: {x: 0.449999988, y: 0.400000006, z: 0.850000024} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 1 Type: Box Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} Friction: 0.400000006 @@ -8379,7 +9060,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 1 Type: Box Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} Friction: 0.400000006 @@ -8388,7 +9069,7 @@ Position Offset: {x: 0, y: 0.219999999, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 1 Type: Box Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} Friction: 0.400000006 @@ -8415,7 +9096,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 1 Type: Box Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} Friction: 0.400000006 @@ -8424,7 +9105,7 @@ Position Offset: {x: 0, y: 0.219999999, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 1 Type: Box Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} Friction: 0.400000006 @@ -8451,7 +9132,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 1 Type: Box Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} Friction: 0.400000006 @@ -8460,7 +9141,7 @@ Position Offset: {x: 0, y: 0.219999999, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 1 Type: Box Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} Friction: 0.400000006 @@ -8487,7 +9168,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 1 Type: Box Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} Friction: 0.400000006 @@ -8496,7 +9177,7 @@ Position Offset: {x: 0, y: 0.219999999, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 1 Type: Box Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} Friction: 0.400000006 @@ -9862,7 +10543,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 1 Type: Box Half Extents: {x: 0.899999976, y: 0.100000001, z: 1.89999998} Friction: 0.400000006 @@ -9961,7 +10642,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 1 Type: Box Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} Friction: 0.400000006 @@ -9970,7 +10651,7 @@ Position Offset: {x: 0, y: 0.219999999, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 1 Type: Box Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} Friction: 0.400000006 @@ -10089,7 +10770,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 1 Type: Box Half Extents: {x: 0.899999976, y: 0.100000001, z: 1.89999998} Friction: 0.400000006 @@ -10280,7 +10961,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 1 Type: Box Half Extents: {x: 0.899999976, y: 0.100000001, z: 1.89999998} Friction: 0.400000006 @@ -10379,7 +11060,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 1 Type: Box Half Extents: {x: 0.699999988, y: 0.0500000007, z: 1.20000005} Friction: 0.400000006 @@ -10388,7 +11069,7 @@ Position Offset: {x: 0, y: 0.77700001, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 1 Type: Box Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} Friction: 0.400000006 @@ -10397,7 +11078,7 @@ Position Offset: {x: -0.25, y: 0.400000006, z: -0.550000012} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 1 Type: Box Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} Friction: 0.400000006 @@ -10406,7 +11087,7 @@ Position Offset: {x: -0.25, y: 0.400000006, z: 0.550000012} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 1 Type: Box Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} Friction: 0.400000006 @@ -10415,7 +11096,7 @@ Position Offset: {x: 0.25, y: 0.400000006, z: 0.550000012} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 1 Type: Box Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} Friction: 0.400000006 @@ -10442,7 +11123,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 1 Type: Box Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} Friction: 0.400000006 @@ -10451,7 +11132,7 @@ Position Offset: {x: 0, y: 0.219999999, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 1 Type: Box Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} Friction: 0.400000006 @@ -10589,7 +11270,7 @@ Rotation Offset: {x: 0, y: 0, z: 0} IsActive: true Scripts: ~ -- EID: 460 +- EID: 457 Name: Exterior IsActive: true NumberOfChildren: 5 @@ -13253,7 +13934,7 @@ Material: 131956078 IsActive: true Scripts: ~ -- EID: 457 +- EID: 174 Name: Exterior_Bush02 IsActive: true NumberOfChildren: 0 @@ -13268,7 +13949,7 @@ Material: 131956078 IsActive: true Scripts: ~ -- EID: 458 +- EID: 173 Name: Exterior_Bush01 IsActive: true NumberOfChildren: 0 @@ -13283,7 +13964,7 @@ Material: 131956078 IsActive: true Scripts: ~ -- EID: 459 +- EID: 172 Name: Exterior_Bush02 IsActive: true NumberOfChildren: 0 @@ -13297,4 +13978,175 @@ Mesh: 136373407 Material: 131956078 IsActive: true + Scripts: ~ +- EID: 548 + Name: TweenManager + IsActive: true + NumberOfChildren: 0 + Components: ~ + Scripts: + - Type: SHADE_Scripting.UI.TweenManager + Enabled: true +- EID: 549 + Name: StealFoodCanvas + IsActive: true + NumberOfChildren: 1 + Components: + Canvas Component: + Canvas Width: 1920 + Canvas Height: 1080 + Scale by canvas width: false + IsActive: true + Scripts: ~ +- EID: 550 + Name: StealFoodLogo + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0, y: 0, z: 1} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 127459277 + IsActive: true + UI Component: + Canvas ID: 549 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.StealFoodPopUp + Enabled: true + popInDuration: 0.5 + popOutDuration: 0.075000003 + stayDuration: 1 + rotationAmt: 1800 + scaleAmtX: 538 + scaleAmtY: 377 +- EID: 551 + Name: TransitionCanvas + IsActive: true + NumberOfChildren: 1 + Components: + Canvas Component: + Canvas Width: 1920 + Canvas Height: 1080 + Scale by canvas width: false + IsActive: true + Scripts: ~ +- EID: 552 + Name: Transition + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0.100000001} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 2500, y: 1080, z: 1} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 120016136 + IsActive: true + UI Component: + Canvas ID: 551 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.SceneFadeInOut + Enabled: true + alphaValue: 1 + fadeInTime: 0.5 + fadeOutTime: 0.5 +- EID: 553 + Name: TweenManager + IsActive: true + NumberOfChildren: 0 + Components: ~ + Scripts: + - Type: SHADE_Scripting.UI.TweenManager + Enabled: true +- EID: 554 + Name: CameraPoints + IsActive: true + NumberOfChildren: 3 + Components: ~ + Scripts: + - Type: SHADE_Scripting.UI.PreviewLevel + Enabled: true + endPoint1: [-3.5, 1.5, -4.5] + endPoint2: [0, 2, 4.5] + endPoint3: [1.14999998, 2.20000005, 2] + playerCamera: 4 + gameplayCanvas: 199 + duration: 3 +- EID: 555 + Name: PreviewLevel1 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -5, y: 1.5, z: -3} + Rotate: {x: 0, y: -2.3561945, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Camera Component: + Position: {x: -5.5, y: 1.5, z: -2} + Pitch: 0 + Yaw: -135 + Roll: 0 + Width: 1920 + Near: 0.00999999978 + Far: 10000 + Perspective: true + FOV: 90 + IsActive: true + Scripts: ~ +- EID: 556 + Name: PreviewLevel2 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3, y: 2, z: 4.5} + Rotate: {x: -0.5497787, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Camera Component: + Position: {x: -0.24528563, y: 1.5, z: -7.5} + Pitch: -31.5 + Yaw: 0 + Roll: 0 + Width: 1920 + Near: 0.00999999978 + Far: 10000 + Perspective: true + FOV: 90 + IsActive: true + Scripts: ~ +- EID: 557 + Name: PreviewLevel3 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.29999995, y: 2.20000005, z: -4} + Rotate: {x: -0.34906584, y: -1.57079637, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Camera Component: + Position: {x: 2.5, y: 1.5, z: -7.5} + Pitch: -20 + Yaw: -90 + Roll: 0 + Width: 1920 + Near: 0.00999999978 + Far: 10000 + Perspective: true + FOV: 90 + IsActive: true Scripts: ~ \ No newline at end of file diff --git a/Assets/Scenes/Level3.shade b/Assets/Scenes/Level3.shade index a71673a4..e7ece081 100644 --- a/Assets/Scenes/Level3.shade +++ b/Assets/Scenes/Level3.shade @@ -1,7 +1,7 @@ - EID: 0 Name: Light_Direction IsActive: true - NumberOfChildren: 2 + NumberOfChildren: 1 Components: Light Component: Position: {x: 0, y: 0, z: 0} @@ -26,20 +26,11 @@ Strength: 0.5 IsActive: true Scripts: ~ -- EID: 165 - Name: Skybox +- EID: 449 + Name: Enviroment IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: 0, y: 0, z: 0} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 18.7835312, y: 18.7835312, z: 18.7835312} - IsActive: true - Renderable Component: - Mesh: 144340823 - Material: 131956078 - IsActive: true + NumberOfChildren: 13 + Components: ~ Scripts: ~ - EID: 78 Name: GroundFloorStructure @@ -80,7 +71,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -89,7 +80,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -116,7 +107,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -125,7 +116,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -152,13 +143,13 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box - Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Half Extents: {x: 3.22600007, y: 2.20000005, z: 0.25} Friction: 0.400000006 Bounciness: 0 Density: 1 - Position Offset: {x: 0, y: 1.10000002, z: 0} + Position Offset: {x: -0.421999991, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} IsActive: true Scripts: ~ @@ -179,7 +170,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -188,7 +179,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -215,7 +206,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -224,7 +215,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -251,7 +242,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -267,9 +258,9 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 6, y: 2.20000005, z: 0.993445754} + Translate: {x: 6, y: 2.20000005, z: 0.992999971} Rotate: {x: -0, y: -1.57079601, z: 0} - Scale: {x: 0.999854147, y: 1, z: 0.999854147} + Scale: {x: 0.99981916, y: 1, z: 0.99981916} IsActive: true Renderable Component: Mesh: 150659431 @@ -278,16 +269,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 - Type: Box - Half Extents: {x: 0.400000006, y: 0.300000012, z: 1.70000005} - Friction: 0.400000006 - Bounciness: 0 - Density: 1 - Position Offset: {x: 0.300000012, y: -0.119999997, z: 0} - Rotation Offset: {x: 0, y: 0, z: 0} - - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 0.400000006, y: 0.300000012, z: 1.70000005} Friction: 0.400000006 @@ -296,7 +278,7 @@ Position Offset: {x: 0.660000026, y: -0.400000006, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 0.400000006, y: 0.300000012, z: 1.70000005} Friction: 0.400000006 @@ -305,7 +287,7 @@ Position Offset: {x: 1, y: -0.600000024, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 0.400000006, y: 0.300000012, z: 1.70000005} Friction: 0.400000006 @@ -314,7 +296,7 @@ Position Offset: {x: 1.36000001, y: -0.899999976, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 0.400000006, y: 0.300000012, z: 1.70000005} Friction: 0.400000006 @@ -323,7 +305,7 @@ Position Offset: {x: 1.70000005, y: -1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 0.400000006, y: 0.300000012, z: 1.70000005} Friction: 0.400000006 @@ -332,7 +314,7 @@ Position Offset: {x: 2.04999995, y: -1.39999998, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 0.400000006, y: 0.300000012, z: 1.70000005} Friction: 0.400000006 @@ -341,7 +323,7 @@ Position Offset: {x: 2.4000001, y: -1.64999998, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 0.400000006, y: 0.300000012, z: 1.70000005} Friction: 0.400000006 @@ -350,7 +332,7 @@ Position Offset: {x: 2.75, y: -1.86000001, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 0.400000006, y: 0.300000012, z: 1.70000005} Friction: 0.400000006 @@ -377,7 +359,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -404,7 +386,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -421,8 +403,8 @@ Components: Transform Component: Translate: {x: -1, y: 0, z: 4} - Rotate: {x: 0, y: -1.57079637, z: 0} - Scale: {x: 0.999951899, y: 1, z: 0.999951899} + Rotate: {x: -0, y: -1.57079613, z: 0} + Scale: {x: 0.99995178, y: 1, z: 0.99995178} IsActive: true Renderable Component: Mesh: 144033065 @@ -431,7 +413,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -440,7 +422,7 @@ Position Offset: {x: 0.0500000007, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -467,7 +449,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -494,7 +476,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -521,7 +503,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 1, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -538,8 +520,8 @@ Components: Transform Component: Translate: {x: 7, y: 0, z: -1} - Rotate: {x: 0, y: 3.14159274, z: 0} - Scale: {x: 0.999952376, y: 1, z: 0.999952376} + Rotate: {x: -0, y: -3.1415925, z: 0} + Scale: {x: 0.999951899, y: 1, z: 0.999951899} IsActive: true Renderable Component: Mesh: 144033065 @@ -548,7 +530,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -557,13 +539,13 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box - Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} + Half Extents: {x: 0.25, y: 2.20000005, z: 1.93700004} Friction: 0.400000006 Bounciness: 0 Density: 1 - Position Offset: {x: 0, y: 1.10000002, z: -0.449999988} + Position Offset: {x: 0.0179999992, y: 1.10000002, z: -1.04700005} Rotation Offset: {x: 0, y: 0, z: 0} IsActive: true Scripts: ~ @@ -584,7 +566,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -593,7 +575,7 @@ Position Offset: {x: 0.0500000007, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -620,7 +602,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -629,7 +611,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -656,7 +638,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -683,7 +665,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -710,9 +692,9 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box - Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Half Extents: {x: 4.05200005, y: 2.20000005, z: 0.25} Friction: 0.400000006 Bounciness: 0 Density: 1 @@ -752,7 +734,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -763,7 +745,7 @@ IsActive: true Scripts: ~ - EID: 52 - Name: GroundWindow_LargeClosed + Name: Default IsActive: true NumberOfChildren: 0 Components: @@ -806,6 +788,18 @@ Mesh: 142546138 Material: 126223465 IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.883000016, y: 1.08800006, z: 0.232999995} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.47099996, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true Scripts: ~ - EID: 55 Name: GroundWindow_LargeOpen @@ -821,6 +815,18 @@ Mesh: 141867906 Material: 126223465 IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2.13700008, y: 1.028, z: 0.324999988} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.405999988, z: 0.00899999961} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true Scripts: ~ - EID: 56 Name: GroundWindow_SmallClosed @@ -836,6 +842,18 @@ Mesh: 142546138 Material: 126223465 IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.883000016, y: 1.08800006, z: 0.232999995} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.47099996, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true Scripts: ~ - EID: 57 Name: GroundWindow_LargeClosed @@ -854,7 +872,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -946,7 +964,7 @@ Components: Transform Component: Translate: {x: 1.5, y: 0, z: 4} - Rotate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: -0} Scale: {x: 0.999952376, y: 1, z: 0.999952376} IsActive: true Renderable Component: @@ -1256,7 +1274,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1283,7 +1301,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1292,7 +1310,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -1650,7 +1668,7 @@ Components: Transform Component: Translate: {x: 0, y: 0, z: 4} - Rotate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: -0} Scale: {x: 1, y: 1, z: 1} IsActive: true Renderable Component: @@ -1665,7 +1683,7 @@ Components: Transform Component: Translate: {x: 2, y: 0, z: 4} - Rotate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: -0} Scale: {x: 1, y: 1, z: 1} IsActive: true Renderable Component: @@ -1740,7 +1758,7 @@ Components: Transform Component: Translate: {x: 0, y: 2.20000005, z: 0} - Rotate: {x: -0, y: 0, z: -0} + Rotate: {x: 0, y: 0, z: 0} Scale: {x: 1, y: 1, z: 1} IsActive: true Scripts: ~ @@ -1772,7 +1790,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1781,7 +1799,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -1808,7 +1826,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1817,7 +1835,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -1844,7 +1862,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1853,7 +1871,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -1880,7 +1898,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1889,7 +1907,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -1916,7 +1934,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1925,13 +1943,13 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box - Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} + Half Extents: {x: 0.149000004, y: 2.20000005, z: 2.204} Friction: 0.400000006 Bounciness: 0 Density: 1 - Position Offset: {x: 0, y: 1.10000002, z: -0.449999988} + Position Offset: {x: 0.0240000002, y: 1.10000002, z: -0.944000006} Rotation Offset: {x: 0, y: 0, z: 0} IsActive: true Scripts: ~ @@ -1952,7 +1970,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1961,7 +1979,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -1988,7 +2006,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2015,9 +2033,9 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box - Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Half Extents: {x: 3.93700004, y: 2.20000005, z: 0.224999994} Friction: 0.400000006 Bounciness: 0 Density: 1 @@ -2042,7 +2060,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2069,7 +2087,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2096,7 +2114,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2123,7 +2141,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2150,7 +2168,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2177,7 +2195,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2219,7 +2237,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 1, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2246,7 +2264,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2273,7 +2291,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2297,6 +2315,18 @@ Mesh: 146405629 Material: 126223465 IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2.04500008, y: 0.896000028, z: 0.275000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.469999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true Scripts: ~ - EID: 112 Name: UpperWindow_LargeClosedv2 @@ -2315,7 +2345,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2342,7 +2372,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2369,7 +2399,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2396,7 +2426,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2423,7 +2453,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2450,7 +2480,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2477,7 +2507,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2594,7 +2624,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 1, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2621,7 +2651,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 0.200000003, y: 2.20000005, z: 0.200000003} Friction: 0.400000006 @@ -2707,8 +2737,8 @@ Components: Transform Component: Translate: {x: 5, y: 0, z: 1.69510055} - Rotate: {x: 0, y: -1.57079601, z: 0} - Scale: {x: 0.999794245, y: 0.720000029, z: 0.999794245} + Rotate: {x: -0, y: -1.57079601, z: 0} + Scale: {x: 0.999794185, y: 0.720000029, z: 0.999794185} IsActive: true Renderable Component: Mesh: 137150602 @@ -3024,7 +3054,7 @@ Components: Transform Component: Translate: {x: 0, y: 4.4000001, z: 0} - Rotate: {x: -0, y: 0, z: -0} + Rotate: {x: 0, y: 0, z: 0} Scale: {x: 1, y: 1, z: 1} IsActive: true Scripts: ~ @@ -3436,7 +3466,7 @@ - EID: 386 Name: Furnitures IsActive: true - NumberOfChildren: 50 + NumberOfChildren: 52 Components: Transform Component: Translate: {x: 0, y: 0, z: 0} @@ -3451,7 +3481,7 @@ Components: Transform Component: Translate: {x: 1, y: 0, z: 8} - Rotate: {x: -0, y: 1.57079601, z: -0} + Rotate: {x: 0, y: 1.57079601, z: 0} Scale: {x: 0.749975622, y: 0.75, z: 0.749975622} IsActive: true Renderable Component: @@ -3472,11 +3502,11 @@ - Is Trigger: false Collision Tag: 1 Type: Box - Half Extents: {x: 1, y: 1, z: 1} + Half Extents: {x: 1, y: 0.400000006, z: 1} Friction: 0.400000006 Bounciness: 0 Density: 1 - Position Offset: {x: 0, y: 0, z: 0} + Position Offset: {x: 0, y: 0.150000006, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false Collision Tag: 1 @@ -3503,6 +3533,18 @@ Mesh: 148097428 Material: 131956078 IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 1, y: 0.474000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true Scripts: ~ - EID: 168 Name: CouchBack @@ -3510,8 +3552,8 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 3.25, y: 0, z: 6.25} - Rotate: {x: 0, y: 0, z: 0} + Translate: {x: 3.5, y: 0, z: 6.25} + Rotate: {x: -0, y: 0, z: -0} Scale: {x: 0.75, y: 0.75, z: 0.75} IsActive: true Renderable Component: @@ -3532,11 +3574,11 @@ - Is Trigger: false Collision Tag: 1 Type: Box - Half Extents: {x: 1, y: 1, z: 1} + Half Extents: {x: 1, y: 0.400000006, z: 1} Friction: 0.400000006 Bounciness: 0 Density: 1 - Position Offset: {x: 0, y: 0, z: 0} + Position Offset: {x: 0, y: 0.150000006, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false Collision Tag: 1 @@ -3555,7 +3597,7 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 2.5, y: 0, z: 6.25} + Translate: {x: 2.75, y: 0, z: 6.25} Rotate: {x: 0, y: 0, z: 0} Scale: {x: 0.75, y: 0.75, z: 0.75} IsActive: true @@ -3577,11 +3619,11 @@ - Is Trigger: false Collision Tag: 1 Type: Box - Half Extents: {x: 1, y: 1, z: 1} + Half Extents: {x: 1, y: 0.400000006, z: 1} Friction: 0.400000006 Bounciness: 0 Density: 1 - Position Offset: {x: 0, y: 0, z: 0} + Position Offset: {x: 0, y: 0.150000006, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false Collision Tag: 1 @@ -3600,15 +3642,29 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 3.25, y: 0.25, z: 6.25} - Rotate: {x: 0, y: 0, z: 0} + Translate: {x: 3.5, y: 0.25, z: 6.25} + Rotate: {x: -0, y: 0, z: -0} Scale: {x: 0.749957442, y: 0.75, z: 0.749957442} IsActive: true Renderable Component: Mesh: 135719689 Material: 131956078 IsActive: true - Scripts: ~ + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 1, y: 0.25, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.100000001, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: JumpPad + Enabled: true - EID: 172 Name: BouncyPlatform IsActive: true @@ -3623,7 +3679,21 @@ Mesh: 135719689 Material: 131956078 IsActive: true - Scripts: ~ + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.25, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.100000001, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: JumpPad + Enabled: true - EID: 173 Name: BouncyPlatform IsActive: true @@ -3631,29 +3701,57 @@ Components: Transform Component: Translate: {x: 1, y: 0.25, z: 7.25} - Rotate: {x: 0, y: 1.57079601, z: 0} - Scale: {x: 0.749957442, y: 0.75, z: 0.749957442} + Rotate: {x: -0, y: 1.57079601, z: -0} + Scale: {x: 0.749952435, y: 0.75, z: 0.749952435} IsActive: true Renderable Component: Mesh: 135719689 Material: 131956078 IsActive: true - Scripts: ~ + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.25, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.100000001, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: JumpPad + Enabled: true - EID: 174 Name: BouncyPlatform IsActive: true NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 2.5, y: 0.25, z: 6.25} - Rotate: {x: 0, y: 0, z: 0} + Translate: {x: 2.75, y: 0.25, z: 6.25} + Rotate: {x: -0, y: 0, z: -0} Scale: {x: 0.749957442, y: 0.75, z: 0.749957442} IsActive: true Renderable Component: Mesh: 135719689 Material: 131956078 IsActive: true - Scripts: ~ + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 1, y: 0.25, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.100000001, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: JumpPad + Enabled: true - EID: 176 Name: KitchenetteCounter IsActive: true @@ -3731,7 +3829,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 2.5, y: 2, z: 1} Friction: 0.400000006 @@ -3758,7 +3856,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 1, y: 4.9000001, z: 1} Friction: 0.400000006 @@ -3865,13 +3963,88 @@ Components: Transform Component: Translate: {x: 1.5, y: 0, z: -0.479999989} - Rotate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: -0} Scale: {x: 1, y: 1, z: 1} IsActive: true Renderable Component: Mesh: 144544365 Material: 131956078 IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.70599997, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.718999982, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.00700000022, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.741999984, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.745999992, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.444999993, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.300000012, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.444999993, y: 0.819000006, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.818000019, z: 0.444999993} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.832000017, z: -0.444999993} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.00800000038, y: 1.10699999, z: -0.430999994} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true Scripts: ~ - EID: 192 Name: Default @@ -3917,6 +4090,81 @@ Mesh: 144544365 Material: 131956078 IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.70599997, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.718999982, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.00700000022, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.741999984, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.745999992, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.444999993, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.300000012, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.444999993, y: 0.819000006, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.818000019, z: 0.444999993} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.832000017, z: -0.444999993} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.00800000038, y: 1.10699999, z: -0.430999994} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true Scripts: ~ - EID: 65726 Name: Default @@ -3980,7 +4228,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 0.899999976, y: 0.340000004, z: 1} Friction: 0.400000006 @@ -4079,6 +4327,45 @@ Mesh: 137183283 Material: 131956078 IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 0.39199999, y: 0.560000002, z: 0.0340000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.572000027, z: -0.173999995} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 0.365999997, y: 0.0700000003, z: 0.382999986} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.328999996, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.389999986, z: 0.370999992} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.158999994, y: 0.163000003, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.389999986, z: 0.370999992} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.158000007, y: 0.163000003, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true Scripts: ~ - EID: 203 Name: KitchenetteCounter @@ -4154,6 +4441,54 @@ Mesh: 140474147 Material: 131956078 IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 0.68599999, y: 0.123999998, z: 1.19799995} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.603999972, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 0.0839999989, y: 0.717999995, z: 0.0869999975} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.291999996, y: 0.305999994, z: -0.550000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 0.0839999989, y: 0.717999995, z: 0.0869999975} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.291999996, y: 0.305999994, z: 0.537999988} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 0.0839999989, y: 0.717999995, z: 0.0869999975} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.282000005, y: 0.305999994, z: -0.550000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 0.0839999989, y: 0.717999995, z: 0.0869999975} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.284000009, y: 0.305999994, z: 0.555999994} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true Scripts: ~ - EID: 206 Name: Chair @@ -4161,14 +4496,53 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 0.320410132, y: 0, z: 0.330800802} - Rotate: {x: 0, y: 1.57079601, z: 0} - Scale: {x: 0.999910951, y: 0.800000012, z: 0.999910951} + Translate: {x: 0.29156208, y: 0, z: 0.330800802} + Rotate: {x: -0, y: 1.57079601, z: -0} + Scale: {x: 0.999889016, y: 0.800000012, z: 0.999889016} IsActive: true Renderable Component: Mesh: 137183283 Material: 131956078 IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 0.39199999, y: 0.560000002, z: 0.0340000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.572000027, z: -0.173999995} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 0.365999997, y: 0.0700000003, z: 0.382999986} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.328999996, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.389999986, z: 0.370999992} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.158999994, y: 0.163000003, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.389999986, z: 0.370999992} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.158000007, y: 0.163000003, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true Scripts: ~ - EID: 207 Name: Chair @@ -4184,6 +4558,45 @@ Mesh: 137183283 Material: 131956078 IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 0.39199999, y: 0.560000002, z: 0.0340000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.572000027, z: -0.173999995} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 0.365999997, y: 0.0700000003, z: 0.382999986} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.328999996, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.389999986, z: 0.370999992} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.158999994, y: 0.163000003, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.389999986, z: 0.370999992} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.158000007, y: 0.163000003, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true Scripts: ~ - EID: 208 Name: Chair @@ -4199,6 +4612,45 @@ Mesh: 137183283 Material: 131956078 IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 0.39199999, y: 0.560000002, z: 0.0340000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.572000027, z: -0.173999995} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 0.365999997, y: 0.0700000003, z: 0.382999986} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.328999996, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.389999986, z: 0.370999992} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.158999994, y: 0.163000003, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.389999986, z: 0.370999992} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.158000007, y: 0.163000003, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true Scripts: ~ - EID: 65711 Name: KitchenetteCounter @@ -4262,7 +4714,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 3, y: 1.20000005, z: 1} Friction: 0.400000006 @@ -4289,7 +4741,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 0.899999976, y: 0.349999994, z: 1} Friction: 0.400000006 @@ -4316,7 +4768,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 0.899999976, y: 0.340000004, z: 1} Friction: 0.400000006 @@ -4343,7 +4795,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 0.899999976, y: 0.340000004, z: 1} Friction: 0.400000006 @@ -4445,7 +4897,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 0.5, y: 0.5, z: 0.5} Friction: 0.400000006 @@ -4472,7 +4924,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 0.5, y: 0.5, z: 0.5} Friction: 0.400000006 @@ -4496,6 +4948,18 @@ Mesh: 140639624 Material: 131956078 IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.5, y: 0.5, z: 0.5} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.151999995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true Scripts: ~ - EID: 402 Name: CouchBack @@ -4504,7 +4968,7 @@ Components: Transform Component: Translate: {x: 1, y: 0, z: 7.25} - Rotate: {x: -0, y: 1.57079601, z: -0} + Rotate: {x: 0, y: 1.57079601, z: 0} Scale: {x: 0.749981761, y: 0.75, z: 0.749981761} IsActive: true Renderable Component: @@ -4525,11 +4989,11 @@ - Is Trigger: false Collision Tag: 1 Type: Box - Half Extents: {x: 1, y: 1, z: 1} + Half Extents: {x: 1, y: 0.400000006, z: 1} Friction: 0.400000006 Bounciness: 0 Density: 1 - Position Offset: {x: 0, y: 0, z: 0} + Position Offset: {x: 0, y: 0.150000006, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false Collision Tag: 1 @@ -4570,11 +5034,11 @@ - Is Trigger: false Collision Tag: 1 Type: Box - Half Extents: {x: 1, y: 1, z: 1} + Half Extents: {x: 1, y: 0.400000006, z: 1} Friction: 0.400000006 Bounciness: 0 Density: 1 - Position Offset: {x: 0, y: 0, z: 0} + Position Offset: {x: 0, y: 0.150000006, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false Collision Tag: 1 @@ -4615,11 +5079,11 @@ - Is Trigger: false Collision Tag: 1 Type: Box - Half Extents: {x: 1, y: 1, z: 1} + Half Extents: {x: 1, y: 0.400000006, z: 1} Friction: 0.400000006 Bounciness: 0 Density: 1 - Position Offset: {x: 0, y: 0, z: 0} + Position Offset: {x: 0, y: 0.153999999, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false Collision Tag: 1 @@ -4646,6 +5110,18 @@ Mesh: 148097428 Material: 131956078 IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 1, y: 0.474000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true Scripts: ~ - EID: 398 Name: CouchBack @@ -4654,8 +5130,8 @@ Components: Transform Component: Translate: {x: 0, y: 2.25, z: 1.75} - Rotate: {x: 0, y: 1.57079601, z: 0} - Scale: {x: 0.749921322, y: 0.75, z: 0.749921322} + Rotate: {x: -0, y: 1.57079601, z: -0} + Scale: {x: 0.749920785, y: 0.75, z: 0.749920785} IsActive: true Renderable Component: Mesh: 136550658 @@ -4675,11 +5151,11 @@ - Is Trigger: false Collision Tag: 1 Type: Box - Half Extents: {x: 1, y: 1, z: 1} + Half Extents: {x: 1, y: 0.400000006, z: 1} Friction: 0.400000006 Bounciness: 0 Density: 1 - Position Offset: {x: 0, y: 0, z: 0} + Position Offset: {x: 0, y: 0.150000006, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false Collision Tag: 1 @@ -4720,11 +5196,11 @@ - Is Trigger: false Collision Tag: 1 Type: Box - Half Extents: {x: 1, y: 1, z: 1} + Half Extents: {x: 1, y: 0.400000006, z: 1} Friction: 0.400000006 Bounciness: 0 Density: 1 - Position Offset: {x: 0, y: 0, z: 0} + Position Offset: {x: 0, y: 0.150000006, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false Collision Tag: 1 @@ -4751,6 +5227,18 @@ Mesh: 148097428 Material: 131956078 IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 1, y: 0.474000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true Scripts: ~ - EID: 395 Name: CouchBack @@ -4766,6 +5254,18 @@ Mesh: 148097428 Material: 131956078 IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 1, y: 0.474000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true Scripts: ~ - EID: 394 Name: LowTable @@ -4773,8 +5273,8 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 2.8479526, y: 0, z: 7.55967045} - Rotate: {x: 0, y: 0, z: 0} + Translate: {x: 3.25, y: 0, z: 7.55967045} + Rotate: {x: -0, y: 0, z: -0} Scale: {x: 1, y: 1, z: 1} IsActive: true Renderable Component: @@ -4822,11 +5322,11 @@ - Is Trigger: false Collision Tag: 1 Type: Box - Half Extents: {x: 1, y: 1, z: 1} + Half Extents: {x: 1, y: 0.400000006, z: 1} Friction: 0.400000006 Bounciness: 0 Density: 1 - Position Offset: {x: 0, y: 0, z: 0} + Position Offset: {x: 0, y: 0.150000006, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false Collision Tag: 1 @@ -4867,11 +5367,11 @@ - Is Trigger: false Collision Tag: 1 Type: Box - Half Extents: {x: 1, y: 1, z: 1} + Half Extents: {x: 1, y: 0.400000006, z: 1} Friction: 0.400000006 Bounciness: 0 Density: 1 - Position Offset: {x: 0, y: 0, z: 0} + Position Offset: {x: 0, y: 0.150000006, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false Collision Tag: 1 @@ -4898,6 +5398,18 @@ Mesh: 148097428 Material: 131956078 IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 1, y: 0.474000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true Scripts: ~ - EID: 390 Name: CouchBack @@ -4906,13 +5418,25 @@ Components: Transform Component: Translate: {x: 1.75, y: 2.5, z: 3} - Rotate: {x: -0, y: -3.1415925, z: 0} + Rotate: {x: 0, y: -3.1415925, z: 0} Scale: {x: 0.749907374, y: 0.75, z: 0.749907374} IsActive: true Renderable Component: Mesh: 148097428 Material: 131956078 IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 1, y: 0.474000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true Scripts: ~ - EID: 389 Name: CardboardBox @@ -4931,7 +5455,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 0.5, y: 0.5, z: 0.5} Friction: 0.400000006 @@ -4955,6 +5479,18 @@ Mesh: 140639624 Material: 131956078 IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.5, y: 0.5, z: 0.5} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.150000006, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true Scripts: ~ - EID: 387 Name: CardboardBox @@ -4970,360 +5506,3681 @@ Mesh: 140639624 Material: 131956078 IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.5, y: 0.5, z: 0.5} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.25, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true Scripts: ~ -- EID: 358 - Name: Food +- EID: 466 + Name: KitchenetteCounterCollider1 IsActive: true - NumberOfChildren: 23 + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1, z: 4.0079999} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.488000005, y: 0.463999987, z: 1.01199996} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 464 + Name: KitchenetteCounterCollider2 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 4.02400017, y: 0.930000007, z: 0.125} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 2.02200007, y: 0.497000009, z: 0.00800000038} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1.04299998, y: 0.192000002, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.541000009, y: 0.869000018, z: -0.448000014} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1.06200004, y: 0.192000002, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 3.47099996, y: 0.869000018, z: -0.448000014} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 165 + Name: Level1Floor + IsActive: true + NumberOfChildren: 0 Components: Transform Component: Translate: {x: 0, y: 0, z: 0} Rotate: {x: -0, y: 0, z: -0} - Scale: {x: 1, y: 1, z: 1} + Scale: {x: 18.7835312, y: 18.7835312, z: 18.7835312} + IsActive: true + Renderable Component: + Mesh: 144340823 + Material: 131956078 IsActive: true Scripts: ~ -- EID: 384 - Name: Food_Apple +- EID: 514 + Name: Level1FloorCollider IsActive: true NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 2.67368722, y: 0.803615987, z: -0.309674412} + Translate: {x: 6, y: 0, z: 4.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 15, y: 1, z: 15} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 66049 + Name: Level2FloorCollider1 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.11058426, y: 2.61999989, z: 1.62666535} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 6, y: 0.200000003, z: 5} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 512 + Name: Level2FloorCollider2 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 10, y: 2.61999989, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 10, y: 0.200000003, z: 3} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 461 + Name: CeilingCollider + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 6, y: 4.71602583, z: 4.5} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 15, y: 1, z: 15} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 469 + Name: Level2FenceCollider + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.93802273, y: 2.39508605, z: 4.01721716} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 6, y: 0.5, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 463 + Name: KitchenLargeClosedWindowCollider + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 4.01900005, y: 1.10099995, z: 0.147} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 1.96599996, y: 1.49399996, z: -0.966000021} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 467 + Name: Level2Table + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.11160159, y: 2.4000001, z: 1.2985332} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 2.20000005, y: 0.5, z: 1.29999995} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 468 + Name: Level2FenceCollider + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.9960146, y: 2.39508605, z: 2.69112468} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 0.200000003, y: 0.5, z: 2.5} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 553 + Name: TweenManager + IsActive: true + NumberOfChildren: 0 + Components: ~ + Scripts: + - Type: SHADE_Scripting.UI.TweenManager + Enabled: true +- EID: 551 + Name: TransitionCanvas + IsActive: true + NumberOfChildren: 1 + Components: + Canvas Component: + Canvas Width: 1920 + Canvas Height: 1080 + Scale by canvas width: false + IsActive: true + Scripts: ~ +- EID: 552 + Name: Transition + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0.100000001} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 2500, y: 1080, z: 1} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 120016136 + IsActive: true + UI Component: + Canvas ID: 551 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.SceneFadeInOut + Enabled: true + alphaValue: 1 + fadeInTime: 0.5 + fadeOutTime: 0.5 +- EID: 549 + Name: StealFoodCanvas + IsActive: true + NumberOfChildren: 1 + Components: + Canvas Component: + Canvas Width: 1920 + Canvas Height: 1080 + Scale by canvas width: false + IsActive: true + Scripts: ~ +- EID: 550 + Name: StealFoodLogo + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0, y: 0, z: 1} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 127459277 + IsActive: true + UI Component: + Canvas ID: 549 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.StealFoodPopUp + Enabled: true + popInDuration: 0.5 + popOutDuration: 0.075000003 + stayDuration: 1 + rotationAmt: 1800 + scaleAmtX: 538 + scaleAmtY: 377 +- EID: 547 + Name: Pause Canvas + IsActive: false + NumberOfChildren: 4 + Components: + Canvas Component: + Canvas Width: 1920 + Canvas Height: 1080 + Scale by canvas width: false + IsActive: false + Scripts: ~ +- EID: 546 + Name: ResumeButton + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 100, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 400, y: 100, z: 500} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 129340704 + IsActive: true + Button Component: + Default Texture: 63979907 + Hovered Texture: 51379325 + Clicked Texture: 66788278 + IsActive: true + UI Component: + Canvas ID: 547 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.ButtonFX + Enabled: true + onHoverEnterSound: Empty + onHoverExitSound: Empty + onClickSound: event:/UI/mouse_down_element + onReleaseSound: Empty + hoverScale: 1.10000002 + clickScale: 0.899999976 +- EID: 545 + Name: QuitButton + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: -300, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 400, y: 100, z: 500} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 129340704 + IsActive: true + Button Component: + Default Texture: 61602036 + Hovered Texture: 58910810 + Clicked Texture: 57786063 + IsActive: true + UI Component: + Canvas ID: 547 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.ButtonFX + Enabled: true + onHoverEnterSound: Empty + onHoverExitSound: Empty + onClickSound: event:/UI/mouse_down_element + onReleaseSound: Empty + hoverScale: 1.10000002 + clickScale: 0.899999976 + - Type: FixRotation + Enabled: true +- EID: 544 + Name: RetryButton + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: -100, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 400, y: 100, z: 500} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 129340704 + IsActive: true + Button Component: + Default Texture: 64806384 + Hovered Texture: 58347825 + Clicked Texture: 63234380 + IsActive: true + UI Component: + Canvas ID: 547 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.ButtonFX + Enabled: true + onHoverEnterSound: Empty + onHoverExitSound: Empty + onClickSound: event:/UI/mouse_down_element + onReleaseSound: Empty + hoverScale: 1.10000002 + clickScale: 0.899999976 +- EID: 543 + Name: GamePause + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + 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: 174412429 + Color: {x: 1, y: 1, z: 1, w: 1} + Text Size: {x: 1, y: 1, z: 1} + IsActive: false + UI Component: + Canvas ID: 547 + Hovered: false + Clicked: false + IsActive: true + Scripts: ~ +- EID: 542 + Name: ====AI===== + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.830674767, y: 0, z: 1.40718019} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140697366 + Material: 129495479 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: true + Freeze Rotation Y: false + Freeze Rotation Z: true + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 5 + Type: Box + Half Extents: {x: 0.600000024, y: 1.79999995, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.899999976, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Homeowner1 + Enabled: true + waypointsPool: 541 + startWaypoint: 540 + patrolSpeed: 0.75 + chaseSpeed: 2 + turningSpeed: 5 + sightDistance: 8 + eyeOffset: [0, 1.64999998, 0] + distanceToCapture: 0.800000012 + captureTime: 0.5 + footstepSFXIntervalMultiplier: 0.5 +- EID: 541 + Name: ====WaypointPool==== + IsActive: true + NumberOfChildren: 9 + Components: ~ + Scripts: ~ +- EID: 540 + Name: 0 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.806008875, y: 0, z: 1.30613756} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 539 + Name: 1 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.513795853, y: 0, z: 5.17213631} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 538 + Name: 2 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.497500449, y: 0, z: 7.26010561} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 537 + Name: 3 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.380023897, y: 0, z: 9.58513737} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 536 + Name: 4 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.76827145, y: 0, z: 9.12785816} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 535 + Name: 5 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5.0583787, y: 0, z: 4.71819115} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 534 + Name: 6 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.53010821, y: 0, z: 4.63929033} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 531 + Name: 7 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.64600039, y: 0, z: 2.86434269} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 530 + Name: 8 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.50184393, y: 0, z: 0.390250444} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 526 + 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: 237 + 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: 526 + 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: 526 + Hovered: false + Clicked: false + IsActive: true + Scripts: ~ +- EID: 525 + 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: 526 + 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: 526 + Hovered: false + Clicked: false + IsActive: true + Scripts: ~ +- EID: 524 + 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: 526 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.MultiplierTextFx + Enabled: true + maxSize: 1 + minSize: 0.300000012 + minAlpha: 0.300000012 +- EID: 519 + 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: 526 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: FixRotation + Enabled: true +- EID: 238 + Name: ====GameManager==== + IsActive: true + NumberOfChildren: 0 + Components: ~ + Scripts: + - Type: GameManager + Enabled: true + winScene: 84606951 + loseScene: 91685359 + currGameState: 0 + totalItemCount: 0 + Score: 0 + timer: 200 + scoreText: 237 + timeText: 525 + multiplierText: 524 + maxMultiplierDuration: 5 + maxMultiplierCombo: 10 + multiplierFont: 60 + - Type: PauseMenu + Enabled: true + resumeBtn: 546 + retryBtn: 544 + quitBtn: 545 + canvas: 547 +- EID: 523 + Name: ====ScoreZonePool==== + IsActive: true + NumberOfChildren: 3 + Components: ~ + Scripts: ~ +- EID: 522 + Name: ScoreZone + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: -1.54310393, y: 1.44638538, z: 7.98654604} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: true + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: true + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1, z: 1.79999995} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: ScoringZone + Enabled: true +- EID: 518 + Name: CollisionWall + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.50623107, y: -0.0548173189, z: 0.00632286072} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 4 + Type: Box + Half Extents: {x: 0.200000003, y: 1, z: 1.79999995} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 517 + Name: ScoreZone + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: -1.29031229, y: 1.42268324, z: 1.50382555} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: true + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: true + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.5, y: 1, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: ScoringZone + Enabled: true +- EID: 516 + Name: CollisionWall + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: -0.068323493, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 4 + Type: Box + Half Extents: {x: 0.200000003, y: 1.5, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 131620 + Name: ScoreZone + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 10.9849348, y: 3.6516223, z: -1.48581266} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: true + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: true + Collision Tag: 0 + Type: Box + Half Extents: {x: 1.79999995, y: 1, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: ScoringZone + Enabled: true +- EID: 66051 + Name: CollisionWall + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0655269623, y: -0.0213704109, z: 0.33921051} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 4 + Type: Box + Half Extents: {x: 1.79999995, y: 1, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0.156000003} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 554 + Name: CameraPoints + IsActive: true + NumberOfChildren: 3 + Components: ~ + Scripts: + - Type: SHADE_Scripting.UI.PreviewLevel + Enabled: true + endPoint1: [-1.79999995, 1.5, 0.5] + endPoint2: [5, 3.5, 0.5] + endPoint3: [-0.5, 1.5, 3.5] + playerCamera: 66063 + gameplayCanvas: 526 + duration: 3 +- EID: 555 + Name: PreviewLevel1 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.79999995, y: 1.5, z: 8} + Rotate: {x: 0, y: 4.71238899, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Camera Component: + Position: {x: -5.5, y: 1.5, z: -2} + Pitch: 0 + Yaw: 270 + Roll: 0 + Width: 1920 + Near: 0.00999999978 + Far: 10000 + Perspective: true + FOV: 90 + IsActive: true + Scripts: ~ +- EID: 556 + Name: PreviewLevel2 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5, y: 3.5, z: 8.19999981} + Rotate: {x: -0.69813168, y: 1.57079637, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Camera Component: + Position: {x: -0.24528563, y: 1.5, z: -7.5} + Pitch: -40 + Yaw: 90 + Roll: 0 + Width: 1920 + Near: 0.00999999978 + Far: 10000 + Perspective: true + FOV: 90 + IsActive: true + Scripts: ~ +- EID: 557 + Name: PreviewLevel3 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.5, y: 1.5, z: 0} + Rotate: {x: 0, y: 2.26892805, z: 0} + Scale: {x: 0.999999821, y: 1, z: 0.999999821} + IsActive: true + Camera Component: + Position: {x: 2.5, y: 1.5, z: -7.5} + Pitch: 0 + Yaw: 130 + Roll: 0 + Width: 1920 + Near: 0.00999999978 + Far: 10000 + Perspective: true + FOV: 90 + IsActive: true + Scripts: ~ +- EID: 65894 + Name: Food + IsActive: true + NumberOfChildren: 25 + Components: ~ + Scripts: ~ +- EID: 241 + Name: Mesh_Meat + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.545588374, y: 2.08121252, z: 10.5627556} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136892700 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.300000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 511 + Name: Mesh_Meat + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 6.56602001, y: 2.08121252, z: 7.68181515} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136892700 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.300000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 510 + Name: Mesh_Meat + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.283426404, y: 1.09665966, z: 2.6444459} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136892700 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.300000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 509 + Name: Mesh_Meat + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.02881098, y: 2.77076602, z: -0.182125747} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136892700 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.300000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 508 + Name: Mesh_Meat + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.72471094, y: 2.77076602, z: 1.22943294} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136892700 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.300000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 507 + Name: Mesh_Meat + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 7.58803272, y: 2.33588457, z: -0.189944804} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136892700 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.300000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 506 + Name: Mesh_Meat + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.09635019, y: 0.735648811, z: 1.75533557} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136892700 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.300000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 65778 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5.84368134, y: 2.20734143, z: 7.94632149} Rotate: {x: 0, y: 0, z: 0} Scale: {x: 1, y: 1, z: 1} IsActive: true Renderable Component: Mesh: 144128170 - Material: 131956078 + Material: 122370915 IsActive: true - Scripts: ~ -- EID: 382 - Name: Food_Cheese + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 505 + Name: Mesh_Apple IsActive: true NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 12.1188478, y: 2.36368299, z: 0.0781341419} + Translate: {x: -0.713125288, y: 2.20734143, z: 7.94632149} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 504 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.77404094, y: 0.41099143, z: 2.47208786} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 503 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00114655, y: 1.02382326, z: -0.269943058} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 502 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.68187761, y: 0.795046389, z: -0.314166456} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 501 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.35782337, y: 0.795200706, z: -0.640376568} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 500 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.00753106922, y: 2.77078485, z: 1.69880748} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 499 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.23422098, y: 0.359118223, z: -0.141155809} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 498 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 6.44451427, y: 1.02410448, z: 6.5130949} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 497 + Name: Mesh_Cheese + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.91941047, y: 0.527999997, z: 7.41522264} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 141841143 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.5, y: 0.150000006, z: 0.5} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 500 + currCategory: 2 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 100 + highlightLowerClamp: 0.25 +- EID: 496 + Name: Mesh_Cheese + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.85350871, y: 2.7331593, z: 1.26117873} Rotate: {x: 0, y: 0, z: 0} Scale: {x: 1, y: 1, z: 1} IsActive: true Renderable Component: Mesh: 141841143 - Material: 131956078 + Material: 122370915 IsActive: true - Scripts: ~ -- EID: 381 - Name: Food_Apple + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.5, y: 0.150000006, z: 0.5} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 500 + currCategory: 2 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 100 + highlightLowerClamp: 0.25 +- EID: 495 + Name: Mesh_Cheese IsActive: true NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 2.00008488, y: 1.02117109, z: -0.272745907} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 1, y: 1, z: 1} - IsActive: true - Renderable Component: - Mesh: 144128170 - Material: 131956078 - IsActive: true - Scripts: ~ -- EID: 379 - Name: Food_Cheese - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: -0.289246678, y: 1.08858216, z: -0.335788906} + Translate: {x: -0.285500437, y: 1.08642888, z: -0.338151664} Rotate: {x: 0, y: 0, z: 0} Scale: {x: 1, y: 1, z: 1} IsActive: true Renderable Component: Mesh: 141841143 - Material: 131956078 + Material: 122370915 IsActive: true - Scripts: ~ -- EID: 378 - Name: Food_Meat + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.5, y: 0.150000006, z: 0.5} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 500 + currCategory: 2 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 100 + highlightLowerClamp: 0.25 +- EID: 494 + Name: Mesh_Cheese IsActive: true NumberOfChildren: 0 Components: Transform Component: - Translate: {x: -0.289246678, y: 1.08858216, z: 2.63276219} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 1, y: 1, z: 1} - IsActive: true - Renderable Component: - Mesh: 136892700 - Material: 131956078 - IsActive: true - Scripts: ~ -- EID: 377 - Name: Food_Meat - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: 2.01955795, y: 2.79646635, z: -0.173300505} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 1, y: 1, z: 1} - IsActive: true - Renderable Component: - Mesh: 136892700 - Material: 131956078 - IsActive: true - Scripts: ~ -- EID: 376 - Name: Food_Apple - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: 5.82834911, y: 2.22263741, z: 7.94544458} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 1, y: 1, z: 1} - IsActive: true - Renderable Component: - Mesh: 144128170 - Material: 131956078 - IsActive: true - Scripts: ~ -- EID: 374 - Name: Food_Apple - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: 2.35145187, y: 0.803615987, z: -0.625590205} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 1, y: 1, z: 1} - IsActive: true - Renderable Component: - Mesh: 144128170 - Material: 131956078 - IsActive: true - Scripts: ~ -- EID: 373 - Name: Food_Apple - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: -0.00815489888, y: 2.73697543, z: 1.68815851} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 1, y: 1, z: 1} - IsActive: true - Renderable Component: - Mesh: 144128170 - Material: 131956078 - IsActive: true - Scripts: ~ -- EID: 372 - Name: Food_Apple - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: 1.7647357, y: 0.405964196, z: 2.47084498} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 1, y: 1, z: 1} - IsActive: true - Renderable Component: - Mesh: 144128170 - Material: 131956078 - IsActive: true - Scripts: ~ -- EID: 371 - Name: Food_Apple - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: 4.23329258, y: 0.354744881, z: -0.136515647} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 1, y: 1, z: 1} - IsActive: true - Renderable Component: - Mesh: 144128170 - Material: 131956078 - IsActive: true - Scripts: ~ -- EID: 370 - Name: Food_Cheese - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: 4.26609802, y: 0.833776832, z: -0.677513659} + Translate: {x: 4.26940489, y: 0.829830706, z: -0.690382957} Rotate: {x: 0, y: 0, z: 0} Scale: {x: 1, y: 1, z: 1} IsActive: true Renderable Component: Mesh: 141841143 - Material: 131956078 + Material: 122370915 IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.5, y: 0.150000006, z: 0.5} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 500 + currCategory: 2 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 100 + highlightLowerClamp: 0.25 +- EID: 493 + Name: Egg + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: -0.636476278, y: 1.0065378, z: 1.4076668} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 147457317 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Sphere + Radius: 0.200000003 + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 0.5 + ignoreRaccoon: true + breakClipHandlerName: SFXEggBreak144 + breakClipPath: event:/Props/impact_egg + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 2 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 492 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0224030018, y: 0.0607728958, z: -0.00627422333} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 134900190 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0.164060935, y: 0, z: 0} + IsActive: false Scripts: ~ -- EID: 369 - Name: Food_Meat +- EID: 491 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.00627422333, y: 0.0337567925, z: -0.00243234634} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146271645 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.34906584} + IsActive: false + Scripts: ~ +- EID: 490 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0166685581, y: -0.0367090404, z: 0.0114421844} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 135945648 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.261799395} + IsActive: false + Scripts: ~ +- EID: 489 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.020128727, y: -0.0155199468, z: -0.0045747757} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 141722646 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -1.04719758} + IsActive: false + Scripts: ~ +- EID: 488 + Name: Egg + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: 4.23294592, y: 2.20174122, z: 10.7922974} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 147457317 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Sphere + Radius: 0.200000003 + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 0.5 + ignoreRaccoon: true + breakClipHandlerName: SFXEggBreak144 + breakClipPath: event:/Props/impact_egg + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 2 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 487 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0224030018, y: 0.0607728958, z: -0.00627422333} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 134900190 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0.164060935, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 486 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.00627422333, y: 0.0337567925, z: -0.00243234634} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146271645 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.34906584} + IsActive: false + Scripts: ~ +- EID: 485 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0166685581, y: -0.0367090404, z: 0.0114421844} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 135945648 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.261799395} + IsActive: false + Scripts: ~ +- EID: 484 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.020128727, y: -0.0155199468, z: -0.0045747757} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 141722646 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -1.04719758} + IsActive: false + Scripts: ~ +- EID: 483 + Name: Watermelon + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 4.24842501, y: 2.39795327, z: 7.96371555} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 134305891 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Sphere + Radius: 0.5 + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 4 + ignoreRaccoon: true + breakClipHandlerName: SFXWatermelonBreak464 + breakClipPath: event:/Props/impact_watermelon_break + - Type: Item + Enabled: true + Score: 500 + currCategory: 2 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 482 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0218036175, y: 5.38527966e-05, z: 0.202852726} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 144023586 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.449999988, y: 0.349999994, z: 0.349999994} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0.164060935, y: 0, z: 0} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 1 + dontReturn: true + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 481 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0812162161, y: 0.0825212598, z: -0.0991339684} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 142132679 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.349999994, y: 0.25, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.34906584} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 1 + dontReturn: true + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 480 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0350502729, y: -0.210244894, z: -0.0336794853} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 138231239 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.25, y: 0.200000003, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.261799395} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: true + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 479 + Name: Piece4 + IsActive: false + 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} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 135293480 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.25, y: 0.100000001, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -1.04719758} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: true + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 478 + Name: Piece5 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.129600644, y: 0.219047099, z: 0.0484838486} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146157335 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.100000001, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0.436332315} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: true + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 477 + Name: Watermelon + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 5.91687918, y: 0.227440596, z: 2.4012506} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 134305891 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Sphere + Radius: 0.5 + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 4 + ignoreRaccoon: true + breakClipHandlerName: SFXWatermelonBreak464 + breakClipPath: event:/Props/impact_watermelon_break + - Type: Item + Enabled: true + Score: 500 + currCategory: 2 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 476 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0218036175, y: 5.38527966e-05, z: 0.202852726} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 144023586 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.449999988, y: 0.349999994, z: 0.349999994} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0.164060935, y: 0, z: 0} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 1 + dontReturn: true + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 475 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0812162161, y: 0.0825212598, z: -0.0991339684} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 142132679 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.349999994, y: 0.25, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.34906584} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 1 + dontReturn: true + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 474 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0350502729, y: -0.210244894, z: -0.0336794853} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 138231239 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.25, y: 0.200000003, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.261799395} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: true + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 473 + Name: Piece4 + IsActive: false + 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} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 135293480 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.25, y: 0.100000001, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -1.04719758} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: true + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 472 + Name: Piece5 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.129600644, y: 0.219047099, z: 0.0484838486} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146157335 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.100000001, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0.436332315} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: true + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 471 + Name: Watermelon + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 12.1088581, y: 2.41677403, z: -0.0448025912} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 134305891 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Sphere + Radius: 0.5 + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 4 + ignoreRaccoon: true + breakClipHandlerName: SFXWatermelonBreak464 + breakClipPath: event:/Props/impact_watermelon_break + - Type: Item + Enabled: true + Score: 500 + currCategory: 2 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 470 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0218036175, y: 5.38527966e-05, z: 0.202852726} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 144023586 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.449999988, y: 0.349999994, z: 0.349999994} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0.164060935, y: 0, z: 0} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 1 + dontReturn: true + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 448 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0812162161, y: 0.0825212598, z: -0.0991339684} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 142132679 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.349999994, y: 0.25, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.34906584} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 1 + dontReturn: true + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 447 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0350502729, y: -0.210244894, z: -0.0336794853} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 138231239 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.25, y: 0.200000003, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.261799395} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: true + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 446 + Name: Piece4 + IsActive: false + 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} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 135293480 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.25, y: 0.100000001, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -1.04719758} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: true + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 445 + Name: Piece5 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.129600644, y: 0.219047099, z: 0.0484838486} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146157335 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.100000001, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0.436332315} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: true + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 66069 + Name: ====Raccoon==== + IsActive: true + NumberOfChildren: 2 + Components: ~ + Scripts: ~ +- EID: 65775 + Name: Player + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 5.5, y: 0.171148509, z: 10} + Rotate: {x: -0, y: -3.1415925, z: 0} + Scale: {x: 0.999999404, y: 1, z: 0.999999404} + IsActive: true + Renderable Component: + Mesh: 149697411 + Material: 126974645 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: false + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: true + Freeze Rotation Y: true + Freeze Rotation Z: true + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 0.400000006, y: 0.5, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.25, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: PlayerController + Enabled: true + respawnPoint: 66065 + currentState: 0 + maxMoveVel: 3 + moveForce: 50 + sprintMultiplier: 1.5 + rotationFactorPerFrame: 5 + maxJumpHeight: 2 + maxJumpTime: 0.75 + fallMultipler: 3 + jumpPadMultiplayer: 1.5 + lightMultiper: 0.899999976 + mediumMultiper: 0.699999988 + heavyMultiper: 0.5 + silhouettePlayer: 462 + silhouetteBag: 465 + - Type: PickAndThrow + Enabled: true + throwForce: [10, 8, 10] + cameraArmOffSet: [0.25, 0.600000024, 0.200000003] + delayTimer: 1 + aimingLength: 1 + throwItem: false + rayDistance: 0.75 + rayHeight: 0.100000001 + aimingFOV: 50 + defaultFOV: 45 +- EID: 66068 + Name: HoldingPoint IsActive: true NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 2.10390115, y: 0.747627378, z: 1.75900662} - Rotate: {x: 0, y: 0, z: 0} + Translate: {x: 0, y: 0.899999976, z: 0.200000286} + Rotate: {x: 0, y: 0, z: -0} Scale: {x: 1, y: 1, z: 1} IsActive: true - Renderable Component: - Mesh: 136892700 - Material: 131956078 - IsActive: true Scripts: ~ -- EID: 368 - Name: Food_Meat +- EID: 66063 + Name: PlayerCamera IsActive: true NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 7.59302235, y: 2.3393712, z: -0.187277719} - Rotate: {x: 0, y: 0, z: 0} + Translate: {x: 0, y: -5.96046448e-08, z: 0} + Rotate: {x: 0, y: 3.1415925, z: 2.23517329e-08} Scale: {x: 1, y: 1, z: 1} IsActive: true - Renderable Component: - Mesh: 136892700 - Material: 131956078 + Camera Component: + Position: {x: 2.12735963, y: 0.362327784, z: 7.98933029} + Pitch: 0 + Yaw: 0 + Roll: 1.28065994e-06 + Width: 1920 + Near: 0.00999999978 + Far: 10000 + Perspective: true + FOV: 45 IsActive: true - Scripts: ~ -- EID: 366 - Name: Food_Cheese + Camera Arm Component: + Arm Pitch: 40 + Arm Yaw: 0 + Arm Length: 3 + Look At Camera Origin: true + Target Offset: {x: 0, y: 0.75, z: 0} + Camera Collision: true + IsActive: true + Scripts: + - Type: SHADE_Scripting.ThirdPersonCamera + Enabled: true + armLength: 3 + turnSpeedPitch: 0.200000003 + turnSpeedYaw: 0.400000006 + inverseXControls: true + inverseYControls: false + pitchUpperClamp: 45 + pitchLowerClamp: 5 +- EID: 66064 + Name: PlayerBag IsActive: true NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 2.71393967, y: 0.539582014, z: 7.06600809} - Rotate: {x: 0, y: 0, z: 0} + Translate: {x: 0, y: -2.98023224e-08, z: 4.76837158e-07} + Rotate: {x: 0, y: 0, z: -0} Scale: {x: 1, y: 1, z: 1} IsActive: true Renderable Component: - Mesh: 141841143 - Material: 131956078 + Mesh: 144838771 + Material: 123745521 IsActive: true Scripts: ~ -- EID: 365 - Name: Food_Meat +- EID: 462 + Name: SilouettePlayer IsActive: true NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 6.54555845, y: 2.07684445, z: 7.65922546} + Translate: {x: 2.38418579e-07, y: -2.98023224e-08, z: -2.98023224e-07} Rotate: {x: 0, y: 0, z: 0} Scale: {x: 1, y: 1, z: 1} IsActive: true Renderable Component: - Mesh: 136892700 - Material: 131956078 + Mesh: 149697411 + Material: 126391182 IsActive: true Scripts: ~ -- EID: 364 - Name: Food_Cheese +- EID: 465 + Name: SilouetteBag IsActive: true NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 1.86549664, y: 2.73507738, z: 1.2655673} - Rotate: {x: 0, y: 0, z: 0} + Translate: {x: 0, y: -2.98023224e-08, z: 4.76837158e-07} + Rotate: {x: 0, y: 0, z: -0} Scale: {x: 1, y: 1, z: 1} IsActive: true Renderable Component: - Mesh: 141841143 - Material: 131956078 + Mesh: 144838771 + Material: 126391182 IsActive: true Scripts: ~ -- EID: 363 - Name: Food_Meat +- EID: 66065 + Name: RespawnPoint IsActive: true NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 2.68094921, y: 2.79646635, z: 1.2316364} + Translate: {x: 5.5, y: 0.00999999978, z: 10} Rotate: {x: 0, y: 0, z: 0} Scale: {x: 1, y: 1, z: 1} IsActive: true - Renderable Component: - Mesh: 136892700 - Material: 131956078 - IsActive: true - Scripts: ~ -- EID: 362 - Name: Food_Meat - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: -0.548751414, y: 2.07684445, z: 10.5268383} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 1, y: 1, z: 1} - IsActive: true - Renderable Component: - Mesh: 136892700 - Material: 131956078 - IsActive: true - Scripts: ~ -- EID: 360 - Name: Food_Apple - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: 4.25191593, y: 2.21991086, z: 10.735425} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 1, y: 1, z: 1} - IsActive: true - Renderable Component: - Mesh: 144128170 - Material: 131956078 - IsActive: true - Scripts: ~ -- EID: 359 - Name: Food_Apple - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: -0.711149335, y: 2.21991086, z: 7.94430065} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 1, y: 1, z: 1} - IsActive: true - Renderable Component: - Mesh: 144128170 - Material: 131956078 - IsActive: true - Scripts: ~ -- EID: 357 - Name: Food_Apple - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: 6.44702148, y: 1.01102316, z: 6.54053688} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 1, y: 1, z: 1} - IsActive: true - Renderable Component: - Mesh: 144128170 - Material: 131956078 - IsActive: true - Scripts: ~ -- EID: 356 - Name: Food_Cheese - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: 4.25000906, y: 2.28261352, z: 8.01108646} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 1, y: 1, z: 1} - IsActive: true - Renderable Component: - Mesh: 141841143 - Material: 131956078 - IsActive: true Scripts: ~ \ No newline at end of file diff --git a/Assets/Scenes/LoseScene.shade b/Assets/Scenes/LoseScene.shade index 501c203f..f8baefc8 100644 --- a/Assets/Scenes/LoseScene.shade +++ b/Assets/Scenes/LoseScene.shade @@ -20,6 +20,7 @@ Canvas Component: Canvas Width: 1920 Canvas Height: 1080 + Scale by canvas width: false IsActive: true Scripts: ~ - EID: 2 @@ -28,7 +29,7 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 0, y: 0, z: 0} + Translate: {x: 0, y: 0, z: 0.300000012} Rotate: {x: 0, y: 0, z: 0} Scale: {x: 1920, y: 1080, z: 1} IsActive: true @@ -38,6 +39,8 @@ IsActive: true UI Component: Canvas ID: 1 + Hovered: false + Clicked: false IsActive: true Scripts: ~ - EID: 5 @@ -46,51 +49,71 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 0, y: 75, z: 0} + Translate: {x: 0, y: 75, z: 0.200000003} Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 400, y: 200, z: 1} + Scale: {x: 400, y: 100, z: 1} IsActive: true Renderable Component: Mesh: 141771688 Material: 129340704 IsActive: true Button Component: - Default Texture: 65788519 - Hovered Texture: 55999018 - Clicked Texture: 66382894 + Default Texture: 58945566 + Hovered Texture: 58758882 + Clicked Texture: 50335070 IsActive: true UI Component: Canvas ID: 1 + Hovered: false + Clicked: false IsActive: true Scripts: - Type: ChangeSceneButton Enabled: true sceneID: 97158628 + - Type: SHADE_Scripting.UI.ButtonFX + Enabled: true + onHoverEnterSound: Empty + onHoverExitSound: Empty + onClickSound: event:/UI/mouse_down_element + onReleaseSound: Empty + hoverScale: 1.10000002 + clickScale: 0.899999976 - EID: 6 Name: Quit Button IsActive: true NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 0, y: -200, z: 0} + Translate: {x: 0, y: -200, z: 0.200000003} Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 400, y: 200, z: 1} + Scale: {x: 400, y: 100, z: 1} IsActive: true Renderable Component: Mesh: 141771688 Material: 129340704 IsActive: true Button Component: - Default Texture: 66477839 - Hovered Texture: 65045286 - Clicked Texture: 58607560 + Default Texture: 61602036 + Hovered Texture: 58910810 + Clicked Texture: 57786063 IsActive: true UI Component: Canvas ID: 1 + Hovered: false + Clicked: false IsActive: true Scripts: - Type: QuitButton Enabled: true + - Type: SHADE_Scripting.UI.ButtonFX + Enabled: true + onHoverEnterSound: Empty + onHoverExitSound: Empty + onClickSound: event:/UI/mouse_down_element + onReleaseSound: Empty + hoverScale: 1.10000002 + clickScale: 0.899999976 - EID: 3 Name: Camera IsActive: true @@ -107,10 +130,10 @@ Yaw: 0 Roll: 0 Width: 1920 - Height: 1080 Near: 0.00999999978 Far: 10000 Perspective: true + FOV: 90 IsActive: true Scripts: ~ - EID: 4 @@ -122,4 +145,48 @@ - Type: EndScene Enabled: true mainGameScene: 86098106 - mainMainScene: 97158628 \ No newline at end of file + mainMainScene: 97158628 +- EID: 7 + Name: TweenManager + IsActive: true + NumberOfChildren: 0 + Components: ~ + Scripts: + - Type: SHADE_Scripting.UI.TweenManager + Enabled: true +- EID: 450 + Name: TransitionCanvas + IsActive: true + NumberOfChildren: 1 + Components: + Canvas Component: + Canvas Width: 1920 + Canvas Height: 1080 + Scale by canvas width: false + IsActive: true + Scripts: ~ +- EID: 65982 + Name: Transition + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0.100000001} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 2500, y: 1080, z: 1} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 120016136 + IsActive: true + UI Component: + Canvas ID: 450 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.SceneFadeInOut + Enabled: true + alphaValue: 1 + fadeInTime: 0.5 + fadeOutTime: 0.5 \ No newline at end of file diff --git a/Assets/Scenes/MainMenu.shade b/Assets/Scenes/MainMenu.shade index a2a5dd1c..197de206 100644 --- a/Assets/Scenes/MainMenu.shade +++ b/Assets/Scenes/MainMenu.shade @@ -1,7 +1,7 @@ - EID: 0 Name: Main Menu Canvas IsActive: true - NumberOfChildren: 9 + NumberOfChildren: 3 Components: Canvas Component: Canvas Width: 1920 @@ -21,162 +21,7 @@ IsActive: true Renderable Component: Mesh: 141771688 - Material: 129138332 - IsActive: true - UI Component: - Canvas ID: 0 - Hovered: false - Clicked: false - IsActive: true - Scripts: ~ -- EID: 5 - Name: Start Game Button - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: -700, y: 100, z: 0.400000006} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 450, y: 100, z: 1} - IsActive: true - Renderable Component: - Mesh: 141771688 - Material: 129340704 - IsActive: true - Button Component: - Default Texture: 52901020 - Hovered Texture: 62235279 - Clicked Texture: 64722619 - IsActive: true - UI Component: - Canvas ID: 0 - Hovered: false - Clicked: false - IsActive: true - Scripts: - - Type: ChangeSceneButton - Enabled: true - sceneID: 96668835 -- EID: 6 - Name: Quit Game Button - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: -700, y: -400, z: 0.400000006} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 450, y: 100, z: 1} - IsActive: true - Renderable Component: - Mesh: 141771688 - Material: 129340704 - IsActive: true - Button Component: - Default Texture: 66477839 - Hovered Texture: 65045286 - Clicked Texture: 58607560 - IsActive: true - UI Component: - Canvas ID: 0 - Hovered: false - Clicked: false - IsActive: true - Scripts: - - Type: QuitButton - Enabled: true -- EID: 7 - Name: Level Select Button - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: -700, y: 0, z: 0.400000006} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 450, y: 100, z: 1} - IsActive: true - Renderable Component: - Mesh: 141771688 - Material: 129340704 - IsActive: true - Button Component: - Default Texture: 52901020 - Hovered Texture: 62235279 - Clicked Texture: 64722619 - IsActive: true - UI Component: - Canvas ID: 0 - Hovered: false - Clicked: false - IsActive: true - Scripts: ~ -- EID: 9 - Name: How To Play Button - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: -700, y: -100, z: 0.400000006} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 450, y: 100, z: 1} - IsActive: true - Renderable Component: - Mesh: 141771688 - Material: 129340704 - IsActive: true - Button Component: - Default Texture: 65084899 - Hovered Texture: 58647112 - Clicked Texture: 55758383 - IsActive: true - UI Component: - Canvas ID: 0 - Hovered: false - Clicked: false - IsActive: true - Scripts: ~ -- EID: 10 - Name: Credits Button - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: -700, y: -200, z: 0.400000006} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 450, y: 100, z: 1} - IsActive: true - Renderable Component: - Mesh: 141771688 - Material: 129340704 - IsActive: true - Button Component: - Default Texture: 52901020 - Hovered Texture: 62235279 - Clicked Texture: 64722619 - IsActive: true - UI Component: - Canvas ID: 0 - Hovered: false - Clicked: false - IsActive: true - Scripts: ~ -- EID: 11 - Name: Options Button - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: -700, y: -300, z: 0.400000006} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 450, y: 100, z: 1} - IsActive: true - Renderable Component: - Mesh: 141771688 - Material: 129340704 - IsActive: true - Button Component: - Default Texture: 52901020 - Hovered Texture: 62235279 - Clicked Texture: 64722619 + Material: 121834459 IsActive: true UI Component: Canvas ID: 0 @@ -210,25 +55,236 @@ maxScale: 1.20000005 duration: 1.5 - EID: 54 - Name: test - IsActive: false - NumberOfChildren: 0 + Name: Main Menu Button Group + IsActive: true + NumberOfChildren: 6 Components: Transform Component: - Translate: {x: 0, y: 0, z: 0} - Rotate: {x: 0, y: 0, z: 3.14159274} - Scale: {x: 1920, y: 500, z: 1} - IsActive: false - Renderable Component: - Mesh: 141771688 - Material: 129138332 - IsActive: false + Translate: {x: -60, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.899999976, y: 0.899999976, z: 1} + IsActive: true UI Component: Canvas ID: 0 Hovered: false Clicked: false - IsActive: false + IsActive: true Scripts: ~ +- EID: 5 + Name: Start Game Button + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -700, y: 100, z: 0.400000006} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 450, y: 100, z: 1} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 129340704 + IsActive: true + Button Component: + Default Texture: 63979907 + Hovered Texture: 51379325 + Clicked Texture: 66788278 + IsActive: true + UI Component: + Canvas ID: 0 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: ChangeSceneButton + Enabled: true + sceneID: 91947920 + - Type: SHADE_Scripting.UI.ButtonFX + Enabled: true + onHoverEnterSound: Empty + onHoverExitSound: Empty + onClickSound: event:/UI/mouse_down_element + onReleaseSound: Empty + hoverScale: 1.10000002 + clickScale: 0.899999976 +- EID: 6 + Name: Quit Game Button + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -700, y: -525, z: 0.400000006} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 450, y: 100, z: 1} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 129340704 + IsActive: true + Button Component: + Default Texture: 61602036 + Hovered Texture: 58910810 + Clicked Texture: 57786063 + IsActive: true + UI Component: + Canvas ID: 0 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: QuitButton + Enabled: true + - Type: SHADE_Scripting.UI.ButtonFX + Enabled: true + onHoverEnterSound: Empty + onHoverExitSound: Empty + onClickSound: event:/UI/mouse_down_element + onReleaseSound: Empty + hoverScale: 1.10000002 + clickScale: 0.899999976 +- EID: 7 + Name: Level Select Button + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -700, y: -25, z: 0.400000006} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 450, y: 100, z: 1} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 129340704 + IsActive: true + Button Component: + Default Texture: 66852025 + Hovered Texture: 65992947 + Clicked Texture: 57197441 + IsActive: true + UI Component: + Canvas ID: 0 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.ButtonFX + Enabled: true + onHoverEnterSound: Empty + onHoverExitSound: Empty + onClickSound: event:/UI/mouse_down_element + onReleaseSound: Empty + hoverScale: 1.10000002 + clickScale: 0.899999976 + - Type: SHADE_Scripting.UI.ChangeCanvasButton + Enabled: true + canvasToActivate: 50 +- EID: 9 + Name: How To Play Button + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -700, y: -150, z: 0.400000006} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 450, y: 100, z: 1} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 129340704 + IsActive: true + Button Component: + Default Texture: 66240282 + Hovered Texture: 61984910 + Clicked Texture: 58181792 + IsActive: true + UI Component: + Canvas ID: 0 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.ButtonFX + Enabled: true + onHoverEnterSound: Empty + onHoverExitSound: Empty + onClickSound: event:/UI/mouse_down_element + onReleaseSound: Empty + hoverScale: 1.10000002 + clickScale: 0.899999976 + - Type: SHADE_Scripting.UI.ChangeCanvasButton + Enabled: true + canvasToActivate: 13 +- EID: 10 + Name: Credits Button + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -700, y: -275, z: 0.400000006} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 450, y: 100, z: 1} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 129340704 + IsActive: true + Button Component: + Default Texture: 64474447 + Hovered Texture: 55990309 + Clicked Texture: 51792742 + IsActive: true + UI Component: + Canvas ID: 0 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.ButtonFX + Enabled: true + onHoverEnterSound: Empty + onHoverExitSound: Empty + onClickSound: event:/UI/mouse_down_element + onReleaseSound: Empty + hoverScale: 1.10000002 + clickScale: 0.899999976 + - Type: SHADE_Scripting.UI.ChangeCanvasButton + Enabled: true + canvasToActivate: 46 +- EID: 11 + Name: Options Button + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -700, y: -400, z: 0.400000006} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 450, y: 100, z: 1} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 129340704 + IsActive: true + Button Component: + Default Texture: 58867111 + Hovered Texture: 54697998 + Clicked Texture: 62936121 + IsActive: true + UI Component: + Canvas ID: 0 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.ButtonFX + Enabled: true + onHoverEnterSound: Empty + onHoverExitSound: Empty + onClickSound: event:/UI/mouse_down_element + onReleaseSound: Empty + hoverScale: 1.10000002 + clickScale: 0.899999976 + - Type: SHADE_Scripting.UI.ChangeCanvasButton + Enabled: true + canvasToActivate: 19 - EID: 2 Name: Light IsActive: true @@ -300,7 +356,7 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 0, y: 0, z: 0.5} + Translate: {x: 0, y: 0, z: 2.5} Rotate: {x: 0, y: 0, z: 0} Scale: {x: 1920, y: 1080, z: 1} IsActive: true @@ -322,7 +378,7 @@ Transform Component: Translate: {x: 0, y: 0, z: 0.400000006} Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 1344, y: 756, z: 1} + Scale: {x: 1167.40002, y: 900, z: 1} IsActive: true Renderable Component: Mesh: 141771688 @@ -333,7 +389,14 @@ Hovered: false Clicked: false IsActive: true - Scripts: ~ + Scripts: + - Type: SHADE_Scripting.UI.MultiImageList + Enabled: true + imageAssetList: + - 124926341 + - 128721520 + - 124482180 + - 129768803 - EID: 16 Name: NextButton IsActive: true @@ -342,23 +405,35 @@ Transform Component: Translate: {x: 800, y: 0, z: 0} Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 100, y: 100, z: 1} + Scale: {x: 100, y: 382, z: 1} IsActive: true Renderable Component: Mesh: 141771688 Material: 129340704 IsActive: true Button Component: - Default Texture: 0 - Hovered Texture: 0 - Clicked Texture: 0 + Default Texture: 55358401 + Hovered Texture: 59400474 + Clicked Texture: 52333376 IsActive: true UI Component: Canvas ID: 13 Hovered: false Clicked: false IsActive: true - Scripts: ~ + Scripts: + - Type: SHADE_Scripting.UI.MultiImageListControlButton + Enabled: true + isNext: true + multiImageList: 15 + - Type: SHADE_Scripting.UI.ButtonFX + Enabled: true + onHoverEnterSound: Empty + onHoverExitSound: Empty + onClickSound: event:/UI/mouse_down_element + onReleaseSound: Empty + hoverScale: 1.10000002 + clickScale: 0.899999976 - EID: 17 Name: PrevButton IsActive: true @@ -366,24 +441,36 @@ Components: Transform Component: Translate: {x: -800, y: 0, z: 0} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 100, y: 100, z: 1} + Rotate: {x: 0, y: 0, z: 3.14159274} + Scale: {x: 100, y: 382, z: 1} IsActive: true Renderable Component: Mesh: 141771688 Material: 129340704 IsActive: true Button Component: - Default Texture: 0 - Hovered Texture: 0 - Clicked Texture: 0 + Default Texture: 55358401 + Hovered Texture: 59400474 + Clicked Texture: 52333376 IsActive: true UI Component: Canvas ID: 13 Hovered: false Clicked: false IsActive: true - Scripts: ~ + Scripts: + - Type: SHADE_Scripting.UI.MultiImageListControlButton + Enabled: true + isNext: false + multiImageList: 15 + - Type: SHADE_Scripting.UI.ButtonFX + Enabled: true + onHoverEnterSound: Empty + onHoverExitSound: Empty + onClickSound: event:/UI/mouse_down_element + onReleaseSound: Empty + hoverScale: 1.10000002 + clickScale: 0.899999976 - EID: 18 Name: BackButton IsActive: true @@ -391,7 +478,7 @@ Components: Transform Component: Translate: {x: -800, y: 450, z: 0} - Rotate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 3.14159274} Scale: {x: 100, y: 100, z: 1} IsActive: true Renderable Component: @@ -399,16 +486,27 @@ Material: 129340704 IsActive: true Button Component: - Default Texture: 0 - Hovered Texture: 0 - Clicked Texture: 0 + Default Texture: 55358401 + Hovered Texture: 59400474 + Clicked Texture: 52333376 IsActive: true UI Component: Canvas ID: 13 Hovered: false Clicked: false IsActive: true - Scripts: ~ + Scripts: + - Type: SHADE_Scripting.UI.ChangeCanvasButton + Enabled: true + canvasToActivate: 0 + - Type: SHADE_Scripting.UI.ButtonFX + Enabled: true + onHoverEnterSound: Empty + onHoverExitSound: Empty + onClickSound: event:/UI/mouse_down_element + onReleaseSound: Empty + hoverScale: 1.10000002 + clickScale: 0.899999976 - EID: 19 Name: Options Canvas IsActive: false @@ -419,26 +517,33 @@ Canvas Height: 1080 Scale by canvas width: false IsActive: false - Scripts: ~ + Scripts: + - Type: SHADE_Scripting.UI.Options + Enabled: true + masterVolSlider: 29 + sfxVolSlider: 30 + bgmVolSlider: 31 + fovSlider: 37 + sensitivitySlider: 38 - EID: 20 Name: BackGround - IsActive: false + IsActive: true NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 0, y: 0, z: 1} + Translate: {x: 0, y: 0, z: 1.5} Rotate: {x: 0, y: 0, z: 0} Scale: {x: 1920, y: 1080, z: 1} - IsActive: false + IsActive: true Renderable Component: Mesh: 141771688 Material: 121834459 - IsActive: false + IsActive: true UI Component: Canvas ID: 19 Hovered: false Clicked: false - IsActive: false + IsActive: true Scripts: ~ - EID: 21 Name: BackButton @@ -447,7 +552,7 @@ Components: Transform Component: Translate: {x: -800, y: 450, z: 0} - Rotate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 3.14159274} Scale: {x: 100, y: 100, z: 1} IsActive: true Renderable Component: @@ -455,29 +560,42 @@ Material: 129340704 IsActive: true Button Component: - Default Texture: 0 - Hovered Texture: 0 - Clicked Texture: 0 + Default Texture: 55358401 + Hovered Texture: 59400474 + Clicked Texture: 52333376 IsActive: true UI Component: Canvas ID: 19 Hovered: false Clicked: false IsActive: true - Scripts: ~ + Scripts: + - Type: SHADE_Scripting.UI.ChangeCanvasButton + Enabled: true + canvasToActivate: 0 + - Type: SHADE_Scripting.UI.ButtonFX + Enabled: true + onHoverEnterSound: Empty + onHoverExitSound: Empty + onClickSound: event:/UI/mouse_down_element + onReleaseSound: Empty + hoverScale: 1.10000002 + clickScale: 0.899999976 - EID: 22 Name: Options Title Text IsActive: true NumberOfChildren: 0 Components: Transform Component: - Translate: {x: -150, y: 400, z: -0.5} + Translate: {x: -150, y: 400, z: 0.100000001} Rotate: {x: 0, y: 0, z: 0} Scale: {x: 100, y: 100, z: 1} IsActive: true Text Renderer Component: Text: Options Font: 174412429 + Color: {x: 0, y: 0, z: 0, w: 1} + Text Size: {x: 1, y: 1, z: 1} IsActive: true UI Component: Canvas ID: 19 @@ -491,13 +609,15 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: -900, y: 300, z: -0.5} + Translate: {x: -900, y: 300, z: 0.100000001} Rotate: {x: 0, y: 0, z: 0} Scale: {x: 100, y: 100, z: 1} IsActive: true Text Renderer Component: Text: Audio Font: 174412429 + Color: {x: 0, y: 0, z: 0, w: 1} + Text Size: {x: 1, y: 1, z: 1} IsActive: true UI Component: Canvas ID: 19 @@ -527,13 +647,15 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 0, y: 0, z: -0.5} + Translate: {x: 0, y: 0, z: 0.100000001} Rotate: {x: 0, y: 0, z: 0} Scale: {x: 75, y: 75, z: 1} IsActive: true Text Renderer Component: Text: Master Font: 174412429 + Color: {x: 0, y: 0, z: 0, w: 1} + Text Size: {x: 1, y: 1, z: 1} IsActive: true UI Component: Canvas ID: 19 @@ -547,13 +669,15 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 0, y: -100, z: -0.5} + Translate: {x: 0, y: -100, z: 0.100000001} Rotate: {x: 0, y: 0, z: 0} Scale: {x: 75, y: 75, z: 1} IsActive: true Text Renderer Component: Text: SFX Font: 174412429 + Color: {x: 0, y: 0, z: 0, w: 1} + Text Size: {x: 1, y: 1, z: 1} IsActive: true UI Component: Canvas ID: 19 @@ -567,13 +691,15 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 0, y: -200, z: -0.5} + Translate: {x: 0, y: -200, z: 0.100000001} Rotate: {x: 0, y: 0, z: 0} Scale: {x: 75, y: 75, z: 1} IsActive: true Text Renderer Component: Text: BGM Font: 174412429 + Color: {x: 0, y: 0, z: 0, w: 1} + Text Size: {x: 1, y: 1, z: 1} IsActive: true UI Component: Canvas ID: 19 @@ -613,6 +739,8 @@ IsActive: true Slider Component: Slider Value: 1 + Min Value: 0 + Max Value: 100 IsActive: true UI Component: Canvas ID: 19 @@ -636,6 +764,8 @@ IsActive: true Slider Component: Slider Value: 1 + Min Value: 0 + Max Value: 100 IsActive: true UI Component: Canvas ID: 19 @@ -659,6 +789,8 @@ IsActive: true Slider Component: Slider Value: 1 + Min Value: 0 + Max Value: 100 IsActive: true UI Component: Canvas ID: 19 @@ -672,13 +804,15 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: -900, y: -120, z: -0.5} + Translate: {x: -900, y: -120, z: 0.100000001} Rotate: {x: 0, y: 0, z: 0} Scale: {x: 100, y: 100, z: 1} IsActive: true Text Renderer Component: Text: Camera Font: 174412429 + Color: {x: 0, y: 0, z: 0, w: 1} + Text Size: {x: 1, y: 1, z: 1} IsActive: true UI Component: Canvas ID: 19 @@ -689,7 +823,7 @@ - EID: 33 Name: Camera Text Group IsActive: true - NumberOfChildren: 2 + NumberOfChildren: 4 Components: Transform Component: Translate: {x: -900, y: -220, z: 0} @@ -708,13 +842,15 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 0, y: 0, z: -0.5} + Translate: {x: 0, y: 0, z: 0.100000001} Rotate: {x: 0, y: 0, z: 0} Scale: {x: 75, y: 75, z: 1} IsActive: true Text Renderer Component: Text: FOV Font: 174412429 + Color: {x: 0, y: 0, z: 0, w: 1} + Text Size: {x: 1, y: 1, z: 1} IsActive: true UI Component: Canvas ID: 19 @@ -728,13 +864,15 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 0, y: -100, z: -0.5} + Translate: {x: 0, y: -100, z: 0.100000001} Rotate: {x: 0, y: 0, z: 0} Scale: {x: 75, y: 75, z: 1} IsActive: true Text Renderer Component: Text: Sensitivity Font: 174412429 + Color: {x: 0, y: 0, z: 0, w: 1} + Text Size: {x: 1, y: 1, z: 1} IsActive: true UI Component: Canvas ID: 19 @@ -742,10 +880,54 @@ Clicked: false IsActive: true Scripts: ~ +- EID: 449 + Name: Camera Invert X Text + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: -200, z: 0.100000001} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 75, y: 75, z: 1} + IsActive: false + Text Renderer Component: + Text: "Camera Invert X:" + Font: 174412429 + Color: {x: 0, y: 0, z: 0, w: 1} + Text Size: {x: 1, y: 1, z: 1} + IsActive: false + UI Component: + Canvas ID: 19 + Hovered: false + Clicked: false + IsActive: false + Scripts: ~ +- EID: 447 + Name: Camera Invert Y Text + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 800, y: -200, z: 0.100000001} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 75, y: 75, z: 1} + IsActive: false + Text Renderer Component: + Text: "Y:" + Font: 174412429 + Color: {x: 0, y: 0, z: 0, w: 1} + Text Size: {x: 1, y: 1, z: 1} + IsActive: false + UI Component: + Canvas ID: 19 + Hovered: false + Clicked: false + IsActive: false + Scripts: ~ - EID: 36 Name: Camera Slider Group IsActive: true - NumberOfChildren: 2 + NumberOfChildren: 4 Components: Transform Component: Translate: {x: 100, y: -200, z: 0} @@ -774,6 +956,8 @@ IsActive: true Slider Component: Slider Value: 1 + Min Value: 45 + Max Value: 120 IsActive: true UI Component: Canvas ID: 19 @@ -797,6 +981,8 @@ IsActive: true Slider Component: Slider Value: 1 + Min Value: 0 + Max Value: 100 IsActive: true UI Component: Canvas ID: 19 @@ -804,6 +990,56 @@ Clicked: false IsActive: true Scripts: ~ +- EID: 448 + Name: Invert X Toggle Button + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -300, y: -200, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 75, y: 75, z: 1} + IsActive: false + Renderable Component: + Mesh: 141771688 + Material: 129340704 + IsActive: false + Toggle Button Component: + Non Toggled Texture: 55358401 + Toggled Texture: 52333376 + Value: false + IsActive: false + UI Component: + Canvas ID: 19 + Hovered: false + Clicked: false + IsActive: false + Scripts: ~ +- EID: 445 + Name: Invert Y Toggle Button + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -50, y: -200, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 75, y: 75, z: 1} + IsActive: false + Renderable Component: + Mesh: 141771688 + Material: 129340704 + IsActive: false + Toggle Button Component: + Non Toggled Texture: 55358401 + Toggled Texture: 52333376 + Value: false + IsActive: false + UI Component: + Canvas ID: 19 + Hovered: false + Clicked: false + IsActive: false + Scripts: ~ - EID: 39 Name: Audio Slider Text Group IsActive: true @@ -826,60 +1062,75 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 0, y: 0, z: 0} + Translate: {x: 0, y: 0, z: 1} Rotate: {x: 0, y: 0, z: 0} Scale: {x: 75, y: 75, z: 1} IsActive: true Text Renderer Component: Text: 100 Font: 174412429 + Color: {x: 0, y: 0, z: 0, w: 1} + Text Size: {x: 1, y: 1, z: 1} IsActive: true UI Component: Canvas ID: 19 Hovered: false Clicked: false IsActive: true - Scripts: ~ + Scripts: + - Type: SHADE_Scripting.UI.SliderText + Enabled: true + sliderObj: 29 - EID: 41 Name: SFX Volume Slider Text IsActive: true NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 0, y: -100, z: 0.5} + Translate: {x: 0, y: -100, z: 1} Rotate: {x: 0, y: 0, z: 0} Scale: {x: 75, y: 75, z: 1} IsActive: true Text Renderer Component: Text: 100 Font: 174412429 + Color: {x: 0, y: 0, z: 0, w: 1} + Text Size: {x: 1, y: 1, z: 1} IsActive: true UI Component: Canvas ID: 19 Hovered: false Clicked: false IsActive: true - Scripts: ~ + Scripts: + - Type: SHADE_Scripting.UI.SliderText + Enabled: true + sliderObj: 30 - EID: 42 Name: BGM Volume Slider Text IsActive: true NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 0, y: -200, z: 0.5} + Translate: {x: 0, y: -200, z: 1} Rotate: {x: 0, y: 0, z: 0} Scale: {x: 75, y: 75, z: 1} IsActive: true Text Renderer Component: Text: 100 Font: 174412429 + Color: {x: 0, y: 0, z: 0, w: 1} + Text Size: {x: 1, y: 1, z: 1} IsActive: true UI Component: Canvas ID: 19 Hovered: false Clicked: false IsActive: true - Scripts: ~ + Scripts: + - Type: SHADE_Scripting.UI.SliderText + Enabled: true + sliderObj: 31 - EID: 43 Name: Camera Slider Text Group IsActive: true @@ -902,44 +1153,54 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 0, y: 0, z: 0} + Translate: {x: 0, y: 0, z: 1} Rotate: {x: 0, y: 0, z: 0} Scale: {x: 75, y: 75, z: 1} IsActive: true Text Renderer Component: Text: 100 Font: 174412429 + Color: {x: 0, y: 0, z: 0, w: 1} + Text Size: {x: 1, y: 1, z: 1} IsActive: true UI Component: Canvas ID: 19 Hovered: false Clicked: false IsActive: true - Scripts: ~ + Scripts: + - Type: SHADE_Scripting.UI.SliderText + Enabled: true + sliderObj: 37 - EID: 45 Name: Sensitivity Slider Text IsActive: true NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 0, y: -100, z: 0.5} + Translate: {x: 0, y: -100, z: 1} Rotate: {x: 0, y: 0, z: 0} Scale: {x: 75, y: 75, z: 1} IsActive: true Text Renderer Component: Text: 100 Font: 174412429 + Color: {x: 0, y: 0, z: 0, w: 1} + Text Size: {x: 1, y: 1, z: 1} IsActive: true UI Component: Canvas ID: 19 Hovered: false Clicked: false IsActive: true - Scripts: ~ + Scripts: + - Type: SHADE_Scripting.UI.SliderText + Enabled: true + sliderObj: 38 - EID: 46 Name: Credits Canvas IsActive: false - NumberOfChildren: 3 + NumberOfChildren: 4 Components: Canvas Component: Canvas Width: 1920 @@ -948,12 +1209,94 @@ IsActive: false Scripts: ~ - EID: 47 + Name: Scrolling Credits + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: -3800, z: 1.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1920, y: 8026, z: 1} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 120332672 + IsActive: true + UI Component: + Canvas ID: 46 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.ScrollingCredits + Enabled: true + endY: 4000 + duration: 20 +- EID: 48 + Name: BackButton + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -800, y: 450, z: 0} + Rotate: {x: 0, y: 0, z: 3.14159274} + Scale: {x: 100, y: 100, z: 1} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 129340704 + IsActive: true + Button Component: + Default Texture: 55358401 + Hovered Texture: 59400474 + Clicked Texture: 52333376 + IsActive: true + UI Component: + Canvas ID: 46 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.ChangeCanvasButton + Enabled: true + canvasToActivate: 0 + - Type: SHADE_Scripting.UI.ButtonFX + Enabled: true + onHoverEnterSound: Empty + onHoverExitSound: Empty + onClickSound: event:/UI/mouse_down_element + onReleaseSound: Empty + hoverScale: 1.10000002 + clickScale: 0.899999976 +- EID: 49 + Name: Credits Title Text + 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: false + Text Renderer Component: + Text: Credits + Font: 174412429 + Color: {x: 0, y: 0, z: 0, w: 1} + Text Size: {x: 1, y: 1, z: 1} + IsActive: false + UI Component: + Canvas ID: 46 + Hovered: false + Clicked: false + IsActive: false + Scripts: ~ +- EID: 55 Name: BackGround IsActive: false NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 0, y: 0, z: 1} + Translate: {x: 0, y: 0, z: 1.5} Rotate: {x: 0, y: 0, z: 0} Scale: {x: 1920, y: 1080, z: 1} IsActive: false @@ -967,51 +1310,6 @@ Clicked: false IsActive: false Scripts: ~ -- EID: 48 - Name: BackButton - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: -800, y: 450, z: 0} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 100, y: 100, z: 1} - IsActive: true - Renderable Component: - Mesh: 141771688 - Material: 129340704 - IsActive: true - Button Component: - Default Texture: 0 - Hovered Texture: 0 - Clicked Texture: 0 - IsActive: true - UI Component: - Canvas ID: 46 - Hovered: false - Clicked: false - IsActive: true - Scripts: ~ -- EID: 49 - Name: Credits Title Text - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: -150, y: 400, z: -0.5} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 100, y: 100, z: 1} - IsActive: true - Text Renderer Component: - Text: Credits - Font: 174412429 - IsActive: true - UI Component: - Canvas ID: 46 - Hovered: false - Clicked: false - IsActive: true - Scripts: ~ - EID: 50 Name: Level Select Canvas IsActive: false @@ -1025,23 +1323,23 @@ Scripts: ~ - EID: 51 Name: BackGround - IsActive: false + IsActive: true NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 0, y: 0, z: 1} + Translate: {x: 0, y: 0, z: 1.5} Rotate: {x: 0, y: 0, z: 0} Scale: {x: 1920, y: 1080, z: 1} - IsActive: false + IsActive: true Renderable Component: Mesh: 141771688 Material: 121834459 - IsActive: false + IsActive: true UI Component: Canvas ID: 50 Hovered: false Clicked: false - IsActive: false + IsActive: true Scripts: ~ - EID: 52 Name: BackButton @@ -1050,7 +1348,7 @@ Components: Transform Component: Translate: {x: -800, y: 450, z: 0} - Rotate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 3.14159274} Scale: {x: 100, y: 100, z: 1} IsActive: true Renderable Component: @@ -1058,9 +1356,42 @@ Material: 129340704 IsActive: true Button Component: - Default Texture: 0 - Hovered Texture: 0 - Clicked Texture: 0 + Default Texture: 55358401 + Hovered Texture: 59400474 + Clicked Texture: 52333376 + IsActive: true + UI Component: + Canvas ID: 50 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.ChangeCanvasButton + Enabled: true + canvasToActivate: 0 + - Type: SHADE_Scripting.UI.ButtonFX + Enabled: true + onHoverEnterSound: Empty + onHoverExitSound: Empty + onClickSound: event:/UI/mouse_down_element + onReleaseSound: Empty + hoverScale: 1.10000002 + clickScale: 0.899999976 +- EID: 53 + Name: Level Select Title Text + IsActive: true + 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 + Text Renderer Component: + Text: Level Select + Font: 174412429 + Color: {x: 0, y: 0, z: 0, w: 1} + Text Size: {x: 1, y: 1, z: 1} IsActive: true UI Component: Canvas ID: 50 @@ -1068,23 +1399,39 @@ Clicked: false IsActive: true Scripts: ~ -- EID: 53 - Name: Level Select Title Text +- EID: 450 + Name: TransitionCanvas + IsActive: true + NumberOfChildren: 1 + Components: + Canvas Component: + Canvas Width: 1920 + Canvas Height: 1080 + Scale by canvas width: false + IsActive: true + Scripts: ~ +- EID: 65982 + Name: Transition IsActive: true NumberOfChildren: 0 Components: Transform Component: - Translate: {x: -150, y: 400, z: -0.5} + Translate: {x: 0, y: 0, z: 0.100000001} Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 100, y: 100, z: 1} + Scale: {x: 2500, y: 1080, z: 1} IsActive: true - Text Renderer Component: - Text: Level Select - Font: 174412429 + Renderable Component: + Mesh: 141771688 + Material: 120016136 IsActive: true UI Component: - Canvas ID: 50 + Canvas ID: 450 Hovered: false Clicked: false IsActive: true - Scripts: ~ \ No newline at end of file + Scripts: + - Type: SHADE_Scripting.UI.SceneFadeInOut + Enabled: true + alphaValue: 1 + fadeInTime: 0.5 + fadeOutTime: 0.5 \ No newline at end of file diff --git a/Assets/Scenes/PhysicsTest.shade b/Assets/Scenes/PhysicsTest.shade index 20903809..91afbfa3 100644 --- a/Assets/Scenes/PhysicsTest.shade +++ b/Assets/Scenes/PhysicsTest.shade @@ -5,13 +5,14 @@ Components: Transform Component: Translate: {x: 0, y: 7, z: 0} - Rotate: {x: 1.48352981, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} Scale: {x: 0.999999344, y: 0.999999821, z: 0.999999523} IsActive: true RigidBody Component: Type: Dynamic Drag: 0.00999999978 Angular Drag: 0.100000001 + Gravity Scale: 1 Use Gravity: true Interpolate: false Sleeping Enabled: true @@ -26,8 +27,9 @@ Colliders: - Is Trigger: false Collision Tag: 0 - Type: Box - Half Extents: {x: 1, y: 1, z: 1} + Type: Capsule + Radius: 1 + Height: 2 Friction: 0.400000006 Bounciness: 0 Density: 1 @@ -75,10 +77,10 @@ Yaw: 0 Roll: 0 Width: 1920 - Height: 1080 Near: 0.00999999978 Far: 10000 Perspective: true + FOV: 90 IsActive: true Scripts: ~ - EID: 65539 @@ -187,6 +189,7 @@ Type: Dynamic Drag: 0.00999999978 Angular Drag: 0.100000001 + Gravity Scale: 1 Use Gravity: true Interpolate: true Sleeping Enabled: true 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/Scenes/WinScene.shade b/Assets/Scenes/WinScene.shade index 0727860e..5aea6f35 100644 --- a/Assets/Scenes/WinScene.shade +++ b/Assets/Scenes/WinScene.shade @@ -20,6 +20,7 @@ Canvas Component: Canvas Width: 1920 Canvas Height: 1080 + Scale by canvas width: false IsActive: true Scripts: ~ - EID: 2 @@ -28,7 +29,7 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 0, y: 0, z: 0} + Translate: {x: 0, y: 0, z: 0.300000012} Rotate: {x: 0, y: 0, z: 0} Scale: {x: 1920, y: 1080, z: 1} IsActive: true @@ -38,6 +39,8 @@ IsActive: true UI Component: Canvas ID: 1 + Hovered: false + Clicked: false IsActive: true Scripts: ~ - EID: 5 @@ -46,51 +49,71 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 0, y: 75, z: 0} + Translate: {x: 0, y: 75, z: 0.200000003} Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 400, y: 200, z: 1} + Scale: {x: 400, y: 100, z: 1} IsActive: true Renderable Component: Mesh: 141771688 Material: 129340704 IsActive: true Button Component: - Default Texture: 65788519 - Hovered Texture: 55999018 - Clicked Texture: 66382894 + Default Texture: 58945566 + Hovered Texture: 58758882 + Clicked Texture: 50335070 IsActive: true UI Component: Canvas ID: 1 + Hovered: false + Clicked: false IsActive: true Scripts: - Type: ChangeSceneButton Enabled: true sceneID: 97158628 + - Type: SHADE_Scripting.UI.ButtonFX + Enabled: true + onHoverEnterSound: Empty + onHoverExitSound: Empty + onClickSound: event:/UI/mouse_down_element + onReleaseSound: Empty + hoverScale: 1.10000002 + clickScale: 0.899999976 - EID: 6 Name: Quit Button IsActive: true NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 0, y: -200, z: 0} + Translate: {x: 0, y: -200, z: 0.200000003} Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 400, y: 200, z: 1} + Scale: {x: 400, y: 100, z: 1} IsActive: true Renderable Component: Mesh: 141771688 Material: 129340704 IsActive: true Button Component: - Default Texture: 66477839 - Hovered Texture: 65045286 - Clicked Texture: 58607560 + Default Texture: 61602036 + Hovered Texture: 58910810 + Clicked Texture: 57786063 IsActive: true UI Component: Canvas ID: 1 + Hovered: false + Clicked: false IsActive: true Scripts: - Type: QuitButton Enabled: true + - Type: SHADE_Scripting.UI.ButtonFX + Enabled: true + onHoverEnterSound: Empty + onHoverExitSound: Empty + onClickSound: event:/UI/mouse_down_element + onReleaseSound: Empty + hoverScale: 1.10000002 + clickScale: 0.899999976 - EID: 3 Name: Camera IsActive: true @@ -107,7 +130,6 @@ Yaw: 0 Roll: 0 Width: 1920 - Height: 1080 Near: 0.00999999978 Far: 10000 Perspective: true @@ -123,4 +145,48 @@ - Type: EndScene Enabled: true mainGameScene: 86098106 - mainMainScene: 97158628 \ No newline at end of file + mainMainScene: 97158628 +- EID: 7 + Name: TweenManager + IsActive: true + NumberOfChildren: 0 + Components: ~ + Scripts: + - Type: SHADE_Scripting.UI.TweenManager + Enabled: true +- EID: 450 + Name: TransitionCanvas + IsActive: true + NumberOfChildren: 1 + Components: + Canvas Component: + Canvas Width: 1920 + Canvas Height: 1080 + Scale by canvas width: false + IsActive: true + Scripts: ~ +- EID: 65982 + Name: Transition + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0.100000001} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 2500, y: 1080, z: 1} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 120016136 + IsActive: true + UI Component: + Canvas ID: 450 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.SceneFadeInOut + Enabled: true + alphaValue: 1 + fadeInTime: 0.5 + fadeOutTime: 0.5 \ No newline at end of file diff --git a/Assets/Scripts/Audio/AudioHandler.cs b/Assets/Scripts/Audio/AudioHandler.cs index c6067819..4743b4c5 100644 --- a/Assets/Scripts/Audio/AudioHandler.cs +++ b/Assets/Scripts/Audio/AudioHandler.cs @@ -12,7 +12,7 @@ namespace SHADE_Scripting.Audio public static Dictionary audioClipHandlers = new Dictionary(); //Functions here, maybe - public static void stopAllSounds(bool fadeOut) + public static void StopAllSounds(bool fadeOut) { foreach (KeyValuePair h in audioClipHandlers) { @@ -20,7 +20,7 @@ namespace SHADE_Scripting.Audio } } - public static void pauseAllSounds(bool pause) + public static void PauseAllSounds(bool pause) { foreach (KeyValuePair h in audioClipHandlers) { 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..2aebc3b7 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) @@ -104,6 +107,7 @@ public partial class LeafSearch : BehaviourTreeNode SetNodeData("isAlert", false); status = BehaviourTreeNodeStatus.FAILURE; onExit(BehaviourTreeNodeStatus.FAILURE); + screamOnce = false; return status; } else @@ -125,6 +129,7 @@ public partial class LeafSearch : BehaviourTreeNode //handleChaseStop(); status = BehaviourTreeNodeStatus.FAILURE; onExit(BehaviourTreeNodeStatus.FAILURE); + screamOnce = false; return status; } @@ -140,6 +145,7 @@ public partial class LeafSearch : BehaviourTreeNode //handleChaseStop(); status = BehaviourTreeNodeStatus.FAILURE; onExit(BehaviourTreeNodeStatus.FAILURE); + screamOnce = false; return status; } @@ -156,6 +162,7 @@ public partial class LeafSearch : BehaviourTreeNode //Debug.Log("Failure: Player has no collider"); status = BehaviourTreeNodeStatus.FAILURE; onExit(BehaviourTreeNodeStatus.FAILURE); + screamOnce = false; return status; } //Ray destination to target the centre of the player's collider instead of transform position @@ -173,6 +180,7 @@ public partial class LeafSearch : BehaviourTreeNode //handleChaseStop(); status = BehaviourTreeNodeStatus.FAILURE; onExit(BehaviourTreeNodeStatus.FAILURE); + screamOnce = false; return status; } else if (sightRayHit.Hit && sightRayHit.Other == player) @@ -188,31 +196,40 @@ 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) + { + 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/Player/SC_PickAndThrow.cs b/Assets/Scripts/Gameplay/Player/SC_PickAndThrow.cs index 2de54025..87ef2b85 100644 --- a/Assets/Scripts/Gameplay/Player/SC_PickAndThrow.cs +++ b/Assets/Scripts/Gameplay/Player/SC_PickAndThrow.cs @@ -21,17 +21,12 @@ public class PickAndThrow : Script private Collider itemCollider; private Item itemScript; private Transform raccoonHoldLocation; - private ThirdPersonCamera tpc; + public ThirdPersonCamera tpc { get; set; } private float lastXDir; private float lastZDir; private bool inRange = false; public bool throwItem = false; - private Vector3 prevTargetOffSet; - - public GameObject silhouettePlayer; - public Renderable silhouettePlayerRend; - public GameObject silhouetteBag; - public Renderable silhouetteBagRend; + public Vector3 prevTargetOffSet { get; set; } [Tooltip("Lenght of ray")] public float rayDistance = 1; @@ -58,41 +53,17 @@ public class PickAndThrow : Script if(!tpc) Debug.LogError("TPC EMPTY"); - if(!silhouettePlayer) - Debug.LogError("silhouettePlayer EMPTY"); - else - silhouettePlayerRend = silhouettePlayer.GetComponent(); - - if (!silhouetteBag) - Debug.LogError("silhouetteBag EMPTY"); - else - silhouetteBagRend = silhouetteBag.GetComponent(); - AudioHandler.audioClipHandlers["SFXThrow"] = Audio.CreateAudioClip("event:/Raccoon/raccoon_throw"); timer = delayTimer; } protected override void update() { - if (GameManager.Instance.GamePause) + if (GameManager.Instance.GamePause || !GameManager.Instance.stealFoodPopUpDone) { return; } - if (silhouettePlayerRend && silhouetteBagRend) - { - //wait for daniel - //0.00075f; - Vector3 dis = Camera.GetMainCamera().Position - GameObject.GetComponent().LocalPosition; - float disSqr = dis.GetSqrMagnitude(); - float ratio = System.Math.Clamp(1 - (disSqr / (1 + disSqr)), 0, 1.0f); - float temp = (1 - ratio) * 0.00075f; - if (temp <= 0.0006f) - temp = 0.1f; - silhouettePlayerRend.Material.SetProperty("data.offset", temp); - silhouetteBagRend.Material.SetProperty("data.offset", temp); - } - if (timer <= delayTimer) timer += Time.DeltaTimeF; @@ -171,7 +142,7 @@ public class PickAndThrow : Script protected override void fixedUpdate() { - if (GameManager.Instance.GamePause) + if (GameManager.Instance.GamePause || !GameManager.Instance.stealFoodPopUpDone) { return; } @@ -194,7 +165,7 @@ public class PickAndThrow : Script } } - private void ResetItemObject() + public void ResetItemObject() { itemRidigBody = null; itemTransform = null; diff --git a/Assets/Scripts/Gameplay/Player/SC_PlayerController.cs b/Assets/Scripts/Gameplay/Player/SC_PlayerController.cs index 87e42032..4e2f38ec 100644 --- a/Assets/Scripts/Gameplay/Player/SC_PlayerController.cs +++ b/Assets/Scripts/Gameplay/Player/SC_PlayerController.cs @@ -17,21 +17,12 @@ public class PlayerController : Script TOTAL } -/* public enum WalkingState - { - CARRY, - AIMING, - THROW, - WALK, - TOTAL - }*/ - public RigidBody rb { get; set; } public Transform tranform { get; set; } public Camera cam { get; set; } public CameraArm camArm { get; set; } private PickAndThrow pat; - public StateMachine stateMachine; + public StateMachine stateMachine { get; set; } public bool holdItem { get; set; } public bool isAiming { get; set; } @@ -85,6 +76,12 @@ public class PlayerController : Script [Tooltip("How heavy item will affect player jump")] public float heavyMultiper = 0.25f; + //silhouette===================================================================== + public GameObject silhouettePlayer; + private Renderable silhouettePlayerRend; + public GameObject silhouetteBag; + private Renderable silhouetteBagRend; + protected override void awake() { //default setup @@ -119,6 +116,21 @@ public class PlayerController : Script dictionary.Add(typeof(PlayerCaughtState), new PlayerCaughtState(stateMachine)); stateMachine.InitStateMachine(dictionary); + if (!silhouettePlayer) + Debug.LogError("silhouettePlayer EMPTY"); + else + { + silhouettePlayerRend = silhouettePlayer.GetComponent(); + silhouettePlayerRend.Material.SetProperty("data.offset", 0.1f); + } + + if (!silhouetteBag) + Debug.LogError("silhouetteBag EMPTY"); + else + { + silhouetteBagRend = silhouetteBag.GetComponent(); + silhouetteBagRend.Material.SetProperty("data.offset", 0.1f); + } } protected override void lateUpdate() @@ -127,26 +139,23 @@ public class PlayerController : Script protected override void update() { - if (GameManager.Instance.GamePause) + if (GameManager.Instance.GamePause || !GameManager.Instance.stealFoodPopUpDone) { return; } - if (delayTimer <= 1) - delayTimer += Time.DeltaTimeF; + if (silhouettePlayerRend && silhouetteBagRend) + { + Vector3 dis = Camera.GetMainCamera().Position - GameObject.GetComponent().LocalPosition; + float disSqr = dis.GetSqrMagnitude(); + float ratio = System.Math.Clamp(1 - (disSqr / (1 + disSqr)), 0, 1.0f); + float temp = (1 - ratio) * 0.00075f; + if (temp <= 0.0006f) + temp = 0.1f; + silhouettePlayerRend.Material.SetProperty("data.offset", temp); + silhouetteBagRend.Material.SetProperty("data.offset", temp); + } - if (delayTimer < 1) - { - if (tranform && respawnPoint && rb) - { - rb.LinearVelocity = Vector3.Zero; - tranform.LocalPosition = respawnPoint.GetComponent().LocalPosition; - } - } - else - { - rb.FreezePositionY = false; - } //PickAndThrow check if (!pat) { @@ -156,13 +165,15 @@ public class PlayerController : Script } if (!cam) + { cam = GetComponentInChildren(); + if(pat) + cam.FOV = pat.defaultFOV; + } if(!camArm) camArm = GetComponentInChildren(); - //tempFix - if (tranform) - tranform.LocalEulerAngles = new Vector3(0.0f, tranform.LocalEulerAngles.y, 0.0f); + GotCaught(); Rotation(); @@ -178,7 +189,7 @@ public class PlayerController : Script protected override void fixedUpdate() { - if (GameManager.Instance.GamePause) + if (GameManager.Instance.GamePause || !GameManager.Instance.stealFoodPopUpDone) { return; } @@ -333,10 +344,11 @@ public class PlayerController : Script private void Rotation() { + tranform.LocalEulerAngles = new Vector3(0.0f, tranform.LocalEulerAngles.y, 0.0f); if (isMoveKeyPress && tranform && !isAiming) { Quaternion currentRotation = tranform.LocalRotation; - Quaternion targetRotation = Quaternion.LookRotation(new Vector3(axisMove.x, 0.0f, axisMove.y), new Vector3(0.0f, 1.0f, 0.0f)); + Quaternion targetRotation = Quaternion.Euler(0.0f, MathF.Atan2(axisMove.x,axisMove.y), 0.0f); tranform.LocalRotation = Quaternion.Slerp(currentRotation, targetRotation, rotationFactorPerFrame * (float)Time.FixedDeltaTime); } else if (camArm && tranform && isAiming) @@ -345,6 +357,7 @@ public class PlayerController : Script Quaternion targetRotation = Quaternion.Euler(0.0f, SHADE.Math.DegreesToRadians(camArm.Yaw + 180.0f), 0.0f); tranform.LocalRotation = Quaternion.Slerp(currentRotation, targetRotation, rotationFactorPerFrame * (float)Time.FixedDeltaTime); } + } private void Gravity() @@ -396,9 +409,18 @@ public class PlayerController : Script if (pat && pat.item) { - holdItem = false; - isAiming = false; - pat.item.GetScript().returnBack = true; + if (holdItem) + { + holdItem = false; + pat.item.GetScript().returnBack = true; + } + if (isAiming) + { + isAiming = false; + cam.FOV = pat.defaultFOV; + camArm.TargetOffset = pat.prevTargetOffSet; + camArm.ArmLength = pat.tpc.armLength; + } } } } diff --git a/Assets/Scripts/Gameplay/Player/SC_ThirdPersonCamera.cs b/Assets/Scripts/Gameplay/Player/SC_ThirdPersonCamera.cs index b137609e..6e4e1f7b 100644 --- a/Assets/Scripts/Gameplay/Player/SC_ThirdPersonCamera.cs +++ b/Assets/Scripts/Gameplay/Player/SC_ThirdPersonCamera.cs @@ -27,7 +27,7 @@ namespace SHADE_Scripting { AddComponent(); } - GetComponent().SetMainCamera(); + if (!GetComponent()) { AddComponent(); @@ -41,7 +41,7 @@ namespace SHADE_Scripting protected override void update() { - if (GameManager.Instance.GamePause) + if (GameManager.Instance.GamePause || !GameManager.Instance.stealFoodPopUpDone) { return; } diff --git a/Assets/Scripts/Gameplay/SC_GameManager.cs b/Assets/Scripts/Gameplay/SC_GameManager.cs index 1cebe002..8398bb06 100644 --- a/Assets/Scripts/Gameplay/SC_GameManager.cs +++ b/Assets/Scripts/Gameplay/SC_GameManager.cs @@ -1,5 +1,6 @@ using SHADE; using SHADE_Scripting.Audio; +using SHADE_Scripting.UI; using System; using System.Collections.Generic; @@ -35,14 +36,19 @@ public class GameManager : Script public bool itemScored {get;set;} public int currMultiplierCombo { get; set;} public float multiplierFont = 60.0f; - private Vector3 fontScalar; public static GameManager Instance { get; private set; } public bool GamePause { get; set; } + public bool stealFoodPopUpDone { get; set; } + public bool PreviewLevelDone { get; set; } public bool itemShatter { get; set; } + //For scene transitions + private bool goingToWin; + private bool goingToLose; + protected override void awake() { if (Instance != null && Instance != this) @@ -56,48 +62,62 @@ public class GameManager : Script itemScored = false; currMultiplierCombo = 1; currMultiplierDuration = 0; - fontScalar = new Vector3(multiplierFont / maxMultiplierDuration, multiplierFont / maxMultiplierDuration , multiplierFont / maxMultiplierDuration); itemShatter = false; + GamePause = false; + stealFoodPopUpDone = false; + PreviewLevelDone = false; AudioHandler.audioClipHandlers["BGMWin"] = Audio.CreateAudioClip("event:/Music/stingers/game_win"); AudioHandler.audioClipHandlers["BGMLose"] = Audio.CreateAudioClip("event:/Music/stingers/game_lose"); + + goingToWin = false; + goingToLose = false; + + if (scoreText) + scoreText.GetComponent().Text = $"{Score}"; + if (timeText) + timeText.GetComponent().Text = $"{timer.ToString("0")}"; + + Input.SetMouseCentering(true); + Application.IsCursorVisible = false; + Application.FixDeltaTime = Time.DefaultFixDeltaTime; } 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(); + if (SceneFadeInOut.Instance != null) + SceneFadeInOut.Instance.CallFadeOut(); + + GamePause = false; } protected override void update() { - if (GamePause) + if (GamePause || !stealFoodPopUpDone) { return; } + Cheat(); + if (currGameState == GameState.START) - { + { timer -= Time.DeltaTimeF; if(scoreText) - scoreText.GetComponent().Text = $"Score: {Score}"; + scoreText.GetComponent().Text = $"{Score}"; if(timeText) - timeText.GetComponent().Text = $"Time Left: {timer.ToString("0.00")}"; + 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) @@ -108,30 +128,76 @@ public class GameManager : Script } } - else - { - //multiplierText.GetComponent().LocalScale = Vector3.Zero; - } - if ((timer > 0 && totalItemCount <= 0 && !itemShatter) || Input.GetKeyDown(Input.KeyCode.F1)) + if (!goingToLose && ((timer > 0 && totalItemCount <= 0 && !itemShatter))) { currGameState = GameState.WIN; - AudioHandler.stopAllSounds(false); + AudioHandler.StopAllSounds(false); AudioHandler.audioClipHandlers["BGMWin"].Play(); - SceneManager.ChangeScene(winScene); - + goingToWin = true; + if (SceneFadeInOut.Instance != null) + SceneFadeInOut.Instance.CallFadeIn(); } - else if(timer < 0 || Input.GetKeyDown(Input.KeyCode.F2)) + else if(!goingToWin && (timer < 0)) { currGameState = GameState.LOSE; - AudioHandler.stopAllSounds(false); + AudioHandler.StopAllSounds(false); AudioHandler.audioClipHandlers["BGMLose"].Play(); + goingToLose = true; + if (SceneFadeInOut.Instance != null) + SceneFadeInOut.Instance.CallFadeIn(); + } + } + + //Handling transitions + if (SceneFadeInOut.Instance != null) + { + if (SceneFadeInOut.Instance.FadeInFinished()) + { + if (goingToWin) + { + SceneManager.ChangeScene(winScene); + } + if (goingToLose) + { + SceneManager.ChangeScene(loseScene); + } + } + } + else + { + if (goingToWin) + { + SceneManager.ChangeScene(winScene); + } + if (goingToLose) + { SceneManager.ChangeScene(loseScene); - } } } + private void Cheat() + { + if (Input.GetKeyUp(Input.KeyCode.F1)) + { + currGameState = GameState.WIN; + AudioHandler.StopAllSounds(false); + goingToWin = true; + if (SceneFadeInOut.Instance != null) + SceneFadeInOut.Instance.CallFadeIn(); + } + else if (Input.GetKeyUp(Input.KeyCode.F2)) + { + currGameState = GameState.LOSE; + AudioHandler.StopAllSounds(false); + goingToLose = true; + if (SceneFadeInOut.Instance != null) + SceneFadeInOut.Instance.CallFadeIn(); + } + } + + protected override void onDestroy() { if (Instance == this) @@ -143,9 +209,16 @@ public class GameManager : Script totalItemCount -= 1; itemScored = true; currMultiplierDuration = 0; - multiplierText.GetComponent().LocalScale = new Vector3(multiplierFont, multiplierFont, multiplierFont); + if (currMultiplierCombo < maxMultiplierCombo) currMultiplierCombo += 1; + + MultiplierTextFx fx = multiplierText.GetScript(); + if (fx) + { + 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/Gameplay/SC_PreviewLevel.cs b/Assets/Scripts/Gameplay/SC_PreviewLevel.cs new file mode 100644 index 00000000..32a03074 --- /dev/null +++ b/Assets/Scripts/Gameplay/SC_PreviewLevel.cs @@ -0,0 +1,169 @@ +using SHADE; +using System; +using System.Collections.Generic; +using System.Linq; + + +namespace SHADE_Scripting.UI +{ + public class PreviewLevel : Script + { + private List listOfCamera; + + public Vector3 endPoint1; + public Vector3 endPoint2; + public Vector3 endPoint3; + + public GameObject playerCamera; + public GameObject gameplayCanvas; + public float duration = 3.0f; + + private bool point1Done = false; + private bool point2Done = false; + private bool point3Done = false; + + private bool reset2 = true; + private bool reset3 = true; + + private bool skip = false; + [NonSerialized] + private TweenThreadVec3 moveToEndPoint1; + [NonSerialized] + private TweenThreadVec3 moveToEndPoint2; + [NonSerialized] + private TweenThreadVec3 moveToEndPoint3; + + protected override void awake() + { + listOfCamera = GameObject.GetComponentsInChildren().ToList(); + + if (listOfCamera.Count == 0) + Debug.LogError("EMPTY PREVIEW POINTS"); + + moveToEndPoint1 = TweenManager.CreateTweenThreadVec3(duration, listOfCamera[0].GetComponent().LocalPosition, endPoint1, EASING_METHOD.EASE_IN_SINE); + moveToEndPoint2 = TweenManager.CreateTweenThreadVec3(duration, listOfCamera[1].GetComponent().LocalPosition, endPoint2, EASING_METHOD.EASE_IN_SINE); + moveToEndPoint3 = TweenManager.CreateTweenThreadVec3(duration, listOfCamera[2].GetComponent().LocalPosition, endPoint3, EASING_METHOD.EASE_IN_SINE); + + + } + + protected override void start() + { + if (gameplayCanvas) + gameplayCanvas.SetActive(false); + listOfCamera[0].SetMainCamera(); + } + + protected override void update() + { + if (SceneFadeInOut.Instance && !SceneFadeInOut.Instance.FadeOutFinished() && !point1Done) + { + moveToEndPoint1.Reset(); + return; + } + + if (Input.GetKeyUp(Input.KeyCode.Space) && !point3Done) + { + skip = true; + point1Done = true; + point3Done = true; + SceneFadeInOut.Instance.CallFadeIn(); + SceneFadeInOut.Instance.alphaValue = 0.01f; + } + + if (skip && SceneFadeInOut.Instance && SceneFadeInOut.Instance.FadeInFinished()) + { + playerCamera.GetComponent().SetMainCamera(); + SceneFadeInOut.Instance.CallFadeOut(); + } + + if (skip && SceneFadeInOut.Instance && SceneFadeInOut.Instance.FadeOutFinished()) + { + GameManager.Instance.PreviewLevelDone = true; + if (gameplayCanvas) + gameplayCanvas.SetActive(true); + } + + + if (!skip) + { + if (!point1Done) + { + listOfCamera[0].GetComponent().LocalPosition = moveToEndPoint1.GetValue(); + if (SceneFadeInOut.Instance && moveToEndPoint1.IsCompleted()) + { + point1Done = true; + SceneFadeInOut.Instance.CallFadeIn(); + SceneFadeInOut.Instance.alphaValue = 0.01f; + } + } + + if (SceneFadeInOut.Instance && SceneFadeInOut.Instance.FadeInFinished() && point1Done) + { + listOfCamera[1].SetMainCamera(); + SceneFadeInOut.Instance.CallFadeOut(); + } + + if (SceneFadeInOut.Instance && SceneFadeInOut.Instance.FadeOutFinished() && point1Done) + { + if (!point2Done) + { + if (reset2) + { + moveToEndPoint2.Reset(); + reset2 = false; + } + listOfCamera[1].GetComponent().LocalPosition = moveToEndPoint2.GetValue(); + if (moveToEndPoint2.IsCompleted()) + { + point2Done = true; + SceneFadeInOut.Instance.CallFadeIn(); + SceneFadeInOut.Instance.alphaValue = 0.01f; + } + } + } + + if (SceneFadeInOut.Instance && SceneFadeInOut.Instance.FadeInFinished() && point2Done) + { + listOfCamera[2].SetMainCamera(); + SceneFadeInOut.Instance.CallFadeOut(); + } + + if (SceneFadeInOut.Instance && SceneFadeInOut.Instance.FadeOutFinished() && point2Done) + { + if (!point3Done) + { + if (reset3) + { + moveToEndPoint3 = TweenManager.CreateTweenThreadVec3(duration, listOfCamera[2].GetComponent().LocalPosition, endPoint3, EASING_METHOD.EASE_IN_SINE); + reset3 = false; + } + listOfCamera[2].GetComponent().LocalPosition = moveToEndPoint3.GetValue(); + if (moveToEndPoint3.IsCompleted()) + { + point3Done = true; + SceneFadeInOut.Instance.CallFadeIn(); + SceneFadeInOut.Instance.alphaValue = 0.01f; + } + } + } + + if (SceneFadeInOut.Instance && SceneFadeInOut.Instance.FadeInFinished() && point3Done) + { + playerCamera.GetComponent().SetMainCamera(); + SceneFadeInOut.Instance.CallFadeOut(); + } + + if (SceneFadeInOut.Instance && SceneFadeInOut.Instance.FadeOutFinished() && point3Done) + { + GameManager.Instance.PreviewLevelDone = true; + if (gameplayCanvas) + gameplayCanvas.SetActive(true); + } + } + + } + + } +} + diff --git a/Assets/Scripts/Gameplay/SC_PreviewLevel.cs.shmeta b/Assets/Scripts/Gameplay/SC_PreviewLevel.cs.shmeta new file mode 100644 index 00000000..6eb37f9a --- /dev/null +++ b/Assets/Scripts/Gameplay/SC_PreviewLevel.cs.shmeta @@ -0,0 +1,3 @@ +Name: SC_PreviewLevel +ID: 155897609 +Type: 9 diff --git a/Assets/Scripts/Settings.cs b/Assets/Scripts/Settings.cs new file mode 100644 index 00000000..e769237d --- /dev/null +++ b/Assets/Scripts/Settings.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SHADE_Scripting +{ + static public class Settings + { + static public float cameraSensitivity = 100.0f; + + static public float cameraFOV = 90.0f; + + static public float masterVolume = 100.0f; + static public float sfxVolume = 100.0f; + static public float bgmVolume = 100.0f; + + + } +} diff --git a/Assets/Scripts/Settings.cs.shmeta b/Assets/Scripts/Settings.cs.shmeta new file mode 100644 index 00000000..4e63126d --- /dev/null +++ b/Assets/Scripts/Settings.cs.shmeta @@ -0,0 +1,3 @@ +Name: Settings +ID: 163325256 +Type: 9 diff --git a/Assets/Scripts/UI/EasingHelper.cs b/Assets/Scripts/UI/EasingHelper.cs index 5f8ce4fe..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)(1.0f - Math.Sin(value * Math.PI) / 2.0f); + return (float)(Math.Sin(value * Math.PI / 2.0f) ); + } diff --git a/Assets/Scripts/UI/SC_ButtonFX.cs b/Assets/Scripts/UI/SC_ButtonFX.cs index 0e490a35..7ecad2f2 100644 --- a/Assets/Scripts/UI/SC_ButtonFX.cs +++ b/Assets/Scripts/UI/SC_ButtonFX.cs @@ -1,4 +1,4 @@ -using SHADE; +using SHADE; using System; using System.Collections.Generic; using System.Linq; @@ -9,10 +9,10 @@ namespace SHADE_Scripting.UI { public class ButtonFX:Script { - public string onHoverEnterSound = "event:/Music/player_undetected"; - public string onHoverExitSound = "event:/Music/player_undetected"; - public string onClickSound = "event:/Music/player_undetected"; - public string onReleaseSound = "event:/Music/player_undetected"; + public string onHoverEnterSound = "Empty"; + public string onHoverExitSound = "Empty"; + public string onClickSound = "event:/UI/mouse_down_element"; + public string onReleaseSound = "Empty"; [NonSerialized] private AudioClipHandler onHoverEnterACHandler; @@ -40,13 +40,16 @@ namespace SHADE_Scripting.UI protected override void awake() { - onHoverEnterACHandler = SHADE.Audio.CreateAudioClip(onHoverEnterSound); - onHoverExitACHandler = SHADE.Audio.CreateAudioClip(onHoverExitSound); - onClickACHandler = SHADE.Audio.CreateAudioClip(onClickSound); - onReleaseACHandler = SHADE.Audio.CreateAudioClip(onReleaseSound); - - + if(onHoverEnterSound != "Empty") + onHoverEnterACHandler = SHADE.Audio.CreateAudioClip(onHoverEnterSound); + + if(onHoverExitSound != "Empty") + onHoverExitACHandler = SHADE.Audio.CreateAudioClip(onHoverExitSound); + if (onClickSound != "Empty") + onClickACHandler = SHADE.Audio.CreateAudioClip(onClickSound); + if (onReleaseSound != "Empty") + onReleaseACHandler = SHADE.Audio.CreateAudioClip(onReleaseSound); } protected override void start() @@ -67,7 +70,7 @@ namespace SHADE_Scripting.UI ui.OnClick.RegisterAction(() => { - if (onClickSound != "") + if (onClickSound != "Empty") onClickACHandler.Play(); tweening = true; if(thread != null) @@ -76,8 +79,10 @@ namespace SHADE_Scripting.UI ui.OnRelease.RegisterAction(() => { - if (onReleaseSound != "") + if (onReleaseSound != "Empty") onReleaseACHandler.Play(); + + tweening = true; if (thread != null) thread.Reset(currentScale, 1.0f); @@ -85,8 +90,12 @@ namespace SHADE_Scripting.UI ui.OnHoverEnter.RegisterAction(() => { - if (onHoverEnterSound != "") + if (onHoverEnterSound!="Empty") + { + onHoverEnterACHandler.Play(); + } + tweening = true; if (thread != null) thread.Reset(currentScale, hoverScale); @@ -94,7 +103,7 @@ namespace SHADE_Scripting.UI ui.OnHoverExit.RegisterAction(() => { - if (onHoverExitSound != "") + if (onHoverExitSound != "Empty") onHoverExitACHandler.Play(); tweening = true; if (thread != null) @@ -110,7 +119,7 @@ namespace SHADE_Scripting.UI return; if (tweening == true && thread != null) { - Debug.Log("Tweening value " + thread.GetValue()); + transform.LocalScale = defaultScale * thread.GetValue(); currentScale = thread.GetValue(); if (thread.IsCompleted()) diff --git a/Assets/Scripts/UI/SC_ChangeSceneButton.cs b/Assets/Scripts/UI/SC_ChangeSceneButton.cs index c0629d0a..09e4cf5b 100644 --- a/Assets/Scripts/UI/SC_ChangeSceneButton.cs +++ b/Assets/Scripts/UI/SC_ChangeSceneButton.cs @@ -1,10 +1,19 @@ using System; +using System.Reflection.Metadata.Ecma335; using SHADE; +using SHADE_Scripting.UI; public class ChangeSceneButton : Script { public uint sceneID = 0; - + + //Whether the scene changing button has been clicked + private bool clickedFlag; + + protected override void awake() + { + clickedFlag = false; + } protected override void start() { @@ -13,23 +22,26 @@ public class ChangeSceneButton : Script { ui.OnRelease.RegisterAction(() => { - if (sceneID != 0) { - Audio.PlaySFXOnce2D("event:/UI/success"); - SceneManager.ChangeScene(sceneID); - Audio.StopAllSounds(); + Audio.PlaySFXOnce2D("event:/UI/success"); + Audio.StopAllSounds(); + if (SceneFadeInOut.Instance != null) + SceneFadeInOut.Instance.CallFadeIn(); + clickedFlag = true; } }); } else { Debug.LogError("Failed to register button action for ChangeSceneButton."); - } } protected override void update() { - + if (clickedFlag && sceneID != 0 && SceneFadeInOut.Instance.FadeInFinished()) + { + SceneManager.ChangeScene(sceneID); + } } } diff --git a/Assets/Scripts/UI/SC_CutSceneEnd.cs b/Assets/Scripts/UI/SC_CutSceneEnd.cs new file mode 100644 index 00000000..f5007443 --- /dev/null +++ b/Assets/Scripts/UI/SC_CutSceneEnd.cs @@ -0,0 +1,317 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using SHADE; + + +public class CutsceneEnd : Script +{ + public uint nextScene; + public float duration = 3.0f; + public float skipDuration = 0.1f; + private float oldDuration = 0.0f; + + private Renderable pic4aRenderable; + private Renderable pic4bRenderable; + private Renderable pic4cRenderable; + private Renderable pic5aRenderable; + private Renderable pic5bRenderable; + + private Transform pic4aTran; + private Transform pic4bTran; + private Transform pic4cTran; + private Transform pic5aTran; + private Transform pic5bTran; + + private float alphaIn = 0.0f; + private float time = 0.0f; + private bool showPic4a = true; + private bool showPic4b = false; + private bool showPic4c = false; + private bool showPic5a = true; + private bool showPic5b = false; + + private bool skip = false; + + public GameObject cutscene4Points; + private List listOfCutscene4Points; + + public GameObject cutscene4Pics; + private List listOfCutscene4Pics; + + public GameObject cutscene5Points; + private List listOfCutscene5Points; + + public GameObject cutscene5Pics; + private List listOfCutscene5Pics; + + private TextRenderable text4; + private TextRenderable text5; + + public GameObject canvas4; + public GameObject canvas5; + + private bool cutscene4Done = false; + private bool cutscene5Done = false; + + protected override void awake() + { + initCutscene4(); + initCutscene5(); + } + + protected override void update() + { + Canvas4(); + Canvas5(); + + if (Input.GetKeyUp(Input.KeyCode.Space) && !skip && (!cutscene4Done || !cutscene5Done)) + { + skip = true; + oldDuration = duration; + duration = skipDuration; + } + + if (Input.GetKeyUp(Input.KeyCode.Space) && cutscene4Done && canvas4.IsActiveSelf) + { + canvas4.SetActive(false); + canvas5.SetActive(true); + duration = oldDuration; + skip = false; + } + + if (Input.GetKeyUp(Input.KeyCode.Space) && cutscene5Done && canvas5.IsActiveSelf) + { + SceneManager.ChangeScene(nextScene); + } + } + + private void Canvas4() + { + if (canvas4.IsActiveSelf) + { + if (showPic4a) + { + if (time < duration) + { + pic4aTran.LocalPosition = Vector3.Lerp(pic4aTran.LocalPosition, listOfCutscene4Points[0].LocalPosition, time / duration); + alphaIn = SHADE.Math.Lerp(0.0f, 1.0f, time / duration); + time += Time.DeltaTimeF; + } + else + { + pic4aTran.LocalPosition = listOfCutscene4Points[0].LocalPosition; + alphaIn = 1.0f; + } + + pic4aRenderable.Material.SetProperty("data.alpha", alphaIn); + if (alphaIn >= 1.0f) + { + showPic4a = false; + showPic4b = true; + time = 0; + alphaIn = 0; + } + } + + if (showPic4b) + { + if (time < duration) + { + pic4bTran.LocalPosition = Vector3.Lerp(pic4bTran.LocalPosition, listOfCutscene4Points[1].LocalPosition, time / duration); + alphaIn = SHADE.Math.Lerp(0.0f, 1.0f, time / duration); + time += Time.DeltaTimeF; + } + else + { + pic4bTran.LocalPosition = listOfCutscene4Points[1].LocalPosition; + alphaIn = 1.0f; + } + + pic4bRenderable.Material.SetProperty("data.alpha", alphaIn); + if (alphaIn >= 1.0f) + { + showPic4b = false; + showPic4c = true; + time = 0; + alphaIn = 0; + } + } + + if (showPic4c) + { + if (time < duration) + { + pic4cTran.LocalPosition = Vector3.Lerp(pic4cTran.LocalPosition, listOfCutscene4Points[2].LocalPosition, time / duration); + alphaIn = SHADE.Math.Lerp(0.0f, 1.0f, time / duration); + time += Time.DeltaTimeF; + } + else + { + pic4cTran.LocalPosition = listOfCutscene4Points[2].LocalPosition; + alphaIn = 1.0f; + } + + pic4cRenderable.Material.SetProperty("data.alpha", alphaIn); + if (alphaIn >= 1.0f) + { + showPic4c = false; + cutscene4Done = true; + text4.Enabled = true; + time = 0; + alphaIn = 0; + } + } + } + } + + private void Canvas5() + { + if (canvas5.IsActiveSelf) + { + if (showPic5a) + { + if (time < duration) + { + pic5aTran.LocalPosition = Vector3.Lerp(pic5aTran.LocalPosition, listOfCutscene5Points[0].LocalPosition, time / duration); + alphaIn = SHADE.Math.Lerp(0.0f, 1.0f, time / duration); + time += Time.DeltaTimeF; + } + else + { + pic5aTran.LocalPosition = listOfCutscene5Points[0].LocalPosition; + alphaIn = 1.0f; + } + + pic5aRenderable.Material.SetProperty("data.alpha", alphaIn); + if (alphaIn >= 1.0f) + { + showPic5a = false; + showPic5b = true; + time = 0; + alphaIn = 0; + } + } + + if (showPic5b) + { + if (time < duration) + { + pic5bTran.LocalPosition = Vector3.Lerp(pic5bTran.LocalPosition, listOfCutscene5Points[1].LocalPosition, time / duration); + alphaIn = SHADE.Math.Lerp(0.0f, 1.0f, time / duration); + time += Time.DeltaTimeF; + } + else + { + pic5bTran.LocalPosition = listOfCutscene5Points[1].LocalPosition; + alphaIn = 1.0f; + } + + pic5bRenderable.Material.SetProperty("data.alpha", alphaIn); + if (alphaIn >= 1.0f) + { + showPic5b = false; + text5.Enabled = true; + cutscene5Done = true; + time = 0; + alphaIn = 0; + } + } + } + } + + + private void initCutscene4() + { + if (cutscene4Points) + listOfCutscene4Points = cutscene4Points.GetComponentsInChildren().ToList(); + else + Debug.LogError("Cutscene4Points Missing"); + + if (listOfCutscene4Points.Count == 0) + Debug.LogError("Cutscene4Points Empty"); + + listOfCutscene4Pics = cutscene4Pics.GetComponentsInChildren().ToList(); + if (listOfCutscene4Pics.Count == 0) + Debug.LogError("Cutscene4Pics Empty"); + + if (listOfCutscene4Pics[0]) + { + pic4aRenderable = listOfCutscene4Pics[0].GetComponent(); + pic4aTran = listOfCutscene4Pics[0].GetComponent(); + pic4aRenderable.Material.SetProperty("data.alpha", 0.0f); + } + else + Debug.LogError("SCENE 4 PIC1 MISSING"); + + if (listOfCutscene4Pics[1]) + { + pic4bRenderable = listOfCutscene4Pics[1].GetComponent(); + pic4bTran = listOfCutscene4Pics[1].GetComponent(); + pic4bRenderable.Material.SetProperty("data.alpha", 0.0f); + } + else + Debug.LogError("SCENE 4 PIC2 MISSING"); + + if (listOfCutscene4Pics[2]) + { + pic4cRenderable = listOfCutscene4Pics[2].GetComponent(); + pic4cTran = listOfCutscene4Pics[2].GetComponent(); + pic4cRenderable.Material.SetProperty("data.alpha", 0.0f); + } + else + Debug.LogError("SCENE 1 PIC3 MISSING"); + + if (canvas4) + { + text4 = canvas4.GetComponentInChildren(); + text4.Enabled = false; + } + else + Debug.LogError("Canvas 4 missing"); + } + + private void initCutscene5() + { + if (cutscene5Points) + listOfCutscene5Points = cutscene5Points.GetComponentsInChildren().ToList(); + else + Debug.LogError("cutscene5Points Missing"); + + if (listOfCutscene5Points.Count == 0) + Debug.LogError("Cutscene5Points Empty"); + + listOfCutscene5Pics = cutscene5Pics.GetComponentsInChildren().ToList(); + if (listOfCutscene5Pics.Count == 0) + Debug.LogError("Cutscene5Pics Empty"); + + if (listOfCutscene5Pics[0]) + { + pic5aRenderable = listOfCutscene5Pics[0].GetComponent(); + pic5aTran = listOfCutscene5Pics[0].GetComponent(); + pic5aRenderable.Material.SetProperty("data.alpha", 0.0f); + } + else + Debug.LogError("SCENE 5 PIC1 MISSING"); + + if (listOfCutscene5Pics[1]) + { + pic5bRenderable = listOfCutscene5Pics[1].GetComponent(); + pic5bTran = listOfCutscene5Pics[1].GetComponent(); + pic5bRenderable.Material.SetProperty("data.alpha", 0.0f); + } + else + Debug.LogError("SCENE 5 PIC2 MISSING"); + + if (canvas5) + { + text5 = canvas5.GetComponentInChildren(); + text5.Enabled = false; + canvas5.SetActive(false); + } + else + Debug.LogError("Canvas 5 missing"); + + } +} + diff --git a/Assets/Scripts/UI/SC_CutSceneEnd.cs.shmeta b/Assets/Scripts/UI/SC_CutSceneEnd.cs.shmeta new file mode 100644 index 00000000..1ea30e12 --- /dev/null +++ b/Assets/Scripts/UI/SC_CutSceneEnd.cs.shmeta @@ -0,0 +1,3 @@ +Name: SC_CutSceneEnd +ID: 153706859 +Type: 9 diff --git a/Assets/Scripts/UI/SC_Cutscene.cs.shmeta b/Assets/Scripts/UI/SC_Cutscene.cs.shmeta deleted file mode 100644 index 8130c77f..00000000 --- a/Assets/Scripts/UI/SC_Cutscene.cs.shmeta +++ /dev/null @@ -1,3 +0,0 @@ -Name: SC_Cutscene -ID: 157565851 -Type: 9 diff --git a/Assets/Scripts/UI/SC_Cutscene.cs b/Assets/Scripts/UI/SC_CutsceneIntro.cs similarity index 93% rename from Assets/Scripts/UI/SC_Cutscene.cs rename to Assets/Scripts/UI/SC_CutsceneIntro.cs index 4a6b2858..db393ff9 100644 --- a/Assets/Scripts/UI/SC_Cutscene.cs +++ b/Assets/Scripts/UI/SC_CutsceneIntro.cs @@ -4,10 +4,12 @@ using System.Linq; using SHADE; -public class Cutscene : Script +public class CutsceneIntro : Script { + public uint nextScene; public float duration = 3.0f; + public float skipDuration = 0.1f; private float oldDuration = 0.0f; private Renderable pic1aRenderable; @@ -93,14 +95,14 @@ public class Cutscene : Script Canvas2(); Canvas3(); - if (Input.GetKeyDown(Input.KeyCode.Space) && !skip && (!cutscene1Done || !cutscene2Done || !cutscene3Done)) + if (Input.GetKeyUp(Input.KeyCode.Space) && !skip && (!cutscene1Done || !cutscene2Done || !cutscene3Done)) { skip = true; oldDuration = duration; - duration = 0.1f; + duration = skipDuration; } - if (Input.GetKeyDown(Input.KeyCode.Space) && cutscene1Done && canvas1.IsActiveSelf) + if (Input.GetKeyUp(Input.KeyCode.Space) && cutscene1Done && canvas1.IsActiveSelf) { canvas1.SetActive(false); canvas2.SetActive(true); @@ -108,7 +110,7 @@ public class Cutscene : Script skip = false; } - if (Input.GetKeyDown(Input.KeyCode.Space) && cutscene2Done && canvas2.IsActiveSelf) + if (Input.GetKeyUp(Input.KeyCode.Space) && cutscene2Done && canvas2.IsActiveSelf) { canvas2.SetActive(false); canvas3.SetActive(true); @@ -116,9 +118,9 @@ public class Cutscene : Script skip = false; } - if (Input.GetKeyDown(Input.KeyCode.Space) && cutscene3Done && canvas3.IsActiveSelf) + if (Input.GetKeyUp(Input.KeyCode.Space) && cutscene3Done && canvas3.IsActiveSelf) { - //change scene + SceneManager.ChangeScene(nextScene); } } @@ -409,7 +411,11 @@ public class Cutscene : Script private void initCutscene1() { - listOfCutscene1Points = cutscene1Points.GetComponentsInChildren().ToList(); + if(cutscene1Points) + listOfCutscene1Points = cutscene1Points.GetComponentsInChildren().ToList(); + else + Debug.LogError("Cutscene1Points Missing"); + if (listOfCutscene1Points.Count == 0) Debug.LogError("Cutscene1Points Empty"); @@ -455,7 +461,11 @@ public class Cutscene : Script private void initCutscene2() { - listOfCutscene2Points = cutscene2Points.GetComponentsInChildren().ToList(); + if(cutscene2Points) + listOfCutscene2Points = cutscene2Points.GetComponentsInChildren().ToList(); + else + Debug.LogError("cutscene2Points Missing"); + if (listOfCutscene2Points.Count == 0) Debug.LogError("Cutscene2Points Empty"); @@ -503,7 +513,11 @@ public class Cutscene : Script private void initCutscene3() { - listOfCutscene3Points = cutscene3Points.GetComponentsInChildren().ToList(); + if(cutscene3Points) + listOfCutscene3Points = cutscene3Points.GetComponentsInChildren().ToList(); + else + Debug.LogError("cutscene3Points Missing"); + if (listOfCutscene3Points.Count == 0) Debug.LogError("Cutscene3Points Empty"); diff --git a/Assets/Scripts/UI/SC_CutsceneIntro.cs.shmeta b/Assets/Scripts/UI/SC_CutsceneIntro.cs.shmeta new file mode 100644 index 00000000..4df561bb --- /dev/null +++ b/Assets/Scripts/UI/SC_CutsceneIntro.cs.shmeta @@ -0,0 +1,3 @@ +Name: SC_CutsceneIntro +ID: 154967292 +Type: 9 diff --git a/Assets/Scripts/UI/SC_EndScene.cs b/Assets/Scripts/UI/SC_EndScene.cs index b934e2bd..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)) @@ -23,7 +33,7 @@ public class EndScene : Script { //Audio.PlaySFXOnce2D("event:/UI/success"); //Audio.StopAllSounds(); - AudioHandler.stopAllSounds(false); + AudioHandler.StopAllSounds(false); AudioHandler.audioClipHandlers["SFXUISuccess"].Play(); SceneManager.ChangeScene(mainGameScene); } @@ -37,7 +47,7 @@ public class EndScene : Script { //Audio.PlaySFXOnce2D("event:/UI/success"); //Audio.StopAllSounds(); - AudioHandler.stopAllSounds(false); + AudioHandler.StopAllSounds(false); AudioHandler.audioClipHandlers["SFXUISuccess"].Play(); SceneManager.ChangeScene(mainMainScene); } diff --git a/Assets/Scripts/UI/SC_MainMenu.cs b/Assets/Scripts/UI/SC_MainMenu.cs index 59b6594e..8252344d 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,40 +24,12 @@ public class MainMenu : Script protected override void start() { + Input.SetMouseCentering(false); + Application.IsCursorVisible = true; + SceneFadeInOut.Instance.CallFadeOut(); } protected override void update() { -/* if (Input.GetKeyDown(Input.KeyCode.K) && obj) - { - if (testRenderable.Material.GetProperty("data.alpha") == 1) - { - testRenderable.Material.SetProperty("data.alpha", 0); - } - else if (testRenderable.Material.GetProperty("data.alpha") == 0) - { - testRenderable.Material.SetProperty("data.alpha", 1); - } - }*/ - - if (Input.GetKeyDown(Input.KeyCode.Space)) - { - //Audio.PlaySFXOnce2D("event:/UI/mouse_down_element"); - AudioHandler.audioClipHandlers["SFXMouseDownElement"].Play(); - } - - if (Input.GetKeyUp(Input.KeyCode.Space)) - { - //Audio.PlaySFXOnce2D("event:/UI/success"); - AudioHandler.audioClipHandlers["SFXUISuccess"].Play(); - SceneManager.ChangeScene(sceneID); - Audio.StopAllSounds(); - } - - if (Input.GetKeyDown(Input.KeyCode.Escape)) - { - Audio.StopAllSounds(); - Application.Quit(); - } } } diff --git a/Assets/Scripts/UI/SC_MultiplierTextFx.cs b/Assets/Scripts/UI/SC_MultiplierTextFx.cs new file mode 100644 index 00000000..ccd2a4a8 --- /dev/null +++ b/Assets/Scripts/UI/SC_MultiplierTextFx.cs @@ -0,0 +1,112 @@ +using SHADE; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SHADE_Scripting.UI +{ + public class MultiplierTextFx : Script + { + [NonSerialized] + private TweenThread sizeThread; + private TweenThread sizeInvertThread; + private TweenThread alphaThread; + + + public float maxSize = 1.0f; + public float minSize = 0.3f; + public float minAlpha = 0.3f; + + + private bool showMultiplier = false; + const float sizeUpDuration = 0.1f; + + [NonSerialized] + private Vector3 defaultScale; + + 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) + { + defaultScale = transform.LocalScale; + transform.LocalScale = Vector3.Zero; + } + + + showMultiplier = false; + + } + + 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; + showMultiplier = false; + } + else + { + transform.LocalScale = defaultScale * sizeThread.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); + } + } + } + } + + + public void ShowMultiplier(int multiplier, float duration) + { + GetComponent().Text = $"X {multiplier}"; + sizeThread.duration = duration + sizeUpDuration; + alphaThread.duration = duration + sizeUpDuration; + + sizeInvertThread.Reset(); + sizeThread.Reset(); + alphaThread.Reset(); + showMultiplier = true; + + } + + + } +} diff --git a/Assets/Scripts/UI/SC_MultiplierTextFx.cs.shmeta b/Assets/Scripts/UI/SC_MultiplierTextFx.cs.shmeta new file mode 100644 index 00000000..1cb235f8 --- /dev/null +++ b/Assets/Scripts/UI/SC_MultiplierTextFx.cs.shmeta @@ -0,0 +1,3 @@ +Name: SC_MultiplierTextFx +ID: 158917210 +Type: 9 diff --git a/Assets/Scripts/UI/SC_Options.cs b/Assets/Scripts/UI/SC_Options.cs new file mode 100644 index 00000000..bc2fa69c --- /dev/null +++ b/Assets/Scripts/UI/SC_Options.cs @@ -0,0 +1,95 @@ +using SHADE; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SHADE_Scripting.UI +{ + public class Options:Script + { + public GameObject masterVolSlider; + public GameObject sfxVolSlider; + public GameObject bgmVolSlider; + public GameObject fovSlider; + public GameObject sensitivitySlider; + + + + + protected override void awake() + { + Slider mv = masterVolSlider.GetComponent(); + Slider sfx = sfxVolSlider.GetComponent(); + Slider bgm = bgmVolSlider.GetComponent(); + Slider fov = fovSlider.GetComponent(); + Slider sens = sensitivitySlider.GetComponent(); + + + + if (mv != null) + { + mv.ScaledValue = Settings.masterVolume; + + } + if (sfx != null) + { + sfx.ScaledValue = Settings.sfxVolume; + + } + if (bgm != null) + { + bgm.ScaledValue = Settings.bgmVolume; + + } + if (fov != null) + { + fov.ScaledValue = Settings.cameraFOV; + + } + if (sens != null) + { + sens.ScaledValue = Settings.cameraSensitivity; + + } + + + } + + + protected override void update() + { + Slider mv = masterVolSlider.GetComponent(); + Slider sfx = sfxVolSlider.GetComponent(); + Slider bgm = bgmVolSlider.GetComponent(); + Slider fov = fovSlider.GetComponent(); + Slider sens = sensitivitySlider.GetComponent(); + + if(mv != null) + { + Settings.masterVolume = mv.ScaledValue; + } + if (sfx != null) + { + Settings.sfxVolume = sfx.ScaledValue; + } + if (bgm != null) + { + Settings.bgmVolume = bgm.ScaledValue; + } + if (fov != null) + { + Settings.cameraFOV = fov.ScaledValue; + } + if (sens != null) + { + Settings.cameraSensitivity = sens.ScaledValue; + } + + + } + + + } +} diff --git a/Assets/Scripts/UI/SC_Options.cs.shmeta b/Assets/Scripts/UI/SC_Options.cs.shmeta new file mode 100644 index 00000000..36789fa3 --- /dev/null +++ b/Assets/Scripts/UI/SC_Options.cs.shmeta @@ -0,0 +1,3 @@ +Name: SC_Options +ID: 162565004 +Type: 9 diff --git a/Assets/Scripts/UI/SC_PauseMenu.cs b/Assets/Scripts/UI/SC_PauseMenu.cs index 521b48ea..32b59a85 100644 --- a/Assets/Scripts/UI/SC_PauseMenu.cs +++ b/Assets/Scripts/UI/SC_PauseMenu.cs @@ -8,16 +8,19 @@ public class PauseMenu : Script public GameObject retryBtn; public GameObject quitBtn; - public GameObject gamePauseText; + private TextRenderable gamePauseText; public GameObject canvas; protected override void awake() { - GameManager.Instance.GamePause = false; - if (gamePauseText) - gamePauseText.GetComponent().Enabled = false; + if (GameManager.Instance != null) + GameManager.Instance.GamePause = false; + if (canvas) + { + gamePauseText = canvas.GetComponentInChildren(); canvas.SetActive(false); + } if (!resumeBtn) Debug.LogError("Resume Btn missing"); @@ -34,16 +37,19 @@ public class PauseMenu : Script UIElement resume = resumeBtn.GetComponent(); if (resume != null) { - resume.OnClick.RegisterAction(() => + resume.OnRelease.RegisterAction(() => { if (GameManager.Instance.GamePause) { GameManager.Instance.GamePause = false; - AudioHandler.pauseAllSounds(false); + Input.SetMouseCentering(true); + Application.IsCursorVisible = false; + AudioHandler.PauseAllSounds(false); if (gamePauseText) - gamePauseText.GetComponent().Enabled = false; + gamePauseText.Enabled = false; if (canvas) canvas.SetActive(false); + Application.FixDeltaTime = Time.DefaultFixDeltaTime; } }); } @@ -56,10 +62,13 @@ public class PauseMenu : Script UIElement retry = retryBtn.GetComponent(); if (retry != null) { - retry.OnClick.RegisterAction(() => + retry.OnRelease.RegisterAction(() => { Audio.StopAllSounds(); SceneManager.RestartScene(); + GameManager.Instance.GamePause = false; + GameManager.Instance.stealFoodPopUpDone = false; + GameManager.Instance.PreviewLevelDone = false; }); } else @@ -70,7 +79,7 @@ public class PauseMenu : Script UIElement quit = quitBtn.GetComponent(); if (quit != null) { - quit.OnClick.RegisterAction(() => + quit.OnRelease.RegisterAction(() => { Audio.StopAllSounds(); //go to main menu @@ -86,14 +95,17 @@ public class PauseMenu : Script protected override void update() { - if (Input.GetKeyDown(Input.KeyCode.Escape) && !GameManager.Instance.GamePause) + if (Input.GetKeyUp(Input.KeyCode.Escape) && !GameManager.Instance.GamePause && GameManager.Instance.stealFoodPopUpDone) { GameManager.Instance.GamePause = true; - AudioHandler.pauseAllSounds(true); + Input.SetMouseCentering(false); + Application.IsCursorVisible = true; + AudioHandler.PauseAllSounds(true); if (gamePauseText) - gamePauseText.GetComponent().Enabled = true; + gamePauseText.Enabled = true; if (canvas) canvas.SetActive(true); + Application.FixDeltaTime = 0; } } diff --git a/Assets/Scripts/UI/SC_SceneFadeInOut.cs b/Assets/Scripts/UI/SC_SceneFadeInOut.cs new file mode 100644 index 00000000..c426f8a6 --- /dev/null +++ b/Assets/Scripts/UI/SC_SceneFadeInOut.cs @@ -0,0 +1,132 @@ +using SHADE; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SHADE_Scripting.UI +{ + public class SceneFadeInOut : Script + { + //[Tooltip("If true, the panel fadeUI fades in (increasing alpha). If false, no fading. Mutually exclusive with fadeIn")] + private bool fadeIn; + + //[Tooltip("If true, the panel fadeUI fades out (decreasing alpha). If false, no fading. Mutually exclusive with fadeIn")] + private bool fadeOut; + + [Tooltip("The initial alpha value of the UI that is faded. Between 0 and 1 inclusive.")] + public float alphaValue; + + [SerializeField] + private float fadeInTime; + + [SerializeField] + private float fadeOutTime; + + private Renderable fadeR; + + public static SceneFadeInOut Instance { get; private set; } + + protected override void awake() + { + if (Instance != null && Instance != this) + RemoveScript(); + else + Instance = this; + + fadeR = GameObject.GetComponent(); + fadeR.Material.SetProperty("data.alpha", alphaValue); + GameObject.Parent.SetActive(false); + //alphaValue = fadeR.Material.GetProperty("data.alpha"); + } + + protected override void start() + { + } + + protected override void update() + { + if (fadeR != null) + { + if (fadeIn) //fading in + { + fadeOut = false; + if (fadeInTime == 0.0f) + { + alphaValue = 1.0f; + } + else + { + alphaValue += (1.0f / fadeInTime) * Time.DeltaTimeF; + } + if (alphaValue >= 1.0f) + { + alphaValue = 1.0f; + //GameObject.Parent.SetActive(false); + } + } + + if (fadeOut) //fading out + { + fadeIn = false; + if (fadeOutTime == 0.0f) + { + alphaValue = 0.0f; + + } + else + { + alphaValue -= (1.0f / fadeOutTime) * Time.DeltaTimeF; + } + if (alphaValue <= 0.0f) + { + 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); + } + } + + fadeR.Material.SetProperty("data.alpha", alphaValue); + } + } + + protected override void onDestroy() + { + if (Instance == this) + Instance = null; + } + + public void CallFadeIn() + { + fadeIn = true; + fadeOut = false; + GameObject.Parent.SetActive(true); + } + + public void CallFadeOut() + { + fadeOut = true; + fadeIn = false; + GameObject.Parent.SetActive(true); + } + + public void CallFadeStop() + { + fadeOut = false; + fadeIn = false; + GameObject.Parent.SetActive(false); + } + + public bool FadeOutFinished() + { + return (alphaValue <= 0.0f); + } + + public bool FadeInFinished() + { + return (alphaValue >= 1.0f); + } + } +} diff --git a/Assets/Scripts/UI/SC_SceneFadeInOut.cs.shmeta b/Assets/Scripts/UI/SC_SceneFadeInOut.cs.shmeta new file mode 100644 index 00000000..ddebe65c --- /dev/null +++ b/Assets/Scripts/UI/SC_SceneFadeInOut.cs.shmeta @@ -0,0 +1,3 @@ +Name: SC_SceneFadeInOut +ID: 153328192 +Type: 9 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/Scripts/UI/SC_SliderText.cs b/Assets/Scripts/UI/SC_SliderText.cs index e3f5a8b3..c2f8eb12 100644 --- a/Assets/Scripts/UI/SC_SliderText.cs +++ b/Assets/Scripts/UI/SC_SliderText.cs @@ -11,8 +11,6 @@ namespace SHADE_Scripting.UI { public GameObject sliderObj; - public int minValue = 0; - public int maxValue = 0; protected override void start() { @@ -22,7 +20,7 @@ namespace SHADE_Scripting.UI if (slider != null && text != null) { - text.Text = ((int)(slider.GetValue() * (maxValue - minValue) + minValue)).ToString(); + text.Text = ((int)(slider.ScaledValue)).ToString(); } } protected override void update() @@ -32,7 +30,7 @@ namespace SHADE_Scripting.UI if(slider != null && text != null) { - text.Text = ((int)(slider.GetValue() * (maxValue - minValue) + minValue)).ToString(); + text.Text = ((int)(slider.ScaledValue)).ToString(); } } diff --git a/Assets/Scripts/UI/SC_StealFoodPopUp.cs b/Assets/Scripts/UI/SC_StealFoodPopUp.cs index 59b97e7d..6991ed32 100644 --- a/Assets/Scripts/UI/SC_StealFoodPopUp.cs +++ b/Assets/Scripts/UI/SC_StealFoodPopUp.cs @@ -51,6 +51,13 @@ namespace SHADE_Scripting.UI //538x377 protected override void update() { + if (!GameManager.Instance.PreviewLevelDone) + { + rot.Reset(); + scaleX.Reset(); + scaleY.Reset(); + return; + } if (!popInDone) { @@ -79,11 +86,11 @@ namespace SHADE_Scripting.UI if (scaleOutX.IsCompleted() && scaleOutY.IsCompleted()) { GameObject.SetActive(false); + GameManager.Instance.stealFoodPopUpDone = true; } } } - } } diff --git a/Assets/Scripts/UI/SC_TweenManager.cs b/Assets/Scripts/UI/SC_TweenManager.cs index b940c9fc..0bdfd779 100644 --- a/Assets/Scripts/UI/SC_TweenManager.cs +++ b/Assets/Scripts/UI/SC_TweenManager.cs @@ -16,8 +16,6 @@ namespace SHADE_Scripting.UI private float value = 0.0f; public float startValue = 0.0f; public float endValue = 1.0f; - - public TweenThread(float duration, float startValue, float endValue, EASING_METHOD method) { this.duration = duration; @@ -25,7 +23,6 @@ namespace SHADE_Scripting.UI this.startValue = startValue; this.endValue = endValue; } - public void Update(float deltaTime) { if (timer >= duration) @@ -37,12 +34,10 @@ namespace SHADE_Scripting.UI value = EasingHelper.EaseHelp(timer/duration, method) * (endValue - startValue) + startValue ; } - public bool IsCompleted() { return timer >= duration; } - public void Reset() { timer = 0.0f; @@ -61,15 +56,69 @@ namespace SHADE_Scripting.UI startValue = endValue; endValue = temp; } - - public float GetValue() { return value; } - } + + public class TweenThreadVec3 + { + private float timer = 0.0f; + public float duration = 1.0f; + public EASING_METHOD method; + private Vector3 value = Vector3.Zero; + public Vector3 startValue = Vector3.Zero; + public Vector3 endValue = Vector3.Zero; + public TweenThreadVec3(float duration, Vector3 startValue, Vector3 endValue, EASING_METHOD method) + { + this.duration = duration; + this.method = method; + this.startValue = startValue; + this.endValue = endValue; + } + public void Update(float deltaTime) + { + if (timer >= duration) + return; + + timer += deltaTime; + if (timer >= duration) + timer = duration; + + value = (endValue - startValue) * EasingHelper.EaseHelp(timer / duration, method) + startValue; + } + public bool IsCompleted() + { + return timer >= duration; + } + public void Reset() + { + timer = 0.0f; + value = startValue; + } + public void Reset(Vector3 startValue, Vector3 endValue) + { + Reset(); + this.startValue = startValue; + this.endValue = endValue; + } + public void ResetInvert() + { + Reset(); + Vector3 temp = startValue; + startValue = endValue; + endValue = temp; + } + public Vector3 GetValue() + { + return value; + } + } + + + public class TweenManager : Script { public static TweenManager Instance { get; private set; } @@ -77,6 +126,9 @@ namespace SHADE_Scripting.UI [NonSerialized] private List threadList; + [NonSerialized] + private List threadVec3List; + protected override void awake() { if (Instance != null && Instance != this) @@ -85,6 +137,7 @@ namespace SHADE_Scripting.UI Instance = this; threadList = new List(); + threadVec3List = new List(); } @@ -101,6 +154,11 @@ namespace SHADE_Scripting.UI { thread.Update(Time.DeltaTimeF); } + + foreach (TweenThreadVec3 thread in threadVec3List) + { + thread.Update(Time.DeltaTimeF); + } } @@ -116,5 +174,20 @@ namespace SHADE_Scripting.UI return thread; } + public static TweenThreadVec3 CreateTweenThreadVec3(float duration, Vector3 startValue, Vector3 endValue, EASING_METHOD method) + { + if (Instance == null) + return null; + + + TweenThreadVec3 thread = new TweenThreadVec3(duration, startValue, endValue, method); + Instance.threadVec3List.Add(thread); + thread.Reset(); + return thread; + } + + + + } } 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/ParticleEmit_CS.glsl b/Assets/Shaders/ParticleEmit_CS.glsl new file mode 100644 index 00000000..421e2ce1 --- /dev/null +++ b/Assets/Shaders/ParticleEmit_CS.glsl @@ -0,0 +1,117 @@ +#version 450 + +layout(local_size_x = 128) in; + +struct EmitterParameters +{ + vec4 angularMin; + vec4 angularMax; + vec4 lifeAndSizeRange; // min life, max life, min size, max size +} + +struct ParticleData +{ + vec4 position; + vec4 rotation; + vec4 velocity; + vec4 acceleration; + vec4 scaleAndDecay; + float life; + uint textureIndex; +} + +struct GenericData +{ + //! Delta time + float dt; + + //! Elapsed time of the application + float elapsedTime; + + //! Viewport width of the scene (excluding imgui, that means smaller than window) + uint viewportWidth; + + //! Ditto but for height + uint viewportHeight; +}; + +layout (set = 0, binding = 0) uniform GenericDataBuffer +{ + GenericData data; +} genericDataBuffer; + +layout (std430, set = 2, binding = 0) readonly buffer EmitterBuffer +{ + EmitterParameters data; +} emitterParams; + +layout (std430, set = 2, binding = 1) coherent restrict buffer ParticlesInputBuffer +{ + ParticleData data[]; +} inputParticles; + +// output buffer not needed +// layout (std430, set = 2, binding = 2) coherent restrict buffer ParticlesOutputBuffer +// { +// ParticleData data[]; +// } outputParticles; + +layout (std430, set = 2, binding = 3) coherent restrict buffer ParticlesFreelistBuffer +{ + int freeCount; + int freeIndices[]; + +} freelist; + + +// push constants +layout(std140, push_constant) uniform EmitterPushConstant +{ + vec4 emitterPosition; + uint emissionCount; + +} emitterPushConstant; + +uint pcg_hash(uint seed) +{ + uint state = seed * 747796405u + 2891336453u; + uint word = ((state >> ((state >> 28u) + 4u)) ^ state) * 277803737u; + return (word >> 22u) ^ word; +} + +// Used to advance the PCG state. +uint rand_pcg(inout uint rng_state) +{ + uint state = rng_state; + rng_state = rng_state * 747796405u + 2891336453u; + uint word = ((state >> ((state >> 28u) + 4u)) ^ state) * 277803737u; + return (word >> 22u) ^ word; +} + +// Advances the prng state and returns the corresponding random float. +float rand(inout uint state) +{ + uint x = rand_pcg(state); + state = x; + return float(x)*uintBitsToFloat(0x2f800004u); +} + +void main() +{ + uint emitterInvocationIndex = gl_GlobalInvocationID.x; + + if (emitterInvocationIndex >= emitterPushConstant.emissionCount) + return; + + int freelistIndex = atomicAdd (freelist.freeCount, -1) - 1; + if (freelistIndex < 0) + atomicAdd (freelist.freeCount, 1); + + ParticleData particle; + + int index = freelist.freeIndices[freelistIndex]; + particle.position = emitterPosition; + particle.life = emitterParams.10.0f; + + particles[index] = particle; +} \ No newline at end of file diff --git a/Assets/Shaders/ParticleUpdate_CS.glsl b/Assets/Shaders/ParticleUpdate_CS.glsl new file mode 100644 index 00000000..7649ee63 --- /dev/null +++ b/Assets/Shaders/ParticleUpdate_CS.glsl @@ -0,0 +1,141 @@ +#version 450 + +layout(local_size_x = 128) in; + +struct DrawArraysIndirectArgs +{ + uint count; + uint instanceCount; + uint first; + uint baseInstance; +}; + +struct ParticleData +{ + vec4 position; + vec4 rotation; + vec4 velocity; + vec4 acceleration; + vec4 scaleAndDecay; + float life; + uint textureIndex; +} + +struct GenericData +{ + //! Delta time + float dt; + + //! Elapsed time of the application + float elapsedTime; + + //! Viewport width of the scene (excluding imgui, that means smaller than window) + uint viewportWidth; + + //! Ditto but for height + uint viewportHeight; +}; + +layout(set = 1, binding = 0) uniform CameraData +{ + vec4 position; + mat4 vpMat; + mat4 viewMat; + mat4 projMat; +} cameraData; + + +layout (set = 0, binding = 0) uniform GenericDataBuffer +{ + GenericData data; +} genericDataBuffer; + +layout (std430, set = 2, binding = 1) coherent restrict readonly buffer ParticlesInputBuffer +{ + ParticleData data[]; +} inputParticles; + +// output buffer not needed +layout (std430, set = 2, binding = 2) coherent restrict buffer ParticlesOutputBuffer +{ + ParticleData data[]; +} outputParticles; + +layout (std430, set = 2, binding = 3) coherent restrict buffer ParticlesFreelistBuffer +{ + int freeCount; + int freeIndices[]; + +} freelist; + +layout (std430, set = 2, binding = 4) coherent restrict buffer IndicesData +{ + uint indices[]; +}; + +layout (std140, set = 2, binding = 5) coherent restrict uniform IndirectDrawArgs +{ + DrawArraysIndirectArgs indirectArgs; +}; + +// push constants +layout(std140, push_constant) uniform EmitterPushConstant +{ + vec4 emitterPosition; + uint emissionCount; + +} emitterPushConstant; + +uint pcg_hash(uint seed) +{ + uint state = seed * 747796405u + 2891336453u; + uint word = ((state >> ((state >> 28u) + 4u)) ^ state) * 277803737u; + return (word >> 22u) ^ word; +} + +// Used to advance the PCG state. +uint rand_pcg(inout uint rng_state) +{ + uint state = rng_state; + rng_state = rng_state * 747796405u + 2891336453u; + uint word = ((state >> ((state >> 28u) + 4u)) ^ state) * 277803737u; + return (word >> 22u) ^ word; +} + +// Advances the prng state and returns the corresponding random float. +float rand(inout uint state) +{ + uint x = rand_pcg(state); + state = x; + return float(x)*uintBitsToFloat(0x2f800004u); +} + +void main() +{ + uint index = gl_GlobalInvocationID.x; + + ParticleData particle = inputParticles.data[index]; + + if (particle.lifetime > 0.0f) + { + // particle.position += particle.velocity * dt; + + // particle.lifetime -= dt; + // particle.size -= 1.2f * dt; + // particle.color += 1.0f * dt; + + if (particle.lifetime < 0.0f || particle.size < 0.0f) + { + particle.lifetime = 0.0f; + particle.position.x = 99999.0f; + + outputParticles.data[index] = particle; + freelist.freeIndices[atomicAdd(freelist.freeCount, 1)] = int (index); + return; + } + + outputParticles.data[index] = particle; + uint drawIndex = atomicAdd (indirectArgs.instanceCount, 1); + indices[drawIndex] = index; + } +} \ No newline at end of file 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/ShinyHighlight_FS.shshaderb b/Assets/Shaders/ShinyHighlight_FS.shshaderb index 408bba83..b1ac22bb 100644 Binary files a/Assets/Shaders/ShinyHighlight_FS.shshaderb and b/Assets/Shaders/ShinyHighlight_FS.shshaderb differ 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/Assets/Shaders/Trajectory_VS.glsl b/Assets/Shaders/Trajectory_VS.glsl index 86be6b7e..1b4de7f7 100644 --- a/Assets/Shaders/Trajectory_VS.glsl +++ b/Assets/Shaders/Trajectory_VS.glsl @@ -32,5 +32,5 @@ void main() Out.uv = aUV; Out.color = aColor; - gl_Position = cameraData.projMat * aTransform * vec4(aPos, 1.0f); + gl_Position = cameraData.vpMat * aTransform * vec4(aPos, 1.0f); } \ No newline at end of file diff --git a/Assets/Shaders/Trajectory_VS.shshaderb b/Assets/Shaders/Trajectory_VS.shshaderb index 6f509f5c..b7a0f9fb 100644 Binary files a/Assets/Shaders/Trajectory_VS.shshaderb and b/Assets/Shaders/Trajectory_VS.shshaderb differ diff --git a/Assets/Shaders/UI_Black_FS.glsl b/Assets/Shaders/UI_Black_FS.glsl new file mode 100644 index 00000000..84664ede --- /dev/null +++ b/Assets/Shaders/UI_Black_FS.glsl @@ -0,0 +1,49 @@ +#version 450 +#extension GL_ARB_separate_shader_objects : enable +#extension GL_ARB_shading_language_420pack : enable +#extension GL_EXT_nonuniform_qualifier : require + +struct MatPropData +{ + vec4 color; + int textureIndex; + float alpha; +}; + +layout(location = 0) in struct +{ + vec4 vertPos; // location 0 + vec2 uv; // location = 1 + vec4 normal; // location = 2 + +} In; + +// material stuff +layout(location = 3) flat in struct +{ + int materialIndex; + uint eid; + uint lightLayerIndex; +} In2; + +layout (set = 0, binding = 1) uniform sampler2D textures[]; // for textures (global) +layout (std430, set = 2, binding = 0) buffer MaterialProperties // For materials +{ + MatPropData data[]; +} MatProp; + +layout(location = 0) out vec4 fragColor; +layout(location = 1) out uint outEntityID; + +void main() +{ + fragColor = MatProp.data[In2.materialIndex].color; + if (fragColor.a < 0.01f) + { + discard; + } + fragColor.a = MatProp.data[In2.materialIndex].alpha; + + // fragColor.a = 1.0f; + outEntityID = In2.eid; +} \ No newline at end of file diff --git a/Assets/Shaders/UI_Black_FS.shshaderb b/Assets/Shaders/UI_Black_FS.shshaderb new file mode 100644 index 00000000..17a072c9 Binary files /dev/null and b/Assets/Shaders/UI_Black_FS.shshaderb differ diff --git a/Assets/Shaders/UI_Black_FS.shshaderb.shmeta b/Assets/Shaders/UI_Black_FS.shshaderb.shmeta new file mode 100644 index 00000000..b5429d75 --- /dev/null +++ b/Assets/Shaders/UI_Black_FS.shshaderb.shmeta @@ -0,0 +1,3 @@ +Name: UI_Black_FS +ID: 50110174 +Type: 2 diff --git a/Assets/Shaders/UI_FS.glsl b/Assets/Shaders/UI_FS.glsl index 30b59e48..3c66891b 100644 --- a/Assets/Shaders/UI_FS.glsl +++ b/Assets/Shaders/UI_FS.glsl @@ -37,7 +37,7 @@ layout(location = 1) out uint outEntityID; void main() { fragColor = texture(textures[nonuniformEXT(MatProp.data[In2.materialIndex].textureIndex)], In.uv); - if (fragColor.a < 0.01f) + if (fragColor.a < 0.1f) { discard; } diff --git a/Assets/Shaders/UI_FS.shshaderb b/Assets/Shaders/UI_FS.shshaderb index 92f4ed4e..d734949d 100644 Binary files a/Assets/Shaders/UI_FS.shshaderb and b/Assets/Shaders/UI_FS.shshaderb differ diff --git a/Assets/Texture/Buttons/Button_Credits_Hover.dds b/Assets/Texture/Buttons/Button_Credits_Hover.dds new file mode 100644 index 00000000..e19b01e0 Binary files /dev/null and b/Assets/Texture/Buttons/Button_Credits_Hover.dds differ diff --git a/Assets/Texture/Buttons/Button_Credits_Hover.shtex b/Assets/Texture/Buttons/Button_Credits_Hover.shtex new file mode 100644 index 00000000..6d3becbf Binary files /dev/null and b/Assets/Texture/Buttons/Button_Credits_Hover.shtex differ diff --git a/Assets/Texture/Buttons/Button_Credits_Hover.shtex.shmeta b/Assets/Texture/Buttons/Button_Credits_Hover.shtex.shmeta new file mode 100644 index 00000000..eb1dd35c --- /dev/null +++ b/Assets/Texture/Buttons/Button_Credits_Hover.shtex.shmeta @@ -0,0 +1,3 @@ +Name: Button_Credits_Hover +ID: 55990309 +Type: 3 diff --git a/Assets/Texture/Buttons/Button_Credits_Idle.dds b/Assets/Texture/Buttons/Button_Credits_Idle.dds new file mode 100644 index 00000000..4441e21f Binary files /dev/null and b/Assets/Texture/Buttons/Button_Credits_Idle.dds differ diff --git a/Assets/Texture/Buttons/Button_Credits_Idle.shtex b/Assets/Texture/Buttons/Button_Credits_Idle.shtex new file mode 100644 index 00000000..2fe6495d Binary files /dev/null and b/Assets/Texture/Buttons/Button_Credits_Idle.shtex differ diff --git a/Assets/Texture/Buttons/Button_Credits_Idle.shtex.shmeta b/Assets/Texture/Buttons/Button_Credits_Idle.shtex.shmeta new file mode 100644 index 00000000..fba8bb0b --- /dev/null +++ b/Assets/Texture/Buttons/Button_Credits_Idle.shtex.shmeta @@ -0,0 +1,3 @@ +Name: Button_Credits_Idle +ID: 64474447 +Type: 3 diff --git a/Assets/Texture/Buttons/Button_Credits_Pressed.dds b/Assets/Texture/Buttons/Button_Credits_Pressed.dds new file mode 100644 index 00000000..e8c7f159 Binary files /dev/null and b/Assets/Texture/Buttons/Button_Credits_Pressed.dds differ diff --git a/Assets/Texture/Buttons/Button_Credits_Pressed.shtex b/Assets/Texture/Buttons/Button_Credits_Pressed.shtex new file mode 100644 index 00000000..d9a31373 Binary files /dev/null and b/Assets/Texture/Buttons/Button_Credits_Pressed.shtex differ diff --git a/Assets/Texture/Buttons/Button_Credits_Pressed.shtex.shmeta b/Assets/Texture/Buttons/Button_Credits_Pressed.shtex.shmeta new file mode 100644 index 00000000..0b887971 --- /dev/null +++ b/Assets/Texture/Buttons/Button_Credits_Pressed.shtex.shmeta @@ -0,0 +1,3 @@ +Name: Button_Credits_Pressed +ID: 51792742 +Type: 3 diff --git a/Assets/Texture/Buttons/Button_HowToPlay_Hover.dds b/Assets/Texture/Buttons/Button_HowToPlay_Hover.dds new file mode 100644 index 00000000..731b6a84 Binary files /dev/null and b/Assets/Texture/Buttons/Button_HowToPlay_Hover.dds differ diff --git a/Assets/Texture/Buttons/Button_HowToPlay_Hover.shtex b/Assets/Texture/Buttons/Button_HowToPlay_Hover.shtex new file mode 100644 index 00000000..3d197fcb Binary files /dev/null and b/Assets/Texture/Buttons/Button_HowToPlay_Hover.shtex differ diff --git a/Assets/Texture/Buttons/Button_HowToPlay_Hover.shtex.shmeta b/Assets/Texture/Buttons/Button_HowToPlay_Hover.shtex.shmeta new file mode 100644 index 00000000..99664eb4 --- /dev/null +++ b/Assets/Texture/Buttons/Button_HowToPlay_Hover.shtex.shmeta @@ -0,0 +1,3 @@ +Name: Button_HowToPlay_Hover +ID: 61984910 +Type: 3 diff --git a/Assets/Texture/Buttons/Button_HowToPlay_Idle.dds b/Assets/Texture/Buttons/Button_HowToPlay_Idle.dds new file mode 100644 index 00000000..27a5c5de Binary files /dev/null and b/Assets/Texture/Buttons/Button_HowToPlay_Idle.dds differ diff --git a/Assets/Texture/Buttons/Button_HowToPlay_Idle.shtex b/Assets/Texture/Buttons/Button_HowToPlay_Idle.shtex new file mode 100644 index 00000000..6768b883 Binary files /dev/null and b/Assets/Texture/Buttons/Button_HowToPlay_Idle.shtex differ diff --git a/Assets/Texture/Buttons/Button_HowToPlay_Idle.shtex.shmeta b/Assets/Texture/Buttons/Button_HowToPlay_Idle.shtex.shmeta new file mode 100644 index 00000000..7864247b --- /dev/null +++ b/Assets/Texture/Buttons/Button_HowToPlay_Idle.shtex.shmeta @@ -0,0 +1,3 @@ +Name: Button_HowToPlay_Idle +ID: 66240282 +Type: 3 diff --git a/Assets/Texture/Buttons/Button_HowToPlay_Pressed.dds b/Assets/Texture/Buttons/Button_HowToPlay_Pressed.dds new file mode 100644 index 00000000..57436b81 Binary files /dev/null and b/Assets/Texture/Buttons/Button_HowToPlay_Pressed.dds differ diff --git a/Assets/Texture/Buttons/Button_HowToPlay_Pressed.shtex b/Assets/Texture/Buttons/Button_HowToPlay_Pressed.shtex new file mode 100644 index 00000000..46489ae3 Binary files /dev/null and b/Assets/Texture/Buttons/Button_HowToPlay_Pressed.shtex differ diff --git a/Assets/Texture/Buttons/Button_HowToPlay_Pressed.shtex.shmeta b/Assets/Texture/Buttons/Button_HowToPlay_Pressed.shtex.shmeta new file mode 100644 index 00000000..93ad299d --- /dev/null +++ b/Assets/Texture/Buttons/Button_HowToPlay_Pressed.shtex.shmeta @@ -0,0 +1,3 @@ +Name: Button_HowToPlay_Pressed +ID: 58181792 +Type: 3 diff --git a/Assets/Texture/Buttons/Button_LevelSelect_Hover.dds b/Assets/Texture/Buttons/Button_LevelSelect_Hover.dds new file mode 100644 index 00000000..8901b9e2 Binary files /dev/null and b/Assets/Texture/Buttons/Button_LevelSelect_Hover.dds differ diff --git a/Assets/Texture/Buttons/Button_LevelSelect_Hover.shtex b/Assets/Texture/Buttons/Button_LevelSelect_Hover.shtex new file mode 100644 index 00000000..6552652b Binary files /dev/null and b/Assets/Texture/Buttons/Button_LevelSelect_Hover.shtex differ diff --git a/Assets/Texture/Buttons/Button_LevelSelect_Hover.shtex.shmeta b/Assets/Texture/Buttons/Button_LevelSelect_Hover.shtex.shmeta new file mode 100644 index 00000000..580c9aa3 --- /dev/null +++ b/Assets/Texture/Buttons/Button_LevelSelect_Hover.shtex.shmeta @@ -0,0 +1,3 @@ +Name: Button_LevelSelect_Hover +ID: 65992947 +Type: 3 diff --git a/Assets/Texture/Buttons/Button_LevelSelect_Idle.dds b/Assets/Texture/Buttons/Button_LevelSelect_Idle.dds new file mode 100644 index 00000000..2fde3e67 Binary files /dev/null and b/Assets/Texture/Buttons/Button_LevelSelect_Idle.dds differ diff --git a/Assets/Texture/Buttons/Button_LevelSelect_Idle.shtex b/Assets/Texture/Buttons/Button_LevelSelect_Idle.shtex new file mode 100644 index 00000000..c6dcfd8f Binary files /dev/null and b/Assets/Texture/Buttons/Button_LevelSelect_Idle.shtex differ diff --git a/Assets/Texture/Buttons/Button_LevelSelect_Idle.shtex.shmeta b/Assets/Texture/Buttons/Button_LevelSelect_Idle.shtex.shmeta new file mode 100644 index 00000000..b06912cc --- /dev/null +++ b/Assets/Texture/Buttons/Button_LevelSelect_Idle.shtex.shmeta @@ -0,0 +1,3 @@ +Name: Button_LevelSelect_Idle +ID: 66852025 +Type: 3 diff --git a/Assets/Texture/Buttons/Button_LevelSelect_Pressed.dds b/Assets/Texture/Buttons/Button_LevelSelect_Pressed.dds new file mode 100644 index 00000000..28c78e7b Binary files /dev/null and b/Assets/Texture/Buttons/Button_LevelSelect_Pressed.dds differ diff --git a/Assets/Texture/Buttons/Button_LevelSelect_Pressed.shtex b/Assets/Texture/Buttons/Button_LevelSelect_Pressed.shtex new file mode 100644 index 00000000..1f0e3913 Binary files /dev/null and b/Assets/Texture/Buttons/Button_LevelSelect_Pressed.shtex differ diff --git a/Assets/Texture/Buttons/Button_LevelSelect_Pressed.shtex.shmeta b/Assets/Texture/Buttons/Button_LevelSelect_Pressed.shtex.shmeta new file mode 100644 index 00000000..b8c39cbb --- /dev/null +++ b/Assets/Texture/Buttons/Button_LevelSelect_Pressed.shtex.shmeta @@ -0,0 +1,3 @@ +Name: Button_LevelSelect_Pressed +ID: 57197441 +Type: 3 diff --git a/Assets/Texture/Buttons/Button_MainMenu_Hover.dds b/Assets/Texture/Buttons/Button_MainMenu_Hover.dds new file mode 100644 index 00000000..6beefe43 Binary files /dev/null and b/Assets/Texture/Buttons/Button_MainMenu_Hover.dds differ diff --git a/Assets/Texture/Buttons/Button_MainMenu_Hover.shtex b/Assets/Texture/Buttons/Button_MainMenu_Hover.shtex new file mode 100644 index 00000000..51eeccf7 Binary files /dev/null and b/Assets/Texture/Buttons/Button_MainMenu_Hover.shtex differ diff --git a/Assets/Texture/Buttons/Button_MainMenu_Hover.shtex.shmeta b/Assets/Texture/Buttons/Button_MainMenu_Hover.shtex.shmeta new file mode 100644 index 00000000..73dcc914 --- /dev/null +++ b/Assets/Texture/Buttons/Button_MainMenu_Hover.shtex.shmeta @@ -0,0 +1,3 @@ +Name: Button_MainMenu_Hover +ID: 58758882 +Type: 3 diff --git a/Assets/Texture/Buttons/Button_MainMenu_Idle.dds b/Assets/Texture/Buttons/Button_MainMenu_Idle.dds new file mode 100644 index 00000000..bf6f26dc Binary files /dev/null and b/Assets/Texture/Buttons/Button_MainMenu_Idle.dds differ diff --git a/Assets/Texture/Buttons/Button_MainMenu_Idle.shtex b/Assets/Texture/Buttons/Button_MainMenu_Idle.shtex new file mode 100644 index 00000000..6af46820 Binary files /dev/null and b/Assets/Texture/Buttons/Button_MainMenu_Idle.shtex differ diff --git a/Assets/Texture/Buttons/Button_MainMenu_Idle.shtex.shmeta b/Assets/Texture/Buttons/Button_MainMenu_Idle.shtex.shmeta new file mode 100644 index 00000000..cd437a71 --- /dev/null +++ b/Assets/Texture/Buttons/Button_MainMenu_Idle.shtex.shmeta @@ -0,0 +1,3 @@ +Name: Button_MainMenu_Idle +ID: 58945566 +Type: 3 diff --git a/Assets/Texture/Buttons/Button_MainMenu_Pressed.dds b/Assets/Texture/Buttons/Button_MainMenu_Pressed.dds new file mode 100644 index 00000000..93696875 Binary files /dev/null and b/Assets/Texture/Buttons/Button_MainMenu_Pressed.dds differ diff --git a/Assets/Texture/Buttons/Button_MainMenu_Pressed.shtex b/Assets/Texture/Buttons/Button_MainMenu_Pressed.shtex new file mode 100644 index 00000000..6e2904f2 Binary files /dev/null and b/Assets/Texture/Buttons/Button_MainMenu_Pressed.shtex differ diff --git a/Assets/Texture/Buttons/Button_MainMenu_Pressed.shtex.shmeta b/Assets/Texture/Buttons/Button_MainMenu_Pressed.shtex.shmeta new file mode 100644 index 00000000..3ad56690 --- /dev/null +++ b/Assets/Texture/Buttons/Button_MainMenu_Pressed.shtex.shmeta @@ -0,0 +1,3 @@ +Name: Button_MainMenu_Pressed +ID: 50335070 +Type: 3 diff --git a/Assets/Texture/Buttons/Button_Options_Hover.dds b/Assets/Texture/Buttons/Button_Options_Hover.dds new file mode 100644 index 00000000..b21b99e5 Binary files /dev/null and b/Assets/Texture/Buttons/Button_Options_Hover.dds differ diff --git a/Assets/Texture/Buttons/Button_Options_Hover.shtex b/Assets/Texture/Buttons/Button_Options_Hover.shtex new file mode 100644 index 00000000..fd877b5a Binary files /dev/null and b/Assets/Texture/Buttons/Button_Options_Hover.shtex differ diff --git a/Assets/Texture/Buttons/Button_Options_Hover.shtex.shmeta b/Assets/Texture/Buttons/Button_Options_Hover.shtex.shmeta new file mode 100644 index 00000000..d9982cbd --- /dev/null +++ b/Assets/Texture/Buttons/Button_Options_Hover.shtex.shmeta @@ -0,0 +1,3 @@ +Name: Button_Options_Hover +ID: 54697998 +Type: 3 diff --git a/Assets/Texture/Buttons/Button_Options_Idle.dds b/Assets/Texture/Buttons/Button_Options_Idle.dds new file mode 100644 index 00000000..d9b18cb8 Binary files /dev/null and b/Assets/Texture/Buttons/Button_Options_Idle.dds differ diff --git a/Assets/Texture/Buttons/Button_Options_Idle.shtex b/Assets/Texture/Buttons/Button_Options_Idle.shtex new file mode 100644 index 00000000..7fdf9e59 Binary files /dev/null and b/Assets/Texture/Buttons/Button_Options_Idle.shtex differ diff --git a/Assets/Texture/Buttons/Button_Options_Idle.shtex.shmeta b/Assets/Texture/Buttons/Button_Options_Idle.shtex.shmeta new file mode 100644 index 00000000..7ed2b446 --- /dev/null +++ b/Assets/Texture/Buttons/Button_Options_Idle.shtex.shmeta @@ -0,0 +1,3 @@ +Name: Button_Options_Idle +ID: 58867111 +Type: 3 diff --git a/Assets/Texture/Buttons/Button_Options_Pressed.dds b/Assets/Texture/Buttons/Button_Options_Pressed.dds new file mode 100644 index 00000000..a0d6f14a Binary files /dev/null and b/Assets/Texture/Buttons/Button_Options_Pressed.dds differ diff --git a/Assets/Texture/Buttons/Button_Options_Pressed.shtex b/Assets/Texture/Buttons/Button_Options_Pressed.shtex new file mode 100644 index 00000000..b3f2bbb0 Binary files /dev/null and b/Assets/Texture/Buttons/Button_Options_Pressed.shtex differ diff --git a/Assets/Texture/Buttons/Button_Options_Pressed.shtex.shmeta b/Assets/Texture/Buttons/Button_Options_Pressed.shtex.shmeta new file mode 100644 index 00000000..8c6d98cb --- /dev/null +++ b/Assets/Texture/Buttons/Button_Options_Pressed.shtex.shmeta @@ -0,0 +1,3 @@ +Name: Button_Options_Pressed +ID: 62936121 +Type: 3 diff --git a/Assets/Texture/Buttons/Button_Quit_Hover.dds b/Assets/Texture/Buttons/Button_Quit_Hover.dds new file mode 100644 index 00000000..181a4ab6 Binary files /dev/null and b/Assets/Texture/Buttons/Button_Quit_Hover.dds differ diff --git a/Assets/Texture/Buttons/Button_Quit_Hover.shtex b/Assets/Texture/Buttons/Button_Quit_Hover.shtex new file mode 100644 index 00000000..92d30c1b Binary files /dev/null and b/Assets/Texture/Buttons/Button_Quit_Hover.shtex differ diff --git a/Assets/Texture/Buttons/Button_Quit_Hover.shtex.shmeta b/Assets/Texture/Buttons/Button_Quit_Hover.shtex.shmeta new file mode 100644 index 00000000..9d9b3471 --- /dev/null +++ b/Assets/Texture/Buttons/Button_Quit_Hover.shtex.shmeta @@ -0,0 +1,3 @@ +Name: Button_Quit_Hover +ID: 58910810 +Type: 3 diff --git a/Assets/Texture/Buttons/Button_Quit_Idle.dds b/Assets/Texture/Buttons/Button_Quit_Idle.dds new file mode 100644 index 00000000..1e6a35bd Binary files /dev/null and b/Assets/Texture/Buttons/Button_Quit_Idle.dds differ diff --git a/Assets/Texture/Buttons/Button_Quit_Idle.shtex b/Assets/Texture/Buttons/Button_Quit_Idle.shtex new file mode 100644 index 00000000..37cbbdd5 Binary files /dev/null and b/Assets/Texture/Buttons/Button_Quit_Idle.shtex differ diff --git a/Assets/Texture/Buttons/Button_Quit_Idle.shtex.shmeta b/Assets/Texture/Buttons/Button_Quit_Idle.shtex.shmeta new file mode 100644 index 00000000..83764772 --- /dev/null +++ b/Assets/Texture/Buttons/Button_Quit_Idle.shtex.shmeta @@ -0,0 +1,3 @@ +Name: Button_Quit_Idle +ID: 61602036 +Type: 3 diff --git a/Assets/Texture/Buttons/Button_Quit_Pressed.dds b/Assets/Texture/Buttons/Button_Quit_Pressed.dds new file mode 100644 index 00000000..1f7d7331 Binary files /dev/null and b/Assets/Texture/Buttons/Button_Quit_Pressed.dds differ diff --git a/Assets/Texture/Buttons/Button_Quit_Pressed.shtex b/Assets/Texture/Buttons/Button_Quit_Pressed.shtex new file mode 100644 index 00000000..4e0391df Binary files /dev/null and b/Assets/Texture/Buttons/Button_Quit_Pressed.shtex differ diff --git a/Assets/Texture/Buttons/Button_Quit_Pressed.shtex.shmeta b/Assets/Texture/Buttons/Button_Quit_Pressed.shtex.shmeta new file mode 100644 index 00000000..829a97e0 --- /dev/null +++ b/Assets/Texture/Buttons/Button_Quit_Pressed.shtex.shmeta @@ -0,0 +1,3 @@ +Name: Button_Quit_Pressed +ID: 57786063 +Type: 3 diff --git a/Assets/Texture/Buttons/Button_Retry_Hover.dds b/Assets/Texture/Buttons/Button_Retry_Hover.dds new file mode 100644 index 00000000..5eb05b41 Binary files /dev/null and b/Assets/Texture/Buttons/Button_Retry_Hover.dds differ diff --git a/Assets/Texture/Buttons/Button_Retry_Hover.shtex b/Assets/Texture/Buttons/Button_Retry_Hover.shtex new file mode 100644 index 00000000..a6cee8ed Binary files /dev/null and b/Assets/Texture/Buttons/Button_Retry_Hover.shtex differ diff --git a/Assets/Texture/Buttons/Button_Retry_Hover.shtex.shmeta b/Assets/Texture/Buttons/Button_Retry_Hover.shtex.shmeta new file mode 100644 index 00000000..28928eda --- /dev/null +++ b/Assets/Texture/Buttons/Button_Retry_Hover.shtex.shmeta @@ -0,0 +1,3 @@ +Name: Button_Retry_Hover +ID: 58347825 +Type: 3 diff --git a/Assets/Texture/Buttons/Button_Retry_Idle.dds b/Assets/Texture/Buttons/Button_Retry_Idle.dds new file mode 100644 index 00000000..09ad55f3 Binary files /dev/null and b/Assets/Texture/Buttons/Button_Retry_Idle.dds differ diff --git a/Assets/Texture/Buttons/Button_Retry_Idle.shtex b/Assets/Texture/Buttons/Button_Retry_Idle.shtex new file mode 100644 index 00000000..00592238 Binary files /dev/null and b/Assets/Texture/Buttons/Button_Retry_Idle.shtex differ diff --git a/Assets/Texture/Buttons/Button_Retry_Idle.shtex.shmeta b/Assets/Texture/Buttons/Button_Retry_Idle.shtex.shmeta new file mode 100644 index 00000000..7f2cf050 --- /dev/null +++ b/Assets/Texture/Buttons/Button_Retry_Idle.shtex.shmeta @@ -0,0 +1,3 @@ +Name: Button_Retry_Idle +ID: 64806384 +Type: 3 diff --git a/Assets/Texture/Buttons/Button_Retry_Pressed.dds b/Assets/Texture/Buttons/Button_Retry_Pressed.dds new file mode 100644 index 00000000..a7a5c125 Binary files /dev/null and b/Assets/Texture/Buttons/Button_Retry_Pressed.dds differ diff --git a/Assets/Texture/Buttons/Button_Retry_Pressed.shtex b/Assets/Texture/Buttons/Button_Retry_Pressed.shtex new file mode 100644 index 00000000..a3b7dce9 Binary files /dev/null and b/Assets/Texture/Buttons/Button_Retry_Pressed.shtex differ diff --git a/Assets/Texture/Buttons/Button_Retry_Pressed.shtex.shmeta b/Assets/Texture/Buttons/Button_Retry_Pressed.shtex.shmeta new file mode 100644 index 00000000..d4064d14 --- /dev/null +++ b/Assets/Texture/Buttons/Button_Retry_Pressed.shtex.shmeta @@ -0,0 +1,3 @@ +Name: Button_Retry_Pressed +ID: 63234380 +Type: 3 diff --git a/Assets/Texture/Buttons/Button_Start_Hover.dds b/Assets/Texture/Buttons/Button_Start_Hover.dds new file mode 100644 index 00000000..6ce4756e Binary files /dev/null and b/Assets/Texture/Buttons/Button_Start_Hover.dds differ diff --git a/Assets/Texture/Buttons/Button_Start_Hover.shtex b/Assets/Texture/Buttons/Button_Start_Hover.shtex new file mode 100644 index 00000000..ad298931 Binary files /dev/null and b/Assets/Texture/Buttons/Button_Start_Hover.shtex differ diff --git a/Assets/Texture/Buttons/Button_Start_Hover.shtex.shmeta b/Assets/Texture/Buttons/Button_Start_Hover.shtex.shmeta new file mode 100644 index 00000000..08f16bb9 --- /dev/null +++ b/Assets/Texture/Buttons/Button_Start_Hover.shtex.shmeta @@ -0,0 +1,3 @@ +Name: Button_Start_Hover +ID: 51379325 +Type: 3 diff --git a/Assets/Texture/Buttons/Button_Start_Idle.dds b/Assets/Texture/Buttons/Button_Start_Idle.dds new file mode 100644 index 00000000..aefc7976 Binary files /dev/null and b/Assets/Texture/Buttons/Button_Start_Idle.dds differ diff --git a/Assets/Texture/Buttons/Button_Start_Idle.shtex b/Assets/Texture/Buttons/Button_Start_Idle.shtex new file mode 100644 index 00000000..6f363805 Binary files /dev/null and b/Assets/Texture/Buttons/Button_Start_Idle.shtex differ diff --git a/Assets/Texture/Buttons/Button_Start_Idle.shtex.shmeta b/Assets/Texture/Buttons/Button_Start_Idle.shtex.shmeta new file mode 100644 index 00000000..8cd43f09 --- /dev/null +++ b/Assets/Texture/Buttons/Button_Start_Idle.shtex.shmeta @@ -0,0 +1,3 @@ +Name: Button_Start_Idle +ID: 63979907 +Type: 3 diff --git a/Assets/Texture/Buttons/Button_Start_Pressed.dds b/Assets/Texture/Buttons/Button_Start_Pressed.dds new file mode 100644 index 00000000..47ce28af Binary files /dev/null and b/Assets/Texture/Buttons/Button_Start_Pressed.dds differ diff --git a/Assets/Texture/Buttons/Button_Start_Pressed.shtex b/Assets/Texture/Buttons/Button_Start_Pressed.shtex new file mode 100644 index 00000000..0025bfe7 Binary files /dev/null and b/Assets/Texture/Buttons/Button_Start_Pressed.shtex differ diff --git a/Assets/Texture/Buttons/Button_Start_Pressed.shtex.shmeta b/Assets/Texture/Buttons/Button_Start_Pressed.shtex.shmeta new file mode 100644 index 00000000..c0d6f217 --- /dev/null +++ b/Assets/Texture/Buttons/Button_Start_Pressed.shtex.shmeta @@ -0,0 +1,3 @@ +Name: Button_Start_Pressed +ID: 66788278 +Type: 3 diff --git a/Assets/Texture/Buttons/howToPlay_default.dds b/Assets/Texture/Buttons/howToPlay_default.dds deleted file mode 100644 index b29bb336..00000000 Binary files a/Assets/Texture/Buttons/howToPlay_default.dds and /dev/null differ diff --git a/Assets/Texture/Buttons/howToPlay_default.shtex b/Assets/Texture/Buttons/howToPlay_default.shtex deleted file mode 100644 index 44fd4ab9..00000000 Binary files a/Assets/Texture/Buttons/howToPlay_default.shtex and /dev/null differ diff --git a/Assets/Texture/Buttons/howToPlay_default.shtex.shmeta b/Assets/Texture/Buttons/howToPlay_default.shtex.shmeta deleted file mode 100644 index da1023a1..00000000 --- a/Assets/Texture/Buttons/howToPlay_default.shtex.shmeta +++ /dev/null @@ -1,3 +0,0 @@ -Name: howToPlay_default -ID: 65084899 -Type: 3 diff --git a/Assets/Texture/Buttons/howToPlay_hover.dds b/Assets/Texture/Buttons/howToPlay_hover.dds deleted file mode 100644 index 1d59d29b..00000000 Binary files a/Assets/Texture/Buttons/howToPlay_hover.dds and /dev/null differ diff --git a/Assets/Texture/Buttons/howToPlay_hover.shtex b/Assets/Texture/Buttons/howToPlay_hover.shtex deleted file mode 100644 index daafd0ac..00000000 Binary files a/Assets/Texture/Buttons/howToPlay_hover.shtex and /dev/null differ diff --git a/Assets/Texture/Buttons/howToPlay_hover.shtex.shmeta b/Assets/Texture/Buttons/howToPlay_hover.shtex.shmeta deleted file mode 100644 index 044046c3..00000000 --- a/Assets/Texture/Buttons/howToPlay_hover.shtex.shmeta +++ /dev/null @@ -1,3 +0,0 @@ -Name: howToPlay_hover -ID: 58647112 -Type: 3 diff --git a/Assets/Texture/Buttons/howToPlay_pressed.dds b/Assets/Texture/Buttons/howToPlay_pressed.dds deleted file mode 100644 index 08f50be5..00000000 Binary files a/Assets/Texture/Buttons/howToPlay_pressed.dds and /dev/null differ diff --git a/Assets/Texture/Buttons/howToPlay_pressed.shtex b/Assets/Texture/Buttons/howToPlay_pressed.shtex deleted file mode 100644 index 15396e92..00000000 Binary files a/Assets/Texture/Buttons/howToPlay_pressed.shtex and /dev/null differ diff --git a/Assets/Texture/Buttons/howToPlay_pressed.shtex.shmeta b/Assets/Texture/Buttons/howToPlay_pressed.shtex.shmeta deleted file mode 100644 index 96ea8621..00000000 --- a/Assets/Texture/Buttons/howToPlay_pressed.shtex.shmeta +++ /dev/null @@ -1,3 +0,0 @@ -Name: howToPlay_pressed -ID: 55758383 -Type: 3 diff --git a/Assets/Texture/Buttons/mainMenu_default.dds b/Assets/Texture/Buttons/mainMenu_default.dds deleted file mode 100644 index d06e997a..00000000 Binary files a/Assets/Texture/Buttons/mainMenu_default.dds and /dev/null differ diff --git a/Assets/Texture/Buttons/mainMenu_default.shtex b/Assets/Texture/Buttons/mainMenu_default.shtex deleted file mode 100644 index 552473a2..00000000 Binary files a/Assets/Texture/Buttons/mainMenu_default.shtex and /dev/null differ diff --git a/Assets/Texture/Buttons/mainMenu_default.shtex.shmeta b/Assets/Texture/Buttons/mainMenu_default.shtex.shmeta deleted file mode 100644 index 04b06d0d..00000000 --- a/Assets/Texture/Buttons/mainMenu_default.shtex.shmeta +++ /dev/null @@ -1,3 +0,0 @@ -Name: mainMenu_default -ID: 65788519 -Type: 3 diff --git a/Assets/Texture/Buttons/mainMenu_hover.dds b/Assets/Texture/Buttons/mainMenu_hover.dds deleted file mode 100644 index 3c30985a..00000000 Binary files a/Assets/Texture/Buttons/mainMenu_hover.dds and /dev/null differ diff --git a/Assets/Texture/Buttons/mainMenu_hover.shtex b/Assets/Texture/Buttons/mainMenu_hover.shtex deleted file mode 100644 index 1b54850b..00000000 Binary files a/Assets/Texture/Buttons/mainMenu_hover.shtex and /dev/null differ diff --git a/Assets/Texture/Buttons/mainMenu_hover.shtex.shmeta b/Assets/Texture/Buttons/mainMenu_hover.shtex.shmeta deleted file mode 100644 index f0a7cc7f..00000000 --- a/Assets/Texture/Buttons/mainMenu_hover.shtex.shmeta +++ /dev/null @@ -1,3 +0,0 @@ -Name: mainMenu_hover -ID: 55999018 -Type: 3 diff --git a/Assets/Texture/Buttons/mainMenu_pressed.dds b/Assets/Texture/Buttons/mainMenu_pressed.dds deleted file mode 100644 index b384e5c2..00000000 Binary files a/Assets/Texture/Buttons/mainMenu_pressed.dds and /dev/null differ diff --git a/Assets/Texture/Buttons/mainMenu_pressed.shtex b/Assets/Texture/Buttons/mainMenu_pressed.shtex deleted file mode 100644 index 1f39d443..00000000 Binary files a/Assets/Texture/Buttons/mainMenu_pressed.shtex and /dev/null differ diff --git a/Assets/Texture/Buttons/mainMenu_pressed.shtex.shmeta b/Assets/Texture/Buttons/mainMenu_pressed.shtex.shmeta deleted file mode 100644 index 75dd4050..00000000 --- a/Assets/Texture/Buttons/mainMenu_pressed.shtex.shmeta +++ /dev/null @@ -1,3 +0,0 @@ -Name: mainMenu_pressed -ID: 66382894 -Type: 3 diff --git a/Assets/Texture/Buttons/quit_default.dds b/Assets/Texture/Buttons/quit_default.dds deleted file mode 100644 index 52b3e518..00000000 Binary files a/Assets/Texture/Buttons/quit_default.dds and /dev/null differ diff --git a/Assets/Texture/Buttons/quit_default.shtex b/Assets/Texture/Buttons/quit_default.shtex deleted file mode 100644 index 96bbc662..00000000 Binary files a/Assets/Texture/Buttons/quit_default.shtex and /dev/null differ diff --git a/Assets/Texture/Buttons/quit_default.shtex.shmeta b/Assets/Texture/Buttons/quit_default.shtex.shmeta deleted file mode 100644 index 38aab052..00000000 --- a/Assets/Texture/Buttons/quit_default.shtex.shmeta +++ /dev/null @@ -1,3 +0,0 @@ -Name: quit_default -ID: 66477839 -Type: 3 diff --git a/Assets/Texture/Buttons/quit_hover.dds b/Assets/Texture/Buttons/quit_hover.dds deleted file mode 100644 index fb2c84c8..00000000 Binary files a/Assets/Texture/Buttons/quit_hover.dds and /dev/null differ diff --git a/Assets/Texture/Buttons/quit_hover.shtex b/Assets/Texture/Buttons/quit_hover.shtex deleted file mode 100644 index 766a41bd..00000000 Binary files a/Assets/Texture/Buttons/quit_hover.shtex and /dev/null differ diff --git a/Assets/Texture/Buttons/quit_hover.shtex.shmeta b/Assets/Texture/Buttons/quit_hover.shtex.shmeta deleted file mode 100644 index 1023cd6d..00000000 --- a/Assets/Texture/Buttons/quit_hover.shtex.shmeta +++ /dev/null @@ -1,3 +0,0 @@ -Name: quit_hover -ID: 65045286 -Type: 3 diff --git a/Assets/Texture/Buttons/quit_pressed.dds b/Assets/Texture/Buttons/quit_pressed.dds deleted file mode 100644 index ab9754d2..00000000 Binary files a/Assets/Texture/Buttons/quit_pressed.dds and /dev/null differ diff --git a/Assets/Texture/Buttons/quit_pressed.shtex b/Assets/Texture/Buttons/quit_pressed.shtex deleted file mode 100644 index afc2662f..00000000 Binary files a/Assets/Texture/Buttons/quit_pressed.shtex and /dev/null differ diff --git a/Assets/Texture/Buttons/quit_pressed.shtex.shmeta b/Assets/Texture/Buttons/quit_pressed.shtex.shmeta deleted file mode 100644 index 75d38cdc..00000000 --- a/Assets/Texture/Buttons/quit_pressed.shtex.shmeta +++ /dev/null @@ -1,3 +0,0 @@ -Name: quit_pressed -ID: 58607560 -Type: 3 diff --git a/Assets/Texture/Buttons/retry_default.dds b/Assets/Texture/Buttons/retry_default.dds deleted file mode 100644 index 373d9792..00000000 Binary files a/Assets/Texture/Buttons/retry_default.dds and /dev/null differ diff --git a/Assets/Texture/Buttons/retry_default.shtex b/Assets/Texture/Buttons/retry_default.shtex deleted file mode 100644 index f64dcbd3..00000000 Binary files a/Assets/Texture/Buttons/retry_default.shtex and /dev/null differ diff --git a/Assets/Texture/Buttons/retry_default.shtex.shmeta b/Assets/Texture/Buttons/retry_default.shtex.shmeta deleted file mode 100644 index e8e00bea..00000000 --- a/Assets/Texture/Buttons/retry_default.shtex.shmeta +++ /dev/null @@ -1,3 +0,0 @@ -Name: retry_default -ID: 55782622 -Type: 3 diff --git a/Assets/Texture/Buttons/retry_hover.dds b/Assets/Texture/Buttons/retry_hover.dds deleted file mode 100644 index e8d25717..00000000 Binary files a/Assets/Texture/Buttons/retry_hover.dds and /dev/null differ diff --git a/Assets/Texture/Buttons/retry_hover.shtex b/Assets/Texture/Buttons/retry_hover.shtex deleted file mode 100644 index f5e30205..00000000 Binary files a/Assets/Texture/Buttons/retry_hover.shtex and /dev/null differ diff --git a/Assets/Texture/Buttons/retry_hover.shtex.shmeta b/Assets/Texture/Buttons/retry_hover.shtex.shmeta deleted file mode 100644 index 8c26fe21..00000000 --- a/Assets/Texture/Buttons/retry_hover.shtex.shmeta +++ /dev/null @@ -1,3 +0,0 @@ -Name: retry_hover -ID: 58972174 -Type: 3 diff --git a/Assets/Texture/Buttons/retry_pressed.dds b/Assets/Texture/Buttons/retry_pressed.dds deleted file mode 100644 index d0f90c99..00000000 Binary files a/Assets/Texture/Buttons/retry_pressed.dds and /dev/null differ diff --git a/Assets/Texture/Buttons/retry_pressed.shtex b/Assets/Texture/Buttons/retry_pressed.shtex deleted file mode 100644 index fb134ec9..00000000 Binary files a/Assets/Texture/Buttons/retry_pressed.shtex and /dev/null differ diff --git a/Assets/Texture/Buttons/retry_pressed.shtex.shmeta b/Assets/Texture/Buttons/retry_pressed.shtex.shmeta deleted file mode 100644 index 2f9fd295..00000000 --- a/Assets/Texture/Buttons/retry_pressed.shtex.shmeta +++ /dev/null @@ -1,3 +0,0 @@ -Name: retry_pressed -ID: 55224464 -Type: 3 diff --git a/Assets/Texture/Buttons/settings_default.dds b/Assets/Texture/Buttons/settings_default.dds deleted file mode 100644 index 7c37be34..00000000 Binary files a/Assets/Texture/Buttons/settings_default.dds and /dev/null differ diff --git a/Assets/Texture/Buttons/settings_default.shtex b/Assets/Texture/Buttons/settings_default.shtex deleted file mode 100644 index 126499fd..00000000 Binary files a/Assets/Texture/Buttons/settings_default.shtex and /dev/null differ diff --git a/Assets/Texture/Buttons/settings_default.shtex.shmeta b/Assets/Texture/Buttons/settings_default.shtex.shmeta deleted file mode 100644 index 2c3121ce..00000000 --- a/Assets/Texture/Buttons/settings_default.shtex.shmeta +++ /dev/null @@ -1,3 +0,0 @@ -Name: settings_default -ID: 58593104 -Type: 3 diff --git a/Assets/Texture/Buttons/settings_hover.dds b/Assets/Texture/Buttons/settings_hover.dds deleted file mode 100644 index 88269cac..00000000 Binary files a/Assets/Texture/Buttons/settings_hover.dds and /dev/null differ diff --git a/Assets/Texture/Buttons/settings_hover.shtex b/Assets/Texture/Buttons/settings_hover.shtex deleted file mode 100644 index 32955a83..00000000 Binary files a/Assets/Texture/Buttons/settings_hover.shtex and /dev/null differ diff --git a/Assets/Texture/Buttons/settings_hover.shtex.shmeta b/Assets/Texture/Buttons/settings_hover.shtex.shmeta deleted file mode 100644 index 061eb51d..00000000 --- a/Assets/Texture/Buttons/settings_hover.shtex.shmeta +++ /dev/null @@ -1,3 +0,0 @@ -Name: settings_hover -ID: 64495732 -Type: 3 diff --git a/Assets/Texture/Buttons/settings_pressed.dds b/Assets/Texture/Buttons/settings_pressed.dds deleted file mode 100644 index c038bcdc..00000000 Binary files a/Assets/Texture/Buttons/settings_pressed.dds and /dev/null differ diff --git a/Assets/Texture/Buttons/settings_pressed.shtex b/Assets/Texture/Buttons/settings_pressed.shtex deleted file mode 100644 index 0342170a..00000000 Binary files a/Assets/Texture/Buttons/settings_pressed.shtex and /dev/null differ diff --git a/Assets/Texture/Buttons/settings_pressed.shtex.shmeta b/Assets/Texture/Buttons/settings_pressed.shtex.shmeta deleted file mode 100644 index e2007e10..00000000 --- a/Assets/Texture/Buttons/settings_pressed.shtex.shmeta +++ /dev/null @@ -1,3 +0,0 @@ -Name: settings_pressed -ID: 63138015 -Type: 3 diff --git a/Assets/Texture/Buttons/startGame_default.dds b/Assets/Texture/Buttons/startGame_default.dds deleted file mode 100644 index f8ece9bb..00000000 Binary files a/Assets/Texture/Buttons/startGame_default.dds and /dev/null differ diff --git a/Assets/Texture/Buttons/startGame_default.shtex b/Assets/Texture/Buttons/startGame_default.shtex deleted file mode 100644 index 174eca7d..00000000 Binary files a/Assets/Texture/Buttons/startGame_default.shtex and /dev/null differ diff --git a/Assets/Texture/Buttons/startGame_default.shtex.shmeta b/Assets/Texture/Buttons/startGame_default.shtex.shmeta deleted file mode 100644 index 6dd0376f..00000000 --- a/Assets/Texture/Buttons/startGame_default.shtex.shmeta +++ /dev/null @@ -1,3 +0,0 @@ -Name: startGame_default -ID: 52901020 -Type: 3 diff --git a/Assets/Texture/Buttons/startGame_hover.dds b/Assets/Texture/Buttons/startGame_hover.dds deleted file mode 100644 index aedcab05..00000000 Binary files a/Assets/Texture/Buttons/startGame_hover.dds and /dev/null differ diff --git a/Assets/Texture/Buttons/startGame_hover.shtex b/Assets/Texture/Buttons/startGame_hover.shtex deleted file mode 100644 index 61abe918..00000000 Binary files a/Assets/Texture/Buttons/startGame_hover.shtex and /dev/null differ diff --git a/Assets/Texture/Buttons/startGame_hover.shtex.shmeta b/Assets/Texture/Buttons/startGame_hover.shtex.shmeta deleted file mode 100644 index 881b34f9..00000000 --- a/Assets/Texture/Buttons/startGame_hover.shtex.shmeta +++ /dev/null @@ -1,3 +0,0 @@ -Name: startGame_hover -ID: 62235279 -Type: 3 diff --git a/Assets/Texture/Buttons/startGame_pressed.dds b/Assets/Texture/Buttons/startGame_pressed.dds deleted file mode 100644 index a915be85..00000000 Binary files a/Assets/Texture/Buttons/startGame_pressed.dds and /dev/null differ diff --git a/Assets/Texture/Buttons/startGame_pressed.shtex b/Assets/Texture/Buttons/startGame_pressed.shtex deleted file mode 100644 index 1dcc8ba3..00000000 Binary files a/Assets/Texture/Buttons/startGame_pressed.shtex and /dev/null differ diff --git a/Assets/Texture/Buttons/startGame_pressed.shtex.shmeta b/Assets/Texture/Buttons/startGame_pressed.shtex.shmeta deleted file mode 100644 index 05314b21..00000000 --- a/Assets/Texture/Buttons/startGame_pressed.shtex.shmeta +++ /dev/null @@ -1,3 +0,0 @@ -Name: startGame_pressed -ID: 64722619 -Type: 3 diff --git a/Assets/Texture/Cutscene/TX_cutscene_04a.dds b/Assets/Texture/Cutscene/TX_cutscene_04a.dds new file mode 100644 index 00000000..68162863 Binary files /dev/null and b/Assets/Texture/Cutscene/TX_cutscene_04a.dds differ diff --git a/Assets/Texture/Cutscene/TX_cutscene_04a.shtex b/Assets/Texture/Cutscene/TX_cutscene_04a.shtex new file mode 100644 index 00000000..ac8bef3a Binary files /dev/null and b/Assets/Texture/Cutscene/TX_cutscene_04a.shtex differ diff --git a/Assets/Texture/Cutscene/TX_cutscene_04a.shtex.shmeta b/Assets/Texture/Cutscene/TX_cutscene_04a.shtex.shmeta new file mode 100644 index 00000000..fab6ad23 --- /dev/null +++ b/Assets/Texture/Cutscene/TX_cutscene_04a.shtex.shmeta @@ -0,0 +1,3 @@ +Name: TX_cutscene_04a +ID: 51238312 +Type: 3 diff --git a/Assets/Texture/Cutscene/TX_cutscene_04b.dds b/Assets/Texture/Cutscene/TX_cutscene_04b.dds new file mode 100644 index 00000000..d7103725 Binary files /dev/null and b/Assets/Texture/Cutscene/TX_cutscene_04b.dds differ diff --git a/Assets/Texture/Cutscene/TX_cutscene_04b.shtex b/Assets/Texture/Cutscene/TX_cutscene_04b.shtex new file mode 100644 index 00000000..785cef62 Binary files /dev/null and b/Assets/Texture/Cutscene/TX_cutscene_04b.shtex differ diff --git a/Assets/Texture/Cutscene/TX_cutscene_04b.shtex.shmeta b/Assets/Texture/Cutscene/TX_cutscene_04b.shtex.shmeta new file mode 100644 index 00000000..5fd13580 --- /dev/null +++ b/Assets/Texture/Cutscene/TX_cutscene_04b.shtex.shmeta @@ -0,0 +1,3 @@ +Name: TX_cutscene_04b +ID: 61471971 +Type: 3 diff --git a/Assets/Texture/Cutscene/TX_cutscene_04c.dds b/Assets/Texture/Cutscene/TX_cutscene_04c.dds new file mode 100644 index 00000000..547e4068 Binary files /dev/null and b/Assets/Texture/Cutscene/TX_cutscene_04c.dds differ diff --git a/Assets/Texture/Cutscene/TX_cutscene_04c.shtex b/Assets/Texture/Cutscene/TX_cutscene_04c.shtex new file mode 100644 index 00000000..29bd5c3f Binary files /dev/null and b/Assets/Texture/Cutscene/TX_cutscene_04c.shtex differ diff --git a/Assets/Texture/Cutscene/TX_cutscene_04c.shtex.shmeta b/Assets/Texture/Cutscene/TX_cutscene_04c.shtex.shmeta new file mode 100644 index 00000000..3d8601d7 --- /dev/null +++ b/Assets/Texture/Cutscene/TX_cutscene_04c.shtex.shmeta @@ -0,0 +1,3 @@ +Name: TX_cutscene_04c +ID: 58217538 +Type: 3 diff --git a/Assets/Texture/Cutscene/TX_cutscene_05a.dds b/Assets/Texture/Cutscene/TX_cutscene_05a.dds new file mode 100644 index 00000000..ed5a2401 Binary files /dev/null and b/Assets/Texture/Cutscene/TX_cutscene_05a.dds differ diff --git a/Assets/Texture/Cutscene/TX_cutscene_05a.shtex b/Assets/Texture/Cutscene/TX_cutscene_05a.shtex new file mode 100644 index 00000000..f456f871 Binary files /dev/null and b/Assets/Texture/Cutscene/TX_cutscene_05a.shtex differ diff --git a/Assets/Texture/Cutscene/TX_cutscene_05a.shtex.shmeta b/Assets/Texture/Cutscene/TX_cutscene_05a.shtex.shmeta new file mode 100644 index 00000000..0e4aa2b0 --- /dev/null +++ b/Assets/Texture/Cutscene/TX_cutscene_05a.shtex.shmeta @@ -0,0 +1,3 @@ +Name: TX_cutscene_05a +ID: 61980534 +Type: 3 diff --git a/Assets/Texture/Cutscene/TX_cutscene_05b.dds b/Assets/Texture/Cutscene/TX_cutscene_05b.dds new file mode 100644 index 00000000..0cee98cc Binary files /dev/null and b/Assets/Texture/Cutscene/TX_cutscene_05b.dds differ diff --git a/Assets/Texture/Cutscene/TX_cutscene_05b.shtex b/Assets/Texture/Cutscene/TX_cutscene_05b.shtex new file mode 100644 index 00000000..5aa8c2a5 Binary files /dev/null and b/Assets/Texture/Cutscene/TX_cutscene_05b.shtex differ diff --git a/Assets/Texture/Cutscene/TX_cutscene_05b.shtex.shmeta b/Assets/Texture/Cutscene/TX_cutscene_05b.shtex.shmeta new file mode 100644 index 00000000..6bb021a7 --- /dev/null +++ b/Assets/Texture/Cutscene/TX_cutscene_05b.shtex.shmeta @@ -0,0 +1,3 @@ +Name: TX_cutscene_05b +ID: 51561286 +Type: 3 diff --git a/Assets/Texture/UI/Credits/Credits_Placeholder.dds b/Assets/Texture/UI/Credits/Credits_Placeholder.dds new file mode 100644 index 00000000..65b7c0b6 Binary files /dev/null and b/Assets/Texture/UI/Credits/Credits_Placeholder.dds differ diff --git a/Assets/Texture/UI/Credits/Credits_Placeholder.shtex b/Assets/Texture/UI/Credits/Credits_Placeholder.shtex new file mode 100644 index 00000000..39fbc4ee Binary files /dev/null and b/Assets/Texture/UI/Credits/Credits_Placeholder.shtex differ diff --git a/Assets/Texture/UI/Credits/Credits_Placeholder.shtex.shmeta b/Assets/Texture/UI/Credits/Credits_Placeholder.shtex.shmeta new file mode 100644 index 00000000..80b9d641 --- /dev/null +++ b/Assets/Texture/UI/Credits/Credits_Placeholder.shtex.shmeta @@ -0,0 +1,3 @@ +Name: Credits_Placeholder +ID: 59379300 +Type: 3 diff --git a/Assets/Texture/UI/Gameplay/GameplayUI_Multiplier.dds b/Assets/Texture/UI/Gameplay/GameplayUI_Multiplier.dds new file mode 100644 index 00000000..661ad4ef Binary files /dev/null and b/Assets/Texture/UI/Gameplay/GameplayUI_Multiplier.dds differ diff --git a/Assets/Texture/UI/Gameplay/GameplayUI_Multiplier.shtex b/Assets/Texture/UI/Gameplay/GameplayUI_Multiplier.shtex new file mode 100644 index 00000000..1b779fab Binary files /dev/null and b/Assets/Texture/UI/Gameplay/GameplayUI_Multiplier.shtex differ diff --git a/Assets/Texture/UI/Gameplay/GameplayUI_Multiplier.shtex.shmeta b/Assets/Texture/UI/Gameplay/GameplayUI_Multiplier.shtex.shmeta new file mode 100644 index 00000000..996cf342 --- /dev/null +++ b/Assets/Texture/UI/Gameplay/GameplayUI_Multiplier.shtex.shmeta @@ -0,0 +1,3 @@ +Name: GameplayUI_Multiplier +ID: 52018575 +Type: 3 diff --git a/Assets/Texture/UI/Gameplay/GameplayUI_Score.dds b/Assets/Texture/UI/Gameplay/GameplayUI_Score.dds new file mode 100644 index 00000000..d0fe1168 Binary files /dev/null and b/Assets/Texture/UI/Gameplay/GameplayUI_Score.dds differ diff --git a/Assets/Texture/UI/Gameplay/GameplayUI_Score.shtex b/Assets/Texture/UI/Gameplay/GameplayUI_Score.shtex new file mode 100644 index 00000000..83210034 Binary files /dev/null and b/Assets/Texture/UI/Gameplay/GameplayUI_Score.shtex differ diff --git a/Assets/Texture/UI/Gameplay/GameplayUI_Score.shtex.shmeta b/Assets/Texture/UI/Gameplay/GameplayUI_Score.shtex.shmeta new file mode 100644 index 00000000..88ffb714 --- /dev/null +++ b/Assets/Texture/UI/Gameplay/GameplayUI_Score.shtex.shmeta @@ -0,0 +1,3 @@ +Name: GameplayUI_Score +ID: 54238246 +Type: 3 diff --git a/Assets/Texture/UI/Gameplay/GameplayUI_Timer.dds b/Assets/Texture/UI/Gameplay/GameplayUI_Timer.dds new file mode 100644 index 00000000..77c9dd8a Binary files /dev/null and b/Assets/Texture/UI/Gameplay/GameplayUI_Timer.dds differ diff --git a/Assets/Texture/UI/Gameplay/GameplayUI_Timer.shtex b/Assets/Texture/UI/Gameplay/GameplayUI_Timer.shtex new file mode 100644 index 00000000..2daeacb3 Binary files /dev/null and b/Assets/Texture/UI/Gameplay/GameplayUI_Timer.shtex differ diff --git a/Assets/Texture/UI/Gameplay/GameplayUI_Timer.shtex.shmeta b/Assets/Texture/UI/Gameplay/GameplayUI_Timer.shtex.shmeta new file mode 100644 index 00000000..b265db97 --- /dev/null +++ b/Assets/Texture/UI/Gameplay/GameplayUI_Timer.shtex.shmeta @@ -0,0 +1,3 @@ +Name: GameplayUI_Timer +ID: 60494030 +Type: 3 diff --git a/Assets/Texture/UI/How To Play/HowToPlay_Button_Default.dds b/Assets/Texture/UI/How To Play/HowToPlay_Button_Default.dds new file mode 100644 index 00000000..32d7f52a Binary files /dev/null and b/Assets/Texture/UI/How To Play/HowToPlay_Button_Default.dds differ diff --git a/Assets/Texture/UI/How To Play/HowToPlay_Button_Default.shtex b/Assets/Texture/UI/How To Play/HowToPlay_Button_Default.shtex new file mode 100644 index 00000000..0739128b Binary files /dev/null and b/Assets/Texture/UI/How To Play/HowToPlay_Button_Default.shtex differ diff --git a/Assets/Texture/UI/How To Play/HowToPlay_Button_Default.shtex.shmeta b/Assets/Texture/UI/How To Play/HowToPlay_Button_Default.shtex.shmeta new file mode 100644 index 00000000..03c44b88 --- /dev/null +++ b/Assets/Texture/UI/How To Play/HowToPlay_Button_Default.shtex.shmeta @@ -0,0 +1,3 @@ +Name: HowToPlay_Button_Default +ID: 55358401 +Type: 3 diff --git a/Assets/Texture/UI/How To Play/HowToPlay_Button_Hover.dds b/Assets/Texture/UI/How To Play/HowToPlay_Button_Hover.dds new file mode 100644 index 00000000..506960e6 Binary files /dev/null and b/Assets/Texture/UI/How To Play/HowToPlay_Button_Hover.dds differ diff --git a/Assets/Texture/UI/How To Play/HowToPlay_Button_Hover.shtex b/Assets/Texture/UI/How To Play/HowToPlay_Button_Hover.shtex new file mode 100644 index 00000000..39458cef Binary files /dev/null and b/Assets/Texture/UI/How To Play/HowToPlay_Button_Hover.shtex differ diff --git a/Assets/Texture/UI/How To Play/HowToPlay_Button_Hover.shtex.shmeta b/Assets/Texture/UI/How To Play/HowToPlay_Button_Hover.shtex.shmeta new file mode 100644 index 00000000..d460ea30 --- /dev/null +++ b/Assets/Texture/UI/How To Play/HowToPlay_Button_Hover.shtex.shmeta @@ -0,0 +1,3 @@ +Name: HowToPlay_Button_Hover +ID: 59400474 +Type: 3 diff --git a/Assets/Texture/UI/How To Play/HowToPlay_Button_Pressed.dds b/Assets/Texture/UI/How To Play/HowToPlay_Button_Pressed.dds new file mode 100644 index 00000000..5dc6ae51 Binary files /dev/null and b/Assets/Texture/UI/How To Play/HowToPlay_Button_Pressed.dds differ diff --git a/Assets/Texture/UI/How To Play/HowToPlay_Button_Pressed.shtex b/Assets/Texture/UI/How To Play/HowToPlay_Button_Pressed.shtex new file mode 100644 index 00000000..f9aca00a Binary files /dev/null and b/Assets/Texture/UI/How To Play/HowToPlay_Button_Pressed.shtex differ diff --git a/Assets/Texture/UI/How To Play/HowToPlay_Button_Pressed.shtex.shmeta b/Assets/Texture/UI/How To Play/HowToPlay_Button_Pressed.shtex.shmeta new file mode 100644 index 00000000..85a3b84e --- /dev/null +++ b/Assets/Texture/UI/How To Play/HowToPlay_Button_Pressed.shtex.shmeta @@ -0,0 +1,3 @@ +Name: HowToPlay_Button_Pressed +ID: 52333376 +Type: 3 diff --git a/Assets/Texture/UI/How To Play/HowToPlay_Screen_1.dds b/Assets/Texture/UI/How To Play/HowToPlay_Screen_1.dds new file mode 100644 index 00000000..2b6108ee Binary files /dev/null and b/Assets/Texture/UI/How To Play/HowToPlay_Screen_1.dds differ diff --git a/Assets/Texture/UI/How To Play/HowToPlay_Screen_1.shtex b/Assets/Texture/UI/How To Play/HowToPlay_Screen_1.shtex new file mode 100644 index 00000000..80d1b498 Binary files /dev/null and b/Assets/Texture/UI/How To Play/HowToPlay_Screen_1.shtex differ diff --git a/Assets/Texture/UI/How To Play/HowToPlay_Screen_1.shtex.shmeta b/Assets/Texture/UI/How To Play/HowToPlay_Screen_1.shtex.shmeta new file mode 100644 index 00000000..2c8ad4fa --- /dev/null +++ b/Assets/Texture/UI/How To Play/HowToPlay_Screen_1.shtex.shmeta @@ -0,0 +1,3 @@ +Name: HowToPlay_Screen_1 +ID: 52834559 +Type: 3 diff --git a/Assets/Texture/UI/How To Play/HowToPlay_Screen_2.dds b/Assets/Texture/UI/How To Play/HowToPlay_Screen_2.dds new file mode 100644 index 00000000..6b4af404 Binary files /dev/null and b/Assets/Texture/UI/How To Play/HowToPlay_Screen_2.dds differ diff --git a/Assets/Texture/UI/How To Play/HowToPlay_Screen_2.shtex b/Assets/Texture/UI/How To Play/HowToPlay_Screen_2.shtex new file mode 100644 index 00000000..a1354654 Binary files /dev/null and b/Assets/Texture/UI/How To Play/HowToPlay_Screen_2.shtex differ diff --git a/Assets/Texture/UI/How To Play/HowToPlay_Screen_2.shtex.shmeta b/Assets/Texture/UI/How To Play/HowToPlay_Screen_2.shtex.shmeta new file mode 100644 index 00000000..8bacb413 --- /dev/null +++ b/Assets/Texture/UI/How To Play/HowToPlay_Screen_2.shtex.shmeta @@ -0,0 +1,3 @@ +Name: HowToPlay_Screen_2 +ID: 60762613 +Type: 3 diff --git a/Assets/Texture/UI/How To Play/HowToPlay_Screen_3.dds b/Assets/Texture/UI/How To Play/HowToPlay_Screen_3.dds new file mode 100644 index 00000000..d7b333bd Binary files /dev/null and b/Assets/Texture/UI/How To Play/HowToPlay_Screen_3.dds differ diff --git a/Assets/Texture/UI/How To Play/HowToPlay_Screen_3.shtex b/Assets/Texture/UI/How To Play/HowToPlay_Screen_3.shtex new file mode 100644 index 00000000..943f41e5 Binary files /dev/null and b/Assets/Texture/UI/How To Play/HowToPlay_Screen_3.shtex differ diff --git a/Assets/Texture/UI/How To Play/HowToPlay_Screen_3.shtex.shmeta b/Assets/Texture/UI/How To Play/HowToPlay_Screen_3.shtex.shmeta new file mode 100644 index 00000000..320cbba1 --- /dev/null +++ b/Assets/Texture/UI/How To Play/HowToPlay_Screen_3.shtex.shmeta @@ -0,0 +1,3 @@ +Name: HowToPlay_Screen_3 +ID: 53309226 +Type: 3 diff --git a/Assets/Texture/UI/How To Play/HowToPlay_Screen_4.dds b/Assets/Texture/UI/How To Play/HowToPlay_Screen_4.dds new file mode 100644 index 00000000..b2c3f5d7 Binary files /dev/null and b/Assets/Texture/UI/How To Play/HowToPlay_Screen_4.dds differ diff --git a/Assets/Texture/UI/How To Play/HowToPlay_Screen_4.shtex b/Assets/Texture/UI/How To Play/HowToPlay_Screen_4.shtex new file mode 100644 index 00000000..0e334b25 Binary files /dev/null and b/Assets/Texture/UI/How To Play/HowToPlay_Screen_4.shtex differ diff --git a/Assets/Texture/UI/How To Play/HowToPlay_Screen_4.shtex.shmeta b/Assets/Texture/UI/How To Play/HowToPlay_Screen_4.shtex.shmeta new file mode 100644 index 00000000..cde9bacb --- /dev/null +++ b/Assets/Texture/UI/How To Play/HowToPlay_Screen_4.shtex.shmeta @@ -0,0 +1,3 @@ +Name: HowToPlay_Screen_4 +ID: 63002526 +Type: 3 diff --git a/Assets/Texture/UI/MainMenuBG.dds b/Assets/Texture/UI/MainMenuBG.dds new file mode 100644 index 00000000..fa40488f Binary files /dev/null and b/Assets/Texture/UI/MainMenuBG.dds differ diff --git a/Assets/Texture/UI/MainMenuBG.shtex b/Assets/Texture/UI/MainMenuBG.shtex new file mode 100644 index 00000000..f0fc221e Binary files /dev/null and b/Assets/Texture/UI/MainMenuBG.shtex differ diff --git a/Assets/Texture/UI/MainMenuBG.shtex.shmeta b/Assets/Texture/UI/MainMenuBG.shtex.shmeta new file mode 100644 index 00000000..d3a8fa9c --- /dev/null +++ b/Assets/Texture/UI/MainMenuBG.shtex.shmeta @@ -0,0 +1,3 @@ +Name: MainMenuBG +ID: 58181851 +Type: 3 diff --git a/Assets/Texture/UI/TX_WK10_HowToPlay_01.dds b/Assets/Texture/UI/TX_WK10_HowToPlay_01.dds deleted file mode 100644 index cc1d68b6..00000000 Binary files a/Assets/Texture/UI/TX_WK10_HowToPlay_01.dds and /dev/null differ diff --git a/Assets/Texture/UI/TX_WK10_HowToPlay_01.shtex b/Assets/Texture/UI/TX_WK10_HowToPlay_01.shtex deleted file mode 100644 index 061d84c8..00000000 Binary files a/Assets/Texture/UI/TX_WK10_HowToPlay_01.shtex and /dev/null differ diff --git a/Assets/Texture/UI/TX_WK10_HowToPlay_01.shtex.shmeta b/Assets/Texture/UI/TX_WK10_HowToPlay_01.shtex.shmeta deleted file mode 100644 index fcd72302..00000000 --- a/Assets/Texture/UI/TX_WK10_HowToPlay_01.shtex.shmeta +++ /dev/null @@ -1,3 +0,0 @@ -Name: TX_WK10_HowToPlay_01 -ID: 62200943 -Type: 3 diff --git a/Assets/Texture/UI/TX_WK10_HowToPlay_02.dds b/Assets/Texture/UI/TX_WK10_HowToPlay_02.dds deleted file mode 100644 index 38ea5b30..00000000 Binary files a/Assets/Texture/UI/TX_WK10_HowToPlay_02.dds and /dev/null differ diff --git a/Assets/Texture/UI/TX_WK10_HowToPlay_02.shtex b/Assets/Texture/UI/TX_WK10_HowToPlay_02.shtex deleted file mode 100644 index 3fa62e86..00000000 Binary files a/Assets/Texture/UI/TX_WK10_HowToPlay_02.shtex and /dev/null differ diff --git a/Assets/Texture/UI/TX_WK10_HowToPlay_02.shtex.shmeta b/Assets/Texture/UI/TX_WK10_HowToPlay_02.shtex.shmeta deleted file mode 100644 index 56e9b58a..00000000 --- a/Assets/Texture/UI/TX_WK10_HowToPlay_02.shtex.shmeta +++ /dev/null @@ -1,3 +0,0 @@ -Name: TX_WK10_HowToPlay_02 -ID: 53303669 -Type: 3 diff --git a/Assets/Texture/UI/TX_WK10_HowToPlay_03.dds b/Assets/Texture/UI/TX_WK10_HowToPlay_03.dds deleted file mode 100644 index ac8adee9..00000000 Binary files a/Assets/Texture/UI/TX_WK10_HowToPlay_03.dds and /dev/null differ diff --git a/Assets/Texture/UI/TX_WK10_HowToPlay_03.shtex b/Assets/Texture/UI/TX_WK10_HowToPlay_03.shtex deleted file mode 100644 index 826d87b2..00000000 Binary files a/Assets/Texture/UI/TX_WK10_HowToPlay_03.shtex and /dev/null differ diff --git a/Assets/Texture/UI/TX_WK10_HowToPlay_03.shtex.shmeta b/Assets/Texture/UI/TX_WK10_HowToPlay_03.shtex.shmeta deleted file mode 100644 index c190e6d8..00000000 --- a/Assets/Texture/UI/TX_WK10_HowToPlay_03.shtex.shmeta +++ /dev/null @@ -1,3 +0,0 @@ -Name: TX_WK10_HowToPlay_03 -ID: 61780097 -Type: 3 diff --git a/Assets/Texture/UI/TX_WK10_HowToPlay_04.dds b/Assets/Texture/UI/TX_WK10_HowToPlay_04.dds deleted file mode 100644 index 66298f3a..00000000 Binary files a/Assets/Texture/UI/TX_WK10_HowToPlay_04.dds and /dev/null differ diff --git a/Assets/Texture/UI/TX_WK10_HowToPlay_04.shtex b/Assets/Texture/UI/TX_WK10_HowToPlay_04.shtex deleted file mode 100644 index 3d6504b1..00000000 Binary files a/Assets/Texture/UI/TX_WK10_HowToPlay_04.shtex and /dev/null differ diff --git a/Assets/Texture/UI/TX_WK10_HowToPlay_04.shtex.shmeta b/Assets/Texture/UI/TX_WK10_HowToPlay_04.shtex.shmeta deleted file mode 100644 index df21f174..00000000 --- a/Assets/Texture/UI/TX_WK10_HowToPlay_04.shtex.shmeta +++ /dev/null @@ -1,3 +0,0 @@ -Name: TX_WK10_HowToPlay_04 -ID: 59178524 -Type: 3 diff --git a/SHADE_Application/src/Application/SBApplication.cpp b/SHADE_Application/src/Application/SBApplication.cpp index ef30ce42..92764ff2 100644 --- a/SHADE_Application/src/Application/SBApplication.cpp +++ b/SHADE_Application/src/Application/SBApplication.cpp @@ -174,14 +174,11 @@ namespace Sandbox SHSceneManager::InitSceneManager(editorConfig.workingSceneID); #else SHSceneManager::InitSceneManager(appConfig.startingSceneID); - window.SetMouseVisible(false); #endif SHFrameRateController::UpdateFRC(); // Link up SHDebugDraw SHDebugDraw::Init(SHSystemManager::GetSystem()); - - //auto clip = SHResourceManager::LoadOrGet(141097368); } void SBApplication::Update(void) @@ -201,8 +198,6 @@ namespace Sandbox #ifdef SHEDITOR if(editor->editorState == SHEditor::State::PLAY) -#else - window.ClipMouseCursor(); #endif SHSceneManager::SceneUpdate(0.016f); #ifdef SHEDITOR diff --git a/SHADE_Engine/src/AudioSystem/SHAudioSystem.cpp b/SHADE_Engine/src/AudioSystem/SHAudioSystem.cpp index e02eac50..eac465ff 100644 --- a/SHADE_Engine/src/AudioSystem/SHAudioSystem.cpp +++ b/SHADE_Engine/src/AudioSystem/SHAudioSystem.cpp @@ -54,12 +54,41 @@ namespace SHADE denseListener = &SHComponentManager::GetDense(); fmodStudioSystem->getCoreSystem(&fmodSystem); - fmodSystem->setSoftwareFormat(0, FMOD_SPEAKERMODE_5POINT1, 0); - result = fmodStudioSystem->initialize(AUDIO_SYS_MAX_CHANNELS, AUDIO_SYS_MAX_CHANNELS, FMOD_STUDIO_INIT_NORMAL | FMOD_INIT_NORMAL, extraDriverData); - - ErrorCheck(); - fmodSystem->setSoftwareFormat(0, speakerMode, 0); + result = fmodSystem->setSoftwareFormat(0, FMOD_SPEAKERMODE_5POINT1, 0); + ErrorCheck(); + result = fmodSystem->setOutput(FMOD_OUTPUTTYPE_AUDIO3D); + if(result != FMOD_OK) + { + result = fmodSystem->setOutput(FMOD_OUTPUTTYPE_WINSONIC); + if (result == FMOD_OK) + { + result = fmodSystem->setSoftwareFormat(0, FMOD_SPEAKERMODE_7POINT1POINT4, 0); + ErrorCheck(); + } + } + + int numDrivers{}; + result = fmodSystem->getNumDrivers(&numDrivers); + if(numDrivers == 0) + { + fmodSystem->setDSPBufferSize(512, 4); + fmodSystem->setOutput(FMOD_OUTPUTTYPE_AUTODETECT); + } + FMOD_OUTPUTTYPE outputType{}; + fmodSystem->getSoftwareFormat(0, &speakerMode, 0); + fmodSystem->getOutput(&outputType); + + FMOD_STUDIO_INITFLAGS studioInitFlags = FMOD_STUDIO_INIT_NORMAL; + FMOD_INITFLAGS coreInitFlags = FMOD_INIT_NORMAL | FMOD_INIT_3D_RIGHTHANDED; +#ifdef _DEBUG + studioInitFlags |= FMOD_STUDIO_INIT_LIVEUPDATE; + coreInitFlags |= FMOD_INIT_PROFILE_ENABLE; +#endif + + result = fmodStudioSystem->initialize(AUDIO_SYS_MAX_CHANNELS, studioInitFlags, coreInitFlags, extraDriverData); + + ErrorCheck(); result = fmodSystem->createChannelGroup("SFX", &sfxChannelGroup); ErrorCheck(); @@ -104,6 +133,10 @@ namespace SHADE const ReceiverPtr ON_PAUSE_RECEIVER_PTR = std::dynamic_pointer_cast(ON_PAUSE_RECEIVER); SHEventManager::SubscribeTo(SH_EDITOR_ON_PAUSE_EVENT, ON_PAUSE_RECEIVER_PTR); + const std::shared_ptr ON_SCENE_EXIT_RECEIVER{ std::make_shared>(this, &SHAudioSystem::onSceneExit) }; + const ReceiverPtr ON_SCENE_EXIT_RECEIVER_PTR = std::dynamic_pointer_cast(ON_SCENE_EXIT_RECEIVER); + SHEventManager::SubscribeTo(SH_SCENE_EXIT_POST, ON_SCENE_EXIT_RECEIVER_PTR); + #endif } @@ -145,7 +178,9 @@ namespace SHADE FMOD_3D_ATTRIBUTES attribs{ { 0 } }; SHVec3 pos = camComponent->GetPosition(); SHVec3 forward, up, right; + camSystem->GetCameraAxis(*camComponent, forward, right, up); + up *= -1.0f; attribs.position = { pos.x, pos.y, pos.z }; attribs.forward = { forward.x, forward.y, forward.z }; attribs.up = { up.x, up.y, up.z }; @@ -156,7 +191,7 @@ namespace SHADE auto [begin, end] = audioClipLibrary.GetDenseAccess(); for (auto& it = begin; it != end; ++it) { - if(it->instance && (it->transformRef != MAX_EID)) + if(it->instance && it->instance->isValid() && (it->transformRef != MAX_EID)) { if(SHTransformComponent* transformComponent = SHComponentManager::GetComponent_s(it->transformRef)) { @@ -165,11 +200,13 @@ namespace SHADE SHQuaternion worldOrientation = transformComponent->GetWorldOrientation(); SHVec3 orientatedFoward = (worldOrientation * SHQuaternion::FromEuler(SHVec3::Forward) * SHQuaternion::Conjugate(worldOrientation)).ToEuler(); SHVec3 orientatedUp = (worldOrientation * SHQuaternion::FromEuler(SHVec3::Up) * SHQuaternion::Conjugate(worldOrientation)).ToEuler(); - + orientatedFoward = SHVec3::Normalise(orientatedFoward); + orientatedUp = SHVec3::Normalise(orientatedUp); attribs.position = {pos.x, pos.y, pos.z}; attribs.forward = {orientatedFoward.x, orientatedFoward.y, orientatedFoward.z}; attribs.up = {orientatedUp.x, orientatedUp.y, orientatedUp.z}; - it->instance->set3DAttributes(&attribs); + result = it->instance->set3DAttributes(&attribs); + ErrorCheck(); } } } @@ -656,6 +693,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 +780,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) { @@ -783,6 +833,18 @@ namespace SHADE return onStopEvent->handle; } + + SHEventHandle SHAudioSystem::onSceneExit(SHEventPtr onSceneExitEvent) + { + auto [begin, end] = audioClipLibrary.GetDenseAccess(); + for (auto& it = begin; it != end; ++it) + { + it->instance->release(); + } + + return onSceneExitEvent->handle; + } + SHEventHandle SHAudioSystem::onPlay(SHEventPtr onStopEvent) { if(GetPaused()) diff --git a/SHADE_Engine/src/AudioSystem/SHAudioSystem.h b/SHADE_Engine/src/AudioSystem/SHAudioSystem.h index 68942a8e..7e2fac11 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; @@ -122,6 +123,7 @@ namespace SHADE SHEventHandle onPlay(SHEventPtr onStopEvent); SHEventHandle onStop(SHEventPtr onStopEvent); SHEventHandle onPause(SHEventPtr onStopEvent); + SHEventHandle onSceneExit(SHEventPtr onSceneExitEvent); }; } diff --git a/SHADE_Engine/src/Camera/SHCameraArmComponent.cpp b/SHADE_Engine/src/Camera/SHCameraArmComponent.cpp index ed24e6a7..c560a1b0 100644 --- a/SHADE_Engine/src/Camera/SHCameraArmComponent.cpp +++ b/SHADE_Engine/src/Camera/SHCameraArmComponent.cpp @@ -1,6 +1,6 @@ #include "SHpch.h" #include "SHCameraArmComponent.h" - +#include "Math/SHMathHelpers.h" namespace SHADE @@ -16,6 +16,11 @@ namespace SHADE SHVec3 const& SHCameraArmComponent::GetOffset() const noexcept { + SHVec3 result = offset; + + result = SHVec3::RotateX(offset, -(SHMath::DegreesToRadians(GetPitch()))); + result = SHVec3::RotateY(offset, (SHMath::DegreesToRadians(GetYaw()))); + return offset; } diff --git a/SHADE_Engine/src/Camera/SHCameraArmComponent.h b/SHADE_Engine/src/Camera/SHCameraArmComponent.h index 9d8ec853..76f27360 100644 --- a/SHADE_Engine/src/Camera/SHCameraArmComponent.h +++ b/SHADE_Engine/src/Camera/SHCameraArmComponent.h @@ -9,9 +9,7 @@ namespace SHADE { - - class SHBox; - class SHRay; + struct SHRay; class SH_API SHCameraArmComponent final: public SHComponent { diff --git a/SHADE_Engine/src/Camera/SHCameraSystem.cpp b/SHADE_Engine/src/Camera/SHCameraSystem.cpp index 95a461f8..bd35af76 100644 --- a/SHADE_Engine/src/Camera/SHCameraSystem.cpp +++ b/SHADE_Engine/src/Camera/SHCameraSystem.cpp @@ -172,11 +172,6 @@ namespace SHADE void SHCameraSystem::UpdateCameraArmComponent(SHCameraArmComponent& pivot) noexcept { - - - - - SHVec3 offset{ 0.0f,0.0f, 1.0f }; offset = SHVec3::RotateX(offset, -(SHMath::DegreesToRadians(pivot.GetPitch()))); offset = SHVec3::RotateY(offset, (SHMath::DegreesToRadians(pivot.GetYaw()))); @@ -212,12 +207,18 @@ namespace SHADE } + + + + + //Camera Collision stuff + SHVec3 cameraPos = camera->position + pivot.offset; SHVec3 cameraTarget = camera->position; - //SHLOG_INFO("Ray position: {},{},{} direction:{},{},{}",pivot.ray.position.x, pivot.ray.position.y, pivot.ray.position.z,pivot.ray.direction.x, pivot.ray.direction.y, pivot.ray.direction.z) + SHRaycaster::RaycastInfo info; - //info.layers = (SHCollisionTagMatrix::GetTag("7")->GetMask()); + info.layers = (uint16_t)(SHCollisionTagMatrix::GetTag("Camera")->GetMask()); info.distance = pivot.armLength; info.continuous = false; @@ -235,38 +236,10 @@ namespace SHADE newOffset = SHVec3::RotateY(newOffset, (SHMath::DegreesToRadians(pivot.GetYaw()))); newOffset = SHVec3::Normalise(newOffset) * (hitResult.distance * 0.95f); pivot.offset = newOffset; - //cameraPos = camera->position + pivot.offset; - //SHLOG_INFO("CAMERA COLLISION HIT, {} armlength: {}, true armlength: {}", hitResult.distance, hitResult.distance, (cameraPos - camera->position).Length()); - //SHLOG_INFO("Racoon Position {}, {}, {}, Camera Position: {}, {}, {}, Distance {}", cameraTarget.x, cameraTarget.y, cameraTarget.z, cameraPos.x, cameraPos.y, cameraPos.z, SHVec3::Distance(cameraTarget, cameraPos)); - //SHLOG_INFO("Camera Position: {}, {}, {}", cameraPos.x, cameraPos.y, cameraPos.z); - //auto otherTransform = SHComponentManager::GetComponent_s(hitResult.entityHit); - //SHVec3 otherPos = hitResult.position; - - - //SHLOG_INFO("hit distance{} other pos: {},{},{}, distance between: {}", hitResult.distance, otherPos.x, otherPos.y, otherPos.z, SHVec3::Distance(cameraTarget,otherPos)); break; } } - - ////auto result = physicsSystem->Raycast(pivot.ray); - //if (result && result.distance < pivot.GetArmLength()) - //{ - // - // SHVec3 newOffset = SHVec3{ 0.0f,0.0f, result.distance * 0.8f }; - // newOffset = SHVec3::RotateX(newOffset, -(SHMath::DegreesToRadians(pivot.GetPitch()))); - // newOffset = SHVec3::RotateY(newOffset, (SHMath::DegreesToRadians(pivot.GetYaw()))); - // pivot.offset = newOffset; - // //SHLOG_INFO("CAMERA COLLISION HIT, {}", result.distance); - //} - //else - //{ - // //SHLOG_INFO("CAMERA COLLISION CANT HIT CAMERA"); - //} - - - // pivot.rtMatrix = SHMatrix::Inverse(pivot.rtMatrix); - } @@ -299,6 +272,13 @@ namespace SHADE if (arm->isActive == true) { camera.offset = arm->GetOffset(); + + SHVec3 tOffset = arm->GetTargetOffset(); + + + tOffset = SHVec3::RotateY(tOffset, SHMath::DegreesToRadians(arm->GetYaw())); + + if (arm->lookAtCameraOrigin) CameraLookAt(camera, camera.position + arm->GetTargetOffset()); @@ -586,7 +566,7 @@ namespace SHADE } #else - return SHVec2{ GetDirector(index)->GetWidth(),GetDirector(index)->GetHeight() }; + return SHVec2{ GetDirector(index)->GetWidth(),GetDirector(index)->GetWidth() / screenAspectRatio }; #endif } diff --git a/SHADE_Engine/src/Common/SHAllComponents.h b/SHADE_Engine/src/Common/SHAllComponents.h index 36b74853..ee900736 100644 --- a/SHADE_Engine/src/Common/SHAllComponents.h +++ b/SHADE_Engine/src/Common/SHAllComponents.h @@ -13,4 +13,5 @@ #include "Graphics/MiddleEnd/Interface/SHRenderable.h" #include "Physics/Interface/SHColliderComponent.h" #include "Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.h" -#include "AudioSystem/SHAudioListenerComponent.h" \ No newline at end of file +#include "AudioSystem/SHAudioListenerComponent.h" +#include "Graphics/MiddleEnd/TrajectoryRendering/SHTrajectoryRenderableComponent.h" 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/EditorWindow/HierarchyPanel/SHHierarchyPanel.cpp b/SHADE_Engine/src/Editor/EditorWindow/HierarchyPanel/SHHierarchyPanel.cpp index 8cc41d56..8f0a8193 100644 --- a/SHADE_Engine/src/Editor/EditorWindow/HierarchyPanel/SHHierarchyPanel.cpp +++ b/SHADE_Engine/src/Editor/EditorWindow/HierarchyPanel/SHHierarchyPanel.cpp @@ -31,6 +31,8 @@ #include "../AssetBrowser/SHAssetBrowser.h" #include "Assets/SHAssetManager.h" #include "Assets/Asset Types/SHPrefabAsset.h" +#include "Camera/SHCameraSystem.h" +#include "FRC/SHFramerateController.h" namespace SHADE @@ -442,7 +444,24 @@ namespace SHADE //Handle node selection if (ImGui::IsItemHovered()) { - if (ImGui::IsMouseReleased(ImGuiMouseButton_Left)) + if (ImGui::IsMouseDoubleClicked(ImGuiMouseButton_Left)) + { + editor->selectedEntities.clear(); + editor->selectedEntities.push_back(eid); + if(auto camSystem = SHSystemManager::GetSystem()) + { + if(auto editorCam = camSystem->GetEditorCamera()) + { + if(auto entityTransform = SHComponentManager::GetComponent_s(eid)) + { + editorCam->SetPosition(entityTransform->GetWorldPosition() + SHVec3(0.5f)); + camSystem->CameraLookAt(*editorCam, entityTransform->GetWorldPosition()); + camSystem->UpdateEditorCamera(SHFrameRateController::GetRawDeltaTime()); + } + } + } + } + else if (ImGui::IsMouseReleased(ImGuiMouseButton_Left)) { if (!isSelected) { diff --git a/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorComponentView.hpp b/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorComponentView.hpp index 6aacfbf0..b671baf4 100644 --- a/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorComponentView.hpp +++ b/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorComponentView.hpp @@ -15,6 +15,7 @@ #include "Editor/SHEditorWidgets.hpp" #include "Graphics/MiddleEnd/Interface/SHRenderable.h" #include "Graphics/MiddleEnd/Lights/SHLightComponent.h" +#include "Physics/Interface/SHRigidBodyComponent.h" #include "Physics/Interface/SHColliderComponent.h" #include "Reflection/SHReflectionMetadata.h" #include "Resource/SHResourceManager.h" @@ -25,8 +26,11 @@ #include "Animation/SHAnimatorComponent.h" #include "Physics/Collision/Shapes/SHBox.h" #include "Physics/Collision/Shapes/SHSphere.h" +#include "Physics/Collision/Shapes/SHCapsule.h" #include "../SHEditorWindowManager.h" #include "../AssetBrowser/SHAssetBrowser.h" +#include "Graphics/MiddleEnd/TrajectoryRendering/SHTrajectoryRenderableComponent.h" + namespace SHADE { template @@ -261,6 +265,10 @@ namespace SHADE if(rbType == SHRigidBodyComponent::Type::DYNAMIC) //Dynamic only fields { SHEditorWidgets::CheckBox("Use Gravity", [component]{return component->IsGravityEnabled();}, [component](bool const& value){component->SetGravityEnabled(value);}, "Gravity"); + + if (component->IsGravityEnabled()) + SHEditorWidgets::DragFloat("Gravity Scale", [component] {return component->GetGravityScale(); }, [component](float const& value) {component->SetGravityScale(value); }, "Gravity Scale"); + //SHEditorWidgets::DragFloat("Mass", [component] {return component->GetMass(); }, [component](float const& value) {component->SetMass(value); }, "Mass"); } if (rbType == SHRigidBodyComponent::Type::DYNAMIC || rbType == SHRigidBodyComponent::Type::KINEMATIC) //Dynamic or Kinematic only fields @@ -369,12 +377,26 @@ namespace SHADE ( "Radius", [sphereShape] { return sphereShape->GetRelativeRadius(); }, - [sphereShape](float const& value) { sphereShape->SetRelativeRadius(value); }); + [sphereShape](float const& value) { sphereShape->SetRelativeRadius(value); } + ); + } + else if (collisionShape->GetType() == SHCollisionShape::Type::CAPSULE) + { + SHEditorWidgets::BeginPanel(std::format("{} Capsule #{}", ICON_MD_CIRCLE, i).data(), { ImGui::GetContentRegionAvail().x, ImGui::GetContentRegionAvail().y }); + auto* capsuleShape = dynamic_cast(collisionShape); + SHEditorWidgets::DragFloat + ( + "Radius", + [capsuleShape] { return capsuleShape->GetRelativeRadius(); }, + [capsuleShape](float const& value) { capsuleShape->SetRelativeRadius(value); } + ); + SHEditorWidgets::DragFloat + ( + "Height", + [capsuleShape] { return capsuleShape->GetRelativeHeight(); }, + [capsuleShape](float const& value) { capsuleShape->SetRelativeHeight(value); } + ); } - //else if (collisionShape->GetType() == SHCollisionShape::Type::CAPSULE) - //{ - - //} { SHEditorWidgets::CheckBox("Is Trigger", [collisionShape] { return collisionShape->IsTrigger(); }, [collisionShape](bool value) { collisionShape->SetIsTrigger(value); }); @@ -387,14 +409,14 @@ namespace SHADE } SHEditorWidgets::BeginPanel("Offsets",{ ImGui::GetContentRegionAvail().x, 30.0f }); - SHEditorWidgets::DragVec3("Position", { "X", "Y", "Z" }, [&collisionShape] {return collisionShape->GetPositionOffset(); }, [&collisionShape](SHVec3 const& vec) {collisionShape->SetPositionOffset(vec); }); + SHEditorWidgets::DragVec3("Position", { "X", "Y", "Z" }, [collisionShape] {return collisionShape->GetPositionOffset(); }, [collisionShape](SHVec3 const& vec) {collisionShape->SetPositionOffset(vec); }); SHEditorWidgets::DragVec3("Rotation", { "X", "Y", "Z" }, - [&collisionShape] + [collisionShape] { auto offset = collisionShape->GetRotationOffset(); return offset; }, - [&collisionShape](SHVec3 const& vec) + [collisionShape](SHVec3 const& vec) { collisionShape->SetRotationOffset(vec); }, true); @@ -417,25 +439,20 @@ namespace SHADE if (ImGui::BeginMenu("Add Collider")) { - int newColl = -1; + int newCollider = -1; if (ImGui::Selectable("Box Collider")) { - newColl = component->AddBoxCollisionShape(SHVec3::One); + newCollider = component->AddBoxCollisionShape(SHVec3::One); } if (ImGui::Selectable("Sphere Collider")) { - newColl = component->AddSphereCollisionShape(1.0f); + newCollider = component->AddSphereCollisionShape(1.0f); + } + if (ImGui::Selectable("Capsule Collider")) + { + newCollider = component->AddCapsuleCollisionShape(1.0f, 2.0f); } - - //No idea why this doesn't work - //if (newColl > 0) - //{ - // auto newCollisionShape = component->GetCollisionShape(newColl); - // auto prevCollisionShapeInSeq = component->GetCollisionShape(newColl - 1); - // newCollisionShape.SetCollisionTag(SHCollisionTagMatrix::GetTag(prevCollisionShapeInSeq.GetCollisionTag().GetName())); - - //} ImGui::EndMenu(); } @@ -599,8 +616,8 @@ namespace SHADE component->SetText(val); } ); - - SHEditorWidgets::ColorPicker("Color", [&textComp = component]() {return textComp->GetColour(); }, [&textComp = component](SHVec4 const& newColor) {textComp->SetColour(newColor); }); + SHEditorWidgets::DragVec3("Text Size", { "X", "Y", "Z" }, [&textComp = component]() {return textComp->GetTextSize();}, [&textComp = component](SHVec3 const& size) {textComp->SetTextSize(size); }); + SHEditorWidgets::ColorPicker("Color", [&textComp = component]() {return textComp->GetColor(); }, [&textComp = component](SHVec4 const& newColor) {textComp->SetColor(newColor); }); } else { @@ -679,4 +696,95 @@ namespace SHADE ImGui::PopID(); } + template<> + static void DrawComponent(SHTrajectoryRenderableComponent* component) + { + if (!component) + return; + + ImGui::PushID(SHFamilyID::GetID()); + + const auto componentType = rttr::type::get(*component); + + SHEditorWidgets::CheckBox("##IsActive", [component]() {return component->isActive; }, [component](bool const& active) {component->isActive = active; }, "Is Component Active"); + + ImGui::SameLine(); + if (ImGui::CollapsingHeader(componentType.get_name().data(), ImGuiTreeNodeFlags_DefaultOpen)) + { + DrawContextMenu(component); + Handle const& mesh = component->GetMesh(); + const auto MESH_NAME = SHResourceManager::GetAssetName(mesh).value_or(""); + SHEditorWidgets::DragDropReadOnlyField("Mesh", MESH_NAME, [component]() + { + Handle const& mesh = component->GetMesh(); + return SHResourceManager::GetAssetID(mesh).value_or(0); + }, + [component](AssetID const& id) + { + if (SHAssetManager::GetType(id) != AssetType::MESH) + { + SHLOG_WARNING("Attempted to assign non mesh asset to Renderable Mesh property!") + return; + } + component->SetMesh(SHResourceManager::LoadOrGet(id)); + SHResourceManager::FinaliseChanges(); + }, SHDragDrop::DRAG_RESOURCE); + + if (ImGui::IsItemHovered() && ImGui::IsMouseDoubleClicked(ImGuiMouseButton_Left)) + { + if (Handle const& mesh = component->GetMesh()) + { + AssetID assetID = SHResourceManager::GetAssetID(mesh).value_or(0); + SHEditorWindowManager::GetEditorWindow()->SetScrollTo(assetID); + } + } + + SHEditorWidgets::ColorPicker("Start Color", + [comp = component]() + { + SHVec4 newColor(comp->GetStartColor()); + newColor.w = comp->GetStartAlpha(); + return newColor; + }, + [comp = component](SHVec4 vec) + { + SHVec3 temp{vec.x, vec.y, vec.z}; + float a = vec.w; + comp->SetStartColor(temp); + comp->SetStartAlpha(a); + }); + + SHEditorWidgets::ColorPicker("End Color", + [comp = component]() + { + SHVec4 newColor(comp->GetEndColor()); + newColor.w = comp->GetEndAlpha(); + return newColor; + }, + [comp = component](SHVec4 vec) + { + SHVec3 temp{ vec.x, vec.y, vec.z }; + float a = vec.w; + comp->SetEndColor(temp); + comp->SetEndAlpha(a); + }); + + SHEditorWidgets::DragFloat("Color Evolve Rate", + [comp = component]() + { + return comp->GetColorEvolveRate(); + }, + [comp = component](float rate) + { + return comp->SetColorEvolveRate(rate); + }); + + } + else + { + DrawContextMenu(component); + } + ImGui::PopID(); + } + } diff --git a/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorInspector.cpp b/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorInspector.cpp index c95221ec..faede2bd 100644 --- a/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorInspector.cpp +++ b/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorInspector.cpp @@ -180,6 +180,10 @@ namespace SHADE { DrawComponent(listenerComponent); } + if (auto trajectoryComponent = SHComponentManager::GetComponent_s(eid)) + { + DrawComponent(trajectoryComponent); + } ImGui::Separator(); // Render Scripts SHScriptEngine* scriptEngine = static_cast(SHSystemManager::GetSystem()); @@ -195,6 +199,7 @@ namespace SHADE DrawAddComponentButton(eid); DrawAddComponentButton(eid); DrawAddComponentButton(eid); + DrawAddComponentButton(eid); // Components that require Transforms diff --git a/SHADE_Engine/src/Editor/EditorWindow/MenuBar/SHEditorMenuBar.cpp b/SHADE_Engine/src/Editor/EditorWindow/MenuBar/SHEditorMenuBar.cpp index d0c71265..21cc85f4 100644 --- a/SHADE_Engine/src/Editor/EditorWindow/MenuBar/SHEditorMenuBar.cpp +++ b/SHADE_Engine/src/Editor/EditorWindow/MenuBar/SHEditorMenuBar.cpp @@ -25,6 +25,7 @@ #include "Serialization/SHSerialization.h" #include "Serialization/Configurations/SHConfigurationManager.h" #include "Editor/EditorWindow/SHEditorWindowManager.h" +#include "Physics/System/SHPhysicsSystem.h" #include "Physics/System/SHPhysicsDebugDrawSystem.h" #include "Camera/SHCameraSystem.h" #include "Tools/Utilities/SHClipboardUtilities.h" @@ -157,16 +158,16 @@ namespace SHADE if (ImGui::BeginViewportSideBar("MainStatusBar", ImGui::GetMainViewport(), ImGuiDir_Down, menuBarHeight, editorMenuBarFlags)) { auto camSystem = SHSystemManager::GetSystem(); - std::string editorCamPosText{}; + std::string editorCamPosText{}, editorRotText{}; auto editorCam = camSystem->GetEditorCamera(); if(editorCam) { auto editorCamPos = editorCam->GetPosition(); editorCamPosText = std::format("Editor Cam [X: {:.3f}, Y: {:.3f}, Z: {:.3f}]", editorCamPos.x, editorCamPos.y, editorCamPos.z); - + editorRotText = std::format("[Pitch: {:.3f}, Yaw: {:.3f}, Roll: {:.3f}]", editorCam->GetPitch(), editorCam->GetYaw(), editorCam->GetRoll()); //ImGui::Text(editorCamPosText.data()); } - ImGui::Text("Entity count: %zu %s", SHEntityManager::GetEntityCount(), editorCamPosText.data()); + ImGui::Text("Entity count: %zu | %s | %s", SHEntityManager::GetEntityCount(), editorCamPosText.data(), editorRotText.data()); if(ImGui::BeginPopupContextItem("EditorCamPosContext")) { if(editorCam) @@ -186,6 +187,20 @@ namespace SHADE auto editorCamPos = editorCam->GetPosition(); SHClipboardUtilities::WriteToClipboard(std::format("{:.3f}", editorCamPos.z)); } + if (ImGui::Selectable("Copy Editor Cam Pitch")) + { + SHClipboardUtilities::WriteToClipboard(std::format("{:.3f}", editorCam->GetPitch())); + } + if (ImGui::Selectable("Copy Editor Cam Yaw")) + { + auto editorCamPos = editorCam->GetPosition(); + SHClipboardUtilities::WriteToClipboard(std::format("{:.3f}",editorCam->GetYaw())); + } + if (ImGui::Selectable("Copy Editor Cam Roll")) + { + auto editorCamPos = editorCam->GetPosition(); + SHClipboardUtilities::WriteToClipboard(std::format("{:.3f}",editorCam->GetRoll())); + } } ImGui::EndPopup(); } @@ -345,21 +360,63 @@ namespace SHADE { if (ImGui::BeginMenu("Physics Settings")) { + if (auto* physicsSystem = SHSystemManager::GetSystem()) + { + SHEditorWidgets::DragVec3 + ( + "Gravity", { "X", "Y", "Z" }, + [physicsSystem] {return physicsSystem->GetGravity(); }, + [physicsSystem](SHVec3 const& value) { physicsSystem->SetGravity(value); } + , false, "Global Gravity", 0.1f, "%.3f", 0.0f, 0.0f + ); + + SHEditorWidgets::SliderScalar + ( + "Velocity Iterations", ImGuiDataType_U16, (uint16_t)1, (uint16_t)32, + [physicsSystem] { return physicsSystem->GetNumVelocityIterations(); }, + [physicsSystem](uint16_t value) { physicsSystem->SetNumVelocityIterations(value); }, + "Number of times velocity is solved per collision. Higher values increase precision at the cost of performance.", + "%zu" + ); + + SHEditorWidgets::SliderScalar + ( + "Position Iterations", ImGuiDataType_U16, (uint16_t)1, (uint16_t)32, + [physicsSystem] { return physicsSystem->GetNumPositionIterations(); }, + [physicsSystem](uint16_t value) { physicsSystem->SetNumPositionIterations(value); }, + "Number of times position is solved per collision. Higher values increase precision at the cost of performance.", + "%zu" + ); + + SHEditorWidgets::CheckBox + ( + "Sleeping Enabled", + [physicsSystem] { return physicsSystem->IsSleepingEnabled(); }, + [physicsSystem](bool value) { physicsSystem->EnableSleeping(value); }, + "If bodies are allowed to sleep. Sleeping increases performance of the simulation and should be left enabled." + ); + } + if (auto* physicsDebugDraw = SHSystemManager::GetSystem()) { - bool drawColliders = physicsDebugDraw->GetFlagState(SHPhysicsDebugDrawSystem::DebugDrawFlags::COLLIDERS); - if (ImGui::Checkbox("Draw Colliders", &drawColliders)) - physicsDebugDraw->SetFlagState(SHPhysicsDebugDrawSystem::DebugDrawFlags::COLLIDERS, drawColliders); + if(ImGui::CollapsingHeader("Debug Draw", ImGuiTreeNodeFlags_DefaultOpen)) + { + bool drawColliders = physicsDebugDraw->GetFlagState(SHPhysicsDebugDrawSystem::DebugDrawFlags::COLLIDERS); + if (ImGui::Checkbox("Draw Colliders", &drawColliders)) + physicsDebugDraw->SetFlagState(SHPhysicsDebugDrawSystem::DebugDrawFlags::COLLIDERS, drawColliders); - bool drawContactPoints = physicsDebugDraw->GetFlagState(SHPhysicsDebugDrawSystem::DebugDrawFlags::CONTACTS); - if (ImGui::Checkbox("Draw Contact Points", &drawContactPoints)) - physicsDebugDraw->SetFlagState(SHPhysicsDebugDrawSystem::DebugDrawFlags::CONTACTS, drawContactPoints); + bool drawContactPoints = physicsDebugDraw->GetFlagState(SHPhysicsDebugDrawSystem::DebugDrawFlags::CONTACTS); + if (ImGui::Checkbox("Draw Contact Points", &drawContactPoints)) + physicsDebugDraw->SetFlagState(SHPhysicsDebugDrawSystem::DebugDrawFlags::CONTACTS, drawContactPoints); - bool drawRays = physicsDebugDraw->GetFlagState(SHPhysicsDebugDrawSystem::DebugDrawFlags::RAYCASTS); - if (ImGui::Checkbox("Draw Rays", &drawRays)) - physicsDebugDraw->SetFlagState(SHPhysicsDebugDrawSystem::DebugDrawFlags::RAYCASTS, drawRays); + bool drawRays = physicsDebugDraw->GetFlagState(SHPhysicsDebugDrawSystem::DebugDrawFlags::RAYCASTS); + if (ImGui::Checkbox("Draw Rays", &drawRays)) + physicsDebugDraw->SetFlagState(SHPhysicsDebugDrawSystem::DebugDrawFlags::RAYCASTS, drawRays); + } } + + ImGui::EndMenu(); } } diff --git a/SHADE_Engine/src/Editor/SHEditor.cpp b/SHADE_Engine/src/Editor/SHEditor.cpp index 346bfbed..4c7db57c 100644 --- a/SHADE_Engine/src/Editor/SHEditor.cpp +++ b/SHADE_Engine/src/Editor/SHEditor.cpp @@ -55,6 +55,7 @@ #include "Scene/SHSceneManager.h" #include "Serialization/SHSerialization.h" #include "Tools/SHDebugDraw.h" +#include "Input/SHInputManager.h" RTTR_REGISTRATION { @@ -592,8 +593,10 @@ namespace SHADE { //Load the scene sceneToLoad = 0; +#ifdef SHEDITOR editorConfig->workingSceneID = assetID; SHConfigurationManager::SaveEditorConfig(); +#endif SHSceneManager::RestartScene(assetID); return true; } @@ -616,6 +619,7 @@ namespace SHADE } else if (editorState == State::PAUSE) { + SHWindow::SetMouseVisible(prevCursorVisibleState); editorState = State::PLAY; } } @@ -629,6 +633,9 @@ namespace SHADE .previousState = editorState }; editorState = State::PAUSE; + SHInputManager::SetMouseCentering(false); + prevCursorVisibleState = SHWindow::GetMouseVisible(); + SHWindow::SetMouseVisible(true); SHEventManager::BroadcastEvent(STATE_CHANGE_EVENT, SH_EDITOR_ON_PAUSE_EVENT); } @@ -640,6 +647,9 @@ namespace SHADE { .previousState = editorState }; + SHWindow::SetMouseVisible(true); + prevCursorVisibleState = true; + SHInputManager::SetMouseCentering(false); editorState = SHEditor::State::STOP; SHCommandManager::SwapStacks(); SHEventManager::BroadcastEvent(STATE_CHANGE_EVENT, SH_EDITOR_ON_STOP_EVENT); diff --git a/SHADE_Engine/src/Editor/SHEditor.h b/SHADE_Engine/src/Editor/SHEditor.h index 1cbc4f9d..a85a9c33 100644 --- a/SHADE_Engine/src/Editor/SHEditor.h +++ b/SHADE_Engine/src/Editor/SHEditor.h @@ -154,7 +154,7 @@ namespace SHADE SHEventHandle onEditorStateChanged(SHEventPtr eventPtr); bool isUnsavedChangesPromptOpen = false; - + bool prevCursorVisibleState = true; static constexpr std::string_view sceneNamePromptName = "Save scene as..."; static constexpr std::string_view unsavedChangesPromptName = "Unsaved Changes"; diff --git a/SHADE_Engine/src/Editor/SHEditorUI.cpp b/SHADE_Engine/src/Editor/SHEditorUI.cpp index b9783020..45cf0f6c 100644 --- a/SHADE_Engine/src/Editor/SHEditorUI.cpp +++ b/SHADE_Engine/src/Editor/SHEditorUI.cpp @@ -308,7 +308,7 @@ namespace SHADE const bool CHANGED = ImGui::InputText("##", &buffer[0], TEXT_FIELD_MAX_LENGTH); if (CHANGED) { - value = std::string(buffer.data(), buffer.data() + TEXT_FIELD_MAX_LENGTH); + value = std::string(buffer.data(), buffer.data() + std::strlen(buffer.data())); } return CHANGED; } diff --git a/SHADE_Engine/src/FRC/SHFramerateController.cpp b/SHADE_Engine/src/FRC/SHFramerateController.cpp index e504698f..40ae0182 100644 --- a/SHADE_Engine/src/FRC/SHFramerateController.cpp +++ b/SHADE_Engine/src/FRC/SHFramerateController.cpp @@ -37,6 +37,8 @@ namespace SHADE { prevFrameTime = std::chrono::high_resolution_clock::now(); } + + } //TODO Legacy code. Delete soon diff --git a/SHADE_Engine/src/Graphics/Images/SHVkImage.cpp b/SHADE_Engine/src/Graphics/Images/SHVkImage.cpp index 53703924..28870797 100644 --- a/SHADE_Engine/src/Graphics/Images/SHVkImage.cpp +++ b/SHADE_Engine/src/Graphics/Images/SHVkImage.cpp @@ -262,7 +262,7 @@ namespace SHADE copyRegions[i].imageSubresource.baseArrayLayer = 0; // TODO: Array textures not supported yet copyRegions[i].imageSubresource.layerCount = layerCount; copyRegions[i].imageOffset = vk::Offset3D{ 0,0,0 }; - copyRegions[i].imageExtent = vk::Extent3D{ width >> i, height >> i, 1 }; + copyRegions[i].imageExtent = vk::Extent3D{ std::max (1u, width >> i), std::max (1u, height >> i), 1 }; } cmdBufferHdl->CopyBufferToImage(stagingBuffer, vkImage, copyRegions); diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsPredefinedData.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsPredefinedData.cpp index 85559bc7..a15687cb 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsPredefinedData.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsPredefinedData.cpp @@ -59,6 +59,13 @@ namespace SHADE {SHPredefinedDescriptorTypes::STATIC_DATA, 0}, {SHPredefinedDescriptorTypes::CAMERA, 1}, }); + + perSystemData[SHUtilities::ConvertEnum(SystemType::PARTICLE_RENEDERING)].descMappings.AddMappings + ({ + {SHPredefinedDescriptorTypes::STATIC_DATA, 0}, + {SHPredefinedDescriptorTypes::CAMERA, 1}, + {SHPredefinedDescriptorTypes::PARTICLES, 2}, + }); } void SHGraphicsPredefinedData::InitDummyPipelineLayouts(Handle logicalDevice) noexcept @@ -194,6 +201,73 @@ namespace SHADE Handle materialBoneDataPerInstanceLayout = logicalDevice->CreateDescriptorSetLayout({ materialDataBinding, boneDataBinding }); SET_VK_OBJ_NAME(logicalDevice, vk::ObjectType::eDescriptorSetLayout, materialBoneDataPerInstanceLayout->GetVkHandle(), "[Descriptor Set Layout] Material and Bone Globals"); + // particle emitter binding + SHVkDescriptorSetLayout::Binding emitterDataBinding + { + .Type = vk::DescriptorType::eStorageBufferDynamic, + .Stage = vk::ShaderStageFlagBits::eCompute, + .BindPoint = SHGraphicsConstants::DescriptorSetBindings::PARTICLE_EMITTER_DATA, + .DescriptorCount = 1, + }; + + // particle input binding + SHVkDescriptorSetLayout::Binding particleInputDataBinding + { + .Type = vk::DescriptorType::eStorageBufferDynamic, + .Stage = vk::ShaderStageFlagBits::eCompute, + .BindPoint = SHGraphicsConstants::DescriptorSetBindings::PARTICLE_INPUT_DATA, + .DescriptorCount = 1, + }; + + // particle output binding + SHVkDescriptorSetLayout::Binding particleOutputDataBinding + { + .Type = vk::DescriptorType::eStorageBufferDynamic, + .Stage = vk::ShaderStageFlagBits::eCompute | vk::ShaderStageFlagBits::eVertex, + .BindPoint = SHGraphicsConstants::DescriptorSetBindings::PARTICLE_OUTPUT_DATA, + .DescriptorCount = 1, + }; + + // particle freelist binding + SHVkDescriptorSetLayout::Binding particleFreelistBinding + { + .Type = vk::DescriptorType::eStorageBuffer, // non dynamic because we only need 1 copy for all frames + .Stage = vk::ShaderStageFlagBits::eCompute, + .BindPoint = SHGraphicsConstants::DescriptorSetBindings::PARTICLE_FREELIST_DATA, + .DescriptorCount = 1, + }; + + // particle indices binding + SHVkDescriptorSetLayout::Binding particleIndicesBinding + { + .Type = vk::DescriptorType::eStorageBufferDynamic, // dynamic because we have multiple copies. + .Stage = vk::ShaderStageFlagBits::eCompute | vk::ShaderStageFlagBits::eVertex, + .BindPoint = SHGraphicsConstants::DescriptorSetBindings::PARTICLE_INDICES_DATA, + .DescriptorCount = 1, + }; + + // particle draw call binding + SHVkDescriptorSetLayout::Binding particleDrawDataBinding + { + .Type = vk::DescriptorType::eUniformBufferDynamic, // UBO (Because lesser data), dynamic (1 set for each frame) + .Stage = vk::ShaderStageFlagBits::eCompute, + .BindPoint = SHGraphicsConstants::DescriptorSetBindings::PARTICLE_DRAW_DATA, + .DescriptorCount = 1, + }; + + Handle particleDescSetLayout = logicalDevice->CreateDescriptorSetLayout( + { + emitterDataBinding, + particleInputDataBinding, + particleOutputDataBinding, + particleFreelistBinding, + particleIndicesBinding, + particleDrawDataBinding + }); + SET_VK_OBJ_NAME(logicalDevice, vk::ObjectType::eDescriptorSetLayout, particleDescSetLayout->GetVkHandle(), "[Descriptor Set Layout] Particle System Data"); + + + predefinedLayouts.push_back(staticGlobalLayout); predefinedLayouts.push_back(lightDataDescSetLayout); predefinedLayouts.push_back(cameraDataGlobalLayout); @@ -201,6 +275,7 @@ namespace SHADE predefinedLayouts.push_back(fontDataDescSetLayout); predefinedLayouts.push_back(shadowMapDescLayout); predefinedLayouts.push_back(materialBoneDataPerInstanceLayout); + predefinedLayouts.push_back(particleDescSetLayout); perSystemData[SHUtilities::ConvertEnum(SystemType::BATCHING)].descSetLayouts = GetPredefinedDescSetLayouts ( @@ -235,6 +310,13 @@ namespace SHADE SHGraphicsPredefinedData::PredefinedDescSetLayoutTypes::STATIC_DATA | SHGraphicsPredefinedData::PredefinedDescSetLayoutTypes::CAMERA ); + + perSystemData[SHUtilities::ConvertEnum(SystemType::PARTICLE_RENEDERING)].descSetLayouts = GetPredefinedDescSetLayouts + ( + SHGraphicsPredefinedData::PredefinedDescSetLayoutTypes::STATIC_DATA | + SHGraphicsPredefinedData::PredefinedDescSetLayoutTypes::CAMERA | + SHGraphicsPredefinedData::PredefinedDescSetLayoutTypes::PARTICLES + ); } void SHGraphicsPredefinedData::InitPredefinedVertexInputState(void) noexcept diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsPredefinedData.h b/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsPredefinedData.h index 77307f57..4fbf06c1 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsPredefinedData.h +++ b/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsPredefinedData.h @@ -29,7 +29,8 @@ namespace SHADE MATERIALS = 0b00001000, FONT = 0b00010000, SHADOW = 0b00100000, - MATERIAL_AND_BONES = 0b01000000 + MATERIAL_AND_BONES = 0b01000000, + PARTICLES = 0b10000000 }; enum class SystemType @@ -39,6 +40,7 @@ namespace SHADE TEXT_RENDERING, RENDER_GRAPH_NODE_COMPUTE, TRAJECTORY_RENDERING, + PARTICLE_RENEDERING, NUM_TYPES }; static constexpr int SYSTEM_TYPE_COUNT = static_cast(SystemType::NUM_TYPES); diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHPredefinedDescriptorTypes.h b/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHPredefinedDescriptorTypes.h index 723a3c5a..0b6f0c2f 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHPredefinedDescriptorTypes.h +++ b/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHPredefinedDescriptorTypes.h @@ -16,5 +16,6 @@ namespace SHADE FONT, RENDER_GRAPH_NODE_COMPUTE_RESOURCE, RENDER_GRAPH_RESOURCE, + PARTICLES, }; } diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHDebugDrawSystem.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHDebugDrawSystem.cpp index 83ff2d5c..d9a740ac 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHDebugDrawSystem.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHDebugDrawSystem.cpp @@ -375,15 +375,15 @@ namespace SHADE const SHVec3 LOCAL_FORWARD = SHVec3::Rotate(SHVec3::Forward, rotation); // Rotate the circle - SHQuaternion circleOrientation = SHQuaternion::FromEuler(SHVec3(SHMath::DegreesToRadians(90.0), 0.0f, 0.0f)) * rotation; + SHQuaternion circleOrientation = SHQuaternion::FromEuler(SHVec3(SHMath::DegreesToRadians(90.0f), 0.0f, 0.0f)) * rotation; // Compute top and bottom of the cylinder - const SHVec3 HALF_UP = LOCAL_UP * (height * 0.5f - radius); + const SHVec3 HALF_UP = LOCAL_UP * (height * 0.5f); const SHVec3 TOP_POS = position + HALF_UP; const SHVec3 BOT_POS = position - HALF_UP; // Render circles - const SHVec3 CIRCLE_SCALE = SHVec3(radius * 2.0f, radius * 2.0, radius * 2.0); + const SHVec3 CIRCLE_SCALE = SHVec3(radius * 2.0f, radius * 2.0f, radius * 2.0f); drawCircle(meshBatch, SHMatrix::Transform(TOP_POS, circleOrientation, CIRCLE_SCALE), color); drawCircle(meshBatch, SHMatrix::Transform(BOT_POS, circleOrientation, CIRCLE_SCALE), color); @@ -394,7 +394,7 @@ namespace SHADE drawLine(lineBatch, TOP_POS - LOCAL_FORWARD * radius, BOT_POS - LOCAL_FORWARD * radius, color); // Render caps - const SHVec3 RADIUS_SCALE = SHVec3(radius * 2.0, radius * 2.0f, radius * 2.0); + const SHVec3 RADIUS_SCALE = SHVec3(radius * 2.0f, radius * 2.0f, radius * 2.0f); const SHMatrix TOP_CAP_MAT = SHMatrix::Transform(TOP_POS, rotation, RADIUS_SCALE); drawMesh ( @@ -404,7 +404,7 @@ namespace SHADE const SHMatrix BOT_CAP_MAT = SHMatrix::Transform ( BOT_POS, - SHQuaternion::FromEuler(SHVec3(SHMath::DegreesToRadians(180.0), 0.0f, 0.0f)) * rotation, + SHQuaternion::FromEuler(SHVec3(SHMath::DegreesToRadians(180.0f), 0.0f, 0.0f)) * rotation, RADIUS_SCALE ); drawMesh diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsConstants.h b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsConstants.h index 71d77e2d..d2fcb77e 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsConstants.h +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsConstants.h @@ -130,7 +130,7 @@ namespace SHADE static constexpr std::string_view GBUFFER_WRITE_VFX_SUBPASS = "G-Buffer Write With VFX"; static constexpr std::string_view UI_SUBPASS = "UI"; static constexpr std::string_view UI_TRANSLUCENT_SUBPASS = "UI Translucent"; - static constexpr std::string_view VFX_SUBPASS = "VFX"; + static constexpr std::string_view VFX_SUBPASS = "VFX Subpass"; static constexpr std::string_view OBJ_VFX_SUBPASS = "Object VFX Subpass No Depth"; static constexpr std::array USABLE_SUBPASSES = @@ -233,6 +233,61 @@ namespace SHADE */ /***************************************************************************/ static constexpr uint32_t BONE_MATRIX_DATA = 1; + + /***************************************************************************/ + /*! + \brief + Descriptor set binding for particle emitter data. + + */ + /***************************************************************************/ + static constexpr uint32_t PARTICLE_EMITTER_DATA = 0; + + /***************************************************************************/ + /*! + \brief + Descriptor set binding for input particle data. + + */ + /***************************************************************************/ + static constexpr uint32_t PARTICLE_INPUT_DATA = 1; + + /***************************************************************************/ + /*! + \brief + Descriptor set binding for output particle data. + + */ + /***************************************************************************/ + static constexpr uint32_t PARTICLE_OUTPUT_DATA = 2; + + /***************************************************************************/ + /*! + \brief + Descriptor set binding for particle freelist data. + + */ + /***************************************************************************/ + static constexpr uint32_t PARTICLE_FREELIST_DATA = 3; + + /***************************************************************************/ + /*! + \brief + Descriptor set binding for particle indices data. + + */ + /***************************************************************************/ + static constexpr uint32_t PARTICLE_INDICES_DATA = 4; + + /***************************************************************************/ + /*! + \brief + Descriptor set binding for bone matrix data. + + */ + /***************************************************************************/ + static constexpr uint32_t PARTICLE_DRAW_DATA = 5; + }; struct VertexBufferBindings @@ -307,6 +362,7 @@ namespace SHADE */ /***************************************************************************/ static constexpr uint32_t TRAJECTORY_COLOR = 2; + static constexpr uint32_t TRAJECTORY_TRANSFORM = 3; static constexpr uint32_t CALCULATED_GLYPH_POSITION = 0; static constexpr uint32_t GLYPH_INDEX = 1; diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp index 4681c4ae..a3573c15 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp @@ -337,7 +337,7 @@ namespace SHADE /* VFX PASS */ /*-----------------------------------------------------------------------*/ auto vfxPass = renderGraph->AddNode(SHGraphicsConstants::RenderGraphEntityNames::VFX_PASS.data(), { "Scene", "Depth Buffer" }, { SHGraphicsConstants::RenderGraphEntityNames::GBUFFER_PASS.data(), SHGraphicsConstants::RenderGraphEntityNames::DEFERRED_COMPOSITE_PASS.data() }); - auto vfxSubpass = vfxPass->AddSubpass("Vfx Subpass", worldViewport, worldRenderer); + auto vfxSubpass = vfxPass->AddSubpass(SHGraphicsConstants::RenderGraphEntityNames::VFX_SUBPASS.data(), worldViewport, worldRenderer); vfxSubpass->AddColorOutput("Scene"); vfxSubpass->AddDepthOutput("Depth Buffer"); vfxSubpass->AddExteriorDrawCalls([=](Handle cmdBuffer, Handle renderer, uint32_t frameIndex) @@ -485,8 +485,8 @@ namespace SHADE trajectoryRenderingSubSystem = resourceManager.Create(); - auto vfxNode = renderGraph->GetNode(SHGraphicsConstants::RenderGraphEntityNames::SCREEN_SPACE_PASS.data()); - trajectoryRenderingSubSystem->Init(device, vfxNode->GetRenderpass(), vfxNode->GetSubpass(SHGraphicsConstants::RenderGraphEntityNames::UI_SUBPASS), trajectoryVS, trajectoryFS); + auto vfxNode = renderGraph->GetNode(SHGraphicsConstants::RenderGraphEntityNames::VFX_PASS.data()); + trajectoryRenderingSubSystem->Init(device, vfxNode->GetRenderpass(), vfxNode->GetSubpass(SHGraphicsConstants::RenderGraphEntityNames::VFX_SUBPASS), trajectoryVS, trajectoryFS); SHGlobalDescriptorSets::SetLightingSubSystem(lightingSubSystem); @@ -555,6 +555,11 @@ namespace SHADE // Create buffer for generic data and attach to descriptor set graphicsGenericData.Init(device, genericAndTextureDescSet); + auto windowDims = window->GetWindowSize(); + + graphicsGenericData.SetViewportWidth(windowDims.first); + graphicsGenericData.SetViewportHeight(windowDims.second); + } /*---------------------------------------------------------------------------------*/ @@ -669,7 +674,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/MiddleEnd/Particles/SHParticleEmitterComponent.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Particles/SHParticleEmitterComponent.cpp new file mode 100644 index 00000000..12690ece --- /dev/null +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Particles/SHParticleEmitterComponent.cpp @@ -0,0 +1,23 @@ +#include "SHpch.h" +#include "SHParticleEmitterComponent.h" + +namespace SHADE +{ + + void SHParticleEmitterComponent::OnCreate(void) + { + timeBeforeEmission = emissionInterval; + + } + + void SHParticleEmitterComponent::OnDestroy(void) + { + + } + + void SHParticleEmitterComponent::Emit(void) noexcept + { + toEmit = true; + } + +} \ No newline at end of file diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Particles/SHParticleEmitterComponent.h b/SHADE_Engine/src/Graphics/MiddleEnd/Particles/SHParticleEmitterComponent.h new file mode 100644 index 00000000..30f7f107 --- /dev/null +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Particles/SHParticleEmitterComponent.h @@ -0,0 +1,111 @@ +#pragma once + +#include "Resource/SHHandle.h" +#include "Math/Vector/SHVec4.h" +#include "ECS_Base/Components/SHComponent.h" +#include "Graphics/MiddleEnd/Interface/SHGraphicsConstants.h" + +namespace SHADE +{ + class SHVkBuffer; + class SHVkDescriptorSetGroup; + class SHVkDescriptorSetLayout; + + class SHParticleEmitterComponent : public SHComponent + { + private: + struct GPUEmitterStruct + { + //! Minimum emitting angular range + SHVec4 angularMin; + + //! Maximum emitting angular range + SHVec4 angularMax; + + //! Spawn lifetime and size range (min and max) + SHVec4 lifeAndSizeRange; + }; + + struct GPUParticleStruct + { + //! Position of the particle + SHVec4 position; + + //! Rotation of the particle + SHVec4 rotation; + + //! Velocity of the particle + SHVec4 velocity; + + //! Acceleration of the particle + SHVec4 acceleration; + + //! x scale, x scale decay, y scale and y scale decay + SHVec4 scaleAndDecay; + + //! Life of the particle + float life; + + //! Texture into the desc array that the particle is using + uint32_t textureIndex; + }; + + //! Max number of particles of this emitter + uint32_t maxParticles; + + //! num bytes of all particles in 1 chunk (1 frame) + uint32_t chunkSize; + + //! emission count per emit + uint32_t emissionCount; + + //! emission interval of the emitter + float emissionInterval; + + //! Counter that decreases to 0 from emissionInterval. When 0, emit particles. + float timeBeforeEmission; + + //! Data for the emitter + Handle emitterData; + + //! GPU Particle data + Handle particleData; + + //! Freelist data + Handle freelistData; + + //! Indices data + Handle indicesData; + + //! draw call data + Handle drawCallData; + + //! We need more descriptor sets because the operations on a frame's particle data needs to rely on the previous frame's. Each set + //! will contain 2 bindings that point to 2 buffers (input and output). + Handle particleDescriptorSet; + + //! Emitter's data on the CPU side. To be copied to GPU. + GPUEmitterStruct cpuEmitterData; + + //! If passive, emitter emits particles based on timer above. + bool isPassive; + + //! Have the particle system initialize variables in this component when this is false + bool initialized; + + //! If true, particle system will emit particles in Run function. Sets to false every frame. + bool toEmit; + + //! For all the dynamic SSBOs in the descriptor set + std::array, SHGraphicsConstants::NUM_FRAME_BUFFERS> dynamicOffsets{}; + + public: + void OnCreate(void) override final; + void OnDestroy(void) override final; + + void Emit (void) noexcept; + + friend class SHParticleSubSystem; + + }; +} diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Particles/SHParticleSubSustem.h b/SHADE_Engine/src/Graphics/MiddleEnd/Particles/SHParticleSubSustem.h deleted file mode 100644 index da806480..00000000 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Particles/SHParticleSubSustem.h +++ /dev/null @@ -1,41 +0,0 @@ -#pragma once - -#include "Resource/SHHandle.h" -#include "Graphics/Pipeline/SHPipelineState.h" -#include "Math/SHMatrix.h" - -namespace SHADE -{ - class SHVkLogicalDevice; - class SHVkDescriptorPool; - class SHVkDescriptorSetGroup; - class SHVkDescriptorSetLayout; - class SHVkBuffer; - class SHLightComponent; - class SHVkCommandBuffer; - class SHVkPipeline; - class SHVkPipelineLayout; - class SHVkRenderpass; - class SHSubpass; - class SHVkShaderModule; - class SHRenderer; - - - - class SHParticleSubSystem - { - private: - - Handle logicalDevice; - - - public: - void Init(Handle device, Handle compatibleRenderpass, Handle subpass) noexcept; - - void Run(uint32_t frameIndex) noexcept; - - void Render(Handle cmdBuffer, Handle renderer, uint32_t frameIndex) noexcept; - void Exit(void) noexcept; - - }; -} diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Particles/SHParticleSubSystem.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Particles/SHParticleSubSystem.cpp index eb3c4f1a..7c3d9c74 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Particles/SHParticleSubSystem.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Particles/SHParticleSubSystem.cpp @@ -1,7 +1,309 @@ #include "SHpch.h" -#include "SHParticleSubSustem.h" +#include "SHParticleSubSystem.h" +#include "Graphics/Pipeline/SHPipelineLayoutParams.h" +#include "Graphics/MiddleEnd/GlobalData/SHGraphicsPredefinedData.h" +#include "Graphics/Devices/SHVkLogicalDevice.h" +#include "Graphics/MiddleEnd/Particles/SHParticleEmitterComponent.h" +#include "ECS_Base/Managers/SHComponentManager.h" +#include "Graphics/Descriptors/SHVkDescriptorSetGroup.h" +#include "Graphics/Descriptors/SHVkDescriptorSetLayout.h" +#include "Graphics/MiddleEnd/GlobalData/SHGlobalDescriptorSets.h" +#include "Math/Transform/SHTransformComponent.h" +#include "Graphics/Buffers/SHVkBuffer.h" namespace SHADE { - + + void SHParticleSubSystem::InitializeComponent(SHParticleEmitterComponent& comp) noexcept + { + uint32_t emitterStructAligned = logicalDevice->PadSSBOSize(sizeof (SHParticleEmitterComponent::GPUEmitterStruct)); + uint32_t particleStructAligned = logicalDevice->PadUBOSize(sizeof (SHParticleEmitterComponent::GPUParticleStruct)); + uint32_t sizeofIndirectCmd = static_cast(sizeof(vk::DrawIndirectCommand)); + uint32_t sizeofUint = static_cast(sizeof(uint32_t)); + + // TODO: temporary only. + static constexpr uint32_t NUM_PARTICLES = 500; + comp.maxParticles = NUM_PARTICLES; + + // offset into the buffer for input and output + uint32_t const PARTICLE_FRAME_CHUNK_SIZE = (particleStructAligned * comp.maxParticles); + + // Buffer Initialization + { + // count, value + std::vector freelistInit(comp.maxParticles + 1, 0); + freelistInit[0] = comp.maxParticles; + + // Particle emitter buffer. Multiple copies, Host-visible mapped. We want multiple copies because we'll be writing to it from the CPU. We don't want to do that while the GPU + // is using it during compute operations so we write to another portion. + comp.emitterData = logicalDevice->CreateBuffer(SHGraphicsConstants::NUM_FRAME_BUFFERS * emitterStructAligned, nullptr, 0, vk::BufferUsageFlagBits::eStorageBuffer, VMA_MEMORY_USAGE_AUTO, VmaAllocationCreateFlagBits::VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT | VmaAllocationCreateFlagBits::VMA_ALLOCATION_CREATE_MAPPED_BIT); + + // buffer for particle data: pure GPU memory, no transfers, no flags. We want to triple buffer this so that we can submit work to the GPU + // without having to wait for rendering to finish reading the data + comp.particleData = logicalDevice->CreateBuffer(SHGraphicsConstants::NUM_FRAME_BUFFERS * particleStructAligned * NUM_PARTICLES, nullptr, 0, vk::BufferUsageFlagBits::eStorageBuffer, VMA_MEMORY_USAGE_AUTO, {}); + + // Buffer for freelist data. 1 copy only, host-visible mapped. We only need 1 copy because it is only required in compute. If it was used or read in another + // stage we would need more copies. + comp.freelistData = logicalDevice->CreateBuffer(sizeofUint * (comp.maxParticles + 1), freelistInit.data(), sizeofUint * (comp.maxParticles + 1), vk::BufferUsageFlagBits::eStorageBuffer, VMA_MEMORY_USAGE_AUTO, VmaAllocationCreateFlagBits::VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT | VmaAllocationCreateFlagBits::VMA_ALLOCATION_CREATE_MAPPED_BIT); + + // Buffer for indices. NUM_FRAME_BUFFERS copies since it's used in rendering. host-visible mapped. + comp.indicesData = logicalDevice->CreateBuffer(sizeofUint * comp.maxParticles, nullptr, 0, vk::BufferUsageFlagBits::eStorageBuffer, VMA_MEMORY_USAGE_AUTO, VmaAllocationCreateFlagBits::VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT | VmaAllocationCreateFlagBits::VMA_ALLOCATION_CREATE_MAPPED_BIT); + + // Draw call data will not be tampered with after this initialization except for one variable: instanceCount, which will be modified from compute shader + std::array indirectCommands{}; + for (auto& cmd : indirectCommands) + { + cmd.vertexCount = 4; + cmd.firstVertex = 0; + cmd.firstInstance = 0; + cmd.instanceCount = 0; + } + + // buffer to store draw call data. Non-indexed, host-visible mapped, triple buffered. + comp.drawCallData = logicalDevice->CreateBuffer(SHGraphicsConstants::NUM_FRAME_BUFFERS * sizeofIndirectCmd, indirectCommands.data(), SHGraphicsConstants::NUM_FRAME_BUFFERS * sizeofIndirectCmd, vk::BufferUsageFlagBits::eUniformBuffer | vk::BufferUsageFlagBits::eIndirectBuffer, VMA_MEMORY_USAGE_AUTO, VmaAllocationCreateFlagBits::VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT | VmaAllocationCreateFlagBits::VMA_ALLOCATION_CREATE_MAPPED_BIT); + + } + + // Descriptor set initialization + { + // Get particle desc set layout + auto descSetLayout = SHGraphicsPredefinedData::GetPredefinedDescSetLayouts(SHGraphicsPredefinedData::PredefinedDescSetLayoutTypes::PARTICLES); + + // Since we are populating the set as is, the set index will be 0 + static constexpr uint32_t PARTICLE_DATA_SET_INDEX = 0; + + // Variable desc counts, all ignored anyway (This is required but its a dumb interface. You can only blame yourself, Brandon. ) + std::vector const VARIABLE_COUNTS = {0u,0u,0u,0u,0u}; + + // allocate new desc set + comp.particleDescriptorSet = descPool->Allocate(descSetLayout, VARIABLE_COUNTS); + + // convenience handle + auto set = comp.particleDescriptorSet; + + // After buffers are created, we want to populate all bindings(6) with the buffers + set->ModifyWriteDescBuffer(PARTICLE_DATA_SET_INDEX, SHGraphicsConstants::DescriptorSetBindings::PARTICLE_EMITTER_DATA, { &comp.emitterData, 1 }, 0, emitterStructAligned); + set->ModifyWriteDescBuffer(PARTICLE_DATA_SET_INDEX, SHGraphicsConstants::DescriptorSetBindings::PARTICLE_INPUT_DATA, { &comp.particleData, 1 }, 0, PARTICLE_FRAME_CHUNK_SIZE); // input and output will be th same until we bind using dynamic offsets + set->ModifyWriteDescBuffer(PARTICLE_DATA_SET_INDEX, SHGraphicsConstants::DescriptorSetBindings::PARTICLE_OUTPUT_DATA, { &comp.particleData, 1 }, 0, PARTICLE_FRAME_CHUNK_SIZE); + set->ModifyWriteDescBuffer(PARTICLE_DATA_SET_INDEX, SHGraphicsConstants::DescriptorSetBindings::PARTICLE_FREELIST_DATA, { &comp.freelistData, 1 }, 0, sizeofUint * (comp.maxParticles + 1)); + set->ModifyWriteDescBuffer(PARTICLE_DATA_SET_INDEX, SHGraphicsConstants::DescriptorSetBindings::PARTICLE_INDICES_DATA, { &comp.indicesData, 1 }, 0, sizeofUint * (comp.maxParticles)); + set->ModifyWriteDescBuffer(PARTICLE_DATA_SET_INDEX, SHGraphicsConstants::DescriptorSetBindings::PARTICLE_DRAW_DATA, { &comp.drawCallData, 1 }, 0, sizeofIndirectCmd); + } + + comp.initialized = true; + comp.timeBeforeEmission = comp.emissionInterval; + comp.toEmit = false; + comp.chunkSize = PARTICLE_FRAME_CHUNK_SIZE; + + for (uint32_t i = 0; i < SHGraphicsConstants::NUM_FRAME_BUFFERS; ++i) + { + auto& offsets = comp.dynamicOffsets[i]; + + uint32_t inputOffset = PARTICLE_FRAME_CHUNK_SIZE * ((i + SHGraphicsConstants::NUM_FRAME_BUFFERS - 1) % SHGraphicsConstants::NUM_FRAME_BUFFERS); // take previous frame's data + uint32_t outputOffset = PARTICLE_FRAME_CHUNK_SIZE * i; + + // In the order of: + // 1. Emitter data + // 2. Particle input + // 3. Particle output + // 4. Particle draw data + offsets[DYOFF_INDEX_EMITTER] = i * emitterStructAligned; + offsets[DYOFF_INDEX_PARTICLE_INPUT] = inputOffset; + offsets[DYOFF_INDEX_PARTICLE_OUTPUT] = outputOffset; + offsets[DYOFF_INDEX_INDICES_DATA] = i * sizeofUint * comp.maxParticles; + offsets[DYOFF_INDEX_DRAW_DATA] = i * sizeofIndirectCmd; + } + } + + void SHParticleSubSystem::EmitComponent(Handle cmdBuffer, SHParticleEmitterComponent& comp, uint32_t frameIndex) noexcept + { + auto const& mappings = SHGraphicsPredefinedData::GetMappings(SHGraphicsPredefinedData::SystemType::PARTICLE_RENEDERING); + auto* transform = SHComponentManager::GetComponent(comp.GetEID()); + + // bind the descriptor sets required for emitting particles + cmdBuffer->BindDescriptorSet(comp.particleDescriptorSet, SH_PIPELINE_TYPE::COMPUTE, mappings.at(SHPredefinedDescriptorTypes::PARTICLES), comp.dynamicOffsets[frameIndex]); + + cmdBuffer->SetPushConstantVariable("EmitterPushConstant.emitterPosition", transform->GetWorldPosition(), SH_PIPELINE_TYPE::COMPUTE); + cmdBuffer->SetPushConstantVariable("EmitterPushConstant.emissionCount", comp.emissionCount, SH_PIPELINE_TYPE::COMPUTE); + + // emit particles + cmdBuffer->ComputeDispatch((comp.emissionCount / EMITTER_WORKGROUP_SIZE) + 1, 1, 1); + } + + void SHParticleSubSystem::UpdateCompoennt(Handle cmdBuffer, SHParticleEmitterComponent& comp, uint32_t frameIndex) noexcept + { + auto const& mappings = SHGraphicsPredefinedData::GetMappings(SHGraphicsPredefinedData::SystemType::PARTICLE_RENEDERING); + + uint32_t instanceCountOffset = sizeof (vk::DrawIndirectCommand) * frameIndex + offsetof(vk::DrawIndirectCommand, instanceCount); + uint32_t ZERO = 0; + + // reset instance count to 0 + comp.drawCallData->WriteToMemory (&ZERO, sizeof(uint32_t), 0, instanceCountOffset); + + + // bind the descriptor sets required for emitting particles + cmdBuffer->BindDescriptorSet(comp.particleDescriptorSet, SH_PIPELINE_TYPE::COMPUTE, mappings.at(SHPredefinedDescriptorTypes::PARTICLES), comp.dynamicOffsets[frameIndex]); + + // dispatch the compute shaders to update particles + cmdBuffer->ComputeDispatch((comp.maxParticles / EMITTER_WORKGROUP_SIZE) + 1, 1, 1); + } + + void SHParticleSubSystem::RenderComponent(Handle cmdBuffer, SHParticleEmitterComponent& comp, uint32_t frameIndex) noexcept + { + + } + + void SHParticleSubSystem::Init(Handle device, Handle inDescPool, Handle compatibleRenderpass, Handle subpass, Handle VS, Handle FS, Handle emitCS, Handle defaultUpdateCS) noexcept + { + descPool = inDescPool; + logicalDevice = device; + + /*-----------------------------------------------------------------------*/ + /* INITIALIZE ALL PIPELINES */ + /*-----------------------------------------------------------------------*/ + SHPipelineLayoutParams plParams + { + .shaderModules = {VS, FS}, + .predefinedDescSetLayouts = SHGraphicsPredefinedData::GetSystemData(SHGraphicsPredefinedData::SystemType::PARTICLE_RENEDERING).descSetLayouts + }; + + renderingPipelineData.pipelineLayout = logicalDevice->CreatePipelineLayout(plParams); + renderingPipelineData.pipeline = logicalDevice->CreateGraphicsPipeline(renderingPipelineData.pipelineLayout, nullptr, compatibleRenderpass, subpass); + + SHPipelineLayoutParams emitPlParams + { + .shaderModules = {emitCS}, + .predefinedDescSetLayouts = SHGraphicsPredefinedData::GetSystemData(SHGraphicsPredefinedData::SystemType::PARTICLE_RENEDERING).descSetLayouts + }; + + emittingPipelineData.pipelineLayout = logicalDevice->CreatePipelineLayout(emitPlParams); + emittingPipelineData.pipeline = logicalDevice->CreateComputePipeline(emittingPipelineData.pipelineLayout); + + SHPipelineLayoutParams defaultUpdatePlParams + { + .shaderModules = {defaultUpdateCS}, + .predefinedDescSetLayouts = SHGraphicsPredefinedData::GetSystemData(SHGraphicsPredefinedData::SystemType::PARTICLE_RENEDERING).descSetLayouts + }; + + defaultUpdatePipelineData.pipelineLayout = logicalDevice->CreatePipelineLayout(defaultUpdatePlParams); + defaultUpdatePipelineData.pipeline = logicalDevice->CreateComputePipeline(defaultUpdatePipelineData.pipelineLayout); + + + /*-----------------------------------------------------------------------*/ + /* OTHER INITIALIZATION */ + /*-----------------------------------------------------------------------*/ + SHComponentManager::CreateComponentSparseSet(); + } + + void SHParticleSubSystem::Run(Handle cmdBuffer, uint32_t frameIndex, float dt) noexcept + { + auto& emitters = SHComponentManager::GetDense(); + auto const& mappings = SHGraphicsPredefinedData::GetMappings(SHGraphicsPredefinedData::SystemType::PARTICLE_RENEDERING); + + // Get offset into GPU emitter data (for updating) + uint32_t emitterDataOffset = frameIndex * sizeof (SHParticleEmitterComponent::GPUEmitterStruct); + + // Barriers to make sure emitting shader is done completely before update is run. + // Every emitter will have its own barrier. + std::vector preUpdateBarriers{}; + preUpdateBarriers.resize(emitters.size()); + + // If we wanted to be VERY safe, a barrier would be good here to make sure output particles have finish reading input particles in + // the update compute. HOWEVER since a NUM_FRAME_BUFFERS frames would have passed by then, we will not insert 1 here. + + /*-----------------------------------------------------------------------*/ + /* BEGIN EMITTING PARTICES */ + /*-----------------------------------------------------------------------*/ + + // TODO: Might need to issue a barrier here for input particle data + + // bind the pipeline for emitting particles + cmdBuffer->BindPipeline(emittingPipelineData.pipeline); + + // Generic data + SHGlobalDescriptorSets::BindGenericAndTextureData(logicalDevice, cmdBuffer, SH_PIPELINE_TYPE::COMPUTE, mappings.at(SHPredefinedDescriptorTypes::STATIC_DATA), frameIndex); + + uint32_t i = 0; + for (auto& emitter : emitters) + { + if (!emitter.initialized) + InitializeComponent(emitter); + + // Set emitter emit flag to true here if there are ready to be emitted + if (emitter.isPassive) + { + // decrement emission timer + emitter.timeBeforeEmission -= dt; + + // Check if time to emit + if (emitter.timeBeforeEmission <= 0.0f) + { + // reset timer + emitter.timeBeforeEmission = emitter.emissionInterval; + + // Emit later + emitter.toEmit = true; + } + } + + if (emitter.toEmit) // take note that if emitter is not passive, this can also be set to true outside of this function + { + // Copy data to host visible buffer of emitter + emitter.emitterData->WriteToMemory (&emitter.cpuEmitterData, sizeof (SHParticleEmitterComponent::GPUEmitterStruct), 0, emitterDataOffset); + + // Call emit function here + EmitComponent(cmdBuffer, emitter, frameIndex); + } + + // make new barrier on stack... + vk::BufferMemoryBarrier barrier + { + .srcAccessMask = vk::AccessFlagBits::eShaderWrite, + .dstAccessMask = vk::AccessFlagBits::eShaderRead, + .buffer = emitter.particleData->GetVkBuffer(), + .offset = emitter.dynamicOffsets[frameIndex][DYOFF_INDEX_PARTICLE_INPUT], + .size = emitter.chunkSize + }; + + // ...copy assign barrier on heap + preUpdateBarriers[i] = barrier; + + emitter.toEmit = false; + ++i; + } + + // issue the barrier to wait + cmdBuffer->PipelineBarrier(vk::PipelineStageFlagBits::eComputeShader, vk::PipelineStageFlagBits::eComputeShader, {}, {}, preUpdateBarriers, {}); + + /*-----------------------------------------------------------------------*/ + /* EMITTING PARTICLES DONE, BEGIN UPDATES.... */ + /*-----------------------------------------------------------------------*/ + + // bind the pipeline for updating + cmdBuffer->BindPipeline(defaultUpdatePipelineData.pipeline); + + for (auto& emitter : emitters) + { + UpdateCompoennt(cmdBuffer, emitter, frameIndex); + } + + + } + + void SHParticleSubSystem::Render(Handle cmdBuffer, Handle renderer, uint32_t frameIndex) noexcept + { + auto& emitters = SHComponentManager::GetDense(); + + // TODO: Issue barrier for output particle data. Semaphore should also be issued outside in SHGraphicsSystem + for (auto& emitter : emitters) + { + + } + } + + void SHParticleSubSystem::Exit(void) noexcept + { + + } + } \ No newline at end of file diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Particles/SHParticleSubSystem.h b/SHADE_Engine/src/Graphics/MiddleEnd/Particles/SHParticleSubSystem.h new file mode 100644 index 00000000..ed697a59 --- /dev/null +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Particles/SHParticleSubSystem.h @@ -0,0 +1,93 @@ +#pragma once + +#include "Resource/SHHandle.h" +#include "Graphics/Pipeline/SHPipelineState.h" +#include "Math/SHMatrix.h" + +namespace SHADE +{ + class SHVkLogicalDevice; + class SHVkDescriptorPool; + class SHVkDescriptorSetGroup; + class SHVkDescriptorSetLayout; + class SHVkBuffer; + class SHLightComponent; + class SHVkCommandBuffer; + class SHVkPipeline; + class SHVkPipelineLayout; + class SHVkRenderpass; + class SHSubpass; + class SHVkShaderModule; + class SHRenderer; + class SHParticleEmitterComponent; + + + + class SHParticleSubSystem + { + private: + static constexpr uint32_t EMITTER_WORKGROUP_SIZE = 128; + static constexpr uint32_t DYOFF_INDEX_EMITTER = 0; + static constexpr uint32_t DYOFF_INDEX_PARTICLE_INPUT = 1; + static constexpr uint32_t DYOFF_INDEX_PARTICLE_OUTPUT = 2; + static constexpr uint32_t DYOFF_INDEX_INDICES_DATA = 3; + static constexpr uint32_t DYOFF_INDEX_DRAW_DATA = 4; + + + // To hold data for a pipeline and pipeline layout. + // We want this here because particles require 3 pipeline sets: + // - Rendering + // - Emit Compute + // - Update Compute + struct PipelineData + { + //! Pipeline + Handle pipeline; + + //! Pipeline layout for pipeline creation + Handle pipelineLayout; + }; + +#if 0 // not used, mainly for convenience to show what shaders use + // Push constant data for emitters + struct EmitterShaderPC + { + //! Emitter position + SHVec4 emitterPosition; + + //! emission count for 1 single emission + uint32_t emissionCount; + }; +#endif + + //! Logical device for creation and destruction + Handle logicalDevice; + + //! Pipeline data for rendering particles + PipelineData renderingPipelineData; + + //! Pipeline data for emitting particles + PipelineData emittingPipelineData; + + //! Pipeline data for updating particles + PipelineData defaultUpdatePipelineData; + + //! Desc pool for particle component desc set allocation + Handle descPool; + + + void InitializeComponent (SHParticleEmitterComponent& comp) noexcept; + void EmitComponent (Handle cmdBuffer, SHParticleEmitterComponent& comp, uint32_t frameIndex) noexcept; + void UpdateCompoennt(Handle cmdBuffer, SHParticleEmitterComponent& comp, uint32_t frameIndex) noexcept; + void RenderComponent(Handle cmdBuffer, SHParticleEmitterComponent& comp, uint32_t frameIndex) noexcept; + + public: + void Init(Handle device, Handle inDescPool, Handle compatibleRenderpass, Handle subpass, Handle VS, Handle FS, Handle emitCS, Handle defaultUpdateCS) noexcept; + + void Run(Handle cmdBuffer, uint32_t frameIndex, float dt) noexcept; + + void Render(Handle cmdBuffer, Handle renderer, uint32_t frameIndex) noexcept; + void Exit(void) noexcept; + + }; +} diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.cpp index a7a3d2ed..5703a9c1 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.cpp @@ -29,6 +29,8 @@ namespace SHADE // Default white color. color = SHColour::WHITE; + + textSize = SHVec3::One; } void SHTextRenderableComponent::OnDestroy(void) @@ -61,11 +63,16 @@ namespace SHADE MakeDirty(); } - void SHTextRenderableComponent::SetColour(SHColour const& newColor) noexcept + void SHTextRenderableComponent::SetColor(SHColour const& newColor) noexcept { color = newColor; } + void SHTextRenderableComponent::SetTextSize(SHVec3 const& size) noexcept + { + textSize = size; + } + /***************************************************************************/ /*! @@ -87,11 +94,16 @@ namespace SHADE return fontHandle; } - SHADE::SHColour const& SHTextRenderableComponent::GetColour(void) const noexcept + SHADE::SHColour const& SHTextRenderableComponent::GetColor(void) const noexcept { return color; } + SHVec3 const& SHTextRenderableComponent::GetTextSize(void) const noexcept + { + return textSize; + } + } namespace rttr diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.h b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.h index d34e7c38..81d3a85f 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.h +++ b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.h @@ -40,6 +40,9 @@ namespace SHADE //! character position data for each letter in the text Handle charPositionDataBuffer; + //! Text size. Multiplied to TRS. + SHVec3 textSize; + void MakeDirty (void) noexcept; void Clean (void) noexcept; @@ -52,11 +55,13 @@ namespace SHADE /*-----------------------------------------------------------------------*/ void SetText (std::string_view newText) noexcept; void SetFont(Handle font) noexcept; - void SetColour(SHColour const& newColor) noexcept; + void SetColor(SHColour const& newColor) noexcept; + void SetTextSize (SHVec3 const& size) noexcept; std::string const& GetText (void) const noexcept; Handle GetFont (void) const noexcept; - SHColour const& GetColour (void) const noexcept; + SHColour const& GetColor (void) const noexcept; + SHVec3 const& GetTextSize (void) const noexcept; friend class SHTextRenderingSubSystem; diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderingSubSystem.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderingSubSystem.cpp index 9ab6106d..ff9168c9 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderingSubSystem.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderingSubSystem.cpp @@ -210,10 +210,13 @@ namespace SHADE cmdBuffer->BindVertexBuffer(SHGraphicsConstants::VertexBufferBindings::CALCULATED_GLYPH_POSITION, comp.charPositionDataBuffer, 0); cmdBuffer->BindVertexBuffer(SHGraphicsConstants::VertexBufferBindings::GLYPH_INDEX, comp.indexingDataBuffer, 0); + auto const& textSize = comp.textSize; + SHMatrix textSizeScale{textSize.x, 0.0f, 0.0f, 0.0f, 0.0f, textSize.y, 0.0f, 0.0f, 0.0f, 0.0f, textSize.z, 0.0f}; + if (auto* uiComp = SHComponentManager::GetComponent_s(comp.GetEID())) - cmdBuffer->SetPushConstantVariable("TestPushConstant.worldTransform", uiComp->GetMatrix(), SH_PIPELINE_TYPE::GRAPHICS); + cmdBuffer->SetPushConstantVariable("TestPushConstant.worldTransform", textSizeScale * uiComp->GetMatrix(), SH_PIPELINE_TYPE::GRAPHICS); else - cmdBuffer->SetPushConstantVariable("TestPushConstant.worldTransform", transform->GetTRS(), SH_PIPELINE_TYPE::GRAPHICS); + cmdBuffer->SetPushConstantVariable("TestPushConstant.worldTransform", textSizeScale * transform->GetTRS(), SH_PIPELINE_TYPE::GRAPHICS); cmdBuffer->SetPushConstantVariable("TestPushConstant.eid", comp.GetEID(), SH_PIPELINE_TYPE::GRAPHICS); diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/TrajectoryRendering/SHTrajectoryRenderableComponent.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/TrajectoryRendering/SHTrajectoryRenderableComponent.cpp index 77dd66c8..91c11e60 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/TrajectoryRendering/SHTrajectoryRenderableComponent.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/TrajectoryRendering/SHTrajectoryRenderableComponent.cpp @@ -42,16 +42,26 @@ namespace SHADE return mesh; } - SHVec4 const& SHTrajectoryRenderableComponent::GetStartColor(void) const noexcept + SHVec3 const& SHTrajectoryRenderableComponent::GetStartColor(void) const noexcept { return startColor; } - SHVec4 const& SHTrajectoryRenderableComponent::GetEndColor(void) const noexcept + SHVec3 const& SHTrajectoryRenderableComponent::GetEndColor(void) const noexcept { return endColor; } + float SHTrajectoryRenderableComponent::GetStartAlpha(void) const noexcept + { + return startAlpha; + } + + float SHTrajectoryRenderableComponent::GetEndAlpha(void) const noexcept + { + return endAlpha; + } + float SHTrajectoryRenderableComponent::GetColorEvolveRate(void) const noexcept { return colorEvolveRate; @@ -67,17 +77,27 @@ namespace SHADE positions = inPositions; } - void SHTrajectoryRenderableComponent::SetStartColor(SHVec4 color) noexcept + void SHTrajectoryRenderableComponent::SetStartColor(SHVec3 color) noexcept { startColor = color; } - void SHTrajectoryRenderableComponent::SetEndColor(SHVec4 color) noexcept + void SHTrajectoryRenderableComponent::SetEndColor(SHVec3 color) noexcept { endColor = color; } + void SHTrajectoryRenderableComponent::SetStartAlpha(float a) noexcept + { + startAlpha = a; + } + + void SHTrajectoryRenderableComponent::SetEndAlpha(float a) noexcept + { + endAlpha = a; + } + void SHTrajectoryRenderableComponent::SetColorEvolveRate(float rate) noexcept { colorEvolveRate = rate; diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/TrajectoryRendering/SHTrajectoryRenderableComponent.h b/SHADE_Engine/src/Graphics/MiddleEnd/TrajectoryRendering/SHTrajectoryRenderableComponent.h index d6f7be12..f3744d83 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/TrajectoryRendering/SHTrajectoryRenderableComponent.h +++ b/SHADE_Engine/src/Graphics/MiddleEnd/TrajectoryRendering/SHTrajectoryRenderableComponent.h @@ -10,7 +10,7 @@ namespace SHADE { class SHMesh; - class SHTrajectoryRenderableComponent : public SHComponent + class SH_API SHTrajectoryRenderableComponent : public SHComponent { private: @@ -21,10 +21,16 @@ namespace SHADE std::vector positions; //! Starting color of the trajectory - SHVec4 startColor; + SHVec3 startColor; //! Color the trajectory should evolve to the longer it is - SHVec4 endColor; + SHVec3 endColor; + + //! Starting alpha of the trajectory + float startAlpha; + + //! end alpha of the trajectory + float endAlpha; //! evolving rate of the color float colorEvolveRate; @@ -35,14 +41,18 @@ namespace SHADE /*-----------------------------------------------------------------------*/ void SetMesh(Handle newMesh) noexcept; void SetPositions (std::vector const& inPositions) noexcept; - void SetStartColor(SHVec4 startColor) noexcept; - void SetEndColor (SHVec4 endColor) noexcept; - void SetColorEvolveRate (float rate) noexcept; + void SetStartColor(SHVec3 startColor) noexcept; + void SetEndColor (SHVec3 endColor) noexcept; + void SetStartAlpha(float a) noexcept; + void SetEndAlpha (float a) noexcept; + void SetColorEvolveRate(float rate) noexcept; std::vector GetPositions (void) const noexcept; Handle GetMesh (void) const noexcept; - SHVec4 const& GetStartColor (void) const noexcept; - SHVec4 const& GetEndColor (void) const noexcept; + SHVec3 const& GetStartColor (void) const noexcept; + SHVec3 const& GetEndColor (void) const noexcept; + float GetStartAlpha (void) const noexcept; + float GetEndAlpha (void) const noexcept; float GetColorEvolveRate (void) const noexcept; void OnCreate(void) override final; diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/TrajectoryRendering/SHTrajectoryRenderingSubSystem.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/TrajectoryRendering/SHTrajectoryRenderingSubSystem.cpp index 802d085d..cbf593d4 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/TrajectoryRendering/SHTrajectoryRenderingSubSystem.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/TrajectoryRendering/SHTrajectoryRenderingSubSystem.cpp @@ -59,8 +59,8 @@ namespace SHADE .srcColorBlendFactor = vk::BlendFactor::eSrcAlpha, .dstColorBlendFactor = vk::BlendFactor::eOneMinusSrcAlpha, .colorBlendOp = vk::BlendOp::eAdd, - .srcAlphaBlendFactor = vk::BlendFactor::eOne, - .dstAlphaBlendFactor = vk::BlendFactor::eZero, + .srcAlphaBlendFactor = vk::BlendFactor::eSrcAlpha, + .dstAlphaBlendFactor = vk::BlendFactor::eOneMinusSrcAlpha, .alphaBlendOp = vk::BlendOp::eAdd, .colorWriteMask = vk::ColorComponentFlagBits::eR | vk::ColorComponentFlagBits::eG | vk::ColorComponentFlagBits::eB | vk::ColorComponentFlagBits::eA, } @@ -68,6 +68,8 @@ namespace SHADE } pipeline->GetPipelineState().SetColorBlenState(colorBlendState); + + pipeline->ConstructPipeline(); } void SHTrajectoryRenderingSubSystem::Run(uint32_t frameIndex) noexcept @@ -75,21 +77,31 @@ namespace SHADE auto& comps = SHComponentManager::GetDense(); for (auto& comp : comps) { - comp.SetPositions(std::vector - { - SHVec3 {}, - SHVec3 {} - }); + //std::vector test{}; + //test.resize(10); + //float x = 0.0f; + //for (auto& vec : test) + //{ + // vec = SHVec3(x, 5.0f, 0.0f); + // x += 0.5f; + //} + //comp.SetPositions (test); // If has positions, feed data to buffer. if (comp.HasPositions()) { + auto meshHandle = comp.GetMesh(); + + // dont do anything if no mesh + if (!meshHandle) + continue; + SHTransformComponent* transform = SHComponentManager::GetComponent_s(comp.GetEID()); if (transform) { // convenient variable - SHVec4 const& startColor = comp.GetStartColor(); - SHVec4 const& endColor = comp.GetEndColor(); + SHVec3 const& startColor = comp.GetStartColor(); + SHVec3 const& endColor = comp.GetEndColor(); float colorEvolveRate = comp.GetColorEvolveRate(); // trs to be reused @@ -104,7 +116,6 @@ namespace SHADE // Will be used for baseInstance later uint32_t oldTransformDataSize = transformData.size(); - auto meshHandle = comp.GetMesh(); auto const& positions = comp.GetPositions(); for (auto& pos : positions) @@ -117,11 +128,13 @@ namespace SHADE transformData.push_back(trs); colorData.push_back(currentColor); - // evolve color - currentColor = SHVec4::Lerp(startColor, endColor, lerpValue); - // evolve lerp value and clamp to 1 - lerpValue = std::max (1.0f, lerpValue + colorEvolveRate); + lerpValue = std::min (1.0f, lerpValue + colorEvolveRate); + + // evolve color + currentColor = SHVec3::Lerp(startColor, endColor, lerpValue); + currentColor.w = SHMath::Lerp (comp.GetStartAlpha(), comp.GetEndAlpha(), lerpValue); + } // add draw data for this trajectory @@ -172,6 +185,9 @@ namespace SHADE // Bind color vertex buffer cmdBuffer->BindVertexBuffer(SHGraphicsConstants::VertexBufferBindings::TRAJECTORY_COLOR, colorBuffer, 0); + // Bind transform data + cmdBuffer->BindVertexBuffer(SHGraphicsConstants::VertexBufferBindings::TRAJECTORY_TRANSFORM, transformBuffer, 0); + // call draw call cmdBuffer->DrawMultiIndirect(drawDataBuffer, drawData.size()); 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 13d9c143..84df5f88 100644 --- a/SHADE_Engine/src/Graphics/Windowing/SHWindow.cpp +++ b/SHADE_Engine/src/Graphics/Windowing/SHWindow.cpp @@ -183,9 +183,22 @@ namespace SHADE return WindowSize(screenWidth, screenHeight); } + bool SHWindow::GetMouseVisible() + { + CURSORINFO cursorInfo{}; + cursorInfo.cbSize = sizeof(cursorInfo); + BOOL result = GetCursorInfo(&cursorInfo); + if(!result) + { + auto error = GetLastError(); + SHLOG_ERROR("SHWindow: Failed to get cursor info") + } + return cursorInfo.flags != 0; + } + void SHWindow::SetMouseVisible(bool show) { - if (GetActiveWindow() == wndHWND) + while(GetMouseVisible() != show) ShowCursor(show); } diff --git a/SHADE_Engine/src/Graphics/Windowing/SHWindow.h b/SHADE_Engine/src/Graphics/Windowing/SHWindow.h index 530f1778..9ad48f28 100644 --- a/SHADE_Engine/src/Graphics/Windowing/SHWindow.h +++ b/SHADE_Engine/src/Graphics/Windowing/SHWindow.h @@ -104,7 +104,8 @@ namespace SHADE //Get size of display the window is in (whichever window contains the window origin) WindowSize GetCurrentDisplaySize() const; - void SetMouseVisible(bool show); + static bool GetMouseVisible(); + static void SetMouseVisible(bool show); void SetMousePosition(int x = -1, int y = -1); diff --git a/SHADE_Engine/src/Math/Geometry/SHAABB.cpp b/SHADE_Engine/src/Math/Geometry/SHAABB.cpp new file mode 100644 index 00000000..9ec57073 --- /dev/null +++ b/SHADE_Engine/src/Math/Geometry/SHAABB.cpp @@ -0,0 +1,215 @@ +/**************************************************************************************** + * \file SHAABB.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for a 3-Dimensional Axis Aligned Bounding Box + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "SHAABB.h" +// Project Headers +#include "Math/SHMathHelpers.h" +#include "Math/SHRay.h" + +using namespace DirectX; + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHAABB::SHAABB() noexcept + { + Center = SHVec3::Zero; + Extents = SHVec3::One * 0.5f; + } + + SHAABB::SHAABB(const SHVec3& c, const SHVec3& hE) noexcept + { + Center = c; + Extents = hE; + } + + + SHAABB::SHAABB(const SHAABB& rhs) noexcept + { + if (this == &rhs) + return; + + Center = rhs.Center; + Extents = rhs.Extents; + } + + SHAABB::SHAABB(SHAABB&& rhs) noexcept + { + Center = rhs.Center; + Extents = rhs.Extents; + } + + /*-----------------------------------------------------------------------------------*/ + /* Operator Overload Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHAABB& SHAABB::operator=(const SHAABB& rhs) noexcept + { + Center = rhs.Center; + Extents = rhs.Extents; + + return *this; + } + + SHAABB& SHAABB::operator=(SHAABB&& rhs) noexcept + { + Center = rhs.Center; + Extents = rhs.Extents; + + return *this; + } + + /*-----------------------------------------------------------------------------------*/ + /* Getter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHVec3 SHAABB::GetCenter() const noexcept + { + return Center; + } + + SHVec3 SHAABB::GetExtents() const noexcept + { + return Extents; + } + + SHVec3 SHAABB::GetMin() const noexcept + { + return SHVec3{ Center.x - Extents.x, Center.y - Extents.y, Center.z - Extents.z }; + } + + SHVec3 SHAABB::GetMax() const noexcept + { + return SHVec3{ Center.x + Extents.x, Center.y + Extents.y, Center.z + Extents.z }; + } + + /*-----------------------------------------------------------------------------------*/ + /* Setter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHAABB::SetCenter(const SHVec3& newCenter) noexcept + { + Center = newCenter; + } + + void SHAABB::SetExtents(const SHVec3& newExtents) noexcept + { + Extents = newExtents; + } + + void SHAABB::SetMin(const SHVec3& min) noexcept + { + const SHVec3 MAX = GetMax(); + + Center = SHVec3::Lerp(min, MAX, 0.5f); + Extents = SHVec3::Abs((MAX - min) * 0.5f); + } + + void SHAABB::SetMax(const SHVec3& max) noexcept + { + const SHVec3 MIN = GetMin(); + + Center = SHVec3::Lerp(MIN, max, 0.5f); + Extents = SHVec3::Abs((max - MIN) * 0.5f); + } + + void SHAABB::SetMinMax(const SHVec3& min, const SHVec3& max) noexcept + { + Center = SHVec3::Lerp(min, max, 0.5f); + Extents = SHVec3::Abs((max - min) * 0.5f); + } + + std::vector SHAABB::GetVertices() const noexcept + { + std::vector vertices{ 8 }; + GetCorners(vertices.data()); + return vertices; + } + + /*-----------------------------------------------------------------------------------*/ + /* Public Function Member Definitions */ + /*-----------------------------------------------------------------------------------*/ + + bool SHAABB::TestPoint(const SHVec3& point) const noexcept + { + return BoundingBox::Contains(point); + } + + SHRaycastResult SHAABB::Raycast(const SHRay& ray) const noexcept + { + SHRaycastResult result; + + result.hit = Intersects(ray.position, ray.direction, result.distance); + if (result.hit) + { + result.position = ray.position + ray.direction * result.distance; + result.angle = SHVec3::Angle(ray.position, result.position); + } + + return result; + } + + bool SHAABB::Contains(const SHAABB& rhs) const noexcept + { + return BoundingBox::Contains(rhs) == CONTAINS; + } + + float SHAABB::Volume() const noexcept + { + return 8.0f * (Extents.x * Extents.y * Extents.z); + } + + float SHAABB::SurfaceArea() const noexcept + { + return 8.0f * ((Extents.x * Extents.y) + + (Extents.x * Extents.z) + + (Extents.y * Extents.z)); + } + + /*-----------------------------------------------------------------------------------*/ + /* Static Function Member Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHAABB SHAABB::Combine(const SHAABB& lhs, const SHAABB& rhs) noexcept + { + SHAABB result; + CreateMerged(result, lhs, rhs); + return result; + } + + bool SHAABB::Intersect(const SHAABB& lhs, const SHAABB& rhs) noexcept + { + return lhs.Intersects(rhs); + } + + SHAABB SHAABB::BuildFromBoxes(const SHAABB* boxes, size_t numBoxes) noexcept + { + SHAABB result; + + for (size_t i = 1; i < numBoxes; ++i) + CreateMerged(result, boxes[i - 1], boxes[i]); + + return result; + } + + SHAABB SHAABB::BuildFromVertices(const SHVec3* vertices, size_t numVertices, size_t stride) noexcept + { + SHAABB result; + CreateFromPoints(result, numVertices, vertices, stride); + return result; + } + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Math/Geometry/SHAABB.h b/SHADE_Engine/src/Math/Geometry/SHAABB.h new file mode 100644 index 00000000..36ae9aed --- /dev/null +++ b/SHADE_Engine/src/Math/Geometry/SHAABB.h @@ -0,0 +1,172 @@ +/**************************************************************************************** + * \file SHAABB.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for a 3-Dimensional Axis Aligned Bounding Box + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +#include + +// Project Headers +#include "Math/SHRay.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + + /** + * @brief + * Encapsulates a 3D Axis-Aligned Bounding Box. + */ + class SH_API SHAABB : private DirectX::BoundingBox + { + public: + /*---------------------------------------------------------------------------------*/ + /* Static Data Members */ + /*---------------------------------------------------------------------------------*/ + + static constexpr size_t NUM_VERTICES = 8; + + /*---------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*---------------------------------------------------------------------------------*/ + + ~SHAABB () noexcept = default; + + SHAABB () noexcept; + SHAABB (const SHVec3& center, const SHVec3& halfExtents) noexcept; + SHAABB (const SHAABB& rhs) noexcept; + SHAABB (SHAABB&& rhs) noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*---------------------------------------------------------------------------------*/ + + SHAABB& operator= (const SHAABB& rhs) noexcept; + SHAABB& operator= (SHAABB&& rhs) noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Getter Functions */ + /*---------------------------------------------------------------------------------*/ + + [[nodiscard]] SHVec3 GetCenter () const noexcept; + [[nodiscard]] SHVec3 GetExtents () const noexcept; + [[nodiscard]] SHVec3 GetMin () const noexcept; + [[nodiscard]] SHVec3 GetMax () const noexcept; + [[nodiscard]] std::vector GetVertices () const noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Setter Functions */ + /*---------------------------------------------------------------------------------*/ + + void SetCenter (const SHVec3& newCenter) noexcept; + void SetExtents (const SHVec3& newExtents) noexcept; + void SetMin (const SHVec3& min) noexcept; + void SetMax (const SHVec3& max) noexcept; + void SetMinMax (const SHVec3& min, const SHVec3& max) noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Member Functions */ + /*---------------------------------------------------------------------------------*/ + + /** + * @brief + * Checks if a point is inside the aabb. + * @param point + * The point to check. + * @return + * True if the point is inside the aabb. + */ + [[nodiscard]] bool TestPoint (const SHVec3& point) const noexcept; + + /** + * @brief + * Casts a ray against the aabb. + * @param ray + * The ray to cast. + * @return + * The result of the raycast.
+ * See the corresponding header for the contents of the raycast result object. + */ + [[nodiscard]] SHRaycastResult Raycast (const SHRay& ray) const noexcept; + + /** + * @brief + * Checks if an entire other aabb is contained by this aabb. + * @param rhs + * The aabb to check. + * @return + * True if the other sphere is completely contained by this aabb. + */ + [[nodiscard]] bool Contains (const SHAABB& rhs) const noexcept; + + /** + * @brief + * Calculates the volume of the aabb. + */ + [[nodiscard]] float Volume () const noexcept; + + /** + * @brief + * Calculates the surface area of the aabb. + */ + [[nodiscard]] float SurfaceArea () const noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Static Member Functions */ + /*---------------------------------------------------------------------------------*/ + + /** + * @brief + * Combines two aabbs to form a larger aabb. + * If one aabb is completely contained by the other, the result is the larger aabb. + * @return + * The combined aabb. + */ + [[nodiscard]] static SHAABB Combine (const SHAABB& lhs, const SHAABB& rhs) noexcept; + + /** + * @brief + * Checks if two aabbs are intersecting. + * @return + * True if they are intersecting. + */ + [[nodiscard]] static bool Intersect (const SHAABB& lhs, const SHAABB& rhs) noexcept; + + /** + * @brief + * Builds a single aabb from multiple aabbs. + * @param spheres + * The set of aabbs to build from. + * @param numSpheres + * The number of aabbs in the set to build from. + * @return + * An aabb that contains all the spheres in the set. + */ + [[nodiscard]] static SHAABB BuildFromBoxes (const SHAABB* boxes, size_t numBoxes) noexcept; + + /** + * @brief + * Builds a aabb from a set of vertices. + * @param vertices + * The vertices to build a aabb from. + * @param numVertices + * The number of vertices in the set to build from. + * @param stride + * The stride between each vertex, in the instance there is data in between each + * vertex that does not define the geometry of the object. + * @return + * An aabb that contains all the vertices in the set. + */ + [[nodiscard]] static SHAABB BuildFromVertices (const SHVec3* vertices, size_t numVertices, size_t stride = 0) noexcept; + }; + + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/Shapes/SHBox.cpp b/SHADE_Engine/src/Physics/Collision/Shapes/SHBox.cpp index e45d6ef3..6b6921f8 100644 --- a/SHADE_Engine/src/Physics/Collision/Shapes/SHBox.cpp +++ b/SHADE_Engine/src/Physics/Collision/Shapes/SHBox.cpp @@ -1,5 +1,5 @@ /**************************************************************************************** - * \file SHBoxCollisionShape.cpp + * \file SHBox.cpp * \author Diren D Bharwani, diren.dbharwani, 390002520 * \brief Implementation for a Box Collision Shape. * @@ -34,10 +34,6 @@ namespace SHADE dynamic_cast(rp3dCollider->getCollisionShape())->setHalfExtents(SHVec3::One * 0.5f); } - /*-----------------------------------------------------------------------------------*/ - /* Operator Overload Definitions */ - /*-----------------------------------------------------------------------------------*/ - /*-----------------------------------------------------------------------------------*/ /* Getter Function Definitions */ /*-----------------------------------------------------------------------------------*/ diff --git a/SHADE_Engine/src/Physics/Collision/Shapes/SHBox.h b/SHADE_Engine/src/Physics/Collision/Shapes/SHBox.h index 7cb425d5..fe7cd40d 100644 --- a/SHADE_Engine/src/Physics/Collision/Shapes/SHBox.h +++ b/SHADE_Engine/src/Physics/Collision/Shapes/SHBox.h @@ -40,10 +40,6 @@ namespace SHADE SHBox () noexcept; ~SHBox () override = default; - /*---------------------------------------------------------------------------------*/ - /* Operator Overloads */ - /*---------------------------------------------------------------------------------*/ - /*---------------------------------------------------------------------------------*/ /* Getter Functions */ /*---------------------------------------------------------------------------------*/ diff --git a/SHADE_Engine/src/Physics/Collision/Shapes/SHCapsule.cpp b/SHADE_Engine/src/Physics/Collision/Shapes/SHCapsule.cpp new file mode 100644 index 00000000..767b8507 --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/Shapes/SHCapsule.cpp @@ -0,0 +1,166 @@ +/**************************************************************************************** + * \file SHCapsule.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for a Capsule Collision Shape. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +#include + +// Primary Header +#include "SHCapsule.h" + +// Project Headers +#include "Math/SHMathHelpers.h" +#include "Math/SHMatrix.h" +#include "Physics/Interface/SHColliderComponent.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHCapsule::SHCapsule() noexcept + : SHCollisionShape ( Type::CAPSULE) + , relativeRadius { 1.0f } + , relativeHeight { 2.0f } + , scale { SHVec3::One } + { + if (rp3dCollider) + { + auto* rp3dCapsule = dynamic_cast(rp3dCollider->getCollisionShape()); + rp3dCapsule->setRadius(0.5f); + rp3dCapsule->setHeight(2.0f); + } + } + + /*-----------------------------------------------------------------------------------*/ + /* Getter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + float SHCapsule::GetWorldRadius() const noexcept + { + if (rp3dCollider) + return dynamic_cast(rp3dCollider->getCollisionShape())->getRadius(); + + const float MAX_SCALE = SHMath::Max(scale.x, scale.z); + return relativeRadius * MAX_SCALE * 0.5f; + } + + float SHCapsule::GetRelativeRadius() const noexcept + { + return relativeRadius; + } + + float SHCapsule::GetWorldHeight() const noexcept + { + if (rp3dCollider) + return dynamic_cast(rp3dCollider->getCollisionShape())->getHeight(); + + return relativeHeight * scale.y; + } + + float SHCapsule::GetRelativeHeight() const noexcept + { + return relativeHeight; + } + + SHVec3 SHCapsule::GetWorldCentroid() const noexcept + { + const SHQuaternion ROTATION = collider->GetTransform().orientation * SHQuaternion::FromEuler(rotationOffset); + const SHMatrix TRS = SHMatrix::Rotate(ROTATION) * SHMatrix::Translate(collider->GetTransform().position); + return SHVec3::Transform(positionOffset, TRS); + } + + /*-----------------------------------------------------------------------------------*/ + /* Setter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHCapsule::SetWorldRadius(float newWorldRadius) noexcept + { + if (rp3dCollider) + dynamic_cast(rp3dCollider->getCollisionShape())->setRadius(newWorldRadius); + + // Recompute Relative radius + const float MAX_SCALE = SHMath::Max(scale.x, scale.z); + relativeRadius = 2.0f * newWorldRadius / MAX_SCALE; + } + + void SHCapsule::SetRelativeRadius(float newRelativeRadius) noexcept + { + relativeRadius = newRelativeRadius; + + // Recompute world radius + if (rp3dCollider) + { + auto* rp3dCapsule = dynamic_cast(rp3dCollider->getCollisionShape()); + + const float MAX_SCALE = SHMath::Max(scale.x, scale.z); + rp3dCapsule->setRadius(relativeRadius * MAX_SCALE * 0.5f); + } + } + + void SHCapsule::SetWorldHeight(float newWorldHeight) noexcept + { + if (rp3dCollider) + dynamic_cast(rp3dCollider->getCollisionShape())->setHeight(newWorldHeight); + + relativeHeight = newWorldHeight / scale.y; + } + + void SHCapsule::SetRelativeHeight(float newRelativeHeight) noexcept + { + relativeHeight = newRelativeHeight; + + if (rp3dCollider) + dynamic_cast(rp3dCollider->getCollisionShape())->setHeight(relativeHeight * scale.y); + } + + void SHCapsule::SetScale(const SHVec3& newScale) noexcept + { + scale = SHVec3::Abs(newScale); + + // Recompute world radius & Height + if (rp3dCollider) + { + // Get max scale component + const float MAX_SCALE = SHMath::Max(scale.x, scale.z); + + auto* rp3dCapsule = dynamic_cast(rp3dCollider->getCollisionShape()); + rp3dCapsule->setRadius(relativeRadius * MAX_SCALE * 0.5f); + rp3dCapsule->setHeight(relativeHeight * scale.y); + } + } + + /*-----------------------------------------------------------------------------------*/ + /* Public Member Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHCapsule::Update() noexcept + { + const SHTransform& PARENT_TRANSFORM = collider->GetTransform(); + SetScale(PARENT_TRANSFORM.scale); + + SHCollisionShape::Update(); + } + + SHMatrix SHCapsule::GetTRS() const noexcept + { + // The scale of a Capsule would probably be the radius set in the x and z axis, with the height set in the y axis. + // Arbitrary for debug drawing as we specify the position, rotation, height and radius instead. + + const SHQuaternion ROTATION = collider->GetTransform().orientation * SHQuaternion::FromEuler(rotationOffset); + const SHVec3 SCALE = SHVec3{ GetWorldRadius(), GetWorldHeight(), GetWorldRadius() }; + + const SHMatrix TRS = SHMatrix::Rotate(ROTATION) * SHMatrix::Translate(collider->GetTransform().position); + const SHVec3 POSITION = SHVec3::Transform(positionOffset, TRS); + + return SHMatrix::Transform(POSITION, ROTATION, SCALE); + } +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/Shapes/SHCapsule.h b/SHADE_Engine/src/Physics/Collision/Shapes/SHCapsule.h new file mode 100644 index 00000000..06d5fffb --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/Shapes/SHCapsule.h @@ -0,0 +1,82 @@ +/**************************************************************************************** + * \file SHCapsule.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for a Capsule Collision Shape. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +// Project Headers +#include "SHCollisionShape.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + + /** + * @brief + * Encapsulate a Capsule Shape used for Physics Simulations. + */ + class SH_API SHCapsule final : public SHCollisionShape + { + private: + /*---------------------------------------------------------------------------------*/ + /* Friends */ + /*---------------------------------------------------------------------------------*/ + + friend class SHColliderComponent; + + public: + /*---------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*---------------------------------------------------------------------------------*/ + + SHCapsule () noexcept; + ~SHCapsule () override = default; + + /*---------------------------------------------------------------------------------*/ + /* Getter Functions */ + /*---------------------------------------------------------------------------------*/ + + [[nodiscard]] float GetWorldRadius () const noexcept; + [[nodiscard]] float GetRelativeRadius () const noexcept; + [[nodiscard]] float GetWorldHeight () const noexcept; + [[nodiscard]] float GetRelativeHeight () const noexcept; + + [[nodiscard]] SHVec3 GetWorldCentroid () const noexcept override; + + /*---------------------------------------------------------------------------------*/ + /* Setter Functions */ + /*---------------------------------------------------------------------------------*/ + + void SetWorldRadius (float newWorldRadius) noexcept; + void SetRelativeRadius (float newRelativeRadius) noexcept; + void SetWorldHeight (float newWorldHeight) noexcept; + void SetRelativeHeight (float newRelativeHeight) noexcept; + void SetScale (const SHVec3& newScale) noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Function Members */ + /*---------------------------------------------------------------------------------*/ + + void Update () noexcept override; + [[nodiscard]] SHMatrix GetTRS () const noexcept override; + + private: + /*---------------------------------------------------------------------------------*/ + /* Data Members */ + /*---------------------------------------------------------------------------------*/ + + float relativeRadius; + float relativeHeight; + SHVec3 scale; + }; + + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/Shapes/SHCollisionShape.cpp b/SHADE_Engine/src/Physics/Collision/Shapes/SHCollisionShape.cpp index bd67d42f..7cd8bd4d 100644 --- a/SHADE_Engine/src/Physics/Collision/Shapes/SHCollisionShape.cpp +++ b/SHADE_Engine/src/Physics/Collision/Shapes/SHCollisionShape.cpp @@ -237,9 +237,9 @@ RTTR_REGISTRATION registration::enumeration("Collider Type") ( + value("Sphere", SHCollisionShape::Type::SPHERE), value("Box", SHCollisionShape::Type::BOX), - value("Sphere", SHCollisionShape::Type::SPHERE) - // TODO(Diren): Add More Shapes + value("Capsule", SHCollisionShape::Type::CAPSULE) ); registration::class_("Collider") diff --git a/SHADE_Engine/src/Physics/Collision/Shapes/SHCollisionShape.h b/SHADE_Engine/src/Physics/Collision/Shapes/SHCollisionShape.h index 8c5fdc22..c7fb7156 100644 --- a/SHADE_Engine/src/Physics/Collision/Shapes/SHCollisionShape.h +++ b/SHADE_Engine/src/Physics/Collision/Shapes/SHCollisionShape.h @@ -53,6 +53,7 @@ namespace SHADE { SPHERE , BOX + , CAPSULE , COUNT , INVALID = -1 diff --git a/SHADE_Engine/src/Physics/Interface/PhysicsObject/SHPhysicsObjectManager.cpp b/SHADE_Engine/src/Physics/Interface/PhysicsObject/SHPhysicsObjectManager.cpp index b22741e9..4043d88d 100644 --- a/SHADE_Engine/src/Physics/Interface/PhysicsObject/SHPhysicsObjectManager.cpp +++ b/SHADE_Engine/src/Physics/Interface/PhysicsObject/SHPhysicsObjectManager.cpp @@ -18,6 +18,7 @@ #include "Physics/Collision/CollisionTags/SHCollisionTagMatrix.h" #include "Physics/Collision/Shapes/SHSphere.h" #include "Physics/Collision/Shapes/SHBox.h" +#include "Physics/Collision/Shapes/SHCapsule.h" #include "Physics/Interface/SHColliderComponent.h" #include "Physics/Interface/SHRigidBodyComponent.h" #include "Tools/Utilities/SHUtilities.h" @@ -228,7 +229,7 @@ namespace SHADE { SHColliderDef::ShapeDef shapeDef { - .type = shape->GetType() + .type = shape->GetType() }; colliderDef.shapes.emplace_back(shapeDef); @@ -297,6 +298,7 @@ namespace SHADE rigidBodyComponent->SetInterpolate (rigidBodyComponent->IsInterpolating()); rigidBodyComponent->SetDrag (rigidBodyComponent->GetDrag()); rigidBodyComponent->SetAngularDrag (rigidBodyComponent->GetAngularDrag()); + rigidBodyComponent->SetGravityScale (rigidBodyComponent->GetGravityScale()); rigidBodyQueue.pop(); } @@ -367,6 +369,22 @@ namespace SHADE break; } + case SHCollisionShape::Type::CAPSULE: + { + auto* capsuleShape = dynamic_cast(collisionShape); + + const float MAX_SCALE = SHMath::Max({ colliderComponent->transform.scale.x, colliderComponent->transform.scale.y, colliderComponent->transform.scale.z }); + const float WORLD_RADIUS = capsuleShape->GetRelativeRadius() * MAX_SCALE * 0.5f; + const float WORLD_HEIGHT = capsuleShape->GetRelativeHeight() * colliderComponent->transform.scale.y; + + rp3d::CapsuleShape* rp3dCapsule = factory->createCapsuleShape(WORLD_RADIUS, WORLD_HEIGHT); + + const rp3d::Transform OFFSETS{ capsuleShape->GetPositionOffset(), SHQuaternion::FromEuler(capsuleShape->GetRotationOffset()) }; + capsuleShape->rp3dCollider = physicsObject->body->addCollider(rp3dCapsule, OFFSETS); + capsuleShape->rp3dCollider->setIsTrigger(capsuleShape->IsTrigger()); + + break; + } default: break; } diff --git a/SHADE_Engine/src/Physics/Interface/SHColliderComponent.cpp b/SHADE_Engine/src/Physics/Interface/SHColliderComponent.cpp index 895f57d0..9cefe40e 100644 --- a/SHADE_Engine/src/Physics/Interface/SHColliderComponent.cpp +++ b/SHADE_Engine/src/Physics/Interface/SHColliderComponent.cpp @@ -20,6 +20,7 @@ #include "Physics/SHPhysicsEvents.h" #include "Physics/Collision/Shapes/SHSphere.h" #include "Physics/Collision/Shapes/SHBox.h" +#include "Physics/Collision/Shapes/SHCapsule.h" namespace SHADE { @@ -232,6 +233,49 @@ namespace SHADE return static_cast(NEW_INDEX); } + int SHColliderComponent::AddCapsuleCollisionShape(float relativeRadius, float relativeHeight, const SHVec3& posOffset, const SHVec3& rotOffset) + { + const uint32_t NEW_INDEX = static_cast(shapes.size()); + + // Create collision shape + shapes.emplace_back(new SHCapsule{}); + auto* newCapsule = dynamic_cast(shapes.back()); + + newCapsule->collider = this; + newCapsule->positionOffset = posOffset; + newCapsule->rotationOffset = rotOffset; + newCapsule->relativeRadius = relativeRadius; + newCapsule->relativeHeight = relativeHeight; + newCapsule->scale = SHVec3::Abs(transform.scale); + + // Broadcast Event for adding a shape + const SHPhysicsColliderAddedEvent EVENT_DATA + { + .entityID = GetEID() + , .colliderType = SHCollisionShape::Type::CAPSULE + , .colliderIndex = static_cast(NEW_INDEX) + }; + + SHEventManager::BroadcastEvent(EVENT_DATA, SH_PHYSICS_COLLIDER_ADDED_EVENT); + + if (factory) + { + const float MAX_SCALE = SHMath::Max(newCapsule->scale.x, newCapsule->scale.z); + const float WORLD_RADIUS = relativeRadius * MAX_SCALE * 0.5f; + const float WORLD_HEIGHT = relativeHeight * newCapsule->scale.y; + + rp3d::CapsuleShape* rp3dCapsule = factory->createCapsuleShape(WORLD_RADIUS, WORLD_HEIGHT); + + const rp3d::Transform OFFSETS{ posOffset, SHQuaternion::FromEuler(rotOffset) }; + newCapsule->rp3dCollider = collisionBody->addCollider(rp3dCapsule, OFFSETS); + + dynamic_cast(collisionBody)->updateMassPropertiesFromColliders(); + } + + return static_cast(NEW_INDEX); + } + + void SHColliderComponent::RemoveCollisionShape(int index) { const int NUM_SHAPES = static_cast(shapes.size()); diff --git a/SHADE_Engine/src/Physics/Interface/SHColliderComponent.h b/SHADE_Engine/src/Physics/Interface/SHColliderComponent.h index 9a141964..1ec534cb 100644 --- a/SHADE_Engine/src/Physics/Interface/SHColliderComponent.h +++ b/SHADE_Engine/src/Physics/Interface/SHColliderComponent.h @@ -142,6 +142,24 @@ namespace SHADE */ int AddBoxCollisionShape (const SHVec3& relativeExtents, const SHVec3& posOffset = SHVec3::Zero, const SHVec3& rotOffset = SHVec3::Zero); + /** + * @brief + * Adds a capsule collision shape. + * @param relativeRadius + * The relative radius is constructed with respect to the world scale.
+ * Radius = max(scale.x, scale.y, scale.z) * 0.5 * relativeRadius + * @param relativeHeight + * The relative height is constructed with respect to the scale in the y-axis
+ * Height = relativeHeight * scale.y + * @param posOffset + * The position offset of the box from the center of the collider. Defaults to a Zero Vector. + * @param rotOffset + * The rotation offset of the box from the rotation of the collider. Defaults to a Zero Vector. + * @return + * The index of the newly added shape. + */ + int AddCapsuleCollisionShape (float relativeRadius, float relativeHeight, const SHVec3& posOffset = SHVec3::Zero, const SHVec3& rotOffset = SHVec3::Zero); + /** * @brief * Removes a shape from the container. Removal reduces the size of the container. diff --git a/SHADE_Engine/src/Physics/Interface/SHRigidBodyComponent.cpp b/SHADE_Engine/src/Physics/Interface/SHRigidBodyComponent.cpp index ee4db90d..85c798db 100644 --- a/SHADE_Engine/src/Physics/Interface/SHRigidBodyComponent.cpp +++ b/SHADE_Engine/src/Physics/Interface/SHRigidBodyComponent.cpp @@ -114,6 +114,11 @@ namespace SHADE return angularDrag; } + float SHRigidBodyComponent::GetGravityScale() const noexcept + { + return gravityScale; + } + SHVec3 SHRigidBodyComponent::GetForce() const noexcept { return rigidBody ? SHVec3{ rigidBody->getForce() } : SHVec3::Zero; @@ -297,6 +302,15 @@ namespace SHADE rigidBody->setAngularDamping(newAngularDrag); } + void SHRigidBodyComponent::SetGravityScale(float newGravityScale) noexcept + { + gravityScale = newGravityScale; + + if (rigidBody) + rigidBody->setGravityScale(newGravityScale); + } + + void SHRigidBodyComponent::SetLinearVelocity(const SHVec3& newLinearVelocity) noexcept { if (type == Type::STATIC) @@ -408,6 +422,7 @@ RTTR_REGISTRATION .property("Type" , &SHRigidBodyComponent::GetType , &SHRigidBodyComponent::SetType ) .property("Drag" , &SHRigidBodyComponent::GetDrag , &SHRigidBodyComponent::SetDrag ) .property("Angular Drag" , &SHRigidBodyComponent::GetAngularDrag , &SHRigidBodyComponent::SetAngularDrag ) + .property("Gravity Scale" , &SHRigidBodyComponent::GetGravityScale , &SHRigidBodyComponent::SetGravityScale ) .property("Use Gravity" , &SHRigidBodyComponent::IsGravityEnabled , &SHRigidBodyComponent::SetGravityEnabled ) .property("Interpolate" , &SHRigidBodyComponent::IsInterpolating , &SHRigidBodyComponent::SetInterpolate ) .property("Sleeping Enabled" , &SHRigidBodyComponent::IsAllowedToSleep , &SHRigidBodyComponent::SetIsAllowedToSleep) diff --git a/SHADE_Engine/src/Physics/Interface/SHRigidBodyComponent.h b/SHADE_Engine/src/Physics/Interface/SHRigidBodyComponent.h index 6332d1e6..a1cbe786 100644 --- a/SHADE_Engine/src/Physics/Interface/SHRigidBodyComponent.h +++ b/SHADE_Engine/src/Physics/Interface/SHRigidBodyComponent.h @@ -93,6 +93,7 @@ namespace SHADE [[nodiscard]] float GetMass () const noexcept; [[nodiscard]] float GetDrag () const noexcept; [[nodiscard]] float GetAngularDrag () const noexcept; + [[nodiscard]] float GetGravityScale () const noexcept; [[nodiscard]] SHVec3 GetForce () const noexcept; [[nodiscard]] SHVec3 GetTorque () const noexcept; @@ -123,6 +124,7 @@ namespace SHADE void SetDrag (float newDrag) noexcept; void SetAngularDrag (float newAngularDrag) noexcept; + void SetGravityScale (float newGravityScale) noexcept; void SetLinearVelocity (const SHVec3& newLinearVelocity) noexcept; void SetAngularVelocity (const SHVec3& newAngularVelocity) noexcept; @@ -173,6 +175,7 @@ namespace SHADE // Used for storing serialised data uint8_t flags; // aZ aY aX lZ lY lX sleepEnabled gravity + float gravityScale; float drag; float angularDrag; diff --git a/SHADE_Engine/src/Physics/RP3DWrapper/SHPhysicsWorld.cpp b/SHADE_Engine/src/Physics/RP3DWrapper/SHPhysicsWorldState.cpp similarity index 98% rename from SHADE_Engine/src/Physics/RP3DWrapper/SHPhysicsWorld.cpp rename to SHADE_Engine/src/Physics/RP3DWrapper/SHPhysicsWorldState.cpp index 85e76702..82a9aa26 100644 --- a/SHADE_Engine/src/Physics/RP3DWrapper/SHPhysicsWorld.cpp +++ b/SHADE_Engine/src/Physics/RP3DWrapper/SHPhysicsWorldState.cpp @@ -11,7 +11,7 @@ #include // Primary Header -#include "SHPhysicsWorld.h" +#include "SHPhysicsWorldState.h" namespace SHADE { diff --git a/SHADE_Engine/src/Physics/RP3DWrapper/SHPhysicsWorld.h b/SHADE_Engine/src/Physics/RP3DWrapper/SHPhysicsWorldState.h similarity index 89% rename from SHADE_Engine/src/Physics/RP3DWrapper/SHPhysicsWorld.h rename to SHADE_Engine/src/Physics/RP3DWrapper/SHPhysicsWorldState.h index 09a2b260..40483a8c 100644 --- a/SHADE_Engine/src/Physics/RP3DWrapper/SHPhysicsWorld.h +++ b/SHADE_Engine/src/Physics/RP3DWrapper/SHPhysicsWorldState.h @@ -1,7 +1,7 @@ /**************************************************************************************** - * \file SHPhysicsWorld.h + * \file SHPhysicsWorldState.h * \author Diren D Bharwani, diren.dbharwani, 390002520 - * \brief Interface for a Physics World. + * \brief Interface for a Physics World State. * * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or * disclosure of this file or its contents without the prior written consent @@ -14,6 +14,7 @@ // Project Headers #include "Math/Vector/SHVec3.h" +#include "Physics/SHPhysicsConstants.h" namespace SHADE { @@ -37,8 +38,8 @@ namespace SHADE /*-------------------------------------------------------------------------------*/ SHVec3 gravity = SHVec3{ 0.0f, -9.81f, 0.0f }; - uint16_t numVelocitySolverIterations = 10; - uint16_t numPositionSolverIterations = 5; + uint16_t numVelocitySolverIterations = SHPhysicsConstants::DEFAULT_VELOCITY_ITERATIONS; + uint16_t numPositionSolverIterations = SHPhysicsConstants::DEFAULT_POSITION_ITERATIONS; bool sleepingEnabled = true; }; diff --git a/SHADE_Engine/src/Physics/SHPhysicsConstants.h b/SHADE_Engine/src/Physics/SHPhysicsConstants.h new file mode 100644 index 00000000..072c7755 --- /dev/null +++ b/SHADE_Engine/src/Physics/SHPhysicsConstants.h @@ -0,0 +1,23 @@ +/**************************************************************************************** + * \file SHPhysicsConstants.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Declaration of Constants used for physics simulations + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +namespace SHADE +{ + struct SHPhysicsConstants + { + static constexpr double DEFAULT_FIXED_DT = 1.0 / 60.0; + static constexpr double DEFAULT_FIXED_UPDATE_RATE = 60.0; + + static constexpr int DEFAULT_VELOCITY_ITERATIONS = 10; + static constexpr int DEFAULT_POSITION_ITERATIONS = 5; + }; +} diff --git a/SHADE_Engine/src/Physics/System/Routines/SHPhysicsPostUpdateRoutine.cpp b/SHADE_Engine/src/Physics/System/Routines/SHPhysicsPostUpdateRoutine.cpp index 740df811..3dfe169a 100644 --- a/SHADE_Engine/src/Physics/System/Routines/SHPhysicsPostUpdateRoutine.cpp +++ b/SHADE_Engine/src/Physics/System/Routines/SHPhysicsPostUpdateRoutine.cpp @@ -105,14 +105,14 @@ namespace SHADE * TODO: Test if the scene graph transforms abides by setting world position. Collisions will ignore the scene graph hierarchy. */ } + + // Collision & Trigger messages + if (scriptingSystem != nullptr) + scriptingSystem->ExecuteCollisionFunctions(); + + // Since this function never runs when editor in not in play, execute the function anyway + physicsSystem->collisionListener.CleanContainers(); } - - // Collision & Trigger messages - if (scriptingSystem != nullptr) - scriptingSystem->ExecuteCollisionFunctions(); - - // Since this function never runs when editor in not in play, execute the function anyway - physicsSystem->collisionListener.CleanContainers(); } } // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/System/Routines/SHPhysicsUpdateRoutine.cpp b/SHADE_Engine/src/Physics/System/Routines/SHPhysicsUpdateRoutine.cpp index d4f6d623..828f1eea 100644 --- a/SHADE_Engine/src/Physics/System/Routines/SHPhysicsUpdateRoutine.cpp +++ b/SHADE_Engine/src/Physics/System/Routines/SHPhysicsUpdateRoutine.cpp @@ -16,6 +16,7 @@ // Project Headers #include "ECS_Base/Managers/SHSystemManager.h" #include "Scripting/SHScriptEngine.h" +#include "Math/SHMath.h" namespace SHADE { @@ -42,6 +43,10 @@ namespace SHADE } const double FIXED_DT = physicsSystem->fixedDT; + + if (SHMath::CompareFloat(FIXED_DT, 0.0)) + return; + accumulatedTime += dt; int count = 0; diff --git a/SHADE_Engine/src/Physics/System/SHPhysicsDebugDrawSystem.cpp b/SHADE_Engine/src/Physics/System/SHPhysicsDebugDrawSystem.cpp index cff3933e..8fde0249 100644 --- a/SHADE_Engine/src/Physics/System/SHPhysicsDebugDrawSystem.cpp +++ b/SHADE_Engine/src/Physics/System/SHPhysicsDebugDrawSystem.cpp @@ -17,6 +17,7 @@ #include "ECS_Base/Managers/SHSystemManager.h" #include "Math/Transform/SHTransformComponent.h" #include "Physics/SHPhysicsEvents.h" +#include "Physics/Collision/Shapes/SHCapsule.h" #include "Tools/Utilities/SHUtilities.h" namespace SHADE @@ -88,11 +89,6 @@ namespace SHADE } - void SHPhysicsDebugDrawSystem::AddRaycast(const SHRay& ray, const SHPhysicsRaycastResult& result) noexcept - { - - } - /*-----------------------------------------------------------------------------------*/ /* Private Function Member Definitions */ /*-----------------------------------------------------------------------------------*/ @@ -139,10 +135,19 @@ namespace SHADE debugDrawSystem->DrawWireCube(SHAPE->GetTRS(), DRAW_COLOUR, true); break; } - //case SHCollisionShape::Type::CAPSULE: - //{ - // break; - //} + case SHCollisionShape::Type::CAPSULE: + { + + const auto* CAPSULE_SHAPE = dynamic_cast(SHAPE); + + SHVec3 position, scale; + SHQuaternion rotation; + SHAPE->GetTRS().Decompose(position, rotation, scale); + + debugDrawSystem->DrawWireCapsule(position, rotation, CAPSULE_SHAPE->GetWorldHeight(), CAPSULE_SHAPE->GetWorldRadius(), DRAW_COLOUR, true); + + break; + } default: break; } } diff --git a/SHADE_Engine/src/Physics/System/SHPhysicsDebugDrawSystem.h b/SHADE_Engine/src/Physics/System/SHPhysicsDebugDrawSystem.h index 8c2c9b78..252ff682 100644 --- a/SHADE_Engine/src/Physics/System/SHPhysicsDebugDrawSystem.h +++ b/SHADE_Engine/src/Physics/System/SHPhysicsDebugDrawSystem.h @@ -64,8 +64,6 @@ namespace SHADE void Init () override; void Exit () override; - void AddRaycast (const SHRay& ray, const SHPhysicsRaycastResult& result) noexcept; - /*---------------------------------------------------------------------------------*/ /* System Routines */ /*---------------------------------------------------------------------------------*/ @@ -119,13 +117,11 @@ namespace SHADE /* Data Members */ /*---------------------------------------------------------------------------------*/ - static constexpr uint8_t ACTIVE_FLAG = 0x01; + static constexpr uint8_t ACTIVE_FLAG = 0x01; + static const SHColour DEBUG_DRAW_COLOURS[static_cast(Colours::COUNT)]; - static const SHColour DEBUG_DRAW_COLOURS[static_cast(Colours::COUNT)]; - - // 0 0 0 drawBroadphase drawRaycasts drawContacts drawAllColliders debugDrawActive + // 0 0 0 0 drawRaycasts drawContacts drawAllColliders debugDrawActive uint8_t flags; - Colliders collidersToDraw; /*---------------------------------------------------------------------------------*/ @@ -133,9 +129,7 @@ namespace SHADE /*---------------------------------------------------------------------------------*/ SHEventHandle onColliderDraw(SHEventPtr onColliderDrawEvent); - - static void drawCollider (SHDebugDrawSystem* debugDrawSystem, const SHColliderComponent& collider) noexcept; - static void drawRaycast (SHDebugDrawSystem* debugDrawSystem, const DebugDrawInfo::Raycast& raycastInfo) noexcept; + static void drawCollider (SHDebugDrawSystem* debugDrawSystem, const SHColliderComponent& collider) noexcept; }; diff --git a/SHADE_Engine/src/Physics/System/SHPhysicsSystem.cpp b/SHADE_Engine/src/Physics/System/SHPhysicsSystem.cpp index 5468147a..787a9f78 100644 --- a/SHADE_Engine/src/Physics/System/SHPhysicsSystem.cpp +++ b/SHADE_Engine/src/Physics/System/SHPhysicsSystem.cpp @@ -34,7 +34,7 @@ namespace SHADE SHPhysicsSystem::SHPhysicsSystem() noexcept : worldUpdated { false } , interpolationFactor { 0.0 } - , fixedDT { DEFAULT_FIXED_STEP } + , fixedDT { SHPhysicsConstants::DEFAULT_FIXED_DT } { // Add more events here to register them @@ -73,6 +73,26 @@ namespace SHADE return collisionListener.GetTriggerInfoContainer(); } + const SHVec3& SHPhysicsSystem::GetGravity() const noexcept + { + return worldState.settings.gravity; + } + + uint16_t SHPhysicsSystem::GetNumVelocityIterations() const noexcept + { + return worldState.settings.numVelocitySolverIterations; + } + + uint16_t SHPhysicsSystem::GetNumPositionIterations() const noexcept + { + return worldState.settings.numPositionSolverIterations; + } + + bool SHPhysicsSystem::IsSleepingEnabled() const noexcept + { + return worldState.settings.sleepingEnabled; + } + /*-----------------------------------------------------------------------------------*/ /* Setter Function Definitions */ /*-----------------------------------------------------------------------------------*/ @@ -97,7 +117,7 @@ namespace SHADE void SHPhysicsSystem::SetFixedDT(double fixedDt) noexcept { - if (fixedDt <= 0.0) + if (fixedDt < 0.0) { SHLOGV_WARNING("Invalid value for setting fixed delta time! Fixed delta time unchanged.") return; @@ -112,6 +132,30 @@ namespace SHADE } } + void SHPhysicsSystem::SetGravity(const SHVec3& gravity) noexcept + { + worldState.settings.gravity = gravity; + worldState.UpdateSettings(); + } + + void SHPhysicsSystem::SetNumVelocityIterations(uint16_t value) noexcept + { + worldState.settings.numVelocitySolverIterations = value; + worldState.UpdateSettings(); + } + + void SHPhysicsSystem::SetNumPositionIterations(uint16_t value) noexcept + { + worldState.settings.numPositionSolverIterations = value; + worldState.UpdateSettings(); + } + + void SHPhysicsSystem::EnableSleeping(bool sleepingAllowed) noexcept + { + worldState.settings.sleepingEnabled = sleepingAllowed; + worldState.UpdateSettings(); + } + /*-----------------------------------------------------------------------------------*/ /* Public Function Member Definitions */ /*-----------------------------------------------------------------------------------*/ @@ -167,6 +211,159 @@ namespace SHADE return results; } + bool SHPhysicsSystem::TestAABBOverlap(const SHAABB& aabb, uint16_t layers) + { + if (!worldState.world) + { + SHLOG_ERROR("Cannot test AABB overlap without a physics world!") + return false; + } + + // Create a temporary collider to test against the world + auto* tempRP3DBody = worldState.world->createCollisionBody(rp3d::Transform { aabb.GetCenter(), SHQuaternion::Identity }); + auto* tempRP3DBox = factory.createBoxShape(aabb.GetExtents()); + auto* tempRP3DCollider = tempRP3DBody->addCollider(tempRP3DBox, rp3d::Transform{}); + tempRP3DCollider->setCollisionCategoryBits(layers); + tempRP3DCollider->setCollideWithMaskBits(layers); + + // Test the temp collider against the world + const bool IS_COLLIDING = worldState.world->testOverlap(tempRP3DBody); + + tempRP3DBody->removeCollider(tempRP3DCollider); + factory.destroyBoxShape(tempRP3DBox); + worldState.world->destroyCollisionBody(tempRP3DBody); + + return IS_COLLIDING; + } + + void SHPhysicsSystem::SimulateBody(std::vector& positions, std::vector& orientations, const SimulateBodyInfo& simInfo) + { + // Check for a valid rigidbody + const auto* rigidBody = SHComponentManager::GetComponent_s(simInfo.bodyEID); + if (!rigidBody) + { + SHLOG_WARNING("Entity {} does not have a rigid body to simulate!", simInfo.bodyEID) + return; + } + + // Ignore non-dynamic bodies + if (rigidBody->type != SHRigidBodyComponent::Type::DYNAMIC) + { + SHLOG_WARNING("Entity {} is not a dynamic body. We cannot simulate non-dynamic bodies!", simInfo.bodyEID) + return; + } + + // Prepare simulation info (I'm basically declaring an entire body here) + SHVec3 bodyPosition = rigidBody->GetPosition(); + SHQuaternion bodyOrientation = SHQuaternion::FromEuler(rigidBody->GetRotation()); + SHVec3 linearVelocity = rigidBody->GetLinearVelocity(); + SHVec3 angularVelocity = rigidBody->GetAngularVelocity(); + float invMass = 1.0f / rigidBody->GetMass(); + SHVec3 localInvInertia = rigidBody->rigidBody->getLocalInertiaTensor(); + SHVec3 worldInvInertia = SHVec3::One; + SHVec3 localCentroid = rigidBody->rigidBody->getLocalCenterOfMass(); + SHVec3 worldCentroid = SHVec3::One; + SHVec3 appliedForce = simInfo.force; + SHVec3 appliedTorque = simInfo.torque; + SHVec3 accumulatedForce = SHVec3::Zero; + SHVec3 accumulatedTorque = SHVec3::Zero; + + const SHVec3& LINEAR_LOCK = rigidBody->rigidBody->getLinearLockAxisFactor(); + const SHVec3& ANGULAR_LOCK = rigidBody->rigidBody->getAngularLockAxisFactor(); + + // Invert the inertia + for (size_t i = 0; i < SHVec3::SIZE; ++i) + localInvInertia[i] = 1.0f / localInvInertia[i]; + + + // Build raycast layer from colliders. If none exist....then this never stops simulating technically. + // I'm too lazy to handle that case, so I'll just throw an error. + uint16_t raycastLayers = 0; + if (const auto* colliders = SHComponentManager::GetComponent_s(simInfo.bodyEID); colliders) + { + const auto& shapes = colliders->GetCollisionShapes(); + for (auto& shape : shapes) + raycastLayers |= shape->GetCollisionTag().GetMask(); + } + else + { + SHLOG_WARNING("Unable to simulate body {} without a collider (it will simulate forever!)", simInfo.bodyEID) + return; + } + + // Raycast direction is always in the direction of the linear velocity + // Raycast distance is the length of the velocity + SHRaycaster::RaycastInfo raycastInfo; + raycastInfo.continuous = false; + raycastInfo.layers = raycastLayers; + + bool terminate = true; + do + { + raycastInfo.distance = linearVelocity.Length(); + raycastInfo.ray.position = bodyPosition; + raycastInfo.ray.direction = SHVec3::Normalise(linearVelocity); + + terminate = !Raycast(raycastInfo).empty(); + if (terminate) + break; + + // Compute world space data + const SHMatrix R = SHMatrix::Rotate(bodyOrientation); + const SHMatrix RT = SHMatrix::Transpose(R); + + SHMatrix localInertiaTensor = SHMatrix::Identity; + + // Set the diagonals + localInertiaTensor.m[0][0] = localInvInertia.x; + localInertiaTensor.m[1][1] = localInvInertia.y; + localInertiaTensor.m[2][2] = localInvInertia.z; + + localInertiaTensor *= RT; + const SHVec3 DIAGONALS { localInertiaTensor.m[0][0], localInertiaTensor.m[1][1], localInertiaTensor.m[2][2] }; + + worldInvInertia = R * DIAGONALS; + + // Compute world centroid + worldCentroid = (R * localCentroid) + bodyPosition; + + // Apply forces + accumulatedForce += appliedForce; + angularVelocity += worldInvInertia * SHVec3::Cross(bodyPosition + simInfo.forceOffset, simInfo.force); + accumulatedTorque += appliedTorque; + + // Integrate Velocities + // Integrate forces and gravity into linear velocity + const SHVec3 LINEAR_ACCELERATION = accumulatedForce * invMass; + const SHVec3 GRAVITATIONAL_ACCELERATION = rigidBody->IsGravityEnabled() ? worldState.settings.gravity * rigidBody->GetGravityScale() : SHVec3::Zero; + + linearVelocity += (LINEAR_ACCELERATION + GRAVITATIONAL_ACCELERATION) * simInfo.timeStep * LINEAR_LOCK; + angularVelocity += worldInvInertia * (accumulatedTorque * simInfo.timeStep); + + // Apply drag (exponentially applied) + linearVelocity *= 1.0f / (1.0f + simInfo.timeStep * rigidBody->drag); + angularVelocity *= 1.0f / (1.0f + simInfo.timeStep * rigidBody->angularDrag); + + // Integrate Positions & Orientations + const SHQuaternion QV = SHQuaternion{ angularVelocity.x * simInfo.timeStep, angularVelocity.y * simInfo.timeStep, angularVelocity.z * simInfo.timeStep, 0.0f } * 0.5f; + + bodyPosition += linearVelocity * simInfo.timeStep; + bodyOrientation += bodyOrientation * QV; + bodyOrientation = SHQuaternion::Normalise(bodyOrientation); + + // Clear forces after the first frame + if (!simInfo.continuousForce) + { + accumulatedForce = SHVec3::Zero; + accumulatedTorque = SHVec3::Zero; + appliedForce = SHVec3::Zero; + appliedTorque = SHVec3::Zero; + } + + positions.emplace_back(bodyPosition); + + } while (true); + } /*-----------------------------------------------------------------------------------*/ /* Private Function Member Definitions */ diff --git a/SHADE_Engine/src/Physics/System/SHPhysicsSystem.h b/SHADE_Engine/src/Physics/System/SHPhysicsSystem.h index c80e5d5c..d95203b9 100644 --- a/SHADE_Engine/src/Physics/System/SHPhysicsSystem.h +++ b/SHADE_Engine/src/Physics/System/SHPhysicsSystem.h @@ -18,9 +18,10 @@ // Project Headers #include "ECS_Base/System/SHSystemRoutine.h" #include "ECS_Base/System/SHFixedSystemRoutine.h" +#include "Math/Geometry/SHAABB.h" #include "Physics/Collision/SHCollisionInfo.h" #include "Physics/Interface/PhysicsObject/SHPhysicsObjectManager.h" -#include "Physics/RP3DWrapper/SHPhysicsWorld.h" +#include "Physics/RP3DWrapper/SHPhysicsWorldState.h" #include "Physics/RP3DWrapper/SHCollisionListener.h" #include "Physics/RP3DWrapper/SHRaycaster.h" #include "Scene/SHSceneGraph.h" @@ -43,31 +44,63 @@ namespace SHADE friend class SHRaycaster; public: - + /*---------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*---------------------------------------------------------------------------------*/ + + /** + * @brief + * Used to simulate the motion of a rigid body until it hits something. + */ + struct SimulateBodyInfo + { + EntityID bodyEID = MAX_EID; + + SHVec3 force = SHVec3::Zero; + SHVec3 forceOffset = SHVec3::Zero; + SHVec3 torque = SHVec3::Zero; + + // Whether or not to clear the force after the first iteration + bool continuousForce = false; + float timeStep = static_cast(SHPhysicsConstants::DEFAULT_FIXED_DT); + }; + /*---------------------------------------------------------------------------------*/ /* Constructors & Destructor */ /*---------------------------------------------------------------------------------*/ SHPhysicsSystem () noexcept; - ~SHPhysicsSystem() noexcept; + ~SHPhysicsSystem() noexcept override; /*---------------------------------------------------------------------------------*/ /* Getter Functions */ /*---------------------------------------------------------------------------------*/ - [[nodiscard]] double GetFixedUpdateRate () const noexcept; - [[nodiscard]] double GetFixedDT () const noexcept; + [[nodiscard]] double GetFixedUpdateRate () const noexcept; + [[nodiscard]] double GetFixedDT () const noexcept; - [[nodiscard]] const std::vector& GetAllTriggerInfo () const noexcept; - [[nodiscard]] const std::vector& GetAllCollisionInfo () const noexcept; + [[nodiscard]] const std::vector& GetAllTriggerInfo () const noexcept; + [[nodiscard]] const std::vector& GetAllCollisionInfo () const noexcept; + + // World Settings + [[nodiscard]] const SHVec3& GetGravity () const noexcept; + [[nodiscard]] uint16_t GetNumVelocityIterations () const noexcept; + [[nodiscard]] uint16_t GetNumPositionIterations () const noexcept; + [[nodiscard]] bool IsSleepingEnabled () const noexcept; /*---------------------------------------------------------------------------------*/ /* Setter Functions */ /*---------------------------------------------------------------------------------*/ - void SetFixedUpdateRate (double fixedUpdateRate) noexcept; - void SetFixedDT (double fixedDt) noexcept; + void SetFixedUpdateRate (double fixedUpdateRate) noexcept; + void SetFixedDT (double fixedDt) noexcept; + + void SetGravity (const SHVec3& gravity) noexcept; + void SetNumVelocityIterations (uint16_t value) noexcept; + void SetNumPositionIterations (uint16_t value) noexcept; + void EnableSleeping (bool sleepingAllowed) noexcept; + /*---------------------------------------------------------------------------------*/ /* Function Members */ /*---------------------------------------------------------------------------------*/ @@ -91,6 +124,30 @@ namespace SHADE */ [[nodiscard]] const std::vector& Raycast(const SHRaycaster::RaycastInfo& info) noexcept; + /** + * \brief + * Tests if an AABB overlaps with anything in the scene. + * \param aabb + * The AABB to test. + * \param layers + * The layer(s) to test the overlap on. Defaults to all layers. + * \return + * True if there is any overlap. + */ + [[nodiscard]] bool TestAABBOverlap(const SHAABB& aabb, uint16_t layers = static_cast(SHCollisionTag::Layer::ALL)); + + /** + * @brief + * Simulates the motion of a body until it collides with something. + * @param positions + * The output vector for the position of the body in each timestep. + * @param orientations + * The output vector for the orientations of the body in each timestep. + * @param simInfo + * The information for simulating the body. + */ + void SimulateBody(std::vector& positions, std::vector& orientations, const SimulateBodyInfo& simInfo); + /*---------------------------------------------------------------------------------*/ /* System Routines */ /*---------------------------------------------------------------------------------*/ diff --git a/SHADE_Engine/src/Physics/System/SHPhysicsSystemInterface.cpp b/SHADE_Engine/src/Physics/System/SHPhysicsSystemInterface.cpp index f1326bed..db8cad4e 100644 --- a/SHADE_Engine/src/Physics/System/SHPhysicsSystemInterface.cpp +++ b/SHADE_Engine/src/Physics/System/SHPhysicsSystemInterface.cpp @@ -60,6 +60,8 @@ namespace SHADE return 0.0; } + + int SHPhysicsSystemInterface::GetFixedUpdateRate() noexcept { auto* physicsSystem = SHSystemManager::GetSystem(); @@ -70,6 +72,100 @@ namespace SHADE return 0.0; } + SHVec3 SHPhysicsSystemInterface::GetGravity() noexcept + { + auto* physicsSystem = SHSystemManager::GetSystem(); + if (physicsSystem) + return physicsSystem->GetGravity(); + + SHLOGV_WARNING("Failed to get gravity. Zero Vec3 returned instead."); + return SHVec3::Zero; + } + + uint16_t SHPhysicsSystemInterface::GetNumVelocityIterations() noexcept + { + auto* physicsSystem = SHSystemManager::GetSystem(); + if (physicsSystem) + return physicsSystem->GetNumVelocityIterations(); + + SHLOGV_WARNING("Failed to get number of velocity iterations. 0 returned instead."); + return 0; + } + + uint16_t SHPhysicsSystemInterface::GetNumPositionIterations() noexcept + { + auto* physicsSystem = SHSystemManager::GetSystem(); + if (physicsSystem) + return physicsSystem->GetNumPositionIterations(); + + SHLOGV_WARNING("Failed to get number of position iterations. 0 returned instead."); + return 0; + } + + bool SHPhysicsSystemInterface::IsSleepingEnabled() noexcept + { + auto* physicsSystem = SHSystemManager::GetSystem(); + if (physicsSystem) + return physicsSystem->IsSleepingEnabled(); + + SHLOGV_WARNING("Failed to check if sleeping is enabled. False returned instead."); + return false; + } + + void SHPhysicsSystemInterface::SetFixedDT(double fixedDT) noexcept + { + auto* physicsSystem = SHSystemManager::GetSystem(); + if (physicsSystem) + physicsSystem->SetFixedDT(fixedDT); + + SHLOGV_WARNING("Failed to set fixed delta time."); + } + + void SHPhysicsSystemInterface::SetFixedUpdateRate(double fixedUpdateRate) noexcept + { + auto* physicsSystem = SHSystemManager::GetSystem(); + if (physicsSystem) + return physicsSystem->SetFixedUpdateRate(fixedUpdateRate); + + SHLOGV_WARNING("Failed to set fixed update rate."); + } + + void SHPhysicsSystemInterface::SetGravity(const SHVec3& gravity) noexcept + { + auto* physicsSystem = SHSystemManager::GetSystem(); + if (physicsSystem) + return physicsSystem->SetGravity(gravity); + + SHLOGV_WARNING("Failed to set gravity."); + } + + void SHPhysicsSystemInterface::SetNumVelocityIterations(uint16_t value) noexcept + { + auto* physicsSystem = SHSystemManager::GetSystem(); + if (physicsSystem) + return physicsSystem->SetNumVelocityIterations(value); + + SHLOGV_WARNING("Failed to set number of velocity iterations."); + } + + void SHPhysicsSystemInterface::SetNumPositionIterations(uint16_t value) noexcept + { + auto* physicsSystem = SHSystemManager::GetSystem(); + if (physicsSystem) + return physicsSystem->SetNumPositionIterations(value); + + SHLOGV_WARNING("Failed to set number of position iterations."); + } + + void SHPhysicsSystemInterface::EnableSleeping(bool sleepingAllowed) noexcept + { + auto* physicsSystem = SHSystemManager::GetSystem(); + if (physicsSystem) + return physicsSystem->EnableSleeping(sleepingAllowed); + + SHLOGV_WARNING("Failed to set global sleeping state."); + } + const std::vector& SHPhysicsSystemInterface::Raycast(const RaycastInfo& info) noexcept { static std::vector emptyVec; diff --git a/SHADE_Engine/src/Physics/System/SHPhysicsSystemInterface.h b/SHADE_Engine/src/Physics/System/SHPhysicsSystemInterface.h index 8815e674..5867f0c2 100644 --- a/SHADE_Engine/src/Physics/System/SHPhysicsSystemInterface.h +++ b/SHADE_Engine/src/Physics/System/SHPhysicsSystemInterface.h @@ -90,11 +90,23 @@ namespace SHADE /* Static Usage Functions */ /*---------------------------------------------------------------------------------*/ - [[nodiscard]] static const std::vector& GetCollisionInfo () noexcept; - [[nodiscard]] static const std::vector& GetTriggerInfo () noexcept; - [[nodiscard]] static double GetFixedDT () noexcept; - [[nodiscard]] static int GetFixedUpdateRate () noexcept; - [[nodiscard]] static const std::vector& Raycast (const RaycastInfo& info) noexcept; + [[nodiscard]] static const std::vector& GetCollisionInfo () noexcept; + [[nodiscard]] static const std::vector& GetTriggerInfo () noexcept; + [[nodiscard]] static double GetFixedDT () noexcept; + [[nodiscard]] static int GetFixedUpdateRate () noexcept; + [[nodiscard]] static SHVec3 GetGravity () noexcept; + [[nodiscard]] static uint16_t GetNumVelocityIterations () noexcept; + [[nodiscard]] static uint16_t GetNumPositionIterations () noexcept; + [[nodiscard]] static bool IsSleepingEnabled () noexcept; + + static void SetFixedDT (double fixedDT) noexcept; + static void SetFixedUpdateRate (double fixedUpdateRate) noexcept; + static void SetGravity (const SHVec3& gravity) noexcept; + static void SetNumVelocityIterations (uint16_t value) noexcept; + static void SetNumPositionIterations (uint16_t value) noexcept; + static void EnableSleeping (bool sleepingAllowed) noexcept; + + [[nodiscard]] static const std::vector& Raycast (const RaycastInfo& info) noexcept; }; } diff --git a/SHADE_Engine/src/Serialization/SHSerialization.cpp b/SHADE_Engine/src/Serialization/SHSerialization.cpp index 13f5e36e..b6455935 100644 --- a/SHADE_Engine/src/Serialization/SHSerialization.cpp +++ b/SHADE_Engine/src/Serialization/SHSerialization.cpp @@ -247,6 +247,7 @@ namespace SHADE AddComponentToComponentNode(components, eid); AddComponentToComponentNode(components, eid); AddComponentToComponentNode(components, eid); + AddComponentToComponentNode(components, eid); node[ComponentsNode] = components; @@ -308,6 +309,7 @@ namespace SHADE AddComponentID(componentIDList, componentsNode); AddComponentID(componentIDList, componentsNode); AddComponentID(componentIDList, componentsNode); + AddComponentID(componentIDList, componentsNode); return componentIDList; } @@ -395,5 +397,6 @@ namespace SHADE SHSerializationHelper::InitializeComponentFromNode(componentsNode, eid); SHSerializationHelper::InitializeComponentFromNode(componentsNode, eid); SHSerializationHelper::InitializeComponentFromNode(componentsNode, eid); + SHSerializationHelper::InitializeComponentFromNode(componentsNode, eid); } } diff --git a/SHADE_Engine/src/Serialization/SHSerializationHelper.hpp b/SHADE_Engine/src/Serialization/SHSerializationHelper.hpp index a4936528..35e27132 100644 --- a/SHADE_Engine/src/Serialization/SHSerializationHelper.hpp +++ b/SHADE_Engine/src/Serialization/SHSerializationHelper.hpp @@ -207,10 +207,10 @@ namespace SHADE if constexpr (YAML::HasYAMLConv()) { auto component = SHComponentManager::GetComponent_s(eid); - if (componentsNode.IsNull() || !component) + if (!component) return false; auto componentNode = GetComponentNode(componentsNode, eid); - if (componentNode.IsNull() || !componentNode.IsDefined()) + if (!componentNode.IsDefined()) return false; if (componentNode[IsActive.data()].IsDefined()) component->isActive = componentNode[IsActive.data()].as(); @@ -220,7 +220,7 @@ namespace SHADE else { ComponentType* component = SHComponentManager::GetComponent_s(eid); - if (componentsNode.IsNull() && !component) + if (!component) return false; auto rttrType = rttr::type::get(); auto componentNode = componentsNode[rttrType.get_name().data()]; diff --git a/SHADE_Engine/src/Serialization/SHYAMLConverters.h b/SHADE_Engine/src/Serialization/SHYAMLConverters.h index 9fceb10d..b1ae92e0 100644 --- a/SHADE_Engine/src/Serialization/SHYAMLConverters.h +++ b/SHADE_Engine/src/Serialization/SHYAMLConverters.h @@ -15,6 +15,8 @@ #include "Graphics/MiddleEnd/TextRendering/SHFont.h" #include "Animation/SHAnimatorComponent.h" #include "Physics/Collision/CollisionTags/SHCollisionTagMatrix.h" +#include "Graphics/MiddleEnd/TrajectoryRendering/SHTrajectoryRenderableComponent.h" +#include "Physics/Collision/Shapes/SHCapsule.h" namespace YAML { @@ -31,6 +33,8 @@ namespace YAML struct HasYAMLConv : std::true_type {}; template<> struct HasYAMLConv : std::true_type {}; + template<> + struct HasYAMLConv : std::true_type {}; template<> struct convert @@ -124,6 +128,7 @@ namespace YAML static constexpr const char* Type = "Type"; static constexpr const char* HalfExtents = "Half Extents"; static constexpr const char* Radius = "Radius"; + static constexpr const char* Height = "Height"; static constexpr const char* Friction = "Friction"; static constexpr const char* Bounciness = "Bounciness"; @@ -158,7 +163,13 @@ namespace YAML node[Radius] = SPHERE_SHAPE.GetRelativeRadius(); } break; - //case SHCollisionShape::Type::CAPSULE: break; + case SHCollisionShape::Type::CAPSULE: + { + const auto& CAPSULE_SHAPE = dynamic_cast(rhs); + node[Radius] = CAPSULE_SHAPE.GetRelativeRadius(); + node[Height] = CAPSULE_SHAPE.GetRelativeHeight(); + } + break; default:; } @@ -200,7 +211,17 @@ namespace YAML dynamic_cast(rhs).SetRelativeRadius(node[Radius].as()); } break; - //case SHCollisionShape::Type::CAPSULE: break; + case SHCollisionShape::Type::CAPSULE: + { + auto& capsule = dynamic_cast(rhs); + + if (node[Radius].IsDefined()) + capsule.SetRelativeRadius(node[Radius].as()); + + if (node[Height].IsDefined()) + capsule.SetRelativeHeight(node[Height].as()); + } + break; default:; } if (node[Friction].IsDefined()) @@ -255,7 +276,7 @@ namespace YAML { case SHCollisionShape::Type::BOX: rhs.AddBoxCollisionShape(SHVec3::One); break; case SHCollisionShape::Type::SPHERE: rhs.AddSphereCollisionShape(1.0f); break; - //case SHCollisionShape::Type::CAPSULE: break; + case SHCollisionShape::Type::CAPSULE: rhs.AddCapsuleCollisionShape(1.0f, 2.0f); break; default:; } YAML::convert::decode(colliderNode, rhs.GetCollisionShape(numColliders++)); @@ -353,12 +374,15 @@ namespace YAML { static constexpr std::string_view TEXT_YAML_TAG = "Text"; static constexpr std::string_view FONT_YAML_TAG = "Font"; + static constexpr std::string_view COLOR_YAML_TAG = "Color"; + static constexpr std::string_view TEXT_SIZE_YAML_TAG = "Text Size"; static YAML::Node encode(SHTextRenderableComponent const& rhs) { YAML::Node node; node[TEXT_YAML_TAG.data()] = rhs.GetText(); auto font = rhs.GetFont(); + SHColour const& textColor = rhs.GetColor(); if (font) { node[FONT_YAML_TAG.data()] = SHResourceManager::GetAssetID(rhs.GetFont()).value_or(0); @@ -367,6 +391,8 @@ namespace YAML { node[FONT_YAML_TAG.data()] = 0; } + node[COLOR_YAML_TAG.data()] = SHVec4(textColor); + node[TEXT_SIZE_YAML_TAG.data()] = rhs.GetTextSize(); return node; } static bool decode(YAML::Node const& node, SHTextRenderableComponent& rhs) @@ -385,11 +411,19 @@ namespace YAML rhs.SetFont(SHResourceManager::LoadOrGet(node[FONT_YAML_TAG.data()].as())); } + if (node[COLOR_YAML_TAG.data()].IsDefined()) + { + rhs.SetColor(node[COLOR_YAML_TAG.data()].as()); + } + if (node[TEXT_SIZE_YAML_TAG.data()].IsDefined()) + { + rhs.SetTextSize(node[TEXT_SIZE_YAML_TAG.data()].as()); + } return true; } }; - + template<> struct convert { @@ -417,4 +451,50 @@ namespace YAML } }; + template<> + struct convert + { + static constexpr std::string_view MESH_YAML_TAG = "Mesh"; + static constexpr std::string_view START_COLOR_YAML_TAG = "Start Color"; + static constexpr std::string_view END_COLOR_YAML_TAG = "End Color"; + static constexpr std::string_view START_ALPHA_YAML_TAG = "Start Alpha"; + static constexpr std::string_view END_ALPHA_YAML_TAG = "End Alpha"; + static constexpr std::string_view COLOR_EVAL_RATE_YAML_TAG = "Color Eval Rate "; + + static YAML::Node encode(SHTrajectoryRenderableComponent const& rhs) + { + YAML::Node node; + node[MESH_YAML_TAG.data()] = SHResourceManager::GetAssetID(rhs.GetMesh()).value_or(0); + node[START_COLOR_YAML_TAG.data()] = SHVec3(rhs.GetStartColor()); + node[START_ALPHA_YAML_TAG.data()] = rhs.GetStartAlpha(); + node[END_COLOR_YAML_TAG.data()] = SHVec3(rhs.GetEndColor()); + node[END_ALPHA_YAML_TAG.data()] = rhs.GetEndAlpha(); + node[COLOR_EVAL_RATE_YAML_TAG.data()] = rhs.GetColorEvolveRate(); + + return node; + } + static bool decode(YAML::Node const& node, SHTrajectoryRenderableComponent& rhs) + { + if (node[MESH_YAML_TAG.data()].IsDefined()) + rhs.SetMesh(SHResourceManager::LoadOrGet(node[MESH_YAML_TAG.data()].as())); + + if (node[START_COLOR_YAML_TAG.data()].IsDefined()) + rhs.SetStartColor(node[START_COLOR_YAML_TAG.data()].as()); + + if (node[START_ALPHA_YAML_TAG.data()].IsDefined()) + rhs.SetStartAlpha(node[START_ALPHA_YAML_TAG.data()].as()); + + if (node[END_COLOR_YAML_TAG.data()].IsDefined()) + rhs.SetEndColor(node[END_COLOR_YAML_TAG.data()].as()); + + if (node[END_ALPHA_YAML_TAG.data()].IsDefined()) + rhs.SetEndAlpha(node[END_ALPHA_YAML_TAG.data()].as()); + + if (node[COLOR_EVAL_RATE_YAML_TAG.data()].IsDefined()) + rhs.SetColorEvolveRate(node[COLOR_EVAL_RATE_YAML_TAG.data()].as()); + + return true; + } + }; + } diff --git a/SHADE_Engine/src/UI/SHButtonComponent.h b/SHADE_Engine/src/UI/SHButtonComponent.h index a89a4b9e..cb00300c 100644 --- a/SHADE_Engine/src/UI/SHButtonComponent.h +++ b/SHADE_Engine/src/UI/SHButtonComponent.h @@ -26,7 +26,7 @@ namespace SHADE void SetHoveredTexture(AssetID texture) noexcept; void SetClickedTexture(AssetID texture) noexcept; - + AssetID currentTexture; friend class SHUISystem; private: @@ -35,7 +35,7 @@ namespace SHADE AssetID hoveredTexture; AssetID clickedTexture; - AssetID currentTexture; + RTTR_ENABLE() diff --git a/SHADE_Engine/src/UI/SHSliderComponent.cpp b/SHADE_Engine/src/UI/SHSliderComponent.cpp index d25fbb6f..d841ca4b 100644 --- a/SHADE_Engine/src/UI/SHSliderComponent.cpp +++ b/SHADE_Engine/src/UI/SHSliderComponent.cpp @@ -4,7 +4,7 @@ namespace SHADE { SHSliderComponent::SHSliderComponent() - :value(0.0f) + :value(0.0f),minValue(0.0f), maxValue(100.0f) { } @@ -21,6 +21,17 @@ namespace SHADE } + float SHSliderComponent::GetScaledValue() const noexcept + { + return value * (maxValue - minValue) + minValue; + } + + void SHSliderComponent::SetScaledValue(float value) noexcept + { + this->value = (value - minValue) / (maxValue - minValue); + } + + } @@ -32,7 +43,8 @@ RTTR_REGISTRATION registration::class_("Slider Component") .property("Slider Value", &SHSliderComponent::GetValue, &SHSliderComponent::SetValue) - + .property("Min Value", &SHSliderComponent::minValue) + .property("Max Value", &SHSliderComponent::maxValue) ; diff --git a/SHADE_Engine/src/UI/SHSliderComponent.h b/SHADE_Engine/src/UI/SHSliderComponent.h index 1eb64205..15997b73 100644 --- a/SHADE_Engine/src/UI/SHSliderComponent.h +++ b/SHADE_Engine/src/UI/SHSliderComponent.h @@ -18,11 +18,16 @@ namespace SHADE virtual ~SHSliderComponent() = default; + float minValue; + float maxValue; + + float GetValue() const noexcept; - - void SetValue(float value) noexcept; + float GetScaledValue() const noexcept; + void SetScaledValue(float value)noexcept; + friend class SHUISystem; private: diff --git a/SHADE_Engine/src/UI/SHUISystem.cpp b/SHADE_Engine/src/UI/SHUISystem.cpp index 87a6552d..63731e18 100644 --- a/SHADE_Engine/src/UI/SHUISystem.cpp +++ b/SHADE_Engine/src/UI/SHUISystem.cpp @@ -190,6 +190,15 @@ namespace SHADE SHVec2 camSize{ cameraSystem->GetCameraWidthHeight(0) }; //SHLOG_INFO("TopExtent: {}, {}", topExtent.x, topExtent.y) + if (topExtent.y < btmExtent.y) + { + SHVec2 temp = topExtent; + topExtent = btmExtent; + btmExtent = temp; + + } + + topExtent = CanvasToScreenPoint(topExtent, true); btmExtent = CanvasToScreenPoint(btmExtent, true); //SHLOG_INFO("TopExtent: {}, {} Btm Extent: {}, {}", topExtent.x, topExtent.y, btmExtent.x, btmExtent.y) @@ -254,6 +263,11 @@ namespace SHADE return true; } + //In case the UI was clicked but the mouse is not held down and the key up frame was missed because of active state. + if (comp.isClicked && !SHInputManager::GetKey(SHInputManager::SH_KEYCODE::LMB)) + { + comp.isClicked = false; + } return false; @@ -309,7 +323,7 @@ namespace SHADE //SHLOG_INFO("SETTING HOVERED TEXTURE") } } - if (textureID != 0 && textureID != comp.currentTexture) + if (textureID != 0 && comp.currentTexture != textureID) { auto material = renderable->GetModifiableMaterial(); comp.currentTexture = textureID; @@ -389,7 +403,7 @@ namespace SHADE auto uiComp = SHComponentManager::GetComponent(comp.GetEID()); //auto canvasComp = SHComponentManager::GetComponent_s(uiComp->canvasID); - float tempValue = comp.GetValue(); + float tempValue = comp.value; CheckButtonHoveredOrClicked(*uiComp); @@ -427,9 +441,9 @@ namespace SHADE comp.value = (mousePos.x - topExtent.x) / (btmExtent.x - topExtent.x); - if (comp.GetValue() > 1.0f) + if (comp.value > 1.0f) comp.value = 1.0f; - if (comp.GetValue() < 0.0f) + if (comp.value < 0.0f) comp.value = 0.0f; } try @@ -439,11 +453,11 @@ namespace SHADE auto material = renderable->GetModifiableMaterial(); if (renderable) { - if (comp.GetValue() != material->GetProperty("data.sliderThreshold")) + if (comp.value != material->GetProperty("data.sliderThreshold")) { //Set shader value. - material->SetProperty("data.sliderThreshold", comp.GetValue()); + material->SetProperty("data.sliderThreshold", comp.value); } } 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/Slider.cxx b/SHADE_Managed/src/Components/Slider.cxx index 163a33a3..898f979a 100644 --- a/SHADE_Managed/src/Components/Slider.cxx +++ b/SHADE_Managed/src/Components/Slider.cxx @@ -23,4 +23,22 @@ namespace SHADE } + void Slider::SetValue(float value) + { + return GetNativeComponent()->SetValue(value); + } + + + float Slider::ScaledValue::get() + { + return GetNativeComponent()->GetScaledValue(); + } + + void Slider::ScaledValue::set(float value) + { + return GetNativeComponent()->SetScaledValue(value); + } + + + } diff --git a/SHADE_Managed/src/Components/Slider.hxx b/SHADE_Managed/src/Components/Slider.hxx index 7f0efa1e..0a100faa 100644 --- a/SHADE_Managed/src/Components/Slider.hxx +++ b/SHADE_Managed/src/Components/Slider.hxx @@ -42,6 +42,15 @@ namespace SHADE public: float GetValue(); + void SetValue(float value); + + + property float ScaledValue + { + float get(); + void set(float value); + } + }; 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/TrajectoryRenderable.cxx b/SHADE_Managed/src/Components/TrajectoryRenderable.cxx new file mode 100644 index 00000000..4b762338 --- /dev/null +++ b/SHADE_Managed/src/Components/TrajectoryRenderable.cxx @@ -0,0 +1,83 @@ +#include "SHpch.h" + +#include "TrajectoryRenderable.hxx" +#include "Assets/NativeAsset.hxx" +#include "Utility/Convert.hxx" + + +namespace SHADE +{ + TrajectoryRenderable::TrajectoryRenderable(Entity entity) + :Component(entity) + { + + } + + MeshAsset TrajectoryRenderable::Mesh::get() + { + auto mesh = GetNativeComponent()->GetMesh(); + return mesh ? MeshAsset(mesh) : MeshAsset(); + } + void TrajectoryRenderable::Mesh::set(MeshAsset value) + { + if (value) + { + GetNativeComponent()->SetMesh(Handle()); + } + else + { + GetNativeComponent()->SetMesh(value.NativeObject); + } + } + + + void TrajectoryRenderable::StartColor::set(Vector3 val) + { + GetNativeComponent()->SetStartColor(Convert::ToNative(val)); + } + + Vector3 TrajectoryRenderable::StartColor::get() + { + return Convert::ToCLI(GetNativeComponent()->GetStartColor()); + } + + void TrajectoryRenderable::EndColor::set(Vector3 val) + { + GetNativeComponent()->SetEndColor(Convert::ToNative(val)); + } + + Vector3 TrajectoryRenderable::EndColor::get() + { + return Convert::ToCLI(GetNativeComponent()->GetEndColor()); + } + + void TrajectoryRenderable::StartAlpha::set(float val) + { + GetNativeComponent()->SetStartAlpha(val); + } + + float TrajectoryRenderable::StartAlpha::get() + { + return GetNativeComponent()->GetStartAlpha(); + } + + void TrajectoryRenderable::EndAlpha::set(float val) + { + GetNativeComponent()->SetEndAlpha(val); + } + + float TrajectoryRenderable::EndAlpha::get() + { + return GetNativeComponent()->GetEndAlpha(); + } + + void TrajectoryRenderable::ColorEvolveRate::set(float val) + { + GetNativeComponent()->SetColorEvolveRate(val); + } + + float TrajectoryRenderable::ColorEvolveRate::get() + { + return GetNativeComponent()->GetColorEvolveRate(); + } +} \ No newline at end of file diff --git a/SHADE_Managed/src/Components/TrajectoryRenderable.hxx b/SHADE_Managed/src/Components/TrajectoryRenderable.hxx new file mode 100644 index 00000000..37a350ad --- /dev/null +++ b/SHADE_Managed/src/Components/TrajectoryRenderable.hxx @@ -0,0 +1,87 @@ +/************************************************************************************//*! +\file TrajectoryRenderable.hxx +\author Brandon Mak, brandon.hao, +\par email: brandon.hao\@digipen.edu +\date 1st March, 2023 +\brief Contains the definition of the managed Renderable class with the + declaration of functions for working with it. + + Note: This file is written in C++17/CLI. + +Copyright (C) 2022 DigiPen Institute of Technology. +Reproduction or disclosure of this file or its contents without the prior written consent +of DigiPen Institute of Technology is prohibited. +*//*************************************************************************************/ +#pragma once + +// Project Includes +#include "Components/Component.hxx" +#include "Math/Quaternion.hxx" +// External Dependencies +#include "Graphics/MiddleEnd/TrajectoryRendering/SHTrajectoryRenderableComponent.h" +#include "Graphics/Color.hxx" +#include "Assets/MeshAsset.hxx" + +namespace SHADE +{ + /// + /// CLR version of the SHADE Engine's SHRenderableComponent. + /// + public ref class TrajectoryRenderable : public Component + { + internal: + /*-----------------------------------------------------------------------------*/ + /* Constructors */ + /*-----------------------------------------------------------------------------*/ + /// + /// Constructs a Trajectory Renderable Component that represents a native Trajectory Renderable + /// component tied to the specified Entity. + /// + /// Entity that this Component will be tied to. + TrajectoryRenderable(Entity entity); + + public: + /*-----------------------------------------------------------------------------*/ + /* Properties */ + /*-----------------------------------------------------------------------------*/ + /// + /// Mesh used to render this Renderable. + /// + property MeshAsset Mesh + { + MeshAsset get(); + void set(MeshAsset value); + } + + property Vector3 StartColor + { + Vector3 get(); + void set (Vector3 val); + } + + property Vector3 EndColor + { + Vector3 get(); + void set(Vector3 val); + } + + property float StartAlpha + { + float get(); + void set (float val); + } + + property float EndAlpha + { + float get(); + void set(float val); + } + + property float ColorEvolveRate + { + float get(); + void set(float val); + } + }; +} + 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 5bde66d2..b176f67e 100644 --- a/SHADE_Managed/src/Engine/Application.cxx +++ b/SHADE_Managed/src/Engine/Application.cxx @@ -20,6 +20,7 @@ of DigiPen Institute of Technology is prohibited. #include "ECS_Base/Managers/SHSystemManager.h" #include "Editor/SHEditor.h" #include "Graphics/MiddleEnd/Interface/SHGraphicsSystemInterface.h" +#include "Physics/System/SHPhysicsSystemInterface.h" namespace SHADE { @@ -71,7 +72,22 @@ namespace SHADE { return SHGraphicsSystemInterface::SetFullscreen(value); }*/ - + bool Application::IsCursorVisible::get() + { + return SHWindow::GetMouseVisible(); + } + void Application::IsCursorVisible::set(bool value) + { + SHWindow::SetMouseVisible(value); + } + double Application::FixDeltaTime::get() + { + return SHPhysicsSystemInterface::GetFixedDT(); + } + void Application::FixDeltaTime::set(double value) + { + SHPhysicsSystemInterface::SetFixedDT(value); + } /*---------------------------------------------------------------------------------*/ /* Usage Functions */ /*---------------------------------------------------------------------------------*/ diff --git a/SHADE_Managed/src/Engine/Application.hxx b/SHADE_Managed/src/Engine/Application.hxx index 4467ec3b..2e7b1f23 100644 --- a/SHADE_Managed/src/Engine/Application.hxx +++ b/SHADE_Managed/src/Engine/Application.hxx @@ -73,6 +73,18 @@ namespace SHADE //void set(bool value); } + static property bool IsCursorVisible + { + bool get(); + void set(bool value); + } + + static property double FixDeltaTime + { + double get(); + void set(double value); + } + /*-----------------------------------------------------------------------------*/ /* Usage Functions */ /*-----------------------------------------------------------------------------*/ diff --git a/SHADE_Managed/src/Engine/ECS.cxx b/SHADE_Managed/src/Engine/ECS.cxx index 38596010..5b73b64e 100644 --- a/SHADE_Managed/src/Engine/ECS.cxx +++ b/SHADE_Managed/src/Engine/ECS.cxx @@ -46,6 +46,8 @@ of DigiPen Institute of Technology is prohibited. #include "Components\UIElement.hxx" #include "Components\Canvas.hxx" #include "Components\Slider.hxx" +#include "Components\TrajectoryRenderable.hxx" +#include "Graphics\MiddleEnd\TrajectoryRendering\SHTrajectoryRenderableComponent.h" @@ -335,6 +337,7 @@ namespace SHADE componentMap.Add(createComponentSet()); componentMap.Add(createComponentSet()); componentMap.Add(createComponentSet()); + componentMap.Add(createComponentSet()); } /*---------------------------------------------------------------------------------*/ diff --git a/SHADE_Managed/src/Engine/Time.cxx b/SHADE_Managed/src/Engine/Time.cxx index 12c90453..27cf1e22 100644 --- a/SHADE_Managed/src/Engine/Time.cxx +++ b/SHADE_Managed/src/Engine/Time.cxx @@ -17,6 +17,7 @@ of DigiPen Institute of Technology is prohibited. // External Dependencies #include "FRC/SHFramerateController.h" #include "Physics/System/SHPhysicsSystemInterface.h" +#include "Physics/SHPhysicsConstants.h" // Primary Header #include "Time.hxx" @@ -37,10 +38,16 @@ namespace SHADE float Time::DeltaTimeF::get() { - return static_cast(SHFrameRateController::GetRawDeltaTime()); + return static_cast(SHFrameRateController::GetRawDeltaTime()); } + double Time::FixedDeltaTime::get() { return SHPhysicsSystemInterface::GetFixedDT(); } + + double Time::DefaultFixDeltaTime::get() + { + return SHPhysicsConstants::DEFAULT_FIXED_DT; + } } \ No newline at end of file diff --git a/SHADE_Managed/src/Engine/Time.hxx b/SHADE_Managed/src/Engine/Time.hxx index 11c82241..306193a4 100644 --- a/SHADE_Managed/src/Engine/Time.hxx +++ b/SHADE_Managed/src/Engine/Time.hxx @@ -57,5 +57,11 @@ namespace SHADE { double get(); } + + static property double DefaultFixDeltaTime + { + double get(); + } + }; } \ No newline at end of file diff --git a/SHADE_Managed/src/Physics/Physics.cxx b/SHADE_Managed/src/Physics/Physics.cxx index 7b2349a6..66e8645b 100644 --- a/SHADE_Managed/src/Physics/Physics.cxx +++ b/SHADE_Managed/src/Physics/Physics.cxx @@ -31,14 +31,42 @@ namespace SHADE Vector3 Physics::Gravity::get() { - // TODO(Diren) - - return Vector3::Zero; + return Convert::ToCLI(SHPhysicsSystemInterface::GetGravity()); } void Physics::Gravity::set(Vector3 value) { - (void)value; + SHPhysicsSystemInterface::SetGravity(Convert::ToNative(value)); + } + + uint16_t Physics::VelocityIterations::get() + { + return SHPhysicsSystemInterface::GetNumVelocityIterations(); + } + + void Physics::VelocityIterations::set(uint16_t value) + { + SHPhysicsSystemInterface::SetNumVelocityIterations(value); + } + + uint16_t Physics::PositionIterations::get() + { + return SHPhysicsSystemInterface::GetNumPositionIterations(); + } + + void Physics::PositionIterations::set(uint16_t value) + { + SHPhysicsSystemInterface::SetNumPositionIterations(value); + } + + bool Physics::SleepingEnabled::get() + { + return SHPhysicsSystemInterface::IsSleepingEnabled(); + } + + void Physics::SleepingEnabled::set(bool value) + { + SHPhysicsSystemInterface::EnableSleeping(value); } /*-----------------------------------------------------------------------------------*/ diff --git a/SHADE_Managed/src/Physics/Physics.hxx b/SHADE_Managed/src/Physics/Physics.hxx index 7f5e1609..cc4cfc5c 100644 --- a/SHADE_Managed/src/Physics/Physics.hxx +++ b/SHADE_Managed/src/Physics/Physics.hxx @@ -33,7 +33,23 @@ namespace SHADE void set(Vector3 value); } - // TODO(Diren): Add more properties for physics system settings. + static property uint16_t VelocityIterations + { + uint16_t get(); + void set(uint16_t value); + } + + static property uint16_t PositionIterations + { + uint16_t get(); + void set(uint16_t value); + } + + static property bool SleepingEnabled + { + bool get(); + void set(bool value); + } /*---------------------------------------------------------------------------------*/ /* Raycast Function Members */ diff --git a/SHADE_Managed/src/Utility/Convert.cxx b/SHADE_Managed/src/Utility/Convert.cxx index 590a3cf0..4ff5dd43 100644 --- a/SHADE_Managed/src/Utility/Convert.cxx +++ b/SHADE_Managed/src/Utility/Convert.cxx @@ -91,12 +91,17 @@ namespace SHADE { if (str == nullptr) return ""; - return msclr::interop::marshal_as(str); + std::string s = msclr::interop::marshal_as(str); + s.substr(0, str->Length); + return s; } System::String^ Convert::ToCLI(const std::string& str) { - return msclr::interop::marshal_as(str); + if (str.empty()) + return ""; + + return msclr::interop::marshal_as(str)->Substring(0, str.length()); } /*---------------------------------------------------------------------------------*/