diff --git a/Assets/Animation Clips/MD_RigTest01_SkinningTestAnims.shanimcontainer b/Assets/Animation Clips/MD_RigTest01_SkinningTestAnims.shanimcontainer index 5d6924e2..c14d75f4 100644 Binary files a/Assets/Animation Clips/MD_RigTest01_SkinningTestAnims.shanimcontainer and b/Assets/Animation Clips/MD_RigTest01_SkinningTestAnims.shanimcontainer differ diff --git a/Assets/Animation Clips/racoonAnims.shanimcontainer b/Assets/Animation Clips/racoonAnims.shanimcontainer index c0b335cf..2cd47693 100644 Binary files a/Assets/Animation Clips/racoonAnims.shanimcontainer and b/Assets/Animation Clips/racoonAnims.shanimcontainer differ diff --git a/Assets/Application.SHConfig b/Assets/Application.SHConfig index 97477f5a..5673556d 100644 --- a/Assets/Application.SHConfig +++ b/Assets/Application.SHConfig @@ -1,4 +1,4 @@ Start in Fullscreen: false -Starting Scene ID: 91478134 +Starting Scene ID: 97158628 Window Size: {x: 1920, y: 1080} Window Title: SHADE Engine \ No newline at end of file diff --git a/Assets/Audio/Cinematics.bank b/Assets/Audio/Cinematics.bank new file mode 100644 index 00000000..3a46d298 Binary files /dev/null and b/Assets/Audio/Cinematics.bank differ diff --git a/Assets/Audio/Cinematics.bank.shmeta b/Assets/Audio/Cinematics.bank.shmeta new file mode 100644 index 00000000..739b926e --- /dev/null +++ b/Assets/Audio/Cinematics.bank.shmeta @@ -0,0 +1,3 @@ +Name: Cinematics +ID: 197932678 +Type: 11 diff --git a/Assets/Audio/Master.strings.bank b/Assets/Audio/Master.strings.bank index b769c07f..a8d82a33 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 41112f65..154d8479 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 acf5260a..66556fd2 100644 Binary files a/Assets/Audio/SFX.bank and b/Assets/Audio/SFX.bank differ diff --git a/Assets/Audio/UI.bank b/Assets/Audio/UI.bank index 92edfdf6..58c11ddb 100644 Binary files a/Assets/Audio/UI.bank and b/Assets/Audio/UI.bank differ diff --git a/Assets/CollisionTags.SHConfig b/Assets/CollisionTags.SHConfig index 3fb14287..d662b247 100644 --- a/Assets/CollisionTags.SHConfig +++ b/Assets/CollisionTags.SHConfig @@ -1,11 +1,11 @@ -0 StaticObject 1110000000000000 +0 StaticObject 1100000000000000 1 Player 1100000000000000 2 Food 1000000000000000 3 Breakable 1100000000000000 4 ScoringWallCollider 0110000000000000 5 Homeowner 1100000000000000 6 Camera 0010000000000000 -7 8 0000000000000000 +7 StaticWithCameraCollision 1110000000000000 8 9 0000000000000000 9 10 0000000000000000 10 11 0000000000000000 diff --git a/Assets/Scenes/Level1.shade b/Assets/Scenes/Level1.shade index e565b531..e1eeafc1 100644 --- a/Assets/Scenes/Level1.shade +++ b/Assets/Scenes/Level1.shade @@ -10,12 +10,13 @@ Color: {x: 1, y: 1, z: 1, w: 1} Layer: 4294967295 Strength: 1 + Casting Shadows: false IsActive: true Scripts: ~ - EID: 85 Name: EnvironmentMaster IsActive: true - NumberOfChildren: 8 + NumberOfChildren: 9 Components: ~ Scripts: ~ - EID: 84 @@ -46,7 +47,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 1.20000005, z: 1} Friction: 0.400000006 @@ -100,7 +101,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 1.20000005, z: 1} Friction: 0.400000006 @@ -214,7 +215,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 1.20000005, z: 1} Friction: 0.400000006 @@ -977,7 +978,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 1, z: 1} Friction: 0.400000006 @@ -1058,7 +1059,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 1, z: 1} Friction: 0.400000006 @@ -1355,7 +1356,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 1, z: 1} Friction: 0.400000006 @@ -1420,7 +1421,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1447,7 +1448,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1474,7 +1475,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1483,7 +1484,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -1510,7 +1511,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1519,7 +1520,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -1546,7 +1547,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1555,7 +1556,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -1582,7 +1583,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1591,7 +1592,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -1618,7 +1619,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 0.200000003, z: 0.25} Friction: 0.400000006 @@ -1627,7 +1628,7 @@ Position Offset: {x: 0, y: 2.0999999, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 0.899999976, z: 0.25} Friction: 0.400000006 @@ -1636,7 +1637,7 @@ Position Offset: {x: 0, y: 0.449999988, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1645,7 +1646,7 @@ Position Offset: {x: -0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1672,7 +1673,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.200000003, z: 0.25} Friction: 0.400000006 @@ -1681,7 +1682,7 @@ Position Offset: {x: 0, y: 2.0999999, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.899999976, z: 0.25} Friction: 0.400000006 @@ -1690,7 +1691,7 @@ Position Offset: {x: 0, y: 0.449999988, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1699,7 +1700,7 @@ Position Offset: {x: -0.899999976, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1726,7 +1727,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.200000003, z: 0.25} Friction: 0.400000006 @@ -1735,7 +1736,7 @@ Position Offset: {x: 0, y: 2.0999999, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.899999976, z: 0.25} Friction: 0.400000006 @@ -1744,7 +1745,7 @@ Position Offset: {x: 0, y: 0.449999988, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1753,7 +1754,7 @@ Position Offset: {x: -0.899999976, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1780,7 +1781,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1797,7 +1798,7 @@ Components: Transform Component: Translate: {x: -5.5, y: 0, z: -3} - Rotate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: -0} Scale: {x: 0.999978602, y: 1, z: 0.999978602} IsActive: true Renderable Component: @@ -1807,7 +1808,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.200000003, z: 0.25} Friction: 0.400000006 @@ -1816,7 +1817,7 @@ Position Offset: {x: 0, y: 2.0999999, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.899999976, z: 0.25} Friction: 0.400000006 @@ -1825,7 +1826,7 @@ Position Offset: {x: 0, y: 0.449999988, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1834,7 +1835,7 @@ Position Offset: {x: -0.899999976, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1861,7 +1862,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1870,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: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -1897,7 +1898,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1906,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: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -1933,7 +1934,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1960,7 +1961,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1987,7 +1988,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2014,7 +2015,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2041,7 +2042,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2068,7 +2069,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.200000003, z: 0.25} Friction: 0.400000006 @@ -2077,7 +2078,7 @@ Position Offset: {x: 0, y: 2.0999999, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.899999976, z: 0.25} Friction: 0.400000006 @@ -2086,7 +2087,7 @@ Position Offset: {x: 0, y: 0.449999988, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2095,7 +2096,7 @@ Position Offset: {x: -0.899999976, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2122,7 +2123,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2149,7 +2150,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2158,7 +2159,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -2185,7 +2186,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2194,7 +2195,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -2221,7 +2222,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2248,7 +2249,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2275,7 +2276,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2302,7 +2303,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2329,7 +2330,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2356,7 +2357,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2365,7 +2366,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -2392,7 +2393,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2401,7 +2402,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -2418,7 +2419,7 @@ Components: Transform Component: Translate: {x: 0, y: 0, z: 0} - Rotate: {x: 0, y: 0, z: 0} + Rotate: {x: -1.48352981, y: 1.39999998, z: -3.50001717} Scale: {x: 1, y: 1, z: 1} IsActive: true Renderable Component: @@ -2517,7 +2518,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -3337,7 +3338,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 15, y: 0.200000003, z: 15} Friction: 0.400000006 @@ -4106,7 +4107,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 20, y: 0.100000001, z: 20} Friction: 0.400000006 @@ -4116,6 +4117,2715 @@ Rotation Offset: {x: 0, y: 0, z: 0} IsActive: true Scripts: ~ +- EID: 517 + Name: Exterior + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: -1.01231074, y: 0, z: -2.86974525} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1.30016053, y: 1, z: 1.03591442} + IsActive: true + Scripts: ~ +- EID: 295 + Name: Fences + IsActive: true + NumberOfChildren: 21 + 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 + Scripts: ~ +- EID: 276 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1, y: 0, z: -10} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.75, y: 0.75, z: 0.75} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 65811 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 6.5, y: 0, z: -0.75} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.749885261, y: 0.75, z: 0.749885261} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 277 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.75, y: 0, z: -10} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.75, y: 0.75, z: 0.75} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 278 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 6.5, y: 0, z: -4.5} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.749958098, y: 0.75, z: 0.749958098} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 279 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 6.5, y: 0, z: -8.25} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.749971926, y: 0.75, z: 0.749971926} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 280 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.75, y: 0, z: -10} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.75, y: 0.75, z: 0.75} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 281 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -6.5, y: 0, z: -10} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.75, y: 0.75, z: 0.75} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 282 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -8.25, y: 0, z: -8.25} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.74998349, y: 0.75, z: 0.74998349} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 283 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -8.25, y: 0, z: -4.5} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.749970615, y: 0.75, z: 0.749970615} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 284 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -8.25, y: 0, z: -0.75} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.749959767, y: 0.75, z: 0.749959767} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 285 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -8.25, y: 0, z: 3} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.749949992, y: 0.75, z: 0.749949992} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 286 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -8.25, y: 0, z: 6.75} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.749939382, y: 0.75, z: 0.749939382} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 287 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -8.25, y: 0, z: 10.5} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.749930501, y: 0.75, z: 0.749930501} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 288 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -6.5, y: 0, z: 12.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.749930501, y: 0.75, z: 0.749930501} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 289 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.63078785, y: 0, z: 12.25} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 0.749930501, y: 0.75, z: 0.749930501} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 290 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.76748997, y: 0, z: 12.25} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 0.749930501, y: 0.75, z: 0.749930501} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 291 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.75, y: 0, z: 12.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.749930501, y: 0.75, z: 0.749930501} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 292 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 6.5, y: 0, z: 10.5} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.749919176, y: 0.75, z: 0.749919176} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 293 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 6.5, y: 0, z: 6.75} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.749905586, y: 0.75, z: 0.749905586} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 294 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 6.5, y: 0, z: 3} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.749896526, y: 0.75, z: 0.749896526} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 504 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.9147172, y: 0, z: 12.25} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 0.749930501, y: 0.75, z: 0.749930501} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 437 + Name: Trees + IsActive: true + NumberOfChildren: 14 + Components: ~ + Scripts: ~ +- EID: 65842 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: 10.1952591, y: 0, z: 10.7309589} + Rotate: {x: 0, y: 1.9471432, z: 0} + Scale: {x: 0.749998093, y: 0.75, z: 0.749998093} + IsActive: true + Scripts: ~ +- EID: 297 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.99999917, y: 0, z: 1.25000107} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 298 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.24999964, y: 0, z: -0.999999106} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 299 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.50000006, y: 0, z: 1.00000012} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 300 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25000167, y: 0, z: -0.75000006} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 301 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.49999928, y: 0, z: -0.499999076} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 302 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.7500006, y: 0, z: -0.999998152} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 303 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.25000146, y: 0, z: -0.75000006} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 304 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75000072, y: 0, z: -1.24999821} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 305 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.99999917, y: 0, z: 1.25000107} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 307 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: -14.3396883, y: 1.02942158e-06, z: 3.45037246} + Rotate: {x: -0, y: -1.55548823, z: 0} + Scale: {x: 0.946743906, y: 0.947038352, z: 0.946743906} + IsActive: true + Scripts: ~ +- EID: 308 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000024, y: 0, z: 1.25000095} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 309 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.24999964, y: 0, z: -0.999999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 310 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.499999911, y: 0, z: 1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 311 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25000024, y: 0, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 312 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.50000024, y: 0, z: -0.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 313 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75000012, y: 0, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 314 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.250002086, y: 0, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 315 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.74999928, y: 0, z: -1.24999905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 316 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000024, y: 0, z: 1.25000095} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 317 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: 7.0228982, y: 0, z: 14.5601959} + Rotate: {x: 0, y: 0.723479152, z: 0} + Scale: {x: 0.75, y: 0.75, z: 0.75} + IsActive: true + Scripts: ~ +- EID: 318 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.99999905, y: 0, z: 1.24999952} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 319 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.24999952, y: 0, z: -1.00000095} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 320 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.5, y: 0, z: 0.999998093} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 321 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25000095, y: 0, z: -0.750000477} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 322 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.49999905, y: 0, z: -0.500001431} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 323 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75000048, y: 0, z: -1.00000095} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 324 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.250000954, y: 0, z: -0.750000954} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 325 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.74999905, y: 0, z: -1.25000143} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 326 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.99999905, y: 0, z: 1.24999952} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 327 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: 1.25, y: 0, z: 14.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.75, y: 0.75, z: 0.75} + IsActive: true + Scripts: ~ +- EID: 328 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 1.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 329 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.25000012, y: 0, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 330 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500000119, y: 0, z: 1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 331 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25, y: 0, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 332 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.50000048, y: 0, z: -0.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 333 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75, y: 0, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 334 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.249999881, y: 0, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 335 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75000048, y: 0, z: -1.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 336 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 1.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 337 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: -3.74656153, y: 5.05771936e-07, z: 15.2930593} + Rotate: {x: 0, y: -0.566242754, z: 0} + Scale: {x: 0.749999821, y: 0.75, z: 0.749999821} + IsActive: true + Scripts: ~ +- EID: 338 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.99999976, y: 0, z: 1.25000167} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 339 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.24999952, y: 0, z: -0.999999881} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 340 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500000954, y: 0, z: 1.00000238} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 341 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25000048, y: 0, z: -0.749999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 342 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.5, y: 0, z: -0.499999404} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 343 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75, y: 0, z: -0.999998808} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 344 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.249999523, y: 0, z: -0.749997854} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 345 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75000095, y: 0, z: -1.24999714} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 346 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.99999976, y: 0, z: 1.25000167} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 347 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: -9.52095222, y: 1.8582007e-07, z: -12.4267845} + Rotate: {x: -0, y: -2.5559175, z: 0} + Scale: {x: 0.749932706, y: 0.75, z: 0.749932706} + IsActive: true + Scripts: ~ +- EID: 348 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000095, y: 0, z: 1.25000143} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 349 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.25000095, y: 0, z: -0.999999523} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 350 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500001907, y: 0, z: 1.00000095} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 351 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.24999952, y: 0, z: -0.749999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 352 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.50000095, y: 0, z: -0.499999523} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 353 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75000095, y: 0, z: -0.999999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 354 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.25, y: 0, z: -0.749998569} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 355 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75, y: 0, z: -1.24999905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 356 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000095, y: 0, z: 1.25000143} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 357 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: -3.85509062, y: 1.903868e-07, z: -13.8841438} + Rotate: {x: 0, y: 2.91411972, z: 0} + Scale: {x: 0.749867201, y: 0.75, z: 0.749867201} + IsActive: true + Scripts: ~ +- EID: 358 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: 0, z: 1.25000083} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 359 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.25000048, y: 0, z: -0.999998808} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 360 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500000954, y: 0, z: 1.00000167} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 361 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.24999976, y: 0, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 362 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.50000048, y: 0, z: -0.499998808} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 363 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.74999952, y: 0, z: -0.999998927} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 364 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.249999046, y: 0, z: -0.749997973} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 365 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75000143, y: 0, z: -1.24999905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 366 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: 0, z: 1.25000083} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 367 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: 1.08703649, y: 1.755852e-07, z: -13.769515} + Rotate: {x: -0, y: -2.83319044, z: 0} + Scale: {x: 0.749745905, y: 0.75, z: 0.749745905} + IsActive: true + Scripts: ~ +- EID: 368 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: -1.42108564e-14, z: 1.24999857} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 369 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.25000036, y: -1.42108564e-14, z: -1.00000179} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 370 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.499999672, y: -1.42108564e-14, z: 0.999998927} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 371 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.24999976, y: -1.42108564e-14, z: -0.750001252} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 372 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.50000024, y: -1.42108564e-14, z: -0.500000834} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 373 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75000012, y: -1.42108564e-14, z: -1.00000095} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 374 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.249999776, y: -1.42108564e-14, z: -0.750001192} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 375 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75000024, y: -1.42108564e-14, z: -1.2500006} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 376 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: -1.42108564e-14, z: 1.24999857} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 377 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: 7.25601864, y: 1.55680326e-07, z: -11.2872229} + Rotate: {x: 0, y: 2.30721998, z: 0} + Scale: {x: 0.749779522, y: 0.75, z: 0.749779522} + IsActive: true + Scripts: ~ +- EID: 378 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: -1.42108547e-14, z: 1.25000048} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 379 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.25000048, y: -1.42108547e-14, z: -1.00000048} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 380 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.499999523, y: -1.42108547e-14, z: 1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 381 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.24999952, y: -1.42108547e-14, z: -0.749999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 382 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.50000048, y: -1.42108547e-14, z: -0.500000477} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 383 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.74999952, y: -1.42108547e-14, z: -0.999999523} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 384 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.249999523, y: -1.42108547e-14, z: -0.749999523} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 385 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75, y: -1.42108547e-14, z: -1.24999905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 386 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: -1.42108547e-14, z: 1.25000048} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 387 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: 4.38531399, y: 1.85469574e-07, z: -15.6559658} + Rotate: {x: 0, y: 2.89864969, z: 0} + Scale: {x: 0.802338541, y: 0.802574933, z: 0.802338541} + IsActive: true + Scripts: ~ +- EID: 388 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000072, y: 2.84217094e-14, z: 1.24999976} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 389 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.25000095, y: 2.84217094e-14, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 390 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500000954, y: 2.84217094e-14, z: 1.00000107} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 391 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.24999905, y: 2.84217094e-14, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 392 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.5, y: 2.84217094e-14, z: -0.50000155} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 393 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.74999857, y: 2.84217094e-14, z: -0.999999523} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 394 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.249999523, y: 2.84217094e-14, z: -0.750000596} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 395 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75000072, y: 2.84217094e-14, z: -1.25000167} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 396 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000072, y: 2.84217094e-14, z: 1.24999976} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 397 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: 10.1465569, y: 1.39389343e-07, z: -6.44067621} + Rotate: {x: 0, y: 1.53019583, z: 0} + Scale: {x: 0.802350819, y: 0.802574933, z: 0.802350819} + IsActive: true + Scripts: ~ +- EID: 398 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: -1.42108547e-14, z: 1.24999905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 399 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.2499994, y: -1.42108547e-14, z: -1.00000095} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 400 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.499999583, y: -1.42108547e-14, z: 0.999997139} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 401 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25000048, y: -1.42108547e-14, z: -0.750000954} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 402 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.49999976, y: -1.42108547e-14, z: -0.500000954} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 403 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75000012, y: -1.42108547e-14, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 404 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.250000358, y: -1.42108547e-14, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 405 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.74999976, y: -1.42108547e-14, z: -1.25000191} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 406 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: -1.42108547e-14, z: 1.24999905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 407 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: -11.3042955, y: 1.0311652e-06, z: -5.21996689} + Rotate: {x: -0, y: 1.85743773, z: 0} + Scale: {x: 0.802347541, y: 0.802574933, z: 0.802347541} + IsActive: true + Scripts: ~ +- EID: 408 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000024, y: 0, z: 1.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 409 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.24999952, y: 0, z: -0.999999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 410 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500000238, y: 0, z: 1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 411 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.24999952, y: 0, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 412 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.5, y: 0, z: -0.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 413 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75, y: 0, z: -0.999999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 414 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.250001431, y: 0, z: -0.749999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 415 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75000048, y: 0, z: -1.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 416 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000024, y: 0, z: 1.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 417 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: -11.8055868, y: 1.02849719e-06, z: -0.449734211} + Rotate: {x: 0, y: -1.17325497, z: 0} + Scale: {x: 0.802348375, y: 0.802574933, z: 0.802348375} + IsActive: true + Scripts: ~ +- EID: 418 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 1.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 419 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.25, y: 0, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 420 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.499999523, y: 0, z: 1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 421 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25000048, y: 0, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 422 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.49999952, y: 0, z: -0.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 423 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75000024, y: 0, z: -0.999999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 424 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.250002384, y: 0, z: -0.749999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 425 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.74999952, y: 0, z: -1.24999905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 426 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 1.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 427 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: -10.6890984, y: 1.0175379e-06, z: 5.88018131} + Rotate: {x: 0, y: -1.55548835, z: 0} + Scale: {x: 0.80234766, y: 0.802574933, z: 0.80234766} + IsActive: true + Scripts: ~ +- EID: 428 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: 1.13686838e-13, z: 1.25000191} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 429 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.24999988, y: 1.13686838e-13, z: -0.999998093} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 430 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500000358, y: 1.13686838e-13, z: 1.00000191} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 431 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25, y: 1.13686838e-13, z: -0.749999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 432 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.50000048, y: 1.13686838e-13, z: -0.499999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 433 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.74999976, y: 1.13686838e-13, z: -0.999999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 434 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.250001878, y: 1.13686838e-13, z: -0.749998093} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 435 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75000048, y: 1.13686838e-13, z: -1.24999905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 436 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: 1.13686838e-13, z: 1.25000191} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 448 + Name: BushCluster + IsActive: true + NumberOfChildren: 10 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: -9.27025223} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 438 + Name: Exterior_Bush01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5.81465149, y: -4.76837158e-07, z: 0.386853218} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 143461339 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 439 + Name: Exterior_Bush02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.331082046, y: 0, z: 0.392630577} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136373407 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 65976 + Name: Exterior_Bush03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.06180131, y: 0, z: 0.439988136} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144928031 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 441 + Name: Exterior_Bush01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -7.09583855, y: -4.76837158e-07, z: 0.386853218} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 143461339 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 442 + Name: Exterior_Bush03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4.03810406, y: 0, z: 0.439988136} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144928031 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 443 + Name: Exterior_Bush02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.52796364, y: 0, z: 0.392630577} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136373407 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 444 + Name: Exterior_Bush01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.52529955, y: -4.76837158e-07, z: 0.386853218} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 143461339 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 445 + Name: Exterior_Bush02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -5.5497098, y: 0, z: 0.392630577} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136373407 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 516 + Name: Exterior_Bush01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.79356122, y: -4.76837158e-07, z: 0.386853218} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 143461339 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 447 + Name: Exterior_Bush02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.18613672, y: 0, z: 0.392630577} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136373407 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 515 + Name: BushCluster + IsActive: true + NumberOfChildren: 10 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 11.2170467} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 514 + Name: Exterior_Bush01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5.81465149, y: -4.76837158e-07, z: 0.386853218} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 143461339 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 513 + Name: Exterior_Bush02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.331082046, y: 0, z: 0.392630577} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136373407 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 512 + Name: Exterior_Bush03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.06180131, y: 0, z: 0.439988136} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144928031 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 511 + Name: Exterior_Bush01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -7.09583855, y: -4.76837158e-07, z: 0.386853218} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 143461339 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 510 + Name: Exterior_Bush03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4.03810406, y: 0, z: 0.439988136} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144928031 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 509 + Name: Exterior_Bush02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.52796364, y: 0, z: 0.392630577} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136373407 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 508 + Name: Exterior_Bush01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.52529955, y: -4.76837158e-07, z: 0.386853218} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 143461339 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 507 + Name: Exterior_Bush02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -5.5497098, y: 0, z: 0.392630577} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136373407 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 506 + Name: Exterior_Bush01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.79356122, y: -4.76837158e-07, z: 0.386853218} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 143461339 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 505 + Name: Exterior_Bush02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.18613672, y: 0, z: 0.392630577} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136373407 + Material: 131956078 + IsActive: true + Scripts: ~ - EID: 236 Name: ====GameManager==== IsActive: true @@ -4148,8 +6858,8 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 2.13981342, y: 0.0490087792, z: -1.96055627} - Rotate: {x: 0, y: -1.53675354, z: 0} + Translate: {x: 2.13981342, y: 0.0490087792, z: -1.86932743} + Rotate: {x: -0, y: -1.53675354, z: 0} Scale: {x: 1, y: 1, z: 1} IsActive: true Renderable Component: @@ -4160,6 +6870,7 @@ Type: Dynamic Drag: 0.00999999978 Angular Drag: 0.100000001 + Gravity Scale: 1 Use Gravity: true Interpolate: true Sleeping Enabled: true @@ -4269,6 +6980,7 @@ Type: Dynamic Drag: 0.00999999978 Angular Drag: 0.100000001 + Gravity Scale: 1 Use Gravity: true Interpolate: false Sleeping Enabled: true @@ -4308,7 +7020,7 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 3.22328258, y: 1.02709854, z: -0.57395637} + Translate: {x: 3.22328258, y: 1.11577427, 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 @@ -4320,6 +7032,7 @@ Type: Dynamic Drag: 0.00999999978 Angular Drag: 0.100000001 + Gravity Scale: 1 Use Gravity: true Interpolate: false Sleeping Enabled: true @@ -4371,6 +7084,7 @@ Type: Dynamic Drag: 0.00999999978 Angular Drag: 0.100000001 + Gravity Scale: 1 Use Gravity: true Interpolate: false Sleeping Enabled: true @@ -4422,6 +7136,7 @@ Type: Dynamic Drag: 0.00999999978 Angular Drag: 0.100000001 + Gravity Scale: 1 Use Gravity: true Interpolate: false Sleeping Enabled: true @@ -4475,6 +7190,7 @@ Type: Dynamic Drag: 0.00999999978 Angular Drag: 0.100000001 + Gravity Scale: 1 Use Gravity: true Interpolate: true Sleeping Enabled: true @@ -4537,6 +7253,7 @@ Type: Dynamic Drag: 0.00999999978 Angular Drag: 0.100000001 + Gravity Scale: 1 Use Gravity: true Interpolate: true Sleeping Enabled: true @@ -4599,6 +7316,7 @@ Type: Dynamic Drag: 0.00999999978 Angular Drag: 0.100000001 + Gravity Scale: 1 Use Gravity: true Interpolate: true Sleeping Enabled: true @@ -4661,6 +7379,7 @@ Type: Dynamic Drag: 0.00999999978 Angular Drag: 0.100000001 + Gravity Scale: 1 Use Gravity: true Interpolate: true Sleeping Enabled: true @@ -4723,6 +7442,7 @@ Type: Dynamic Drag: 0.00999999978 Angular Drag: 0.100000001 + Gravity Scale: 1 Use Gravity: true Interpolate: true Sleeping Enabled: true @@ -4771,88 +7491,6 @@ Rotation Offset: {x: 0, y: 0, z: 0} IsActive: true Scripts: ~ -- EID: 217 - Name: ===Anims=== - IsActive: true - NumberOfChildren: 4 - Components: ~ - Scripts: ~ -- EID: 221 - Name: Obj1 - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: 0.301929057, y: 0.912136197, z: -9.20810795} - Rotate: {x: 0, y: 1.57079637, z: 0} - Scale: {x: 0.100000024, y: 0.100000024, z: 0.100000024} - IsActive: true - Renderable Component: - Mesh: 141097368 - Material: 117923942 - IsActive: true - Animator Component: - Rig: 72178939 - Clip: 72178939 - IsActive: true - Scripts: ~ -- EID: 219 - Name: Obj3 - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: 2.48987007, y: 0.868837833, z: -9.20810795} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 0.113750041, y: 0.113750041, z: 0.113750041} - IsActive: true - Renderable Component: - Mesh: 149723808 - Material: 117923942 - IsActive: true - Animator Component: - Rig: 80728853 - Clip: 80728853 - IsActive: true - Scripts: ~ -- EID: 218 - Name: Obj2 - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: 1.47563028, y: 0.454107046, z: -9.20810795} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 0.0350000113, y: 0.0350000113, z: 0.0350000113} - IsActive: true - Renderable Component: - Mesh: 135102560 - Material: 117923942 - IsActive: true - Animator Component: - Rig: 80500944 - Clip: 80500944 - IsActive: true - Scripts: ~ -- EID: 220 - Name: Obj4 - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: -0.050871402, y: -0.0112784812, z: -8.23628521} - Rotate: {x: 0, y: -1.57079601, z: 0} - Scale: {x: 0.318530291, y: 0.318552583, z: 0.318530291} - IsActive: true - Renderable Component: - Mesh: 134911040 - Material: 117923942 - IsActive: true - Animator Component: - Rig: 76715962 - Clip: 76715962 - IsActive: true - Scripts: ~ - EID: 198 Name: ====Raccoon==== IsActive: true @@ -4871,12 +7509,13 @@ IsActive: true Renderable Component: Mesh: 149697411 - Material: 126974645 + Material: 128805346 IsActive: true RigidBody Component: Type: Dynamic Drag: 0.00999999978 Angular Drag: 0.100000001 + Gravity Scale: 1 Use Gravity: false Interpolate: false Sleeping Enabled: true @@ -4891,14 +7530,19 @@ Colliders: - Is Trigger: false Collision Tag: 1 - Type: Box - Half Extents: {x: 0.400000006, y: 0.5, z: 0.300000012} + Type: Capsule + Radius: 0.300000012 + Height: 0.300000012 Friction: 0.400000006 Bounciness: 0 Density: 1 - Position Offset: {x: 0, y: 0.25, z: 0} + Position Offset: {x: 0, y: 0.300000012, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} IsActive: true + Animator Component: + Rig: 77816045 + AnimationController: 0 + IsActive: true Scripts: - Type: PlayerController Enabled: true @@ -4926,12 +7570,24 @@ throwItem: false rayDistance: 0.75 rayHeight: 0.100000001 - aimingFOV: 50 - defaultFOV: 45 - Type: StateMachine Enabled: true currentStateName: Idle State currentAnimName: "" + - Type: PlayerAnimations + Enabled: true + playerIdleClip: 227450439 + playerWalkClip: 229125027 + playerRunClip: 228149757 + playerPickUpClip: 219605278 + playerCarryIdleClip: 231128260 + playerCarryWalkClip: 227671720 + playerThrowClip: 223399345 + playerJumpStartClip: 223009573 + playerJumpLoopClip: 230974023 + playerJumpEndClip: 228134756 + silhouettePlayer: 462 + silhouetteBag: 465 - EID: 65733 Name: HoldingPoint IsActive: true @@ -4994,7 +7650,11 @@ IsActive: true Renderable Component: Mesh: 144838771 - Material: 123745521 + Material: 117923942 + IsActive: true + Animator Component: + Rig: 77816045 + AnimationController: 0 IsActive: true Scripts: ~ - EID: 462 @@ -5011,6 +7671,10 @@ Mesh: 149697411 Material: 126391182 IsActive: true + Animator Component: + Rig: 77816045 + AnimationController: 0 + IsActive: true Scripts: ~ - EID: 465 Name: SilouetteBag @@ -5026,6 +7690,10 @@ Mesh: 144838771 Material: 126391182 IsActive: true + Animator Component: + Rig: 77816045 + AnimationController: 0 + IsActive: true Scripts: ~ - EID: 65732 Name: RespawnPoint @@ -5083,7 +7751,7 @@ NumberOfChildren: 0 Components: ~ Scripts: - - Type: SHADE_Scripting.UI.TweenManager + - Type: TweenManager Enabled: true - EID: 461 Name: CameraPoints @@ -5191,9 +7859,9 @@ Material: 129340704 IsActive: true Button Component: - Default Texture: 63979907 - Hovered Texture: 51379325 - Clicked Texture: 66788278 + Default Texture: 63738242 + Hovered Texture: 58455648 + Clicked Texture: 66776217 IsActive: true UI Component: Canvas ID: 458 @@ -5203,10 +7871,10 @@ Scripts: - Type: SHADE_Scripting.UI.ButtonFX Enabled: true - onHoverEnterSound: Empty + onHoverEnterSound: event:/UI/botton_hover onHoverExitSound: Empty - onClickSound: event:/UI/mouse_down_element - onReleaseSound: Empty + onClickSound: event:/UI/button_success + onReleaseSound: event:/UI/button_fail hoverScale: 1.10000002 clickScale: 0.899999976 - EID: 456 @@ -5236,10 +7904,10 @@ Scripts: - Type: SHADE_Scripting.UI.ButtonFX Enabled: true - onHoverEnterSound: Empty + onHoverEnterSound: event:/UI/botton_hover onHoverExitSound: Empty - onClickSound: event:/UI/mouse_down_element - onReleaseSound: Empty + onClickSound: event:/UI/button_success + onReleaseSound: event:/UI/button_fail hoverScale: 1.10000002 clickScale: 0.899999976 - EID: 455 @@ -5257,9 +7925,9 @@ Material: 129340704 IsActive: true Button Component: - Default Texture: 64806384 - Hovered Texture: 58347825 - Clicked Texture: 63234380 + Default Texture: 64995894 + Hovered Texture: 58109178 + Clicked Texture: 60429179 IsActive: true UI Component: Canvas ID: 458 @@ -5269,10 +7937,10 @@ Scripts: - Type: SHADE_Scripting.UI.ButtonFX Enabled: true - onHoverEnterSound: Empty + onHoverEnterSound: event:/UI/botton_hover onHoverExitSound: Empty - onClickSound: event:/UI/mouse_down_element - onReleaseSound: Empty + onClickSound: event:/UI/button_success + onReleaseSound: event:/UI/button_fail hoverScale: 1.10000002 clickScale: 0.899999976 - EID: 454 @@ -5336,7 +8004,7 @@ - EID: 459 Name: Gameplay Canvas IsActive: true - NumberOfChildren: 3 + NumberOfChildren: 4 Components: Canvas Component: Canvas Width: 1920 @@ -5347,7 +8015,7 @@ - EID: 449 Name: Score Text IsActive: true - NumberOfChildren: 1 + NumberOfChildren: 0 Components: Transform Component: Translate: {x: -800, y: 365, z: 0.600000024} @@ -5365,27 +8033,15 @@ 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: ~ + Scripts: + - Type: SHADE_Scripting.UI.ScoreTextDigitPositioning + Enabled: true + offsetPerDigit: 25 + - Type: SHADE_Scripting.UI.SingleScaleBounce + Enabled: true + durationUp: 0.150000006 + durationDown: 0.300000012 + scaleSize: 1.20000005 - EID: 520 Name: Timer Text IsActive: true @@ -5474,4 +8130,44 @@ Hovered: false Clicked: false IsActive: true + Scripts: ~ +- EID: 521 + Name: Score BG + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -770, y: 425, z: 59.9999962} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 345.600006, y: 200, z: 60} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 127527215 + IsActive: true + UI Component: + Canvas ID: 459 + Hovered: false + Clicked: false + IsActive: true + Scripts: ~ +- EID: 503 + Name: DirectionalLight + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.407547206, y: 3.60323787, z: 2.62217617} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Light Component: + Position: {x: 0.300000012, y: 0, z: 0} + Type: Directional + Direction: {x: -1.15900004, y: 4.79300022, z: -0.994000018} + Color: {x: 1, y: 1, z: 1, w: 1} + Layer: 4294967295 + Strength: 0.800000012 + Casting Shadows: true + IsActive: true Scripts: ~ \ No newline at end of file diff --git a/Assets/Scenes/Level2.shade b/Assets/Scenes/Level2.shade index ef197542..c3c40c44 100644 --- a/Assets/Scenes/Level2.shade +++ b/Assets/Scenes/Level2.shade @@ -2892,7 +2892,7 @@ - EID: 199 Name: Gameplay Canvas IsActive: true - NumberOfChildren: 3 + NumberOfChildren: 4 Components: Canvas Component: Canvas Width: 1920 @@ -2903,7 +2903,7 @@ - EID: 237 Name: Score Text IsActive: true - NumberOfChildren: 1 + NumberOfChildren: 0 Components: Transform Component: Translate: {x: -800, y: 365, z: 0.600000024} @@ -2921,27 +2921,15 @@ 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: 199 - Hovered: false - Clicked: false - IsActive: true - Scripts: ~ + Scripts: + - Type: SHADE_Scripting.UI.ScoreTextDigitPositioning + Enabled: true + offsetPerDigit: 25 + - Type: SHADE_Scripting.UI.SingleScaleBounce + Enabled: true + durationUp: 0.150000006 + durationDown: 0.300000012 + scaleSize: 1.20000005 - EID: 206 Name: Timer Text IsActive: true @@ -3033,6 +3021,26 @@ Scripts: - Type: FixRotation Enabled: true +- EID: 521 + Name: Score BG + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -770, y: 425, z: 59.9999962} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 345.600006, y: 200, z: 60} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 127527215 + IsActive: true + UI Component: + Canvas ID: 199 + Hovered: false + Clicked: false + IsActive: true + Scripts: ~ - EID: 198 Name: ====Raccoon==== IsActive: true @@ -3051,7 +3059,7 @@ IsActive: true Renderable Component: Mesh: 149697411 - Material: 126974645 + Material: 128805346 IsActive: true RigidBody Component: Type: Dynamic @@ -3071,15 +3079,20 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 - Type: Box - Half Extents: {x: 0.400000006, y: 0.5, z: 0.300000012} + Collision Tag: 1 + Type: Capsule + Radius: 0.300000012 + Height: 0.300000012 Friction: 0.400000006 Bounciness: 0 Density: 1 - Position Offset: {x: 0, y: 0.25, z: 0} + Position Offset: {x: 0, y: 0.300000012, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} IsActive: true + Animator Component: + Rig: 77816045 + AnimationController: 0 + IsActive: true Scripts: - Type: PlayerController Enabled: true @@ -3107,8 +3120,20 @@ throwItem: false rayDistance: 0.75 rayHeight: 0.100000001 - aimingFOV: 50 - defaultFOV: 45 + - Type: PlayerAnimations + Enabled: true + playerIdleClip: 227450439 + playerWalkClip: 229125027 + playerRunClip: 228149757 + playerPickUpClip: 219605278 + playerCarryIdleClip: 231128260 + playerCarryWalkClip: 227671720 + playerThrowClip: 223399345 + playerJumpStartClip: 223009573 + playerJumpLoopClip: 230974023 + playerJumpEndClip: 228134756 + silhouettePlayer: 462 + silhouetteBag: 465 - EID: 3 Name: HoldingPoint IsActive: true @@ -3171,7 +3196,11 @@ IsActive: true Renderable Component: Mesh: 144838771 - Material: 123745521 + Material: 117923942 + IsActive: true + Animator Component: + Rig: 77816045 + AnimationController: 0 IsActive: true Scripts: ~ - EID: 462 @@ -3188,6 +3217,10 @@ Mesh: 149697411 Material: 126391182 IsActive: true + Animator Component: + Rig: 77816045 + AnimationController: 0 + IsActive: true Scripts: ~ - EID: 465 Name: SilouetteBag @@ -3203,6 +3236,10 @@ Mesh: 144838771 Material: 126391182 IsActive: true + Animator Component: + Rig: 77816045 + AnimationController: 0 + IsActive: true Scripts: ~ - EID: 239 Name: RespawnPoint @@ -5470,7 +5507,7 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: -3.45969725, y: 0, z: -2.61272359} + Translate: {x: 0, y: 0, z: -1.92464328} Rotate: {x: -0, y: 0, z: -0} Scale: {x: 1, y: 1, z: 1} IsActive: true @@ -5528,13 +5565,7 @@ Canvas Height: 1080 Scale by canvas width: false IsActive: false - Scripts: - - Type: PauseMenu - Enabled: true - resumeBtn: 8 - retryBtn: 458 - quitBtn: 0 - canvas: 10 + Scripts: ~ - EID: 8 Name: ResumeButton IsActive: true @@ -5550,9 +5581,9 @@ Material: 129340704 IsActive: true Button Component: - Default Texture: 63979907 - Hovered Texture: 51379325 - Clicked Texture: 66788278 + Default Texture: 63738242 + Hovered Texture: 58455648 + Clicked Texture: 66776217 IsActive: true UI Component: Canvas ID: 10 @@ -5562,10 +5593,10 @@ Scripts: - Type: SHADE_Scripting.UI.ButtonFX Enabled: true - onHoverEnterSound: Empty + onHoverEnterSound: event:/UI/botton_hover onHoverExitSound: Empty - onClickSound: event:/UI/mouse_down_element - onReleaseSound: Empty + onClickSound: event:/UI/button_success + onReleaseSound: event:/UI/button_fail hoverScale: 1.10000002 clickScale: 0.899999976 - EID: 0 @@ -5575,7 +5606,7 @@ Components: Transform Component: Translate: {x: 0, y: -300, z: 0} - Rotate: {x: -3.74789906, y: 1.43110418, z: 2.63486958} + Rotate: {x: 1.48352981, y: 0.5, z: 0.399993658} Scale: {x: 400, y: 100, z: 500} IsActive: true Renderable Component: @@ -5595,10 +5626,10 @@ Scripts: - Type: SHADE_Scripting.UI.ButtonFX Enabled: true - onHoverEnterSound: Empty + onHoverEnterSound: event:/UI/botton_hover onHoverExitSound: Empty - onClickSound: event:/UI/mouse_down_element - onReleaseSound: Empty + onClickSound: event:/UI/button_success + onReleaseSound: event:/UI/button_fail hoverScale: 1.10000002 clickScale: 0.899999976 - Type: FixRotation @@ -5618,9 +5649,9 @@ Material: 129340704 IsActive: true Button Component: - Default Texture: 64806384 - Hovered Texture: 58347825 - Clicked Texture: 63234380 + Default Texture: 64995894 + Hovered Texture: 58109178 + Clicked Texture: 60429179 IsActive: true UI Component: Canvas ID: 10 @@ -5630,10 +5661,10 @@ Scripts: - Type: SHADE_Scripting.UI.ButtonFX Enabled: true - onHoverEnterSound: Empty + onHoverEnterSound: event:/UI/botton_hover onHoverExitSound: Empty - onClickSound: event:/UI/mouse_down_element - onReleaseSound: Empty + onClickSound: event:/UI/button_success + onReleaseSound: event:/UI/button_fail hoverScale: 1.10000002 clickScale: 0.899999976 - EID: 11 @@ -6134,7 +6165,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 10, y: 1, z: 18} Friction: 0.400000006 @@ -6172,7 +6203,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 0.200000003, z: 0.25} Friction: 0.400000006 @@ -6181,7 +6212,7 @@ Position Offset: {x: 0, y: 2.0999999, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 0.899999976, z: 0.25} Friction: 0.400000006 @@ -6190,7 +6221,7 @@ Position Offset: {x: 0, y: 0.449999988, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -6199,7 +6230,7 @@ Position Offset: {x: -0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -6226,7 +6257,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -6235,7 +6266,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -6262,7 +6293,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -6289,7 +6320,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -6316,7 +6347,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -6343,7 +6374,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -6370,7 +6401,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -6397,7 +6428,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -6406,7 +6437,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -6433,7 +6464,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -6460,7 +6491,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -6487,7 +6518,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -6514,7 +6545,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 0.150000006, z: 0.25} Friction: 0.400000006 @@ -6523,7 +6554,7 @@ Position Offset: {x: 0, y: 2.125, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -6532,7 +6563,7 @@ Position Offset: {x: -0.455000013, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -6577,7 +6608,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.800000012, y: 2, z: 0.0350000001} Friction: 0.400000006 @@ -6594,8 +6625,8 @@ Components: Transform Component: Translate: {x: -5, y: 0, z: 3} - Rotate: {x: -0, y: 1.57079601, z: 0} - Scale: {x: 0.999980152, y: 1, z: 0.999980152} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999979854, y: 1, z: 0.999979854} IsActive: true Renderable Component: Mesh: 148351779 @@ -6604,7 +6635,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -6631,7 +6662,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -6640,7 +6671,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -6667,7 +6698,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -6694,7 +6725,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -6721,7 +6752,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -6748,7 +6779,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -6775,7 +6806,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -6802,7 +6833,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 0.150000006, z: 0.25} Friction: 0.400000006 @@ -6811,7 +6842,7 @@ Position Offset: {x: 0, y: 2.125, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -6820,7 +6851,7 @@ Position Offset: {x: -0.455000013, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -6892,7 +6923,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -6919,7 +6950,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -6946,7 +6977,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -6973,7 +7004,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -7000,7 +7031,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -7076,7 +7107,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.0500000007, z: 2} Friction: 0.400000006 @@ -7103,7 +7134,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.0500000007, z: 2} Friction: 0.400000006 @@ -7120,7 +7151,7 @@ Components: Transform Component: Translate: {x: -2, y: 0, 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 Renderable Component: @@ -7130,7 +7161,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.0500000007, z: 2} Friction: 0.400000006 @@ -7157,7 +7188,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.0500000007, z: 2} Friction: 0.400000006 @@ -7195,7 +7226,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.0500000007, z: 2} Friction: 0.400000006 @@ -7222,7 +7253,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.0500000007, z: 2} Friction: 0.400000006 @@ -7249,7 +7280,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.0500000007, z: 2} Friction: 0.400000006 @@ -7266,7 +7297,7 @@ Components: Transform Component: Translate: {x: -2, y: 0, 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 Renderable Component: @@ -7276,7 +7307,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.0500000007, z: 2} Friction: 0.400000006 @@ -7303,7 +7334,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.0500000007, z: 2} Friction: 0.400000006 @@ -7341,7 +7372,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.0500000007, z: 2} Friction: 0.400000006 @@ -7368,7 +7399,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.0500000007, z: 2} Friction: 0.400000006 @@ -7395,7 +7426,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.0500000007, z: 2} Friction: 0.400000006 @@ -7422,7 +7453,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.0500000007, z: 2} Friction: 0.400000006 @@ -7449,7 +7480,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.0500000007, z: 2} Friction: 0.400000006 @@ -7487,7 +7518,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.0500000007, z: 2} Friction: 0.400000006 @@ -7514,7 +7545,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.0500000007, z: 2} Friction: 0.400000006 @@ -7541,7 +7572,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.0500000007, z: 2} Friction: 0.400000006 @@ -7568,7 +7599,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.0500000007, z: 2} Friction: 0.400000006 @@ -7595,7 +7626,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.0500000007, z: 2} Friction: 0.400000006 @@ -7633,7 +7664,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.0500000007, z: 2} Friction: 0.400000006 @@ -7660,7 +7691,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.0500000007, z: 2} Friction: 0.400000006 @@ -7687,7 +7718,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.0500000007, z: 2} Friction: 0.400000006 @@ -7714,7 +7745,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.0500000007, z: 2} Friction: 0.400000006 @@ -7741,7 +7772,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.0500000007, z: 2} Friction: 0.400000006 @@ -7894,7 +7925,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.0500000007, z: 2} Friction: 0.400000006 @@ -7921,7 +7952,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.0500000007, z: 2} Friction: 0.400000006 @@ -7959,7 +7990,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.0500000007, z: 2} Friction: 0.400000006 @@ -7986,7 +8017,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.0500000007, z: 2} Friction: 0.400000006 @@ -8024,7 +8055,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -8033,7 +8064,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -8060,7 +8091,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -8069,7 +8100,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -8096,7 +8127,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.200000003, z: 0.25} Friction: 0.400000006 @@ -8105,7 +8136,7 @@ Position Offset: {x: 0, y: 2.0999999, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 0.899999976, z: 0.25} Friction: 0.400000006 @@ -8114,7 +8145,7 @@ Position Offset: {x: 0, y: 0.449999988, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -8123,7 +8154,7 @@ Position Offset: {x: -0.949999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -8150,7 +8181,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -8177,7 +8208,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -8204,7 +8235,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -8231,7 +8262,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -8639,8 +8670,8 @@ Components: Transform Component: Translate: {x: -1.5, y: 0, z: -1.5} - Rotate: {x: 0, y: -1.57079601, z: 0} - Scale: {x: 0.999761641, y: 1, z: 0.999761641} + Rotate: {x: -0, y: -1.57079601, z: 0} + Scale: {x: 0.999761581, y: 1, z: 0.999761581} IsActive: true Renderable Component: Mesh: 136828790 @@ -10588,9 +10619,9 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: -0.000432491302, y: 2, z: -1.14566433e-07} + Translate: {x: -0.000432729721, y: 2, z: -1.14566461e-07} Rotate: {x: -0, y: 1.57079601, z: 0} - Scale: {x: 0.99998945, y: 1, z: 0.99998945} + Scale: {x: 0.99998939, y: 1, z: 0.99998939} IsActive: true Renderable Component: Mesh: 147761585 @@ -10599,7 +10630,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} Friction: 0.400000006 @@ -10642,9 +10673,9 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 0, y: 0.878599584, z: -1.57223099e-07} + Translate: {x: -2.38418579e-07, y: 0.878599584, z: -1.14514904e-07} Rotate: {x: -0, y: 1.57079601, z: 0} - Scale: {x: 0.999942183, y: 1, z: 0.999942183} + Scale: {x: 0.999942064, y: 1, z: 0.999942064} IsActive: true Renderable Component: Mesh: 142336524 @@ -10653,7 +10684,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 7 Type: Box Half Extents: {x: 0.899999976, y: 0.100000001, z: 1.89999998} Friction: 0.400000006 @@ -10680,7 +10711,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 1, z: 0.100000001} Friction: 0.400000006 @@ -10689,7 +10720,7 @@ Position Offset: {x: 0, y: 0.5, z: -1.14999998} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 1, z: 0.100000001} Friction: 0.400000006 @@ -10705,9 +10736,9 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: -0.000432729721, y: 0, z: -1.14566461e-07} + Translate: {x: -0.00043296814, y: 0, z: -1.1456649e-07} Rotate: {x: -0, y: 1.57079601, z: 0} - Scale: {x: 0.99994278, y: 1, z: 0.99994278} + Scale: {x: 0.99994266, y: 1, z: 0.99994266} IsActive: true Renderable Component: Mesh: 140066298 @@ -10716,7 +10747,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 1, z: 0.100000001} Friction: 0.400000006 @@ -10725,7 +10756,7 @@ Position Offset: {x: 0, y: 0.5, z: -1.14999998} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 1, z: 0.100000001} Friction: 0.400000006 @@ -10826,7 +10857,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} Friction: 0.400000006 @@ -10880,7 +10911,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 7 Type: Box Half Extents: {x: 0.899999976, y: 0.100000001, z: 1.89999998} Friction: 0.400000006 @@ -10907,7 +10938,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 1, z: 0.100000001} Friction: 0.400000006 @@ -10916,7 +10947,7 @@ Position Offset: {x: 0, y: 0.5, z: -0.954999983} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 1, z: 0.100000001} Friction: 0.400000006 @@ -10932,8 +10963,8 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 0.000105836909, y: 0, z: 0.000872135162} - Rotate: {x: -0, y: 1.57079601, z: -0} + Translate: {x: 0.000105844418, y: 6.11775647e-07, z: 0.000879764557} + Rotate: {x: 0, y: 1.57079601, z: -0} Scale: {x: 0.999942899, y: 1, z: 0.999942899} IsActive: true Renderable Component: @@ -10943,7 +10974,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 1, z: 0.100000001} Friction: 0.400000006 @@ -10952,7 +10983,7 @@ Position Offset: {x: 0, y: 0.5, z: -0.954999983} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 1, z: 0.100000001} Friction: 0.400000006 @@ -11017,7 +11048,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} Friction: 0.400000006 @@ -11033,9 +11064,9 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 0.000216073822, y: 1, z: -0.500002861} - Rotate: {x: 2.98023224e-08, y: 1.57079542, z: 1.57079542} - Scale: {x: 2, y: 0.999999523, z: 1.10000002} + Translate: {x: 0.000216193032, y: 1, z: -0.500002861} + Rotate: {x: 2.98022655e-08, y: 1.57079542, z: 1.5707953} + Scale: {x: 1.99999988, y: 0.999999464, z: 1.10000002} IsActive: true Renderable Component: Mesh: 139576452 @@ -11061,7 +11092,7 @@ Components: Transform Component: Translate: {x: -2.49641334e-06, y: 1, z: -2.86102295e-06} - Rotate: {x: -0, y: 1.57079601, z: 0} + Rotate: {x: -0, y: 1.57079601, z: -0} Scale: {x: 0.999976516, y: 1, z: 0.999976516} IsActive: true Renderable Component: @@ -11071,7 +11102,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 7 Type: Box Half Extents: {x: 0.899999976, y: 0.100000001, z: 1.89999998} Friction: 0.400000006 @@ -11088,7 +11119,7 @@ Components: Transform Component: Translate: {x: -2.49641334e-06, y: 1, z: -2.86102295e-06} - Rotate: {x: -0, y: 1.57079601, z: 0} + Rotate: {x: -0, y: 1.57079601, z: -0} Scale: {x: 0.999963403, y: 1, z: 0.999963403} IsActive: true Renderable Component: @@ -11098,7 +11129,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 1, z: 0.100000001} Friction: 0.400000006 @@ -11107,7 +11138,7 @@ Position Offset: {x: 0, y: 0.5, z: -0.954999983} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 1, z: 0.100000001} Friction: 0.400000006 @@ -11124,7 +11155,7 @@ Components: Transform Component: Translate: {x: -2.49641334e-06, y: 0, z: -2.86102295e-06} - Rotate: {x: -0, y: 1.57079601, z: 0} + Rotate: {x: -0, y: 1.57079601, z: -0} Scale: {x: 0.999942899, y: 1, z: 0.999942899} IsActive: true Renderable Component: @@ -11134,7 +11165,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 1, z: 0.100000001} Friction: 0.400000006 @@ -11143,7 +11174,7 @@ Position Offset: {x: 0, y: 0.5, z: -0.954999983} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 1, z: 0.100000001} Friction: 0.400000006 @@ -11307,7 +11338,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} Friction: 0.400000006 @@ -11361,7 +11392,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 1, z: 0.100000001} Friction: 0.400000006 @@ -11370,7 +11401,7 @@ Position Offset: {x: 0, y: 0.5, z: -0.954999983} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 1, z: 0.100000001} Friction: 0.400000006 @@ -14094,9 +14125,7 @@ IsActive: true NumberOfChildren: 0 Components: ~ - Scripts: - - Type: SHADE_Scripting.UI.TweenManager - Enabled: true + Scripts: ~ - EID: 549 Name: StealFoodCanvas IsActive: true @@ -14178,7 +14207,7 @@ NumberOfChildren: 0 Components: ~ Scripts: - - Type: SHADE_Scripting.UI.TweenManager + - Type: TweenManager Enabled: true - EID: 554 Name: CameraPoints diff --git a/Assets/Scenes/Level3.shade b/Assets/Scenes/Level3.shade index 19224e22..b116d292 100644 --- a/Assets/Scenes/Level3.shade +++ b/Assets/Scenes/Level3.shade @@ -10,6 +10,7 @@ Color: {x: 1, y: 1, z: 1, w: 1} Layer: 4294967295 Strength: 1 + Casting Shadows: false IsActive: true Scripts: ~ - EID: 36 @@ -24,12 +25,13 @@ Color: {x: 1, y: 1, z: 1, w: 1} Layer: 4294967295 Strength: 0.5 + Casting Shadows: false IsActive: true Scripts: ~ - EID: 449 Name: Enviroment IsActive: true - NumberOfChildren: 13 + NumberOfChildren: 14 Components: ~ Scripts: ~ - EID: 78 @@ -71,7 +73,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -80,7 +82,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -107,7 +109,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -116,7 +118,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -143,7 +145,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 3.22600007, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -170,7 +172,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -179,7 +181,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -206,7 +208,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -215,7 +217,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -242,7 +244,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -269,7 +271,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.400000006, y: 0.300000012, z: 1.70000005} Friction: 0.400000006 @@ -278,7 +280,7 @@ Position Offset: {x: 0.660000026, y: -0.400000006, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.400000006, y: 0.300000012, z: 1.70000005} Friction: 0.400000006 @@ -287,7 +289,7 @@ Position Offset: {x: 1, y: -0.600000024, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.400000006, y: 0.300000012, z: 1.70000005} Friction: 0.400000006 @@ -296,7 +298,7 @@ Position Offset: {x: 1.36000001, y: -0.899999976, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.400000006, y: 0.300000012, z: 1.70000005} Friction: 0.400000006 @@ -305,7 +307,7 @@ Position Offset: {x: 1.70000005, y: -1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.400000006, y: 0.300000012, z: 1.70000005} Friction: 0.400000006 @@ -314,7 +316,7 @@ Position Offset: {x: 2.04999995, y: -1.39999998, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.400000006, y: 0.300000012, z: 1.70000005} Friction: 0.400000006 @@ -323,7 +325,7 @@ Position Offset: {x: 2.4000001, y: -1.64999998, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.400000006, y: 0.300000012, z: 1.70000005} Friction: 0.400000006 @@ -332,7 +334,7 @@ Position Offset: {x: 2.75, y: -1.86000001, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.400000006, y: 0.300000012, z: 1.70000005} Friction: 0.400000006 @@ -359,7 +361,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -386,7 +388,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -413,7 +415,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -422,7 +424,7 @@ Position Offset: {x: 0.0500000007, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -449,7 +451,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -476,7 +478,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -503,7 +505,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -530,7 +532,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -539,7 +541,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.93700004} Friction: 0.400000006 @@ -566,7 +568,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -575,7 +577,7 @@ Position Offset: {x: 0.0500000007, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -602,7 +604,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -611,7 +613,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -638,7 +640,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -665,7 +667,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -692,7 +694,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 4.05200005, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -734,7 +736,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -791,7 +793,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.883000016, y: 1.08800006, z: 0.232999995} Friction: 0.400000006 @@ -818,7 +820,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2.13700008, y: 1.028, z: 0.324999988} Friction: 0.400000006 @@ -845,7 +847,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.883000016, y: 1.08800006, z: 0.232999995} Friction: 0.400000006 @@ -872,7 +874,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1274,7 +1276,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1301,7 +1303,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1310,7 +1312,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -1790,7 +1792,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1799,7 +1801,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -1826,7 +1828,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1835,7 +1837,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -1862,7 +1864,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1871,7 +1873,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -1898,7 +1900,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1907,7 +1909,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -1924,8 +1926,8 @@ Components: Transform Component: Translate: {x: 7, y: 0, z: 1} - Rotate: {x: 0, y: -1.57079601, z: 0} - Scale: {x: 0.999954402, y: 1, z: 0.999954402} + Rotate: {x: -0, y: -1.57079601, z: 0} + Scale: {x: 0.999954343, y: 1, z: 0.999954343} IsActive: true Renderable Component: Mesh: 142118787 @@ -1934,7 +1936,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1943,7 +1945,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.149000004, y: 2.20000005, z: 2.204} Friction: 0.400000006 @@ -1970,7 +1972,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -1979,7 +1981,7 @@ Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} Friction: 0.400000006 @@ -2006,7 +2008,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2023,7 +2025,7 @@ Components: Transform Component: Translate: {x: 10, y: 0, z: 1} - 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: @@ -2033,7 +2035,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 3.93700004, y: 2.20000005, z: 0.224999994} Friction: 0.400000006 @@ -2060,7 +2062,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2087,7 +2089,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2114,7 +2116,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2141,7 +2143,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2168,7 +2170,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2195,7 +2197,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2237,7 +2239,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2264,7 +2266,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2291,7 +2293,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2318,7 +2320,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2.04500008, y: 0.896000028, z: 0.275000006} Friction: 0.400000006 @@ -2345,7 +2347,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2372,7 +2374,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2399,7 +2401,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2426,7 +2428,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2453,7 +2455,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2480,7 +2482,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2507,7 +2509,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 2, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2624,7 +2626,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 1, y: 2.20000005, z: 0.25} Friction: 0.400000006 @@ -2651,7 +2653,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 0.200000003, y: 2.20000005, z: 0.200000003} Friction: 0.400000006 @@ -3665,6 +3667,8 @@ Scripts: - Type: JumpPad Enabled: true + scaleYMaxSize: 2 + scaleDuration: 0.25 - EID: 172 Name: BouncyPlatform IsActive: true @@ -3694,6 +3698,8 @@ Scripts: - Type: JumpPad Enabled: true + scaleYMaxSize: 2 + scaleDuration: 0.25 - EID: 173 Name: BouncyPlatform IsActive: true @@ -3723,6 +3729,8 @@ Scripts: - Type: JumpPad Enabled: true + scaleYMaxSize: 2 + scaleDuration: 0.25 - EID: 174 Name: BouncyPlatform IsActive: true @@ -3752,6 +3760,8 @@ Scripts: - Type: JumpPad Enabled: true + scaleYMaxSize: 2 + scaleDuration: 0.25 - EID: 176 Name: KitchenetteCounter IsActive: true @@ -5611,7 +5621,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 7 Type: Box Half Extents: {x: 15, y: 1, z: 15} Friction: 0.400000006 @@ -5634,7 +5644,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 7 Type: Box Half Extents: {x: 6, y: 0.200000003, z: 5} Friction: 0.400000006 @@ -5657,7 +5667,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 7 Type: Box Half Extents: {x: 10, y: 0.200000003, z: 3} Friction: 0.400000006 @@ -5680,7 +5690,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 15, y: 1, z: 15} Friction: 0.400000006 @@ -5697,13 +5707,13 @@ Components: Transform Component: Translate: {x: 1.93802273, y: 2.39508605, z: 4.01721716} - Rotate: {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: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 6, y: 0.5, z: 0.150000006} Friction: 0.400000006 @@ -5720,13 +5730,13 @@ Components: Transform Component: Translate: {x: 0, y: 0, 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 Collider Component: Colliders: - Is Trigger: false - Collision Tag: 0 + Collision Tag: 7 Type: Box Half Extents: {x: 4.01900005, y: 1.10099995, z: 0.147} Friction: 0.400000006 @@ -5772,7 +5782,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 1 + Collision Tag: 0 Type: Box Half Extents: {x: 0.200000003, y: 0.5, z: 2.5} Friction: 0.400000006 @@ -5782,13 +5792,2542 @@ Rotation Offset: {x: 0, y: 0, z: 0} IsActive: true Scripts: ~ +- EID: 457 + Name: Exterior + IsActive: true + NumberOfChildren: 3 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 2.61762547, y: 1, z: 1.02465701} + IsActive: true + Scripts: ~ +- EID: 437 + Name: Trees + IsActive: true + NumberOfChildren: 15 + Components: ~ + Scripts: ~ +- EID: 65842 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: 10.1952591, y: 0, z: 10.7309589} + Rotate: {x: 0, y: 1.9471432, z: 0} + Scale: {x: 0.749998093, y: 0.75, z: 0.749998093} + IsActive: true + Scripts: ~ +- EID: 297 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.99999917, y: 0, z: 1.25000107} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 298 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.24999964, y: 0, z: -0.999999106} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 299 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.50000006, y: 0, z: 1.00000012} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 300 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25000167, y: 0, z: -0.75000006} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 301 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.49999928, y: 0, z: -0.499999076} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 302 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.7500006, y: 0, z: -0.999998152} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 303 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.25000146, y: 0, z: -0.75000006} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 304 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75000072, y: 0, z: -1.24999821} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 305 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.99999917, y: 0, z: 1.25000107} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 307 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: -7.94254541, y: 9.95685014e-07, z: 10.1371737} + Rotate: {x: -0, y: -0.934578657, z: 0} + Scale: {x: 0.946708083, y: 0.947038352, z: 0.946708083} + IsActive: true + Scripts: ~ +- EID: 308 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000024, y: 0, z: 1.25000095} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 309 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.24999964, y: 0, z: -0.999999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 310 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.499999911, y: 0, z: 1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 311 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25000024, y: 0, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 312 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.50000024, y: 0, z: -0.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 313 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75000012, y: 0, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 314 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.250002086, y: 0, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 315 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.74999928, y: 0, z: -1.24999905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 316 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000024, y: 0, z: 1.25000095} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 317 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: 7.0228982, y: 0, z: 14.5601959} + Rotate: {x: 0, y: 0.723479152, z: 0} + Scale: {x: 0.75, y: 0.75, z: 0.75} + IsActive: true + Scripts: ~ +- EID: 318 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.99999905, y: 0, z: 1.24999952} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 319 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.24999952, y: 0, z: -1.00000095} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 320 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.5, y: 0, z: 0.999998093} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 321 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25000095, y: 0, z: -0.750000477} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 322 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.49999905, y: 0, z: -0.500001431} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 323 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75000048, y: 0, z: -1.00000095} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 324 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.250000954, y: 0, z: -0.750000954} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 325 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.74999905, y: 0, z: -1.25000143} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 326 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.99999905, y: 0, z: 1.24999952} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 327 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: 1.25, y: 0, z: 14.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.75, y: 0.75, z: 0.75} + IsActive: true + Scripts: ~ +- EID: 328 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 1.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 329 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.25000012, y: 0, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 330 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500000119, y: 0, z: 1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 331 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25, y: 0, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 332 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.50000048, y: 0, z: -0.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 333 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75, y: 0, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 334 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.249999881, y: 0, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 335 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75000048, y: 0, z: -1.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 336 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 1.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 337 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: -3.74656153, y: 5.05771936e-07, z: 15.2930593} + Rotate: {x: 0, y: -0.566242754, z: 0} + Scale: {x: 0.749999821, y: 0.75, z: 0.749999821} + IsActive: true + Scripts: ~ +- EID: 338 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.99999976, y: 0, z: 1.25000167} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 339 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.24999952, y: 0, z: -0.999999881} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 340 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500000954, y: 0, z: 1.00000238} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 341 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25000048, y: 0, z: -0.749999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 342 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.5, y: 0, z: -0.499999404} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 343 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75, y: 0, z: -0.999998808} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 344 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.249999523, y: 0, z: -0.749997854} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 345 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75000095, y: 0, z: -1.24999714} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 346 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.99999976, y: 0, z: 1.25000167} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 347 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: -8.91827679, y: 1.92174866e-07, z: -11.9713926} + Rotate: {x: 0, y: -2.5559175, z: 0} + Scale: {x: 0.749962032, y: 0.75, z: 0.749962032} + IsActive: true + Scripts: ~ +- EID: 348 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000095, y: 0, z: 1.25000143} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 349 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.25000095, y: 0, z: -0.999999523} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 350 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500001907, y: 0, z: 1.00000095} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 351 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.24999952, y: 0, z: -0.749999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 352 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.50000095, y: 0, z: -0.499999523} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 353 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75000095, y: 0, z: -0.999999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 354 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.25, y: 0, z: -0.749998569} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 355 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75, y: 0, z: -1.24999905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 356 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000095, y: 0, z: 1.25000143} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 357 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: -3.85509062, y: 1.903868e-07, z: -13.8841438} + Rotate: {x: 0, y: 2.91411972, z: 0} + Scale: {x: 0.749867201, y: 0.75, z: 0.749867201} + IsActive: true + Scripts: ~ +- EID: 460 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: 0, z: 1.25000083} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 359 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.25000048, y: 0, z: -0.999998808} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 360 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500000954, y: 0, z: 1.00000167} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 361 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.24999976, y: 0, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 362 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.50000048, y: 0, z: -0.499998808} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 363 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.74999952, y: 0, z: -0.999998927} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 364 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.249999046, y: 0, z: -0.749997973} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 365 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75000143, y: 0, z: -1.24999905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 366 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: 0, z: 1.25000083} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 367 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: 1.08703649, y: 1.755852e-07, z: -12.8693295} + Rotate: {x: 0, y: -2.83319044, z: 0} + Scale: {x: 0.749794662, y: 0.75, z: 0.749794662} + IsActive: true + Scripts: ~ +- EID: 368 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: -1.42108564e-14, z: 1.24999857} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 369 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.25000036, y: -1.42108564e-14, z: -1.00000179} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 370 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.499999672, y: -1.42108564e-14, z: 0.999998927} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 371 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.24999976, y: -1.42108564e-14, z: -0.750001252} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 372 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.50000024, y: -1.42108564e-14, z: -0.500000834} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 373 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75000012, y: -1.42108564e-14, z: -1.00000095} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 374 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.249999776, y: -1.42108564e-14, z: -0.750001192} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 375 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75000024, y: -1.42108564e-14, z: -1.2500006} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 376 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: -1.42108564e-14, z: 1.24999857} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 377 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: 7.25601864, y: 1.55680326e-07, z: -11.2872229} + Rotate: {x: 0, y: 2.30721998, z: 0} + Scale: {x: 0.749779522, y: 0.75, z: 0.749779522} + IsActive: true + Scripts: ~ +- EID: 378 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: -1.42108547e-14, z: 1.25000048} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 379 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.25000048, y: -1.42108547e-14, z: -1.00000048} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 380 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.499999523, y: -1.42108547e-14, z: 1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 381 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.24999952, y: -1.42108547e-14, z: -0.749999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 382 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.50000048, y: -1.42108547e-14, z: -0.500000477} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 383 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.74999952, y: -1.42108547e-14, z: -0.999999523} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 384 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.249999523, y: -1.42108547e-14, z: -0.749999523} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 459 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75, y: -1.42108547e-14, z: -1.24999905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 458 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: -1.42108547e-14, z: 1.25000048} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 456 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: 4.38531399, y: 1.85469574e-07, z: -15.6559658} + Rotate: {x: 0, y: 2.89864969, z: 0} + Scale: {x: 0.802338541, y: 0.802574933, z: 0.802338541} + IsActive: true + Scripts: ~ +- EID: 455 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000072, y: 2.84217094e-14, z: 1.24999976} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 454 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.25000095, y: 2.84217094e-14, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 453 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500000954, y: 2.84217094e-14, z: 1.00000107} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 452 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.24999905, y: 2.84217094e-14, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 451 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.5, y: 2.84217094e-14, z: -0.50000155} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 450 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.74999857, y: 2.84217094e-14, z: -0.999999523} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 444 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.249999523, y: 2.84217094e-14, z: -0.750000596} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 443 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75000072, y: 2.84217094e-14, z: -1.25000167} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 442 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000072, y: 2.84217094e-14, z: 1.24999976} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 441 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: 12.1907196, y: 1.36533259e-07, z: -6.39172125} + Rotate: {x: -0, y: 2.54303765, z: 0} + Scale: {x: 0.802329481, y: 0.802574933, z: 0.802329481} + IsActive: true + Scripts: ~ +- EID: 440 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: -1.42108547e-14, z: 1.24999905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 439 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.2499994, y: -1.42108547e-14, z: -1.00000095} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 438 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.499999583, y: -1.42108547e-14, z: 0.999997139} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 436 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25000048, y: -1.42108547e-14, z: -0.750000954} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 435 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.49999976, y: -1.42108547e-14, z: -0.500000954} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 434 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75000012, y: -2.84217094e-14, z: -1} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 433 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.250000358, y: -1.42108547e-14, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 432 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.74999976, y: -1.42108547e-14, z: -1.25000191} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 431 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: -1.42108547e-14, z: 1.24999905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 430 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: -10.3963461, y: 1.0311652e-06, z: -5.21996689} + Rotate: {x: 0, y: 1.85743773, z: 0} + Scale: {x: 0.802347541, y: 0.802574933, z: 0.802347541} + IsActive: true + Scripts: ~ +- EID: 429 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000024, y: 0, z: 1.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 428 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.24999952, y: 0, z: -0.999999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 427 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500000238, y: 0, z: 1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 426 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.24999952, y: 0, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 425 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.5, y: 0, z: -0.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 424 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75, y: 0, z: -0.999999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 423 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.250001431, y: 0, z: -0.749999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 422 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75000048, y: 0, z: -1.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 421 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000024, y: 0, z: 1.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 420 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: -11.8055868, y: 1.02849719e-06, z: -0.449734211} + Rotate: {x: 0, y: -1.17325497, z: 0} + Scale: {x: 0.802348375, y: 0.802574933, z: 0.802348375} + IsActive: true + Scripts: ~ +- EID: 418 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 1.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 419 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.25, y: 0, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 296 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.499999523, y: 0, z: 1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 273 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25000048, y: 0, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 272 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.49999952, y: 0, z: -0.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 271 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75000024, y: 0, z: -0.999999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 270 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.250002384, y: 0, z: -0.749999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 269 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.74999952, y: 0, z: -1.24999905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 268 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 1.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 267 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: -10.6890984, y: 1.0175379e-06, z: 5.88018131} + Rotate: {x: 0, y: -1.55548835, z: 0} + Scale: {x: 0.80234766, y: 0.802574933, z: 0.80234766} + IsActive: true + Scripts: ~ +- EID: 266 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: 1.13686838e-13, z: 1.25000191} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 265 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.24999988, y: 1.13686838e-13, z: -0.999998093} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 264 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500000358, y: 1.13686838e-13, z: 1.00000191} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 263 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25, y: 1.13686838e-13, z: -0.749999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 262 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.50000048, y: 1.13686838e-13, z: -0.499999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 261 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.74999976, y: 1.13686838e-13, z: -0.999999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 260 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.250001878, y: 1.13686838e-13, z: -0.749998093} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 259 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75000048, y: 1.13686838e-13, z: -1.24999905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 258 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: 1.13686838e-13, z: 1.25000191} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 65831 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: -13.7129259, y: 1.02942158e-06, z: 3.45037246} + Rotate: {x: 0, y: -1.55548823, z: 0} + Scale: {x: 0.946770251, y: 0.947038352, z: 0.946770251} + IsActive: true + Scripts: ~ +- EID: 65830 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000024, y: 0, z: 1.25000095} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 65829 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.24999964, y: 0, z: -0.999999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 65828 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.499999911, y: 0, z: 1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 65827 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25000024, y: 0, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 65826 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.50000024, y: 0, z: -0.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 65825 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75000012, y: 0, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 65824 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.250002086, y: 0, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 65823 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.74999928, y: 0, z: -1.24999905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 65822 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000024, y: 0, z: 1.25000095} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 257 + Name: BushCluster + IsActive: true + NumberOfChildren: 10 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: -9.27025223} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 256 + Name: Exterior_Bush01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5.81465149, y: -4.76837158e-07, z: 0.386853218} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 143461339 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 255 + Name: Exterior_Bush02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.331082046, y: 0, z: 0.392630577} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136373407 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 254 + Name: Exterior_Bush03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.06180131, y: 0, z: 0.439988136} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144928031 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 253 + Name: Exterior_Bush01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -7.09583855, y: -4.76837158e-07, z: 0.386853218} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 143461339 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 252 + Name: Exterior_Bush03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4.03810406, y: 0, z: 0.439988136} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144928031 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 251 + Name: Exterior_Bush02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.52796364, y: 0, z: 0.392630577} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136373407 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 250 + Name: Exterior_Bush01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.52529955, y: -4.76837158e-07, z: 0.386853218} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 143461339 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 249 + Name: Exterior_Bush02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -5.5497098, y: 0, z: 0.392630577} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136373407 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 248 + Name: Exterior_Bush01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.79356122, y: -4.76837158e-07, z: 0.386853218} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 143461339 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 247 + Name: Exterior_Bush02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.18613672, y: 0, z: 0.392630577} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136373407 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 246 + Name: BushCluster + IsActive: true + NumberOfChildren: 10 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 11.2170467} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 245 + Name: Exterior_Bush01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5.81465149, y: -4.76837158e-07, z: 0.386853218} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 143461339 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 244 + Name: Exterior_Bush02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.331082046, y: 0, z: 0.392630577} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136373407 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 243 + Name: Exterior_Bush03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.06180131, y: 0, z: 0.439988136} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144928031 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 240 + Name: Exterior_Bush01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -7.09583855, y: -4.76837158e-07, z: 0.386853218} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 143461339 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 236 + Name: Exterior_Bush03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4.03810406, y: 0, z: 0.439988136} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144928031 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 235 + Name: Exterior_Bush02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.52796364, y: 0, z: 0.392630577} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136373407 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 234 + Name: Exterior_Bush01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.52529955, y: -4.76837158e-07, z: 0.386853218} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 143461339 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 233 + Name: Exterior_Bush02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -5.5497098, y: 0, z: 0.392630577} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136373407 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 232 + Name: Exterior_Bush01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.79356122, y: -4.76837158e-07, z: 0.386853218} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 143461339 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 231 + Name: Exterior_Bush02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.18613672, y: 0, z: 0.392630577} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136373407 + Material: 131956078 + IsActive: true + Scripts: ~ - EID: 553 Name: TweenManager IsActive: true NumberOfChildren: 0 Components: ~ Scripts: - - Type: SHADE_Scripting.UI.TweenManager + - Type: TweenManager Enabled: true - EID: 551 Name: TransitionCanvas @@ -5891,9 +8430,9 @@ Material: 129340704 IsActive: true Button Component: - Default Texture: 63979907 - Hovered Texture: 51379325 - Clicked Texture: 66788278 + Default Texture: 63738242 + Hovered Texture: 58455648 + Clicked Texture: 66776217 IsActive: true UI Component: Canvas ID: 547 @@ -5903,10 +8442,10 @@ Scripts: - Type: SHADE_Scripting.UI.ButtonFX Enabled: true - onHoverEnterSound: Empty + onHoverEnterSound: event:/UI/botton_hover onHoverExitSound: Empty - onClickSound: event:/UI/mouse_down_element - onReleaseSound: Empty + onClickSound: event:/UI/button_success + onReleaseSound: event:/UI/button_fail hoverScale: 1.10000002 clickScale: 0.899999976 - EID: 545 @@ -5936,10 +8475,10 @@ Scripts: - Type: SHADE_Scripting.UI.ButtonFX Enabled: true - onHoverEnterSound: Empty + onHoverEnterSound: event:/UI/botton_hover onHoverExitSound: Empty - onClickSound: event:/UI/mouse_down_element - onReleaseSound: Empty + onClickSound: event:/UI/button_success + onReleaseSound: event:/UI/button_fail hoverScale: 1.10000002 clickScale: 0.899999976 - Type: FixRotation @@ -5959,9 +8498,9 @@ Material: 129340704 IsActive: true Button Component: - Default Texture: 64806384 - Hovered Texture: 58347825 - Clicked Texture: 63234380 + Default Texture: 64995894 + Hovered Texture: 58109178 + Clicked Texture: 60429179 IsActive: true UI Component: Canvas ID: 547 @@ -5971,10 +8510,10 @@ Scripts: - Type: SHADE_Scripting.UI.ButtonFX Enabled: true - onHoverEnterSound: Empty + onHoverEnterSound: event:/UI/botton_hover onHoverExitSound: Empty - onClickSound: event:/UI/mouse_down_element - onReleaseSound: Empty + onClickSound: event:/UI/button_success + onReleaseSound: event:/UI/button_fail hoverScale: 1.10000002 clickScale: 0.899999976 - EID: 543 @@ -6005,7 +8544,7 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 0.830674767, y: 0, z: 1.40718019} + Translate: {x: 2.16695547, y: 0.0687829852, z: 0.574704885} Rotate: {x: -0, y: 0, z: -0} Scale: {x: 1, y: 1, z: 1} IsActive: true @@ -6161,7 +8700,7 @@ - EID: 526 Name: Gameplay Canvas IsActive: true - NumberOfChildren: 3 + NumberOfChildren: 4 Components: Canvas Component: Canvas Width: 1920 @@ -6172,7 +8711,7 @@ - EID: 237 Name: Score Text IsActive: true - NumberOfChildren: 1 + NumberOfChildren: 0 Components: Transform Component: Translate: {x: -800, y: 365, z: 0.600000024} @@ -6190,27 +8729,15 @@ 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: ~ + Scripts: + - Type: SHADE_Scripting.UI.ScoreTextDigitPositioning + Enabled: true + offsetPerDigit: 25 + - Type: SHADE_Scripting.UI.SingleScaleBounce + Enabled: true + durationUp: 0.150000006 + durationDown: 0.300000012 + scaleSize: 1.20000005 - EID: 525 Name: Timer Text IsActive: true @@ -6302,6 +8829,26 @@ Scripts: - Type: FixRotation Enabled: true +- EID: 521 + Name: Score BG + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -770, y: 425, z: 59.9999962} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 345.600006, y: 200, z: 60} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 127527215 + IsActive: true + UI Component: + Canvas ID: 526 + Hovered: false + Clicked: false + IsActive: true + Scripts: ~ - EID: 238 Name: ====GameManager==== IsActive: true @@ -9073,7 +11620,7 @@ IsActive: true Renderable Component: Mesh: 149697411 - Material: 126974645 + Material: 128805346 IsActive: true RigidBody Component: Type: Dynamic @@ -9094,14 +11641,19 @@ Colliders: - Is Trigger: false Collision Tag: 1 - Type: Box - Half Extents: {x: 0.400000006, y: 0.5, z: 0.300000012} + Type: Capsule + Radius: 0.300000012 + Height: 0.300000012 Friction: 0.400000006 Bounciness: 0 Density: 1 - Position Offset: {x: 0, y: 0.25, z: 0} + Position Offset: {x: 0, y: 0.300000012, z: 0} Rotation Offset: {x: 0, y: 0, z: 0} IsActive: true + Animator Component: + Rig: 77816045 + AnimationController: 0 + IsActive: true Scripts: - Type: PlayerController Enabled: true @@ -9129,8 +11681,20 @@ throwItem: false rayDistance: 0.75 rayHeight: 0.100000001 - aimingFOV: 50 - defaultFOV: 45 + - Type: PlayerAnimations + Enabled: true + playerIdleClip: 227450439 + playerWalkClip: 229125027 + playerRunClip: 228149757 + playerPickUpClip: 219605278 + playerCarryIdleClip: 231128260 + playerCarryWalkClip: 227671720 + playerThrowClip: 223399345 + playerJumpStartClip: 223009573 + playerJumpLoopClip: 230974023 + playerJumpEndClip: 228134756 + silhouettePlayer: 462 + silhouetteBag: 465 - EID: 66068 Name: HoldingPoint IsActive: true @@ -9193,7 +11757,11 @@ IsActive: true Renderable Component: Mesh: 144838771 - Material: 123745521 + Material: 117923942 + IsActive: true + Animator Component: + Rig: 77816045 + AnimationController: 0 IsActive: true Scripts: ~ - EID: 462 @@ -9210,6 +11778,10 @@ Mesh: 149697411 Material: 126391182 IsActive: true + Animator Component: + Rig: 77816045 + AnimationController: 0 + IsActive: true Scripts: ~ - EID: 465 Name: SilouetteBag @@ -9225,6 +11797,10 @@ Mesh: 144838771 Material: 126391182 IsActive: true + Animator Component: + Rig: 77816045 + AnimationController: 0 + IsActive: true Scripts: ~ - EID: 66065 Name: RespawnPoint diff --git a/Assets/Scenes/LoseScene.shade b/Assets/Scenes/LoseScene.shade index f8baefc8..b74fb117 100644 --- a/Assets/Scenes/LoseScene.shade +++ b/Assets/Scenes/LoseScene.shade @@ -10,6 +10,7 @@ Color: {x: 1, y: 1, z: 1, w: 1} Layer: 4294967295 Strength: 0 + Casting Shadows: false IsActive: true Scripts: ~ - EID: 1 @@ -73,10 +74,10 @@ sceneID: 97158628 - Type: SHADE_Scripting.UI.ButtonFX Enabled: true - onHoverEnterSound: Empty + onHoverEnterSound: event:/UI/botton_hover onHoverExitSound: Empty - onClickSound: event:/UI/mouse_down_element - onReleaseSound: Empty + onClickSound: event:/UI/button_success + onReleaseSound: event:/UI/button_fail hoverScale: 1.10000002 clickScale: 0.899999976 - EID: 6 @@ -108,10 +109,10 @@ Enabled: true - Type: SHADE_Scripting.UI.ButtonFX Enabled: true - onHoverEnterSound: Empty + onHoverEnterSound: event:/UI/botton_hover onHoverExitSound: Empty - onClickSound: event:/UI/mouse_down_element - onReleaseSound: Empty + onClickSound: event:/UI/button_success + onReleaseSound: event:/UI/button_fail hoverScale: 1.10000002 clickScale: 0.899999976 - EID: 3 @@ -152,7 +153,7 @@ NumberOfChildren: 0 Components: ~ Scripts: - - Type: SHADE_Scripting.UI.TweenManager + - Type: TweenManager Enabled: true - EID: 450 Name: TransitionCanvas diff --git a/Assets/Scenes/MainMenu.shade b/Assets/Scenes/MainMenu.shade index 197de206..ea770107 100644 --- a/Assets/Scenes/MainMenu.shade +++ b/Assets/Scenes/MainMenu.shade @@ -100,10 +100,10 @@ sceneID: 91947920 - Type: SHADE_Scripting.UI.ButtonFX Enabled: true - onHoverEnterSound: Empty + onHoverEnterSound: event:/UI/botton_hover onHoverExitSound: Empty - onClickSound: event:/UI/mouse_down_element - onReleaseSound: Empty + onClickSound: event:/UI/button_success + onReleaseSound: event:/UI/button_fail hoverScale: 1.10000002 clickScale: 0.899999976 - EID: 6 @@ -135,10 +135,10 @@ Enabled: true - Type: SHADE_Scripting.UI.ButtonFX Enabled: true - onHoverEnterSound: Empty + onHoverEnterSound: event:/UI/botton_hover onHoverExitSound: Empty - onClickSound: event:/UI/mouse_down_element - onReleaseSound: Empty + onClickSound: event:/UI/button_success + onReleaseSound: event:/UI/button_fail hoverScale: 1.10000002 clickScale: 0.899999976 - EID: 7 @@ -168,10 +168,10 @@ Scripts: - Type: SHADE_Scripting.UI.ButtonFX Enabled: true - onHoverEnterSound: Empty + onHoverEnterSound: event:/UI/botton_hover onHoverExitSound: Empty - onClickSound: event:/UI/mouse_down_element - onReleaseSound: Empty + onClickSound: event:/UI/button_success + onReleaseSound: event:/UI/button_fail hoverScale: 1.10000002 clickScale: 0.899999976 - Type: SHADE_Scripting.UI.ChangeCanvasButton @@ -204,10 +204,10 @@ Scripts: - Type: SHADE_Scripting.UI.ButtonFX Enabled: true - onHoverEnterSound: Empty + onHoverEnterSound: event:/UI/botton_hover onHoverExitSound: Empty - onClickSound: event:/UI/mouse_down_element - onReleaseSound: Empty + onClickSound: event:/UI/button_success + onReleaseSound: event:/UI/button_fail hoverScale: 1.10000002 clickScale: 0.899999976 - Type: SHADE_Scripting.UI.ChangeCanvasButton @@ -240,10 +240,10 @@ Scripts: - Type: SHADE_Scripting.UI.ButtonFX Enabled: true - onHoverEnterSound: Empty + onHoverEnterSound: event:/UI/botton_hover onHoverExitSound: Empty - onClickSound: event:/UI/mouse_down_element - onReleaseSound: Empty + onClickSound: event:/UI/button_success + onReleaseSound: event:/UI/button_fail hoverScale: 1.10000002 clickScale: 0.899999976 - Type: SHADE_Scripting.UI.ChangeCanvasButton @@ -276,10 +276,10 @@ Scripts: - Type: SHADE_Scripting.UI.ButtonFX Enabled: true - onHoverEnterSound: Empty + onHoverEnterSound: event:/UI/botton_hover onHoverExitSound: Empty - onClickSound: event:/UI/mouse_down_element - onReleaseSound: Empty + onClickSound: event:/UI/button_success + onReleaseSound: event:/UI/button_fail hoverScale: 1.10000002 clickScale: 0.899999976 - Type: SHADE_Scripting.UI.ChangeCanvasButton @@ -297,6 +297,7 @@ Color: {x: 1, y: 1, z: 1, w: 1} Layer: 4294967295 Strength: 0 + Casting Shadows: false IsActive: true Scripts: ~ - EID: 3 @@ -337,7 +338,7 @@ NumberOfChildren: 0 Components: ~ Scripts: - - Type: SHADE_Scripting.UI.TweenManager + - Type: TweenManager Enabled: true - EID: 13 Name: How To Play Canvas @@ -428,10 +429,10 @@ multiImageList: 15 - Type: SHADE_Scripting.UI.ButtonFX Enabled: true - onHoverEnterSound: Empty + onHoverEnterSound: event:/UI/botton_hover onHoverExitSound: Empty - onClickSound: event:/UI/mouse_down_element - onReleaseSound: Empty + onClickSound: event:/UI/button_success + onReleaseSound: event:/UI/button_fail hoverScale: 1.10000002 clickScale: 0.899999976 - EID: 17 @@ -465,10 +466,10 @@ multiImageList: 15 - Type: SHADE_Scripting.UI.ButtonFX Enabled: true - onHoverEnterSound: Empty + onHoverEnterSound: event:/UI/botton_hover onHoverExitSound: Empty - onClickSound: event:/UI/mouse_down_element - onReleaseSound: Empty + onClickSound: event:/UI/button_success + onReleaseSound: event:/UI/button_fail hoverScale: 1.10000002 clickScale: 0.899999976 - EID: 18 @@ -501,10 +502,10 @@ canvasToActivate: 0 - Type: SHADE_Scripting.UI.ButtonFX Enabled: true - onHoverEnterSound: Empty + onHoverEnterSound: event:/UI/botton_hover onHoverExitSound: Empty - onClickSound: event:/UI/mouse_down_element - onReleaseSound: Empty + onClickSound: event:/UI/button_success + onReleaseSound: event:/UI/button_fail hoverScale: 1.10000002 clickScale: 0.899999976 - EID: 19 @@ -575,10 +576,10 @@ canvasToActivate: 0 - Type: SHADE_Scripting.UI.ButtonFX Enabled: true - onHoverEnterSound: Empty + onHoverEnterSound: event:/UI/botton_hover onHoverExitSound: Empty - onClickSound: event:/UI/mouse_down_element - onReleaseSound: Empty + onClickSound: event:/UI/button_success + onReleaseSound: event:/UI/button_fail hoverScale: 1.10000002 clickScale: 0.899999976 - EID: 22 @@ -1262,10 +1263,10 @@ canvasToActivate: 0 - Type: SHADE_Scripting.UI.ButtonFX Enabled: true - onHoverEnterSound: Empty + onHoverEnterSound: event:/UI/botton_hover onHoverExitSound: Empty - onClickSound: event:/UI/mouse_down_element - onReleaseSound: Empty + onClickSound: event:/UI/button_success + onReleaseSound: event:/UI/button_fail hoverScale: 1.10000002 clickScale: 0.899999976 - EID: 49 @@ -1371,10 +1372,10 @@ canvasToActivate: 0 - Type: SHADE_Scripting.UI.ButtonFX Enabled: true - onHoverEnterSound: Empty + onHoverEnterSound: event:/UI/botton_hover onHoverExitSound: Empty - onClickSound: event:/UI/mouse_down_element - onReleaseSound: Empty + onClickSound: event:/UI/button_success + onReleaseSound: event:/UI/button_fail hoverScale: 1.10000002 clickScale: 0.899999976 - EID: 53 diff --git a/Assets/Scenes/WinScene.shade b/Assets/Scenes/WinScene.shade index 5aea6f35..c1ba5024 100644 --- a/Assets/Scenes/WinScene.shade +++ b/Assets/Scenes/WinScene.shade @@ -10,6 +10,7 @@ Color: {x: 1, y: 1, z: 1, w: 1} Layer: 4294967295 Strength: 0 + Casting Shadows: false IsActive: true Scripts: ~ - EID: 1 @@ -73,10 +74,10 @@ sceneID: 97158628 - Type: SHADE_Scripting.UI.ButtonFX Enabled: true - onHoverEnterSound: Empty + onHoverEnterSound: event:/UI/botton_hover onHoverExitSound: Empty - onClickSound: event:/UI/mouse_down_element - onReleaseSound: Empty + onClickSound: event:/UI/button_success + onReleaseSound: event:/UI/button_fail hoverScale: 1.10000002 clickScale: 0.899999976 - EID: 6 @@ -108,10 +109,10 @@ Enabled: true - Type: SHADE_Scripting.UI.ButtonFX Enabled: true - onHoverEnterSound: Empty + onHoverEnterSound: event:/UI/botton_hover onHoverExitSound: Empty - onClickSound: event:/UI/mouse_down_element - onReleaseSound: Empty + onClickSound: event:/UI/button_success + onReleaseSound: event:/UI/button_fail hoverScale: 1.10000002 clickScale: 0.899999976 - EID: 3 @@ -152,7 +153,7 @@ NumberOfChildren: 0 Components: ~ Scripts: - - Type: SHADE_Scripting.UI.TweenManager + - Type: TweenManager Enabled: true - EID: 450 Name: TransitionCanvas diff --git a/Assets/Scenes/anim.shade b/Assets/Scenes/anim.shade index 986195f6..5c9c7163 100644 --- a/Assets/Scenes/anim.shade +++ b/Assets/Scenes/anim.shade @@ -38,6 +38,7 @@ idleClip: 227450439 runClip: 229125027 pickUpClip: 219605278 + controlAniSys: true - EID: 1 Name: Default IsActive: true @@ -79,4 +80,5 @@ fullClip: 231416496 idleClip: 0 runClip: 0 - pickUpClip: 0 \ No newline at end of file + pickUpClip: 0 + controlAniSys: false \ No newline at end of file diff --git a/Assets/Scripts/AnimTest.cs b/Assets/Scripts/AnimTest.cs index 4ceccbe6..69b47497 100644 --- a/Assets/Scripts/AnimTest.cs +++ b/Assets/Scripts/AnimTest.cs @@ -13,6 +13,8 @@ namespace SHADE.Test private AnimationClipAsset runClip; [SerializeField] private AnimationClipAsset pickUpClip; + [SerializeField] + private bool controlAniSys = false; #endregion #region Components @@ -23,6 +25,10 @@ namespace SHADE.Test protected override void awake() { Animator = GetComponent(); + + Animator.OnClipStartedPlaying.RegisterAction((_) => Debug.Log("Start Playing")); + Animator.OnClipPaused.RegisterAction((_) => Debug.Log("Pause")); + Animator.OnClipFinished.RegisterAction((_) => Debug.Log("Finished")); } protected override void update() @@ -34,19 +40,39 @@ namespace SHADE.Test // Play animations if (Input.GetKeyUp(Input.KeyCode.Equals)) { - playFunc(fullClip); + if (fullClip) + playFunc(fullClip); } else if (Input.GetKeyUp(Input.KeyCode.Alpha1)) { - playFunc(idleClip); + if (idleClip) + playFunc(idleClip); } else if (Input.GetKeyUp(Input.KeyCode.Alpha2)) { - playFunc(runClip); + if (runClip) + playFunc(runClip); } else if (Input.GetKeyUp(Input.KeyCode.Alpha3)) { - playFunc(pickUpClip); + if (pickUpClip) + playFunc(pickUpClip); + } + + // Play and pause + if (controlAniSys && Input.GetKeyUp(Input.KeyCode.Space)) + { + AnimationSystem.TimeScale = AnimationSystem.TimeScale > 0.0f ? 0.0f + : AnimationSystem.DefaultTimeScale; + } + + if (Input.GetKeyUp(Input.KeyCode.P)) + { + if (Animator.IsPlaying) + Animator.Pause(); + else + Animator.Play(); + } } #endregion diff --git a/Assets/Scripts/Gameplay/AIBehaviour/Implemented/Homeowner1.cs b/Assets/Scripts/Gameplay/AIBehaviour/Implemented/Homeowner1.cs index b57e7fcd..1a7d4a81 100644 --- a/Assets/Scripts/Gameplay/AIBehaviour/Implemented/Homeowner1.cs +++ b/Assets/Scripts/Gameplay/AIBehaviour/Implemented/Homeowner1.cs @@ -110,8 +110,8 @@ public partial class Homeowner1 : BehaviourTree //These should be somewhere else //Debug.Log("TESTING"); - AudioHandler.audioClipHandlers["BGMUnalert"] = Audio.CreateAudioClip("event:/Music/player_undetected"); - AudioHandler.audioClipHandlers["BGMAlert"] = Audio.CreateAudioClip("event:/Music/player_detected"); + //AudioHandler.audioClipHandlers["BGMUnalert"] = Audio.CreateAudioClip("event:/Music/player_undetected"); + //AudioHandler.audioClipHandlers["BGMAlert"] = Audio.CreateAudioClip("event:/Music/player_detected"); AudioHandler.audioClipHandlers["BGMAdaptive"] = Audio.CreateAudioClip("event:/Music/bgm_adaptive"); AudioHandler.audioClipHandlers["SFXFootstep"] = Audio.CreateAudioClip("event:/Homeowner/homeowner_footsteps"); @@ -121,7 +121,7 @@ public partial class Homeowner1 : BehaviourTree 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"].SetVolume(0.15f); AudioHandler.audioClipHandlers["SFXHumming"].Play(); if (aiInstance != null && aiInstance != this) diff --git a/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafSearch.cs b/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafSearch.cs index 2aebc3b7..4640b5eb 100644 --- a/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafSearch.cs +++ b/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafSearch.cs @@ -156,7 +156,7 @@ public partial class LeafSearch : BehaviourTreeNode //Draw a ray, succeed if ray is unobstructed Vector3 eyePosition = transform.GlobalPosition + eyeOffset; - BoxCollider playerCollider = player.GetValueOrDefault().GetComponent().GetCollisionShape(0); + Collider playerCollider = player.GetValueOrDefault().GetComponent(); if (playerCollider == null) { //Debug.Log("Failure: Player has no collider"); @@ -167,7 +167,7 @@ public partial class LeafSearch : BehaviourTreeNode } //Ray destination to target the centre of the player's collider instead of transform position //Since transform position is often the raccoon's base and the ray needs to hit somewhere higher to be more reliable - Vector3 rayDestination = plrT.GlobalPosition + plrT.GlobalScale * playerCollider.PositionOffset; + Vector3 rayDestination = plrT.GlobalPosition + plrT.GlobalScale * playerCollider.GetCollisionShape(0).PositionOffset; Ray sightRay = new Ray(eyePosition, rayDestination - eyePosition); RaycastHit sightRayHit = Physics.Raycast(sightRay, false, (ushort)65535)[0]; //As of November 2022, RaycastHit contains only the FIRST object hit by diff --git a/Assets/Scripts/Gameplay/Item/SC_Item.cs b/Assets/Scripts/Gameplay/Item/SC_Item.cs index b315ab08..be28bb5a 100644 --- a/Assets/Scripts/Gameplay/Item/SC_Item.cs +++ b/Assets/Scripts/Gameplay/Item/SC_Item.cs @@ -86,12 +86,17 @@ public class Item : Script if (returnBack && !dontReturn) { + if (rb) + { + rb.LinearVelocity = Vector3.Zero; + rb.AngularVelocity = Vector3.Zero; + rb.ClearForces(); + rb.ClearTorque(); + } + if(transform) transform.LocalPosition = firstPostion; - if (rb) - rb.LinearVelocity = Vector3.Zero; - returnBack = false; } diff --git a/Assets/Scripts/Gameplay/Player/PlayerStates/UT_PlayerIdleState.cs b/Assets/Scripts/Gameplay/Player/PlayerStates/UT_PlayerIdleState.cs index 144233a3..893818a3 100644 --- a/Assets/Scripts/Gameplay/Player/PlayerStates/UT_PlayerIdleState.cs +++ b/Assets/Scripts/Gameplay/Player/PlayerStates/UT_PlayerIdleState.cs @@ -3,13 +3,38 @@ using System; public class PlayerIdleState : BaseState { - public PlayerIdleState(StateMachine stateMachine) : base(stateMachine) + private bool holdItem; + public PlayerIdleState(StateMachine stateMachine, bool hi) : base(stateMachine) { stateName = "Idle State"; + holdItem = hi; } public override void OnEnter() { //Debug.Log("WALK ENTER"); + if (PlayerAnimations.Instance) + { + if (!holdItem) + { + if (PlayerAnimations.Instance.playerIdleClip) + { + PlayerAnimations.Instance.playerAnimator.Play(PlayerAnimations.Instance.playerIdleClip); + PlayerAnimations.Instance.BagAnimator.Play(PlayerAnimations.Instance.playerIdleClip); + PlayerAnimations.Instance.silhoPlayerAnimator.Play(PlayerAnimations.Instance.playerIdleClip); + PlayerAnimations.Instance.silhoBagAnimator.Play(PlayerAnimations.Instance.playerIdleClip); + } + } + else + { + if (PlayerAnimations.Instance.playerCarryIdleClip) + { + PlayerAnimations.Instance.playerAnimator.Play(PlayerAnimations.Instance.playerCarryIdleClip); + PlayerAnimations.Instance.BagAnimator.Play(PlayerAnimations.Instance.playerCarryIdleClip); + PlayerAnimations.Instance.silhoPlayerAnimator.Play(PlayerAnimations.Instance.playerCarryIdleClip); + PlayerAnimations.Instance.silhoBagAnimator.Play(PlayerAnimations.Instance.playerCarryIdleClip); + } + } + } } public override void update() { diff --git a/Assets/Scripts/Gameplay/Player/PlayerStates/UT_PlayerJumpState.cs b/Assets/Scripts/Gameplay/Player/PlayerStates/UT_PlayerJumpState.cs index 1adfdf67..8d5350d7 100644 --- a/Assets/Scripts/Gameplay/Player/PlayerStates/UT_PlayerJumpState.cs +++ b/Assets/Scripts/Gameplay/Player/PlayerStates/UT_PlayerJumpState.cs @@ -9,7 +9,7 @@ public class PlayerJumpState : BaseState } public override void OnEnter() { - //Debug.Log("WALK ENTER"); + //Debug.Log("jump"); } public override void update() { diff --git a/Assets/Scripts/Gameplay/Player/PlayerStates/UT_PlayerRunState.cs b/Assets/Scripts/Gameplay/Player/PlayerStates/UT_PlayerRunState.cs index 314f8950..7f30effc 100644 --- a/Assets/Scripts/Gameplay/Player/PlayerStates/UT_PlayerRunState.cs +++ b/Assets/Scripts/Gameplay/Player/PlayerStates/UT_PlayerRunState.cs @@ -1,4 +1,5 @@ using SHADE; +using SHADE_Scripting.Audio; using System; public class PlayerRunState : BaseState @@ -13,6 +14,13 @@ public class PlayerRunState : BaseState public override void OnEnter() { //Debug.Log("WALK ENTER"); + if (PlayerAnimations.Instance && PlayerAnimations.Instance.playerRunClip) + { + PlayerAnimations.Instance.playerAnimator.Play(PlayerAnimations.Instance.playerRunClip); + PlayerAnimations.Instance.BagAnimator.Play(PlayerAnimations.Instance.playerRunClip); + PlayerAnimations.Instance.silhoPlayerAnimator.Play(PlayerAnimations.Instance.playerRunClip); + PlayerAnimations.Instance.silhoBagAnimator.Play(PlayerAnimations.Instance.playerRunClip); + } } public override void update() { @@ -21,7 +29,7 @@ public class PlayerRunState : BaseState if (timer > delay) { - Audio.PlaySFXOnce2D("event:/Raccoon/raccoon_footsteps"); + AudioHandler.audioClipHandlers["footsteps"].Play(); timer = 0; } } diff --git a/Assets/Scripts/Gameplay/Player/PlayerStates/UT_PlayerWalkState.cs b/Assets/Scripts/Gameplay/Player/PlayerStates/UT_PlayerWalkState.cs index 1c0ef13a..c15fb5b1 100644 --- a/Assets/Scripts/Gameplay/Player/PlayerStates/UT_PlayerWalkState.cs +++ b/Assets/Scripts/Gameplay/Player/PlayerStates/UT_PlayerWalkState.cs @@ -1,18 +1,44 @@ using SHADE; +using SHADE_Scripting.Audio; using System; public class PlayerWalkState : BaseState { private float timer; private float delay = 0.5f; - public PlayerWalkState(StateMachine stateMachine) : base(stateMachine) + private bool holdItem; + public PlayerWalkState(StateMachine stateMachine, bool hi) : base(stateMachine) { stateName = "Walk State"; + holdItem = hi; } public override void OnEnter() { //Debug.Log("WALK ENTER"); timer = delay; + if (PlayerAnimations.Instance) + { + if (!holdItem) + { + if (PlayerAnimations.Instance.playerWalkClip) + { + PlayerAnimations.Instance.playerAnimator.Play(PlayerAnimations.Instance.playerWalkClip); + PlayerAnimations.Instance.BagAnimator.Play(PlayerAnimations.Instance.playerWalkClip); + PlayerAnimations.Instance.silhoPlayerAnimator.Play(PlayerAnimations.Instance.playerWalkClip); + PlayerAnimations.Instance.silhoBagAnimator.Play(PlayerAnimations.Instance.playerWalkClip); + } + } + else + { + if (PlayerAnimations.Instance.playerCarryWalkClip) + { + PlayerAnimations.Instance.playerAnimator.Play(PlayerAnimations.Instance.playerCarryWalkClip); + PlayerAnimations.Instance.BagAnimator.Play(PlayerAnimations.Instance.playerCarryWalkClip); + PlayerAnimations.Instance.silhoPlayerAnimator.Play(PlayerAnimations.Instance.playerCarryWalkClip); + PlayerAnimations.Instance.silhoBagAnimator.Play(PlayerAnimations.Instance.playerCarryWalkClip); + } + } + } } public override void update() { @@ -20,8 +46,8 @@ public class PlayerWalkState : BaseState timer += Time.DeltaTimeF; if (timer > delay) - { - Audio.PlaySFXOnce2D("event:/Raccoon/raccoon_footsteps"); + { + AudioHandler.audioClipHandlers["footsteps"].Play(); timer = 0; } } diff --git a/Assets/Scripts/Gameplay/Player/SC_PickAndThrow.cs b/Assets/Scripts/Gameplay/Player/SC_PickAndThrow.cs index 87ef2b85..79acf136 100644 --- a/Assets/Scripts/Gameplay/Player/SC_PickAndThrow.cs +++ b/Assets/Scripts/Gameplay/Player/SC_PickAndThrow.cs @@ -34,11 +34,6 @@ public class PickAndThrow : Script [Tooltip("Height of ray")] public float rayHeight = 0.1f; - [Tooltip("FOV when you aim")] - public float aimingFOV = 50; - [Tooltip("Default FOV")] - public float defaultFOV = 45; - protected override void awake() { pc = GetScript(); @@ -85,7 +80,7 @@ public class PickAndThrow : Script pc.camArm.ArmLength = aimingLength; prevTargetOffSet = pc.camArm.TargetOffset; pc.camArm.TargetOffset = cameraArmOffSet; - pc.cam.FOV = aimingFOV; + pc.cam.FOV = Settings.cameraFOV + 5; } if (Input.GetMouseButtonUp(Input.MouseCode.LeftButton) && pc.isAiming) @@ -95,7 +90,7 @@ public class PickAndThrow : Script itemCollider.GetCollisionShape(0).IsTrigger = false; pc.isAiming = false; pc.camArm.TargetOffset = prevTargetOffSet; - pc.cam.FOV = defaultFOV; + pc.cam.FOV = Settings.cameraFOV; if (tpc) pc.camArm.ArmLength = tpc.armLength; pc.holdItem = false; @@ -116,7 +111,7 @@ public class PickAndThrow : Script if (Input.GetMouseButtonDown(Input.MouseCode.RightButton) && pc.isAiming) { pc.isAiming = false; - pc.cam.FOV = defaultFOV; + pc.cam.FOV = Settings.cameraFOV; pc.camArm.TargetOffset = prevTargetOffSet; if (tpc) pc.camArm.ArmLength = tpc.armLength; diff --git a/Assets/Scripts/Gameplay/Player/SC_PlayerAnimations.cs b/Assets/Scripts/Gameplay/Player/SC_PlayerAnimations.cs new file mode 100644 index 00000000..2bda8938 --- /dev/null +++ b/Assets/Scripts/Gameplay/Player/SC_PlayerAnimations.cs @@ -0,0 +1,83 @@ +using SHADE; +using System; +using System.Collections.Generic; + + +public class PlayerAnimations : Script +{ + #region Raccoon + [SerializeField] + public AnimationClipAsset playerIdleClip; // done + [SerializeField] + public AnimationClipAsset playerWalkClip; // done + [SerializeField] + public AnimationClipAsset playerRunClip; // done + [SerializeField] + public AnimationClipAsset playerPickUpClip; + [SerializeField] + public AnimationClipAsset playerCarryIdleClip; // done + [SerializeField] + public AnimationClipAsset playerCarryWalkClip; // done + [SerializeField] + public AnimationClipAsset playerThrowClip; + [SerializeField] + public AnimationClipAsset playerJumpStartClip; + [SerializeField] + public AnimationClipAsset playerJumpLoopClip; + [SerializeField] + public AnimationClipAsset playerJumpEndClip; + #endregion + + #region Animator + public Animator playerAnimator { get; private set; } + public Animator BagAnimator { get; private set; } + public Animator silhoPlayerAnimator { get; private set; } + public Animator silhoBagAnimator { get; private set; } + #endregion + + #region silhouette + public GameObject silhouettePlayer; + public GameObject silhouetteBag; + #endregion + + public static PlayerAnimations Instance { get; private set; } + + protected override void awake() + { + if (Instance != null && Instance != this) + RemoveScript(); + else + Instance = this; + + playerAnimator = GetComponent(); + if (!playerAnimator) + Debug.LogError("Player Animator is MISSING!"); + + BagAnimator = GetComponentInChildren(); + if (!BagAnimator) + Debug.LogError("Bag Animator is MISSING!"); + + if(silhouettePlayer) + silhoPlayerAnimator = silhouettePlayer.GetComponent(); + else + Debug.LogError("Silho Player is MISSING!"); + + if (!silhoPlayerAnimator) + Debug.LogError("Silho Player Animator is MISSING!"); + + if(silhouetteBag) + silhoBagAnimator = silhouetteBag.GetComponent(); + else + Debug.LogError("Silho bag is MISSING!"); + + if (!silhoBagAnimator) + Debug.LogError("Silho Player Animator is MISSING!"); + } + + protected override void onDestroy() + { + if (Instance == this) + Instance = null; + } +} + diff --git a/Assets/Scripts/Gameplay/Player/SC_PlayerAnimations.cs.shmeta b/Assets/Scripts/Gameplay/Player/SC_PlayerAnimations.cs.shmeta new file mode 100644 index 00000000..b8cd1620 --- /dev/null +++ b/Assets/Scripts/Gameplay/Player/SC_PlayerAnimations.cs.shmeta @@ -0,0 +1,3 @@ +Name: SC_PlayerAnimations +ID: 159045981 +Type: 9 diff --git a/Assets/Scripts/Gameplay/Player/SC_PlayerController.cs b/Assets/Scripts/Gameplay/Player/SC_PlayerController.cs index 4e2f38ec..9bac991b 100644 --- a/Assets/Scripts/Gameplay/Player/SC_PlayerController.cs +++ b/Assets/Scripts/Gameplay/Player/SC_PlayerController.cs @@ -1,6 +1,7 @@ using SHADE; using System; -using System.Collections.Generic; +using System.Collections.Generic; +using SHADE_Scripting.Audio; using static Item; public class PlayerController : Script @@ -32,7 +33,7 @@ public class PlayerController : Script private float delayTimer = 0.0f; [Tooltip("The current state fo the raccoon")] - public RaccoonStates currentState = RaccoonStates.IDLE; + public RaccoonStates currentState; //Movement variables============================================================ [Tooltip("Max vel for walking")] @@ -98,17 +99,17 @@ public class PlayerController : Script //rigidbody check rb = GetComponent(); if (!rb) - Debug.LogError("RigidBody is NULL!"); + Debug.LogError("RigidBody is MISSING!"); //Transform check tranform = GetComponent(); if(!tranform) - Debug.LogError("tranform is NULL!"); + Debug.LogError("tranform is MISSING!"); stateMachine = AddScript(); Dictionary dictionary = new Dictionary(); - dictionary.Add(typeof(PlayerIdleState), new PlayerIdleState(stateMachine)); - dictionary.Add(typeof(PlayerWalkState), new PlayerWalkState(stateMachine)); + dictionary.Add(typeof(PlayerIdleState), new PlayerIdleState(stateMachine, holdItem)); + dictionary.Add(typeof(PlayerWalkState), new PlayerWalkState(stateMachine, holdItem)); dictionary.Add(typeof(PlayerRunState), new PlayerRunState(stateMachine)); dictionary.Add(typeof(PlayerJumpState), new PlayerJumpState(stateMachine)); dictionary.Add(typeof(PlayerFallState), new PlayerFallState(stateMachine)); @@ -131,6 +132,14 @@ public class PlayerController : Script silhouetteBagRend = silhouetteBag.GetComponent(); silhouetteBagRend.Material.SetProperty("data.offset", 0.1f); } + + AudioHandler.audioClipHandlers["footsteps"] = Audio.CreateAudioClip("event:/Raccoon/raccoon_footsteps"); + } + + protected override void start() + { + currentState = RaccoonStates.IDLE; + stateMachine.SetState(typeof(PlayerIdleState)); } protected override void lateUpdate() @@ -167,8 +176,8 @@ public class PlayerController : Script if (!cam) { cam = GetComponentInChildren(); - if(pat) - cam.FOV = pat.defaultFOV; + if (pat) + cam.FOV = Settings.cameraFOV; } if(!camArm) camArm = GetComponentInChildren(); @@ -315,6 +324,8 @@ public class PlayerController : Script if ( (Input.GetKeyDown(Input.KeyCode.Space) || landedOnJumpPad ) && isGrounded && rb != null) { currentState = RaccoonStates.JUMP; + if (stateMachine && !stateMachine.IsState(typeof(PlayerJumpState))) + stateMachine.SetState(typeof(PlayerJumpState)); Vector3 v = rb.LinearVelocity; v.y = initialJumpVel * 0.5f; if (holdItem && pat != null && pat.item.GetScript() != null) @@ -337,8 +348,12 @@ public class PlayerController : Script } } - if(!isGrounded && rb != null && (rb.LinearVelocity.y < 0.0f || Input.GetKeyUp(Input.KeyCode.Space))) + if (!isGrounded && rb != null && (rb.LinearVelocity.y < 0.0f || Input.GetKeyUp(Input.KeyCode.Space))) + { currentState = RaccoonStates.FALLING; + if (stateMachine && !stateMachine.IsState(typeof(PlayerFallState))) + stateMachine.SetState(typeof(PlayerFallState)); + } } @@ -369,7 +384,11 @@ public class PlayerController : Script { isGrounded = true; if (currentState == RaccoonStates.FALLING) + { currentState = RaccoonStates.LANDED; + if (stateMachine && !stateMachine.IsState(typeof(PlayerLandState))) + stateMachine.SetState(typeof(PlayerLandState)); + } } else isGrounded = false; @@ -417,7 +436,7 @@ public class PlayerController : Script if (isAiming) { isAiming = false; - cam.FOV = pat.defaultFOV; + cam.FOV = Settings.cameraFOV; 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 6e4e1f7b..a4a8d0bc 100644 --- a/Assets/Scripts/Gameplay/Player/SC_ThirdPersonCamera.cs +++ b/Assets/Scripts/Gameplay/Player/SC_ThirdPersonCamera.cs @@ -37,6 +37,7 @@ namespace SHADE_Scripting protected override void start() { GetComponent().ArmLength = armLength; + GetComponent().FOV = Settings.cameraFOV; } protected override void update() diff --git a/Assets/Scripts/Gameplay/SC_GameManager.cs b/Assets/Scripts/Gameplay/SC_GameManager.cs index 8398bb06..78414b26 100644 --- a/Assets/Scripts/Gameplay/SC_GameManager.cs +++ b/Assets/Scripts/Gameplay/SC_GameManager.cs @@ -101,6 +101,8 @@ public class GameManager : Script protected override void update() { + + if (GamePause || !stealFoodPopUpDone) { return; @@ -195,6 +197,13 @@ public class GameManager : Script if (SceneFadeInOut.Instance != null) SceneFadeInOut.Instance.CallFadeIn(); } + + if (Input.GetKeyUp(Input.KeyCode.G)) + { + ItemScored(); + Score += 500; + } + } @@ -219,6 +228,13 @@ public class GameManager : Script fx.ShowMultiplier(currMultiplierCombo, maxMultiplierDuration); } + SingleScaleBounce sb = scoreText.GetScript(); + if(sb) + { + sb.ScaleBounceOnce(); + } + + } } diff --git a/Assets/Scripts/Gameplay/SC_JumpPad.cs b/Assets/Scripts/Gameplay/SC_JumpPad.cs index 7aa573df..ec6031cb 100644 --- a/Assets/Scripts/Gameplay/SC_JumpPad.cs +++ b/Assets/Scripts/Gameplay/SC_JumpPad.cs @@ -2,15 +2,64 @@ using SHADE_Scripting.Audio; using System; + public class JumpPad : Script { + private Transform tran; + private Vector3 defaultScale; + public float scaleYMaxSize = 2.0f; + private float scaleXZMaxSize; + public float scaleDuration = 0.25f; + private bool landed = false; + private bool scaleUpDone = false; + + [NonSerialized] + private TweenThread scaleYUp; + [NonSerialized] + private TweenThread scaleXZUp; + [NonSerialized] + private TweenThreadVec3 scaleDown; + protected override void awake() { AudioHandler.audioClipHandlers["SFXJumpPad"] = Audio.CreateAudioClip("event:/Props/jumppad_boing"); + + tran = GameObject.GetComponent(); + if (!tran) + Debug.LogError("NO TRANSFORM"); + + defaultScale = tran.LocalScale; + scaleXZMaxSize = scaleYMaxSize * 0.3f; + } + + protected override void start() + { + scaleYUp = TweenManager.CreateTweenThread(scaleDuration, tran.LocalScale.y, scaleYMaxSize, EASING_METHOD.EASE_IN_SINE); + scaleXZUp = TweenManager.CreateTweenThread(scaleDuration, tran.LocalScale.y, scaleXZMaxSize, EASING_METHOD.EASE_IN_SINE); } protected override void update() { + if (landed && tran) + { + tran.LocalScale = new Vector3(scaleXZUp.GetValue(), scaleYUp.GetValue(), scaleXZUp.GetValue()); + if (scaleYUp.IsCompleted() && scaleXZUp.IsCompleted()) + { + landed = false; + scaleUpDone = true; + scaleDown = TweenManager.CreateTweenThreadVec3(scaleDuration, tran.LocalScale, defaultScale, EASING_METHOD.EASE_IN_SINE); + } + } + + if (scaleUpDone && !landed) + { + tran.LocalScale = scaleDown.GetValue(); + if (scaleDown.IsCompleted()) + { + scaleUpDone = false; + } + } + } protected override void onCollisionEnter(CollisionInfo info) @@ -20,7 +69,11 @@ public class JumpPad : Script Audio.AttachAudioClipToObject(AudioHandler.audioClipHandlers["SFXJumpPad"], GameObject.EntityId); AudioHandler.audioClipHandlers["SFXJumpPad"].Play(); info.GameObject.GetScript().landedOnJumpPad = true; + landed = true; + scaleYUp.Reset(); + scaleXZUp.Reset(); } } } + diff --git a/Assets/Scripts/Gameplay/SC_PreviewLevel.cs b/Assets/Scripts/Gameplay/SC_PreviewLevel.cs index 32a03074..e2a1badd 100644 --- a/Assets/Scripts/Gameplay/SC_PreviewLevel.cs +++ b/Assets/Scripts/Gameplay/SC_PreviewLevel.cs @@ -40,11 +40,6 @@ namespace SHADE_Scripting.UI 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() @@ -52,6 +47,11 @@ namespace SHADE_Scripting.UI if (gameplayCanvas) gameplayCanvas.SetActive(false); listOfCamera[0].SetMainCamera(); + + 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 update() @@ -135,7 +135,7 @@ namespace SHADE_Scripting.UI { if (reset3) { - moveToEndPoint3 = TweenManager.CreateTweenThreadVec3(duration, listOfCamera[2].GetComponent().LocalPosition, endPoint3, EASING_METHOD.EASE_IN_SINE); + moveToEndPoint3.Reset(); reset3 = false; } listOfCamera[2].GetComponent().LocalPosition = moveToEndPoint3.GetValue(); diff --git a/Assets/Scripts/Settings.cs b/Assets/Scripts/Settings.cs index e769237d..91aa6421 100644 --- a/Assets/Scripts/Settings.cs +++ b/Assets/Scripts/Settings.cs @@ -4,18 +4,14 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace SHADE_Scripting +static public class Settings { - static public class Settings - { - static public float cameraSensitivity = 100.0f; + static public float cameraSensitivity = 100.0f; - static public float cameraFOV = 90.0f; + static public float cameraFOV = 45.0f; - static public float masterVolume = 100.0f; - static public float sfxVolume = 100.0f; - static public float bgmVolume = 100.0f; - - - } + static public float masterVolume = 100.0f; + static public float sfxVolume = 100.0f; + static public float bgmVolume = 100.0f; } + diff --git a/Assets/Scripts/UI/EasingHelper.cs b/Assets/Scripts/UI/EasingHelper.cs index dadae5bb..c737ddfc 100644 --- a/Assets/Scripts/UI/EasingHelper.cs +++ b/Assets/Scripts/UI/EasingHelper.cs @@ -4,9 +4,6 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace SHADE_Scripting.UI -{ - public enum EASING_METHOD { EASE_IN_SINE, @@ -16,84 +13,88 @@ namespace SHADE_Scripting.UI EASE_INOUT_BOUNCE } - public static class EasingHelper +public static class EasingHelper +{ + + public static float EaseHelp(float value, EASING_METHOD method) + { + switch (method) { - - public static float EaseHelp(float value, EASING_METHOD method) + case EASING_METHOD.EASE_IN_SINE: { - switch (method) - { - case EASING_METHOD.EASE_IN_SINE: - { - return EaseInSine(value); - }break; - case EASING_METHOD.EASE_OUT_SINE: - { - return EaseOutSine(value); - }break; - case EASING_METHOD.EASE_OUT_BOUNCE: - { - return EaseOutBounce(value); - }break; - case EASING_METHOD.EASE_IN_BOUNCE: - { - return EaseInBounce(value); - } - break; - case EASING_METHOD.EASE_INOUT_BOUNCE: - { - return EaseInOutBounce(value); - } - break; - default: - return 0.0f; - } + return EaseInSine(value); } - - private static float EaseInSine(float value) + break; + case EASING_METHOD.EASE_OUT_SINE: { - - return (float)(1.0f - Math.Cos((value * Math.PI / 2.0f) )); - + return EaseOutSine(value); } - - private static float EaseOutSine(float value) + break; + case EASING_METHOD.EASE_OUT_BOUNCE: { - return (float)(Math.Sin(value * Math.PI / 2.0f) ); - + return EaseOutBounce(value); } - - - private static float EaseOutBounce(float value) + break; + case EASING_METHOD.EASE_IN_BOUNCE: { - const float n1 = 7.5625f; - const float d1 = 2.75f; - if (value < 1.0f / d1) - { - return n1 * value * value; - } else if (value < 2.0f / d1) - { - return n1 * (value -= 2.25f / d1) * value + 0.9375f; - } - else - { - return n1 * (value -= 2.625f / d1) * value + 0.984375f; - - } + return EaseInBounce(value); } - - private static float EaseInBounce(float value) + break; + case EASING_METHOD.EASE_INOUT_BOUNCE: { - return 1 - EaseOutBounce(1 - value); + return EaseInOutBounce(value); } + break; + default: + return 0.0f; + } + } + + private static float EaseInSine(float value) + { + + return (float)(1.0f - Math.Cos((value * Math.PI / 2.0f))); + + } + + private static float EaseOutSine(float value) + { + return (float)(Math.Sin(value * Math.PI / 2.0f)); + + } - private static float EaseInOutBounce(float value) - { - return (value < 0.5f) - ?(1.0f - EaseOutBounce(1.0f - 2.0f * value)) / 2.0f - : (1.0f + EaseOutBounce(2.0f * value - 1.0f)) / 2.0f; - } + private static float EaseOutBounce(float value) + { + const float n1 = 7.5625f; + const float d1 = 2.75f; + if (value < 1.0f / d1) + { + return n1 * value * value; + } + else if (value < 2.0f / d1) + { + return n1 * (value -= 2.25f / d1) * value + 0.9375f; + } + else + { + return n1 * (value -= 2.625f / d1) * value + 0.984375f; } + } + + private static float EaseInBounce(float value) + { + return 1 - EaseOutBounce(1 - value); + } + + + private static float EaseInOutBounce(float value) + { + return (value < 0.5f) + ? (1.0f - EaseOutBounce(1.0f - 2.0f * value)) / 2.0f + : (1.0f + EaseOutBounce(2.0f * value - 1.0f)) / 2.0f; + } + } + diff --git a/Assets/Scripts/UI/SC_ButtonFX.cs b/Assets/Scripts/UI/SC_ButtonFX.cs index 7ecad2f2..dcfd42c7 100644 --- a/Assets/Scripts/UI/SC_ButtonFX.cs +++ b/Assets/Scripts/UI/SC_ButtonFX.cs @@ -9,10 +9,10 @@ namespace SHADE_Scripting.UI { public class ButtonFX:Script { - public string onHoverEnterSound = "Empty"; + public string onHoverEnterSound = "event:/UI/botton_hover"; public string onHoverExitSound = "Empty"; - public string onClickSound = "event:/UI/mouse_down_element"; - public string onReleaseSound = "Empty"; + public string onClickSound = "event:/UI/button_success"; + public string onReleaseSound = "event:/UI/button_fail"; [NonSerialized] private AudioClipHandler onHoverEnterACHandler; diff --git a/Assets/Scripts/UI/SC_CutSceneEnd.cs b/Assets/Scripts/UI/SC_CutSceneEnd.cs index f5007443..7aa65b1f 100644 --- a/Assets/Scripts/UI/SC_CutSceneEnd.cs +++ b/Assets/Scripts/UI/SC_CutSceneEnd.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Linq; using SHADE; - +using SHADE_Scripting.Audio; public class CutsceneEnd : Script { @@ -58,6 +58,17 @@ public class CutsceneEnd : Script { initCutscene4(); initCutscene5(); + AudioHandler.audioClipHandlers["cutsceneBGM"] = Audio.CreateAudioClip("event:/Cinematics/BGM"); + AudioHandler.audioClipHandlers["cutscenePanelSlide"] = Audio.CreateAudioClip("event:/Cinematics/panel_slide"); + + //Cutscene 4 Audio + AudioHandler.audioClipHandlers["cutscene4Run"] = Audio.CreateAudioClip("event:/Cinematics/4/1_run"); + + + //Cutscene 5 Audio + AudioHandler.audioClipHandlers["cutscene5Yay"] = Audio.CreateAudioClip("event:/Cinematics/5/2_yay"); + + AudioHandler.audioClipHandlers["cutsceneBGM"].Play(); } protected override void update() @@ -70,6 +81,11 @@ public class CutsceneEnd : Script skip = true; oldDuration = duration; duration = skipDuration; + + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Stop(true); + AudioHandler.audioClipHandlers["cutscene4Run"].Stop(true); + AudioHandler.audioClipHandlers["cutscene5Yay"].Stop(true); + } if (Input.GetKeyUp(Input.KeyCode.Space) && cutscene4Done && canvas4.IsActiveSelf) @@ -90,6 +106,11 @@ public class CutsceneEnd : Script { if (canvas4.IsActiveSelf) { + if(time == 0 && !skip) + { + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Play(); + AudioHandler.audioClipHandlers["cutscene4Run"].Play(); + } if (showPic4a) { if (time < duration) @@ -116,6 +137,10 @@ public class CutsceneEnd : Script if (showPic4b) { + if (time == 0 && !skip) + { + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Play(); + } if (time < duration) { pic4bTran.LocalPosition = Vector3.Lerp(pic4bTran.LocalPosition, listOfCutscene4Points[1].LocalPosition, time / duration); @@ -140,6 +165,10 @@ public class CutsceneEnd : Script if (showPic4c) { + if (time == 0 && !skip) + { + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Play(); + } if (time < duration) { pic4cTran.LocalPosition = Vector3.Lerp(pic4cTran.LocalPosition, listOfCutscene4Points[2].LocalPosition, time / duration); @@ -171,6 +200,10 @@ public class CutsceneEnd : Script { if (showPic5a) { + if (time == 0 && !skip) + { + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Play(); + } if (time < duration) { pic5aTran.LocalPosition = Vector3.Lerp(pic5aTran.LocalPosition, listOfCutscene5Points[0].LocalPosition, time / duration); @@ -195,6 +228,11 @@ public class CutsceneEnd : Script if (showPic5b) { + if (time == 0) + { + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Play(); + AudioHandler.audioClipHandlers["cutscene5Yay"].Play(); + } if (time < duration) { pic5bTran.LocalPosition = Vector3.Lerp(pic5bTran.LocalPosition, listOfCutscene5Points[1].LocalPosition, time / duration); diff --git a/Assets/Scripts/UI/SC_CutsceneIntro.cs b/Assets/Scripts/UI/SC_CutsceneIntro.cs index db393ff9..89f7061d 100644 --- a/Assets/Scripts/UI/SC_CutsceneIntro.cs +++ b/Assets/Scripts/UI/SC_CutsceneIntro.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Linq; using SHADE; - +using SHADE_Scripting.Audio; public class CutsceneIntro : Script { @@ -87,6 +87,24 @@ public class CutsceneIntro : Script initCutscene1(); initCutscene2(); initCutscene3(); + + //Cutscene BGM + AudioHandler.audioClipHandlers["cutsceneBGM"] = Audio.CreateAudioClip("event:/Cinematics/BGM"); + AudioHandler.audioClipHandlers["cutscenePanelSlide"] = Audio.CreateAudioClip("event:/Cinematics/panel_slide"); + + //Cutscene 2 Audio + AudioHandler.audioClipHandlers["cutscene2Stomach"] = Audio.CreateAudioClip("event:/Cinematics/2/1_stomach"); + AudioHandler.audioClipHandlers["cutscene2Alert"] = Audio.CreateAudioClip("event:/Cinematics/2/2_alert"); + AudioHandler.audioClipHandlers["cutscene2Sparkle"] = Audio.CreateAudioClip("event:/Cinematics/2/3_sparkle"); + + //Cutscene 3 Audio + AudioHandler.audioClipHandlers["cutscene3Jump"] = Audio.CreateAudioClip("event:/Cinematics/3/1_jump"); + AudioHandler.audioClipHandlers["cutscene3Sparkle"] = Audio.CreateAudioClip("event:/Cinematics/3/2_sparkle"); + AudioHandler.audioClipHandlers["cutscene3Carry"] = Audio.CreateAudioClip("event:/Cinematics/3/3_carry"); + AudioHandler.audioClipHandlers["cutscene3Throw"] = Audio.CreateAudioClip("event:/Cinematics/3/4_throw"); + AudioHandler.audioClipHandlers["cutscene3Yay"] = Audio.CreateAudioClip("event:/Cinematics/3/5_yay"); + + AudioHandler.audioClipHandlers["cutsceneBGM"].Play(); } protected override void update() @@ -98,6 +116,16 @@ public class CutsceneIntro : Script if (Input.GetKeyUp(Input.KeyCode.Space) && !skip && (!cutscene1Done || !cutscene2Done || !cutscene3Done)) { skip = true; + AudioHandler.audioClipHandlers["cutscene2Stomach"].Stop(true); + AudioHandler.audioClipHandlers["cutscene2Alert"].Stop(true); + AudioHandler.audioClipHandlers["cutscene2Sparkle"].Stop(true); + AudioHandler.audioClipHandlers["cutscene3Jump"].Stop(true); + AudioHandler.audioClipHandlers["cutscene3Sparkle"].Stop(true); + AudioHandler.audioClipHandlers["cutscene3Carry"].Stop(true); + AudioHandler.audioClipHandlers["cutscene3Throw"].Stop(true); + AudioHandler.audioClipHandlers["cutscene3Yay"].Stop(true); + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Stop(true); + oldDuration = duration; duration = skipDuration; } @@ -128,6 +156,10 @@ public class CutsceneIntro : Script { if (canvas1.IsActiveSelf) { + if(time == 0 && !skip) + { + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Play(); + } if (showPic1a) { if (time < duration) @@ -154,6 +186,10 @@ public class CutsceneIntro : Script if (showPic1b) { + if (time == 0 && !skip) + { + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Play(); + } if (time < duration) { pic1bTran.LocalPosition = Vector3.Lerp(pic1bTran.LocalPosition, listOfCutscene1Points[1].LocalPosition, time / duration); @@ -178,6 +214,10 @@ public class CutsceneIntro : Script if (showPic1c) { + if (time == 0 && !skip) + { + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Play(); + } if (time < duration) { pic1cTran.LocalPosition = Vector3.Lerp(pic1cTran.LocalPosition, listOfCutscene1Points[2].LocalPosition, time / duration); @@ -209,6 +249,11 @@ public class CutsceneIntro : Script { if (showPic2a) { + if (time == 0 && !skip) + { + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Play(); + AudioHandler.audioClipHandlers["cutscene2Stomach"].Play(); + } if (time < duration) { pic2aTran.LocalPosition = Vector3.Lerp(pic2aTran.LocalPosition, listOfCutscene2Points[0].LocalPosition, time / duration); @@ -233,6 +278,11 @@ public class CutsceneIntro : Script if (showPic2b) { + if(time == 0 && !skip) + { + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Play(); + AudioHandler.audioClipHandlers["cutscene2Alert"].Play(); + } if (time < duration) { pic2bTran.LocalPosition = Vector3.Lerp(pic2bTran.LocalPosition, listOfCutscene2Points[1].LocalPosition, time / duration); @@ -257,6 +307,11 @@ public class CutsceneIntro : Script if (showPic2c) { + if (time == 0 && !skip) + { + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Play(); + AudioHandler.audioClipHandlers["cutscene2Sparkle"].Play(); + } if (time < duration) { pic2cTran.LocalPosition = Vector3.Lerp(pic2cTran.LocalPosition, listOfCutscene2Points[2].LocalPosition, time / duration); @@ -288,6 +343,11 @@ public class CutsceneIntro : Script { if (showPic3a) { + if(time == 0 && !skip) + { + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Play(); + AudioHandler.audioClipHandlers["cutscene3Jump"].Play(); + } if (time < duration) { pic3aTran.LocalPosition = Vector3.Lerp(pic3aTran.LocalPosition, listOfCutscene3Points[0].LocalPosition, time / duration); @@ -312,6 +372,11 @@ public class CutsceneIntro : Script if (showPic3b) { + if (time == 0 && !skip) + { + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Play(); + AudioHandler.audioClipHandlers["cutscene3Sparkle"].Play(); + } if (time < duration) { pic3bTran.LocalPosition = Vector3.Lerp(pic3bTran.LocalPosition, listOfCutscene3Points[1].LocalPosition, time / duration); @@ -336,6 +401,11 @@ public class CutsceneIntro : Script if (showPic3c) { + if (time == 0 && !skip) + { + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Play(); + AudioHandler.audioClipHandlers["cutscene3Carry"].Play(); + } if (time < duration) { pic3cTran.LocalPosition = Vector3.Lerp(pic3cTran.LocalPosition, listOfCutscene3Points[2].LocalPosition, time / duration); @@ -360,6 +430,11 @@ public class CutsceneIntro : Script if (showPic3d) { + if (time == 0 && !skip) + { + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Play(); + AudioHandler.audioClipHandlers["cutscene3Throw"].Play(); + } if (time < duration) { pic3dTran.LocalPosition = Vector3.Lerp(pic3dTran.LocalPosition, listOfCutscene3Points[3].LocalPosition, time / duration); @@ -384,6 +459,11 @@ public class CutsceneIntro : Script if (showPic3e) { + if (time == 0 && !skip) + { + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Play(); + AudioHandler.audioClipHandlers["cutscene3Yay"].Play(); + } if (time < duration) { pic3eTran.LocalPosition = Vector3.Lerp(pic3eTran.LocalPosition, listOfCutscene3Points[4].LocalPosition, time / duration); diff --git a/Assets/Scripts/UI/SC_EndScene.cs b/Assets/Scripts/UI/SC_EndScene.cs index 3812db2a..5fbca3b6 100644 --- a/Assets/Scripts/UI/SC_EndScene.cs +++ b/Assets/Scripts/UI/SC_EndScene.cs @@ -10,8 +10,8 @@ public class EndScene : Script protected override void awake() { - AudioHandler.audioClipHandlers["SFXMouseDownElement"] = Audio.CreateAudioClip("event:/UI/mouse_down_element"); - AudioHandler.audioClipHandlers["SFXUISuccess"] = Audio.CreateAudioClip("event:/UI/success"); + //AudioHandler.audioClipHandlers["SFXMouseDownElement"] = Audio.CreateAudioClip("event:/UI/mouse_down_element"); + //AudioHandler.audioClipHandlers["SFXUISuccess"] = Audio.CreateAudioClip("event:/UI/success"); } protected override void start() @@ -27,28 +27,28 @@ public class EndScene : Script if (Input.GetKeyDown(Input.KeyCode.R)) { //Audio.PlaySFXOnce2D("event:/UI/mouse_down_element"); - AudioHandler.audioClipHandlers["SFXMouseDownElement"].Play(); + //AudioHandler.audioClipHandlers["SFXMouseDownElement"].Play(); } if (Input.GetKeyUp(Input.KeyCode.R)) { //Audio.PlaySFXOnce2D("event:/UI/success"); //Audio.StopAllSounds(); AudioHandler.StopAllSounds(false); - AudioHandler.audioClipHandlers["SFXUISuccess"].Play(); + //AudioHandler.audioClipHandlers["SFXUISuccess"].Play(); SceneManager.ChangeScene(mainGameScene); } if (Input.GetKeyDown(Input.KeyCode.M)) { //Audio.PlaySFXOnce2D("event:/UI/mouse_down_element"); - AudioHandler.audioClipHandlers["SFXMouseDownElement"].Play(); + //AudioHandler.audioClipHandlers["SFXMouseDownElement"].Play(); } if (Input.GetKeyUp(Input.KeyCode.M)) { //Audio.PlaySFXOnce2D("event:/UI/success"); //Audio.StopAllSounds(); AudioHandler.StopAllSounds(false); - AudioHandler.audioClipHandlers["SFXUISuccess"].Play(); + //AudioHandler.audioClipHandlers["SFXUISuccess"].Play(); SceneManager.ChangeScene(mainMainScene); } diff --git a/Assets/Scripts/UI/SC_MainMenu.cs b/Assets/Scripts/UI/SC_MainMenu.cs index 8252344d..33958118 100644 --- a/Assets/Scripts/UI/SC_MainMenu.cs +++ b/Assets/Scripts/UI/SC_MainMenu.cs @@ -13,8 +13,8 @@ public class MainMenu : Script protected override void awake() { AudioHandler.audioClipHandlers["BGMMainMenu"] = Audio.CreateAudioClip("event:/Music/main_menu"); - AudioHandler.audioClipHandlers["SFXMouseDownElement"] = Audio.CreateAudioClip("event:/UI/mouse_down_element"); - AudioHandler.audioClipHandlers["SFXUISuccess"] = Audio.CreateAudioClip("event:/UI/success"); + //AudioHandler.audioClipHandlers["SFXMouseDownElement"] = Audio.CreateAudioClip("event:/UI/mouse_down_element"); + //AudioHandler.audioClipHandlers["SFXUISuccess"] = Audio.CreateAudioClip("event:/UI/success"); //Audio.PlayBGMOnce2D("event:/Music/main_menu"); AudioHandler.audioClipHandlers["BGMMainMenu"].Play(); diff --git a/Assets/Scripts/UI/SC_Options.cs b/Assets/Scripts/UI/SC_Options.cs index bc2fa69c..5020af91 100644 --- a/Assets/Scripts/UI/SC_Options.cs +++ b/Assets/Scripts/UI/SC_Options.cs @@ -7,89 +7,92 @@ using System.Threading.Tasks; namespace SHADE_Scripting.UI { - public class Options:Script + public class Options : Script + { + public GameObject masterVolSlider; + public GameObject sfxVolSlider; + public GameObject bgmVolSlider; + public GameObject fovSlider; + public GameObject sensitivitySlider; + + + + + protected override void awake() { - public GameObject masterVolSlider; - public GameObject sfxVolSlider; - public GameObject bgmVolSlider; - public GameObject fovSlider; - public GameObject sensitivitySlider; + 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; - 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 (bgm != null) + { + bgm.ScaledValue = Settings.bgmVolume; - + } + if (fov != null) + { + fov.ScaledValue = Settings.cameraFOV; - 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; - - } + } + 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; - } - - - } + } } + + + 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; + SHADE.Audio.SetVCAVolume("vca:/MASTER", Settings.masterVolume * 0.01f); + } + if (sfx != null) + { + Settings.sfxVolume = sfx.ScaledValue; + SHADE.Audio.SetVCAVolume("vca:/SFX", Settings.sfxVolume * 0.01f); + SHADE.Audio.SetVCAVolume("vca:/UI", Settings.sfxVolume * 0.01f); + } + if (bgm != null) + { + Settings.bgmVolume = bgm.ScaledValue; + SHADE.Audio.SetVCAVolume("vca:/MUSIC", Settings.bgmVolume * 0.01f); + } + if (fov != null) + { + Settings.cameraFOV = fov.ScaledValue; + } + if (sens != null) + { + Settings.cameraSensitivity = sens.ScaledValue; + } + + + } + + + } } diff --git a/Assets/Scripts/UI/SC_PauseMenu.cs b/Assets/Scripts/UI/SC_PauseMenu.cs index 32b59a85..a5d14a87 100644 --- a/Assets/Scripts/UI/SC_PauseMenu.cs +++ b/Assets/Scripts/UI/SC_PauseMenu.cs @@ -50,6 +50,7 @@ public class PauseMenu : Script if (canvas) canvas.SetActive(false); Application.FixDeltaTime = Time.DefaultFixDeltaTime; + AnimationSystem.TimeScale = AnimationSystem.DefaultTimeScale; } }); } @@ -69,6 +70,8 @@ public class PauseMenu : Script GameManager.Instance.GamePause = false; GameManager.Instance.stealFoodPopUpDone = false; GameManager.Instance.PreviewLevelDone = false; + Application.FixDeltaTime = Time.DefaultFixDeltaTime; + AnimationSystem.TimeScale = AnimationSystem.DefaultTimeScale; }); } else @@ -82,6 +85,8 @@ public class PauseMenu : Script quit.OnRelease.RegisterAction(() => { Audio.StopAllSounds(); + Application.FixDeltaTime = Time.DefaultFixDeltaTime; + AnimationSystem.TimeScale = AnimationSystem.DefaultTimeScale; //go to main menu SceneManager.ChangeScene(97158628); }); @@ -106,6 +111,7 @@ public class PauseMenu : Script if (canvas) canvas.SetActive(true); Application.FixDeltaTime = 0; + AnimationSystem.TimeScale = 0; } } diff --git a/Assets/Scripts/UI/SC_ScoreTextDigitPositioning.cs b/Assets/Scripts/UI/SC_ScoreTextDigitPositioning.cs new file mode 100644 index 00000000..0578ce21 --- /dev/null +++ b/Assets/Scripts/UI/SC_ScoreTextDigitPositioning.cs @@ -0,0 +1,42 @@ +using SHADE; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SHADE_Scripting.UI +{ + public class ScoreTextDigitPositioning:Script + { + [NonSerialized] + Vector3 defaultPosition; + + public float offsetPerDigit = 0.0f; + + protected override void awake() + { + Transform trans = GetComponent(); + if(trans) + { + defaultPosition = trans.LocalPosition; + } + } + + protected override void update() + { + TextRenderable text = GetComponent(); + Transform trans = GetComponent(); + if (trans && text) + { + String str = text.Text; + + Vector3 offset = new Vector3((str.Length - 1) * offsetPerDigit, 0.0f, 0.0f); + + trans.LocalPosition = defaultPosition - offset; + } + } + + + } +} diff --git a/Assets/Scripts/UI/SC_ScoreTextDigitPositioning.cs.shmeta b/Assets/Scripts/UI/SC_ScoreTextDigitPositioning.cs.shmeta new file mode 100644 index 00000000..69d30960 --- /dev/null +++ b/Assets/Scripts/UI/SC_ScoreTextDigitPositioning.cs.shmeta @@ -0,0 +1,3 @@ +Name: SC_ScoreTextDigitPositioning +ID: 166859312 +Type: 9 diff --git a/Assets/Scripts/UI/SC_SingleScaleBounce.cs b/Assets/Scripts/UI/SC_SingleScaleBounce.cs new file mode 100644 index 00000000..d0eb4b66 --- /dev/null +++ b/Assets/Scripts/UI/SC_SingleScaleBounce.cs @@ -0,0 +1,73 @@ +using SHADE; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SHADE_Scripting.UI +{ + public class SingleScaleBounce: Script + { + [NonSerialized] + TweenThread thread; + + [NonSerialized] + Vector3 defaultScale; + + public float durationUp = 0.15f; + public float durationDown = 0.3f; + + public float scaleSize = 1.2f; + + [NonSerialized] + private bool scaleUp = false; + + protected override void awake() + { + Transform trans = GetComponent(); + if(trans != null) + { + defaultScale = trans.LocalScale; + } + + } + + protected override void start() + { + thread = TweenManager.CreateTweenThread(0.0f,1.0f,1.0f,EASING_METHOD.EASE_IN_SINE); + } + + + protected override void update() + { + if(scaleUp) + { + if(thread.IsCompleted()) + { + scaleUp = false; + thread.duration = durationDown; + thread.ResetInvert(); + } + } + + Transform trans = GetComponent(); + if(trans != null) + { + trans.LocalScale = defaultScale * thread.GetValue(); + } + + + } + + + public void ScaleBounceOnce() + { + scaleUp = true; + thread.duration = durationUp; + thread.Reset(1.0f, scaleSize); + } + + + } +} diff --git a/Assets/Scripts/UI/SC_SingleScaleBounce.cs.shmeta b/Assets/Scripts/UI/SC_SingleScaleBounce.cs.shmeta new file mode 100644 index 00000000..63bec3f1 --- /dev/null +++ b/Assets/Scripts/UI/SC_SingleScaleBounce.cs.shmeta @@ -0,0 +1,3 @@ +Name: SC_SingleScaleBounce +ID: 151165363 +Type: 9 diff --git a/Assets/Scripts/UI/SC_StealFoodPopUp.cs b/Assets/Scripts/UI/SC_StealFoodPopUp.cs index 6991ed32..1a6507b2 100644 --- a/Assets/Scripts/UI/SC_StealFoodPopUp.cs +++ b/Assets/Scripts/UI/SC_StealFoodPopUp.cs @@ -53,13 +53,16 @@ namespace SHADE_Scripting.UI { if (!GameManager.Instance.PreviewLevelDone) { - rot.Reset(); - scaleX.Reset(); - scaleY.Reset(); + if (rot != null && scaleX != null && scaleY != null) + { + rot.Reset(); + scaleX.Reset(); + scaleY.Reset(); + } return; } - if (!popInDone) + if (!popInDone && rot != null && scaleX != null && scaleY != null) { tran.LocalEulerAngles = new Vector3(0.0f, 0.0f, SHADE.Math.DegreesToRadians(rot.GetValue())); tran.LocalScale = new Vector3(scaleX.GetValue(), scaleY.GetValue(), 1); @@ -71,7 +74,7 @@ namespace SHADE_Scripting.UI stayDone = true; } - if (rot.IsCompleted() && scaleX.IsCompleted() && scaleY.IsCompleted()) + if (rot != null && scaleX != null && scaleY != null && rot.IsCompleted() && scaleX.IsCompleted() && scaleY.IsCompleted()) popInDone = true; if (stayDone) @@ -82,8 +85,11 @@ namespace SHADE_Scripting.UI scaleOutY = TweenManager.CreateTweenThread(popOutDuration, scaleAmtY, 0, EASING_METHOD.EASE_IN_SINE); createThreadOnce = false; } - tran.LocalScale = new Vector3(scaleOutX.GetValue(), scaleOutY.GetValue(), 1); - if (scaleOutX.IsCompleted() && scaleOutY.IsCompleted()) + + if(scaleOutX != null && scaleOutY != null) + tran.LocalScale = new Vector3(scaleOutX.GetValue(), scaleOutY.GetValue(), 1); + + if (scaleOutX != null && scaleOutY != null && 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 0bdfd779..31a67ebd 100644 --- a/Assets/Scripts/UI/SC_TweenManager.cs +++ b/Assets/Scripts/UI/SC_TweenManager.cs @@ -4,190 +4,182 @@ using System; using System.Collections.Generic; using System.Threading; - -namespace SHADE_Scripting.UI +public class TweenThread { + private float timer = 0.0f; + public float duration = 1.0f; + public EASING_METHOD method; + 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; + 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 = EasingHelper.EaseHelp(timer / duration, method) * (endValue - startValue) + startValue; + } + public bool IsCompleted() + { + return timer >= duration; + } + public void Reset() + { + timer = 0.0f; + value = startValue; + } + public void Reset(float startValue, float endValue) + { + Reset(); + this.startValue = startValue; + this.endValue = endValue; + } + public void ResetInvert() + { + Reset(); + float temp = startValue; + 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; } + + [NonSerialized] + private List threadList; + + [NonSerialized] + private List threadVec3List; + + protected override void awake() + { + if (Instance != null && Instance != this) + RemoveScript(); + else + Instance = this; + + threadList = new List(); + threadVec3List = new List(); + + } + + protected override void onDestroy() + { + if (Instance == this) + Instance = null; + + } + + protected override void update() + { + foreach (TweenThread thread in threadList) + { + thread.Update(Time.DeltaTimeF); + } + + foreach (TweenThreadVec3 thread in threadVec3List) + { + thread.Update(Time.DeltaTimeF); + } + } + + + public static TweenThread CreateTweenThread(float duration, float startValue, float endValue, EASING_METHOD method) + { + if (Instance == null) + return null; + + TweenThread thread = new TweenThread(duration, startValue, endValue, method); + Instance.threadList.Add(thread); + thread.Reset(); + 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; + } - public class TweenThread - { - private float timer = 0.0f; - public float duration = 1.0f; - public EASING_METHOD method; - 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; - 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 = EasingHelper.EaseHelp(timer/duration, method) * (endValue - startValue) + startValue ; - } - public bool IsCompleted() - { - return timer >= duration; - } - public void Reset() - { - timer = 0.0f; - value = startValue; - } - public void Reset(float startValue, float endValue) - { - Reset(); - this.startValue = startValue; - this.endValue = endValue; - } - public void ResetInvert() - { - Reset(); - float temp = startValue; - 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; } - - [NonSerialized] - private List threadList; - - [NonSerialized] - private List threadVec3List; - - protected override void awake() - { - if (Instance != null && Instance != this) - RemoveScript(); - else - Instance = this; - - threadList = new List(); - threadVec3List = new List(); - - } - - protected override void onDestroy() - { - if (Instance == this) - Instance = null; - - } - - protected override void update() - { - foreach (TweenThread thread in threadList) - { - thread.Update(Time.DeltaTimeF); - } - - foreach (TweenThreadVec3 thread in threadVec3List) - { - thread.Update(Time.DeltaTimeF); - } - } - - - public static TweenThread CreateTweenThread(float duration, float startValue, float endValue, EASING_METHOD method) - { - if (Instance == null) - return null; - - - TweenThread thread = new TweenThread(duration, startValue, endValue, method); - Instance.threadList.Add(thread); - thread.Reset(); - 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/Scripts/Utility/UT_BaseSate.cs b/Assets/Scripts/Utility/UT_BaseSate.cs index 521f5936..483a289b 100644 --- a/Assets/Scripts/Utility/UT_BaseSate.cs +++ b/Assets/Scripts/Utility/UT_BaseSate.cs @@ -15,17 +15,14 @@ public abstract class BaseState } public virtual void OnEnter() - { - } + {} public abstract void update(); public abstract void fixedUpdate(); public virtual void OnExit() - { - - } + {} public string GetStateName() { @@ -37,11 +34,6 @@ public abstract class BaseState return animationName; } - public virtual float GetAnimPercent() - { - return 1.0f; - } - public virtual void onCollisionEnter(CollisionInfo info) { } diff --git a/Assets/Shaders/ShadowMapAnim_VS.glsl b/Assets/Shaders/ShadowMapAnim_VS.glsl new file mode 100644 index 00000000..17b135e0 --- /dev/null +++ b/Assets/Shaders/ShadowMapAnim_VS.glsl @@ -0,0 +1,37 @@ +#version 450 +#extension GL_KHR_vulkan_glsl : enable + +//#include "ShaderDescriptorDefinitions.glsl" + + +layout(location = 0) in vec3 aVertexPos; +layout(location = 4) in mat4 worldTransform; +layout(location = 9) in uvec4 aBoneIndices; +layout(location = 10) in vec4 aBoneWeights; +layout(location = 11) in uint firstBoneIndex; + +layout(set = 1, binding = 0) uniform CameraData +{ + vec4 position; + mat4 vpMat; + mat4 viewMat; + mat4 projMat; +} cameraData; + +layout (std430, set = 2, binding = 1) buffer AnimBoneMatrices +{ + mat4 data[]; +} BoneMatrices; + +void main() +{ + // // Compute bone matrix + mat4 boneMatrix = BoneMatrices.data[firstBoneIndex + aBoneIndices[0]] * aBoneWeights[0]; + boneMatrix += BoneMatrices.data[firstBoneIndex + aBoneIndices[1]] * aBoneWeights[1]; + boneMatrix += BoneMatrices.data[firstBoneIndex + aBoneIndices[2]] * aBoneWeights[2]; + boneMatrix += BoneMatrices.data[firstBoneIndex + aBoneIndices[3]] * aBoneWeights[3]; + + // clip space for rendering + // gl_Position = cameraData.vpMat * worldTransform * vec4 (aVertexPos, 1.0f); + gl_Position = cameraData.vpMat * worldTransform * boneMatrix * vec4 (aVertexPos, 1.0f); +} \ No newline at end of file diff --git a/Assets/Shaders/ShadowMapAnim_VS.shshaderb b/Assets/Shaders/ShadowMapAnim_VS.shshaderb new file mode 100644 index 00000000..047f485b Binary files /dev/null and b/Assets/Shaders/ShadowMapAnim_VS.shshaderb differ diff --git a/Assets/Shaders/ShadowMapAnim_VS.shshaderb.shmeta b/Assets/Shaders/ShadowMapAnim_VS.shshaderb.shmeta new file mode 100644 index 00000000..e31f63b1 --- /dev/null +++ b/Assets/Shaders/ShadowMapAnim_VS.shshaderb.shmeta @@ -0,0 +1,3 @@ +Name: ShadowMapAnim_VS +ID: 39393999 +Type: 2 diff --git a/Assets/Shaders/ShinyHighlight_VS.glsl b/Assets/Shaders/ShinyHighlight_VS.glsl index 483af1f0..044a2d7a 100644 --- a/Assets/Shaders/ShinyHighlight_VS.glsl +++ b/Assets/Shaders/ShinyHighlight_VS.glsl @@ -7,9 +7,6 @@ layout(location = 2) in vec3 aNormal; layout(location = 3) in vec3 aTangent; layout(location = 4) in mat4 worldTransform; layout(location = 8) in uvec2 integerData; -layout(location = 9) in uvec4 aBoneIndices; -layout(location = 10) in vec4 aBoneWeights; -layout(location = 11) in uint firstBoneIndex; layout(location = 0) out struct { diff --git a/Assets/Shaders/Silhouette_VS.glsl b/Assets/Shaders/Silhouette_VS.glsl index 1b45c333..a7fe585d 100644 --- a/Assets/Shaders/Silhouette_VS.glsl +++ b/Assets/Shaders/Silhouette_VS.glsl @@ -40,6 +40,12 @@ layout(set = 1, binding = 0) uniform CameraData mat4 projMat; } cameraData; +layout (std430, set = 2, binding = 1) buffer AnimBoneMatrices +{ + mat4 data[]; +} BoneMatrices; + + void main() { Out2.materialIndex = gl_InstanceIndex; @@ -63,6 +69,13 @@ void main() Out.normal.rgb = transposeInv * aNormal.rgb; Out.normal.rgb = normalize (Out.normal.rgb); + // Compute bone matrix + mat4 boneMatrix = BoneMatrices.data[firstBoneIndex + aBoneIndices[0]] * aBoneWeights[0]; + boneMatrix += BoneMatrices.data[firstBoneIndex + aBoneIndices[1]] * aBoneWeights[1]; + boneMatrix += BoneMatrices.data[firstBoneIndex + aBoneIndices[2]] * aBoneWeights[2]; + boneMatrix += BoneMatrices.data[firstBoneIndex + aBoneIndices[3]] * aBoneWeights[3]; + // clip space for rendering - gl_Position = cameraData.vpMat * worldTransform * vec4 (aVertexPos, 1.0f); + gl_Position = cameraData.vpMat * worldTransform * boneMatrix * vec4 (aVertexPos, 1.0f); + // gl_Position = cameraData.vpMat * worldTransform * vec4 (aVertexPos, 1.0f); } \ No newline at end of file diff --git a/Assets/Shaders/Silhouette_VS.shshaderb b/Assets/Shaders/Silhouette_VS.shshaderb index 1bb76ec4..63185558 100644 Binary files a/Assets/Shaders/Silhouette_VS.shshaderb and b/Assets/Shaders/Silhouette_VS.shshaderb differ diff --git a/Assets/Texture/Buttons/Button_Retry_Pressed.dds b/Assets/Texture/Buttons/Button_Resume_Clicked.dds similarity index 76% rename from Assets/Texture/Buttons/Button_Retry_Pressed.dds rename to Assets/Texture/Buttons/Button_Resume_Clicked.dds index a7a5c125..fcecfa1f 100644 Binary files a/Assets/Texture/Buttons/Button_Retry_Pressed.dds and b/Assets/Texture/Buttons/Button_Resume_Clicked.dds differ diff --git a/Assets/Texture/Buttons/Button_Retry_Pressed.shtex b/Assets/Texture/Buttons/Button_Resume_Clicked.shtex similarity index 76% rename from Assets/Texture/Buttons/Button_Retry_Pressed.shtex rename to Assets/Texture/Buttons/Button_Resume_Clicked.shtex index a3b7dce9..60b033da 100644 Binary files a/Assets/Texture/Buttons/Button_Retry_Pressed.shtex and b/Assets/Texture/Buttons/Button_Resume_Clicked.shtex differ diff --git a/Assets/Texture/Buttons/Button_Resume_Clicked.shtex.shmeta b/Assets/Texture/Buttons/Button_Resume_Clicked.shtex.shmeta new file mode 100644 index 00000000..2e0027f3 --- /dev/null +++ b/Assets/Texture/Buttons/Button_Resume_Clicked.shtex.shmeta @@ -0,0 +1,3 @@ +Name: Button_Resume_Clicked +ID: 66776217 +Type: 3 diff --git a/Assets/Texture/Buttons/Button_Retry_Idle.dds b/Assets/Texture/Buttons/Button_Resume_Default.dds similarity index 69% rename from Assets/Texture/Buttons/Button_Retry_Idle.dds rename to Assets/Texture/Buttons/Button_Resume_Default.dds index 09ad55f3..d73e485a 100644 Binary files a/Assets/Texture/Buttons/Button_Retry_Idle.dds and b/Assets/Texture/Buttons/Button_Resume_Default.dds differ diff --git a/Assets/Texture/Buttons/Button_Retry_Idle.shtex b/Assets/Texture/Buttons/Button_Resume_Default.shtex similarity index 69% rename from Assets/Texture/Buttons/Button_Retry_Idle.shtex rename to Assets/Texture/Buttons/Button_Resume_Default.shtex index 00592238..fe6035fa 100644 Binary files a/Assets/Texture/Buttons/Button_Retry_Idle.shtex and b/Assets/Texture/Buttons/Button_Resume_Default.shtex differ diff --git a/Assets/Texture/Buttons/Button_Resume_Default.shtex.shmeta b/Assets/Texture/Buttons/Button_Resume_Default.shtex.shmeta new file mode 100644 index 00000000..d61c38a2 --- /dev/null +++ b/Assets/Texture/Buttons/Button_Resume_Default.shtex.shmeta @@ -0,0 +1,3 @@ +Name: Button_Resume_Default +ID: 63738242 +Type: 3 diff --git a/Assets/Texture/Buttons/Button_Resume_Hovered.dds b/Assets/Texture/Buttons/Button_Resume_Hovered.dds new file mode 100644 index 00000000..d81df8ab Binary files /dev/null and b/Assets/Texture/Buttons/Button_Resume_Hovered.dds differ diff --git a/Assets/Texture/Buttons/Button_Resume_Hovered.shtex b/Assets/Texture/Buttons/Button_Resume_Hovered.shtex new file mode 100644 index 00000000..7f55eb04 Binary files /dev/null and b/Assets/Texture/Buttons/Button_Resume_Hovered.shtex differ diff --git a/Assets/Texture/Buttons/Button_Resume_Hovered.shtex.shmeta b/Assets/Texture/Buttons/Button_Resume_Hovered.shtex.shmeta new file mode 100644 index 00000000..720d8c47 --- /dev/null +++ b/Assets/Texture/Buttons/Button_Resume_Hovered.shtex.shmeta @@ -0,0 +1,3 @@ +Name: Button_Resume_Hovered +ID: 58455648 +Type: 3 diff --git a/Assets/Texture/Buttons/Button_Retry_Clicked.dds b/Assets/Texture/Buttons/Button_Retry_Clicked.dds new file mode 100644 index 00000000..6ca0270e Binary files /dev/null and b/Assets/Texture/Buttons/Button_Retry_Clicked.dds differ diff --git a/Assets/Texture/Buttons/Button_Retry_Clicked.shtex b/Assets/Texture/Buttons/Button_Retry_Clicked.shtex new file mode 100644 index 00000000..25b089be Binary files /dev/null and b/Assets/Texture/Buttons/Button_Retry_Clicked.shtex differ diff --git a/Assets/Texture/Buttons/Button_Retry_Clicked.shtex.shmeta b/Assets/Texture/Buttons/Button_Retry_Clicked.shtex.shmeta new file mode 100644 index 00000000..496f0c1b --- /dev/null +++ b/Assets/Texture/Buttons/Button_Retry_Clicked.shtex.shmeta @@ -0,0 +1,3 @@ +Name: Button_Retry_Clicked +ID: 60429179 +Type: 3 diff --git a/Assets/Texture/Buttons/Button_Retry_Default.dds b/Assets/Texture/Buttons/Button_Retry_Default.dds new file mode 100644 index 00000000..8ad235cd Binary files /dev/null and b/Assets/Texture/Buttons/Button_Retry_Default.dds differ diff --git a/Assets/Texture/Buttons/Button_Retry_Default.shtex b/Assets/Texture/Buttons/Button_Retry_Default.shtex new file mode 100644 index 00000000..42573a5d Binary files /dev/null and b/Assets/Texture/Buttons/Button_Retry_Default.shtex differ diff --git a/Assets/Texture/Buttons/Button_Retry_Default.shtex.shmeta b/Assets/Texture/Buttons/Button_Retry_Default.shtex.shmeta new file mode 100644 index 00000000..2627554c --- /dev/null +++ b/Assets/Texture/Buttons/Button_Retry_Default.shtex.shmeta @@ -0,0 +1,3 @@ +Name: Button_Retry_Default +ID: 64995894 +Type: 3 diff --git a/Assets/Texture/Buttons/Button_Retry_Hover.dds b/Assets/Texture/Buttons/Button_Retry_Hover.dds deleted file mode 100644 index 5eb05b41..00000000 Binary files a/Assets/Texture/Buttons/Button_Retry_Hover.dds and /dev/null differ diff --git a/Assets/Texture/Buttons/Button_Retry_Hover.shtex b/Assets/Texture/Buttons/Button_Retry_Hover.shtex deleted file mode 100644 index a6cee8ed..00000000 Binary files a/Assets/Texture/Buttons/Button_Retry_Hover.shtex and /dev/null differ diff --git a/Assets/Texture/Buttons/Button_Retry_Hover.shtex.shmeta b/Assets/Texture/Buttons/Button_Retry_Hover.shtex.shmeta deleted file mode 100644 index 28928eda..00000000 --- a/Assets/Texture/Buttons/Button_Retry_Hover.shtex.shmeta +++ /dev/null @@ -1,3 +0,0 @@ -Name: Button_Retry_Hover -ID: 58347825 -Type: 3 diff --git a/Assets/Texture/Buttons/Button_Retry_Hovered.dds b/Assets/Texture/Buttons/Button_Retry_Hovered.dds new file mode 100644 index 00000000..ab974c20 Binary files /dev/null and b/Assets/Texture/Buttons/Button_Retry_Hovered.dds differ diff --git a/Assets/Texture/Buttons/Button_Retry_Hovered.shtex b/Assets/Texture/Buttons/Button_Retry_Hovered.shtex new file mode 100644 index 00000000..597fe430 Binary files /dev/null and b/Assets/Texture/Buttons/Button_Retry_Hovered.shtex differ diff --git a/Assets/Texture/Buttons/Button_Retry_Hovered.shtex.shmeta b/Assets/Texture/Buttons/Button_Retry_Hovered.shtex.shmeta new file mode 100644 index 00000000..2c5cdd4f --- /dev/null +++ b/Assets/Texture/Buttons/Button_Retry_Hovered.shtex.shmeta @@ -0,0 +1,3 @@ +Name: Button_Retry_Hovered +ID: 58109178 +Type: 3 diff --git a/Assets/Texture/Buttons/Button_Retry_Idle.shtex.shmeta b/Assets/Texture/Buttons/Button_Retry_Idle.shtex.shmeta deleted file mode 100644 index 7f2cf050..00000000 --- a/Assets/Texture/Buttons/Button_Retry_Idle.shtex.shmeta +++ /dev/null @@ -1,3 +0,0 @@ -Name: Button_Retry_Idle -ID: 64806384 -Type: 3 diff --git a/Assets/Texture/Buttons/Button_Retry_Pressed.shtex.shmeta b/Assets/Texture/Buttons/Button_Retry_Pressed.shtex.shmeta deleted file mode 100644 index d4064d14..00000000 --- a/Assets/Texture/Buttons/Button_Retry_Pressed.shtex.shmeta +++ /dev/null @@ -1,3 +0,0 @@ -Name: Button_Retry_Pressed -ID: 63234380 -Type: 3 diff --git a/SHADE_Application/src/Application/SBApplication.cpp b/SHADE_Application/src/Application/SBApplication.cpp index 3943b34d..42e112b8 100644 --- a/SHADE_Application/src/Application/SBApplication.cpp +++ b/SHADE_Application/src/Application/SBApplication.cpp @@ -180,8 +180,8 @@ namespace Sandbox // Link up SHDebugDraw SHDebugDraw::Init(SHSystemManager::GetSystem()); - auto clip = SHResourceManager::LoadOrGet(77816045); - auto rig = SHResourceManager::LoadOrGet(77816045); + //auto clip = SHResourceManager::LoadOrGet(77816045); + //auto rig = SHResourceManager::LoadOrGet(77816045); } void SBApplication::Update(void) diff --git a/SHADE_CSharp/premake5.lua b/SHADE_CSharp/premake5.lua index f735b515..0bb5f448 100644 --- a/SHADE_CSharp/premake5.lua +++ b/SHADE_CSharp/premake5.lua @@ -24,15 +24,13 @@ project "SHADE_CSharp" { "SHADE_Engine" } - - warnings 'Extra' - postbuildcommands { - "xcopy /r /y /q \"%{outputdir}\\net5.0\\SHADE_CSharp.xml\" \"%{outputdir}\"", - "xcopy /r /y /q \"%{outputdir}\\net5.0\\SHADE_CSharp.pdb\" \"%{outputdir}\"" + "xcopy /r /y /q \"%{wks.location}/bin/$(Configuration)\\net5.0\\SHADE_CSharp.pdb\" \"%{wks.location}/bin/$(Configuration)\"" } + warnings 'Extra' + filter "configurations:Debug" symbols "On" defines {"_DEBUG"} diff --git a/SHADE_Engine/src/Animation/SHAnimationClip.cpp b/SHADE_Engine/src/Animation/SHAnimationClip.cpp index b4a62651..b45701d8 100644 --- a/SHADE_Engine/src/Animation/SHAnimationClip.cpp +++ b/SHADE_Engine/src/Animation/SHAnimationClip.cpp @@ -20,19 +20,19 @@ namespace SHADE /*-----------------------------------------------------------------------------------*/ /* Constructors */ /*-----------------------------------------------------------------------------------*/ - SHAnimationClip::SHAnimationClip(Handle rawAnimHandle, int firstFrame, int lastFrame) - : rawAnim { rawAnimHandle } - , startFrameIndex { firstFrame } - , endFrameIndex { lastFrame } - , duration { 0.0f } - , startTimeStamp { 0.0f } + SHAnimationClip::SHAnimationClip(Handle rawAnimHandle, int firstFrame, int lastFrame, float playbackMultiplier) + : rawAnim { rawAnimHandle } + , startFrameIndex { firstFrame } + , endFrameIndex { lastFrame } + , duration { 0.0f } + , startTimeStamp { 0.0f } + , playbackSpeedMultiplier { playbackMultiplier } { if (!rawAnim) return; const float SECS_PER_TICK = 1.0f / static_cast(rawAnim->GetTicksPerSecond()); - const int ONE_PAST_LAST_FRAME = lastFrame + 1; - duration = static_cast(ONE_PAST_LAST_FRAME - firstFrame) * SECS_PER_TICK; + duration = static_cast(lastFrame - firstFrame) * SECS_PER_TICK; startTimeStamp = static_cast(firstFrame) * SECS_PER_TICK; } } \ No newline at end of file diff --git a/SHADE_Engine/src/Animation/SHAnimationClip.h b/SHADE_Engine/src/Animation/SHAnimationClip.h index 6b97c955..2c6b6561 100644 --- a/SHADE_Engine/src/Animation/SHAnimationClip.h +++ b/SHADE_Engine/src/Animation/SHAnimationClip.h @@ -41,25 +41,39 @@ namespace SHADE /// Handle to the raw animation data. /// First frame to be played. /// Last frame to be played. - SHAnimationClip(Handle rawAnimHandle, int firstFrame, int lastFrame); + /// Multiplier for the playback speed. + SHAnimationClip(Handle rawAnimHandle, int firstFrame, int lastFrame, float playbackMultiplier = 1.0f); /*---------------------------------------------------------------------------------*/ /* Getter Functions */ /*---------------------------------------------------------------------------------*/ inline Handle GetRawAnimation() const noexcept { return rawAnim; } inline int GetStartFrameIndex() const noexcept { return startFrameIndex; } - inline int GetEndFrameIndex() const noexcept { return endFrameIndex; } - inline float GetTotalDuration() const noexcept { return duration; } + inline int GetEndFrameIndex() const noexcept { return endFrameIndex; }\ inline float GetStartTimeStamp() const noexcept { return startTimeStamp; } + inline float GetPlaybackSpeedMultiplier() const noexcept { return playbackSpeedMultiplier; } + /// + /// Retrieves the duration of the animation as if the playback speed multiplier is + /// in it's default value of 1.0f. + /// + /// Duration of the animation in seconds. + inline float GetTotalDuration() const noexcept { return duration; } + /// + /// Retrieves the duration of the animation with the playback speed multiplier + /// taken into account. + /// + /// True duration of the animation in seconds. + inline float GetTrueDuration() const noexcept { return duration / playbackSpeedMultiplier; } private: /*---------------------------------------------------------------------------------*/ /* Data Members */ /*---------------------------------------------------------------------------------*/ Handle rawAnim; - int startFrameIndex; // First Frame - int endFrameIndex; // Last Frame (inclusive) - float duration; // Total playback time - float startTimeStamp; // Starting time stamp of the raw anim + int startFrameIndex; // First Frame + int endFrameIndex; // Last Frame (inclusive) + float duration; // Total playback time + float startTimeStamp; // Starting time stamp of the raw anim + float playbackSpeedMultiplier; // Multiplier applied to the playback of an animation clip }; } \ No newline at end of file diff --git a/SHADE_Engine/src/Animation/SHAnimationController.cpp b/SHADE_Engine/src/Animation/SHAnimationController.cpp index 8152426f..e105c0da 100644 --- a/SHADE_Engine/src/Animation/SHAnimationController.cpp +++ b/SHADE_Engine/src/Animation/SHAnimationController.cpp @@ -15,6 +15,7 @@ of DigiPen Institute of Technology is prohibited. #include "SHAnimationSystem.h" #include "ECS_Base/Managers/SHSystemManager.h" #include "SHAnimationClip.h" +#include "Events/SHEventManager.hpp" namespace SHADE { @@ -55,23 +56,27 @@ namespace SHADE /*-----------------------------------------------------------------------------------*/ /* Lifecycle Functions */ /*-----------------------------------------------------------------------------------*/ - void SHAnimationController::Update(InstanceData& instData, float dt) + void SHAnimationController::Update(EntityID eid, InstanceData& instData, float dt) { // Is there a valid node if (!instData.CurrentNode) return; + // Get the clip + Handle clip = instData.CurrentNode->Clip; + // Update the current playback - instData.ClipPlaybackTime += dt; + instData.ClipPlaybackTime += dt * clip->GetPlaybackSpeedMultiplier(); // Check if we finished playing - const float CLIP_CURR_PLAYED_TIME = instData.ClipPlaybackTime - instData.CurrentNode->Clip->GetStartTimeStamp(); - if (CLIP_CURR_PLAYED_TIME > instData.CurrentNode->Clip->GetTotalDuration()) + const float CLIP_CURR_PLAYED_TIME = instData.ClipPlaybackTime - clip->GetStartTimeStamp(); + if (CLIP_CURR_PLAYED_TIME > clip->GetTotalDuration()) { // Clamp - instData.ClipPlaybackTime = instData.CurrentNode->Clip->GetStartTimeStamp() + instData.CurrentNode->Clip->GetTotalDuration(); + instData.ClipPlaybackTime = clip->GetStartTimeStamp() + clip->GetTotalDuration(); // Go to next state + Handle originalClip = clip; bool stateChanged = false; for (const auto& transition : instData.CurrentNode->Transitions) { @@ -107,7 +112,29 @@ namespace SHADE } // Handle if there is no next state, we repeat - if (!stateChanged) + if (stateChanged) + { + // Raise events + SHEventManager::BroadcastEvent + ( + SHAnimationSystem::FinishedEvent + { + eid, + originalClip + }, + SH_ANIMATION_FINISHED_EVENT + ); + SHEventManager::BroadcastEvent + ( + SHAnimationSystem::PlayEvent + { + eid, + instData.CurrentNode ? instData.CurrentNode->Clip : Handle() + }, + SH_ANIMATIONS_PLAY_EVENT + ); + } + else { instData.ClipPlaybackTime = instData.CurrentNode->Clip->GetStartTimeStamp(); } diff --git a/SHADE_Engine/src/Animation/SHAnimationController.h b/SHADE_Engine/src/Animation/SHAnimationController.h index 56bf6f45..e664b445 100644 --- a/SHADE_Engine/src/Animation/SHAnimationController.h +++ b/SHADE_Engine/src/Animation/SHAnimationController.h @@ -18,6 +18,7 @@ of DigiPen Institute of Technology is prohibited. // Project Includes #include "SH_API.h" #include "Resource/SHHandle.h" +#include "ECS_Base/SHECSMacros.h" namespace SHADE { @@ -162,7 +163,12 @@ namespace SHADE /// /// Runs a single update for the animation controller. /// - void Update(InstanceData& instData, float dt); + /// + /// EntityID of the entity that this animation controller is updating. + /// + /// Instance data that stores the current state. + /// Frame time. + void Update(EntityID eid, InstanceData& instData, float dt); /*---------------------------------------------------------------------------------*/ /* Usage Functions */ diff --git a/SHADE_Engine/src/Animation/SHAnimationSystem.cpp b/SHADE_Engine/src/Animation/SHAnimationSystem.cpp index 6f41e2aa..e38d2287 100644 --- a/SHADE_Engine/src/Animation/SHAnimationSystem.cpp +++ b/SHADE_Engine/src/Animation/SHAnimationSystem.cpp @@ -32,6 +32,7 @@ namespace SHADE void SHAnimationSystem::UpdateRoutine::Execute(double dt) noexcept { auto& animators = SHComponentManager::GetDense(); + dt *= reinterpret_cast(system)->TimeScale; for (auto& animator : animators) { animator.Update(dt); diff --git a/SHADE_Engine/src/Animation/SHAnimationSystem.h b/SHADE_Engine/src/Animation/SHAnimationSystem.h index 9c2cd073..975547c0 100644 --- a/SHADE_Engine/src/Animation/SHAnimationSystem.h +++ b/SHADE_Engine/src/Animation/SHAnimationSystem.h @@ -19,6 +19,11 @@ of DigiPen Institute of Technology is prohibited. namespace SHADE { + /*-----------------------------------------------------------------------------------*/ + /* Forward Declaration */ + /*-----------------------------------------------------------------------------------*/ + class SHAnimationClip; + /*-----------------------------------------------------------------------------------*/ /* Type Definitions */ /*-----------------------------------------------------------------------------------*/ @@ -29,7 +34,7 @@ namespace SHADE { public: /*---------------------------------------------------------------------------------*/ - /* Type Definitions */ + /* Type Definitions - System Routines */ /*---------------------------------------------------------------------------------*/ /// /// Responsible for updating the playback of all animator components and computing @@ -42,6 +47,57 @@ namespace SHADE void Execute(double dt) noexcept override final; }; + /*---------------------------------------------------------------------------------*/ + /* Type Definitions - Event Data */ + /*---------------------------------------------------------------------------------*/ + /// + /// Event data for the SH_ANIMATIONS_PLAY_EVENT event which is raised on the frame + /// that an animation has started playing. + /// + struct PlayEvent + { + EntityID Entity; + Handle PlayingClip; + float CurrentTimeStamp; + }; + /// + /// Event data for the SH_ANIMATIONS_PAUSED_EVENT event which is raised on the frame + /// that an animation is paused. + /// + struct PausedEvent + { + EntityID Entity; + Handle PausedClip; + float PauseTimeStamp; + }; + /// + /// Event data for the SH_ANIMATIONS_FINISHED_EVENT event which is raised on the + /// frame that an animation has finished playing. This will not be called for any + /// animation that loops. + /// + struct FinishedEvent + { + EntityID Entity; + Handle FinishedClip; + }; + + /*---------------------------------------------------------------------------------*/ + /* Constants */ + /*---------------------------------------------------------------------------------*/ + /// + /// Default time scale used by the system. + /// + static constexpr double DEFAULT_TIME_SCALE = 1.0; + + /*---------------------------------------------------------------------------------*/ + /* Public Data Members */ + /*---------------------------------------------------------------------------------*/ + /// + /// Used by the system to multiply the given delta time to scale the animation + /// speed. + /// + double TimeScale = DEFAULT_TIME_SCALE; + /*---------------------------------------------------------------------------------*/ /* Constructors */ /*---------------------------------------------------------------------------------*/ diff --git a/SHADE_Engine/src/Animation/SHAnimatorComponent.cpp b/SHADE_Engine/src/Animation/SHAnimatorComponent.cpp index d21ee5e1..923fb876 100644 --- a/SHADE_Engine/src/Animation/SHAnimatorComponent.cpp +++ b/SHADE_Engine/src/Animation/SHAnimatorComponent.cpp @@ -25,6 +25,7 @@ of DigiPen Institute of Technology is prohibited. #include "ECS_Base/Managers/SHSystemManager.h" #include "Graphics/MiddleEnd/Interface/SHMaterialInstance.h" #include "Tools/SHDebugDraw.h" +#include "Events/SHEventManager.hpp" namespace SHADE { @@ -35,6 +36,8 @@ namespace SHADE { isPlaying = true; playOnce = false; + + raisePlayEvent(); } void SHAnimatorComponent::Play(Handle clip) @@ -91,11 +94,13 @@ namespace SHADE isPlaying = true; currPlaybackTime = 0.0f; + raisePlayEvent(); } void SHAnimatorComponent::Pause() { isPlaying = false; + raisePauseEvent(); } void SHAnimatorComponent::Stop() @@ -119,9 +124,13 @@ namespace SHADE std::fill(boneMatrices.begin(), boneMatrices.end(), SHMatrix::Identity); // Do not do anything if is not playing or there's nothing to animate - if (!isPlaying || !rig || !rig->GetRootNode()) + if (!rig || !rig->GetRootNode()) return; + // We want to still display a paused pose, so we only prevent progression + if (!isPlaying) + dt = 0.0f; + // Update the animation controller if any, this will set the currClip if (animController) { @@ -210,7 +219,20 @@ namespace SHADE return animController->SetTrigger(animInstanceData, paramName); } - + + /*-----------------------------------------------------------------------------------*/ + /* Getter Functions */ + /*-----------------------------------------------------------------------------------*/ + Handle SHAnimatorComponent::GetCurrentClip() const noexcept + { + if (animController) + { + return animInstanceData.CurrentNode ? animInstanceData.CurrentNode->Clip : Handle(); + } + + return currClip; + } + /*-----------------------------------------------------------------------------------*/ /* Helper Functions - Update */ /*-----------------------------------------------------------------------------------*/ @@ -221,7 +243,7 @@ namespace SHADE return; // Update the animation controller - animController->Update(animInstanceData, dt); + animController->Update(GetEID(), animInstanceData, dt); // Get current clip currClip = animInstanceData.CurrentNode->Clip; @@ -232,7 +254,7 @@ namespace SHADE } void SHAnimatorComponent::updateManualClipState(float dt) { - currPlaybackTime += dt; + currPlaybackTime += dt * currClip->GetPlaybackSpeedMultiplier(); const float CLIP_CURR_PLAYED_TIME = currPlaybackTime - currClip->GetStartTimeStamp(); if (CLIP_CURR_PLAYED_TIME > currClip->GetTotalDuration()) { @@ -241,6 +263,7 @@ namespace SHADE playOnce = false; isPlaying = false; currPlaybackTime = currClip->GetStartTimeStamp() + currClip->GetTotalDuration(); + raiseFinishEvent(); } else { @@ -251,7 +274,7 @@ namespace SHADE void SHAnimatorComponent::updateCurrentAnimatorState(Handle clip, float playbackTime) { // Nothing to animate - if (!clip || !isPlaying || !rig || !rig->GetRootNode()) + if (!clip || !rig || !rig->GetRootNode()) return; // Check that we have animation data @@ -299,6 +322,50 @@ namespace SHADE updatePoseWithClip(poseTime, rawAnimData, child, transformMatrix); } } + + /*-----------------------------------------------------------------------------------*/ + /* Helper Functions - Event */ + /*-----------------------------------------------------------------------------------*/ + void SHAnimatorComponent::raisePlayEvent() + { + SHEventManager::BroadcastEvent + ( + SHAnimationSystem::PlayEvent + { + GetEID(), + GetCurrentClip(), + GetCurrentClipPlaybackTime() + }, + SH_ANIMATIONS_PLAY_EVENT + ); + } + + void SHAnimatorComponent::raisePauseEvent() + { + SHEventManager::BroadcastEvent + ( + SHAnimationSystem::PausedEvent + { + GetEID(), + GetCurrentClip(), + GetCurrentClipPlaybackTime() + }, + SH_ANIMATIONS_PAUSED_EVENT + ); + } + + void SHAnimatorComponent::raiseFinishEvent() + { + SHEventManager::BroadcastEvent + ( + SHAnimationSystem::FinishedEvent + { + GetEID(), + GetCurrentClip() + }, + SH_ANIMATION_FINISHED_EVENT + ); + } } /*-------------------------------------------------------------------------------------*/ diff --git a/SHADE_Engine/src/Animation/SHAnimatorComponent.h b/SHADE_Engine/src/Animation/SHAnimatorComponent.h index 01e50861..ba18bf71 100644 --- a/SHADE_Engine/src/Animation/SHAnimatorComponent.h +++ b/SHADE_Engine/src/Animation/SHAnimatorComponent.h @@ -24,6 +24,7 @@ of DigiPen Institute of Technology is prohibited. #include "Math/SHQuaternion.h" #include "SHRawAnimation.h" #include "SHAnimationController.h" +#include "SHAnimationSystem.h" namespace SHADE { @@ -166,6 +167,20 @@ namespace SHADE /// /// Handle GetAnimationController() const noexcept { return animController; } + /// + /// Retrieves the currently playing clip. If there is an Animation Controller, it + /// will be retrieved from it. Otherwise, the currently assigned Animation Clip is provided. + /// + /// Handle to the currently playing Animation Clip if any. + Handle GetCurrentClip() const noexcept; + /// + /// Retrieves the current timestamp of the currently playing clip. This is relative + /// to the start frame of the Animation Clip. This function will retrieve the correct + /// playback time depending on the current playback mode (Animation Controller or + /// Manual). + /// + /// Time in seconds of the current timestamp of the current clip. + float GetCurrentClipPlaybackTime() const noexcept { return animController ? animInstanceData.ClipPlaybackTime : currPlaybackTime; } private: /*---------------------------------------------------------------------------------*/ @@ -201,6 +216,10 @@ namespace SHADE void updatePoseWithClip(float poseTime, Handle rawAnimData, Handle node, const SHMatrix& parentMatrix); template T getInterpolatedValue(const std::vector>& keyframes, float poseTime); + // Event Functions + void raisePlayEvent(); + void raisePauseEvent(); + void raiseFinishEvent(); /*---------------------------------------------------------------------------------*/ /* RTTR */ diff --git a/SHADE_Engine/src/Assets/Asset Types/SHAnimClipContainerAsset.h b/SHADE_Engine/src/Assets/Asset Types/SHAnimClipContainerAsset.h index 733119c0..7a719685 100644 --- a/SHADE_Engine/src/Assets/Asset Types/SHAnimClipContainerAsset.h +++ b/SHADE_Engine/src/Assets/Asset Types/SHAnimClipContainerAsset.h @@ -25,12 +25,13 @@ namespace SHADE std::string name; uint32_t firstIndex; uint32_t lastIndex; + float playbackMultiplier = 1.0f; AssetID animRawDataAssetId; // Not serialised, only populated during runtime from parent asset }; struct SH_API SHAnimClipContainerAsset final : SHAssetData { AssetID animRawDataAssetId; - std::vector clips{}; + std::vector clips{}; }; } diff --git a/SHADE_Engine/src/Assets/Libraries/Loaders/SHBinaryLoader.cpp b/SHADE_Engine/src/Assets/Libraries/Loaders/SHBinaryLoader.cpp index b59f6807..a8663dde 100644 --- a/SHADE_Engine/src/Assets/Libraries/Loaders/SHBinaryLoader.cpp +++ b/SHADE_Engine/src/Assets/Libraries/Loaders/SHBinaryLoader.cpp @@ -66,20 +66,20 @@ namespace SHADE for (auto const& clip : anim.clips) { - uint32_t charCount {static_cast(clip.name.size())}; + uint32_t charCount {static_cast(clip->name.size())}; file.write( reinterpret_cast(&charCount), sizeof(uint32_t) ); file.write( - clip.name.data(), + clip->name.data(), charCount ); file.write( - reinterpret_cast(&clip.firstIndex), - sizeof(uint32_t) * 2 + reinterpret_cast(&clip->firstIndex), + sizeof(uint32_t) * 3 ); } } @@ -99,28 +99,29 @@ namespace SHADE reinterpret_cast(&size), sizeof(uint32_t) ); + data->clips.resize(size); - for (auto i{0}; i < size; ++i) + for (auto& clip : data->clips) { - auto& clip {data->clips.emplace_back()}; + clip = new SHAnimClipAsset; uint32_t charCount; file.read( reinterpret_cast(&charCount), sizeof(uint32_t) ); - clip.name.resize(charCount); + clip->name.resize(charCount); file.read( - clip.name.data(), + clip->name.data(), charCount ); file.read( - reinterpret_cast(&clip.firstIndex), - sizeof(uint32_t) * 2 + reinterpret_cast(&clip->firstIndex), + sizeof(uint32_t) * 3 ); - clip.animRawDataAssetId = data->animRawDataAssetId; + clip->animRawDataAssetId = data->animRawDataAssetId; } result = data; diff --git a/SHADE_Engine/src/Assets/SHAssetManager.cpp b/SHADE_Engine/src/Assets/SHAssetManager.cpp index fcd9c5b1..dc9d9587 100644 --- a/SHADE_Engine/src/Assets/SHAssetManager.cpp +++ b/SHADE_Engine/src/Assets/SHAssetManager.cpp @@ -313,11 +313,11 @@ namespace SHADE .isSubAsset = true, .parent = parent }; - auto& newClip {animContainer->clips.emplace_back()}; - newClip.name = name; + auto& newClip {animContainer->clips.emplace_back(new SHAnimClipAsset())}; + newClip->name = name; assetCollection.emplace(id, asset); assetCollection[parent].subAssets.push_back(&assetCollection[id]); - assetData.emplace(id, &newClip); + assetData.emplace(id, newClip); return id; } @@ -639,6 +639,25 @@ namespace SHADE assetData.emplace(asset.id, data); } + switch (asset.type) + { + case AssetType::ANIM_CONTAINER: + { + auto container = reinterpret_cast(data); + for (auto i{0}; i < asset.subAssets.size(); ++i) + { + assetData.emplace( + asset.subAssets[i]->id, + container->clips[i] + ); + } + } + break; + + default: + break; + } + return data; } @@ -646,7 +665,6 @@ namespace SHADE { auto const& parent = assetCollection[asset.parent]; auto parentData = loaders[static_cast(parent.type)]->Load(parent.path); - if (parentData == nullptr) { SHLOG_ERROR("[Asset Manager] Unable to load asset into memory: {}\n", parent.path.string()); @@ -676,7 +694,7 @@ namespace SHADE { assetData.emplace( parent.subAssets[i]->id, - &parentContainer->clips[i] + parentContainer->clips[i] ); } } @@ -859,7 +877,7 @@ namespace SHADE for(auto& clip : data->clips) { SHAsset subAsset{ - .name = clip.name, + .name = clip->name, .id = GenerateAssetID(AssetType::ANIM_CLIP), .type = AssetType::ANIM_CLIP, .isSubAsset = true, @@ -869,7 +887,7 @@ namespace SHADE assetCollection.emplace(subAsset.id, subAsset); assetCollection[newAsset.id].subAssets.push_back(&assetCollection[subAsset.id]); - assetData.emplace(subAsset.id, &clip); + assetData.emplace(subAsset.id, clip); } SHAssetMetaHandler::WriteMetaData(assetCollection[newAsset.id]); diff --git a/SHADE_Engine/src/AudioSystem/SHAudioSystem.cpp b/SHADE_Engine/src/AudioSystem/SHAudioSystem.cpp index eac465ff..749f6180 100644 --- a/SHADE_Engine/src/AudioSystem/SHAudioSystem.cpp +++ b/SHADE_Engine/src/AudioSystem/SHAudioSystem.cpp @@ -115,6 +115,7 @@ namespace SHADE LoadBank((AUDIO_FOLDER_PATH + "Master.bank").data()); LoadBank((AUDIO_FOLDER_PATH + "Master.strings.bank").data()); LoadBank((AUDIO_FOLDER_PATH + "Music.bank").data()); + LoadBank((AUDIO_FOLDER_PATH + "Cinematics.bank").data()); LoadBank((AUDIO_FOLDER_PATH + "SFX.bank").data()); LoadBank((AUDIO_FOLDER_PATH + "UI.bank").data()); @@ -133,11 +134,12 @@ 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); + #endif + 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 } void SHADE::SHAudioSystem::Run(double dt) @@ -820,6 +822,16 @@ namespace SHADE instance->setVolume(volume); } + bool AudioClip::GetDestroyOnSceneExit() + { + return destroyOnSceneExit; + } + + void AudioClip::SetDestroyOnSceneExit(bool value) + { + destroyOnSceneExit = value; + } + SHEventHandle SHAudioSystem::onStop(SHEventPtr onStopEvent) { StopAllSounds(); @@ -839,7 +851,11 @@ namespace SHADE auto [begin, end] = audioClipLibrary.GetDenseAccess(); for (auto& it = begin; it != end; ++it) { - it->instance->release(); + if(it->destroyOnSceneExit) + { + it->instance->stop(FMOD_STUDIO_STOP_ALLOWFADEOUT); + it->instance->release(); + } } return onSceneExitEvent->handle; diff --git a/SHADE_Engine/src/AudioSystem/SHAudioSystem.h b/SHADE_Engine/src/AudioSystem/SHAudioSystem.h index 7e2fac11..1c285b62 100644 --- a/SHADE_Engine/src/AudioSystem/SHAudioSystem.h +++ b/SHADE_Engine/src/AudioSystem/SHAudioSystem.h @@ -37,10 +37,13 @@ namespace SHADE float GetParameterValue(const char* paramName); float GetVolume(); void SetVolume(float volume); + bool GetDestroyOnSceneExit(); + void SetDestroyOnSceneExit(bool value); friend class SHAudioSystem; private: FMOD::Studio::EventInstance* instance = nullptr; EntityID transformRef = MAX_EID; + bool destroyOnSceneExit = true; }; class SH_API SHAudioSystem : public SHSystem diff --git a/SHADE_Engine/src/Camera/SHCameraSystem.cpp b/SHADE_Engine/src/Camera/SHCameraSystem.cpp index bd35af76..1686c0dc 100644 --- a/SHADE_Engine/src/Camera/SHCameraSystem.cpp +++ b/SHADE_Engine/src/Camera/SHCameraSystem.cpp @@ -206,6 +206,16 @@ namespace SHADE camera->dirtyView = true; } + camera->offset = offset; + + SHVec3 tOffset = pivot.GetTargetOffset(); + + + tOffset = SHVec3::RotateY(tOffset, SHMath::DegreesToRadians(pivot.GetYaw())); + + + if (pivot.lookAtCameraOrigin) + CameraLookAt(*camera, camera->position + tOffset); @@ -250,7 +260,7 @@ namespace SHADE if (camera.isActive == false) return; - if (SHComponentManager::HasComponent(camera.GetEID()) == true && &camera != &editorCamera) + if (SHComponentManager::HasComponent(camera.GetEID()) == true && SHComponentManager::HasComponent(camera.GetEID()) == false && &camera != &editorCamera) { auto transform = SHComponentManager::GetComponent(camera.GetEID()); SHVec3 rotation = transform->GetWorldRotation(); @@ -273,14 +283,14 @@ namespace SHADE { camera.offset = arm->GetOffset(); - SHVec3 tOffset = arm->GetTargetOffset(); + /*SHVec3 tOffset = arm->GetTargetOffset(); tOffset = SHVec3::RotateY(tOffset, SHMath::DegreesToRadians(arm->GetYaw())); if (arm->lookAtCameraOrigin) - CameraLookAt(camera, camera.position + arm->GetTargetOffset()); + CameraLookAt(camera, camera.position + arm->GetTargetOffset());*/ } diff --git a/SHADE_Engine/src/Editor/EditorWindow/RawAnimationInspector/SHRawAnimInspector.cpp b/SHADE_Engine/src/Editor/EditorWindow/RawAnimationInspector/SHRawAnimInspector.cpp index 563c0f60..e85efaf4 100644 --- a/SHADE_Engine/src/Editor/EditorWindow/RawAnimationInspector/SHRawAnimInspector.cpp +++ b/SHADE_Engine/src/Editor/EditorWindow/RawAnimationInspector/SHRawAnimInspector.cpp @@ -54,6 +54,7 @@ namespace SHADE newAssetName.clear(); firstIndex = 0; lastIndex = rawAnimation->GetTotalFrames(); + playbackMultiplier = 1.0f; } // Assign callback @@ -72,6 +73,9 @@ namespace SHADE SHEditorUI::PushID(1); SHEditorUI::InputUnsignedInt("Last Frame Index", lastIndex); SHEditorUI::PopID(); + SHEditorUI::PushID(2); + SHEditorUI::InputFloat("Playback Multiplier", playbackMultiplier); + SHEditorUI::PopID(); // Invalid values const bool INVALID_CONFIG = newAssetName.empty() || firstIndex > lastIndex; @@ -88,6 +92,7 @@ namespace SHADE animClip->firstIndex = firstIndex; animClip->lastIndex = lastIndex; animClip->animRawDataAssetId = SHResourceManager::GetAssetID(rawAnimation).value_or(0); + animClip->playbackMultiplier = playbackMultiplier; SHAssetManager::SaveAsset(containerAsset->id); // Close @@ -158,13 +163,17 @@ namespace SHADE if (SHEditorUI::CollapsingHeader("Existing Animation Clips")) { ImGui::Indent(); + int i = 0; for (auto animClip : childAnimClips) { + ImGui::PushID(i++); + bool changed = false; std::optional animClipName = SHResourceManager::GetAssetName(animClip); int firstIndex = animClip->GetStartFrameIndex(); int endIndex = animClip->GetEndFrameIndex(); + float playbackMp = animClip->GetPlaybackSpeedMultiplier(); ImGui::Separator(); ImGui::Text(animClipName.has_value() ? animClipName.value().c_str() : ""); @@ -180,23 +189,32 @@ namespace SHADE [&]() { return endIndex; }, [&](int i) { endIndex = i; } ); + changed |= SHEditorWidgets::DragFloat + ( + "Playback Multiplier", + [&]() { return playbackMp; }, + [&](float f) { playbackMp = f; } + ); // If there's a change we need to commit changes if (changed && firstIndex < endIndex) { // Update runtime asset - *animClip = SHAnimationClip(currRawAnim, firstIndex, endIndex); + *animClip = SHAnimationClip(currRawAnim, firstIndex, endIndex, playbackMp); // Update serialized asset auto assetId = SHResourceManager::GetAssetID(animClip); if (assetId.has_value()) { - auto animAsset = SHAssetManager::GetData(assetId.value()); + auto const animAsset = SHAssetManager::GetData(assetId.value()); animAsset->firstIndex = firstIndex; animAsset->lastIndex = endIndex; - SHAssetManager::SaveAsset(assetId.value()); + animAsset->playbackMultiplier = playbackMp; + SHAssetManager::SaveAsset(containerAsset->id); } } + + ImGui::PopID(); } // Extra separator if there is more than one diff --git a/SHADE_Engine/src/Editor/EditorWindow/RawAnimationInspector/SHRawAnimInspector.h b/SHADE_Engine/src/Editor/EditorWindow/RawAnimationInspector/SHRawAnimInspector.h index 6790cded..550bd158 100644 --- a/SHADE_Engine/src/Editor/EditorWindow/RawAnimationInspector/SHRawAnimInspector.h +++ b/SHADE_Engine/src/Editor/EditorWindow/RawAnimationInspector/SHRawAnimInspector.h @@ -62,6 +62,7 @@ namespace SHADE std::string newAssetName; uint32_t firstIndex = 0; uint32_t lastIndex = 0; + float playbackMultiplier = 1.0f; Handle rawAnimation; SHAsset* containerAsset{nullptr}; SHAnimClipContainerAsset* container{nullptr}; diff --git a/SHADE_Engine/src/Editor/SHEditor.cpp b/SHADE_Engine/src/Editor/SHEditor.cpp index 268af73e..c8ba7b68 100644 --- a/SHADE_Engine/src/Editor/SHEditor.cpp +++ b/SHADE_Engine/src/Editor/SHEditor.cpp @@ -113,14 +113,15 @@ namespace SHADE SHEditorWindowManager::CreateEditorWindow(); SHEditorWindowManager::CreateEditorWindow(); SHEditorWindowManager::CreateEditorWindow(); - SHEditorWindowManager::CreateEditorWindow(); SHEditorWindowManager::CreateEditorWindow(); - SHEditorWindowManager::CreateEditorWindow(); - SHEditorWindowManager::CreateEditorWindow(); SHEditorWindowManager::CreateEditorWindow(); SHEditorWindowManager::CreateEditorWindow(); + SHEditorWindowManager::CreateEditorWindow(); + SHEditorWindowManager::CreateEditorWindow(); + SHEditorWindowManager::CreateEditorWindow(); + //Add popup windows SHEditorWindowManager::CreatePopupWindow(); diff --git a/SHADE_Engine/src/Events/SHEventDefines.h b/SHADE_Engine/src/Events/SHEventDefines.h index cdef68b9..2606370f 100644 --- a/SHADE_Engine/src/Events/SHEventDefines.h +++ b/SHADE_Engine/src/Events/SHEventDefines.h @@ -31,4 +31,6 @@ constexpr SHEventIdentifier SH_BUTTON_HOVER_ENTER_EVENT { 22 }; constexpr SHEventIdentifier SH_BUTTON_HOVER_EXIT_EVENT { 23 }; constexpr SHEventIdentifier SH_ASSET_COMPILE_EVENT { 24 }; constexpr SHEventIdentifier SH_GRAPHICS_LIGHT_DELETE_EVENT { 25 }; - +constexpr SHEventIdentifier SH_ANIMATIONS_PAUSED_EVENT { 26 }; +constexpr SHEventIdentifier SH_ANIMATIONS_PLAY_EVENT { 27 }; +constexpr SHEventIdentifier SH_ANIMATION_FINISHED_EVENT { 28 }; diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp index 32a4fa76..4aa33de5 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp @@ -726,16 +726,34 @@ namespace SHADE cmdBuffer->BindVertexBuffer(SHGraphicsConstants::VertexBufferBindings::BONE_MATRIX_FIRST_INDEX, transformDataBuffer[frameIndex], 0); } - auto const& descMappings = SHGraphicsPredefinedData::GetMappings(SHGraphicsPredefinedData::SystemType::BATCHING); - if (instanceDataDescSet[frameIndex]) + if (IsAnimated()) { - cmdBuffer->BindDescriptorSet - ( - instanceDataDescSet[frameIndex], - SH_PIPELINE_TYPE::GRAPHICS, - descMappings.at(SHPredefinedDescriptorTypes::PER_INSTANCE_BATCH), - dynamicOffset - ); + auto const& descMappings = SHGraphicsPredefinedData::GetMappings(SHGraphicsPredefinedData::SystemType::BATCHING_ANIM); + if (instanceDataDescSet[frameIndex]) + { + cmdBuffer->BindDescriptorSet + ( + instanceDataDescSet[frameIndex], + SH_PIPELINE_TYPE::GRAPHICS, + descMappings.at(SHPredefinedDescriptorTypes::PER_INSTANCE_ANIM_BATCH), + dynamicOffset + ); + } + } + else + { + auto const& descMappings = SHGraphicsPredefinedData::GetMappings(SHGraphicsPredefinedData::SystemType::BATCHING); + if (instanceDataDescSet[frameIndex]) + { + cmdBuffer->BindDescriptorSet + ( + instanceDataDescSet[frameIndex], + SH_PIPELINE_TYPE::GRAPHICS, + descMappings.at(SHPredefinedDescriptorTypes::PER_INSTANCE_BATCH), + dynamicOffset + ); + } + } cmdBuffer->DrawMultiIndirect(drawDataBuffer[frameIndex], static_cast(drawData.size())); cmdBuffer->EndLabeledSegment(); diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHSuperBatch.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHSuperBatch.cpp index f8298716..5a2a079c 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHSuperBatch.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHSuperBatch.cpp @@ -17,6 +17,7 @@ of DigiPen Institute of Technology is prohibited. #include "Graphics/MiddleEnd/Interface/SHMaterialInstance.h" #include "Graphics/MiddleEnd/Interface/SHRenderable.h" #include "Graphics/Descriptors/SHVkDescriptorPool.h" +#include "Graphics/Commands/SHVkCommandBuffer.h" namespace SHADE { @@ -108,11 +109,19 @@ namespace SHADE } } - void SHSuperBatch::Draw(Handle cmdBuffer, uint32_t frameIndex, bool bindBatchPipeline /*= true*/) noexcept + void SHSuperBatch::Draw(Handle cmdBuffer, uint32_t frameIndex, bool bindBatchPipeline /*= true*/, Handle nonAnimPipeline/* = {}*/, Handle animPipeline/* = {}*/) noexcept { // Build all batches for (auto& batch : batches) { + if (!bindBatchPipeline) + { + if (batch.IsAnimated()) + cmdBuffer->BindPipeline(animPipeline); + else + cmdBuffer->BindPipeline(nonAnimPipeline); + } + batch.Draw(cmdBuffer, frameIndex, bindBatchPipeline); } } diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHSuperBatch.h b/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHSuperBatch.h index 4d831b9c..3ef9fc5e 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHSuperBatch.h +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHSuperBatch.h @@ -57,7 +57,7 @@ namespace SHADE void Clear() noexcept; void UpdateBuffers(uint32_t frameIndex, Handle descPool); void Build(Handle device, Handle descPool, uint32_t frameIndex) noexcept; - void Draw(Handle cmdBuffer, uint32_t frameIndex, bool bindBatchPipeline = true) noexcept; + void Draw(Handle cmdBuffer, uint32_t frameIndex, bool bindBatchPipeline = true, Handle nonAnimPipeline = {}, Handle animPipeline = {}) noexcept; /*-----------------------------------------------------------------------------*/ /* Getter Functions */ diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsPredefinedData.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsPredefinedData.cpp index 91ec0cea..76d34ff7 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsPredefinedData.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsPredefinedData.cpp @@ -14,6 +14,7 @@ namespace SHADE std::vector> SHGraphicsPredefinedData::predefinedLayouts; SHVertexInputState SHGraphicsPredefinedData::defaultVertexInputState; SHVertexInputState SHGraphicsPredefinedData::shadowMapVertexInputState; + SHVertexInputState SHGraphicsPredefinedData::shadowMapAnimVertexInputState; std::vector SHGraphicsPredefinedData::perSystemData; @@ -36,7 +37,8 @@ namespace SHADE {SHPredefinedDescriptorTypes::STATIC_DATA, 0}, {SHPredefinedDescriptorTypes::CAMERA, 1}, {SHPredefinedDescriptorTypes::PER_INSTANCE_ANIM_BATCH, 2}, - }); + {SHPredefinedDescriptorTypes::RENDER_GRAPH_RESOURCE, 3}, + }); perSystemData[SHUtilities::ConvertEnum(SystemType::TEXT_RENDERING)].descMappings.AddMappings ({ @@ -333,6 +335,17 @@ namespace SHADE shadowMapVertexInputState.AddBinding(false, false, { SHVertexAttribute(SHAttribFormat::FLOAT_3D)}); shadowMapVertexInputState.AddBinding(true, true, { SHVertexAttribute(SHAttribFormat::MAT_4D) }, 4, 4); // Transform at binding 4 - 7 (4 slots) + + shadowMapAnimVertexInputState.AddBinding(false, false, { SHVertexAttribute(SHAttribFormat::FLOAT_3D) }); + shadowMapAnimVertexInputState.AddBinding(true, true, { SHVertexAttribute(SHAttribFormat::MAT_4D) }, 4, 4); // Transform at binding 4 - 7 (4 slots) + shadowMapAnimVertexInputState.AddBinding(false, false, { SHVertexAttribute(SHAttribFormat::UINT32_4D) }, 6, 9); // Attribute bone indices at index 5 + shadowMapAnimVertexInputState.AddBinding(false, false, { SHVertexAttribute(SHAttribFormat::FLOAT_4D) }, 7, 10); // Attribute bone weights at index 6 + shadowMapAnimVertexInputState.AddBinding(true, true, { SHVertexAttribute(SHAttribFormat::UINT32_1D) }, 8, 11); // Instance bone matrix first index at index 7 + + + //shadowMapAnimVertexInputState.AddBinding(false, false, { SHVertexAttribute(SHAttribFormat::FLOAT_3D) }); + //shadowMapAnimVertexInputState.AddBinding(true, true, { SHVertexAttribute(SHAttribFormat::MAT_4D) }, 4, 4); // Transform at binding 4 - 7 (4 slots) + } void SHGraphicsPredefinedData::Init(Handle logicalDevice) noexcept @@ -368,6 +381,11 @@ namespace SHADE return shadowMapVertexInputState; } + SHVertexInputState const& SHGraphicsPredefinedData::GetShadowMapAnimViState(void) noexcept + { + return shadowMapAnimVertexInputState; + } + SHGraphicsPredefinedData::PerSystem const& SHGraphicsPredefinedData::GetSystemData(SystemType systemType) noexcept { return perSystemData[static_cast(systemType)]; diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsPredefinedData.h b/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsPredefinedData.h index 4fbf06c1..051dce0d 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsPredefinedData.h +++ b/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsPredefinedData.h @@ -67,6 +67,9 @@ namespace SHADE //! vertex input state for shadow mapping static SHVertexInputState shadowMapVertexInputState; + //! vertex input state for shadow mapping + static SHVertexInputState shadowMapAnimVertexInputState; + //! Predefined data for each type of system static std::vector perSystemData; @@ -101,6 +104,7 @@ namespace SHADE static std::vector> GetPredefinedDescSetLayouts (SHGraphicsPredefinedData::PredefinedDescSetLayoutTypes types) noexcept; static SHVertexInputState const& GetDefaultViState (void) noexcept; static SHVertexInputState const& GetShadowMapViState (void) noexcept; + static SHVertexInputState const& GetShadowMapAnimViState (void) noexcept; static PerSystem const& GetSystemData (SystemType systemType) noexcept; static SHDescriptorMappings::MapType const& GetMappings (SystemType systemType) noexcept; //static PerSystem const& GetBatchingSystemData(void) noexcept; diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp index bc50d0a7..69aa4188 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp @@ -128,8 +128,9 @@ namespace SHADE SHFreetypeInstance::Init(); - SHAssetManager::CompileAsset("../../Assets/Shaders/DeferredComposite_CS.glsl", false); - //SHAssetManager::CompileAsset("../../Assets/Shaders/ShadowMap_FS.glsl", false); + //SHAssetManager::CompileAsset("../../Assets/Shaders/DeferredComposite_CS.glsl", false); + //SHAssetManager::CompileAsset("../../Assets/Shaders/ShadowMap_VS.glsl", false); + //SHAssetManager::CompileAsset("../../Assets/Shaders/ShadowMapAnim_VS.glsl", false); //SHAssetManager::CompileAsset("../../Assets/Shaders/ShadowMap_FS.glsl", false); //SHAssetManager::CompileAsset("../../Assets/Shaders/SSAO_CS.glsl", false); //SHAssetManager::CompileAsset("../../Assets/Shaders/SSAOBlur_CS.glsl", false); @@ -145,24 +146,25 @@ namespace SHADE //SHAssetManager::CompileAsset("../../Assets/Shaders/Anim_VS.glsl", false); // Load Built In Shaders - static constexpr AssetID VS_DEFAULT = 39210065; defaultVertShader = SHResourceManager::LoadOrGet(VS_DEFAULT); - static constexpr AssetID VS_ANIM = 47911992; animtVertShader = SHResourceManager::LoadOrGet(VS_ANIM); - static constexpr AssetID FS_DEFAULT = 46377769; defaultFragShader = SHResourceManager::LoadOrGet(FS_DEFAULT); - static constexpr AssetID VS_DEBUG = 48002439; debugVertShader = SHResourceManager::LoadOrGet(VS_DEBUG); - static constexpr AssetID FS_DEBUG = 36671027; debugFragShader = SHResourceManager::LoadOrGet(FS_DEBUG); - static constexpr AssetID VS_DEBUG_MESH = 42127043; debugMeshVertShader = SHResourceManager::LoadOrGet(VS_DEBUG_MESH); - static constexpr AssetID CS_COMPOSITE = 45072428; deferredCompositeShader = SHResourceManager::LoadOrGet(CS_COMPOSITE); - static constexpr AssetID SSAO = 38430899; ssaoShader = SHResourceManager::LoadOrGet(SSAO); - static constexpr AssetID SSAO_BLUR = 39760835; ssaoBlurShader = SHResourceManager::LoadOrGet(SSAO_BLUR); - static constexpr AssetID TEXT_VS = 39816727; textVS = SHResourceManager::LoadOrGet(TEXT_VS); - static constexpr AssetID TEXT_FS = 38024754; textFS = SHResourceManager::LoadOrGet(TEXT_FS); - static constexpr AssetID RENDER_SC_VS = 48082949; renderToSwapchainVS = SHResourceManager::LoadOrGet(RENDER_SC_VS); - static constexpr AssetID RENDER_SC_FS = 36869006; renderToSwapchainFS = SHResourceManager::LoadOrGet(RENDER_SC_FS); - static constexpr AssetID SHADOW_MAP_VS = 44646107; shadowMapVS = SHResourceManager::LoadOrGet(SHADOW_MAP_VS); - static constexpr AssetID SHADOW_MAP_FS = 45925790; shadowMapFS = SHResourceManager::LoadOrGet(SHADOW_MAP_FS); - static constexpr AssetID TRAJECTORY_VS = 41042628; trajectoryVS = SHResourceManager::LoadOrGet(TRAJECTORY_VS); - static constexpr AssetID TRAJECTORY_FS = 45635685; trajectoryFS = SHResourceManager::LoadOrGet(TRAJECTORY_FS); - static constexpr AssetID SHADOW_BLUR_CS = 38004013; shadowMapBlurCS = SHResourceManager::LoadOrGet(SHADOW_BLUR_CS); + static constexpr AssetID VS_DEFAULT = 39210065; defaultVertShader = SHResourceManager::LoadOrGet(VS_DEFAULT); + static constexpr AssetID VS_ANIM = 47911992; animtVertShader = SHResourceManager::LoadOrGet(VS_ANIM); + static constexpr AssetID FS_DEFAULT = 46377769; defaultFragShader = SHResourceManager::LoadOrGet(FS_DEFAULT); + static constexpr AssetID VS_DEBUG = 48002439; debugVertShader = SHResourceManager::LoadOrGet(VS_DEBUG); + static constexpr AssetID FS_DEBUG = 36671027; debugFragShader = SHResourceManager::LoadOrGet(FS_DEBUG); + static constexpr AssetID VS_DEBUG_MESH = 42127043; debugMeshVertShader = SHResourceManager::LoadOrGet(VS_DEBUG_MESH); + static constexpr AssetID CS_COMPOSITE = 45072428; deferredCompositeShader = SHResourceManager::LoadOrGet(CS_COMPOSITE); + static constexpr AssetID SSAO = 38430899; ssaoShader = SHResourceManager::LoadOrGet(SSAO); + static constexpr AssetID SSAO_BLUR = 39760835; ssaoBlurShader = SHResourceManager::LoadOrGet(SSAO_BLUR); + static constexpr AssetID TEXT_VS = 39816727; textVS = SHResourceManager::LoadOrGet(TEXT_VS); + static constexpr AssetID TEXT_FS = 38024754; textFS = SHResourceManager::LoadOrGet(TEXT_FS); + static constexpr AssetID RENDER_SC_VS = 48082949; renderToSwapchainVS = SHResourceManager::LoadOrGet(RENDER_SC_VS); + static constexpr AssetID RENDER_SC_FS = 36869006; renderToSwapchainFS = SHResourceManager::LoadOrGet(RENDER_SC_FS); + static constexpr AssetID SHADOW_MAP_VS = 44646107; shadowMapVS = SHResourceManager::LoadOrGet(SHADOW_MAP_VS); + static constexpr AssetID SHADOW_MAP_ANIM_VS = 39393999; shadowMapAnimVS = SHResourceManager::LoadOrGet(SHADOW_MAP_ANIM_VS); + static constexpr AssetID SHADOW_MAP_FS = 45925790; shadowMapFS = SHResourceManager::LoadOrGet(SHADOW_MAP_FS); + static constexpr AssetID TRAJECTORY_VS = 41042628; trajectoryVS = SHResourceManager::LoadOrGet(TRAJECTORY_VS); + static constexpr AssetID TRAJECTORY_FS = 45635685; trajectoryFS = SHResourceManager::LoadOrGet(TRAJECTORY_FS); + static constexpr AssetID SHADOW_BLUR_CS = 38004013; shadowMapBlurCS = SHResourceManager::LoadOrGet(SHADOW_BLUR_CS); } @@ -919,10 +921,19 @@ namespace SHADE SHGraphicsPredefinedData::SystemType::BATCHING, SHGraphicsPredefinedData::GetShadowMapViState(), rasterState ); + + tempLibrary.CreateGraphicsPipelines + ( + { shadowMapAnimVS, shadowMapFS }, shadowMapNode->GetRenderpass(), shadowMapDrawSubpass, + SHGraphicsPredefinedData::SystemType::BATCHING_ANIM, + SHGraphicsPredefinedData::GetShadowMapAnimViState(), rasterState + ); + shadowMapPipeline = tempLibrary.GetGraphicsPipeline({ shadowMapVS, shadowMapFS, shadowMapDrawSubpass }); + shadowMapAnimPipeline = tempLibrary.GetGraphicsPipeline({ shadowMapAnimVS, shadowMapFS, shadowMapDrawSubpass }); } - shadowMapDrawSubpass->AddCompanionSubpass(gBufferWriteSubpass, shadowMapPipeline); // set companion subpass and pipeline - shadowMapDrawSubpass->AddCompanionSubpass(gBufferWriteVfxSubpass, shadowMapPipeline); // set companion subpass and pipeline + shadowMapDrawSubpass->AddCompanionSubpass(gBufferWriteSubpass, shadowMapPipeline, shadowMapAnimPipeline); // set companion subpass and pipeline + shadowMapDrawSubpass->AddCompanionSubpass(gBufferWriteVfxSubpass, shadowMapPipeline, shadowMapAnimPipeline); // set companion subpass and pipeline // add the shadow map and the blurred version to the lighting system uint32_t const NEW_SHADOW_MAP_INDEX = lightingSubSystem->AddShadowMap(renderGraph->GetRenderGraphResource(shadowMapBlurredResourceName), EVENT_DATA->lightEntity); diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.h b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.h index 68752a6e..e674efb6 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.h +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.h @@ -479,6 +479,7 @@ namespace SHADE Handle renderToSwapchainVS; Handle renderToSwapchainFS; Handle shadowMapVS; + Handle shadowMapAnimVS; Handle shadowMapFS; Handle trajectoryVS; Handle trajectoryFS; @@ -499,6 +500,7 @@ namespace SHADE Handle debugDrawFilledPipeline; Handle debugDrawFilledDepthPipeline; Handle shadowMapPipeline; // initialized only when a shadow map is needed + Handle shadowMapAnimPipeline; // initialized only when a shadow map is needed Handle genericAndTextureDescSet; diff --git a/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraph.cpp b/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraph.cpp index c44c9464..b9ca9d56 100644 --- a/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraph.cpp +++ b/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraph.cpp @@ -497,7 +497,7 @@ namespace SHADE } // get target node - auto targetNode = nodes.begin() + nodeIndexing.at(nodeToAddAfter); + auto targetNode = nodes.begin() + nodeIndexing.at(nodeToAddAfter) + 1; auto node = nodes.insert(targetNode, renderGraphStorage->resourceHub->Create(nodeName, renderGraphStorage, std::move(descInitParams), std::vector>(), true)); ReindexNodes (); diff --git a/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.cpp b/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.cpp index ca13155d..7eccbc52 100644 --- a/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.cpp +++ b/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.cpp @@ -280,8 +280,8 @@ namespace SHADE for (auto& companion : companionSubpasses) { // if not bind pipeline for companion and and execute draw command - commandBuffer->BindPipeline(companion.pipeline); - companion.subpass->superBatch->Draw(commandBuffer, frameIndex, false); + //commandBuffer->BindPipeline(companion.nonAnimPipeline); + companion.subpass->superBatch->Draw(commandBuffer, frameIndex, false, companion.nonAnimPipeline, companion.animPipeline); } } } @@ -496,7 +496,7 @@ namespace SHADE { if (!dummyPipelineLayout) { - auto const& batchingSystemData = SHGraphicsPredefinedData::GetSystemData(SHGraphicsPredefinedData::SystemType::BATCHING); + auto const& batchingSystemData = SHGraphicsPredefinedData::GetSystemData(SHGraphicsPredefinedData::SystemType::BATCHING_ANIM); std::vector newLayouts = batchingSystemData.descSetLayouts; if (inputDescriptorLayout) { @@ -528,9 +528,9 @@ namespace SHADE subpassIndex = index; } - void SHSubpass::AddCompanionSubpass(Handle companion, Handle pipeline) noexcept + void SHSubpass::AddCompanionSubpass(Handle companion, Handle nonAnimPipeline, Handle animPipeline) noexcept { - companionSubpasses.push_back(CompanionSubpass{companion, pipeline}); + companionSubpasses.push_back(CompanionSubpass{companion, nonAnimPipeline, animPipeline}); //companionSubpass.companion = companion; //companionSubpass.pipeline = pipeline; } diff --git a/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.h b/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.h index 7f843773..f13e0871 100644 --- a/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.h +++ b/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.h @@ -35,8 +35,11 @@ namespace SHADE // subpass whose data will be borrowed to draw Handle subpass; - // Pipeline that will be used for all the draw calls from all batches of the companion subpass - Handle pipeline; + // Pipeline that will be used for all the draw calls from all batches (that render without animation data) of the companion subpass + Handle nonAnimPipeline; + + // Pipeline that will be used for all the draw calls from all batches (that render with animation data) of the companion subpass + Handle animPipeline; }; private: @@ -167,7 +170,7 @@ namespace SHADE /*-----------------------------------------------------------------------*/ /* PUBLIC SETTERS AND GETTERS */ /*-----------------------------------------------------------------------*/ - void AddCompanionSubpass (Handle companion, Handle pipeline) noexcept; + void AddCompanionSubpass (Handle companion, Handle nonAnimPipeline, Handle animPipeline) noexcept; Handle GetParentNode(void) const noexcept; SHSubPassIndex GetIndex() const noexcept; diff --git a/SHADE_Engine/src/Input/SHInputManager.cpp b/SHADE_Engine/src/Input/SHInputManager.cpp index dd3cfe80..6645aa1b 100644 --- a/SHADE_Engine/src/Input/SHInputManager.cpp +++ b/SHADE_Engine/src/Input/SHInputManager.cpp @@ -798,17 +798,45 @@ namespace SHADE //Get cursor position, even when it is outside window POINT p; - GetCursorPos(&p); + GetCursorPos(&p); //This point is WRT the screen, not the window + //ScreenToClient(GetActiveWindow(), &p); mouseScreenX = p.x; mouseScreenY = p.y; + //SHLOGV_INFO("MouseScreenY = {}", mouseScreenY); - //Velocity - mouseVelocityX = static_cast(mouseScreenX - mouseScreenXLast) / dt; - mouseVelocityY = static_cast(mouseScreenY - mouseScreenYLast) / dt; + if (!mouseCentering) + { + //Velocity + mouseVelocityX = static_cast(mouseScreenX - mouseScreenXLast) / dt; + mouseVelocityY = static_cast(mouseScreenY - mouseScreenYLast) / dt; + } + else + { + //Mouse centering + //uint32_t width = SHADE::SHGraphicsSystemInterface::GetWindowWidth(); + //uint32_t height = SHADE::SHGraphicsSystemInterface::GetWindowHeight(); + int mouseCenterX = 0; + int mouseCenterY = 0; + RECT wndRect = { NULL }; //4th quadrant + if (GetWindowRect(GetActiveWindow(), &wndRect)) + { + mouseCenterX = wndRect.left + (wndRect.right - wndRect.left) / 2; + mouseCenterY = wndRect.top + (wndRect.bottom - wndRect.top) / 2; + //SHLOGV_INFO("W: {0}, H: {1}", (wndRect.right - wndRect.left), (wndRect.bottom - wndRect.top)); + } + //Velocity + mouseVelocityX = static_cast(mouseScreenX - mouseCenterX) / dt; + mouseVelocityY = static_cast(mouseScreenY - mouseCenterY) / dt; + //SHLOGV_INFO("mouseScreenY = {0:0}, mouseCenterY = {1:0}", mouseScreenY, mouseCenterY); + //SHLOGV_INFO("{0.0}", mouseVelocityY); + + SetMouseScreenPosition(mouseCenterX, mouseCenterY); + } + //Mouse Centering - if (mouseCentering) + /*if (mouseCentering) { uint32_t width = SHADE::SHGraphicsSystemInterface::GetWindowWidth(); uint32_t height = SHADE::SHGraphicsSystemInterface::GetWindowHeight(); @@ -819,7 +847,7 @@ namespace SHADE GetCursorPos(&p); mouseVelocityX -= static_cast(p.x - mouseScreenX) / dt; mouseVelocityY -= static_cast(p.y - mouseScreenY) / dt; - } + }*/ if (mouseVelocityX != 0.0 || mouseVelocityY != 0.0) controllerInUse = false; diff --git a/SHADE_Engine/src/Resource/SHResourceManager.hpp b/SHADE_Engine/src/Resource/SHResourceManager.hpp index 6474b478..d2bc9241 100644 --- a/SHADE_Engine/src/Resource/SHResourceManager.hpp +++ b/SHADE_Engine/src/Resource/SHResourceManager.hpp @@ -372,7 +372,8 @@ namespace SHADE ( LoadOrGet(assetData.animRawDataAssetId), assetData.firstIndex, - assetData.lastIndex + assetData.lastIndex, + assetData.playbackMultiplier ); } else if constexpr (std::is_same_v) diff --git a/SHADE_Engine/src/Scripting/SHScriptEngine.cpp b/SHADE_Engine/src/Scripting/SHScriptEngine.cpp index bd2cfea5..3c36f998 100644 --- a/SHADE_Engine/src/Scripting/SHScriptEngine.cpp +++ b/SHADE_Engine/src/Scripting/SHScriptEngine.cpp @@ -34,6 +34,8 @@ of DigiPen Institute of Technology is prohibited. #include "UI/Events/SHButtonClickEvent.h" #include "UI/SHUIComponent.h" #include "Editor/EditorWindow/MenuBar/SHEditorMenuBar.h" +#include "Animation/SHAnimatorComponent.h" +#include "Resource/SHResourceManager.h" namespace SHADE { @@ -412,6 +414,49 @@ namespace SHADE return eventData->handle; } + SHEventHandle SHScriptEngine::onAnimatorRemoved(SHEventPtr eventPtr) + { + auto eventData = reinterpret_cast*>(eventPtr.get()); + if (eventData->data->removedComponentType == ComponentFamily::GetID()) + csAnimatorOnRemoved(eventData->data->eid); + return eventData->handle; + } + + SHEventHandle SHScriptEngine::onAnimatorClipStartedPlaying(SHEventPtr eventPtr) + { + auto eventData = reinterpret_cast*>(eventPtr.get()); + csAnimatorOnClipStartPlaying + ( + eventData->data->Entity, + SHResourceManager::GetAssetID(eventData->data->PlayingClip).value_or(INVALID_ASSET_ID), + eventData->data->CurrentTimeStamp + ); + return eventData->handle; + } + + SHEventHandle SHScriptEngine::onAnimatorClipPaused(SHEventPtr eventPtr) + { + auto eventData = reinterpret_cast*>(eventPtr.get()); + csAnimatorOnClipPaused + ( + eventData->data->Entity, + SHResourceManager::GetAssetID(eventData->data->PausedClip).value_or(INVALID_ASSET_ID), + eventData->data->PauseTimeStamp + ); + return eventData->handle; + } + + SHEventHandle SHScriptEngine::onAnimatorClipFinished(SHEventPtr eventPtr) + { + auto eventData = reinterpret_cast*>(eventPtr.get()); + csAnimatorOnClipFinished + ( + eventData->data->Entity, + SHResourceManager::GetAssetID(eventData->data->FinishedClip).value_or(INVALID_ASSET_ID) + ); + return eventData->handle; + } + /*-----------------------------------------------------------------------------------*/ /* Helper Functions */ /*-----------------------------------------------------------------------------------*/ @@ -578,6 +623,30 @@ namespace SHADE DEFAULT_CSHARP_NAMESPACE + ".UIElement", "OnHoverExited" ); + csAnimatorOnRemoved = dotNet.GetFunctionPtr + ( + DEFAULT_CSHARP_LIB_NAME, + DEFAULT_CSHARP_NAMESPACE + ".Animator", + "OnComponentRemoved" + ); + csAnimatorOnClipStartPlaying = dotNet.GetFunctionPtr + ( + DEFAULT_CSHARP_LIB_NAME, + DEFAULT_CSHARP_NAMESPACE + ".Animator", + "RaiseOnClipStartedPlaying" + ); + csAnimatorOnClipPaused = dotNet.GetFunctionPtr + ( + DEFAULT_CSHARP_LIB_NAME, + DEFAULT_CSHARP_NAMESPACE + ".Animator", + "RaiseOnClipPaused" + ); + csAnimatorOnClipFinished = dotNet.GetFunctionPtr + ( + DEFAULT_CSHARP_LIB_NAME, + DEFAULT_CSHARP_NAMESPACE + ".Animator", + "RaiseOnClipFinished" + ); csEditorRenderScripts = dotNet.GetFunctionPtr ( DEFAULT_CSHARP_LIB_NAME, @@ -663,6 +732,28 @@ namespace SHADE }; SHEventManager::SubscribeTo(SH_BUTTON_HOVER_EXIT_EVENT, std::dynamic_pointer_cast(hoverExitedUIElementEventReceiver)); + /* Animator */ + std::shared_ptr> removedAnimatorEventReceiver + { + std::make_shared>(this, &SHScriptEngine::onAnimatorRemoved) + }; + SHEventManager::SubscribeTo(SH_COMPONENT_REMOVED_EVENT, std::dynamic_pointer_cast(removedAnimatorEventReceiver)); + std::shared_ptr> animStartedPlayingEventReceiver + { + std::make_shared>(this, &SHScriptEngine::onAnimatorClipStartedPlaying) + }; + SHEventManager::SubscribeTo(SH_ANIMATIONS_PLAY_EVENT, std::dynamic_pointer_cast(animStartedPlayingEventReceiver)); + std::shared_ptr> animPausedEventReceiver + { + std::make_shared>(this, &SHScriptEngine::onAnimatorClipPaused) + }; + SHEventManager::SubscribeTo(SH_ANIMATIONS_PAUSED_EVENT, std::dynamic_pointer_cast(animPausedEventReceiver)); + std::shared_ptr> animFinishedEventReceiver + { + std::make_shared>(this, &SHScriptEngine::onAnimatorClipFinished) + }; + SHEventManager::SubscribeTo(SH_ANIMATION_FINISHED_EVENT, std::dynamic_pointer_cast(animFinishedEventReceiver)); + /* SceneGraph */ // Register for SceneNode child added event std::shared_ptr> addChildEventReceiver diff --git a/SHADE_Engine/src/Scripting/SHScriptEngine.h b/SHADE_Engine/src/Scripting/SHScriptEngine.h index b207ae64..1582c082 100644 --- a/SHADE_Engine/src/Scripting/SHScriptEngine.h +++ b/SHADE_Engine/src/Scripting/SHScriptEngine.h @@ -24,6 +24,7 @@ of DigiPen Institute of Technology is prohibited. #include "ECS_Base/System/SHSystemRoutine.h" #include "Events/SHEventDefines.h" #include "Events/SHEvent.h" +#include "Assets/SHAssetMacros.h" namespace SHADE { @@ -251,6 +252,8 @@ namespace SHADE using CsScriptDeserialiseYamlFuncPtr = bool(*)(EntityID, const void*); using CsScriptEditorFuncPtr = void(*)(EntityID); using CsEventRelayFuncPtr = void(*)(EntityID); + using CsEventRelayAnimFuncPtr = void(*)(EntityID, AssetID); + using CsEventRelayAnimTimeFuncPtr = void(*)(EntityID, AssetID, float); /*-----------------------------------------------------------------------------*/ /* Constants */ @@ -295,6 +298,12 @@ namespace SHADE CsEventRelayFuncPtr csUIElementOnReleased = nullptr; CsEventRelayFuncPtr csUIElementOnHoverEntered = nullptr; CsEventRelayFuncPtr csUIElementOnHoverExited = nullptr; + CsEventRelayFuncPtr csAnimatorOnRemoved = nullptr; + CsEventRelayAnimTimeFuncPtr csAnimatorOnClipStartPlaying = nullptr; + CsEventRelayAnimTimeFuncPtr csAnimatorOnClipPaused = nullptr; + CsEventRelayAnimFuncPtr csAnimatorOnClipFinished = nullptr; + + // - Editor CsScriptEditorFuncPtr csEditorRenderScripts = nullptr; CsFuncPtr csEditorUndo = nullptr; @@ -315,6 +324,10 @@ namespace SHADE SHEventHandle onSceneNodeChildrenAdded(SHEventPtr eventPtr); SHEventHandle onSceneNodeChildrenRemoved(SHEventPtr eventPtr); SHEventHandle onSceneDestroyed(SHEventPtr eventPtr); + SHEventHandle onAnimatorRemoved(SHEventPtr eventPtr); + SHEventHandle onAnimatorClipStartedPlaying(SHEventPtr eventPtr); + SHEventHandle onAnimatorClipPaused(SHEventPtr eventPtr); + SHEventHandle onAnimatorClipFinished(SHEventPtr eventPtr); /*-----------------------------------------------------------------------------*/ /* Helper Functions */ diff --git a/SHADE_Managed/src/Assets/AnimationClipAsset.hxx b/SHADE_Managed/src/Assets/AnimationClipAsset.hxx index 5a8c7845..2a4e52b3 100644 --- a/SHADE_Managed/src/Assets/AnimationClipAsset.hxx +++ b/SHADE_Managed/src/Assets/AnimationClipAsset.hxx @@ -29,6 +29,17 @@ namespace SHADE /// public value struct AnimationClipAsset { + public: + /*-----------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*-----------------------------------------------------------------------------*/ + /// + /// Implicit conversion operator to enable checking if a AnimationClip is valid. + /// + /// Asset to check. + /// True if the Asset is valid. + static operator bool(AnimationClipAsset asset); + internal: /*-----------------------------------------------------------------------------*/ /* Properties */ @@ -57,16 +68,6 @@ namespace SHADE /// AssetID to the AnimationClip asset. AnimationClipAsset(AssetID AnimationClipId); - /*-----------------------------------------------------------------------------*/ - /* Operator Overloads */ - /*-----------------------------------------------------------------------------*/ - /// - /// Implicit conversion operator to enable checking if a AnimationClip is valid. - /// - /// Asset to check. - /// True if the Asset is valid. - static operator bool(AnimationClipAsset asset); - /*-----------------------------------------------------------------------------*/ /* Conversion Operators */ /*-----------------------------------------------------------------------------*/ diff --git a/SHADE_Managed/src/Assets/AnimationControllerAsset.hxx b/SHADE_Managed/src/Assets/AnimationControllerAsset.hxx index 1be74fb9..7dc3d3d7 100644 --- a/SHADE_Managed/src/Assets/AnimationControllerAsset.hxx +++ b/SHADE_Managed/src/Assets/AnimationControllerAsset.hxx @@ -28,7 +28,18 @@ namespace SHADE /// public value struct AnimationControllerAsset { - internal: + public: + /*-----------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*-----------------------------------------------------------------------------*/ + /// + /// Implicit conversion operator to enable checking if a AnimationController is valid. + /// + /// Asset to check. + /// True if the Asset is valid. + static operator bool(AnimationControllerAsset asset); + + internal: /*-----------------------------------------------------------------------------*/ /* Properties */ /*-----------------------------------------------------------------------------*/ @@ -56,16 +67,6 @@ namespace SHADE /// AssetID to the AnimationController asset. AnimationControllerAsset(AssetID AnimationControllerId); - /*-----------------------------------------------------------------------------*/ - /* Operator Overloads */ - /*-----------------------------------------------------------------------------*/ - /// - /// Implicit conversion operator to enable checking if a AnimationController is valid. - /// - /// Asset to check. - /// True if the Asset is valid. - static operator bool(AnimationControllerAsset asset); - /*-----------------------------------------------------------------------------*/ /* Conversion Operators */ /*-----------------------------------------------------------------------------*/ diff --git a/SHADE_Managed/src/Assets/AnimationRigAsset.hxx b/SHADE_Managed/src/Assets/AnimationRigAsset.hxx index be43b7f0..09964d31 100644 --- a/SHADE_Managed/src/Assets/AnimationRigAsset.hxx +++ b/SHADE_Managed/src/Assets/AnimationRigAsset.hxx @@ -28,6 +28,17 @@ namespace SHADE /// public value struct AnimationRigAsset { + public: + /*-----------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*-----------------------------------------------------------------------------*/ + /// + /// Implicit conversion operator to enable checking if a AnimationRig is valid. + /// + /// Asset to check. + /// True if the Asset is valid. + static operator bool(AnimationRigAsset asset); + internal: /*-----------------------------------------------------------------------------*/ /* Properties */ @@ -56,16 +67,6 @@ namespace SHADE /// AssetID to the AnimationRig asset. AnimationRigAsset(AssetID AnimationRigId); - /*-----------------------------------------------------------------------------*/ - /* Operator Overloads */ - /*-----------------------------------------------------------------------------*/ - /// - /// Implicit conversion operator to enable checking if a AnimationRig is valid. - /// - /// Asset to check. - /// True if the Asset is valid. - static operator bool(AnimationRigAsset asset); - /*-----------------------------------------------------------------------------*/ /* Conversion Operators */ /*-----------------------------------------------------------------------------*/ diff --git a/SHADE_Managed/src/Assets/FontAsset.hxx b/SHADE_Managed/src/Assets/FontAsset.hxx index 89239224..5c3b4e11 100644 --- a/SHADE_Managed/src/Assets/FontAsset.hxx +++ b/SHADE_Managed/src/Assets/FontAsset.hxx @@ -28,6 +28,17 @@ namespace SHADE /// public value struct FontAsset { + public: + /*-----------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*-----------------------------------------------------------------------------*/ + /// + /// Implicit conversion operator to enable checking if a Font is valid. + /// + /// Asset to check. + /// True if the Asset is valid. + static operator bool(FontAsset asset); + internal: /*-----------------------------------------------------------------------------*/ /* Properties */ @@ -56,16 +67,6 @@ namespace SHADE /// AssetID to the font asset. FontAsset(AssetID fontId); - /*-----------------------------------------------------------------------------*/ - /* Operator Overloads */ - /*-----------------------------------------------------------------------------*/ - /// - /// Implicit conversion operator to enable checking if a Font is valid. - /// - /// Asset to check. - /// True if the Asset is valid. - static operator bool(FontAsset asset); - /*-----------------------------------------------------------------------------*/ /* Conversion Operators */ /*-----------------------------------------------------------------------------*/ diff --git a/SHADE_Managed/src/Assets/MaterialAsset.hxx b/SHADE_Managed/src/Assets/MaterialAsset.hxx index 5380b286..a5a0909b 100644 --- a/SHADE_Managed/src/Assets/MaterialAsset.hxx +++ b/SHADE_Managed/src/Assets/MaterialAsset.hxx @@ -28,6 +28,17 @@ namespace SHADE /// public value struct MaterialAsset { + public: + /*-----------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*-----------------------------------------------------------------------------*/ + /// + /// Implicit conversion operator to enable checking if a Material is valid. + /// + /// Asset to check. + /// True if the Asset is valid. + static operator bool(MaterialAsset asset); + internal: /*-----------------------------------------------------------------------------*/ /* Properties */ @@ -56,16 +67,6 @@ namespace SHADE /// AssetID to the Material asset. MaterialAsset(AssetID MaterialId); - /*-----------------------------------------------------------------------------*/ - /* Operator Overloads */ - /*-----------------------------------------------------------------------------*/ - /// - /// Implicit conversion operator to enable checking if a Material is valid. - /// - /// Asset to check. - /// True if the Asset is valid. - static operator bool(MaterialAsset asset); - /*-----------------------------------------------------------------------------*/ /* Conversion Operators */ /*-----------------------------------------------------------------------------*/ diff --git a/SHADE_Managed/src/Assets/MeshAsset.hxx b/SHADE_Managed/src/Assets/MeshAsset.hxx index 26625c1a..63922d65 100644 --- a/SHADE_Managed/src/Assets/MeshAsset.hxx +++ b/SHADE_Managed/src/Assets/MeshAsset.hxx @@ -28,7 +28,18 @@ namespace SHADE /// public value struct MeshAsset { - internal: + public: + /*-----------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*-----------------------------------------------------------------------------*/ + /// + /// Implicit conversion operator to enable checking if a Mesh is valid. + /// + /// Asset to check. + /// True if the Asset is valid. + static operator bool(MeshAsset asset); + + internal: /*-----------------------------------------------------------------------------*/ /* Properties */ /*-----------------------------------------------------------------------------*/ @@ -56,16 +67,6 @@ namespace SHADE /// AssetID to the Mesh asset. MeshAsset(AssetID meshId); - /*-----------------------------------------------------------------------------*/ - /* Operator Overloads */ - /*-----------------------------------------------------------------------------*/ - /// - /// Implicit conversion operator to enable checking if a Mesh is valid. - /// - /// Asset to check. - /// True if the Asset is valid. - static operator bool(MeshAsset asset); - /*-----------------------------------------------------------------------------*/ /* Conversion Operators */ /*-----------------------------------------------------------------------------*/ diff --git a/SHADE_Managed/src/Audio/AudioClip.cxx b/SHADE_Managed/src/Audio/AudioClip.cxx index 062b543e..c4cad5cf 100644 --- a/SHADE_Managed/src/Audio/AudioClip.cxx +++ b/SHADE_Managed/src/Audio/AudioClip.cxx @@ -44,6 +44,16 @@ namespace SHADE return SHResourceManagerInterface::GetAssetID(Convert::ToNative(audioClipInstHandle)).value_or(INVALID_ASSET_ID); } + bool AudioClipHandler::DestroyOnSceneExit::get() + { + return NativeObject->GetDestroyOnSceneExit(); + } + + void AudioClipHandler::DestroyOnSceneExit::set(bool value) + { + NativeObject->SetDestroyOnSceneExit(value); + } + /*---------------------------------------------------------------------------------*/ /* Constructors/Destructor */ /*---------------------------------------------------------------------------------*/ diff --git a/SHADE_Managed/src/Audio/AudioClip.hxx b/SHADE_Managed/src/Audio/AudioClip.hxx index 317c5bad..a6c969db 100644 --- a/SHADE_Managed/src/Audio/AudioClip.hxx +++ b/SHADE_Managed/src/Audio/AudioClip.hxx @@ -54,6 +54,12 @@ namespace SHADE AssetID get(); } + property bool DestroyOnSceneExit + { + bool get(); + void set(bool value); + } + /*-----------------------------------------------------------------------------*/ /* Constructors/Destructor */ /*-----------------------------------------------------------------------------*/ diff --git a/SHADE_Managed/src/Components/Animator.cxx b/SHADE_Managed/src/Components/Animator.cxx index 364ce046..f7fb92e3 100644 --- a/SHADE_Managed/src/Components/Animator.cxx +++ b/SHADE_Managed/src/Components/Animator.cxx @@ -17,6 +17,7 @@ of DigiPen Institute of Technology is prohibited. #include "Animator.hxx" #include "Assets/NativeAsset.hxx" #include "Utility/Convert.hxx" +#include "Utility/Debug.hxx" namespace SHADE { @@ -69,6 +70,65 @@ namespace SHADE return Convert::ToCLI(CURR_NODE->Name); return nullptr; } + bool Animator::IsPlaying::get() + { + return GetNativeComponent()->IsPlaying(); + } + float Animator::CurrentClipPlaybackTime::get() + { + return GetNativeComponent()->GetCurrentClipPlaybackTime(); + } + CallbackEvent^ Animator::OnClipStartedPlaying::get() + { + // Create map if it wasn't before + if (onClipStartPlayingEventMap == nullptr) + { + onClipStartPlayingEventMap = gcnew System::Collections::Generic::Dictionary^>(); + } + + // Create event if it wasn't before + if (!onClipStartPlayingEventMap->ContainsKey(owner.EntityId)) + { + onClipStartPlayingEventMap->Add(owner.EntityId, gcnew CallbackEvent()); + } + + // Return the event + return onClipStartPlayingEventMap[owner.EntityId]; + } + CallbackEvent^ Animator::OnClipPaused::get() + { + // Create map if it wasn't before + if (onClipPausedEventMap == nullptr) + { + onClipPausedEventMap = gcnew System::Collections::Generic::Dictionary^>(); + } + + // Create event if it wasn't before + if (!onClipPausedEventMap->ContainsKey(owner.EntityId)) + { + onClipPausedEventMap->Add(owner.EntityId, gcnew CallbackEvent()); + } + + // Return the event + return onClipPausedEventMap[owner.EntityId]; + } + CallbackEvent^ Animator::OnClipFinished::get() + { + // Create map if it wasn't before + if (onClipFinishedEventMap == nullptr) + { + onClipFinishedEventMap = gcnew System::Collections::Generic::Dictionary^>(); + } + + // Create event if it wasn't before + if (!onClipFinishedEventMap->ContainsKey(owner.EntityId)) + { + onClipFinishedEventMap->Add(owner.EntityId, gcnew CallbackEvent()); + } + + // Return the event + return onClipFinishedEventMap[owner.EntityId]; + } /*---------------------------------------------------------------------------------*/ /* Usage Functions */ @@ -156,4 +216,82 @@ namespace SHADE { return GetBoolParameter(paramName); } + + /*---------------------------------------------------------------------------------*/ + /* Static Clear Functions */ + /*---------------------------------------------------------------------------------*/ + void Animator::ClearStaticEventData() + { + if (onClipStartPlayingEventMap != nullptr) + onClipStartPlayingEventMap->Clear(); + if (onClipPausedEventMap != nullptr) + onClipPausedEventMap->Clear(); + if (onClipFinishedEventMap != nullptr) + onClipFinishedEventMap->Clear(); + } + + /*---------------------------------------------------------------------------------*/ + /* Event Handling Functions */ + /*---------------------------------------------------------------------------------*/ + void Animator::OnComponentRemoved(EntityID entity) + { + SAFE_NATIVE_CALL_BEGIN + // Remove the event if it contained an event + if (onClipStartPlayingEventMap != nullptr && onClipStartPlayingEventMap->ContainsKey(entity)) + { + onClipStartPlayingEventMap->Remove(entity); + } + if (onClipPausedEventMap != nullptr && onClipPausedEventMap->ContainsKey(entity)) + { + onClipPausedEventMap->Remove(entity); + } + if (onClipFinishedEventMap != nullptr && onClipFinishedEventMap->ContainsKey(entity)) + { + onClipFinishedEventMap->Remove(entity); + } + SAFE_NATIVE_CALL_END("Animator.OnComponentRemoved") + } + + void Animator::RaiseOnClipStartedPlaying(EntityID entity, AssetID animAssetId, float currTimeStamp) + { + SAFE_NATIVE_CALL_BEGIN + // Remove the event if it contained an event + if (onClipStartPlayingEventMap != nullptr && onClipStartPlayingEventMap->ContainsKey(entity)) + { + ClipStartPlayingEventData data; + data.PlayingClip = AnimationClipAsset(animAssetId); + data.CurrentTimeStamp = currTimeStamp; + onClipStartPlayingEventMap[entity]->Invoke(data); + } + SAFE_NATIVE_CALL_END("Animator.OnClipStartedPlaying") + } + + void Animator::RaiseOnClipPaused(EntityID entity, AssetID animAssetId, float currTimeStamp) + { + SAFE_NATIVE_CALL_BEGIN + // Remove the event if it contained an event + if (onClipPausedEventMap != nullptr && onClipPausedEventMap->ContainsKey(entity)) + { + ClipPausedEventData data; + data.PausedClip = AnimationClipAsset(animAssetId); + data.PauseTimeStamp = currTimeStamp; + onClipPausedEventMap[entity]->Invoke(data); + } + SAFE_NATIVE_CALL_END("Animator.OnClipPaused") + } + + void Animator::RaiseOnClipFinished(EntityID entity, AssetID animAssetId) + { + + SAFE_NATIVE_CALL_BEGIN + // Remove the event if it contained an event + if (onClipFinishedEventMap != nullptr && onClipFinishedEventMap->ContainsKey(entity)) + { + ClipFinishedEventData data; + data.FinishedClip = AnimationClipAsset(animAssetId); + onClipFinishedEventMap[entity]->Invoke(data); + } + SAFE_NATIVE_CALL_END("Animator.OnClipFinished") + } + } diff --git a/SHADE_Managed/src/Components/Animator.hxx b/SHADE_Managed/src/Components/Animator.hxx index 7100c54b..39b97053 100644 --- a/SHADE_Managed/src/Components/Animator.hxx +++ b/SHADE_Managed/src/Components/Animator.hxx @@ -25,6 +25,47 @@ of DigiPen Institute of Technology is prohibited. namespace SHADE { + /// + /// Simple struct that holds event data for the Animator.OnClipStartedPlaying event. + /// + public value struct ClipStartPlayingEventData + { + /// + /// Animation Clip that started playing. + /// + AnimationClipAsset PlayingClip; + /// + /// Timestamp that the Animation Clip started playing at. This is relative to + /// the first frame of the Animation Clip. + /// + float CurrentTimeStamp; + }; + /// + /// Simple struct that holds event data for the Animator.OnClipPaused event. + /// + public value struct ClipPausedEventData + { + /// + /// Animation Clip that was paused. + /// + AnimationClipAsset PausedClip; + /// + /// Timestamp that the Animation Clip was paused at. This is relative to + /// the first frame of the Animation Clip. + /// + float PauseTimeStamp; + }; + /// + /// Simple struct that holds event data for the Animator.OnClipFinished event. + /// + public value struct ClipFinishedEventData + { + /// + /// Animation Clip that just finished. + /// + AnimationClipAsset FinishedClip; + }; + /// /// CLR version of the SHADE Engine's SHAnimatorComponent. /// @@ -70,6 +111,45 @@ namespace SHADE { System::String^ get(); } + /// + /// Whether an animation is currently playing. + /// + property bool IsPlaying + { + bool get(); + } + /// + /// Retrieves the current timestamp of the currently playing clip. This is + /// relative to the start frame of the Animation Clip. This will retrieve the + /// correct playback time depending on the current playback mode + /// (Animation Controller or via direct Animation Clip). + /// + property float CurrentClipPlaybackTime + { + float get(); + } + /// + /// Event which is raised on the frame that an animation has started playing. + /// + property CallbackEvent^ OnClipStartedPlaying + { + CallbackEvent^ get(); + } + /// + /// Event which is raised on the frame that an animation is paused. + /// + property CallbackEvent^ OnClipPaused + { + CallbackEvent^ get(); + } + /// + /// Event which is raised on the frame that an animation has finished playing. + /// This will not be called for any animation that loops. + /// + property CallbackEvent^ OnClipFinished + { + CallbackEvent^ get(); + } /*-----------------------------------------------------------------------------*/ /* Usage Functions */ @@ -159,6 +239,55 @@ namespace SHADE /// Name of the parameter. /// True if the trigger is set. System::Nullable GetTriggerState(System::String^ paramName); + + internal: + /*-----------------------------------------------------------------------------*/ + /* Static Clear Functions */ + /*-----------------------------------------------------------------------------*/ + /// + /// Disposes static event data which may contains data from SHADE_Scripting. + /// + static void ClearStaticEventData(); + + private: + /*-----------------------------------------------------------------------------*/ + /* Event Handling Functions */ + /*-----------------------------------------------------------------------------*/ + /// + /// To be called from native code when this component is removed. + /// + /// The entity which has it's component removed. + static void OnComponentRemoved(EntityID entity); + /// + /// To be called from native code when a clip for this component has started + /// playing. + /// + /// The entity which has a clip start playing. + /// AssetID of the animation clip. + /// Timestamp that the clip was started at. + static void RaiseOnClipStartedPlaying(EntityID entity, AssetID animAssetId, float currTimeStamp); + /// + /// To be called from native code when a clip for this component has been paused. + /// + /// The entity which a clip has paused. + /// AssetID of the animation clip. + /// Timestamp that the clip was paused at. + static void RaiseOnClipPaused(EntityID entity, AssetID animAssetId, float currTimeStamp); + /// + /// To be called from native code when a clip for this component has finished + /// playing. + /// + /// The entity which a clip has finished playing. + /// AssetID of the animation clip. + static void RaiseOnClipFinished(EntityID entity, AssetID animAssetId); + + /*-----------------------------------------------------------------------------*/ + /* Static Data Members */ + /*-----------------------------------------------------------------------------*/ + // As these hold references to code in SHADE_Scripting, we must remember to dispose of them when changing scenes + static System::Collections::Generic::Dictionary^>^ onClipStartPlayingEventMap; + static System::Collections::Generic::Dictionary^>^ onClipPausedEventMap; + static System::Collections::Generic::Dictionary^>^ onClipFinishedEventMap; }; } diff --git a/SHADE_Managed/src/Components/UIElement.cxx b/SHADE_Managed/src/Components/UIElement.cxx index 8e6134e1..9e4a2459 100644 --- a/SHADE_Managed/src/Components/UIElement.cxx +++ b/SHADE_Managed/src/Components/UIElement.cxx @@ -28,18 +28,6 @@ namespace SHADE : Component(entity) {} - void UIElement::ClearStaticEventData() - { - if (onClickEventMap != nullptr) - onClickEventMap->Clear(); - if (onReleasedEventMap != nullptr) - onReleasedEventMap->Clear(); - if (onHoverEnterEventMap != nullptr) - onHoverEnterEventMap->Clear(); - if (onHoverExitEventMap != nullptr) - onHoverExitEventMap->Clear(); - } - /*---------------------------------------------------------------------------------*/ /* Properties */ /*---------------------------------------------------------------------------------*/ @@ -112,9 +100,24 @@ namespace SHADE return onHoverExitEventMap[owner.EntityId]; } + /*---------------------------------------------------------------------------------*/ + /* Static Clear Functions */ + /*---------------------------------------------------------------------------------*/ + void UIElement::ClearStaticEventData() + { + if (onClickEventMap != nullptr) + onClickEventMap->Clear(); + if (onReleasedEventMap != nullptr) + onReleasedEventMap->Clear(); + if (onHoverEnterEventMap != nullptr) + onHoverEnterEventMap->Clear(); + if (onHoverExitEventMap != nullptr) + onHoverExitEventMap->Clear(); + } + /*---------------------------------------------------------------------------------*/ /* Event Handling Functions */ - /*-----------------------------------------------------------------------------a----*/ + /*---------------------------------------------------------------------------------*/ void UIElement::OnComponentRemoved(EntityID entity) { SAFE_NATIVE_CALL_BEGIN diff --git a/SHADE_Managed/src/Engine/EngineInterface.cxx b/SHADE_Managed/src/Engine/EngineInterface.cxx index 50f8fbc2..ca7c6e77 100644 --- a/SHADE_Managed/src/Engine/EngineInterface.cxx +++ b/SHADE_Managed/src/Engine/EngineInterface.cxx @@ -22,6 +22,7 @@ of DigiPen Institute of Technology is prohibited. #include "Utility/Debug.hxx" #include "Scripts/ScriptStore.hxx" #include "Components/UIElement.hxx" +#include "Components/Animator.hxx" namespace SHADE { @@ -46,6 +47,7 @@ namespace SHADE // Unload static data of components that have access to the assembly UIElement::ClearStaticEventData(); + Animator::ClearStaticEventData(); // Unload the script scriptContext->Unload(); diff --git a/SHADE_Managed/src/Graphics/AnimationSystem.cxx b/SHADE_Managed/src/Graphics/AnimationSystem.cxx new file mode 100644 index 00000000..8ed11c28 --- /dev/null +++ b/SHADE_Managed/src/Graphics/AnimationSystem.cxx @@ -0,0 +1,37 @@ +/************************************************************************************//*! +\file AnimationSystem.cxx +\author Tng Kah Wei, kahwei.tng, 390009620 +\par email: kahwei.tng\@digipen.edu +\date Mar 10, 2023 +\brief Contains the definition of the functions of the managed AnimationSystem + static class. + + Note: This file is written in C++17/CLI. + +Copyright (C) 2023 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. +*//*************************************************************************************/ +// Precompiled Headers +#include "SHpch.h" +// Primary Header +#include "AnimationSystem.hxx" +// External Dependencies +#include "ECS_Base/Managers/SHSystemManager.h" + +namespace SHADE +{ + /*---------------------------------------------------------------------------------*/ + /* Properties */ + /*---------------------------------------------------------------------------------*/ + double AnimationSystem::TimeScale::get() + { + auto sys = SHSystemManager::GetSystem(); + return sys->TimeScale; + } + void AnimationSystem::TimeScale::set(double value) + { + auto sys = SHSystemManager::GetSystem(); + sys->TimeScale = value; + } +} diff --git a/SHADE_Managed/src/Graphics/AnimationSystem.hxx b/SHADE_Managed/src/Graphics/AnimationSystem.hxx new file mode 100644 index 00000000..fe3bcd59 --- /dev/null +++ b/SHADE_Managed/src/Graphics/AnimationSystem.hxx @@ -0,0 +1,47 @@ +/************************************************************************************//*! +\file AnimationSystem.hxx +\author Tng Kah Wei, kahwei.tng, 390009620 +\par email: kahwei.tng\@digipen.edu +\date Mar 10, 2023 +\brief Contains the definition of the managed AnimationSystem static class. + + Note: This file is written in C++17/CLI. + +Copyright (C) 2023 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 "Animation/SHAnimationSystem.h" + +namespace SHADE +{ + /// + /// Static class for interfacing with the animation system. + /// + public ref class AnimationSystem abstract sealed + { + public: + /*-----------------------------------------------------------------------------*/ + /* Constants */ + /*-----------------------------------------------------------------------------*/ + /// + /// Default time scale used by the system. + /// + literal double DefaultTimeScale = SHAnimationSystem::DEFAULT_TIME_SCALE; + + /*-----------------------------------------------------------------------------*/ + /* Properties */ + /*-----------------------------------------------------------------------------*/ + /// + /// Used by the system to multiply the given delta time to scale the animation + /// speed. + /// + static property double TimeScale + { + double get(); + void set(double value); + } + }; +} diff --git a/SHADE_Managed/src/Scripts/ScriptStore.cxx b/SHADE_Managed/src/Scripts/ScriptStore.cxx index 5d3a3bac..9ef447bf 100644 --- a/SHADE_Managed/src/Scripts/ScriptStore.cxx +++ b/SHADE_Managed/src/Scripts/ScriptStore.cxx @@ -882,6 +882,11 @@ namespace SHADE System::Collections::Generic::IEnumerable^ selectorFunc(System::Reflection::Assembly^ assembly) { + if (assembly == nullptr) + { + Debug::LogError("[ScriptStore] Received null assembly while collecting Script types. This should not happen!"); + return nullptr; + } return assembly->GetExportedTypes(); } Pair^ resultSelectorFunc(System::Reflection::Assembly^ assembly, System::Type^ type)