From fc0d7ad0526f5439fd0f25946a4ea6f66d2a7995 Mon Sep 17 00:00:00 2001 From: XiaoQiDigipen <72735604+XiaoQiDigipen@users.noreply.github.com> Date: Mon, 30 Jan 2023 14:40:55 +0800 Subject: [PATCH 1/8] Revert "Revert "Implemented a custom physics engine"" This reverts commit 3ff2e6bb92dd2b8baa2ebe7b98b1285c218fc2a1. --- Assets/Application.SHConfig | 2 +- Assets/CollisionTags.SHConfig | 32 +- Assets/Editor/Editor.SHConfig | 2 +- Assets/Scenes/PhysicsSandbox.shade | 247 ++++++ Assets/Scenes/PhysicsSandbox.shade.shmeta | 3 + .../Implemented/LeafNodes/LeafSearch.cs | 2 +- .../Gameplay/Player/SC_PickAndThrow.cs | 11 +- Assets/Scripts/Tests/PhysicsTestObj.cs | 119 +++ Assets/Scripts/Tests/PhysicsTestObj.cs.shmeta | 3 + .../src/Application/SBApplication.cpp | 34 +- SHADE_Application/src/Scenes/SBMainScene.cpp | 17 - SHADE_Application/src/Scenes/SBTestScene.cpp | 28 +- .../src/Camera/SHCameraArmComponent.h | 2 +- SHADE_Engine/src/Camera/SHCameraSystem.cpp | 30 +- .../src/ECS_Base/Managers/SHEntityManager.cpp | 2 +- .../ColliderTagPanel/SHColliderTagPanel.cpp | 10 +- .../Inspector/SHEditorComponentView.hpp | 100 ++- .../EditorWindow/MenuBar/SHEditorMenuBar.cpp | 30 + .../EditorWindow/MenuBar/SHEditorMenuBar.h | 1 + SHADE_Engine/src/Events/SHEventDefines.h | 2 + .../Math/Geometry/{SHBox.cpp => SHAABB.cpp} | 121 +-- SHADE_Engine/src/Math/Geometry/SHAABB.h | 173 ++++ SHADE_Engine/src/Math/Geometry/SHBox.h | 105 --- SHADE_Engine/src/Math/Geometry/SHPlane.cpp | 141 +++ SHADE_Engine/src/Math/Geometry/SHPlane.h | 121 +++ SHADE_Engine/src/Math/Geometry/SHSphere.cpp | 208 ----- SHADE_Engine/src/Math/SHColour.cpp | 8 + SHADE_Engine/src/Math/SHMathHelpers.h | 12 +- SHADE_Engine/src/Math/SHMatrix.cpp | 8 + SHADE_Engine/src/Math/SHMatrix.h | 1 + SHADE_Engine/src/Math/SHQuaternion.cpp | 24 +- SHADE_Engine/src/Math/SHQuaternion.h | 15 +- SHADE_Engine/src/Math/SHRay.cpp | 12 - SHADE_Engine/src/Math/SHRay.h | 6 - .../src/Math/Transform/SHTransformSystem.cpp | 2 - SHADE_Engine/src/Math/Vector/SHVec2.cpp | 17 +- SHADE_Engine/src/Math/Vector/SHVec2.h | 6 - SHADE_Engine/src/Math/Vector/SHVec3.cpp | 50 +- SHADE_Engine/src/Math/Vector/SHVec3.h | 48 +- SHADE_Engine/src/Math/Vector/SHVec4.cpp | 8 + .../Broadphase/SHDynamicAABBTree.cpp | 644 ++++++++++++++ .../Collision/Broadphase/SHDynamicAABBTree.h | 156 ++++ .../SHCollisionTagMatrix.cpp | 35 +- .../SHCollisionTagMatrix.h | 0 .../{ => CollisionTags}/SHCollisionTags.cpp | 0 .../{ => CollisionTags}/SHCollisionTags.h | 0 .../Collision/Contacts/SHCollisionEvents.h | 60 ++ .../Collision/Contacts/SHCollisionKey.cpp | 166 ++++ .../Contacts/SHCollisionKey.h} | 122 +-- .../Physics/Collision/Contacts/SHContact.h | 72 ++ .../Physics/Collision/Contacts/SHManifold.h | 73 ++ .../Physics/Collision/Contacts/SHManifold.hpp | 110 +++ .../Narrowphase/SHCapsuleVsCapsule.cpp} | 28 +- .../Narrowphase/SHCapsuleVsConvex.cpp | 49 ++ .../Collision/Narrowphase/SHCollision.h | 222 +++++ .../Narrowphase/SHCollisionDispatch.cpp | 65 ++ .../Narrowphase/SHCollisionDispatch.h} | 60 +- .../Narrowphase/SHConvexVsConvex.cpp | 822 ++++++++++++++++++ .../Physics/Collision/Narrowphase/SHSATInfo.h | 87 ++ .../Collision/Narrowphase/SHSATInfo.hpp | 71 ++ .../Narrowphase/SHSphereVsCapsule.cpp | 48 + .../Narrowphase/SHSphereVsConvex.cpp | 348 ++++++++ .../Narrowphase/SHSphereVsSphere.cpp | 97 +++ .../src/Physics/Collision/SHCollider.cpp | 393 +++++++++ .../src/Physics/Collision/SHCollider.h | 178 ++++ .../src/Physics/Collision/SHCollisionInfo.cpp | 93 -- .../Physics/Collision/SHCollisionListener.cpp | 254 ------ .../Physics/Collision/SHCollisionSpace.cpp | 308 +++++++ .../src/Physics/Collision/SHCollisionSpace.h | 196 +++++ .../Physics/Collision/SHCompositeCollider.cpp | 176 ++++ .../Physics/Collision/SHCompositeCollider.h | 80 ++ .../SHPhysicsMaterial.cpp | 0 .../SHPhysicsMaterial.h | 4 + .../Physics/Collision/SHPhysicsRaycaster.cpp | 350 -------- .../Physics/Collision/SHPhysicsRaycaster.h | 134 --- .../src/Physics/Collision/Shapes/SHBox.cpp | 319 +++++++ .../src/Physics/Collision/Shapes/SHBox.h | 129 +++ .../Collision/Shapes/SHCollisionShape.cpp | 188 ++++ .../Collision/Shapes/SHCollisionShape.h | 210 +++++ .../SHCollisionShapeID.h} | 103 +-- .../Collision/Shapes/SHCollisionShapeID.hpp | 80 ++ .../Shapes/SHCollisionShapeLibrary.cpp | 174 ++++ .../SHCollisionShapeLibrary.h} | 98 ++- .../Collision/Shapes/SHConvexPolyhedron.cpp | 96 ++ .../Collision/Shapes/SHConvexPolyhedron.h | 93 ++ .../Collision/Shapes/SHHalfEdgeStructure.cpp | 182 ++++ .../Collision/Shapes/SHHalfEdgeStructure.h | 143 +++ .../src/Physics/Collision/Shapes/SHSphere.cpp | 240 +++++ .../Collision/Shapes}/SHSphere.h | 87 +- .../Constraints/SHContactConstraint.h | 56 ++ .../Dynamics/Constraints/SHVelocityState.h | 63 ++ .../src/Physics/Dynamics/SHContactManager.cpp | 297 +++++++ .../src/Physics/Dynamics/SHContactManager.h | 140 +++ .../src/Physics/Dynamics/SHContactManager.hpp | 61 ++ .../src/Physics/Dynamics/SHContactSolver.cpp | 332 +++++++ .../Dynamics/SHContactSolver.h} | 87 +- .../src/Physics/Dynamics/SHMotionState.cpp | 128 +++ .../src/Physics/Dynamics/SHMotionState.h | 127 +++ .../src/Physics/Dynamics/SHPhysicsWorld.cpp | 190 ++++ .../src/Physics/Dynamics/SHPhysicsWorld.h | 145 +++ .../src/Physics/Dynamics/SHRigidBody.cpp | 765 ++++++++++++++++ .../src/Physics/Dynamics/SHRigidBody.h | 268 ++++++ .../PhysicsObject/SHPhysicsObject.cpp | 163 ++++ .../Interface/PhysicsObject/SHPhysicsObject.h | 109 +++ .../PhysicsObject/SHPhysicsObjectManager.cpp | 178 ++++ .../PhysicsObject/SHPhysicsObjectManager.h | 116 +++ .../Physics/Interface/SHColliderComponent.cpp | 189 +--- .../Physics/Interface/SHColliderComponent.h | 49 +- .../Physics/Interface/SHCollisionShape.cpp | 368 -------- .../src/Physics/Interface/SHCollisionShape.h | 134 --- .../Interface/SHRigidBodyComponent.cpp | 533 +++++------- .../Physics/Interface/SHRigidBodyComponent.h | 52 +- .../Physics/PhysicsObject/SHPhysicsObject.cpp | 431 --------- .../PhysicsObject/SHPhysicsObjectManager.cpp | 309 ------- .../PhysicsObject/SHPhysicsObjectManager.h | 181 ---- SHADE_Engine/src/Physics/SHPhysicsConstants.h | 50 ++ SHADE_Engine/src/Physics/SHPhysicsEvents.h | 12 +- SHADE_Engine/src/Physics/SHPhysicsWorld.cpp | 71 -- .../Routines/SHPhysicsDebugDrawRoutine.cpp | 114 +++ .../Routines/SHPhysicsPostUpdateRoutine.cpp | 104 +++ .../Routines/SHPhysicsPreUpdateRoutine.cpp | 94 ++ .../Routines/SHPhysicsUpdateRoutine.cpp | 66 ++ .../System/SHPhysicsDebugDrawSystem.cpp | 331 ++----- .../Physics/System/SHPhysicsDebugDrawSystem.h | 139 +-- .../src/Physics/System/SHPhysicsSystem.cpp | 605 ++++++------- .../src/Physics/System/SHPhysicsSystem.h | 282 ++---- .../System/SHPhysicsSystemInterface.cpp | 110 +-- .../Physics/System/SHPhysicsSystemInterface.h | 25 +- .../System/SHPhysicsSystemRoutines.cpp | 412 --------- SHADE_Engine/src/Scene/SHSceneGraph.cpp | 46 +- SHADE_Engine/src/Scene/SHSceneGraph.h | 81 +- SHADE_Engine/src/Scene/SHSceneManager.cpp | 2 +- SHADE_Engine/src/Scene/SHSceneNode.h | 13 +- .../src/Serialization/SHYAMLConverters.h | 49 +- SHADE_Managed/src/Components/Collider.cxx | 55 +- SHADE_Managed/src/Components/Collider.h++ | 6 +- SHADE_Managed/src/Components/Collider.hxx | 25 +- SHADE_Managed/src/Components/RigidBody.cxx | 8 +- SHADE_Managed/src/Components/RigidBody.hxx | 1 - SHADE_Managed/src/Physics/Physics.cxx | 254 +++++- SHADE_Managed/src/Physics/Physics.hxx | 114 ++- SHADE_Managed/src/Scripts/ScriptStore.cxx | 25 +- SHADE_Managed/src/Utility/Convert.cxx | 1 + SHADE_Managed/src/Utility/Convert.hxx | 6 +- 144 files changed, 12603 insertions(+), 5375 deletions(-) create mode 100644 Assets/Scenes/PhysicsSandbox.shade create mode 100644 Assets/Scenes/PhysicsSandbox.shade.shmeta create mode 100644 Assets/Scripts/Tests/PhysicsTestObj.cs create mode 100644 Assets/Scripts/Tests/PhysicsTestObj.cs.shmeta rename SHADE_Engine/src/Math/Geometry/{SHBox.cpp => SHAABB.cpp} (60%) create mode 100644 SHADE_Engine/src/Math/Geometry/SHAABB.h delete mode 100644 SHADE_Engine/src/Math/Geometry/SHBox.h create mode 100644 SHADE_Engine/src/Math/Geometry/SHPlane.cpp create mode 100644 SHADE_Engine/src/Math/Geometry/SHPlane.h delete mode 100644 SHADE_Engine/src/Math/Geometry/SHSphere.cpp create mode 100644 SHADE_Engine/src/Physics/Collision/Broadphase/SHDynamicAABBTree.cpp create mode 100644 SHADE_Engine/src/Physics/Collision/Broadphase/SHDynamicAABBTree.h rename SHADE_Engine/src/Physics/Collision/{ => CollisionTags}/SHCollisionTagMatrix.cpp (86%) rename SHADE_Engine/src/Physics/Collision/{ => CollisionTags}/SHCollisionTagMatrix.h (100%) rename SHADE_Engine/src/Physics/Collision/{ => CollisionTags}/SHCollisionTags.cpp (100%) rename SHADE_Engine/src/Physics/Collision/{ => CollisionTags}/SHCollisionTags.h (100%) create mode 100644 SHADE_Engine/src/Physics/Collision/Contacts/SHCollisionEvents.h create mode 100644 SHADE_Engine/src/Physics/Collision/Contacts/SHCollisionKey.cpp rename SHADE_Engine/src/Physics/{PhysicsObject/SHPhysicsObject.h => Collision/Contacts/SHCollisionKey.h} (51%) create mode 100644 SHADE_Engine/src/Physics/Collision/Contacts/SHContact.h create mode 100644 SHADE_Engine/src/Physics/Collision/Contacts/SHManifold.h create mode 100644 SHADE_Engine/src/Physics/Collision/Contacts/SHManifold.hpp rename SHADE_Engine/src/{Math/Geometry/SHShape.cpp => Physics/Collision/Narrowphase/SHCapsuleVsCapsule.cpp} (57%) create mode 100644 SHADE_Engine/src/Physics/Collision/Narrowphase/SHCapsuleVsConvex.cpp create mode 100644 SHADE_Engine/src/Physics/Collision/Narrowphase/SHCollision.h create mode 100644 SHADE_Engine/src/Physics/Collision/Narrowphase/SHCollisionDispatch.cpp rename SHADE_Engine/src/Physics/{SHPhysicsWorld.h => Collision/Narrowphase/SHCollisionDispatch.h} (51%) create mode 100644 SHADE_Engine/src/Physics/Collision/Narrowphase/SHConvexVsConvex.cpp create mode 100644 SHADE_Engine/src/Physics/Collision/Narrowphase/SHSATInfo.h create mode 100644 SHADE_Engine/src/Physics/Collision/Narrowphase/SHSATInfo.hpp create mode 100644 SHADE_Engine/src/Physics/Collision/Narrowphase/SHSphereVsCapsule.cpp create mode 100644 SHADE_Engine/src/Physics/Collision/Narrowphase/SHSphereVsConvex.cpp create mode 100644 SHADE_Engine/src/Physics/Collision/Narrowphase/SHSphereVsSphere.cpp create mode 100644 SHADE_Engine/src/Physics/Collision/SHCollider.cpp create mode 100644 SHADE_Engine/src/Physics/Collision/SHCollider.h delete mode 100644 SHADE_Engine/src/Physics/Collision/SHCollisionInfo.cpp delete mode 100644 SHADE_Engine/src/Physics/Collision/SHCollisionListener.cpp create mode 100644 SHADE_Engine/src/Physics/Collision/SHCollisionSpace.cpp create mode 100644 SHADE_Engine/src/Physics/Collision/SHCollisionSpace.h create mode 100644 SHADE_Engine/src/Physics/Collision/SHCompositeCollider.cpp create mode 100644 SHADE_Engine/src/Physics/Collision/SHCompositeCollider.h rename SHADE_Engine/src/Physics/{Interface => Collision}/SHPhysicsMaterial.cpp (100%) rename SHADE_Engine/src/Physics/{Interface => Collision}/SHPhysicsMaterial.h (98%) delete mode 100644 SHADE_Engine/src/Physics/Collision/SHPhysicsRaycaster.cpp delete mode 100644 SHADE_Engine/src/Physics/Collision/SHPhysicsRaycaster.h create mode 100644 SHADE_Engine/src/Physics/Collision/Shapes/SHBox.cpp create mode 100644 SHADE_Engine/src/Physics/Collision/Shapes/SHBox.h create mode 100644 SHADE_Engine/src/Physics/Collision/Shapes/SHCollisionShape.cpp create mode 100644 SHADE_Engine/src/Physics/Collision/Shapes/SHCollisionShape.h rename SHADE_Engine/src/Physics/Collision/{SHCollisionInfo.h => Shapes/SHCollisionShapeID.h} (55%) create mode 100644 SHADE_Engine/src/Physics/Collision/Shapes/SHCollisionShapeID.hpp create mode 100644 SHADE_Engine/src/Physics/Collision/Shapes/SHCollisionShapeLibrary.cpp rename SHADE_Engine/src/Physics/Collision/{SHCollisionListener.h => Shapes/SHCollisionShapeLibrary.h} (50%) create mode 100644 SHADE_Engine/src/Physics/Collision/Shapes/SHConvexPolyhedron.cpp create mode 100644 SHADE_Engine/src/Physics/Collision/Shapes/SHConvexPolyhedron.h create mode 100644 SHADE_Engine/src/Physics/Collision/Shapes/SHHalfEdgeStructure.cpp create mode 100644 SHADE_Engine/src/Physics/Collision/Shapes/SHHalfEdgeStructure.h create mode 100644 SHADE_Engine/src/Physics/Collision/Shapes/SHSphere.cpp rename SHADE_Engine/src/{Math/Geometry => Physics/Collision/Shapes}/SHSphere.h (56%) create mode 100644 SHADE_Engine/src/Physics/Dynamics/Constraints/SHContactConstraint.h create mode 100644 SHADE_Engine/src/Physics/Dynamics/Constraints/SHVelocityState.h create mode 100644 SHADE_Engine/src/Physics/Dynamics/SHContactManager.cpp create mode 100644 SHADE_Engine/src/Physics/Dynamics/SHContactManager.h create mode 100644 SHADE_Engine/src/Physics/Dynamics/SHContactManager.hpp create mode 100644 SHADE_Engine/src/Physics/Dynamics/SHContactSolver.cpp rename SHADE_Engine/src/{Math/Geometry/SHShape.h => Physics/Dynamics/SHContactSolver.h} (57%) create mode 100644 SHADE_Engine/src/Physics/Dynamics/SHMotionState.cpp create mode 100644 SHADE_Engine/src/Physics/Dynamics/SHMotionState.h create mode 100644 SHADE_Engine/src/Physics/Dynamics/SHPhysicsWorld.cpp create mode 100644 SHADE_Engine/src/Physics/Dynamics/SHPhysicsWorld.h create mode 100644 SHADE_Engine/src/Physics/Dynamics/SHRigidBody.cpp create mode 100644 SHADE_Engine/src/Physics/Dynamics/SHRigidBody.h create mode 100644 SHADE_Engine/src/Physics/Interface/PhysicsObject/SHPhysicsObject.cpp create mode 100644 SHADE_Engine/src/Physics/Interface/PhysicsObject/SHPhysicsObject.h create mode 100644 SHADE_Engine/src/Physics/Interface/PhysicsObject/SHPhysicsObjectManager.cpp create mode 100644 SHADE_Engine/src/Physics/Interface/PhysicsObject/SHPhysicsObjectManager.h delete mode 100644 SHADE_Engine/src/Physics/Interface/SHCollisionShape.cpp delete mode 100644 SHADE_Engine/src/Physics/Interface/SHCollisionShape.h delete mode 100644 SHADE_Engine/src/Physics/PhysicsObject/SHPhysicsObject.cpp delete mode 100644 SHADE_Engine/src/Physics/PhysicsObject/SHPhysicsObjectManager.cpp delete mode 100644 SHADE_Engine/src/Physics/PhysicsObject/SHPhysicsObjectManager.h create mode 100644 SHADE_Engine/src/Physics/SHPhysicsConstants.h delete mode 100644 SHADE_Engine/src/Physics/SHPhysicsWorld.cpp create mode 100644 SHADE_Engine/src/Physics/System/Routines/SHPhysicsDebugDrawRoutine.cpp create mode 100644 SHADE_Engine/src/Physics/System/Routines/SHPhysicsPostUpdateRoutine.cpp create mode 100644 SHADE_Engine/src/Physics/System/Routines/SHPhysicsPreUpdateRoutine.cpp create mode 100644 SHADE_Engine/src/Physics/System/Routines/SHPhysicsUpdateRoutine.cpp delete mode 100644 SHADE_Engine/src/Physics/System/SHPhysicsSystemRoutines.cpp diff --git a/Assets/Application.SHConfig b/Assets/Application.SHConfig index ee5e42a8..d0fa83df 100644 --- a/Assets/Application.SHConfig +++ b/Assets/Application.SHConfig @@ -1,4 +1,4 @@ Start in Fullscreen: false -Starting Scene ID: 87244611 +Starting Scene ID: 97402985 Window Size: {x: 1920, y: 1080} Window Title: SHADE Engine \ No newline at end of file diff --git a/Assets/CollisionTags.SHConfig b/Assets/CollisionTags.SHConfig index d3ebe7e2..9488270c 100644 --- a/Assets/CollisionTags.SHConfig +++ b/Assets/CollisionTags.SHConfig @@ -1,16 +1,16 @@ -0 1 -1 2 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -10 11 -11 12 -12 13 -13 14 -14 15 -15 16 +0 1 3 +1 2 3 +2 3 65535 +3 4 65535 +4 5 65535 +5 6 65535 +6 7 65535 +7 8 65535 +8 9 65535 +9 10 65535 +10 11 65535 +11 12 65535 +12 13 65535 +13 14 65535 +14 15 65535 +15 16 65535 diff --git a/Assets/Editor/Editor.SHConfig b/Assets/Editor/Editor.SHConfig index 51425027..b492a983 100644 --- a/Assets/Editor/Editor.SHConfig +++ b/Assets/Editor/Editor.SHConfig @@ -1,4 +1,4 @@ Start Maximized: true -Working Scene ID: 97161771 +Working Scene ID: 97402985 Window Size: {x: 1920, y: 1080} Style: 0 \ No newline at end of file diff --git a/Assets/Scenes/PhysicsSandbox.shade b/Assets/Scenes/PhysicsSandbox.shade new file mode 100644 index 00000000..56f272e0 --- /dev/null +++ b/Assets/Scenes/PhysicsSandbox.shade @@ -0,0 +1,247 @@ +- EID: 0 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.72256827, y: 0.501797795, z: -0.0273017883} + Rotate: {x: 0, y: 0, z: 0.436332315} + Scale: {x: 4.61070776, y: 0.99999392, z: 0.999996722} + IsActive: true + Collider Component: + DrawColliders: false + Colliders: + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 1, y: 1, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 1 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Camera Component: + Position: {x: 0, y: 2, z: 10} + Pitch: 0 + Yaw: 0 + Roll: 0 + Width: 1920 + Height: 1080 + Near: 0.00999999978 + Far: 10000 + Perspective: true + IsActive: true + Scripts: ~ +- EID: 3 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 7.5, z: 0} + Rotate: {x: -0, y: 0, z: 0.785398185} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 0.52359879 + Drag: 0.00999999978 + Angular Drag: 0 + Use Gravity: true + Gravity Scale: 1 + Interpolate: true + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: true + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + DrawColliders: false + Colliders: + - Is Trigger: false + Collision Tag: 1 + Type: Sphere + Radius: 1 + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 2 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 4, z: 0} + Rotate: {x: -0, y: 0, z: -0.436332315} + Scale: {x: 4.61071014, y: 0.999995887, z: 1} + IsActive: true + Collider Component: + DrawColliders: false + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 1, y: 1, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 4 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: -3, z: 0} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 10, y: 3, z: 10} + IsActive: true + Collider Component: + DrawColliders: false + Colliders: + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 1, y: 1, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 5 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4.80025721, y: 3, z: 0} + Rotate: {x: -0, y: 0, z: 1.57079601} + Scale: {x: 9.99975109, y: 0.499992192, z: 10} + IsActive: true + Collider Component: + DrawColliders: false + Colliders: + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 1, y: 1, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 6 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.80000019, y: 3, z: 0} + Rotate: {x: -0, y: 0, z: 1.57079601} + Scale: {x: 9.99975109, y: 0.499992192, z: 10} + IsActive: true + Collider Component: + DrawColliders: false + Colliders: + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 1, y: 1, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 7 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 7, z: 0} + Rotate: {x: 0, y: 0, z: 0.785398185} + Scale: {x: 0.999990404, y: 0.999994457, z: 0.999985337} + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0 + Use Gravity: true + Gravity Scale: 1 + Interpolate: true + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + DrawColliders: false + Colliders: + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 1, y: 1, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: PhysicsTestObj + Enabled: true + forceAmount: 50 + torqueAmount: 5 +- EID: 8 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 3} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Collider Component: + DrawColliders: false + Colliders: + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 1, y: 1, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ \ No newline at end of file diff --git a/Assets/Scenes/PhysicsSandbox.shade.shmeta b/Assets/Scenes/PhysicsSandbox.shade.shmeta new file mode 100644 index 00000000..97c00ca6 --- /dev/null +++ b/Assets/Scenes/PhysicsSandbox.shade.shmeta @@ -0,0 +1,3 @@ +Name: PhysicsSandbox +ID: 97402985 +Type: 5 diff --git a/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafSearch.cs b/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafSearch.cs index 7c68712c..b5b03629 100644 --- a/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafSearch.cs +++ b/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafSearch.cs @@ -159,7 +159,7 @@ public partial class LeafSearch : BehaviourTreeNode //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; Ray sightRay = new Ray(eyePosition, rayDestination - eyePosition); - RaycastHit sightRayHit = Physics.Raycast(sightRay); + RaycastHit sightRayHit = Physics.Raycast(sightRay, false)[0]; //As of November 2022, RaycastHit contains only the FIRST object hit by //the ray in the Other GameObject data member //Diren may likely add ALL objects hit by the ray over December diff --git a/Assets/Scripts/Gameplay/Player/SC_PickAndThrow.cs b/Assets/Scripts/Gameplay/Player/SC_PickAndThrow.cs index 9c879314..8323dba2 100644 --- a/Assets/Scripts/Gameplay/Player/SC_PickAndThrow.cs +++ b/Assets/Scripts/Gameplay/Player/SC_PickAndThrow.cs @@ -1,6 +1,7 @@ using SHADE; using SHADE_Scripting; using System; +using System.Collections.Generic; using static PlayerController; using static Item; @@ -203,9 +204,13 @@ public class PickAndThrow : Script Vector3 playerRayPos = pc.tranform.GlobalPosition; playerRayPos.y += 0.05f; dirNor.Normalise(); - RaycastHit ray1 = Physics.Raycast(new Ray(playerRayPos, Vector3.RotateY(dirNor, SHADE.Math.DegreesToRadians(22.5f))), rayDistance); - RaycastHit ray2 = Physics.Raycast(new Ray(playerRayPos, Vector3.RotateY(dirNor, SHADE.Math.DegreesToRadians(-22.5f))), rayDistance); - RaycastHit ray3 = Physics.Raycast(new Ray(playerRayPos, dirNor), rayDistance * 0.75f); + List rayList1 = Physics.Raycast(new Ray(playerRayPos, Vector3.RotateY(dirNor, SHADE.Math.DegreesToRadians(22.5f))), rayDistance, false); + List rayList2 = Physics.Raycast(new Ray(playerRayPos, Vector3.RotateY(dirNor, SHADE.Math.DegreesToRadians(-22.5f))), rayDistance, false); + List rayList3 = Physics.Raycast(new Ray(playerRayPos, dirNor), rayDistance * 0.75f, false); + + RaycastHit ray1 = rayList1[0]; + RaycastHit ray2 = rayList2[0]; + RaycastHit ray3 = rayList3[0]; inRange = CheckForItem(ray1) || CheckForItem(ray2) || CheckForItem(ray3); } } diff --git a/Assets/Scripts/Tests/PhysicsTestObj.cs b/Assets/Scripts/Tests/PhysicsTestObj.cs new file mode 100644 index 00000000..2348894f --- /dev/null +++ b/Assets/Scripts/Tests/PhysicsTestObj.cs @@ -0,0 +1,119 @@ +using SHADE; +using System; +using System.Collections.Generic; +using static Item; + + +public class PhysicsTestObj : Script +{ + public RigidBody body { get; set; } + public Collider collider { get; set; } + + // Movement input booleans + public enum Direction + { + UP, + DOWN, + FORWARD, + BACK, + LEFT, + RIGHT + }; + + internal bool[] move = new bool[6]; + internal bool[] rotate = new bool[6]; + + internal Vector3[] moveVec = new Vector3[6] + { + Vector3.Up, + Vector3.Down, + Vector3.Back, + Vector3.Forward, + Vector3.Left, + Vector3.Right + }; + + internal Vector3[] rotateVec = new Vector3[6] + { + Vector3.Right, + Vector3.Left, + Vector3.Forward, + Vector3.Down, + Vector3.Up, + Vector3.Down + }; + + internal Input.KeyCode[] moveInputKeys = new Input.KeyCode[6] + { + Input.KeyCode.Space, + Input.KeyCode.LeftControl, + Input.KeyCode.W, + Input.KeyCode.S, + Input.KeyCode.A, + Input.KeyCode.D + }; + + internal Input.KeyCode[] rotateInputKeys = new Input.KeyCode[6] + { + Input.KeyCode.I, + Input.KeyCode.K, + Input.KeyCode.U, + Input.KeyCode.O, + Input.KeyCode.J, + Input.KeyCode.L + }; + + public float forceAmount = 50.0f; + public float torqueAmount = 500.0f; + + protected override void awake() + { + body = GetComponent(); + collider = GetComponent(); + + for (int i = 0; i < 6; ++i) + { + move[i] = false; + rotate[i] = false; + } + } + + protected override void update() + { + Ray colliderRay = new Ray(); + colliderRay.Direction = Vector3.Right; + Physics.ColliderRaycast(collider.Owner, colliderRay, false); + + for (int i = 0; i < 6; ++i) + { + if (Input.GetKeyDown(moveInputKeys[i])) + move[i] = true; + + if (Input.GetKeyDown(rotateInputKeys[i])) + rotate[i] = true; + } + } + + protected override void fixedUpdate() + { + for (int i = 0; i < 6; ++i) + { + bool shouldMove = move[i]; + bool shouldRotate = rotate[i]; + + if (shouldMove) + { + //Vector3 offset = new Vector3(0.25f, 0.0f, 0.0f); + //rb.AddForceAtLocalPos(moveVec[i] * forceAmount, offset); + body.AddForce(moveVec[i] * forceAmount); + move[i] = false; + } + + if (shouldRotate) + { + body.AddTorque(rotateVec[i] * torqueAmount); + rotate[i] = false; + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Tests/PhysicsTestObj.cs.shmeta b/Assets/Scripts/Tests/PhysicsTestObj.cs.shmeta new file mode 100644 index 00000000..8c096651 --- /dev/null +++ b/Assets/Scripts/Tests/PhysicsTestObj.cs.shmeta @@ -0,0 +1,3 @@ +Name: PhysicsTestObj +ID: 159293012 +Type: 9 diff --git a/SHADE_Application/src/Application/SBApplication.cpp b/SHADE_Application/src/Application/SBApplication.cpp index fcceacab..5f451dea 100644 --- a/SHADE_Application/src/Application/SBApplication.cpp +++ b/SHADE_Application/src/Application/SBApplication.cpp @@ -77,9 +77,6 @@ namespace Sandbox SHSystemManager::CreateSystem(); SHSystemManager::CreateSystem(); SHSystemManager::CreateSystem(); -#ifndef _PUBLISH - SHSystemManager::CreateSystem(); -#endif SHSystemManager::CreateSystem(); SHSystemManager::CreateSystem(); @@ -90,7 +87,6 @@ namespace Sandbox SHSystemManager::CreateSystem(); SHGraphicsSystem* graphicsSystem = static_cast(SHSystemManager::GetSystem()); - SHPhysicsSystem* physicsSystem = SHSystemManager::GetSystem(); // Link up SHDebugDraw SHSystemManager::CreateSystem(); @@ -105,6 +101,8 @@ namespace Sandbox editor->SetSDLWindow(sdlWindow); editor->SetSHWindow(&window); } + + SHSystemManager::CreateSystem(); #endif // Create Routines @@ -116,11 +114,11 @@ namespace Sandbox SHSystemManager::RegisterRoutine(); SHSystemManager::RegisterRoutine(); - SHSystemManager::RegisterRoutine(); + SHSystemManager::RegisterRoutine(); SHSystemManager::RegisterRoutine(); -#ifndef _PUBLISH - SHSystemManager::RegisterRoutine(); +#ifdef SHEDITOR + SHSystemManager::RegisterRoutine(); #endif SHSystemManager::RegisterRoutine(); @@ -193,32 +191,12 @@ namespace Sandbox #endif SHSceneManager::SceneUpdate(0.016f); #ifdef SHEDITOR + SHSystemManager::RunRoutines(editor->editorState != SHEditor::State::PLAY, SHFrameRateController::GetRawDeltaTime()); editor->PollPicking(); #else SHSystemManager::RunRoutines(false, SHFrameRateController::GetRawDeltaTime()); #endif - // TODO: Move into an Editor menu - static bool drawContacts = false; - if (SHInputManager::GetKeyDown(SHInputManager::SH_KEYCODE::F9)) - { - drawContacts = !drawContacts; - SHSystemManager::GetSystem()->SetDebugDrawFlag(SHPhysicsDebugDrawSystem::DebugDrawFlags::CONTACT_POINTS, drawContacts); - SHSystemManager::GetSystem()->SetDebugDrawFlag(SHPhysicsDebugDrawSystem::DebugDrawFlags::CONTACT_NORMALS, drawContacts); - } - static bool drawColliders = false; - if (SHInputManager::GetKeyDown(SHInputManager::SH_KEYCODE::F10)) - { - drawColliders = !drawColliders; - SHSystemManager::GetSystem()->SetDebugDrawFlag(SHPhysicsDebugDrawSystem::DebugDrawFlags::COLLIDER, drawColliders); - } - static bool drawRays = false; - if (SHInputManager::GetKeyDown(SHInputManager::SH_KEYCODE::F11)) - { - drawRays = !drawRays; - SHSystemManager::GetSystem()->SetDebugDrawFlag(SHPhysicsDebugDrawSystem::DebugDrawFlags::RAYCASTS, drawRays); - } - } // Finish all graphics jobs first graphicsSystem->AwaitGraphicsExecution(); diff --git a/SHADE_Application/src/Scenes/SBMainScene.cpp b/SHADE_Application/src/Scenes/SBMainScene.cpp index 73926115..dd713980 100644 --- a/SHADE_Application/src/Scenes/SBMainScene.cpp +++ b/SHADE_Application/src/Scenes/SBMainScene.cpp @@ -44,23 +44,6 @@ namespace Sandbox { sceneName = SHSerialization::DeserializeSceneFromFile(sceneAssetID); - auto* physicsSystem = SHSystemManager::GetSystem(); - if (!physicsSystem) - { - SHLOGV_CRITICAL("Failed to get the physics system for building the scene!") - return; - } - - #ifdef SHEDITOR - - physicsSystem->ForceBuild(SHSceneManager::GetCurrentSceneGraph()); - - #else - - physicsSystem->BuildScene(SHSceneManager::GetCurrentSceneGraph()); - - #endif - /*-----------------------------------------------------------------------*/ /* TESTING CODE */ /*-----------------------------------------------------------------------*/ diff --git a/SHADE_Application/src/Scenes/SBTestScene.cpp b/SHADE_Application/src/Scenes/SBTestScene.cpp index a5edd124..0603b22b 100644 --- a/SHADE_Application/src/Scenes/SBTestScene.cpp +++ b/SHADE_Application/src/Scenes/SBTestScene.cpp @@ -92,7 +92,7 @@ namespace Sandbox floorRigidBody.SetType(SHRigidBodyComponent::Type::STATIC); - floorCollider.AddBoundingBox(); + //floorCollider.AddBoundingBox(); // Create blank entity with a script //testObj = SHADE::SHEntityManager::CreateEntity(); @@ -113,9 +113,9 @@ namespace Sandbox racoonTransform.SetWorldScale({ 2.0f, 2.0f, 2.0f }); racoonTransform.SetWorldPosition({ -3.0f, -2.0f, -5.0f }); - racoonCollider.AddBoundingBox(); - racoonCollider.GetCollisionShape(0).SetPositionOffset(SHVec3(0.0f,0.5f,0.0f)); - racoonCollider.GetCollisionShape(0).SetBoundingBox(SHVec3(0.5f, 0.5f, 0.5f)); + //racoonCollider.AddBoundingBox(); + //racoonCollider.GetCollisionShape(0).SetPositionOffset(SHVec3(0.0f,0.5f,0.0f)); + //racoonCollider.GetCollisionShape(0).SetBoundingBox(SHVec3(0.5f, 0.5f, 0.5f)); auto racoonItemLocation = SHEntityManager::CreateEntity(); auto& racoonItemLocationTransform = *SHComponentManager::GetComponent_s(racoonItemLocation); @@ -138,15 +138,15 @@ namespace Sandbox itemTransform.SetWorldScale({ 2.0f, 2.0f, 2.0f }); itemTransform.SetWorldPosition({ 0.0f, -2.0f, -5.0f }); - itemCollider.AddBoundingBox(); - itemCollider.AddBoundingBox(SHVec3(2.0f,2.0f,2.0f)); - itemCollider.GetCollisionShape(1).SetIsTrigger(true); + //itemCollider.AddBoundingBox(); + //itemCollider.AddBoundingBox(SHVec3(2.0f,2.0f,2.0f)); + //itemCollider.GetCollisionShape(1).SetIsTrigger(true); - itemCollider.GetCollisionShape(0).SetPositionOffset(SHVec3(0.0f, 0.5f, 0.0f)); - itemCollider.GetCollisionShape(0).SetBoundingBox(SHVec3(0.5f, 0.5f, 0.5f)); + //itemCollider.GetCollisionShape(0).SetPositionOffset(SHVec3(0.0f, 0.5f, 0.0f)); + //itemCollider.GetCollisionShape(0).SetBoundingBox(SHVec3(0.5f, 0.5f, 0.5f)); - itemCollider.GetCollisionShape(1).SetPositionOffset(SHVec3(0.0f, 0.5f, 0.0f)); - itemCollider.GetCollisionShape(1).SetBoundingBox(SHVec3(1.0f, 1.0f, 1.0f)); + //itemCollider.GetCollisionShape(1).SetPositionOffset(SHVec3(0.0f, 0.5f, 0.0f)); + //itemCollider.GetCollisionShape(1).SetBoundingBox(SHVec3(1.0f, 1.0f, 1.0f)); itemRigidBody.SetInterpolate(false); itemRigidBody.SetFreezeRotationX(true); @@ -167,9 +167,9 @@ namespace Sandbox AITransform.SetWorldScale({ 2.0f, 2.0f, 2.0f }); AITransform.SetWorldPosition({ -8.0f, -2.0f, 2.5f }); - AICollider.AddBoundingBox(); - AICollider.GetCollisionShape(0).SetPositionOffset(SHVec3(0.0f, 0.5f, 0.0f)); - AICollider.GetCollisionShape(0).SetBoundingBox(SHVec3(0.5f, 0.5f, 0.5f)); + //AICollider.AddBoundingBox(); + //AICollider.GetCollisionShape(0).SetPositionOffset(SHVec3(0.0f, 0.5f, 0.0f)); + //AICollider.GetCollisionShape(0).SetBoundingBox(SHVec3(0.5f, 0.5f, 0.5f)); AIRigidBody.SetInterpolate(false); AIRigidBody.SetFreezeRotationX(true); diff --git a/SHADE_Engine/src/Camera/SHCameraArmComponent.h b/SHADE_Engine/src/Camera/SHCameraArmComponent.h index 9d8ec853..dfae1cd5 100644 --- a/SHADE_Engine/src/Camera/SHCameraArmComponent.h +++ b/SHADE_Engine/src/Camera/SHCameraArmComponent.h @@ -10,7 +10,7 @@ namespace SHADE { - class SHBox; + class SHAABB; class SHRay; class SH_API SHCameraArmComponent final: public SHComponent diff --git a/SHADE_Engine/src/Camera/SHCameraSystem.cpp b/SHADE_Engine/src/Camera/SHCameraSystem.cpp index 6feece48..4fb1d5cc 100644 --- a/SHADE_Engine/src/Camera/SHCameraSystem.cpp +++ b/SHADE_Engine/src/Camera/SHCameraSystem.cpp @@ -10,7 +10,7 @@ #include "Scene/SHSceneManager.h" #include "ECS_Base/Managers/SHSystemManager.h" #include "Editor/SHEditor.h" -#include "Math/Geometry/SHBox.h" +#include "Math/Geometry/SHAABB.h" #include "Math/SHRay.h" #include "Physics/System/SHPhysicsSystem.h" @@ -186,20 +186,20 @@ namespace SHADE //SHLOG_INFO("Ray position: {},{},{} direction:{},{},{}",pivot.ray.position.x, pivot.ray.position.y, pivot.ray.position.z,pivot.ray.direction.x, pivot.ray.direction.y, pivot.ray.direction.z) - auto result = physicsSystem->Raycast(pivot.ray ); - if (result && result.distance < pivot.GetArmLength()) - { - - SHVec3 newOffset = SHVec3{ 0.0f,0.0f, result.distance * 0.8f }; - newOffset = SHVec3::RotateX(newOffset, -(SHMath::DegreesToRadians(pivot.GetPitch()))); - newOffset = SHVec3::RotateY(newOffset, (SHMath::DegreesToRadians(pivot.GetYaw()))); - pivot.offset = newOffset; - //SHLOG_INFO("CAMERA COLLISION HIT, {}", result.distance); - } - else - { - //SHLOG_INFO("CAMERA COLLISION CANT HIT CAMERA"); - } + //auto result = physicsSystem->Raycast(pivot.ray ); + //if (result && result.distance < pivot.GetArmLength()) + //{ + // + // SHVec3 newOffset = SHVec3{ 0.0f,0.0f, result.distance * 0.8f }; + // newOffset = SHVec3::RotateX(newOffset, -(SHMath::DegreesToRadians(pivot.GetPitch()))); + // newOffset = SHVec3::RotateY(newOffset, (SHMath::DegreesToRadians(pivot.GetYaw()))); + // pivot.offset = newOffset; + // //SHLOG_INFO("CAMERA COLLISION HIT, {}", result.distance); + //} + //else + //{ + // //SHLOG_INFO("CAMERA COLLISION CANT HIT CAMERA"); + //} diff --git a/SHADE_Engine/src/ECS_Base/Managers/SHEntityManager.cpp b/SHADE_Engine/src/ECS_Base/Managers/SHEntityManager.cpp index 1c603c57..f5f08674 100644 --- a/SHADE_Engine/src/ECS_Base/Managers/SHEntityManager.cpp +++ b/SHADE_Engine/src/ECS_Base/Managers/SHEntityManager.cpp @@ -162,7 +162,7 @@ namespace SHADE //SHSceneNode* parentNode = entityVec[eIndex]->GetSceneNode()->GetParent(); - //SHSceneGraph::RemoveChild(parentNode,entityVec[eIndex].get()); + //SHSceneGraph::removeChild(parentNode,entityVec[eIndex].get()); //TODO remove from parent and recursively delete child. diff --git a/SHADE_Engine/src/Editor/EditorWindow/ColliderTagPanel/SHColliderTagPanel.cpp b/SHADE_Engine/src/Editor/EditorWindow/ColliderTagPanel/SHColliderTagPanel.cpp index 8169aa5c..f28e29c5 100644 --- a/SHADE_Engine/src/Editor/EditorWindow/ColliderTagPanel/SHColliderTagPanel.cpp +++ b/SHADE_Engine/src/Editor/EditorWindow/ColliderTagPanel/SHColliderTagPanel.cpp @@ -1,7 +1,7 @@ #include "SHpch.h" #include "SHColliderTagPanel.h" #include "ECS_Base/Managers/SHSystemManager.h" -#include "Physics/Collision/SHCollisionTagMatrix.h" +#include "Physics/Collision/CollisionTags/SHCollisionTagMatrix.h" #include "Editor/SHEditorWidgets.hpp" namespace SHADE @@ -15,7 +15,7 @@ namespace SHADE ImGui::TableNextRow(); ImGui::PushID("CollisionTagNames"); - for (int i = SHCollisionTag::NUM_LAYERS; i >= 0; --i) + for (int i = SHCollisionTag::NUM_LAYERS; i >= 1; --i) { ImGui::TableNextColumn(); if(i == SHCollisionTag::NUM_LAYERS) continue; @@ -29,7 +29,7 @@ namespace SHADE ImGui::PopID(); } ImGui::PopID(); - for (int i = 0; i < SHCollisionTag::NUM_LAYERS; ++i) + for (int i = 0; i < SHCollisionTag::NUM_LAYERS - 1; ++i) { std::string tagName = SHCollisionTagMatrix::GetTagName(i); auto tag = SHCollisionTagMatrix::GetTag(i); @@ -53,8 +53,8 @@ namespace SHADE tagName2 = std::to_string(idx); ImGui::TableNextColumn(); - //if(i == idx) - // continue; + if(i == idx) + continue; std::string label = std::format("##{} vs {}", tagName, tagName2); SHEditorWidgets::CheckBox(label, [tag, &idx]{return tag->GetLayerState(idx);}, [tag, i, idx](bool const& value){tag->SetLayerState(idx, value); SHCollisionTagMatrix::GetTag(idx)->SetLayerState(i, value);}, label.substr(2)); } diff --git a/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorComponentView.hpp b/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorComponentView.hpp index 3e1fdc44..17dfdd6a 100644 --- a/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorComponentView.hpp +++ b/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorComponentView.hpp @@ -18,10 +18,11 @@ #include "Physics/Interface/SHColliderComponent.h" #include "Reflection/SHReflectionMetadata.h" #include "Resource/SHResourceManager.h" -#include "Physics/Collision/SHCollisionTagMatrix.h" #include "Serialization/SHSerializationHelper.hpp" #include "Tools/Utilities/SHClipboardUtilities.h" #include "SHInspectorCommands.h" +#include "Physics/Collision/SHCompositeCollider.h" +#include "Physics/Collision/CollisionTags/SHCollisionTagMatrix.h" namespace SHADE { template @@ -255,31 +256,34 @@ namespace SHADE if(rbType == SHRigidBodyComponent::Type::DYNAMIC) //Dynamic only fields { - SHEditorWidgets::CheckBox("Use Gravity", [component]{return component->IsGravityEnabled();}, [component](bool const& value){component->SetGravityEnabled(value);}, "Gravity"); - //SHEditorWidgets::DragFloat("Mass", [component] {return component->GetMass(); }, [component](float const& value) {component->SetMass(value); }, "Mass"); + SHEditorWidgets::CheckBox("Use Gravity", [component]{return component->IsGravityEnabled();}, [component](bool const& value){component->SetIsGravityEnabled(value);}, "Whether Gravity is enabled for this body"); + SHEditorWidgets::DragFloat("Gravity Scale", [component] { return component->GetGravityScale(); }, [component](float const& value) { component->SetGravityScale(value); }, "Per-object Gravity Scale", 0.1f, 0.0f); + + SHEditorWidgets::CheckBox("Auto Mass", [component]{return component->GetAutoMass();}, [component](bool const& value){component->SetAutoMass(value);}, "If mass should be automatically computed. Setting mass will turn this off."); + SHEditorWidgets::DragFloat("Mass", [component] {return component->GetMass(); }, [component](float const& value) {component->SetMass(value); }, "Mass"); } if (rbType == SHRigidBodyComponent::Type::DYNAMIC || rbType == SHRigidBodyComponent::Type::KINEMATIC) //Dynamic or Kinematic only fields { - SHEditorWidgets::DragFloat("Drag", [component] {return component->GetDrag(); }, [component](float const& value) {component->SetDrag(value); }, "Drag"); - SHEditorWidgets::DragFloat("Angular Drag", [component] {return component->GetAngularDrag(); }, [component](float const& value) {component->SetAngularDrag(value); }, "Angular Drag"); + SHEditorWidgets::DragFloat("Drag", [component] {return component->GetDrag(); }, [component](float const& value) {component->SetDrag(value); }, "Drag", 0.1f, 0.0f); + SHEditorWidgets::DragFloat("Angular Drag", [component] {return component->GetAngularDrag(); }, [component](float const& value) {component->SetAngularDrag(value); }, "Angular Drag", 0.1f, 0.0f); - SHEditorWidgets::CheckBox("Interpolate", [component] {return component->IsInterpolating(); }, [component](bool const& value) {component->SetInterpolate(value); }, "Interpolate"); + SHEditorWidgets::CheckBox("Interpolate", [component] {return component->IsInterpolating(); }, [component](bool const& value) {component->SetInterpolate(value); }, "If the position between frames should be interpolated."); SHEditorWidgets::BeginPanel(std::format("{} Constraints", ICON_FA_LOCK).data(), { ImGui::GetContentRegionAvail().x, ImGui::GetContentRegionAvail().y }); SHEditorWidgets::TextLabel("Freeze Position"); ImGui::PushID("FreezePos"); - SHEditorWidgets::CheckBox("X", [component] {return component->GetFreezePositionX(); }, [component](bool const& value) {component->SetFreezePositionX(value); }, "Freeze Position - X"); ImGui::SameLine(); - SHEditorWidgets::CheckBox("Y", [component] {return component->GetFreezePositionY(); }, [component](bool const& value) {component->SetFreezePositionY(value); }, "Freeze Position - Y"); ImGui::SameLine(); - SHEditorWidgets::CheckBox("Z", [component] {return component->GetFreezePositionZ(); }, [component](bool const& value) {component->SetFreezePositionZ(value); }, "Freeze Position - Z"); + SHEditorWidgets::CheckBox("X", [component] {return component->GetFreezePositionX(); }, [component](bool const& value) {component->SetFreezePositionX(value); }, "Stops any displacement along the X-axis."); ImGui::SameLine(); + SHEditorWidgets::CheckBox("Y", [component] {return component->GetFreezePositionY(); }, [component](bool const& value) {component->SetFreezePositionY(value); }, "Stops any displacement along the Y-axis."); ImGui::SameLine(); + SHEditorWidgets::CheckBox("Z", [component] {return component->GetFreezePositionZ(); }, [component](bool const& value) {component->SetFreezePositionZ(value); }, "Stops any displacement along the Z-axis."); ImGui::PopID(); SHEditorWidgets::TextLabel("Freeze Rotation"); ImGui::PushID("FreezeRot"); - SHEditorWidgets::CheckBox("X", [component] {return component->GetFreezeRotationX(); }, [component](bool const& value) {component->SetFreezeRotationX(value); }, "Freeze Rotation - X"); ImGui::SameLine(); - SHEditorWidgets::CheckBox("Y", [component] {return component->GetFreezeRotationY(); }, [component](bool const& value) {component->SetFreezeRotationY(value); }, "Freeze Rotation - Y"); ImGui::SameLine(); - SHEditorWidgets::CheckBox("Z", [component] {return component->GetFreezeRotationZ(); }, [component](bool const& value) {component->SetFreezeRotationZ(value); }, "Freeze Rotation - Z"); + SHEditorWidgets::CheckBox("X", [component] {return component->GetFreezeRotationX(); }, [component](bool const& value) {component->SetFreezeRotationX(value); }, "Stops any rotation about the X-axis."); ImGui::SameLine(); + SHEditorWidgets::CheckBox("Y", [component] {return component->GetFreezeRotationY(); }, [component](bool const& value) {component->SetFreezeRotationY(value); }, "Stops any rotation about the Y-axis."); ImGui::SameLine(); + SHEditorWidgets::CheckBox("Z", [component] {return component->GetFreezeRotationZ(); }, [component](bool const& value) {component->SetFreezeRotationZ(value); }, "Stops any rotation about the Z-axis."); ImGui::PopID(); SHEditorWidgets::EndPanel(); @@ -288,9 +292,15 @@ namespace SHADE //Debug Info (Read-Only) if(ImGui::CollapsingHeader("Debug Information", ImGuiTreeNodeFlags_DefaultOpen))//Dynamic or Kinematic only fields { - SHEditorWidgets::DragFloat("Mass", [component] { return component->GetMass(); }, [](float value){}, "Mass", 0.1f, 0.0f, std::numeric_limits::infinity(), "%.3f", ImGuiSliderFlags_ReadOnly); SHEditorWidgets::DragVec3("Position", { "X", "Y", "Z" }, [component] {return component->GetPosition(); }, [](SHVec3 const& value) {}, false, "Position", 0.1f, "%.3f", 0.0f, 0.0f, ImGuiSliderFlags_ReadOnly); - SHEditorWidgets::DragVec3("Rotation", { "X", "Y", "Z" }, [component] {return component->GetRotation(); }, [](SHVec3 const& value) {}, false, "Rotation", 0.1f, "%.3f", 0.0f, 0.0f, ImGuiSliderFlags_ReadOnly); + SHEditorWidgets::DragVec3("Rotation", { "X", "Y", "Z" }, [component] + { + // Convert it to degrees... + auto rot = component->GetRotation(); + for (size_t i = 0; i < SHVec3::SIZE; ++i) + rot[i] = SHMath::RadiansToDegrees(rot[i]); + return rot; + }, [](SHVec3 const& value) {}, false, "Rotation", 0.1f, "%.3f", 0.0f, 0.0f, ImGuiSliderFlags_ReadOnly); if (rbType == SHRigidBodyComponent::Type::DYNAMIC || rbType == SHRigidBodyComponent::Type::KINEMATIC) //Dynamic or Kinematic only fields { SHEditorWidgets::DragVec3("Velocity", { "X", "Y", "Z" }, [component] {return component->GetLinearVelocity(); }, [](SHVec3 const& value) {}, false, "Linear Velocity", 0.1f, "%.3f", 0.0f, 0.0f, ImGuiSliderFlags_ReadOnly); @@ -300,7 +310,7 @@ namespace SHADE { SHEditorWidgets::DragVec3("Force", { "X", "Y", "Z" }, [component] {return component->GetForce(); }, [](SHVec3 const& value) {}, false, "Force", 0.1f, "%.3f", 0.0f, 0.0f, ImGuiSliderFlags_ReadOnly); SHEditorWidgets::DragVec3("Torque", { "X", "Y", "Z" }, [component] {return component->GetTorque(); }, [](SHVec3 const& value) {}, false, "Torque", 0.1f, "%.3f", 0.0f, 0.0f, ImGuiSliderFlags_ReadOnly); - SHEditorWidgets::CheckBox("Is Asleep", [component] {return component->GetIsSleeping(); }, [](bool value) {}, "If the Rigid Body is asleep"); + SHEditorWidgets::CheckBox("Is Asleep", [component] {return component->IsSleeping(); }, [](bool value) {}, "If the Rigid Body is asleep"); } } @@ -332,64 +342,67 @@ namespace SHADE { DrawContextMenu(component); - auto& colliders = component->GetCollisionShapes(); - int const size = static_cast(colliders.size()); - ImGui::BeginChild("Collision Shapes", { 0.0f, colliders.empty() ? 1.0f : 250.0f }, true); + SHEditorWidgets::CheckBox("Draw Colliders", [component] { return component->GetDebugDrawState(); }, [component](bool value) { component->SetDebugDrawState(value); }); + + auto* collisionShapes = component->GetCollisionShapes(); + int const size = collisionShapes ? static_cast(collisionShapes->size()) : 0; + ImGui::BeginChild("Collision Shapes", { 0.0f, collisionShapes->empty() ? 1.0f : 250.0f }, true); std::optional colliderToDelete{ std::nullopt }; for (int i{}; i < size; ++i) { ImGui::PushID(i); - SHCollisionShape* collider = &component->GetCollisionShape(i); + SHCollisionShape* shape = component->GetCollisionShape(i); auto cursorPos = ImGui::GetCursorPos(); - - if (collider->GetType() == SHCollisionShape::Type::BOX) + //collider->IsTrigger + if (shape->GetType() == SHCollisionShape::Type::BOX) { SHEditorWidgets::BeginPanel(std::format("{} Box #{}", ICON_FA_CUBE, i).data(), { ImGui::GetContentRegionAvail().x, ImGui::GetContentRegionAvail().y }); - const auto* BOX = reinterpret_cast(collider->GetShape()); + auto* box = reinterpret_cast(shape); SHEditorWidgets::DragVec3 ( "Half Extents", { "X", "Y", "Z" }, - [BOX] { return BOX->GetRelativeExtents(); }, - [collider](SHVec3 const& vec) { collider->SetBoundingBox(vec); }); + [box] { return box->GetRelativeExtents(); }, + [box](SHVec3 const& vec) { box->SetRelativeExtents(vec); }); } - else if (collider->GetType() == SHCollisionShape::Type::SPHERE) + else if (shape->GetType() == SHCollisionShape::Type::SPHERE) { SHEditorWidgets::BeginPanel(std::format("{} Sphere #{}", ICON_MD_CIRCLE, i).data(), { ImGui::GetContentRegionAvail().x, ImGui::GetContentRegionAvail().y }); - const auto* SPHERE = reinterpret_cast(collider->GetShape()); + auto* sphere = reinterpret_cast(shape); SHEditorWidgets::DragFloat ( "Radius", - [SPHERE] { return SPHERE->GetRelativeRadius(); }, - [collider](float const& value) { collider->SetBoundingSphere(value); }); + [sphere] { return sphere->GetRelativeRadius(); }, + [sphere](float const& value) { sphere->SetRelativeRadius(value); }); } - else if (collider->GetType() == SHCollisionShape::Type::CAPSULE) + else if (shape->GetType() == SHCollisionShape::Type::CAPSULE) { } { - SHEditorWidgets::CheckBox("Is Trigger", [collider] { return collider->IsTrigger(); }, [collider](bool value) { collider->SetIsTrigger(value); }); - SHEditorWidgets::ComboBox("Tag", collisionTagNames, [collider]{return SHCollisionTagMatrix::GetTagIndex(collider->GetCollisionTag().GetName());}, [collider](int const& value){collider->SetCollisionTag(SHCollisionTagMatrix::GetTag(value));}); + SHEditorWidgets::CheckBox("Is Trigger", [shape] { return shape->IsTrigger(); }, [shape](bool value) { shape->SetIsTrigger(value); }); + SHEditorWidgets::ComboBox("Tag", collisionTagNames, [shape]{return SHCollisionTagMatrix::GetTagIndex(shape->GetCollisionTag().GetName());}, [shape](int const& value){shape->SetCollisionTag(SHCollisionTagMatrix::GetTag(value));}); + if(ImGui::CollapsingHeader("Physics Material")) { - SHEditorWidgets::DragFloat("Friction", [collider] { return collider->GetFriction(); }, [collider](float value) { collider->SetFriction(value); }, "Friction", 0.05f, 0.0f, 1.0f); - SHEditorWidgets::DragFloat("Bounciness", [collider] { return collider->GetBounciness(); }, [collider](float value) { collider->SetBounciness(value); }, "Bounciness", 0.05f, 0.0f, 1.0f); - SHEditorWidgets::DragFloat("Mass Density", [collider] { return collider->GetDensity(); }, [collider](float value) { collider->SetDensity(value); }, "Mass Density", 0.1f, 0.0f); + SHEditorWidgets::DragFloat("Friction", [shape] { return shape->GetFriction(); }, [shape](float value) { shape->SetFriction(value); }, "Friction", 0.05f, 0.0f, 1.0f); + SHEditorWidgets::DragFloat("Bounciness", [shape] { return shape->GetBounciness(); }, [shape](float value) { shape->SetBounciness(value); }, "Bounciness", 0.05f, 0.0f, 1.0f); + SHEditorWidgets::DragFloat("Mass Density", [shape] { return shape->GetDensity(); }, [shape](float value) { shape->SetDensity(value); }, "Mass Density", 0.1f, 0.0f); } SHEditorWidgets::BeginPanel("Offsets",{ ImGui::GetContentRegionAvail().x, 30.0f }); - SHEditorWidgets::DragVec3("Position", { "X", "Y", "Z" }, [&collider] {return collider->GetPositionOffset(); }, [&collider](SHVec3 const& vec) {collider->SetPositionOffset(vec); }); + SHEditorWidgets::DragVec3("Position", { "X", "Y", "Z" }, [&shape] {return shape->GetPositionOffset(); }, [&shape](SHVec3 const& vec) {shape->SetPositionOffset(vec); }); SHEditorWidgets::DragVec3("Rotation", { "X", "Y", "Z" }, - [&collider] + [&shape] { - auto offset = collider->GetRotationOffset(); + auto offset = shape->GetRotationOffset(); return offset; }, - [&collider](SHVec3 const& vec) + [&shape](SHVec3 const& vec) { - collider->SetRotationOffset(vec); + shape->SetRotationOffset(vec); }, true); SHEditorWidgets::EndPanel(); } @@ -404,21 +417,24 @@ namespace SHADE } if (colliderToDelete.has_value()) { - component->RemoveCollider(colliderToDelete.value()); + component->GetCollider()->RemoveCollisionShape(colliderToDelete.value()); } ImGui::EndChild(); + // TODO: Handle differences between composite & hull collider if (ImGui::BeginMenu("Add Collider")) { int newColl = -1; if (ImGui::Selectable("Box Collider")) { - newColl = component->AddBoundingBox(); + auto* compositeCollider = dynamic_cast(component->GetCollider()); + compositeCollider->AddBoxCollisionShape(SHVec3::One); } if (ImGui::Selectable("Sphere Collider")) { - newColl = component->AddBoundingSphere(); + auto* compositeCollider = dynamic_cast(component->GetCollider()); + compositeCollider->AddSphereCollisionShape(1.0f); } //No idea why this doesn't work diff --git a/SHADE_Engine/src/Editor/EditorWindow/MenuBar/SHEditorMenuBar.cpp b/SHADE_Engine/src/Editor/EditorWindow/MenuBar/SHEditorMenuBar.cpp index 3fe9ceb5..c52d05e4 100644 --- a/SHADE_Engine/src/Editor/EditorWindow/MenuBar/SHEditorMenuBar.cpp +++ b/SHADE_Engine/src/Editor/EditorWindow/MenuBar/SHEditorMenuBar.cpp @@ -25,6 +25,7 @@ #include "Serialization/SHSerialization.h" #include "Serialization/Configurations/SHConfigurationManager.h" #include "Editor/EditorWindow/SHEditorWindowManager.h" +#include "Physics/System/SHPhysicsDebugDrawSystem.h" const std::string LAYOUT_FOLDER_PATH{ std::string(ASSET_ROOT) + "/Editor/Layouts" }; @@ -88,6 +89,7 @@ namespace SHADE DrawThemeMenu(); DrawLayoutMenu(); DrawApplicationConfig(); + DrawPhysicsSettings(); std::string const sceneName{std::format("Current Scene: {}",SHSceneManager::GetSceneName().data())}; auto const size = ImGui::CalcTextSize(sceneName.data()); @@ -304,4 +306,32 @@ namespace SHADE ImGui::EndMenu(); } } + + void SHEditorMenuBar::DrawPhysicsSettings() noexcept + { + if (ImGui::BeginMenu("Physics Settings")) + { + if (auto* physicsDebugDraw = SHSystemManager::GetSystem()) + { + bool drawColliders = physicsDebugDraw->GetFlagState(SHPhysicsDebugDrawSystem::DebugDrawFlags::COLLIDERS); + if (ImGui::Checkbox("Draw Colliders", &drawColliders)) + physicsDebugDraw->SetFlagState(SHPhysicsDebugDrawSystem::DebugDrawFlags::COLLIDERS, drawColliders); + + bool drawContactPoints = physicsDebugDraw->GetFlagState(SHPhysicsDebugDrawSystem::DebugDrawFlags::CONTACTS); + if (ImGui::Checkbox("Draw Contact Points", &drawContactPoints)) + physicsDebugDraw->SetFlagState(SHPhysicsDebugDrawSystem::DebugDrawFlags::CONTACTS, drawContactPoints); + + bool drawRays = physicsDebugDraw->GetFlagState(SHPhysicsDebugDrawSystem::DebugDrawFlags::RAYCASTS); + if (ImGui::Checkbox("Draw Rays", &drawRays)) + physicsDebugDraw->SetFlagState(SHPhysicsDebugDrawSystem::DebugDrawFlags::RAYCASTS, drawRays); + + bool drawBroadphase = physicsDebugDraw->GetFlagState(SHPhysicsDebugDrawSystem::DebugDrawFlags::BROADPHASE); + if (ImGui::Checkbox("Draw Broadphase", &drawBroadphase)) + physicsDebugDraw->SetFlagState(SHPhysicsDebugDrawSystem::DebugDrawFlags::BROADPHASE, drawBroadphase); + } + + ImGui::EndMenu(); + } + } + }//namespace SHADE diff --git a/SHADE_Engine/src/Editor/EditorWindow/MenuBar/SHEditorMenuBar.h b/SHADE_Engine/src/Editor/EditorWindow/MenuBar/SHEditorMenuBar.h index 77ebcf55..4891dc5b 100644 --- a/SHADE_Engine/src/Editor/EditorWindow/MenuBar/SHEditorMenuBar.h +++ b/SHADE_Engine/src/Editor/EditorWindow/MenuBar/SHEditorMenuBar.h @@ -25,6 +25,7 @@ namespace SHADE void DrawThemeMenu() noexcept; void DrawLayoutMenu() noexcept; void DrawApplicationConfig() noexcept; + void DrawPhysicsSettings() noexcept; float menuBarHeight = 20.0f; std::vector layoutPaths; diff --git a/SHADE_Engine/src/Events/SHEventDefines.h b/SHADE_Engine/src/Events/SHEventDefines.h index c090cd69..ca29d416 100644 --- a/SHADE_Engine/src/Events/SHEventDefines.h +++ b/SHADE_Engine/src/Events/SHEventDefines.h @@ -24,4 +24,6 @@ constexpr SHEventIdentifier SH_SCENE_EXIT_PRE { 15 }; constexpr SHEventIdentifier SH_SCENE_EXIT_POST { 16 }; constexpr SHEventIdentifier SH_GRAPHICS_LIGHT_ENABLE_SHADOW_EVENT { 17 }; constexpr SHEventIdentifier SH_BUTTON_CLICK_EVENT { 18 }; +constexpr SHEventIdentifier SH_PHYSICS_COLLIDER_DRAW_EVENT { 19 }; + diff --git a/SHADE_Engine/src/Math/Geometry/SHBox.cpp b/SHADE_Engine/src/Math/Geometry/SHAABB.cpp similarity index 60% rename from SHADE_Engine/src/Math/Geometry/SHBox.cpp rename to SHADE_Engine/src/Math/Geometry/SHAABB.cpp index 7261749b..f5d9fd60 100644 --- a/SHADE_Engine/src/Math/Geometry/SHBox.cpp +++ b/SHADE_Engine/src/Math/Geometry/SHAABB.cpp @@ -1,5 +1,5 @@ /**************************************************************************************** - * \file SHBox.cpp + * \file SHAABB.cpp * \author Diren D Bharwani, diren.dbharwani, 390002520 * \brief Implementation for a 3-Dimensional Axis Aligned Bounding Box * @@ -11,7 +11,7 @@ #include // Primary Header -#include "SHBox.h" +#include "SHAABB.h" // Project Headers #include "Math/SHMathHelpers.h" #include "Math/SHRay.h" @@ -24,75 +24,52 @@ namespace SHADE /* Constructors & Destructor Definitions */ /*-----------------------------------------------------------------------------------*/ - SHBox::SHBox() noexcept - : RelativeExtents { SHVec3::One } + SHAABB::SHAABB() noexcept { - type = Type::BOX; + Extents = SHVec3::One * 0.5f; } - SHBox::SHBox(const SHVec3& c, const SHVec3& hE) noexcept - : RelativeExtents { SHVec3::One } + SHAABB::SHAABB(const SHVec3& c, const SHVec3& hE) noexcept { - type = Type::BOX; - - Center = c; + Center = c; Extents = hE; } - SHBox::SHBox(const SHBox& rhs) noexcept + SHAABB::SHAABB(const SHAABB& rhs) noexcept { if (this == &rhs) return; - type = Type::BOX; - - Center = rhs.Center; - Extents = rhs.Extents; - RelativeExtents = rhs.RelativeExtents; + Center = rhs.Center; + Extents = rhs.Extents; } - SHBox::SHBox(SHBox&& rhs) noexcept + SHAABB::SHAABB(SHAABB&& rhs) noexcept { - type = Type::BOX; - - Center = rhs.Center; - Extents = rhs.Extents; - RelativeExtents = rhs.RelativeExtents; + Center = rhs.Center; + Extents = rhs.Extents; } /*-----------------------------------------------------------------------------------*/ /* Operator Overload Definitions */ /*-----------------------------------------------------------------------------------*/ - SHBox& SHBox::operator=(const SHBox& rhs) noexcept + SHAABB& SHAABB::operator=(const SHAABB& rhs) noexcept { - if (rhs.type != Type::BOX) + if (this != &rhs) { - SHLOG_WARNING("Cannot assign a non-bounding box to a bounding box!") - } - else if (this != &rhs) - { - Center = rhs.Center; - Extents = rhs.Extents; - RelativeExtents = rhs.RelativeExtents; + Center = rhs.Center; + Extents = rhs.Extents; } return *this; } - SHBox& SHBox::operator=(SHBox&& rhs) noexcept + SHAABB& SHAABB::operator=(SHAABB&& rhs) noexcept { - if (rhs.type != Type::BOX) - { - SHLOG_WARNING("Cannot assign a non-bounding box to a bounding box!") - } - else - { - Center = rhs.Center; - Extents = rhs.Extents; - RelativeExtents = rhs.RelativeExtents; - } + Center = rhs.Center; + Extents = rhs.Extents; return *this; } @@ -101,27 +78,22 @@ namespace SHADE /* Getter Function Definitions */ /*-----------------------------------------------------------------------------------*/ - SHVec3 SHBox::GetCenter() const noexcept + SHVec3 SHAABB::GetCenter() const noexcept { return Center; } - SHVec3 SHBox::GetWorldExtents() const noexcept + SHVec3 SHAABB::GetExtents() const noexcept { return Extents; } - const SHVec3& SHBox::GetRelativeExtents() const noexcept - { - return RelativeExtents; - } - - SHVec3 SHBox::GetMin() const noexcept + SHVec3 SHAABB::GetMin() const noexcept { return SHVec3{ Center.x - Extents.x, Center.y - Extents.y, Center.z - Extents.z }; } - SHVec3 SHBox::GetMax() const noexcept + SHVec3 SHAABB::GetMax() const noexcept { return SHVec3{ Center.x + Extents.x, Center.y + Extents.y, Center.z + Extents.z }; } @@ -130,22 +102,17 @@ namespace SHADE /* Setter Function Definitions */ /*-----------------------------------------------------------------------------------*/ - void SHBox::SetCenter(const SHVec3& newCenter) noexcept + void SHAABB::SetCenter(const SHVec3& newCenter) noexcept { Center = newCenter; } - void SHBox::SetWorldExtents(const SHVec3& newWorldExtents) noexcept + void SHAABB::SetExtents(const SHVec3& newHalfExtents) noexcept { - Extents = newWorldExtents; + Extents = newHalfExtents; } - void SHBox::SetRelativeExtents(const SHVec3& newRelativeExtents) noexcept - { - RelativeExtents = newRelativeExtents; - } - - void SHBox::SetMin(const SHVec3& min) noexcept + void SHAABB::SetMin(const SHVec3& min) noexcept { const SHVec3 MAX = GetMax(); @@ -153,7 +120,7 @@ namespace SHADE Extents = SHVec3::Abs((MAX - min) * 0.5f); } - void SHBox::SetMax(const SHVec3& max) noexcept + void SHAABB::SetMax(const SHVec3& max) noexcept { const SHVec3 MIN = GetMin(); @@ -161,13 +128,13 @@ namespace SHADE Extents = SHVec3::Abs((max - MIN) * 0.5f); } - void SHBox::SetMinMax(const SHVec3& min, const SHVec3& max) noexcept + void SHAABB::SetMinMax(const SHVec3& min, const SHVec3& max) noexcept { Center = SHVec3::Lerp(min, max, 0.5f); Extents = SHVec3::Abs((max - min) * 0.5f); } - std::vector SHBox::GetVertices() const noexcept + std::vector SHAABB::GetVertices() const noexcept { std::vector vertices{ 8 }; GetCorners(vertices.data()); @@ -178,12 +145,12 @@ namespace SHADE /* Public Function Member Definitions */ /*-----------------------------------------------------------------------------------*/ - bool SHBox::TestPoint(const SHVec3& point) const noexcept + bool SHAABB::TestPoint(const SHVec3& point) const noexcept { return BoundingBox::Contains(point); } - SHRaycastResult SHBox::Raycast(const SHRay& ray) const noexcept + SHRaycastResult SHAABB::Raycast(const SHRay& ray) const noexcept { SHRaycastResult result; @@ -192,22 +159,24 @@ namespace SHADE { result.position = ray.position + ray.direction * result.distance; result.angle = SHVec3::Angle(ray.position, result.position); + + // TODO: Compute normal } return result; } - bool SHBox::Contains(const SHBox& rhs) const noexcept + bool SHAABB::Contains(const SHAABB& rhs) const noexcept { - return BoundingBox::Contains(rhs); + return BoundingBox::Contains(rhs) == CONTAINS; } - float SHBox::Volume() const noexcept + float SHAABB::Volume() const noexcept { return 8.0f * (Extents.x * Extents.y * Extents.z); } - float SHBox::SurfaceArea() const noexcept + float SHAABB::SurfaceArea() const noexcept { return 8.0f * ((Extents.x * Extents.y) + (Extents.x * Extents.z) @@ -218,21 +187,21 @@ namespace SHADE /* Static Function Member Definitions */ /*-----------------------------------------------------------------------------------*/ - SHBox SHBox::Combine(const SHBox& lhs, const SHBox& rhs) noexcept + SHAABB SHAABB::Combine(const SHAABB& lhs, const SHAABB& rhs) noexcept { - SHBox result; + SHAABB result; CreateMerged(result, lhs, rhs); return result; } - bool SHBox::Intersect(const SHBox& lhs, const SHBox& rhs) noexcept + bool SHAABB::Intersect(const SHAABB& lhs, const SHAABB& rhs) noexcept { return lhs.Intersects(rhs); } - SHBox SHBox::BuildFromBoxes(const SHBox* boxes, size_t numBoxes) noexcept + SHAABB SHAABB::BuildFromBoxes(const SHAABB* boxes, size_t numBoxes) noexcept { - SHBox result; + SHAABB result; for (size_t i = 1; i < numBoxes; ++i) CreateMerged(result, boxes[i - 1], boxes[i]); @@ -240,9 +209,9 @@ namespace SHADE return result; } - SHBox SHBox::BuildFromVertices(const SHVec3* vertices, size_t numVertices, size_t stride) noexcept + SHAABB SHAABB::BuildFromVertices(const SHVec3* vertices, size_t numVertices, size_t stride) noexcept { - SHBox result; + SHAABB result; CreateFromPoints(result, numVertices, vertices, stride); return result; } diff --git a/SHADE_Engine/src/Math/Geometry/SHAABB.h b/SHADE_Engine/src/Math/Geometry/SHAABB.h new file mode 100644 index 00000000..9b62c85b --- /dev/null +++ b/SHADE_Engine/src/Math/Geometry/SHAABB.h @@ -0,0 +1,173 @@ +/**************************************************************************************** + * \file SHAABB.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for a 3-Dimensional Axis Aligned Bounding Box + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +#include + +// Project Headers +#include "Math/SHRay.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + + /** + * @brief + * Encapsulates a 3D Axis-Aligned Bounding Box. + */ + class SH_API SHAABB : private DirectX::BoundingBox + { + public: + /*---------------------------------------------------------------------------------*/ + /* Static Data Members */ + /*---------------------------------------------------------------------------------*/ + + static constexpr size_t NUM_VERTICES = 8; + + /*---------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*---------------------------------------------------------------------------------*/ + + ~SHAABB () noexcept = default; + + SHAABB () noexcept; + SHAABB (const SHVec3& center, const SHVec3& halfExtents) noexcept; + SHAABB (const SHAABB& rhs) noexcept; + SHAABB (SHAABB&& rhs) noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*---------------------------------------------------------------------------------*/ + + SHAABB& operator= (const SHAABB& rhs) noexcept; + SHAABB& operator= (SHAABB&& rhs) noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Getter Functions */ + /*---------------------------------------------------------------------------------*/ + + [[nodiscard]] SHVec3 GetCenter () const noexcept; + [[nodiscard]] SHVec3 GetExtents () const noexcept; + [[nodiscard]] SHVec3 GetMin () const noexcept; + [[nodiscard]] SHVec3 GetMax () const noexcept; + [[nodiscard]] std::vector GetVertices () const noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Setter Functions */ + /*---------------------------------------------------------------------------------*/ + + void SetCenter (const SHVec3& newCenter) noexcept; + void SetExtents (const SHVec3& newHalfExtents) noexcept; + void SetMin (const SHVec3& min) noexcept; + void SetMax (const SHVec3& max) noexcept; + void SetMinMax (const SHVec3& min, const SHVec3& max) noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Member Functions */ + /*---------------------------------------------------------------------------------*/ + + /** + * @brief + * Checks if a point is inside the aabb. + * @param point + * The point to check. + * @return + * True if the point is inside the aabb. + */ + [[nodiscard]] bool TestPoint (const SHVec3& point) const noexcept; + + /** + * @brief + * Casts a ray against the aabb. + * @param ray + * The ray to cast. + * @return + * The result of the raycast.
+ * See the corresponding header for the contents of the raycast result object. + */ + [[nodiscard]] SHRaycastResult Raycast (const SHRay& ray) const noexcept; + + /** + * @brief + * Checks if an entire other aabb is contained by this aabb. + * @param rhs + * The aabb to check. + * @return + * True if the other sphere is completely contained by this aabb. + */ + [[nodiscard]] bool Contains (const SHAABB& rhs) const noexcept; + + /** + * @brief + * Calculates the volume of the aabb. + */ + [[nodiscard]] float Volume () const noexcept; + + /** + * @brief + * Calculates the surface area of the aabb. + */ + [[nodiscard]] float SurfaceArea () const noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Static Member Functions */ + /*---------------------------------------------------------------------------------*/ + + /** + * @brief + * Combines two aabbs to form a larger aabb. + * If one aabb is completely contained by the other, the result is the larger aabb. + * @return + * The combined aabb. + */ + [[nodiscard]] static SHAABB Combine (const SHAABB& lhs, const SHAABB& rhs) noexcept; + + /** + * @brief + * Checks if two aabbs are intersecting. + * @return + * True if they are intersecting. + */ + [[nodiscard]] static bool Intersect (const SHAABB& lhs, const SHAABB& rhs) noexcept; + + /** + * @brief + * Builds a single aabb from multiple aabbs. + * @param spheres + * The set of aabbs to build from. + * @param numSpheres + * The number of aabbs in the set to build from. + * @return + * An aabb that contains all the spheres in the set. + */ + [[nodiscard]] static SHAABB BuildFromBoxes (const SHAABB* boxes, size_t numBoxes) noexcept; + + /** + * @brief + * Builds a aabb from a set of vertices. + * @param vertices + * The vertices to build a aabb from. + * @param numVertices + * The number of vertices in the set to build from. + * @param stride + * The stride between each vertex, in the instance there is data in between each + * vertex that does not define the geometry of the object. + * @return + * An aabb that contains all the vertices in the set. + */ + [[nodiscard]] static SHAABB BuildFromVertices (const SHVec3* vertices, size_t numVertices, size_t stride = 0) noexcept; + }; + + +} // namespace SHADE + diff --git a/SHADE_Engine/src/Math/Geometry/SHBox.h b/SHADE_Engine/src/Math/Geometry/SHBox.h deleted file mode 100644 index a0ca9458..00000000 --- a/SHADE_Engine/src/Math/Geometry/SHBox.h +++ /dev/null @@ -1,105 +0,0 @@ -/**************************************************************************************** - * \file SHBox.h - * \author Diren D Bharwani, diren.dbharwani, 390002520 - * \brief Interface for a 3-Dimensional Axis Aligned Bounding Box - * - * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or - * disclosure of this file or its contents without the prior written consent - * of DigiPen Institute of Technology is prohibited. -****************************************************************************************/ - -#pragma once - -#include - -// Project Headers -#include "SHShape.h" -#include "SH_API.h" - -namespace SHADE -{ - /*-----------------------------------------------------------------------------------*/ - /* Type Definitions */ - /*-----------------------------------------------------------------------------------*/ - - class SH_API SHBox : public SHShape, - private DirectX::BoundingBox - { - public: - /*---------------------------------------------------------------------------------*/ - /* Static Data Members */ - /*---------------------------------------------------------------------------------*/ - - static constexpr size_t NUM_VERTICES = 8; - - /*---------------------------------------------------------------------------------*/ - /* Constructors & Destructor */ - /*---------------------------------------------------------------------------------*/ - - ~SHBox () override = default; - - SHBox () noexcept; - SHBox (const SHVec3& center, const SHVec3& halfExtents) noexcept; - SHBox (const SHBox& rhs) noexcept; - SHBox (SHBox&& rhs) noexcept; - - /*---------------------------------------------------------------------------------*/ - /* Operator Overloads */ - /*---------------------------------------------------------------------------------*/ - - SHBox& operator= (const SHBox& rhs) noexcept; - SHBox& operator= (SHBox&& rhs) noexcept; - - /*---------------------------------------------------------------------------------*/ - /* Getter Functions */ - /*---------------------------------------------------------------------------------*/ - - [[nodiscard]] SHVec3 GetCenter () const noexcept; - [[nodiscard]] SHVec3 GetWorldExtents () const noexcept; - [[nodiscard]] const SHVec3& GetRelativeExtents () const noexcept; - [[nodiscard]] SHVec3 GetMin () const noexcept; - [[nodiscard]] SHVec3 GetMax () const noexcept; - [[nodiscard]] std::vector GetVertices () const noexcept; - - /*---------------------------------------------------------------------------------*/ - /* Setter Functions */ - /*---------------------------------------------------------------------------------*/ - - void SetCenter (const SHVec3& newCenter) noexcept; - void SetWorldExtents (const SHVec3& newWorldExtents) noexcept; - void SetRelativeExtents (const SHVec3& newRelativeExtents) noexcept; - void SetMin (const SHVec3& min) noexcept; - void SetMax (const SHVec3& max) noexcept; - void SetMinMax (const SHVec3& min, const SHVec3& max) noexcept; - - /*---------------------------------------------------------------------------------*/ - /* Function Members */ - /*---------------------------------------------------------------------------------*/ - - [[nodiscard]] bool TestPoint (const SHVec3& point) const noexcept override; - [[nodiscard]] SHRaycastResult Raycast(const SHRay& ray) const noexcept override; - - [[nodiscard]] bool Contains (const SHBox& rhs) const noexcept; - [[nodiscard]] float Volume () const noexcept; - [[nodiscard]] float SurfaceArea () const noexcept; - - /*---------------------------------------------------------------------------------*/ - /* Static Function Members */ - /*---------------------------------------------------------------------------------*/ - - [[nodiscard]] static SHBox Combine (const SHBox& lhs, const SHBox& rhs) noexcept; - [[nodiscard]] static bool Intersect (const SHBox& lhs, const SHBox& rhs) noexcept; - [[nodiscard]] static SHBox BuildFromBoxes (const SHBox* boxes, size_t numBoxes) noexcept; - [[nodiscard]] static SHBox BuildFromVertices (const SHVec3* vertices, size_t numVertices, size_t stride = 0) noexcept; - - private: - /*---------------------------------------------------------------------------------*/ - /* Data Members */ - /*---------------------------------------------------------------------------------*/ - - SHVec3 RelativeExtents; - }; - - -} // namespace SHADE - diff --git a/SHADE_Engine/src/Math/Geometry/SHPlane.cpp b/SHADE_Engine/src/Math/Geometry/SHPlane.cpp new file mode 100644 index 00000000..1ffbfaba --- /dev/null +++ b/SHADE_Engine/src/Math/Geometry/SHPlane.cpp @@ -0,0 +1,141 @@ +/**************************************************************************************** + * \file SHPlane.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for a plane. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +#include + +// Primary Header +#include "SHPlane.h" + +#include "Input/SHInputManager.h" +#include "Math/SHMathHelpers.h" + +using namespace DirectX; + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHPlane::SHPlane() noexcept + : planeEquation { SHVec3::One } + { + planeEquation.w = 0.0f; + } + + SHPlane::SHPlane(const SHVec3& point, const SHVec3& normal) noexcept + { + XMStoreFloat4(&planeEquation, XMPlaneFromPointNormal(point, normal)); + } + + SHPlane::SHPlane(float a, float b, float c, float d) noexcept + : planeEquation { a, b, c, d } + {} + + SHPlane::SHPlane(const SHVec3& normal, float distance) noexcept + : planeEquation { normal } + { + planeEquation.w = distance; + } + + /*-----------------------------------------------------------------------------------*/ + /* Operator Overload Definitions */ + /*-----------------------------------------------------------------------------------*/ + + bool SHPlane::operator==(const SHPlane& rhs) const noexcept + { + return XMPlaneEqual(planeEquation, rhs.planeEquation); + } + + bool SHPlane::operator!=(const SHPlane& rhs) const noexcept + { + return XMPlaneNotEqual(planeEquation, rhs.planeEquation); + } + + /*-----------------------------------------------------------------------------------*/ + /* Getter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHVec3 SHPlane::GetNormal() const noexcept + { + return SHVec3{ planeEquation.x, planeEquation.y, planeEquation.z }; + } + + float SHPlane::GetDistance() const noexcept + { + return planeEquation.w; + } + + /*-----------------------------------------------------------------------------------*/ + /* Setter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHPlane::SetNormal(const SHVec3& normal) noexcept + { + planeEquation.x = normal.x; + planeEquation.y = normal.y; + planeEquation.z = normal.z; + } + + void SHPlane::SetDistance(float distance) noexcept + { + planeEquation.w = distance; + } + + /*-----------------------------------------------------------------------------------*/ + /* Public Function Member Definitions */ + /*-----------------------------------------------------------------------------------*/ + + bool SHPlane::TestPoint(const SHVec3& point) const noexcept + { + const float DISTANCE = SignedDistance(point); + return SHMath::CompareFloat(DISTANCE, 0.0f); + } + + SHRaycastResult SHPlane::Raycast(const SHRay& ray) const noexcept + { + SHRaycastResult result; + + const SHVec3 N = GetNormal(); + + // Check if ray is parallel to plane + const float N_DOT_D = N.Dot(ray.direction); + if (SHMath::CompareFloat(N_DOT_D, 0.0f)) + { + result.hit = false; + return result; + } + + const float DIST = (planeEquation.w - N.Dot(ray.position)) / N_DOT_D; + if (DIST < 0.0f || !SHMath::CompareFloat(DIST, 0.0f)) + { + result.hit = false; + return result; + } + + result.hit = true; + result.distance = DIST; + result.position = ray.position + ray.direction * DIST; + result.angle = SHVec3::Angle(ray.position, result.position); + + // The normal is either the plane's normal or the reverse if the ray came from below + result.normal = N_DOT_D < 0.0f ? -N : N; + + return result; + } + + float SHPlane::SignedDistance(const SHVec3& point) const noexcept + { + return XMVectorGetX(XMPlaneDotCoord(planeEquation, point)); + } + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Math/Geometry/SHPlane.h b/SHADE_Engine/src/Math/Geometry/SHPlane.h new file mode 100644 index 00000000..6593c627 --- /dev/null +++ b/SHADE_Engine/src/Math/Geometry/SHPlane.h @@ -0,0 +1,121 @@ +/**************************************************************************************** + * \file SHPlane.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for a plane. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +// Project Headers +#include "Math/SHRay.h" +#include "Math/Vector/SHVec4.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + + /** + * @brief + * Encapsulates a 3D plane in point-normal form. + */ + class SH_API SHPlane + { + public: + /*---------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*---------------------------------------------------------------------------------*/ + + ~SHPlane () noexcept = default; + SHPlane (const SHPlane& rhs) noexcept = default; + SHPlane (SHPlane&& rhs) noexcept = default; + + SHPlane () noexcept; + SHPlane (const SHVec3& point, const SHVec3& normal) noexcept; + SHPlane (float a, float b, float c, float d) noexcept; + SHPlane (const SHVec3& normal, float distance) noexcept; + + + /*---------------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*---------------------------------------------------------------------------------*/ + + SHPlane& operator= (const SHPlane& rhs) noexcept = default; + SHPlane& operator= (SHPlane&& rhs) noexcept = default; + + bool operator== (const SHPlane& rhs) const noexcept; + bool operator!= (const SHPlane& rhs) const noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Getter Functions */ + /*---------------------------------------------------------------------------------*/ + + [[nodiscard]] SHVec3 GetNormal () const noexcept; + [[nodiscard]] float GetDistance () const noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Setter Functions */ + /*---------------------------------------------------------------------------------*/ + + void SetNormal (const SHVec3& normal) noexcept; + void SetDistance (float distance) noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Member Functions */ + /*---------------------------------------------------------------------------------*/ + + /** + * @brief + * Checks if a point is on the plane. + * @param point + * The point to check. + * @return + * True if the point is on the plane. + */ + [[nodiscard]] bool TestPoint (const SHVec3& point) const noexcept; + + /** + * @brief + * Casts a ray against the plane. + * @param ray + * The ray to cast. + * @return + * The result of the raycast.
+ * See the corresponding header for the contents of the raycast result object. + */ + [[nodiscard]] SHRaycastResult Raycast (const SHRay& ray) const noexcept; + + /** + * @brief + * Gets the signed distance from a point to the plane. + * @param point + * The point to check. + * @return + * The signed distance of the point to a plane.
+ * If the signed distance is negative, the point is behind the plane.
+ * If the signed distance is zero, the point is on the plane.
+ * If the signed distance is positive, the point is in front of the plane.
+ */ + [[nodiscard]] float SignedDistance (const SHVec3& point) const noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Static Member Functions */ + /*---------------------------------------------------------------------------------*/ + + /* + * TODO: + * Transform plane + * Intersection Tests + */ + + private: + + SHVec4 planeEquation; + }; + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Math/Geometry/SHSphere.cpp b/SHADE_Engine/src/Math/Geometry/SHSphere.cpp deleted file mode 100644 index 54935251..00000000 --- a/SHADE_Engine/src/Math/Geometry/SHSphere.cpp +++ /dev/null @@ -1,208 +0,0 @@ -/**************************************************************************************** - * \file SHBoundingSphere.cpp - * \author Diren D Bharwani, diren.dbharwani, 390002520 - * \brief Implementation for a Bounding Sphere - * - * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or - * disclosure of this file or its contents without the prior written consent - * of DigiPen Institute of Technology is prohibited. -****************************************************************************************/ - -#include - -// Primary Header -#include "SHSphere.h" -// Project Headers -#include "Math/SHMathHelpers.h" -#include "Math/SHRay.h" - -using namespace DirectX; - -namespace SHADE -{ - /*-----------------------------------------------------------------------------------*/ - /* Constructors & Destructor Definitions */ - /*-----------------------------------------------------------------------------------*/ - - SHSphere::SHSphere() noexcept - : RelativeRadius { 1.0f } - { - type = Type::SPHERE; - } - - SHSphere::SHSphere(const SHVec3& center, float radius) noexcept - : RelativeRadius { 1.0f } - { - type = Type::SPHERE; - - Center = center; - Radius = radius; - } - - SHSphere::SHSphere(const SHSphere& rhs) noexcept - { - if (this == &rhs) - return; - - type = Type::SPHERE; - - Center = rhs.Center; - Radius = rhs.Radius; - RelativeRadius = rhs.RelativeRadius; - } - - SHSphere::SHSphere(SHSphere&& rhs) noexcept - { - type = Type::SPHERE; - - Center = rhs.Center; - Radius = rhs.Radius; - RelativeRadius = rhs.RelativeRadius; - } - - /*-----------------------------------------------------------------------------------*/ - /* Operator Overload Definitions */ - /*-----------------------------------------------------------------------------------*/ - - SHSphere& SHSphere::operator=(const SHSphere& rhs) noexcept - { - if (rhs.type != Type::SPHERE) - { - SHLOG_WARNING("Cannot assign a non-sphere to a sphere!") - } - else if (this != &rhs) - { - Center = rhs.Center; - Radius = rhs.Radius; - RelativeRadius = rhs.RelativeRadius; - } - - return *this; - } - - SHSphere& SHSphere::operator=(SHSphere&& rhs) noexcept - { - if (rhs.type != Type::SPHERE) - { - SHLOG_WARNING("Cannot assign a non-sphere to a sphere!") - } - else - { - Center = rhs.Center; - Radius = rhs.Radius; - RelativeRadius = rhs.RelativeRadius; - } - - return *this; - } - - /*-----------------------------------------------------------------------------------*/ - /* Getter Function Definitions */ - /*-----------------------------------------------------------------------------------*/ - - SHVec3 SHSphere::GetCenter() const noexcept - { - return Center; - } - - float SHSphere::GetWorldRadius() const noexcept - { - return Radius; - } - - float SHSphere::GetRelativeRadius() const noexcept - { - return RelativeRadius; - } - - /*-----------------------------------------------------------------------------------*/ - /* Setter Function Definitions */ - /*-----------------------------------------------------------------------------------*/ - - void SHSphere::SetCenter(const SHVec3& center) noexcept - { - Center = center; - } - - void SHSphere::SetWorldRadius(float newWorldRadius) noexcept - { - Radius = newWorldRadius; - } - - void SHSphere::SetRelativeRadius(float newRelativeRadius) noexcept - { - RelativeRadius = newRelativeRadius; - } - - /*-----------------------------------------------------------------------------------*/ - /* Public Function Member Definitions */ - /*-----------------------------------------------------------------------------------*/ - - bool SHSphere::TestPoint(const SHVec3& point) const noexcept - { - return BoundingSphere::Contains(point); - } - - SHRaycastResult SHSphere::Raycast(const SHRay& ray) const noexcept - { - SHRaycastResult result; - - result.hit = Intersects(ray.position, ray.direction, result.distance); - if (result.hit) - { - result.position = ray.position + ray.direction * result.distance; - result.angle = SHVec3::Angle(ray.position, result.position); - } - - return result; - } - - bool SHSphere::Contains(const SHSphere& rhs) const noexcept - { - return BoundingSphere::Contains(rhs); - } - - float SHSphere::Volume() const noexcept - { - return (4.0f / 3.0f) * SHMath::PI * (Radius * Radius * Radius); - } - - float SHSphere::SurfaceArea() const noexcept - { - return 4.0f * SHMath::PI * (Radius * Radius); - } - - /*-----------------------------------------------------------------------------------*/ - /* Static Function Member Definitions */ - /*-----------------------------------------------------------------------------------*/ - - SHSphere SHSphere::Combine(const SHSphere& lhs, const SHSphere& rhs) noexcept - { - SHSphere result; - CreateMerged(result, lhs, rhs); - return result; - } - - bool SHSphere::Intersect(const SHSphere& lhs, const SHSphere& rhs) noexcept - { - return lhs.Intersects(rhs); - } - - SHSphere SHSphere::BuildFromSpheres(const SHSphere* spheres, size_t numSpheres) noexcept - { - SHSphere result; - - for (size_t i = 1; i < numSpheres; ++i) - CreateMerged(result, spheres[i - 1], spheres[i]); - - return result; - } - - SHSphere SHSphere::BuildFromVertices(const SHVec3* vertices, size_t numVertices, size_t stride) noexcept - { - SHSphere result; - CreateFromPoints(result, numVertices, vertices, stride); - return result; - } - -} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Math/SHColour.cpp b/SHADE_Engine/src/Math/SHColour.cpp index fc2f2a08..7c372376 100644 --- a/SHADE_Engine/src/Math/SHColour.cpp +++ b/SHADE_Engine/src/Math/SHColour.cpp @@ -260,6 +260,8 @@ namespace SHADE case 1: return y; case 2: return z; case 3: return w; + // This will never hit + default: return x; } } @@ -274,6 +276,8 @@ namespace SHADE case 1: return y; case 2: return z; case 3: return w; + // This will never hit + default: return x; } } @@ -288,6 +292,8 @@ namespace SHADE case 1: return y; case 2: return z; case 3: return w; + // This will never hit + default: return x; } } @@ -302,6 +308,8 @@ namespace SHADE case 1: return y; case 2: return z; case 3: return w; + // This will never hit + default: return x; } } diff --git a/SHADE_Engine/src/Math/SHMathHelpers.h b/SHADE_Engine/src/Math/SHMathHelpers.h index 427011a6..1d65eb91 100644 --- a/SHADE_Engine/src/Math/SHMathHelpers.h +++ b/SHADE_Engine/src/Math/SHMathHelpers.h @@ -46,14 +46,16 @@ namespace SHADE /*---------------------------------------------------------------------------------*/ /** Standard Epsilon value for comparing Single-Precision Floating-Point values. */ - static constexpr float EPSILON = 0.001f; + static constexpr float EPSILON = 0.0001f; /** Single-Precision Floating-Point value of infinity */ - static constexpr float INF = std::numeric_limits::infinity(); + static constexpr float INF = std::numeric_limits::infinity(); - static constexpr float PI = std::numbers::pi_v; - static constexpr float HALF_PI = PI * 0.5f; - static constexpr float TWO_PI = 2.0f * PI; + static constexpr float PI = std::numbers::pi_v; + static constexpr float HALF_PI = PI * 0.5f; + static constexpr float TWO_PI = 2.0f * PI; + + static constexpr float EULER_CONSTANT = std::numbers::egamma_v; /*---------------------------------------------------------------------------------*/ /* Static Function Members */ diff --git a/SHADE_Engine/src/Math/SHMatrix.cpp b/SHADE_Engine/src/Math/SHMatrix.cpp index 3d450a88..2cbd5ef6 100644 --- a/SHADE_Engine/src/Math/SHMatrix.cpp +++ b/SHADE_Engine/src/Math/SHMatrix.cpp @@ -34,6 +34,14 @@ namespace SHADE 0.0f, 0.0f, 0.0f, 1.0f }; + const SHMatrix SHMatrix::Zero + { + SHVec4::Zero + , SHVec4::Zero + , SHVec4::Zero + , SHVec4::Zero + }; + /*-----------------------------------------------------------------------------------*/ /* Constructors & Destructor Definitions */ /*-----------------------------------------------------------------------------------*/ diff --git a/SHADE_Engine/src/Math/SHMatrix.h b/SHADE_Engine/src/Math/SHMatrix.h index 6af8fdc9..ffd8ce89 100644 --- a/SHADE_Engine/src/Math/SHMatrix.h +++ b/SHADE_Engine/src/Math/SHMatrix.h @@ -45,6 +45,7 @@ namespace SHADE static constexpr size_t NUM_COLS = 4U; static const SHMatrix Identity; + static const SHMatrix Zero; /*---------------------------------------------------------------------------------*/ /* Constructors & Destructor */ diff --git a/SHADE_Engine/src/Math/SHQuaternion.cpp b/SHADE_Engine/src/Math/SHQuaternion.cpp index 1fa4e246..1bf51b28 100644 --- a/SHADE_Engine/src/Math/SHQuaternion.cpp +++ b/SHADE_Engine/src/Math/SHQuaternion.cpp @@ -40,18 +40,12 @@ namespace SHADE : XMFLOAT4( vec4.x, vec4.y, vec4.z, vec4.w ) {} - SHQuaternion::SHQuaternion(float _x, float _y, float _z, float _w) noexcept - : XMFLOAT4( _x, _y, _z, _w ) + SHQuaternion::SHQuaternion(const XMFLOAT4& xmfloat4) noexcept + : XMFLOAT4( xmfloat4 ) {} - SHQuaternion::SHQuaternion(const reactphysics3d::Vector3& rp3dEuler) noexcept - : XMFLOAT4( 0.0f, 0.0f, 0.0f, 1.0f ) - { - XMStoreFloat4(this, XMQuaternionRotationRollPitchYawFromVector(SHVec3 { rp3dEuler })); - } - - SHQuaternion::SHQuaternion(const reactphysics3d::Quaternion& rp3dQuat) noexcept - : XMFLOAT4( rp3dQuat.x, rp3dQuat.y, rp3dQuat.z, rp3dQuat.w ) + SHQuaternion::SHQuaternion(float _x, float _y, float _z, float _w) noexcept + : XMFLOAT4( _x, _y, _z, _w ) {} /*-----------------------------------------------------------------------------------*/ @@ -141,16 +135,6 @@ namespace SHADE return XMQuaternionNotEqual(*this, rhs); } - SHQuaternion::operator reactphysics3d::Quaternion() const noexcept - { - return reactphysics3d::Quaternion{ x, y, z, w }; - } - - SHQuaternion::operator reactphysics3d::Vector3() const noexcept - { - return reactphysics3d::Vector3{ ToEuler() }; - } - SHQuaternion::operator XMVECTOR() const noexcept { return XMLoadFloat4(this); diff --git a/SHADE_Engine/src/Math/SHQuaternion.h b/SHADE_Engine/src/Math/SHQuaternion.h index 29f6df7e..827f8929 100644 --- a/SHADE_Engine/src/Math/SHQuaternion.h +++ b/SHADE_Engine/src/Math/SHQuaternion.h @@ -11,7 +11,6 @@ #pragma once #include -#include #include @@ -48,14 +47,10 @@ namespace SHADE SHQuaternion (const SHQuaternion& rhs) = default; SHQuaternion (SHQuaternion&& rhs) = default; - SHQuaternion () noexcept; - SHQuaternion (const SHVec4& vec4) noexcept; - SHQuaternion (float x, float y, float z, float w) noexcept; - - // Conversion from other math types - - SHQuaternion (const reactphysics3d::Vector3& rp3dEuler) noexcept; - SHQuaternion (const reactphysics3d::Quaternion& rp3dQuat) noexcept; + SHQuaternion () noexcept; + SHQuaternion (const SHVec4& vec4) noexcept; + SHQuaternion (const XMFLOAT4& xmfloat4) noexcept; + SHQuaternion (float x, float y, float z, float w) noexcept; /*---------------------------------------------------------------------------------*/ /* Operator Overloads */ @@ -82,8 +77,6 @@ namespace SHADE // Conversion to other math types used by SHADE - operator reactphysics3d::Quaternion () const noexcept; - operator reactphysics3d::Vector3 () const noexcept; operator DirectX::XMVECTOR () const noexcept; /*---------------------------------------------------------------------------------*/ diff --git a/SHADE_Engine/src/Math/SHRay.cpp b/SHADE_Engine/src/Math/SHRay.cpp index c4931aba..622087c6 100644 --- a/SHADE_Engine/src/Math/SHRay.cpp +++ b/SHADE_Engine/src/Math/SHRay.cpp @@ -30,12 +30,6 @@ namespace SHADE , direction { dir } {} - SHRay::SHRay(const reactphysics3d::Ray rp3dRay) noexcept - : position { rp3dRay.point1 } - , direction { SHVec3::Normalise(rp3dRay.point2 - rp3dRay.point1) } - {} - - /*-----------------------------------------------------------------------------------*/ /* Operator Overload Definitions */ /*-----------------------------------------------------------------------------------*/ @@ -62,12 +56,6 @@ namespace SHADE return XMVector3NotEqual(LHS_POS, RHS_POS) || XMVector3NotEqual(LHS_DIR, RHS_DIR); } - SHRay::operator reactphysics3d::Ray() const noexcept - { - // We use 2km. Temp solution. - return reactphysics3d::Ray{ position, position + (direction * MAX_RAYCAST_DIST) }; - } - SHRaycastResult::operator bool() const noexcept { return hit; diff --git a/SHADE_Engine/src/Math/SHRay.h b/SHADE_Engine/src/Math/SHRay.h index 18efc224..56599018 100644 --- a/SHADE_Engine/src/Math/SHRay.h +++ b/SHADE_Engine/src/Math/SHRay.h @@ -10,10 +10,7 @@ #pragma once -#include - // Project Headers -#include "SH_API.h" #include "Vector/SHVec3.h" namespace SHADE @@ -40,7 +37,6 @@ namespace SHADE SHRay () noexcept; SHRay (const SHVec3& pos, const SHVec3& dir) noexcept; - SHRay (const reactphysics3d::Ray rp3dRay) noexcept; SHRay (const SHRay&) noexcept = default; SHRay (SHRay&& ) noexcept = default; @@ -55,8 +51,6 @@ namespace SHADE [[nodiscard]] bool operator==(const SHRay& rhs) const noexcept; [[nodiscard]] bool operator!=(const SHRay& rhs) const noexcept; - - operator reactphysics3d::Ray() const noexcept; }; struct SH_API SHRaycastResult diff --git a/SHADE_Engine/src/Math/Transform/SHTransformSystem.cpp b/SHADE_Engine/src/Math/Transform/SHTransformSystem.cpp index 03de360d..0a0ec092 100644 --- a/SHADE_Engine/src/Math/Transform/SHTransformSystem.cpp +++ b/SHADE_Engine/src/Math/Transform/SHTransformSystem.cpp @@ -246,8 +246,6 @@ namespace SHADE tf.world.position = SHVec3::Transform(tf.local.position, localToWorld); tf.world.scale = tf.local.scale * (parent ? parent->GetLocalScale() : SHVec3::One); - - if (convertRotation) { tf.worldRotation = tf.localRotation + (parent ? parent->GetLocalRotation() : SHVec3::Zero); diff --git a/SHADE_Engine/src/Math/Vector/SHVec2.cpp b/SHADE_Engine/src/Math/Vector/SHVec2.cpp index 9573be01..da0215f4 100644 --- a/SHADE_Engine/src/Math/Vector/SHVec2.cpp +++ b/SHADE_Engine/src/Math/Vector/SHVec2.cpp @@ -50,10 +50,6 @@ namespace SHADE : XMFLOAT2( _x, _y ) {} - SHVec2::SHVec2(const reactphysics3d::Vector2& rp3dVec2) noexcept - : XMFLOAT2( rp3dVec2.x, rp3dVec2.y ) - {} - /*-----------------------------------------------------------------------------------*/ /* Operator Overload Definitions */ /*-----------------------------------------------------------------------------------*/ @@ -165,6 +161,8 @@ namespace SHADE { case 0: return x; case 1: return y; + // This will never hit + default: return x; } } @@ -177,6 +175,8 @@ namespace SHADE { case 0: return x; case 1: return y; + // This will never hit + default: return x; } } @@ -189,6 +189,8 @@ namespace SHADE { case 0: return x; case 1: return y; + // This will never hit + default: return x; } } @@ -201,14 +203,11 @@ namespace SHADE { case 0: return x; case 1: return y; + // This will never hit + default: return x; } } - SHVec2::operator reactphysics3d::Vector2() const noexcept - { - return reactphysics3d::Vector2{ x, y }; - } - SHVec2 operator* (float lhs, const SHVec2& rhs) noexcept { SHVec2 result; diff --git a/SHADE_Engine/src/Math/Vector/SHVec2.h b/SHADE_Engine/src/Math/Vector/SHVec2.h index e780d3ac..78c1e6e8 100644 --- a/SHADE_Engine/src/Math/Vector/SHVec2.h +++ b/SHADE_Engine/src/Math/Vector/SHVec2.h @@ -11,7 +11,6 @@ #pragma once #include -#include #include #include @@ -59,10 +58,6 @@ namespace SHADE SHVec2 (float n) noexcept; SHVec2 (float x, float y) noexcept; - // Conversion from other math types to SHADE - - SHVec2 (const reactphysics3d::Vector2& rp3dVec2) noexcept; - /*---------------------------------------------------------------------------------*/ /* Operator Overloads */ /*---------------------------------------------------------------------------------*/ @@ -73,7 +68,6 @@ namespace SHADE // Conversion to other math types used by SHADE operator DirectX::XMVECTOR () const noexcept; - operator reactphysics3d::Vector2 () const noexcept; SHVec2& operator+= (const SHVec2& rhs) noexcept; SHVec2& operator-= (const SHVec2& rhs) noexcept; diff --git a/SHADE_Engine/src/Math/Vector/SHVec3.cpp b/SHADE_Engine/src/Math/Vector/SHVec3.cpp index 4b77636a..72d2b0a2 100644 --- a/SHADE_Engine/src/Math/Vector/SHVec3.cpp +++ b/SHADE_Engine/src/Math/Vector/SHVec3.cpp @@ -57,14 +57,6 @@ namespace SHADE : XMFLOAT3( _x, _y, _z ) {} - SHVec3::SHVec3(const reactphysics3d::Vector3& rp3dVec3) noexcept - : XMFLOAT3( rp3dVec3.x, rp3dVec3.y, rp3dVec3.z ) - {} - - SHVec3::SHVec3(const reactphysics3d::Quaternion& rp3dVec3) noexcept - : XMFLOAT3( SHQuaternion{rp3dVec3}.ToEuler() ) - {} - /*-----------------------------------------------------------------------------------*/ /* Operator Overload Definitions */ /*-----------------------------------------------------------------------------------*/ @@ -179,6 +171,8 @@ namespace SHADE case 0: return x; case 1: return y; case 2: return z; + // This will never hit + default: return x; } } @@ -192,6 +186,8 @@ namespace SHADE case 0: return x; case 1: return y; case 2: return z; + // This will never hit + default: return x; } } @@ -205,6 +201,8 @@ namespace SHADE case 0: return x; case 1: return y; case 2: return z; + // This will never hit + default: return x; } } @@ -218,19 +216,11 @@ namespace SHADE case 0: return x; case 1: return y; case 2: return z; + // This will never hit + default: return x; } } - SHVec3::operator reactphysics3d::Vector3() const noexcept - { - return reactphysics3d::Vector3{ x, y , z }; - } - - SHVec3::operator reactphysics3d::Quaternion() const noexcept - { - return reactphysics3d::Quaternion::fromEulerAngles(x, y, z); - } - SHVec3 operator* (float lhs, const SHVec3& rhs) noexcept { SHVec3 result; @@ -382,6 +372,30 @@ namespace SHADE return lhs.Cross(rhs); } + SHMatrix SHVec3::OuterProduct(const SHVec3& lhs, const SHVec3& rhs) noexcept + { + /* + * Outer product is a matrix multiplication u * vT + * 3x1 * 1x3 = 3x3 + * + * | u1 | | v1 v2 v3 | | u1v1 u1v2 u1v3 | + * | u2 | = | u2v1 u2v2 u2v3 | + * | u3 | | u3v1 u3v2 u3v3 | + */ + + SHMatrix u = SHMatrix::Zero; + SHMatrix vT = SHMatrix::Zero; + + for (int i = 0; i < SIZE; ++i) + { + u.m[0][i] = lhs[i]; + vT.m[i][0] = rhs[i]; + } + + return u * vT; + } + + SHVec3 SHVec3::Project(const SHVec3& v, const SHVec3& u) noexcept { SHVec3 result; diff --git a/SHADE_Engine/src/Math/Vector/SHVec3.h b/SHADE_Engine/src/Math/Vector/SHVec3.h index de37d6a5..4b0112c5 100644 --- a/SHADE_Engine/src/Math/Vector/SHVec3.h +++ b/SHADE_Engine/src/Math/Vector/SHVec3.h @@ -11,8 +11,6 @@ #pragma once #include -#include -#include #include #include @@ -69,9 +67,6 @@ namespace SHADE // Conversion from other math types to SHADE - SHVec3 (const reactphysics3d::Vector3& rp3dVec3) noexcept; - SHVec3 (const reactphysics3d::Quaternion& rp3dVec3) noexcept; - /*---------------------------------------------------------------------------------*/ /* Operator Overloads */ /*---------------------------------------------------------------------------------*/ @@ -81,8 +76,6 @@ namespace SHADE // Conversion to other math types used by SHADE - operator reactphysics3d::Vector3 () const noexcept; - operator reactphysics3d::Quaternion () const noexcept; operator DirectX::XMVECTOR () const noexcept; SHVec3& operator+= (const SHVec3& rhs) noexcept; @@ -122,27 +115,28 @@ namespace SHADE /* Static Function Members */ /*---------------------------------------------------------------------------------*/ - [[nodiscard]] static SHVec3 Normalise (const SHVec3& v) noexcept; - [[nodiscard]] static SHVec3 Abs (const SHVec3& v) noexcept; - [[nodiscard]] static SHVec3 Min (const std::initializer_list& vs) noexcept; - [[nodiscard]] static SHVec3 Max (const std::initializer_list& vs) noexcept; - [[nodiscard]] static SHVec3 Clamp (const SHVec3& v, const SHVec3& vMin, const SHVec3& vMax) noexcept; - [[nodiscard]] static SHVec3 Lerp (const SHVec3& a, const SHVec3& b, float t) noexcept; - [[nodiscard]] static SHVec3 ClampedLerp (const SHVec3& a, const SHVec3& b, float t, float tMin = 0.0f, float tMax = 1.0f) noexcept; + [[nodiscard]] static SHVec3 Normalise (const SHVec3& v) noexcept; + [[nodiscard]] static SHVec3 Abs (const SHVec3& v) noexcept; + [[nodiscard]] static SHVec3 Min (const std::initializer_list& vs) noexcept; + [[nodiscard]] static SHVec3 Max (const std::initializer_list& vs) noexcept; + [[nodiscard]] static SHVec3 Clamp (const SHVec3& v, const SHVec3& vMin, const SHVec3& vMax) noexcept; + [[nodiscard]] static SHVec3 Lerp (const SHVec3& a, const SHVec3& b, float t) noexcept; + [[nodiscard]] static SHVec3 ClampedLerp (const SHVec3& a, const SHVec3& b, float t, float tMin = 0.0f, float tMax = 1.0f) noexcept; - [[nodiscard]] static float Distance (const SHVec3& lhs, const SHVec3& rhs) noexcept; - [[nodiscard]] static float DistanceSquared (const SHVec3& lhs, const SHVec3& rhs) noexcept; - [[nodiscard]] static float Angle (const SHVec3& lhs, const SHVec3& rhs) noexcept; - [[nodiscard]] static float Dot (const SHVec3& lhs, const SHVec3& rhs) noexcept; - [[nodiscard]] static SHVec3 Cross (const SHVec3& lhs, const SHVec3& rhs) noexcept; - [[nodiscard]] static SHVec3 Project (const SHVec3& v, const SHVec3& u) noexcept; - [[nodiscard]] static SHVec3 Reflect (const SHVec3& v, const SHVec3& normal) noexcept; - [[nodiscard]] static SHVec3 Rotate (const SHVec3& v, const SHVec3& axis, float angleInRad) noexcept; - [[nodiscard]] static SHVec3 Rotate (const SHVec3& v, const SHQuaternion& q) noexcept; - [[nodiscard]] static SHVec3 RotateX (const SHVec3& v, float angleInRad) noexcept; - [[nodiscard]] static SHVec3 RotateY (const SHVec3& v, float angleInRad) noexcept; - [[nodiscard]] static SHVec3 RotateZ (const SHVec3& v, float angleInRad) noexcept; - [[nodiscard]] static SHVec3 Transform (const SHVec3& v, const SHMatrix& transformMtx) noexcept; + [[nodiscard]] static float Distance (const SHVec3& lhs, const SHVec3& rhs) noexcept; + [[nodiscard]] static float DistanceSquared (const SHVec3& lhs, const SHVec3& rhs) noexcept; + [[nodiscard]] static float Angle (const SHVec3& lhs, const SHVec3& rhs) noexcept; + [[nodiscard]] static float Dot (const SHVec3& lhs, const SHVec3& rhs) noexcept; + [[nodiscard]] static SHVec3 Cross (const SHVec3& lhs, const SHVec3& rhs) noexcept; + [[nodiscard]] static SHMatrix OuterProduct (const SHVec3& lhs, const SHVec3& rhs) noexcept; + [[nodiscard]] static SHVec3 Project (const SHVec3& v, const SHVec3& u) noexcept; + [[nodiscard]] static SHVec3 Reflect (const SHVec3& v, const SHVec3& normal) noexcept; + [[nodiscard]] static SHVec3 Rotate (const SHVec3& v, const SHVec3& axis, float angleInRad) noexcept; + [[nodiscard]] static SHVec3 Rotate (const SHVec3& v, const SHQuaternion& q) noexcept; + [[nodiscard]] static SHVec3 RotateX (const SHVec3& v, float angleInRad) noexcept; + [[nodiscard]] static SHVec3 RotateY (const SHVec3& v, float angleInRad) noexcept; + [[nodiscard]] static SHVec3 RotateZ (const SHVec3& v, float angleInRad) noexcept; + [[nodiscard]] static SHVec3 Transform (const SHVec3& v, const SHMatrix& transformMtx) noexcept; }; SHVec3 operator* (float lhs, const SHVec3& rhs) noexcept; diff --git a/SHADE_Engine/src/Math/Vector/SHVec4.cpp b/SHADE_Engine/src/Math/Vector/SHVec4.cpp index c6f01d9e..c164e7f4 100644 --- a/SHADE_Engine/src/Math/Vector/SHVec4.cpp +++ b/SHADE_Engine/src/Math/Vector/SHVec4.cpp @@ -164,6 +164,8 @@ namespace SHADE case 1: return y; case 2: return z; case 3: return w; + // This will never hit + default: return x; } } @@ -178,6 +180,8 @@ namespace SHADE case 1: return y; case 2: return z; case 3: return w; + // This will never hit + default: return x; } } @@ -192,6 +196,8 @@ namespace SHADE case 1: return y; case 2: return z; case 3: return w; + // This will never hit + default: return x; } } @@ -206,6 +212,8 @@ namespace SHADE case 1: return y; case 2: return z; case 3: return w; + // This will never hit + default: return x; } } diff --git a/SHADE_Engine/src/Physics/Collision/Broadphase/SHDynamicAABBTree.cpp b/SHADE_Engine/src/Physics/Collision/Broadphase/SHDynamicAABBTree.cpp new file mode 100644 index 00000000..7177e517 --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/Broadphase/SHDynamicAABBTree.cpp @@ -0,0 +1,644 @@ +/**************************************************************************************** + * \file SHDynamicAABBTree.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for a Dynamic AABB Tree for broadphase collision detection. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +#include + +// Primary Header +#include "SHDynamicAABBTree.h" + +// Project Headers +#include "Math/SHMathHelpers.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHAABBTree::SHAABBTree() noexcept + : root { NULL_NODE } + , nodes { nullptr } + , nodeCount { 0 } + , capacity { 1024 } + , freeList { NULL_NODE } + { + // Build initial tree + nodes = new Node[1024]; + + addToFreeList(0); + } + + SHAABBTree::~SHAABBTree() noexcept + { + delete[] nodes; + } + + SHAABBTree::Node::Node() noexcept + : id { MAX_EID, std::numeric_limits::max() } + , parent { NULL_NODE } + , left { NULL_NODE } + , right { NULL_NODE } + , height { NULL_NODE } + {} + + SHAABBTree::Node::Node(const Node& rhs) noexcept + : AABB { rhs.AABB } + , id { rhs.id } + , next { rhs.next } + , left { rhs.left } + , right { rhs.right } + , height { rhs.height } + {} + + SHAABBTree::Node::Node(Node&& rhs) noexcept + : AABB { rhs.AABB } + , id { rhs.id } + , next { rhs.next } + , left { rhs.left } + , right { rhs.right } + , height { rhs.height } + {} + + /*-----------------------------------------------------------------------------------*/ + /* Operator Overload Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHAABBTree::Node& SHAABBTree::Node::operator=(const Node& rhs) noexcept + { + if (this == &rhs) + return *this; + + AABB = rhs.AABB; + id = rhs.id; + parent = rhs.parent; + next = rhs.next; + left = rhs.left; + right = rhs.right; + height = rhs.height; + + return *this; + } + + SHAABBTree::Node& SHAABBTree::Node::operator=(Node&& rhs) noexcept + { + AABB = std::move(rhs.AABB); + id = std::move(rhs.id); + parent = rhs.parent; + next = rhs.next; + left = rhs.left; + right = rhs.right; + height = rhs.height; + + return *this; + } + + /*-----------------------------------------------------------------------------------*/ + /* Getter Functions Definitions */ + /*-----------------------------------------------------------------------------------*/ + + const std::vector& SHAABBTree::GetAABBs() const noexcept + { + static AABBs aabbs; + static std::stack nodeIndices; + + aabbs.clear(); + + nodeIndices.push(root); + while (!nodeIndices.empty()) + { + // Pop the top node + const int INDEX = nodeIndices.top(); + nodeIndices.pop(); + + // Skip null nodes + if (INDEX == NULL_NODE) + continue; + + const Node& CURRENT_NODE = nodes[INDEX]; + + aabbs.emplace_back(CURRENT_NODE.AABB); + + if (!isLeaf(INDEX)) + { + nodeIndices.push(CURRENT_NODE.left); + nodeIndices.push(CURRENT_NODE.right); + } + } + + return aabbs; + } + + + /*-----------------------------------------------------------------------------------*/ + /* Public Member Functions Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHAABBTree::Insert(SHCollisionShapeID id, const SHAABB& AABB) + { + const int32_t NEW_INDEX = allocateNode(); + + if (!nodeMap.emplace(id, NEW_INDEX).second) + { + // Attempted to add a duplicate node + freeNode(NEW_INDEX); + return; + } + + Node& newNode = nodes[NEW_INDEX]; + newNode.AABB = AABB; + newNode.id = id; + newNode.height = 0; + + // Fatten the AABB + const SHVec3 EXTENSION{ AABB_EXTENSION }; + + const SHVec3 newMin = newNode.AABB.GetMin() - EXTENSION; + const SHVec3 newMax = newNode.AABB.GetMax() + EXTENSION; + + newNode.AABB.SetMin(newMin); + newNode.AABB.SetMax(newMax); + + insertLeaf(NEW_INDEX); + } + + void SHAABBTree::Update(SHCollisionShapeID id, const SHAABB& AABB) + { + // Get node index + const int32_t INDEX_TO_UPDATE = nodeMap[id]; + + Node& nodeToUpdate = nodes[INDEX_TO_UPDATE]; + + // If new AABB has not moved enough, skip. + if (nodeToUpdate.AABB.Contains(AABB)) + return; + + removeLeaf(INDEX_TO_UPDATE); + + nodeToUpdate.AABB = AABB; + + // Fatten the AABB + const SHVec3 EXTENSION{ AABB_EXTENSION }; + + const SHVec3 newMin = nodeToUpdate.AABB.GetMin() - EXTENSION; + const SHVec3 newMax = nodeToUpdate.AABB.GetMax() + EXTENSION; + + nodeToUpdate.AABB.SetMin(newMin); + nodeToUpdate.AABB.SetMax(newMax); + + insertLeaf(INDEX_TO_UPDATE); + } + + void SHAABBTree::Remove(SHCollisionShapeID id) noexcept + { + // Get node index + const int32_t INDEX_TO_REMOVE = nodeMap[id]; + + removeLeaf(INDEX_TO_REMOVE); + freeNode(INDEX_TO_REMOVE); + + nodeMap.erase(id); + } + + const std::vector& SHAABBTree::Query(SHCollisionShapeID id, const SHAABB& AABB) const noexcept + { + static std::vector potentialCollisions; + static std::stack nodeIndices; + + potentialCollisions.clear(); + + // We use this to ignore shapes on the same entity + const EntityID EID = id.GetEntityID(); + + nodeIndices.push(root); + while (!nodeIndices.empty()) + { + const int32_t INDEX = nodeIndices.top(); + nodeIndices.pop(); + + if (INDEX == NULL_NODE) + continue; + + const Node& NODE = nodes[INDEX]; + if (!SHAABB::Intersect(AABB, NODE.AABB)) + continue; + + // Avoid checking against shapes of the same composite collider (and itself) + if (isLeaf(INDEX) && NODE.id.GetEntityID() != EID) + { + potentialCollisions.emplace_back(NODE.id); + } + else + { + nodeIndices.push(NODE.left); + nodeIndices.push(NODE.right); + } + } + + return potentialCollisions; + } + + const std::vector& SHAABBTree::Query(const SHRay& ray, float distance) const noexcept + { + static std::vector potentialHits; + static std::stack nodeIndices; + + potentialHits.clear(); + + nodeIndices.push(root); + while (!nodeIndices.empty()) + { + const int32_t INDEX = nodeIndices.top(); + nodeIndices.pop(); + + if (INDEX == NULL_NODE) + continue; + + const Node& NODE = nodes[INDEX]; + + const auto& RESULT = NODE.AABB.Raycast(ray); + if (!RESULT || RESULT.distance > distance) + continue; + + if (isLeaf(INDEX)) + { + potentialHits.emplace_back(NODE.id); + } + else + { + // Non-leaf nodes need to be traversed further + nodeIndices.push(NODE.left); + nodeIndices.push(NODE.right); + } + } + + return potentialHits; + } + + /*-----------------------------------------------------------------------------------*/ + /* Private Member Functions Definitions */ + /*-----------------------------------------------------------------------------------*/ + + bool SHAABBTree::isLeaf(int32_t index) const noexcept + { + const Node& NODE = nodes[index]; + return NODE.left == NULL_NODE && NODE.right == NULL_NODE; + } + + int32_t SHAABBTree::allocateNode() + { + if (freeList == NULL_NODE) + { + // No more free nodes available, so we need to resize the tree for more nodes + capacity *= 2; + + Node* newNodes = new Node[capacity]; + + // Copy all the nodes manually. I do this instead of memcpy to guarantee it copies properly. + for (int32_t i = 0; i < nodeCount; ++i) + { + newNodes[i].AABB = nodes[i].AABB; + newNodes[i].id = nodes[i].id; + newNodes[i].parent = nodes[i].parent; + newNodes[i].left = nodes[i].left; + newNodes[i].right = nodes[i].right; + newNodes[i].height = nodes[i].height; + } + + delete[] nodes; + nodes = newNodes; + + addToFreeList(nodeCount); + } + + const int32_t FREE_NODE = freeList; + freeList = nodes[FREE_NODE].next; + + // Set node to default + Node& newNode = nodes[FREE_NODE]; + newNode.parent = NULL_NODE; + newNode.left = NULL_NODE; + newNode.right = NULL_NODE; + newNode.height = NULL_NODE; + + ++nodeCount; + return FREE_NODE; + } + + void SHAABBTree::freeNode(int32_t index) noexcept + { + SHASSERT(index >= 0 && index < capacity, "Trying to free an invalid AABB Tree node!") + + nodes[index].next = freeList; + nodes[index].height = NULL_NODE; + + // Put it back on the free list + freeList = index; + + --nodeCount; + } + + void SHAABBTree::insertLeaf(int32_t index) + { + // If there is no root, the first insert must make the root + if (root == NULL_NODE) + { + root = index; + nodes[root].parent = NULL_NODE; + return; + } + + // Find best sibling for new leaf + // Utilise Surface Area Heuristic + const SHAABB& LEAF_AABB = nodes[index].AABB; + + uint32_t searchIndex = root; + while (!isLeaf(searchIndex)) + { + const SHAABB COMBINED_AABB = SHAABB::Combine(LEAF_AABB, nodes[searchIndex].AABB); + const float COMBINED_AREA = COMBINED_AABB.SurfaceArea(); + + const float INHERITED_COST = 2.0f * (COMBINED_AREA - nodes[searchIndex].AABB.SurfaceArea()); + + const int32_t LEFT_INDEX = nodes[searchIndex].left; + const int32_t RIGHT_INDEX = nodes[searchIndex].right; + + float leftCost = 0.0f; + float rightCost = 0.0f; + + const float LEFT_COMBINED_AREA = SHAABB::Combine(LEAF_AABB, nodes[LEFT_INDEX].AABB).SurfaceArea(); + const float RIGHT_COMBINED_AREA = SHAABB::Combine(LEAF_AABB, nodes[RIGHT_INDEX].AABB).SurfaceArea(); + + // Compute cost for descending into the left + if (isLeaf(LEFT_INDEX)) + leftCost = LEFT_COMBINED_AREA + INHERITED_COST; + else + leftCost = LEFT_COMBINED_AREA - nodes[LEFT_INDEX].AABB.SurfaceArea() + INHERITED_COST; + + // Compute cost for descending into the right + if (isLeaf(RIGHT_INDEX)) + rightCost = RIGHT_COMBINED_AREA + INHERITED_COST; + else + rightCost = RIGHT_COMBINED_AREA - nodes[RIGHT_INDEX].AABB.SurfaceArea() + INHERITED_COST; + + // Early out + const float BRANCH_COST = 2.0f * COMBINED_AREA; + if (BRANCH_COST < leftCost && BRANCH_COST < rightCost) + break; + + // Traverse + searchIndex = leftCost < rightCost ? LEFT_INDEX : RIGHT_INDEX; + } + + const int32_t BEST_SIBLING = searchIndex; + + // Create a new parent for the leaf + const int32_t OLD_PARENT = nodes[BEST_SIBLING].parent; + const int32_t NEW_PARENT = allocateNode(); + + Node& newParent = nodes[NEW_PARENT]; + newParent.parent = OLD_PARENT; + newParent.id = SHCollisionShapeID{ MAX_EID, std::numeric_limits::max() }; + newParent.AABB = SHAABB::Combine(LEAF_AABB, nodes[BEST_SIBLING].AABB); + newParent.height = nodes[BEST_SIBLING].height + 1; + + newParent.left = BEST_SIBLING; + newParent.right = index; + + nodes[BEST_SIBLING].parent = NEW_PARENT; + nodes[index].parent = NEW_PARENT; + + // If sibling was the root + if (OLD_PARENT == NULL_NODE) + root = NEW_PARENT; + else + (nodes[OLD_PARENT].left == BEST_SIBLING ? nodes[OLD_PARENT].left : nodes[OLD_PARENT].right) = NEW_PARENT; + + syncHierarchy(NEW_PARENT); + } + + void SHAABBTree::removeLeaf(int32_t index) + { + if (index == root) + { + root = NULL_NODE; + return; + } + + const int32_t PARENT = nodes[index].parent; + + if (PARENT == NULL_NODE) + { + freeNode(index); + return; + } + + const int32_t GRANDPARENT = nodes[PARENT].parent; + const int32_t SIBLING = nodes[PARENT].left == index ? nodes[PARENT].right : nodes[PARENT].left; + + if (GRANDPARENT != NULL_NODE) + { + // Replace parent with sibling + (nodes[GRANDPARENT].left == PARENT ? nodes[GRANDPARENT].left : nodes[GRANDPARENT].right) = SIBLING; + nodes[SIBLING].parent = GRANDPARENT; + } + else + { + // Parent was root + root = SIBLING; + nodes[SIBLING].parent = NULL_NODE; + } + + freeNode(PARENT); + syncHierarchy(GRANDPARENT); + } + + void SHAABBTree::syncHierarchy(int32_t index) + { + while (index != NULL_NODE) + { + index = balance(index); + + const int32_t LEFT_INDEX = nodes[index].left; + const Node& LEFT_NODE = nodes[LEFT_INDEX]; + + const int32_t RIGHT_INDEX = nodes[index].right; + const Node& RIGHT_NODE = nodes[RIGHT_INDEX]; + + nodes[index].height = 1 + SHMath::Max(LEFT_NODE.height, RIGHT_NODE.height); + nodes[index].AABB = SHAABB::Combine(LEFT_NODE.AABB, RIGHT_NODE.AABB); + + // Sync up to the root + index = nodes[index].parent; + } + } + + int32_t SHAABBTree::balance(int32_t index) + { + if (isLeaf(index) || nodes[index].height == 1) + return index; + + Node& nodeA = nodes[index]; + + const int32_t LEFT = nodeA.left; + const int32_t RIGHT = nodeA.right; + + const int32_t DIFF = nodes[RIGHT].height - nodes[LEFT].height; + + if (DIFF > 1) + return rotateLeft(index); + + if (DIFF < -1) + return rotateRight(index); + + return index; + } + + int32_t SHAABBTree::rotateLeft(int32_t index) + { + /**************************** + A C + / \ / \ + B C --> A F/G + / \ / \ + F G B G/F + ****************************/ + + // Promote C + + Node& nodeA = nodes[index]; + + const int32_t B = nodeA.left; + const int32_t C = nodeA.right; + + Node& nodeB = nodes[B]; + Node& nodeC = nodes[C]; + + const int32_t F = nodeC.left; + const int32_t G = nodeC.right; + + Node& nodeF = nodes[F]; + Node& nodeG = nodes[G]; + + if (nodeA.parent != NULL_NODE) + (nodes[nodeA.parent].left == index ? nodes[nodeA.parent].left : nodes[nodeA.parent].right) = C; + else + root = C; + + nodeC.left = index; + nodeC.parent = nodeA.parent; + nodeA.parent = C; + + if (nodeF.height > nodeG.height) + { + nodeC.right = F; + nodeA.right = G; + nodeG.parent = index; + + nodeA.AABB = SHAABB::Combine(nodeB.AABB, nodeG.AABB); + nodeC.AABB = SHAABB::Combine(nodeA.AABB, nodeF.AABB); + + nodeA.height = 1 + SHMath::Max(nodeB.height, nodeG.height); + nodeC.height = 1 + SHMath::Max(nodeA.height, nodeF.height); + } + else + { + nodeC.right = G; + nodeA.right = F; + nodeF.parent = index; + + nodeA.AABB = SHAABB::Combine(nodeB.AABB, nodeF.AABB); + nodeC.AABB = SHAABB::Combine(nodeA.AABB, nodeG.AABB); + + nodeA.height = 1 + SHMath::Max(nodeB.height, nodeF.height); + nodeC.height = 1 + SHMath::Max(nodeA.height, nodeG.height); + } + + return C; + } + + int32_t SHAABBTree::rotateRight(int32_t index) + { + /************************* + A B + / \ / \ + B C --> D/E A + / \ / \ + D E E/D C + *************************/ + + // Promote B + + Node& nodeA = nodes[index]; + + const int32_t B = nodeA.left; + const int32_t C = nodeA.right; + + Node& nodeB = nodes[B]; + Node& nodeC = nodes[C]; + + const int32_t D = nodeB.left; + const int32_t E = nodeB.right; + + Node& nodeD = nodes[D]; + Node& nodeE = nodes[E]; + + if (nodeA.parent != NULL_NODE) + (nodes[nodeA.parent].left == index ? nodes[nodeA.parent].left : nodes[nodeA.parent].right) = B; + else + root = B; + + nodeB.right = index; + nodeB.parent = nodeA.parent; + nodeA.parent = B; + + if (nodeD.height > nodeE.height) + { + nodeB.left = D; + nodeA.left = E; + nodeE.parent = index; + + nodeA.AABB = SHAABB::Combine(nodeC.AABB, nodeE.AABB); + nodeB.AABB = SHAABB::Combine(nodeA.AABB, nodeD.AABB); + + nodeA.height = 1 + SHMath::Max(nodeC.height, nodeE.height); + nodeB.height = 1 + SHMath::Max(nodeA.height, nodeD.height); + } + else + { + nodeB.left = E; + nodeA.left = D; + nodeD.parent = index; + + nodeA.AABB = SHAABB::Combine(nodeC.AABB, nodeD.AABB); + nodeB.AABB = SHAABB::Combine(nodeA.AABB, nodeE.AABB); + + nodeA.height = 1 + SHMath::Max(nodeC.height, nodeD.height); + nodeB.height = 1 + SHMath::Max(nodeA.height, nodeE.height); + } + + return B; + } + + void SHAABBTree::addToFreeList(int32_t index) noexcept + { + for (int32_t i = index; i < capacity; ++i) + { + nodes[i].next = i + 1; + nodes[i].height = NULL_NODE; + } + + nodes[capacity - 1].next = NULL_NODE; + nodes[capacity - 1].height = NULL_NODE; + + freeList = index; + } +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/Broadphase/SHDynamicAABBTree.h b/SHADE_Engine/src/Physics/Collision/Broadphase/SHDynamicAABBTree.h new file mode 100644 index 00000000..292c3528 --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/Broadphase/SHDynamicAABBTree.h @@ -0,0 +1,156 @@ +/**************************************************************************************** + * \file SHDynamicAABBTree.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for a Dynamic AABB Tree for broadphase collision detection. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +#include + +// Project Headers +#include "Physics/Collision/Shapes/SHCollisionShape.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + + /** + * @brief + * Encapsulates a dynamic AABB Tree for collision detection. + */ + class SH_API SHAABBTree + { + public: + /*---------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*---------------------------------------------------------------------------------*/ + + using AABBs = std::vector; + + /*---------------------------------------------------------------------------------*/ + /* Data Members */ + /*---------------------------------------------------------------------------------*/ + + static constexpr int NULL_NODE = -1; + + /*---------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*---------------------------------------------------------------------------------*/ + + SHAABBTree () noexcept; + ~SHAABBTree () noexcept; + + SHAABBTree(const SHAABBTree& other) = delete; + SHAABBTree(SHAABBTree&& other) noexcept = delete; + + /*---------------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*---------------------------------------------------------------------------------*/ + + SHAABBTree& operator=(const SHAABBTree& other) = delete; + SHAABBTree& operator=(SHAABBTree&& other) noexcept = delete; + + /*---------------------------------------------------------------------------------*/ + /* Getter Functions */ + /*---------------------------------------------------------------------------------*/ + + [[nodiscard]] const AABBs& GetAABBs () const noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Member Functions */ + /*---------------------------------------------------------------------------------*/ + + void Insert (SHCollisionShapeID id, const SHAABB& AABB); + void Update (SHCollisionShapeID id, const SHAABB& AABB); + void Remove (SHCollisionShapeID id) noexcept; + + [[nodiscard]] const std::vector& Query(SHCollisionShapeID id, const SHAABB& AABB) const noexcept; + [[nodiscard]] const std::vector& Query(const SHRay& ray, float distance) const noexcept; + + private: + /*---------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*---------------------------------------------------------------------------------*/ + + struct Node + { + public: + /*-------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*-------------------------------------------------------------------------------*/ + + Node () noexcept; + Node (const Node& rhs) noexcept; + Node (Node&& rhs) noexcept; + + ~Node () noexcept = default; + + /*-------------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*-------------------------------------------------------------------------------*/ + + Node& operator=(const Node& rhs) noexcept; + Node& operator=(Node&& rhs) noexcept; + + /*-------------------------------------------------------------------------------*/ + /* Data Members */ + /*-------------------------------------------------------------------------------*/ + + SHAABB AABB; + SHCollisionShapeID id; // Used to lookup the collision shape & entity for culling against itself + + union + { + int32_t parent; + int32_t next; + }; + + + int32_t left; + int32_t right; + int32_t height; // Leaves have a height of 0. Free nodes have a height of -1 + }; + + /*---------------------------------------------------------------------------------*/ + /* Data Members */ + /*---------------------------------------------------------------------------------*/ + + static constexpr float AABB_EXTENSION = 0.2f; + + // For quick access + std::unordered_map nodeMap; + + int32_t root; + Node* nodes; // Dynamically allocated array of nodes. I use dynamic allocation as in the past, using a vector causes weird issues. + int32_t nodeCount; + int32_t capacity; // Used for resizing the tree. + int32_t freeList; // Stores the next available node on the free list. + + /*---------------------------------------------------------------------------------*/ + /* Member Functions */ + /*---------------------------------------------------------------------------------*/ + + bool isLeaf (int32_t index) const noexcept; + + int32_t allocateNode (); + void freeNode (int32_t index) noexcept; + + void insertLeaf (int32_t index); + void removeLeaf (int32_t index); + void syncHierarchy (int32_t index); + int32_t balance (int32_t index); + int32_t rotateLeft (int32_t index); + int32_t rotateRight (int32_t index); + + void addToFreeList (int32_t index) noexcept; + }; + + +} \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/SHCollisionTagMatrix.cpp b/SHADE_Engine/src/Physics/Collision/CollisionTags/SHCollisionTagMatrix.cpp similarity index 86% rename from SHADE_Engine/src/Physics/Collision/SHCollisionTagMatrix.cpp rename to SHADE_Engine/src/Physics/Collision/CollisionTags/SHCollisionTagMatrix.cpp index b687c6ca..4d3980b0 100644 --- a/SHADE_Engine/src/Physics/Collision/SHCollisionTagMatrix.cpp +++ b/SHADE_Engine/src/Physics/Collision/CollisionTags/SHCollisionTagMatrix.cpp @@ -14,6 +14,9 @@ // Primary Header #include "SHCollisionTagMatrix.h" +// Project Headers +#include "Tools/Utilities/SHUtilities.h" + namespace SHADE { /*-----------------------------------------------------------------------------------*/ @@ -145,8 +148,9 @@ namespace SHADE /** * I HATE FILE IO * - * Each line in the file should be "indextag name". - * If the line fails to follow this format, use the default tag name (index + 1) + * Each line in the file should be "indextag namemask". + * If the line fails to follow this format, use the default tag name (index + 1) and default mask. + * If no mask was read, use a default mask. */ // Populate tag names with default @@ -187,18 +191,40 @@ namespace SHADE { SHLOG_ERROR ( - "Collision tag file line {} does not match the required format of 'indextag name'. Default tag used for index {}" + "Collision tag file line {} does not match the required format of 'indextag namemask'. Default tag used for index {}" , linesRead + 1 , tagIndex ) // Use default collisionTags[tagIndex].SetName(std::to_string(tagIndex + 1)); + collisionTags[tagIndex].SetMask(SHUtilities::ConvertEnum(SHCollisionTag::Layer::ALL)); continue; } collisionTags[tagIndex].SetName(tagName); + // Next element is the mask value + std::string maskString; + ss >> maskString; + + uint16_t mask = std::numeric_limits::max(); + if (maskString.empty()) + { + SHLOG_ERROR + ( + "Collision tag file line {} does not match the required format of 'indextag namemask'. Default mask used for index {}" + , linesRead + 1 + , tagIndex + ) + } + else + { + mask = static_cast(std::stoi(maskString)); + } + + collisionTags[tagIndex].SetMask(mask); + ss.clear(); } @@ -215,8 +241,9 @@ namespace SHADE return; } + // Index Name Mask for (int i = 0; i < SHCollisionTag::NUM_LAYERS; ++i) - collisionTagNamesFile << i << " " << collisionTags[i].GetName() << std::endl; + collisionTagNamesFile << i << " " << collisionTags[i].GetName() << " " << collisionTags[i].GetMask() << std::endl; collisionTagNamesFile.close(); } diff --git a/SHADE_Engine/src/Physics/Collision/SHCollisionTagMatrix.h b/SHADE_Engine/src/Physics/Collision/CollisionTags/SHCollisionTagMatrix.h similarity index 100% rename from SHADE_Engine/src/Physics/Collision/SHCollisionTagMatrix.h rename to SHADE_Engine/src/Physics/Collision/CollisionTags/SHCollisionTagMatrix.h diff --git a/SHADE_Engine/src/Physics/Collision/SHCollisionTags.cpp b/SHADE_Engine/src/Physics/Collision/CollisionTags/SHCollisionTags.cpp similarity index 100% rename from SHADE_Engine/src/Physics/Collision/SHCollisionTags.cpp rename to SHADE_Engine/src/Physics/Collision/CollisionTags/SHCollisionTags.cpp diff --git a/SHADE_Engine/src/Physics/Collision/SHCollisionTags.h b/SHADE_Engine/src/Physics/Collision/CollisionTags/SHCollisionTags.h similarity index 100% rename from SHADE_Engine/src/Physics/Collision/SHCollisionTags.h rename to SHADE_Engine/src/Physics/Collision/CollisionTags/SHCollisionTags.h diff --git a/SHADE_Engine/src/Physics/Collision/Contacts/SHCollisionEvents.h b/SHADE_Engine/src/Physics/Collision/Contacts/SHCollisionEvents.h new file mode 100644 index 00000000..15142303 --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/Contacts/SHCollisionEvents.h @@ -0,0 +1,60 @@ +/**************************************************************************************** + * \file SHCollisionKey.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for Collision Information for Collision & Triggers. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +// Project Headers +#include "SHCollisionKey.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + + enum class SHCollisionState + { + ENTER + , STAY + , EXIT + + , TOTAL + , INVALID = -1 + }; + + /** + * @brief + * Encapsulates the event for an intersection between two collision shapes that do not + * have physical resolution. + */ + struct SH_API SHTriggerEvent + { + public: + SHCollisionKey info; + SHCollisionState state = SHCollisionState::INVALID; + }; + + /** + * @brief + * Encapsulates the event for an intersection between two collision shapes that do + * have physical resolution. + */ + struct SH_API SHCollisionEvent + { + public: + static constexpr int MAX_NUM_CONTACTS = 4; + + SHCollisionKey info; + SHCollisionState state = SHCollisionState::INVALID; + SHVec3 normal; + SHVec3 contactPoints[MAX_NUM_CONTACTS]; + }; + +} // namespace SHADE diff --git a/SHADE_Engine/src/Physics/Collision/Contacts/SHCollisionKey.cpp b/SHADE_Engine/src/Physics/Collision/Contacts/SHCollisionKey.cpp new file mode 100644 index 00000000..4bb22697 --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/Contacts/SHCollisionKey.cpp @@ -0,0 +1,166 @@ +/**************************************************************************************** + * \file SHCollisionInfo.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for Collision Info. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "SHCollisionKey.h" + +// Project Headers +#include "Physics/Collision/SHCollider.h" +#include "Physics/Interface/SHColliderComponent.h" + + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHCollisionKey::SHCollisionKey() noexcept + { + ids[ENTITY_A] = MAX_EID; + ids[ENTITY_B] = MAX_EID; + ids[SHAPE_INDEX_A] = std::numeric_limits::max(); + ids[SHAPE_INDEX_B] = std::numeric_limits::max(); + } + + SHCollisionKey::SHCollisionKey(const SHCollisionKey& rhs) noexcept + { + value[0] = rhs.value[0]; + value[1] = rhs.value[1]; + } + + SHCollisionKey::SHCollisionKey(SHCollisionKey&& rhs) noexcept + { + value[0] = rhs.value[0]; + value[1] = rhs.value[1]; + } + + /*-----------------------------------------------------------------------------------*/ + /* Operator Overload Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHCollisionKey& SHCollisionKey::operator=(const SHCollisionKey& rhs) noexcept + { + if (this == &rhs) + return *this; + + value[0] = rhs.value[0]; + value[1] = rhs.value[1]; + + return *this; + } + + SHCollisionKey& SHCollisionKey::operator=(SHCollisionKey&& rhs) noexcept + { + value[0] = rhs.value[0]; + value[1] = rhs.value[1]; + + return *this; + } + + bool SHCollisionKey::operator==(const SHCollisionKey& rhs) const + { + // When checking for equal, check both ways. + // Exact Match (A, idxA, B, idxB) + const bool EXACT_MATCH = value[0] == rhs.value[0] && value[1] == rhs.value[1]; + + // Flipped Match: (B, idxB, A, idxA) + const bool FLIPPED_MATCH = value[0] == rhs.value[1] && value[1] == rhs.value[0]; + + return EXACT_MATCH || FLIPPED_MATCH; + } + + /*-----------------------------------------------------------------------------------*/ + /* Getter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + EntityID SHCollisionKey::GetEntityA() const noexcept + { + return ids[ENTITY_A]; + } + + EntityID SHCollisionKey::GetEntityB() const noexcept + { + return ids[ENTITY_B]; + } + + uint32_t SHCollisionKey::GetShapeIndexA() const noexcept + { + return ids[SHAPE_INDEX_A]; + } + + uint32_t SHCollisionKey::GetShapeIndexB() const noexcept + { + return ids[SHAPE_INDEX_B]; + } + + const SHRigidBodyComponent* SHCollisionKey::GetRigidBodyA() const noexcept + { + return SHComponentManager::GetComponent_s(ids[ENTITY_A]); + } + + const SHRigidBodyComponent* SHCollisionKey::GetRigidBodyB() const noexcept + { + return SHComponentManager::GetComponent_s(ids[ENTITY_B]); + } + + const SHCollisionShape* SHCollisionKey::GetCollisionShapeA() const noexcept + { + const auto* COLLIDER_COMPONENT = SHComponentManager::GetComponent(ids[ENTITY_A]); + return COLLIDER_COMPONENT->GetCollider()->GetCollisionShape(ids[SHAPE_INDEX_A]); + } + + const SHCollisionShape* SHCollisionKey::GetCollisionShapeB() const noexcept + { + const auto* COLLIDER_COMPONENT = SHComponentManager::GetComponent(ids[ENTITY_B]); + return COLLIDER_COMPONENT->GetCollider()->GetCollisionShape(ids[SHAPE_INDEX_B]); + } + + /*-----------------------------------------------------------------------------------*/ + /* Setter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHCollisionKey::SetEntityA(EntityID entityID) noexcept + { + ids[ENTITY_A] = entityID; + } + + void SHCollisionKey::SetEntityB(EntityID entityID) noexcept + { + ids[ENTITY_B] = entityID; + } + + void SHCollisionKey::SetCollisionShapeA(uint32_t shapeIndexA) noexcept + { + ids[SHAPE_INDEX_A] = shapeIndexA; + } + + void SHCollisionKey::SetCollisionShapeB(uint32_t shapeIndexB) noexcept + { + ids[SHAPE_INDEX_B] = shapeIndexB; + } + + /*-----------------------------------------------------------------------------------*/ + /* Public Function Member Definitions */ + /*-----------------------------------------------------------------------------------*/ + + std::size_t SHCollisionKeyHash::operator()(const SHCollisionKey& id) const + { + static constexpr int NUM_IDS = ARRAYSIZE(id.ids); + + // Hashable is not a word. Sue me. + auto hashablePtr = reinterpret_cast::const_pointer>(id.ids); + return std::hash{}(std::u32string_view(hashablePtr, NUM_IDS)); + } + + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/PhysicsObject/SHPhysicsObject.h b/SHADE_Engine/src/Physics/Collision/Contacts/SHCollisionKey.h similarity index 51% rename from SHADE_Engine/src/Physics/PhysicsObject/SHPhysicsObject.h rename to SHADE_Engine/src/Physics/Collision/Contacts/SHCollisionKey.h index c572ca2e..811f8375 100644 --- a/SHADE_Engine/src/Physics/PhysicsObject/SHPhysicsObject.h +++ b/SHADE_Engine/src/Physics/Collision/Contacts/SHCollisionKey.h @@ -1,7 +1,7 @@ /**************************************************************************************** - * \file SHPhysicsObject.h + * \file SHCollisionID.h * \author Diren D Bharwani, diren.dbharwani, 390002520 - * \brief Interface for a Physics Object. + * \brief Interface for Collision Information for Collision & Triggers. * * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or * disclosure of this file or its contents without the prior written consent @@ -10,102 +10,108 @@ #pragma once -#include - // Project Headers -#include "Math/Transform/SHTransformComponent.h" -#include "Physics/Interface/SHRigidBodyComponent.h" #include "Physics/Interface/SHColliderComponent.h" +#include "Physics/Interface/SHRigidBodyComponent.h" + namespace SHADE { + /*-----------------------------------------------------------------------------------*/ + /* Forward Declarations */ + /*-----------------------------------------------------------------------------------*/ + + struct SHCollisionKeyHash; + /*-----------------------------------------------------------------------------------*/ /* Type Definitions */ /*-----------------------------------------------------------------------------------*/ - class SH_API SHPhysicsObject + /** + * @brief + * Encapsulates the information when two collision shapes intersect. + */ + class SH_API SHCollisionKey { private: /*---------------------------------------------------------------------------------*/ /* Friends */ /*---------------------------------------------------------------------------------*/ - friend class SHPhysicsSystem; - friend class SHPhysicsObjectManager; + friend struct SHCollisionKeyHash; public: /*---------------------------------------------------------------------------------*/ /* Constructors & Destructor */ /*---------------------------------------------------------------------------------*/ - SHPhysicsObject (EntityID eid, rp3d::PhysicsCommon* physicsFactory, rp3d::PhysicsWorld* physicsWorld) noexcept; - SHPhysicsObject (const SHPhysicsObject& rhs) noexcept = default; - SHPhysicsObject (SHPhysicsObject&& rhs) noexcept = default; - virtual ~SHPhysicsObject () noexcept; + SHCollisionKey () noexcept; + SHCollisionKey (const SHCollisionKey& rhs) noexcept; + SHCollisionKey (SHCollisionKey&& rhs) noexcept; + + ~SHCollisionKey () noexcept = default; /*---------------------------------------------------------------------------------*/ /* Operator Overloads */ /*---------------------------------------------------------------------------------*/ - - SHPhysicsObject& operator=(const SHPhysicsObject& rhs) noexcept = default; - SHPhysicsObject& operator=(SHPhysicsObject&& rhs) noexcept = default; + + SHCollisionKey& operator= (const SHCollisionKey& rhs) noexcept; + SHCollisionKey& operator= (SHCollisionKey&& rhs) noexcept; + + bool operator==(const SHCollisionKey& rhs) const; /*---------------------------------------------------------------------------------*/ /* Getter Functions */ /*---------------------------------------------------------------------------------*/ - [[nodiscard]] SHVec3 GetPosition () const noexcept; - [[nodiscard]] SHQuaternion GetOrientation () const noexcept; - [[nodiscard]] SHVec3 GetRotation () const noexcept; - - [[nodiscard]] rp3d::CollisionBody* GetCollisionBody () const noexcept; - [[nodiscard]] rp3d::RigidBody* GetRigidBody () const noexcept; + [[nodiscard]] EntityID GetEntityA () const noexcept; + [[nodiscard]] EntityID GetEntityB () const noexcept; + [[nodiscard]] uint32_t GetShapeIndexA () const noexcept; + [[nodiscard]] uint32_t GetShapeIndexB () const noexcept; + [[nodiscard]] const SHRigidBodyComponent* GetRigidBodyA () const noexcept; + [[nodiscard]] const SHRigidBodyComponent* GetRigidBodyB () const noexcept; + [[nodiscard]] const SHCollisionShape* GetCollisionShapeA () const noexcept; + [[nodiscard]] const SHCollisionShape* GetCollisionShapeB () const noexcept; /*---------------------------------------------------------------------------------*/ /* Setter Functions */ /*---------------------------------------------------------------------------------*/ - void SetStaticBody () const noexcept; - - /*---------------------------------------------------------------------------------*/ - /* Function Members */ - /*---------------------------------------------------------------------------------*/ - - int AddCollisionShape (int index); - void RemoveCollisionShape (int index); - void RemoveAllCollisionShapes () const noexcept; - - void SyncRigidBody (SHRigidBodyComponent& component) const noexcept; - void SyncColliders (SHColliderComponent& component) const noexcept; + void SetEntityA (EntityID entityID) noexcept; + void SetEntityB (EntityID entityID) noexcept; + void SetCollisionShapeA (uint32_t shapeIndexA) noexcept; + void SetCollisionShapeB (uint32_t shapeIndexB) noexcept; private: + + static constexpr uint32_t ENTITY_A = 0; + static constexpr uint32_t SHAPE_INDEX_A = 1; + static constexpr uint32_t ENTITY_B = 2; + static constexpr uint32_t SHAPE_INDEX_B = 3; + /*---------------------------------------------------------------------------------*/ /* Data Members */ /*---------------------------------------------------------------------------------*/ - EntityID entityID; - bool collidersActive; // Only used to sync with SHADE components - - rp3d::PhysicsCommon* factory; - rp3d::PhysicsWorld* world; - - rp3d::RigidBody* rp3dBody; - rp3d::Transform prevTransform; // Cached transform for interpolation - - /*---------------------------------------------------------------------------------*/ - /* Function Members */ - /*---------------------------------------------------------------------------------*/ - - void syncColliderProperties (const SHCollisionShape& collisionShape, rp3d::Collider* rp3dCollider) const noexcept; - - // Box Shapes - - void addBoxShape (const SHCollisionShape& boxShape) const noexcept; - void syncBoxShape (int index, const SHCollisionShape& boxShape) const noexcept; - - // Sphere Shapes - - void addSphereShape (const SHCollisionShape& sphereShape) const noexcept; - void syncSphereShape (int index, const SHCollisionShape& sphereShape) const noexcept; + union + { + uint64_t value[2]; // EntityValue, ShapeIndexValue + uint32_t ids [4]; // EntityA, EntityB, ShapeIndexA, ShapeIndexB + }; }; + + /** + * @brief + * Encapsulates a functor to hash a CollisionKey + */ + struct SHCollisionKeyHash + { + public: + /*---------------------------------------------------------------------------------*/ + /* Member Functions */ + /*---------------------------------------------------------------------------------*/ + + std::size_t operator()(const SHCollisionKey& id) const; + }; + } // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/Contacts/SHContact.h b/SHADE_Engine/src/Physics/Collision/Contacts/SHContact.h new file mode 100644 index 00000000..bacf2255 --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/Contacts/SHContact.h @@ -0,0 +1,72 @@ +/**************************************************************************************** + * \file SHManifold.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for a Collision Manifold + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +// Primary Header +#include "Physics/Dynamics/SHRigidBody.h" +#include "Physics/Collision/Shapes/SHCollisionShape.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + + /** + * @brief + * Encapsulates a value that represents the touching features of a contact. + */ + union SHContactFeatures + { + public: + /*---------------------------------------------------------------------------------*/ + /* Data Members */ + /*---------------------------------------------------------------------------------*/ + + struct + { + uint8_t inI; // Incoming Incident Edge + uint8_t outI; // Outgoing Incident Edge + uint8_t inR; // Incoming Reference Edge + uint8_t outR; // Outgoing Reference Edge + }; + + uint32_t key = std::numeric_limits::max(); + }; + + /** + * @brief + * Encapsulates a physical collision contact. + */ + struct SH_API SHContact + { + public: + /*---------------------------------------------------------------------------------*/ + /* Data Members */ + /*---------------------------------------------------------------------------------*/ + + static constexpr int NUM_TANGENTS = 2; + + float penetration = 0.0f; + float bias = 0.0f; // Restitution + Baumguarte factor + float normalImpulse = 0.0f; // Accumulated normal impulse + float normalMass = 0.0f; // Effective mass along the normal + float tangentImpulse[NUM_TANGENTS] = { 0.0f }; // Accumulated tangent impulses + float tangentMass[NUM_TANGENTS] = { 0.0f }; // Effective masses along the tangents + + SHVec3 position; + SHVec3 rA; // Vector from COM of A to the contact + SHVec3 rB; // Vector from COM of B to the contact + SHContactFeatures featurePair; + }; +} + +#pragma once diff --git a/SHADE_Engine/src/Physics/Collision/Contacts/SHManifold.h b/SHADE_Engine/src/Physics/Collision/Contacts/SHManifold.h new file mode 100644 index 00000000..e60e5329 --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/Contacts/SHManifold.h @@ -0,0 +1,73 @@ +/**************************************************************************************** + * \file SHManifold.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for a Collision Manifold + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +// Primary Header +#include "Physics/Dynamics/SHRigidBody.h" +#include "Physics/Collision/Narrowphase/SHSATInfo.h" +#include "Physics/Collision/Shapes/SHCollisionShape.h" +#include "SHContact.h" +#include "SHCollisionEvents.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + + struct SH_API SHManifold + { + public: + /*---------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*---------------------------------------------------------------------------------*/ + + SHManifold (SHCollisionShape* a, SHCollisionShape* b) noexcept; + SHManifold (const SHManifold& rhs) noexcept; + SHManifold (SHManifold&& rhs) noexcept; + + ~SHManifold () noexcept = default; + + /*---------------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*---------------------------------------------------------------------------------*/ + + SHManifold& operator=(const SHManifold& rhs) noexcept; + SHManifold& operator=(SHManifold&& rhs) noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Data Members */ + /*---------------------------------------------------------------------------------*/ + + // We only need 4 contact points to build a stable manifold. + static constexpr int MAX_NUM_CONTACTS = 4; + + SHCollisionShape* shapeA; + SHCollisionShape* shapeB; + + SHRigidBody* bodyA = nullptr; + SHRigidBody* bodyB = nullptr; + + uint32_t numContacts = 0; + SHCollisionState state = SHCollisionState::INVALID; + + SHSATInfo cachedSATInfo; + + SHVec3 normal; + SHVec3 tangents[SHContact::NUM_TANGENTS]; + SHContact contacts[MAX_NUM_CONTACTS]; + + }; + +} // namespace SHADE + +#include "SHManifold.hpp" + diff --git a/SHADE_Engine/src/Physics/Collision/Contacts/SHManifold.hpp b/SHADE_Engine/src/Physics/Collision/Contacts/SHManifold.hpp new file mode 100644 index 00000000..f1b93a43 --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/Contacts/SHManifold.hpp @@ -0,0 +1,110 @@ +/**************************************************************************************** + * \file SHManifold.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for a Collision Manifold + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +// Primary Header +#include "SHManifold.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor Definitions */ + /*-----------------------------------------------------------------------------------*/ + + inline SHManifold::SHManifold(SHCollisionShape* a, SHCollisionShape* b) noexcept + : shapeA { a } + , shapeB { b } + { + bodyA = shapeA->collider->rigidBody; + bodyB = shapeB->collider->rigidBody; + } + + inline SHManifold::SHManifold(const SHManifold& rhs) noexcept + : shapeA { rhs.shapeA } + , shapeB { rhs.shapeB } + , bodyA { rhs.bodyA } + , bodyB { rhs.bodyB } + , numContacts { rhs.numContacts } + , state { rhs.state } + , cachedSATInfo { rhs.cachedSATInfo } + , normal { rhs.normal } + { + static constexpr size_t SIZE_OF_CONTACTS = sizeof(SHContact) * static_cast(MAX_NUM_CONTACTS); + memcpy_s(contacts, SIZE_OF_CONTACTS, rhs.contacts, SIZE_OF_CONTACTS); + + for (int i = 0; i < SHContact::NUM_TANGENTS; ++i) + tangents[i] = rhs.tangents[i]; + } + + inline SHManifold::SHManifold(SHManifold&& rhs) noexcept + : shapeA { rhs.shapeA } + , shapeB { rhs.shapeB } + , bodyA { rhs.bodyA } + , bodyB { rhs.bodyB } + , numContacts { rhs.numContacts } + , state { rhs.state } + , cachedSATInfo { rhs.cachedSATInfo } + , normal { rhs.normal } + { + static constexpr size_t SIZE_OF_CONTACTS = sizeof(SHContact) * static_cast(MAX_NUM_CONTACTS); + memcpy_s(contacts, SIZE_OF_CONTACTS, rhs.contacts, SIZE_OF_CONTACTS); + + for (int i = 0; i < SHContact::NUM_TANGENTS; ++i) + tangents[i] = rhs.tangents[i]; + } + + /*-----------------------------------------------------------------------------------*/ + /* Operator Overload Definitions */ + /*-----------------------------------------------------------------------------------*/ + + inline SHManifold& SHManifold::operator=(const SHManifold& rhs) noexcept + { + if (this == &rhs) + return *this; + + shapeA = rhs.shapeA; + shapeB = rhs.shapeB; + bodyA = rhs.bodyA; + bodyB = rhs.bodyB; + numContacts = rhs.numContacts; + state = rhs.state; + cachedSATInfo = rhs.cachedSATInfo; + normal = rhs.normal; + + static constexpr size_t SIZE_OF_CONTACTS = sizeof(SHContact) * static_cast(MAX_NUM_CONTACTS); + memcpy_s(contacts, SIZE_OF_CONTACTS, rhs.contacts, SIZE_OF_CONTACTS); + + for (int i = 0; i < SHContact::NUM_TANGENTS; ++i) + tangents[i] = rhs.tangents[i]; + + return *this; + } + + inline SHManifold& SHManifold::operator=(SHManifold&& rhs) noexcept + { + shapeA = rhs.shapeA; + shapeB = rhs.shapeB; + bodyA = rhs.bodyA; + bodyB = rhs.bodyB; + numContacts = rhs.numContacts; + state = rhs.state; + cachedSATInfo = rhs.cachedSATInfo; + normal = rhs.normal; + + static constexpr size_t SIZE_OF_CONTACTS = sizeof(SHContact) * static_cast(MAX_NUM_CONTACTS); + memcpy_s(contacts, SIZE_OF_CONTACTS, rhs.contacts, SIZE_OF_CONTACTS); + + for (int i = 0; i < SHContact::NUM_TANGENTS; ++i) + tangents[i] = rhs.tangents[i]; + + return *this; + } +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Math/Geometry/SHShape.cpp b/SHADE_Engine/src/Physics/Collision/Narrowphase/SHCapsuleVsCapsule.cpp similarity index 57% rename from SHADE_Engine/src/Math/Geometry/SHShape.cpp rename to SHADE_Engine/src/Physics/Collision/Narrowphase/SHCapsuleVsCapsule.cpp index 2f869029..c75437cb 100644 --- a/SHADE_Engine/src/Math/Geometry/SHShape.cpp +++ b/SHADE_Engine/src/Physics/Collision/Narrowphase/SHCapsuleVsCapsule.cpp @@ -1,7 +1,7 @@ /**************************************************************************************** - * \file SHShape.cpp + * \file SHCapsuleVsCapsule.cpp * \author Diren D Bharwani, diren.dbharwani, 390002520 - * \brief Implementation for a shape. + * \brief Implementation for the Detecting Collisions between two capsules * * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or * disclosure of this file or its contents without the prior written consent @@ -11,25 +11,25 @@ #include // Primary Header -#include "SHShape.h" +#include "SHCollision.h" + +// Project Headers +#include "Math/SHMathHelpers.h" namespace SHADE { /*-----------------------------------------------------------------------------------*/ - /* Constructors & Destructor Definitions */ + /* Public Member Functions Definitions */ /*-----------------------------------------------------------------------------------*/ - SHShape::SHShape() - : type { Type::NONE } - {} - - /*-----------------------------------------------------------------------------------*/ - /* Getter Function Definitions */ - /*-----------------------------------------------------------------------------------*/ - - SHShape::Type SHShape::GetType() const noexcept + bool SHCollision::CapsuleVsCapsule(const SHCollisionShape& A, const SHCollisionShape& B) noexcept { - return type; + return false; + } + + bool SHCollision::CapsuleVsCapsule(SHManifold& manifold, const SHCollisionShape& A, const SHCollisionShape& B) noexcept + { + return false; } } // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/Narrowphase/SHCapsuleVsConvex.cpp b/SHADE_Engine/src/Physics/Collision/Narrowphase/SHCapsuleVsConvex.cpp new file mode 100644 index 00000000..6c82c3a5 --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/Narrowphase/SHCapsuleVsConvex.cpp @@ -0,0 +1,49 @@ +/**************************************************************************************** + * \file SHCapsuleVsConvex.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for the Detecting Collisions between a capsule and a convex + * polyhedron. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "SHCollision.h" + +// Project Headers +#include "Math/SHMathHelpers.h" +#include "Physics/Collision/Shapes/SHConvexPolyhedron.h" + +// TODO + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Public Member Functions Definitions */ + /*-----------------------------------------------------------------------------------*/ + + bool SHCollision::CapsuleVsConvex(const SHCollisionShape& A, const SHCollisionShape& B) noexcept + { + return false; + } + + bool SHCollision::ConvexVsCapsule(const SHCollisionShape& A, const SHCollisionShape& B) noexcept + { + return CapsuleVsConvex(B, A); + } + + bool SHCollision::CapsuleVsConvex(SHManifold& manifold, const SHCollisionShape& A, const SHCollisionShape& B) noexcept + { + return false; + } + + bool SHCollision::ConvexVsCapsule(SHManifold& manifold, const SHCollisionShape& A, const SHCollisionShape& B) noexcept + { + return CapsuleVsConvex(manifold, B, A); + } + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/Narrowphase/SHCollision.h b/SHADE_Engine/src/Physics/Collision/Narrowphase/SHCollision.h new file mode 100644 index 00000000..060d42cc --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/Narrowphase/SHCollision.h @@ -0,0 +1,222 @@ +/**************************************************************************************** + * \file SHCollision.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for the Detecting Collisions between two shapes + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +// Project Headers +#include "Math/Geometry/SHPlane.h" +#include "Physics/Collision/Contacts/SHManifold.h" +#include "Physics/Collision/Contacts/SHCollisionKey.h" +#include "Physics/Collision/Shapes/SHHalfEdgeStructure.h" + + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + + /** + * @brief + * Encapsulates static methods for testing for collision between two shapes. + */ + class SH_API SHCollision + { + public: + /*---------------------------------------------------------------------------------*/ + /* Member Functions */ + /*---------------------------------------------------------------------------------*/ + + /* Spheres VS X */ + + [[nodiscard]] static bool SphereVsSphere (const SHCollisionShape& A, const SHCollisionShape& B) noexcept; + [[nodiscard]] static bool SphereVsSphere (SHManifold& manifold, const SHCollisionShape& A, const SHCollisionShape& B) noexcept; + + [[nodiscard]] static bool SphereVsCapsule (const SHCollisionShape& A, const SHCollisionShape& B) noexcept; + [[nodiscard]] static bool SphereVsCapsule (SHManifold& manifold, const SHCollisionShape& A, const SHCollisionShape& B) noexcept; + + [[nodiscard]] static bool SphereVsConvex (const SHCollisionShape& A, const SHCollisionShape& B) noexcept; + [[nodiscard]] static bool SphereVsConvex (SHManifold& manifold, const SHCollisionShape& A, const SHCollisionShape& B) noexcept; + + /* Capsule VS X */ + + [[nodiscard]] static bool CapsuleVsSphere (const SHCollisionShape& A, const SHCollisionShape& B) noexcept; + [[nodiscard]] static bool CapsuleVsSphere (SHManifold& manifold, const SHCollisionShape& A, const SHCollisionShape& B) noexcept; + + [[nodiscard]] static bool CapsuleVsCapsule (const SHCollisionShape& A, const SHCollisionShape& B) noexcept; + [[nodiscard]] static bool CapsuleVsCapsule (SHManifold& manifold, const SHCollisionShape& A, const SHCollisionShape& B) noexcept; + + [[nodiscard]] static bool CapsuleVsConvex (const SHCollisionShape& A, const SHCollisionShape& B) noexcept; + [[nodiscard]] static bool CapsuleVsConvex (SHManifold& manifold, const SHCollisionShape& A, const SHCollisionShape& B) noexcept; + + /* Polygon VS X */ + + [[nodiscard]] static bool ConvexVsSphere (const SHCollisionShape& A, const SHCollisionShape& B) noexcept; + [[nodiscard]] static bool ConvexVsSphere (SHManifold& manifold, const SHCollisionShape& A, const SHCollisionShape& B) noexcept; + + [[nodiscard]] static bool ConvexVsCapsule (const SHCollisionShape& A, const SHCollisionShape& B) noexcept; + [[nodiscard]] static bool ConvexVsCapsule (SHManifold& manifold, const SHCollisionShape& A, const SHCollisionShape& B) noexcept; + + [[nodiscard]] static bool ConvexVsConvex (const SHCollisionShape& A, const SHCollisionShape& B) noexcept; + [[nodiscard]] static bool ConvexVsConvex (SHManifold& manifold, const SHCollisionShape& A, const SHCollisionShape& B) noexcept; + + private: + /*---------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*---------------------------------------------------------------------------------*/ + + struct FaceQuery + { + bool colliding = false; // Allows for early out + int32_t closestFace = -1; + float bestDistance = std::numeric_limits::lowest(); + }; + + struct EdgeQuery + { + int32_t halfEdgeA = -1; + int32_t halfEdgeB = -1; + int32_t axis = -1; + float bestDistance = std::numeric_limits::lowest(); + }; + + struct ClipVertex + { + SHVec3 position; + SHContactFeatures featurePair; + }; + + /*---------------------------------------------------------------------------------*/ + /* Member Functions */ + /*---------------------------------------------------------------------------------*/ + + // Sphere VS Convex + + static FaceQuery findClosestFace + ( + const SHSphere& sphere + , const SHConvexPolyhedron& polyhedron + ) noexcept; + + static int32_t findClosestPoint + ( + const SHSphere& sphere + , const SHConvexPolyhedron& polyhedron + , int32_t faceIndex + ) noexcept; + + static int32_t findVoronoiRegion + ( + const SHSphere& sphere + , const SHVec3& faceVertex + , const SHVec3& faceNormal + , const SHVec3& tangent1 + , const SHVec3& tangent2 + ) noexcept; + + // Capsule VS Convex + + // TODO: Capsule VS Convex uses the same gauss map optimisation as convex vs convex + + // Convex VS Convex + + /* + * ! References + * https://ia801303.us.archive.org/30/items/GDC2013Gregorius/GDC2013-Gregorius.pdf + * https://github.com/RandyGaul/qu3e/blob/master/src/collision/q3Collide.cpp + */ + + static FaceQuery queryFaceDirections + ( + const SHConvexPolyhedron& A + , const SHConvexPolyhedron& B + ) noexcept; + + + + static EdgeQuery queryEdgeDirections + ( + const SHConvexPolyhedron& A + , const SHConvexPolyhedron& B + ) noexcept; + + static bool buildMinkowskiFace + ( + const SHConvexPolyhedron& A + , const SHConvexPolyhedron& B + , int32_t edgeA + , int32_t edgeB + ) noexcept; + + static bool isMinkowskiFace + ( + const SHVec3& a + , const SHVec3& b + , const SHVec3& c + , const SHVec3& d + ) noexcept; + + static float distanceBetweenEdges + ( + const SHConvexPolyhedron& A + , const SHConvexPolyhedron& B + , int32_t edgeA + , int32_t edgeB + ) noexcept; + + static SHVec3 findClosestPointBetweenEdges + ( + const SHConvexPolyhedron& A + , const SHConvexPolyhedron& B + , int32_t edgeA + , int32_t edgeB + ) noexcept; + + static int32_t findIncidentFace + ( + const SHConvexPolyhedron& poly + , const SHVec3& normal + ) noexcept; + + static bool findFaceContacts + ( + SHManifold& manifold + , const SHConvexPolyhedron& incPoly + , int32_t incFace + , const SHConvexPolyhedron& refPoly + , int32_t refFace + , bool flip + ) noexcept; + + static std::vector clipPolygonWithPlane + ( + const std::vector& in + , int32_t numIn + , const SHPlane& plane + , int32_t planeIdx + ) noexcept; + + static std::vector reduceContacts + ( + const std::vector& in + , const SHVec3& faceNormal + ) noexcept; + + // Cached Convex VS Convex + + static bool cachedConvexVSConvex + ( + SHManifold& manifold + , const SHSATInfo& cachedInfo + , const SHConvexPolyhedron& A + , const SHConvexPolyhedron& B + ) noexcept; + }; +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/Narrowphase/SHCollisionDispatch.cpp b/SHADE_Engine/src/Physics/Collision/Narrowphase/SHCollisionDispatch.cpp new file mode 100644 index 00000000..075e113f --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/Narrowphase/SHCollisionDispatch.cpp @@ -0,0 +1,65 @@ +/**************************************************************************************** + * \file SHCollisionDispatch.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for the static Collision Dispatcher + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "SHCollisionDispatch.h" + +// Project Header +#include "SHCollision.h" +#include "Tools/Utilities/SHUtilities.h" + + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Static Data Member Definitions */ + /*-----------------------------------------------------------------------------------*/ + + const SHCollisionDispatcher::ManifoldCollide SHCollisionDispatcher::manifoldCollide[NUM_SHAPES][NUM_SHAPES] + { + // vs Sphere / Box / Capsule + + { SHCollision::SphereVsSphere, SHCollision::SphereVsConvex, SHCollision::SphereVsCapsule } // Sphere + , { SHCollision::ConvexVsSphere, SHCollision::ConvexVsConvex, SHCollision::ConvexVsCapsule } // Box + , { SHCollision::CapsuleVsSphere, SHCollision::CapsuleVsConvex, SHCollision::CapsuleVsCapsule } // Capsule + }; + + const SHCollisionDispatcher::TriggerCollide SHCollisionDispatcher::triggerCollide[NUM_SHAPES][NUM_SHAPES] + { + // vs Sphere / Box / Capsule + + { SHCollision::SphereVsSphere, SHCollision::SphereVsConvex, SHCollision::SphereVsCapsule } // Sphere + , { SHCollision::ConvexVsSphere, SHCollision::ConvexVsConvex, SHCollision::ConvexVsCapsule } // Box + , { SHCollision::CapsuleVsSphere, SHCollision::CapsuleVsConvex, SHCollision::CapsuleVsCapsule } // Capsule + }; + + /*-----------------------------------------------------------------------------------*/ + /* Public Member Functions Definitions */ + /*-----------------------------------------------------------------------------------*/ + + bool SHCollisionDispatcher::Collide(SHManifold& manifold, const SHCollisionShape& A, const SHCollisionShape& B) noexcept + { + const int TYPE_A = SHUtilities::ConvertEnum(A.GetType()); + const int TYPE_B = SHUtilities::ConvertEnum(B.GetType()); + + return manifoldCollide[TYPE_A][TYPE_B](manifold, A, B); + } + + bool SHCollisionDispatcher::Collide(const SHCollisionShape& A, const SHCollisionShape& B) noexcept + { + const int TYPE_A = SHUtilities::ConvertEnum(A.GetType()); + const int TYPE_B = SHUtilities::ConvertEnum(B.GetType()); + + return triggerCollide[TYPE_A][TYPE_B](A, B); + } + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/SHPhysicsWorld.h b/SHADE_Engine/src/Physics/Collision/Narrowphase/SHCollisionDispatch.h similarity index 51% rename from SHADE_Engine/src/Physics/SHPhysicsWorld.h rename to SHADE_Engine/src/Physics/Collision/Narrowphase/SHCollisionDispatch.h index c5152c44..1df84da0 100644 --- a/SHADE_Engine/src/Physics/SHPhysicsWorld.h +++ b/SHADE_Engine/src/Physics/Collision/Narrowphase/SHCollisionDispatch.h @@ -1,7 +1,7 @@ /**************************************************************************************** - * \file SHPhysicsWorld.h + * \file SHCollisionDispatch.h * \author Diren D Bharwani, diren.dbharwani, 390002520 - * \brief Interface for a Physics World. + * \brief Interface for the static Collision Dispatcher * * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or * disclosure of this file or its contents without the prior written consent @@ -10,11 +10,9 @@ #pragma once -#include - // Project Headers -#include "Math/SHMath.h" -#include "SH_API.h" +#include "Physics/Collision/Contacts/SHManifold.h" +#include "Physics/Collision/Contacts/SHCollisionKey.h" namespace SHADE { @@ -22,52 +20,36 @@ namespace SHADE /* Type Definitions */ /*-----------------------------------------------------------------------------------*/ - struct SH_API SHPhysicsWorldState + /** + * @brief + * Encapsulates static methods for running narrow-phase collision detection. + */ + class SH_API SHCollisionDispatcher { public: + /*---------------------------------------------------------------------------------*/ + /* Member Functions */ + /*---------------------------------------------------------------------------------*/ + static bool Collide (SHManifold& manifold, const SHCollisionShape& A, const SHCollisionShape& B) noexcept; + static bool Collide (const SHCollisionShape& A, const SHCollisionShape& B) noexcept; + + private: /*---------------------------------------------------------------------------------*/ /* Type Definitions */ /*---------------------------------------------------------------------------------*/ - struct WorldSettings - { - public: - /*-------------------------------------------------------------------------------*/ - /* Data Members */ - /*-------------------------------------------------------------------------------*/ - - SHVec3 gravity = SHVec3{ 0.0f, -9.81f, 0.0f }; - uint16_t numVelocitySolverIterations = 10; - uint16_t numPositionSolverIterations = 5; - bool sleepingEnabled = true; - }; + using ManifoldCollide = bool(*)(SHManifold&, const SHCollisionShape& A, const SHCollisionShape& B); + using TriggerCollide = bool(*)(const SHCollisionShape& A, const SHCollisionShape& B); /*---------------------------------------------------------------------------------*/ /* Data Members */ /*---------------------------------------------------------------------------------*/ - rp3d::PhysicsWorld* world; - WorldSettings settings; + static constexpr int NUM_SHAPES = static_cast(SHCollisionShape::Type::COUNT); - /*---------------------------------------------------------------------------------*/ - /* Constructors & Destructor */ - /*---------------------------------------------------------------------------------*/ - - SHPhysicsWorldState() noexcept; - - /*---------------------------------------------------------------------------------*/ - /* Function Members */ - /*---------------------------------------------------------------------------------*/ - - void CreateWorld (rp3d::PhysicsCommon& factory); - void DestroyWorld (rp3d::PhysicsCommon& factory); - - /** - * @brief Applies the current settings to the physics world. The world must be created - * before this is called. - */ - void UpdateSettings () const noexcept; + static const ManifoldCollide manifoldCollide [NUM_SHAPES][NUM_SHAPES]; + static const TriggerCollide triggerCollide [NUM_SHAPES][NUM_SHAPES]; }; diff --git a/SHADE_Engine/src/Physics/Collision/Narrowphase/SHConvexVsConvex.cpp b/SHADE_Engine/src/Physics/Collision/Narrowphase/SHConvexVsConvex.cpp new file mode 100644 index 00000000..e38a66a7 --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/Narrowphase/SHConvexVsConvex.cpp @@ -0,0 +1,822 @@ +/**************************************************************************************** + * \file SHConvexVsConvex.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for the Detecting Collisions between two convex polyhedrons. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "SHCollision.h" + +// Project Headers +#include "Math/SHMathHelpers.h" +#include "Math/Geometry/SHPlane.h" +#include "Physics/Collision/Shapes/SHConvexPolyhedron.h" +#include "Physics/SHPhysicsConstants.h" +#include "Tools/Utilities/SHUtilities.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Public Member Functions Definitions */ + /*-----------------------------------------------------------------------------------*/ + + bool SHCollision::ConvexVsConvex(const SHCollisionShape& A, const SHCollisionShape& B) noexcept + { + const SHConvexPolyhedron& POLY_A = dynamic_cast(A); + const SHConvexPolyhedron& POLY_B = dynamic_cast(B); + + const FaceQuery FACE_QUERY_A = queryFaceDirections(POLY_A, POLY_B); + if (FACE_QUERY_A.bestDistance > 0.0f) + return false; + + const FaceQuery FACE_QUERY_B = queryFaceDirections(POLY_B, POLY_A); + if (FACE_QUERY_B.bestDistance > 0.0f) + return false; + + const EdgeQuery EDGE_QUERY = queryEdgeDirections(POLY_A, POLY_B); + if (EDGE_QUERY.bestDistance > 0.0f) + return false; + + return true; + } + + bool SHCollision::ConvexVsConvex(SHManifold& manifold, const SHCollisionShape& A, const SHCollisionShape& B) noexcept + { + static constexpr float ABSOLUTE_TOLERANCE = 0.01f; // 0.0005 + static constexpr float RELATIVE_TOLERANCE = 0.95f; // 1.0002 + + const SHConvexPolyhedron& POLY_A = dynamic_cast(A); + const SHConvexPolyhedron& POLY_B = dynamic_cast(B); + + if (manifold.cachedSATInfo.type != SHSATInfo::Type::INVALID) + return cachedConvexVSConvex(manifold, manifold.cachedSATInfo, POLY_A, POLY_B); + + SHSATInfo cachedInfo; + + const FaceQuery FACE_QUERY_A = queryFaceDirections(POLY_A, POLY_B); + if (FACE_QUERY_A.bestDistance > 0.0f) + { + // cache the info + cachedInfo.type = SHSATInfo::Type::FACE; + cachedInfo.info.refPoly = SHSATInfo::ShapeID::A; + cachedInfo.info.refFace = FACE_QUERY_A.closestFace; + + manifold.cachedSATInfo = cachedInfo; + + return false; + } + + + const FaceQuery FACE_QUERY_B = queryFaceDirections(POLY_B, POLY_A); + if (FACE_QUERY_B.bestDistance > 0.0f) + { + // cache the info + cachedInfo.type = SHSATInfo::Type::FACE; + cachedInfo.info.refPoly = SHSATInfo::ShapeID::B; + cachedInfo.info.refFace = FACE_QUERY_B.closestFace; + + manifold.cachedSATInfo = cachedInfo; + + return false; + } + + const EdgeQuery EDGE_QUERY = queryEdgeDirections(POLY_A, POLY_B); + if (EDGE_QUERY.bestDistance > 0.0f) + { + // cache the info + cachedInfo.type = SHSATInfo::Type::EDGE; + cachedInfo.info.edgeA = EDGE_QUERY.halfEdgeA; + cachedInfo.info.edgeB = EDGE_QUERY.halfEdgeB; + + manifold.cachedSATInfo = cachedInfo; + + return false; + } + + // Apply weight to improve frame coherence of normal directions. + // We want a normal in the direction from A -> B, so we flip the normal if needed. + bool flipNormal = false; + const SHConvexPolyhedron* referencePoly = nullptr; + const SHConvexPolyhedron* incidentPoly = nullptr; + + FaceQuery minFaceQuery; + if (FACE_QUERY_A.bestDistance + ABSOLUTE_TOLERANCE > FACE_QUERY_B.bestDistance * RELATIVE_TOLERANCE) + { + minFaceQuery = FACE_QUERY_A; + referencePoly = &POLY_A; + incidentPoly = &POLY_B; + flipNormal = false; + + cachedInfo.type = SHSATInfo::Type::FACE; + cachedInfo.info.refPoly = SHSATInfo::ShapeID::A; + cachedInfo.info.refFace = minFaceQuery.closestFace; + } + else + { + minFaceQuery = FACE_QUERY_B; + referencePoly = &POLY_B; + incidentPoly = &POLY_A; + flipNormal = true; + + cachedInfo.type = SHSATInfo::Type::FACE; + cachedInfo.info.refPoly = SHSATInfo::ShapeID::B; + cachedInfo.info.refFace = minFaceQuery.closestFace; + } + + + + + // If an edge pair contains the closest distance,vwe ignore any face queries and find the closest points on + // each edge and use that as the contact point. + if (EDGE_QUERY.bestDistance * RELATIVE_TOLERANCE > minFaceQuery.bestDistance + ABSOLUTE_TOLERANCE) + { + const SHHalfEdgeStructure::HalfEdge& HALF_EDGE_A = POLY_A.GetHalfEdge(EDGE_QUERY.halfEdgeA); + const SHHalfEdgeStructure::HalfEdge& HALF_EDGE_B = POLY_B.GetHalfEdge(EDGE_QUERY.halfEdgeB); + + const SHVec3 HEAD_A = POLY_A.GetVertex(HALF_EDGE_A.headVertexIndex); + const SHVec3 TAIL_A = POLY_A.GetVertex(HALF_EDGE_A.tailVertexIndex); + const SHVec3 HEAD_B = POLY_B.GetVertex(HALF_EDGE_B.headVertexIndex); + const SHVec3 TAIL_B = POLY_B.GetVertex(HALF_EDGE_B.tailVertexIndex); + + const SHVec3 VA = SHVec3::Normalise(HEAD_A - TAIL_A); + const SHVec3 VB = SHVec3::Normalise(HEAD_B - TAIL_B); + + manifold.normal = SHVec3::Cross(VB, VA); + // Flip normal if need to ( A -> B) + if (SHVec3::Dot(manifold.normal, HEAD_A - A.GetWorldCentroid()) < 0.0f) + manifold.normal = -manifold.normal; + + // In this scenario, we only have one contact + uint32_t numContacts = 0; + + SHContact contact; + contact.featurePair.key = EDGE_QUERY.axis; + contact.position = findClosestPointBetweenEdges(POLY_A, POLY_B, EDGE_QUERY.halfEdgeA, EDGE_QUERY.halfEdgeB); + contact.penetration = -EDGE_QUERY.bestDistance; + + manifold.contacts[numContacts++] = contact; + manifold.numContacts = numContacts; + + // Cache the info + cachedInfo.type = SHSATInfo::Type::EDGE; + cachedInfo.info.edgeA = EDGE_QUERY.halfEdgeA; + cachedInfo.info.edgeB = EDGE_QUERY.halfEdgeB; + + manifold.cachedSATInfo = cachedInfo; + + return true; + } + + const SHVec3 REFERENCE_NORMAL = referencePoly->GetNormal(minFaceQuery.closestFace); + const int32_t INCIDENT_FACE_IDX = findIncidentFace(*incidentPoly, REFERENCE_NORMAL); + + manifold.cachedSATInfo = cachedInfo; + return findFaceContacts(manifold, *incidentPoly, INCIDENT_FACE_IDX, *referencePoly, minFaceQuery.closestFace, flipNormal); + } + + /*-----------------------------------------------------------------------------------*/ + /* Private Member Functions Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHCollision::FaceQuery SHCollision::queryFaceDirections(const SHConvexPolyhedron& A, const SHConvexPolyhedron& B) noexcept + { + FaceQuery faceQuery; + + const int32_t NUM_FACES = A.GetFaceCount(); + for (const int32_t i : std::views::iota(0, NUM_FACES)) + { + const SHHalfEdgeStructure::Face& FACE_A = A.GetFace(i); + const SHVec3 NORMAL_A = A.GetNormal(i); + + // Smallest penetration is point closest to face normal + const SHVec3 SUPPORT_POINT = B.FindSupportPoint(-NORMAL_A); + + const SHVec3 VERTEX_A = A.GetVertex(FACE_A.vertexIndices[0].index); + + const SHPlane FACE_PLANE { VERTEX_A, NORMAL_A }; + const float DISTANCE = FACE_PLANE.SignedDistance(SUPPORT_POINT); + + if (DISTANCE > faceQuery.bestDistance) + { + faceQuery.bestDistance = DISTANCE; + faceQuery.closestFace = i; + } + } + + return faceQuery; + } + + SHCollision::EdgeQuery SHCollision::queryEdgeDirections(const SHConvexPolyhedron& A, const SHConvexPolyhedron& B) noexcept + { + EdgeQuery edgeQuery; + + const int32_t EDGE_COUNT_A = A.GetHalfEdgeCount(); + const int32_t EDGE_COUNT_B = B.GetHalfEdgeCount(); + + int32_t axis = -1; + for (int32_t i = 0; i < EDGE_COUNT_A; i += 2) + { + for (int32_t j = 0; j < EDGE_COUNT_B; j += 2) + { + const bool IS_MINKOWSKI_FACE = buildMinkowskiFace(A, B, i, j); + if (!IS_MINKOWSKI_FACE) + continue; + + ++axis; + + const float SEPARATION = distanceBetweenEdges(A, B, i, j); + if (SEPARATION > edgeQuery.bestDistance) + { + edgeQuery.bestDistance = SEPARATION; + edgeQuery.halfEdgeA = i; + edgeQuery.halfEdgeB = j; + edgeQuery.axis = axis; + } + } + } + + return edgeQuery; + } + + bool SHCollision::buildMinkowskiFace(const SHConvexPolyhedron& A, const SHConvexPolyhedron& B, int32_t edgeA, int32_t edgeB) noexcept + { + // Get Half Edge from both polygons + const SHHalfEdgeStructure::HalfEdge& HALF_EDGE_A = A.GetHalfEdge(edgeA); + const SHHalfEdgeStructure::HalfEdge& TWIN_EDGE_A = A.GetHalfEdge(HALF_EDGE_A.twinEdgeIndex); + + const SHHalfEdgeStructure::HalfEdge& HALF_EDGE_B = B.GetHalfEdge(edgeB); + const SHHalfEdgeStructure::HalfEdge& TWIN_EDGE_B = B.GetHalfEdge(HALF_EDGE_B.twinEdgeIndex); + + + + // Get normals from face and twin edge face + const SHVec3 NA = A.GetNormal(HALF_EDGE_A.faceIndex); + const SHVec3 NB = A.GetNormal(TWIN_EDGE_A.faceIndex); + const SHVec3 NC = B.GetNormal(HALF_EDGE_B.faceIndex); + const SHVec3 ND = B.GetNormal(TWIN_EDGE_B.faceIndex); + + return isMinkowskiFace(NA, NB, -NC, -ND); + } + + bool SHCollision::isMinkowskiFace(const SHVec3& a, const SHVec3& b, const SHVec3& c, const SHVec3& d) noexcept + { + const SHVec3 BXA = SHVec3::Cross(b, a); + const SHVec3 DXC = SHVec3::Cross(d, c); + + const float CBA = SHVec3::Dot(c, BXA); + const float DBA = SHVec3::Dot(d, BXA); + const float ADC = SHVec3::Dot(a, DXC); + const float BDC = SHVec3::Dot(b, DXC); + + return CBA * DBA < 0.0f && ADC * BDC < 0.0f && CBA * BDC > 0.0f; + } + + float SHCollision::distanceBetweenEdges(const SHConvexPolyhedron& A, const SHConvexPolyhedron& B, int32_t edgeA, int32_t edgeB) noexcept + { + const SHHalfEdgeStructure::HalfEdge& HALF_EDGE_A = A.GetHalfEdge(edgeA); + const SHHalfEdgeStructure::HalfEdge& HALF_EDGE_B = B.GetHalfEdge(edgeB); + + const SHVec3 HEAD_A = A.GetVertex(HALF_EDGE_A.headVertexIndex); + const SHVec3 TAIL_A = A.GetVertex(HALF_EDGE_A.tailVertexIndex); + const SHVec3 HEAD_B = B.GetVertex(HALF_EDGE_B.headVertexIndex); + const SHVec3 TAIL_B = B.GetVertex(HALF_EDGE_B.tailVertexIndex); + + const SHVec3 DIR_A = SHVec3::Normalise(HEAD_A - TAIL_A); + const SHVec3 DIR_B = SHVec3::Normalise(HEAD_B - TAIL_B); + + // Check if the edges are parallel (abs dot product is 1) + const float DOT_BETWEEN_EDGES = std::fabs(SHVec3::Dot(DIR_A, DIR_B)); + if (SHMath::CompareFloat(DOT_BETWEEN_EDGES, 1.0f)) + return std::numeric_limits::lowest(); + + SHVec3 normal = SHVec3::Cross(DIR_A, DIR_B); + // Flip normal if need to ( A -> B) + if (SHVec3::Dot(normal, HEAD_A - A.GetWorldCentroid()) < 0.0f) + normal = -normal; + + return SHVec3::Dot(normal, HEAD_B - HEAD_A); + } + + SHVec3 SHCollision::findClosestPointBetweenEdges(const SHConvexPolyhedron& A, const SHConvexPolyhedron& B, int32_t edgeA, int32_t edgeB) noexcept + { + /* + * The two edges can be parameterised in the form p + tv + * + * LA(r) = A + rVA + * LB(s) = B + sVB + * + * The vector between the closest points is the cross product of VA and VB. + * Since the cross product is orthogonal to VA and VB, we can generalise this as: + * (LB(s) - LA(r)) /dot VA = 0 + * (LB(s) - LA(r)) /dot VB = 0 + * + * Where LB(s) - LA(r) is the same vector as VB X VA. + * + */ + + const SHHalfEdgeStructure::HalfEdge& HALF_EDGE_A = A.GetHalfEdge(edgeA); + const SHHalfEdgeStructure::HalfEdge& HALF_EDGE_B = B.GetHalfEdge(edgeB); + + const SHVec3 HEAD_A = A.GetVertex(HALF_EDGE_A.headVertexIndex); + const SHVec3 TAIL_A = A.GetVertex(HALF_EDGE_A.tailVertexIndex); + const SHVec3 HEAD_B = B.GetVertex(HALF_EDGE_B.headVertexIndex); + const SHVec3 TAIL_B = B.GetVertex(HALF_EDGE_B.tailVertexIndex); + + const SHVec3 VA = SHVec3::Normalise(HEAD_A - TAIL_A); + const SHVec3 VB = SHVec3::Normalise(HEAD_B - TAIL_B); + + /* + * Find a1, a2, b1, b2, c1, c2 to solve the simultaneous equation + * + * C' = TAIL_B - TAIL_A + * + * a = VB /dot U + * b = -VA /dot U + * c = C' /dot U + * + * U is either VA or VB + * + * TODO: Check if segments degenerate into a point + */ + + const SHVec3 C = TAIL_B - TAIL_A; + + const float VB_DOT_VA = SHVec3::Dot(VB, VA); // a1 + const float VB_DOT_VB = SHVec3::Dot(VB, VB); // a2 + const float AV_DOT_VA = SHVec3::Dot(-VA, VA); // b1 + const float AV_DOT_VB = SHVec3::Dot(-VA, VB); // b2 + const float C_DOT_VA = SHVec3::Dot(C, VA); // c1 + const float C_DOT_VB = SHVec3::Dot(C, VB); // c2 + + /* + * We only need to solve for R + * R = (c1a2 / a1 - c2) / ( b2 - a2b1/a1 ) + */ + + const float A2_OVER_A1 = VB_DOT_VA == 0.0f ? 0.0f : VB_DOT_VB / VB_DOT_VA; + const float NUMERATOR = C_DOT_VA * A2_OVER_A1 - C_DOT_VB; + const float DENOMINATOR = AV_DOT_VB - AV_DOT_VA * A2_OVER_A1; + + // We clamp it because the factor cannot be beyond [0,1] as it would be beyond the segment if it was so. + const float R = DENOMINATOR == 0.0f ? NUMERATOR : NUMERATOR / DENOMINATOR; + + // Just take a point from A since it's A -> B + return TAIL_A + R * VA; + } + + int32_t SHCollision::findIncidentFace(const SHConvexPolyhedron& poly, const SHVec3& normal) noexcept + { + // Get the most anti-parallel face to the normal + int32_t bestFace = 0; + float bestProjection = std::numeric_limits::max(); + + const int32_t NUM_FACES = poly.GetFaceCount(); + for (const int32_t i : std::views::iota(0, NUM_FACES)) + { + const SHVec3 INC_NORMAL = poly.GetNormal(i); + const float PROJECTION = SHVec3::Dot(INC_NORMAL, normal); + + if (PROJECTION < bestProjection) + { + bestProjection = PROJECTION; + bestFace = i; + } + } + + return bestFace; + } + + bool SHCollision::findFaceContacts(SHManifold& manifold, const SHConvexPolyhedron& incPoly, int32_t incFace, const SHConvexPolyhedron& refPoly, int32_t refFace, bool flip) noexcept + { + const SHHalfEdgeStructure::Face& INCIDENT_FACE = incPoly.GetFace(incFace); + const SHHalfEdgeStructure::Face& REFERENCE_FACE = refPoly.GetFace(refFace); + + const int32_t NUM_INCIDENT_VERTICES = static_cast(INCIDENT_FACE.vertexIndices.size()); + const int32_t NUM_REFERENCE_VERTICES = static_cast(REFERENCE_FACE.vertexIndices.size()); + + // Build incoming vertices to clip + std::vector clipIn; + clipIn.resize(NUM_INCIDENT_VERTICES * 2, ClipVertex{}); + + int32_t numClipIn = 0; + for (int32_t i = 0; i < NUM_INCIDENT_VERTICES; ++i) + { + const int32_t prevI = i - 1 < 0 ? NUM_INCIDENT_VERTICES - 1 : i - 1; + + const int32_t V_INDEX = INCIDENT_FACE.vertexIndices[i].index; + + // The incoming id is the previous edge + // The outgoing id is the current edge (where this vertex is the tail of) + + ClipVertex v; + v.position = incPoly.GetVertex(V_INDEX); + v.featurePair.inI = INCIDENT_FACE.vertexIndices[prevI].edgeIndex; + v.featurePair.outI = INCIDENT_FACE.vertexIndices[i].edgeIndex; + v.featurePair.inR = 0; + v.featurePair.outR = 0; + + clipIn[numClipIn++] = v; + } + + // Clip the vertices against the reference face side planes. + // Number of side planes == number of edges == number of vertices + const SHVec3 REF_NORMAL = refPoly.GetNormal(refFace); + for (int32_t i = 0; i < NUM_REFERENCE_VERTICES; ++i) + { + // Side plane can be built with the vertex on the edge and the plane's normal + // Plane normal = faceNormal X tangent (v2 - v1) + + const int32_t V1_INDEX = REFERENCE_FACE.vertexIndices[i].index; + const int32_t V2_INDEX = REFERENCE_FACE.vertexIndices[(i + 1) % NUM_REFERENCE_VERTICES].index; + + const SHVec3 V1 = refPoly.GetVertex(V1_INDEX); + const SHVec3 V2 = refPoly.GetVertex(V2_INDEX); + + const SHVec3 TANGENT = SHVec3::Normalise(V2 - V1); + const SHPlane CLIP_PLANE { V1, SHVec3::Cross(REF_NORMAL, TANGENT) }; + + std::vector clipOut = clipPolygonWithPlane(clipIn, numClipIn, CLIP_PLANE, REFERENCE_FACE.vertexIndices[i].edgeIndex); + if (clipOut.empty()) + return false; + + // Replace the clip container's contents with the clipped points for the next clipping pass + const int32_t NUM_CLIPPED = static_cast(clipOut.size()); + for (int32_t clippedIndex = 0; clippedIndex < NUM_CLIPPED; ++clippedIndex) + { + clipIn[clippedIndex].position = clipOut[clippedIndex].position; + clipIn[clippedIndex].featurePair.key = clipOut[clippedIndex].featurePair.key; + } + numClipIn = NUM_CLIPPED; + } + + // From the final set of clipped points, only keep the points that are below the reference plane. + const SHPlane REFERENCE_PLANE{ refPoly.GetVertex(REFERENCE_FACE.vertexIndices.front().index), REF_NORMAL }; + + uint32_t numContacts = 0; + + std::vector contacts; + for (int32_t i = 0; i < numClipIn; ++i) + { + const SHVec3 POS = clipIn[i].position; + const float DIST = REFERENCE_PLANE.SignedDistance(POS); + if (DIST <= 0.0f) + { + SHContact contact; + contact.position = POS; + contact.penetration = -DIST; + + if (flip) + { + contact.featurePair.inI = clipIn[i].featurePair.inR; + contact.featurePair.inR = clipIn[i].featurePair.inI; + contact.featurePair.outI = clipIn[i].featurePair.outR; + contact.featurePair.outR = clipIn[i].featurePair.outI; + } + else + { + contact.featurePair.key = clipIn[i].featurePair.key; + } + + contacts.emplace_back(contact); + ++numContacts; + } + } + + // Reduce contact manifold if more than 4 points + if (numContacts > 4) + { + const auto INDICES_TO_KEEP = reduceContacts(contacts, REF_NORMAL); + std::vector reducedContacts; + + const int32_t NUM_REDUCED = static_cast(INDICES_TO_KEEP.size()); + for (int32_t i = 0; i < NUM_REDUCED; ++i) + reducedContacts.emplace_back(contacts[INDICES_TO_KEEP[i]]); + + contacts.clear(); + // Copy contacts to main container + for (auto& contact : reducedContacts) + contacts.emplace_back(contact); + } + + // Remove potential duplicate contact points + // No way about this being an n^2 loop + static constexpr float THRESHOLD = SHPHYSICS_SAME_CONTACT_DISTANCE * SHPHYSICS_SAME_CONTACT_DISTANCE; + for (auto i = contacts.begin(); i != contacts.end(); ++i) + { + for (auto j = i + 1; j != contacts.end();) + { + const float D2 = SHVec3::DistanceSquared(i->position, j->position); + if (D2 < THRESHOLD) + j = contacts.erase(j); + else + ++j; + } + } + + // Copy final contacts into the manifold + numContacts = static_cast(contacts.size()); + for (int32_t i = 0; i < numContacts; ++i) + manifold.contacts[i] = contacts[i]; + + manifold.numContacts = numContacts; + manifold.normal = REF_NORMAL; + if (flip) + manifold.normal = -manifold.normal; + + return true; + } + + + std::vector SHCollision::clipPolygonWithPlane(const std::vector& in, int32_t numIn, const SHPlane& plane, int32_t planeIdx) noexcept + { + std::vector out; + + int32_t v1Index = numIn - 1; + int32_t v2Index = 0; + + float v1Distance = plane.SignedDistance(in[v1Index].position); + float v2Distance = 0.0f; + + for (int32_t i = 0; i < numIn; ++i) + { + v2Index = i; + + const SHVec3 v1Pos = in[v1Index].position; + const SHVec3 v2Pos = in[v2Index].position; + + v2Distance = plane.SignedDistance(v2Pos); + + // v1 in front, v2 behind + // keep the intersection point + if (v1Distance >= 0.0f && v2Distance < 0.0f) + { + ClipVertex intersection; + + // In case the edge is parallel, the intersection is just the start point + const bool IS_PARALLEL = SHMath::CompareFloat(SHVec3::Dot(v2Pos - v1Pos, plane.GetNormal()), 0.0f); + const float ALPHA = IS_PARALLEL ? 0.0f : v1Distance / SHVec3::Distance(v1Pos, v2Pos); + + intersection.position = SHVec3::ClampedLerp(v1Pos, v2Pos, ALPHA); + intersection.featurePair.inI = in[v1Index].featurePair.outI; + intersection.featurePair.outI = 0; + intersection.featurePair.inR = 0; + intersection.featurePair.outR = planeIdx; + + out.emplace_back(intersection); + } + + // v1 behind, v2 in front + // keep intersection point & v2 + if(v1Distance < 0.0f && v2Distance >= 0.0f) + { + ClipVertex intersection; + + // In case the edge is parallel, the intersection is just the start point + const bool IS_PARALLEL = SHMath::CompareFloat(SHVec3::Dot(v2Pos - v1Pos, plane.GetNormal()), 0.0f); + const float ALPHA = IS_PARALLEL ? 0.0f : -v1Distance / SHVec3::Distance(v1Pos, v2Pos); + + intersection.position = SHVec3::ClampedLerp(v1Pos, v2Pos, ALPHA); + intersection.featurePair.inI = 0; + intersection.featurePair.outI = in[v2Index].featurePair.inI; + intersection.featurePair.inR = planeIdx; + intersection.featurePair.outR = 0; + + out.emplace_back(intersection); + out.emplace_back(in[v2Index]); + } + + // both in front, keep v2 + if (v1Distance >= 0.0f && v2Distance >= 0.0f) + { + out.emplace_back(in[v2Index]); + } + + // v2 is the next v1 + v1Index = v2Index; + v1Distance = v2Distance; + } + + return out; + } + + std::vector SHCollision::reduceContacts(const std::vector& in, const SHVec3& faceNormal) noexcept + { + std::vector indicesToKeep; + + // Use a map to temporarily store and track the contacts we want + std::unordered_map contactMap; + const int32_t NUM_CONTACTS = static_cast(in.size()); + for (int32_t i = 0; i < NUM_CONTACTS; ++i) + contactMap.emplace(i, &in[i]); + + // Find the furthest point in a given direction + int32_t indexToKeep = -1; + float bestDistance = std::numeric_limits::lowest(); + + for (const auto& [index, contact] : contactMap) + { + const float DIST = SHVec3::Dot(contact->position, SHVec3::One); + if (DIST > bestDistance) + { + bestDistance = DIST; + indexToKeep = index; + } + } + + indicesToKeep.emplace_back(indexToKeep); + contactMap.erase(indexToKeep); + + + indexToKeep = -1; + bestDistance = std::numeric_limits::lowest(); + + // Find point furthest away from the first index + const SHVec3& FIRST_POS = in[indicesToKeep.back()].position; + for (const auto& [index, contact] : contactMap) + { + const float DIST_SQUARED = SHVec3::DistanceSquared(FIRST_POS, contact->position); + if (DIST_SQUARED > bestDistance) + { + bestDistance = DIST_SQUARED; + indexToKeep = index; + } + } + + indicesToKeep.emplace_back(indexToKeep); + contactMap.erase(indexToKeep); + + indexToKeep = -1; + + // We compute the triangle with the largest area. + // The area can be positive or negative depending on the winding order. + + float maxArea = std::numeric_limits::lowest(); + float minArea = std::numeric_limits::max(); + + int32_t maxAreaIndex = -1; + int32_t minAreaIndex = -1; + + const SHVec3& SECOND_POS = in[indicesToKeep.back()].position; + for (const auto& [index, contact] : contactMap) + { + const SHVec3& POS = contact->position; + const SHVec3 TO_P1 = FIRST_POS - POS; + const SHVec3 TO_P2 = SECOND_POS - POS; + + const float AREA = SHVec3::Dot(SHVec3::Cross(TO_P1, TO_P2), faceNormal) * 0.5f; + + if (AREA > maxArea) + { + maxArea = AREA; + maxAreaIndex = index; + } + + if (AREA < minArea) + { + minArea = AREA; + minAreaIndex = index; + } + } + + // Compare which triangle creates the largest area + bool isAreaPositive = false; + if (maxArea > (-minArea)) + { + isAreaPositive = true; + indexToKeep = maxAreaIndex; + } + else + { + isAreaPositive = false; + indexToKeep = minAreaIndex; + } + + indicesToKeep.emplace_back(indexToKeep); + contactMap.erase(indexToKeep); + + indexToKeep = -1; + + // For the last point, we want the point which forms the largest area that is winded opposite to the first triangle + // The areas should be inverted: If area was -ve, we want a +ve. Otherwise, vice versa. + float bestArea = 0.0f; + + const SHVec3& THIRD_POS = in[indicesToKeep.back()].position; + const SHVec3 ABC[3] = { FIRST_POS, SECOND_POS, THIRD_POS }; + + for (const auto& [index, contact] : contactMap) + { + const SHVec3& Q = contact->position; + + for (int i = 0; i < 3; ++i) + { + const int P1 = i; + const int P2 = (i + 1) % 3; + + const SHVec3 TO_P1 = ABC[P1] - Q; + const SHVec3 TO_P2 = ABC[P2] - Q; + + const float AREA = SHVec3::Dot(SHVec3::Cross(TO_P1, TO_P2), faceNormal) * 0.5f; + + if (isAreaPositive && AREA < bestArea) + { + bestArea = AREA; + indexToKeep = index; + } + + if (!isAreaPositive && AREA > bestArea) + { + bestArea = AREA; + indexToKeep = index; + } + } + } + + indicesToKeep.emplace_back(indexToKeep); + return indicesToKeep; + } + + bool SHCollision::cachedConvexVSConvex(SHManifold& manifold, const SHSATInfo& cachedInfo, const SHConvexPolyhedron& A, const SHConvexPolyhedron& B) noexcept + { + if (cachedInfo.type == SHSATInfo::Type::FACE) + { + SHASSERT(cachedInfo.info.refPoly != SHSATInfo::ShapeID::INVALID, "Attempted to perform cached SAT with an invalid cached collision!") + + // Assume the reference poly was A + const SHConvexPolyhedron* incPoly = &B; + const SHConvexPolyhedron* refPoly = &A; + bool flip = false; + + // Swap if it was B + if (cachedInfo.info.refPoly == SHSATInfo::ShapeID::B) + { + refPoly = &B; + incPoly = &A; + flip = true; + } + + const SHHalfEdgeStructure::Face& REF_FACE = refPoly->GetFace(cachedInfo.info.refFace); + const SHVec3 REF_NORMAL = refPoly->GetNormal(cachedInfo.info.refFace); + + const SHVec3 SUPPORT_POINT = incPoly->FindSupportPoint(-REF_NORMAL); + + const SHPlane REF_FACE_PLANE { refPoly->GetVertex(REF_FACE.vertexIndices[0].index), REF_NORMAL }; + const float DISTANCE = REF_FACE_PLANE.SignedDistance(SUPPORT_POINT); + + if (DISTANCE > 0.0f) + return false; + + // Find the incident face + const int32_t INCIDENT_FACE_INDEX = findIncidentFace(*incPoly, REF_NORMAL); + + return findFaceContacts(manifold, *incPoly, INCIDENT_FACE_INDEX, *refPoly, cachedInfo.info.refFace, flip); + } + + if (cachedInfo.type == SHSATInfo::Type::EDGE) + { + const float DISTANCE = distanceBetweenEdges(A, B, cachedInfo.info.edgeA, cachedInfo.info.edgeB); + if (DISTANCE > 0.0f) + return false; + + const SHHalfEdgeStructure::HalfEdge& HALF_EDGE_A = A.GetHalfEdge(cachedInfo.info.edgeA); + const SHHalfEdgeStructure::HalfEdge& HALF_EDGE_B = B.GetHalfEdge(cachedInfo.info.edgeB); + + const SHVec3 HEAD_A = A.GetVertex(HALF_EDGE_A.headVertexIndex); + const SHVec3 TAIL_A = A.GetVertex(HALF_EDGE_A.tailVertexIndex); + const SHVec3 HEAD_B = B.GetVertex(HALF_EDGE_B.headVertexIndex); + const SHVec3 TAIL_B = B.GetVertex(HALF_EDGE_B.tailVertexIndex); + + const SHVec3 VA = SHVec3::Normalise(HEAD_A - TAIL_A); + const SHVec3 VB = SHVec3::Normalise(HEAD_B - TAIL_B); + + manifold.normal = SHVec3::Cross(VB, VA); + // Flip normal if need to ( A -> B) + if (SHVec3::Dot(manifold.normal, HEAD_A - A.GetWorldCentroid()) < 0.0f) + manifold.normal = -manifold.normal; + + // In this scenario, we only have one contact + uint32_t numContacts = 0; + + SHContact contact; + // Take feature pair key from previous manifold + contact.featurePair.key = manifold.contacts[0].featurePair.key; + contact.position = findClosestPointBetweenEdges(A, B, cachedInfo.info.edgeA, cachedInfo.info.edgeB); + contact.penetration = -DISTANCE; + + manifold.contacts[numContacts++] = contact; + manifold.numContacts = numContacts; + + return true; + } + + // Should never reach this. + return false; + } + + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/Narrowphase/SHSATInfo.h b/SHADE_Engine/src/Physics/Collision/Narrowphase/SHSATInfo.h new file mode 100644 index 00000000..25606084 --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/Narrowphase/SHSATInfo.h @@ -0,0 +1,87 @@ +/**************************************************************************************** + * \file SHSATInfo.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for storing information of collision detection between two + * convex shapes using SAT. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +#include // int32_t + +namespace SHADE +{ + /** + * @brief + * Primarily used to cached collision information between two convex polyhedrons for + * temporal coherence. + */ + struct SHSATInfo + { + public: + /*---------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*---------------------------------------------------------------------------------*/ + + enum class ShapeID : int32_t + { + A = 0 + , B = 1 + + , INVALID = -1 + }; + + enum class Type + { + EDGE + , FACE + + , INVALID = -1 + }; + + union ContactInfo + { + struct // FaceContact + { + ShapeID refPoly; + int32_t refFace; + }; + + struct // Edge Contact + { + int32_t edgeA; + int32_t edgeB; + }; + }; + + /*---------------------------------------------------------------------------------*/ + /* Data Members */ + /*---------------------------------------------------------------------------------*/ + + Type type; + ContactInfo info; + + /*---------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*---------------------------------------------------------------------------------*/ + + SHSATInfo () noexcept; + SHSATInfo (const SHSATInfo& rhs) noexcept; + SHSATInfo (SHSATInfo&& rhs) noexcept; + ~SHSATInfo () noexcept = default; + + /*---------------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*---------------------------------------------------------------------------------*/ + + SHSATInfo& operator= (const SHSATInfo& rhs) noexcept; + SHSATInfo& operator= (SHSATInfo&& rhs) noexcept; + }; + +} // namespace SHADE + +#include "SHSATInfo.hpp" diff --git a/SHADE_Engine/src/Physics/Collision/Narrowphase/SHSATInfo.hpp b/SHADE_Engine/src/Physics/Collision/Narrowphase/SHSATInfo.hpp new file mode 100644 index 00000000..8e51d54b --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/Narrowphase/SHSATInfo.hpp @@ -0,0 +1,71 @@ +/**************************************************************************************** + * \file SHSATInfo.hpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation of inlined methods for cached SAT Info. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +// Primary Header +#include "SHSATInfo.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*-----------------------------------------------------------------------------------*/ + + inline SHSATInfo::SHSATInfo() noexcept + : type { Type::INVALID } + , info {} + { + info.refPoly = ShapeID::INVALID; + info.refFace = -1; + } + + inline SHSATInfo::SHSATInfo(const SHSATInfo& rhs) noexcept + : type { rhs.type } + , info {} + { + info.refPoly = rhs.info.refPoly; + info.refFace = rhs.info.refFace; + + } + + inline SHSATInfo::SHSATInfo(SHSATInfo&& rhs) noexcept + : type { rhs.type } + , info {} + { + info.refPoly = rhs.info.refPoly; + info.refFace = rhs.info.refFace; + } + + /*---------------------------------------------------------------------------------- */ + /* Operator Overloads */ + /*---------------------------------------------------------------------------------- */ + + inline SHSATInfo& SHSATInfo::operator=(const SHSATInfo& rhs) noexcept + { + if (this == &rhs) + return *this; + + type = rhs.type; + info.refPoly = rhs.info.refPoly; + info.refFace = rhs.info.refFace; + + return *this; + } + + inline SHSATInfo& SHSATInfo::operator=(SHSATInfo&& rhs) noexcept + { + type = rhs.type; + info.refPoly = rhs.info.refPoly; + info.refFace = rhs.info.refFace; + + return *this; + } +} diff --git a/SHADE_Engine/src/Physics/Collision/Narrowphase/SHSphereVsCapsule.cpp b/SHADE_Engine/src/Physics/Collision/Narrowphase/SHSphereVsCapsule.cpp new file mode 100644 index 00000000..25515fd7 --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/Narrowphase/SHSphereVsCapsule.cpp @@ -0,0 +1,48 @@ +/**************************************************************************************** + * \file SHSphereVsCapsule.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for the Detecting Collisions between a sphere and a capsule. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "SHCollision.h" + +// Project Headers +#include "Math/SHMathHelpers.h" +#include "Physics/Collision/Shapes/SHSphere.h" + +// TODO + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Public Member Functions Definitions */ + /*-----------------------------------------------------------------------------------*/ + + bool SHCollision::SphereVsCapsule(const SHCollisionShape& A, const SHCollisionShape& B) noexcept + { + return false; + } + + bool SHCollision::CapsuleVsSphere(const SHCollisionShape& A, const SHCollisionShape& B) noexcept + { + return SphereVsCapsule(B, A); + } + + bool SHCollision::SphereVsCapsule(SHManifold& manifold, const SHCollisionShape& A, const SHCollisionShape& B) noexcept + { + return false; + } + + bool SHCollision::CapsuleVsSphere(SHManifold& manifold, const SHCollisionShape& A, const SHCollisionShape& B) noexcept + { + return SphereVsCapsule(manifold, B, A); + } + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/Narrowphase/SHSphereVsConvex.cpp b/SHADE_Engine/src/Physics/Collision/Narrowphase/SHSphereVsConvex.cpp new file mode 100644 index 00000000..07466ab1 --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/Narrowphase/SHSphereVsConvex.cpp @@ -0,0 +1,348 @@ +/**************************************************************************************** + * \file SHSphereVsConvex.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for the Detecting Collisions between a sphere and a convex + * polyhedron. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "SHCollision.h" + +// Project Headers +#include "Math/Geometry/SHPlane.h" +#include "Math/SHMathHelpers.h" +#include "Physics/Collision/Shapes/SHSphere.h" +#include "Physics/Collision/Shapes/SHConvexPolyhedron.h" +#include "Physics/SHPhysicsConstants.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Public Member Functions Definitions */ + /*-----------------------------------------------------------------------------------*/ + + bool SHCollision::SphereVsConvex(const SHCollisionShape& A, const SHCollisionShape& B) noexcept + { + const SHSphere& SPHERE = dynamic_cast(A); + const SHConvexPolyhedron& POLYHEDRON = dynamic_cast(B); + + const SHVec3 CENTER = SPHERE.Center; + const float RADIUS = SPHERE.GetWorldRadius(); + + // Find closest face + const FaceQuery FACE_QUERY = findClosestFace(SPHERE, POLYHEDRON); + if (!FACE_QUERY.colliding) + return false; + + // If center of sphere is inside the polyhedron (below the face) + if (FACE_QUERY.bestDistance < SHMath::EPSILON) + return true; + + // Find closest face of polygon to circle + const int32_t CLOSEST_POINT = findClosestPoint(SPHERE, POLYHEDRON, FACE_QUERY.closestFace); + + const auto& FACE = POLYHEDRON.GetFace(FACE_QUERY.closestFace); + const SHVec3& FACE_NORMAL = POLYHEDRON.GetNormal(FACE_QUERY.closestFace); + const int32_t NUM_VERTICES = static_cast(FACE.vertexIndices.size()); + + // Get points and build tangents + const int32_t P2_INDEX = (CLOSEST_POINT + 1) % NUM_VERTICES; + const int32_t P3_INDEX = CLOSEST_POINT == 0 ? NUM_VERTICES - 1 : CLOSEST_POINT - 1; + + const SHVec3 P1 = POLYHEDRON.GetVertex(FACE.vertexIndices[CLOSEST_POINT].index); + const SHVec3 P2 = POLYHEDRON.GetVertex(FACE.vertexIndices[P2_INDEX].index); + const SHVec3 P3 = POLYHEDRON.GetVertex(FACE.vertexIndices[P3_INDEX].index); + + const SHVec3 TANGENT_1 = SHVec3::Normalise(P2 - P1); + const SHVec3 TANGENT_2 = SHVec3::Normalise(P3 - P1); + + // Get the voronoi region it belongs in + const int32_t REGION = findVoronoiRegion(SPHERE, P1, FACE_NORMAL, TANGENT_1, TANGENT_2); + + return REGION > 0; + } + + bool SHCollision::ConvexVsSphere(const SHCollisionShape& A, const SHCollisionShape& B) noexcept + { + return SphereVsConvex(B, A); + } + + bool SHCollision::SphereVsConvex(SHManifold& manifold, const SHCollisionShape& A, const SHCollisionShape& B) noexcept + { + // Convert to underlying types + // For the convex, we only need the convex polyhedron shape since the get vertex is pure virtual. + const SHSphere& SPHERE = dynamic_cast(A); + const SHConvexPolyhedron& POLYHEDRON = dynamic_cast(B); + + const SHVec3 CENTER = SPHERE.Center; + const float RADIUS = SPHERE.GetWorldRadius(); + + const FaceQuery FACE_QUERY = findClosestFace(SPHERE, POLYHEDRON); + if (!FACE_QUERY.colliding) + return false; + + uint32_t numContacts = 0; + const float PENETRATION = RADIUS - FACE_QUERY.bestDistance; + + SHContact contact; + contact.featurePair.key = 0; + + // Check if center is inside polyhedron (below the face) + if (FACE_QUERY.bestDistance < SHMath::EPSILON) + { + manifold.normal = -POLYHEDRON.GetNormal(FACE_QUERY.closestFace); + + contact.penetration = PENETRATION; + contact.position = CENTER; + + manifold.contacts[numContacts++] = contact; + manifold.numContacts = numContacts; + + return true; + } + + // Find closest face of polygon to circle + const int32_t CLOSEST_POINT = findClosestPoint(SPHERE, POLYHEDRON, FACE_QUERY.closestFace); + + const auto& FACE = POLYHEDRON.GetFace(FACE_QUERY.closestFace); + const SHVec3& FACE_NORMAL = POLYHEDRON.GetNormal(FACE_QUERY.closestFace); + const int32_t NUM_VERTICES = static_cast(FACE.vertexIndices.size()); + + // Get points and build tangents + const int32_t P2_INDEX = (CLOSEST_POINT + 1) % NUM_VERTICES; + const int32_t P3_INDEX = CLOSEST_POINT == 0 ? NUM_VERTICES - 1 : CLOSEST_POINT - 1; + + const SHVec3 P1 = POLYHEDRON.GetVertex(FACE.vertexIndices[CLOSEST_POINT].index); + const SHVec3 P2 = POLYHEDRON.GetVertex(FACE.vertexIndices[P2_INDEX].index); + const SHVec3 P3 = POLYHEDRON.GetVertex(FACE.vertexIndices[P3_INDEX].index); + + const SHVec3 TANGENT_1 = SHVec3::Normalise(P2 - P1); + const SHVec3 TANGENT_2 = SHVec3::Normalise(P3 - P1); + + // Get the voronoi region it belongs in + const int32_t REGION = findVoronoiRegion(SPHERE, P1, FACE_NORMAL, TANGENT_1, TANGENT_2); + if (REGION == 0) + return false; + + // Create contact information based on region + + const SHVec3 P1_TO_CENTER = CENTER - P1; + switch (REGION) + { + case 1: // Region A + case 2: // Region B + { + // Find closest point + const SHVec3& TANGENT = REGION == 1 ? TANGENT_1 : TANGENT_2; + const SHVec3 CP = P1 + TANGENT * SHVec3::Dot(P1_TO_CENTER, TANGENT); + const SHVec3 CP_TO_CENTER = CENTER - CP; + + manifold.normal = -SHVec3::Normalise(CP_TO_CENTER); + + contact.penetration = RADIUS - SHVec3::Dot(CP_TO_CENTER, -manifold.normal); + contact.position = CP; + + break; + } + case 3: // Region C + { + manifold.normal = -SHVec3::Normalise(P1_TO_CENTER); + + contact.penetration = RADIUS - P1_TO_CENTER.Length(); + contact.position = P1; + + break; + } + case 4: // Region D + { + manifold.normal = -FACE_NORMAL; + + contact.penetration = PENETRATION; + contact.position = CENTER - FACE_NORMAL * RADIUS; + + break; + } + default: return false; // Should never happen + } + + manifold.contacts[numContacts++] = contact; + manifold.numContacts = numContacts; + + return true; + } + + bool SHCollision::ConvexVsSphere(SHManifold& manifold, const SHCollisionShape& A, const SHCollisionShape& B) noexcept + { + if (SphereVsConvex(manifold, B, A)) + { + manifold.normal = -manifold.normal; + return true; + }; + + return false; + } + + /*-----------------------------------------------------------------------------------*/ + /* Private Member Functions Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHCollision::FaceQuery SHCollision::findClosestFace + ( + const SHSphere& sphere + , const SHConvexPolyhedron& polyhedron + ) noexcept + { + FaceQuery faceQuery; + + const SHVec3 CENTER = sphere.Center; + const float RADIUS = sphere.GetWorldRadius(); + + /* + * Test against each face. + * + * 1. For each face, build a plane in point-normal form. + * 2. Find the signed distance from plane to center of sphere. + * 3. Save best distance and face. + */ + for (int32_t i = 0; i < polyhedron.GetFaceCount(); ++i) + { + const SHHalfEdgeStructure::Face& FACE = polyhedron.GetFace(i); + + // Build plane equation + // Use first vertex to build the plane + const SHPlane FACE_PLANE { polyhedron.GetVertex(FACE.vertexIndices[0].index), polyhedron.GetNormal(i) }; + + // Find signed distance of center to plane + const float SIGNED_DIST = FACE_PLANE.SignedDistance(CENTER); + + // Early out: + // If face is facing away from center, signed dist is negative. + // Therefore signed distance is only positive when sphere is in front of the face. + if (SIGNED_DIST > RADIUS) + return faceQuery; + + if (SIGNED_DIST > faceQuery.bestDistance) + { + faceQuery.bestDistance = SIGNED_DIST; + faceQuery.closestFace = i; + } + } + + faceQuery.colliding = true; + return faceQuery; + } + + int32_t SHCollision::findClosestPoint + ( + const SHSphere& sphere + , const SHConvexPolyhedron& polyhedron + , int32_t faceIndex + ) noexcept + { + // Find closest point on face + int32_t closestPointIndex = -1; + + const SHVec3 CENTER = sphere.Center; + + const SHHalfEdgeStructure::Face& FACE = polyhedron.GetFace(faceIndex); + const int32_t NUM_VERITICES = static_cast(FACE.vertexIndices.size()); + + float smallestDist = std::numeric_limits::max(); + for (int32_t i = 0; i < NUM_VERITICES; ++i) + { + const SHVec3 POINT = polyhedron.GetVertex(FACE.vertexIndices[i].index); + const float DIST = SHVec3::DistanceSquared(CENTER, POINT); + + if (DIST < smallestDist) + { + smallestDist = DIST; + closestPointIndex = i; + } + } + + return closestPointIndex; + } + + int32_t SHCollision::findVoronoiRegion + ( + const SHSphere& sphere + , const SHVec3& faceVertex + , const SHVec3& faceNormal + , const SHVec3& tangent1 + , const SHVec3& tangent2 + ) noexcept + { + static constexpr int NUM_TANGENTS = 2; + + // Check against voronoi regions of the face to determine the type of the intersection test + // We have 3 voronoi regions to check: 1 -> 2, 1 -> 3 and 1 -> center + // If none of these are true, the sphere is above the face but not separating + + /* + * | 2 + * _ _ _ _ _ _ | _ _ _ + * / / + * | / regionD | / regionA + * |/ _ _ _ _ _|/ _ _ _ + * 3/ regionB /1 + * / / regionC + * + */ + + const SHVec3 CENTER = sphere.Center; + const float RADIUS = sphere.GetWorldRadius(); + + const SHVec3 TANGENTS [NUM_TANGENTS] { tangent1, tangent2 }; + const SHVec3 ADJACENT_NORMALS [NUM_TANGENTS] { SHVec3::Cross(tangent1, faceNormal), SHVec3::Cross(faceNormal, tangent2) }; + + const SHVec3 FACE_TO_CENTER = CENTER - faceVertex; + + // To be inside either region A or B, 2 conditions must be satisfied + // 1. Same side as tangent + // 2. Same side as adjacent normal + + // Check Region A & B + for (int i = 0; i < NUM_TANGENTS; ++i) + { + float projection = SHVec3::Dot(FACE_TO_CENTER, TANGENTS[i]); + if (projection >= 0.0f) + { + // Find closest point + const SHVec3 CLOSEST_POINT = faceVertex + projection * TANGENTS[i]; + + projection = SHVec3::Dot(FACE_TO_CENTER, ADJACENT_NORMALS[i]); + if (projection >= 0.0f) + { + if (projection > RADIUS) + return 0; + + // Region 1 or 2 ( A or B) + return i + 1; + } + } + } + + // Check Region C + // Face to vertex is in the opposite direction of any tangent. + const float PROJECTION = SHVec3::Dot(FACE_TO_CENTER, tangent1); + if (PROJECTION < 0) + { + const float DISTANCE_SQUARED = SHVec3::DistanceSquared(faceVertex, CENTER); + if (DISTANCE_SQUARED > RADIUS * RADIUS) + return 0; + + return 3; + } + + // Belongs in region D by default + return 4; + } + + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/Narrowphase/SHSphereVsSphere.cpp b/SHADE_Engine/src/Physics/Collision/Narrowphase/SHSphereVsSphere.cpp new file mode 100644 index 00000000..1a76924e --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/Narrowphase/SHSphereVsSphere.cpp @@ -0,0 +1,97 @@ +/**************************************************************************************** + * \file SHSphereVsSphere.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for the Detecting Collisions between two spheres + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "SHCollision.h" + +// Project Headers +#include "Math/SHMathHelpers.h" +#include "Physics/Collision/Shapes/SHSphere.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Public Member Functions Definitions */ + /*-----------------------------------------------------------------------------------*/ + + bool SHCollision::SphereVsSphere(const SHCollisionShape& A, const SHCollisionShape& B) noexcept + { + const SHSphere& SPHERE_A = dynamic_cast(A); + const SHSphere& SPHERE_B = dynamic_cast(B); + + const SHVec3 CENTER_A = SPHERE_A.Center; + const float RADIUS_A = SPHERE_A.Radius; + const SHVec3 CENTER_B = SPHERE_B.Center; + const float RADIUS_B = SPHERE_B.Radius; + + + const SHVec3 A_TO_B = CENTER_B - CENTER_A; + const float DISTANCE_BETWEEN_CENTERS_SQUARED = A_TO_B.LengthSquared(); + + const float COMBINED_RADIUS = RADIUS_B + RADIUS_A; + const float COMBINED_RADIUS_SQUARED = COMBINED_RADIUS * COMBINED_RADIUS; + + if (DISTANCE_BETWEEN_CENTERS_SQUARED > COMBINED_RADIUS_SQUARED) + return false; + } + + bool SHCollision::SphereVsSphere(SHManifold& manifold, const SHCollisionShape& A, const SHCollisionShape& B) noexcept + { + // Convert to underlying types + const SHSphere& SPHERE_A = dynamic_cast(A); + const SHSphere& SPHERE_B = dynamic_cast(B); + + const SHVec3 CENTER_A = SPHERE_A.Center; + const float RADIUS_A = SPHERE_A.Radius; + const SHVec3 CENTER_B = SPHERE_B.Center; + const float RADIUS_B = SPHERE_B.Radius; + + + const SHVec3 A_TO_B = CENTER_B - CENTER_A; + const float DISTANCE_BETWEEN_CENTERS_SQUARED = A_TO_B.LengthSquared(); + + const float COMBINED_RADIUS = RADIUS_B + RADIUS_A; + const float COMBINED_RADIUS_SQUARED = COMBINED_RADIUS * COMBINED_RADIUS; + + if (DISTANCE_BETWEEN_CENTERS_SQUARED > COMBINED_RADIUS_SQUARED) + return false; + + // Only populate the manifold if there is a collision + + uint32_t numContacts = 0; + + SHContact contact; + contact.featurePair.key = 0; + + if (SHMath::CompareFloat(DISTANCE_BETWEEN_CENTERS_SQUARED, 0.0f)) + { + manifold.normal = SHVec3::UnitY; + contact.position = CENTER_A; + contact.penetration = RADIUS_B; + + manifold.contacts[numContacts++] = contact; + } + else + { + manifold.normal = SHVec3::Normalise(A_TO_B); + contact.position = CENTER_B - manifold.normal * RADIUS_B; + contact.penetration = COMBINED_RADIUS - A_TO_B.Length(); + + manifold.contacts[numContacts++] = contact; + } + + manifold.numContacts = numContacts; + + return true; + } + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/SHCollider.cpp b/SHADE_Engine/src/Physics/Collision/SHCollider.cpp new file mode 100644 index 00000000..2e7cc3c6 --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/SHCollider.cpp @@ -0,0 +1,393 @@ +/**************************************************************************************** + * \file SHCollider.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for a Base Collider Class. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "SHCollider.h" + +// Project Headers +#include "Broadphase/SHDynamicAABBTree.h" +#include "Events/SHEvent.h" +#include "Math/SHMathHelpers.h" +#include "Physics/SHPhysicsEvents.h" +#include "Physics/Dynamics/SHRigidBody.h" + + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHCollider::SHCollider(EntityID eid, const SHTransform& worldTransform) noexcept + : entityID { eid } + , flags { 0 } + , rigidBody { nullptr } + , shapeLibrary { nullptr } + , broadphase { nullptr } + , transform { worldTransform } + { + flags |= ACTIVE_FLAG; + flags |= MOVED_FLAG; + } + + SHCollider::SHCollider(const SHCollider& rhs) noexcept + : entityID { rhs.entityID } + , flags { rhs.flags } + , rigidBody { rhs.rigidBody } + , shapeLibrary { rhs.shapeLibrary } + , broadphase { rhs.broadphase } + , transform { rhs.transform } + {} + + SHCollider::SHCollider(SHCollider&& rhs) noexcept + : entityID { rhs.entityID } + , flags { rhs.flags } + , rigidBody { rhs.rigidBody } + , shapeLibrary { rhs.shapeLibrary } + , broadphase { rhs.broadphase } + , transform { rhs.transform } + {} + + SHCollider::~SHCollider() noexcept + { + if (!shapeLibrary) + { + SHLOGV_ERROR("Shape factory is unlinked with Composite Collider {}. Unable to add destroy collider!", entityID) + return; + } + + for (auto* shape : shapes) + shapeLibrary->DestroyShape(shape); + } + + /*-----------------------------------------------------------------------------------*/ + /* Operator Overload Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHCollider& SHCollider::operator=(const SHCollider& rhs) noexcept + { + if (this == &rhs) + return *this; + + if (!shapeLibrary) + { + SHLOGV_ERROR("Shape factory is unlinked with Collider {}. Unable to add copy shapes!", entityID) + return *this; + } + + entityID = rhs.entityID; + flags = rhs.flags; + rigidBody = rhs.rigidBody; + shapeLibrary = rhs.shapeLibrary; + broadphase = rhs.broadphase; + transform = rhs.transform; + + copyShapes(rhs); + + return *this; + } + + SHCollider& SHCollider::operator=(SHCollider&& rhs) noexcept + { + if (!shapeLibrary) + { + SHLOGV_ERROR("Shape factory is unlinked with Collider {}. Unable to add copy shapes!", entityID) + return *this; + } + + entityID = rhs.entityID; + flags = rhs.flags; + rigidBody = rhs.rigidBody; + shapeLibrary = rhs.shapeLibrary; + broadphase = rhs.broadphase; + transform = rhs.transform; + + copyShapes(rhs); + + return *this; + } + + /*-----------------------------------------------------------------------------------*/ + /* Getter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + EntityID SHCollider::GetEntityID() const noexcept + { + return entityID; + } + + SHCollider::Type SHCollider::GetType() const noexcept + { + if (flags & COMPOSITE_FLAG) + return Type::COMPOSITE; + + if (flags & HULL_FLAG) + return Type::HULL; + + return Type::INVALID; + } + + bool SHCollider::IsActive() const noexcept + { + return flags & ACTIVE_FLAG; + } + + bool SHCollider::GetDebugDrawState() const noexcept + { + return flags & DRAW_FLAG; + } + + const SHTransform& SHCollider::GetTransform() const noexcept + { + return transform; + } + + const SHVec3& SHCollider::GetPosition() const noexcept + { + return transform.position; + } + + const SHQuaternion& SHCollider::GetOrientation() const noexcept + { + return transform.orientation; + } + + const SHVec3& SHCollider::GetScale() const noexcept + { + return transform.scale; + } + + const SHCollider::CollisionShapes& SHCollider::GetCollisionShapes() const noexcept + { + return shapes; + } + + SHCollisionShape* SHCollider::GetCollisionShape(int index) const + { + const int NUM_SHAPES = static_cast(shapes.size()); + + if (index < 0 || index >= NUM_SHAPES) + throw std::invalid_argument("Out-of-range index!"); + + return shapes[index]; + } + + /*-----------------------------------------------------------------------------------*/ + /* Setter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHCollider::SetType(Type type) noexcept + { + if (type == Type::COMPOSITE) + flags |= COMPOSITE_FLAG; + + if (type == Type::HULL) + flags |= HULL_FLAG; + } + + void SHCollider::SetIsActive(bool state) noexcept + { + const bool PREV_STATE = flags & ACTIVE_FLAG; + state ? flags |= ACTIVE_FLAG : flags &= ~(ACTIVE_FLAG); + + if (!broadphase) + return; + + for (auto* shape : shapes) + { + if (PREV_STATE) // Previously inactive + broadphase->Insert(shape->id, shape->ComputeAABB()); + else // Previously active + broadphase->Remove(shape->id); + } + } + + void SHCollider::SetDebugDrawState(bool state) noexcept + { + state ? flags |= DRAW_FLAG : flags &= ~(DRAW_FLAG); + + #ifdef SHEDITOR + + // Broadcast event for the Debug Draw system to catch + const SHColliderOnDebugDrawEvent EVENT_DATA + { + .entityID = entityID + , .debugDrawState = state + }; + + SHEventManager::BroadcastEvent(EVENT_DATA, SH_PHYSICS_COLLIDER_DRAW_EVENT); + + #endif + } + + void SHCollider::SetRigidBody(SHRigidBody* rb) noexcept + { + rigidBody = rb; + } + + void SHCollider::SetTransform(const SHTransform& newTransform) noexcept + { + flags |= MOVED_FLAG; + transform = newTransform; + } + + void SHCollider::SetPosition(const SHVec3& newPosition) noexcept + { + flags |= MOVED_FLAG; + transform.position = newPosition; + } + + void SHCollider::SetOrientation(const SHQuaternion& newOrientation) noexcept + { + flags |= MOVED_FLAG; + transform.orientation = newOrientation; + } + + void SHCollider::SetScale(const SHVec3& newScale) noexcept + { + flags |= MOVED_FLAG; + transform.scale = newScale; + } + + void SHCollider::SetLibrary(SHCollisionShapeLibrary* factory) noexcept + { + shapeLibrary = factory; + } + + /*-----------------------------------------------------------------------------------*/ + /* Public Member Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + const SHMatrix& SHCollider::ComputeTRS() noexcept + { + return transform.ComputeTRS(); + } + + void SHCollider::RemoveCollisionShape(int index) + { + if (!shapeLibrary) + { + SHLOGV_ERROR("Shape factory is unlinked with Collider {}. Unable to add remove shape!", entityID) + return; + } + + const int NUM_SHAPES = static_cast(shapes.size()); + + if (index < 0 || index >= NUM_SHAPES) + throw std::invalid_argument("Out-of-range index!"); + + auto shape = shapes.begin(); + for (int i = 0; i < NUM_SHAPES; ++i, ++shape) + { + if (i == index) + break; + } + + const SHPhysicsColliderRemovedEvent EVENT_DATA + { + .entityID = entityID + , .colliderType = (*shape)->GetType() + , .colliderIndex = index + }; + + // Remove from broadphase + if (broadphase) + broadphase->Remove((*shape)->id); + + shapeLibrary->DestroyShape(*shape); + *shape = nullptr; + + // Remove the shape from the container to prevent accessing a nullptr + shape = shapes.erase(shape); + + + + // Broadcast Event for removing a shape + SHEventManager::BroadcastEvent(EVENT_DATA, SH_PHYSICS_COLLIDER_REMOVED_EVENT); + + if (rigidBody) + rigidBody->ComputeMassData(); + + SHLOG_INFO_D("Removing Collision Shape {} from Entity {}", index, entityID) + } + + void SHCollider::Update() noexcept + { + for (auto* shape : shapes) + shape->Update(); + } + + /*-----------------------------------------------------------------------------------*/ + /* Private Member Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHCollider::copyShapes(const SHCollider& rhsCollider) + { + for (const auto* shape : rhsCollider.shapes) + { + switch (shape->GetType()) + { + case SHCollisionShape::Type::BOX: + { + const SHBox* RHS_BOX = dynamic_cast(shape); + + const SHBoxCreateInfo BOX_CREATE_INFO + { + .Center = RHS_BOX->Center + , .Extents = RHS_BOX->Extents + , .RelativeExtents = RHS_BOX->relativeExtents + , .Orientation = RHS_BOX->Orientation + , .Scale = RHS_BOX->scale + }; + + const uint32_t NEW_INDEX = static_cast(shapes.size()); + const SHCollisionShapeID NEW_SHAPE_ID{ entityID, NEW_INDEX }; + + SHBox* box = shapeLibrary->CreateBox(NEW_SHAPE_ID, BOX_CREATE_INFO); + *box = *RHS_BOX; + + shapes.emplace_back(box); + + break; + } + case SHCollisionShape::Type::SPHERE: + { + const SHSphere* RHS_SPHERE = dynamic_cast(shape); + + const SHSphereCreateInfo SPHERE_CREATE_INFO + { + .Center = RHS_SPHERE->Center + , .Radius = RHS_SPHERE->Radius + , .RelativeRadius = RHS_SPHERE->relativeRadius + , .Scale = RHS_SPHERE->scale + }; + + const uint32_t NEW_INDEX = static_cast(shapes.size()); + const SHCollisionShapeID NEW_SHAPE_ID{ entityID, NEW_INDEX }; + + SHSphere* sphere = shapeLibrary->CreateSphere(NEW_SHAPE_ID, SPHERE_CREATE_INFO); + *sphere = *RHS_SPHERE; + + shapes.emplace_back(sphere); + + break; + } + case SHCollisionShape::Type::CAPSULE: + { + break; + } + default: break; + } + } + } + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/SHCollider.h b/SHADE_Engine/src/Physics/Collision/SHCollider.h new file mode 100644 index 00000000..a326215f --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/SHCollider.h @@ -0,0 +1,178 @@ +/**************************************************************************************** + * \file SHCollider.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for a Base Collider Class. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +// Project Headers +#include "ECS_Base/Entity/SHEntity.h" +#include "Math/Transform/SHTransform.h" +#include "Physics/Collision/Shapes/SHCollisionShapeLibrary.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Forward Declarations */ + /*-----------------------------------------------------------------------------------*/ + + class SHRigidBody; + class SHAABBTree; + + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + + /** + * @brief + * Base class for a collider. + * There are only two collider types supported by SHADE Engine: Composite & Hull + */ + class SH_API SHCollider + { + private: + /*---------------------------------------------------------------------------------*/ + /* Friends */ + /*---------------------------------------------------------------------------------*/ + + friend class SHCollisionSpace; + friend struct SHManifold; + + public: + /*---------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*---------------------------------------------------------------------------------*/ + + enum class Type + { + COMPOSITE + , HULL + + , TOTAL + , INVALID = -1 + }; + + using CollisionShapes = std::vector; + + /*---------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*---------------------------------------------------------------------------------*/ + + /** + * @brief + * Constructor for a collider. + * @param eid + * The entity this collider belongs to. + * @param worldTransform + * The world transform for the collider. Defaults to the identity transform. + * This is particularly important for composite colliders for offsets & relative sizes. + * @return + */ + SHCollider (EntityID eid, const SHTransform& worldTransform = SHTransform::Identity) noexcept; + SHCollider (const SHCollider& rhs) noexcept; + SHCollider (SHCollider&& rhs) noexcept; + virtual ~SHCollider () noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*---------------------------------------------------------------------------------*/ + + SHCollider& operator=(const SHCollider& rhs) noexcept; + SHCollider& operator=(SHCollider&& rhs) noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Getter Functions */ + /*---------------------------------------------------------------------------------*/ + + [[nodiscard]] EntityID GetEntityID () const noexcept; + + [[nodiscard]] Type GetType () const noexcept; + [[nodiscard]] bool IsActive () const noexcept; + [[nodiscard]] bool GetDebugDrawState () const noexcept; + + [[nodiscard]] const SHTransform& GetTransform () const noexcept; + [[nodiscard]] const SHVec3& GetPosition () const noexcept; + [[nodiscard]] const SHQuaternion& GetOrientation () const noexcept; + [[nodiscard]] const SHVec3& GetScale () const noexcept; + + [[nodiscard]] const CollisionShapes& GetCollisionShapes () const noexcept; + [[nodiscard]] SHCollisionShape* GetCollisionShape (int index) const; + + /*---------------------------------------------------------------------------------*/ + /* Setter Functions */ + /*---------------------------------------------------------------------------------*/ + + void SetType (Type type) noexcept; + void SetIsActive (bool state) noexcept; + void SetDebugDrawState (bool state) noexcept; + + void SetRigidBody (SHRigidBody* rb) noexcept; + + void SetTransform (const SHTransform& newTransform) noexcept; + void SetPosition (const SHVec3& newPosition) noexcept; + void SetOrientation (const SHQuaternion& newOrientation) noexcept; + void SetScale (const SHVec3& newScale) noexcept; + + void SetLibrary (SHCollisionShapeLibrary* factory) noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Member Functions */ + /*---------------------------------------------------------------------------------*/ + + /** + * @brief + * Computes the TRS for the collider's transform + * @return + * The computed TRS. + */ + const SHMatrix& ComputeTRS() noexcept; + + /** + * @brief + * Removes a shape from the container. Removal reduces the size of the container. + * If removing all, perform removal from back to front. + * @param index + * The index of the shape to remove. + * @throws + * Invalid argument for out-of-range indices. + */ + void RemoveCollisionShape (int index); + + /** + * @brief + * Recomputes the transforms for all shapes in this composite collider. + */ + void Update () noexcept; + + protected: + /*---------------------------------------------------------------------------------*/ + /* Data Members */ + /*---------------------------------------------------------------------------------*/ + + static constexpr uint8_t COMPOSITE_FLAG = 1U << static_cast(Type::COMPOSITE); + static constexpr uint8_t HULL_FLAG = 1U << static_cast(Type::HULL); + static constexpr uint8_t ACTIVE_FLAG = 1U << 2; + static constexpr uint8_t DRAW_FLAG = 1U << 3; + static constexpr uint8_t MOVED_FLAG = 1U << 4; + + EntityID entityID; + uint8_t flags; // 0 0 0 hasMoved debugDraw active hull composite + SHRigidBody* rigidBody; + SHCollisionShapeLibrary* shapeLibrary; + SHAABBTree* broadphase; + SHTransform transform; + CollisionShapes shapes; + + /*---------------------------------------------------------------------------------*/ + /* Member Functions */ + /*---------------------------------------------------------------------------------*/ + + void copyShapes (const SHCollider& rhsCollider); + }; + +} // namespace SHADE diff --git a/SHADE_Engine/src/Physics/Collision/SHCollisionInfo.cpp b/SHADE_Engine/src/Physics/Collision/SHCollisionInfo.cpp deleted file mode 100644 index 43ad05ca..00000000 --- a/SHADE_Engine/src/Physics/Collision/SHCollisionInfo.cpp +++ /dev/null @@ -1,93 +0,0 @@ -/**************************************************************************************** - * \file SHCollisionInfo.cpp - * \author Diren D Bharwani, diren.dbharwani, 390002520 - * \brief Implementation for Collision Info. - * - * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or - * disclosure of this file or its contents without the prior written consent - * of DigiPen Institute of Technology is prohibited. -****************************************************************************************/ - -#include - -// Primary Header -#include "SHCollisionInfo.h" - -namespace SHADE -{ - /*-----------------------------------------------------------------------------------*/ - /* Constructors & Destructor Definitions */ - /*-----------------------------------------------------------------------------------*/ - - SHCollisionInfo::SHCollisionInfo() noexcept - : collisionState { State::INVALID } - { - ids[ENTITY_A] = MAX_EID; - ids[ENTITY_B] = MAX_EID; - ids[COLLIDER_A] = std::numeric_limits::max(); - ids[COLLIDER_B] = std::numeric_limits::max(); - } - - SHCollisionInfo::SHCollisionInfo(EntityID entityA, EntityID entityB) noexcept - : collisionState { State::INVALID } - { - ids[ENTITY_A] = entityA; - ids[ENTITY_B] = entityB; - ids[COLLIDER_A] = std::numeric_limits::max(); - ids[COLLIDER_B] = std::numeric_limits::max(); - } - - /*-----------------------------------------------------------------------------------*/ - /* Operator Overload Definitions */ - /*-----------------------------------------------------------------------------------*/ - - bool SHCollisionInfo::operator==(const SHCollisionInfo& rhs) const noexcept - { - return value[0] == rhs.value[0] && value[1] == rhs.value[1]; - } - - bool SHCollisionInfo::operator!=(const SHCollisionInfo& rhs) const noexcept - { - return value[0] != rhs.value[0] || value[1] != rhs.value[1]; - } - - /*-----------------------------------------------------------------------------------*/ - /* Getter Function Definitions */ - /*-----------------------------------------------------------------------------------*/ - - EntityID SHCollisionInfo::GetEntityA() const noexcept - { - return ids[ENTITY_A]; - } - - EntityID SHCollisionInfo::GetEntityB() const noexcept - { - return ids[ENTITY_B]; - } - - const SHRigidBodyComponent* SHCollisionInfo::GetRigidBodyA() const noexcept - { - return SHComponentManager::GetComponent_s(ids[ENTITY_A]); - } - - const SHRigidBodyComponent* SHCollisionInfo::GetRigidBodyB() const noexcept - { - return SHComponentManager::GetComponent_s(ids[ENTITY_B]); - } - - const SHCollisionShape* SHCollisionInfo::GetColliderA() const noexcept - { - return &SHComponentManager::GetComponent(ids[ENTITY_A])->GetCollisionShape(ids[COLLIDER_A]); - } - - const SHCollisionShape* SHCollisionInfo::GetColliderB() const noexcept - { - return &SHComponentManager::GetComponent(ids[ENTITY_B])->GetCollisionShape(ids[COLLIDER_B]); - } - - SHCollisionInfo::State SHCollisionInfo::GetCollisionState() const noexcept - { - return collisionState; - } - -} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/SHCollisionListener.cpp b/SHADE_Engine/src/Physics/Collision/SHCollisionListener.cpp deleted file mode 100644 index 3e485153..00000000 --- a/SHADE_Engine/src/Physics/Collision/SHCollisionListener.cpp +++ /dev/null @@ -1,254 +0,0 @@ -/**************************************************************************************** - * \file SHCollisionListener.cpp - * \author Diren D Bharwani, diren.dbharwani, 390002520 - * \brief Implementation for a Collision Listener. - * - * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or - * disclosure of this file or its contents without the prior written consent - * of DigiPen Institute of Technology is prohibited. -****************************************************************************************/ - -#include - -// Primary Header -#include "SHCollisionListener.h" - -// Project Headers -#include "ECS_Base/Managers/SHEntityManager.h" -#include "Physics/PhysicsObject/SHPhysicsObject.h" -#include "Physics/System/SHPhysicsSystem.h" -#include "Scene/SHSceneManager.h" - -/*-------------------------------------------------------------------------------------*/ -/* Local Helper Functions */ -/*-------------------------------------------------------------------------------------*/ - -uint32_t matchColliders(const SHADE::SHPhysicsObject&physicsObject, const rp3d::Entity colliderID) -{ - for (uint32_t i = 0; i < physicsObject.GetCollisionBody()->getNbColliders(); ++i) - { - const auto* collider = physicsObject.GetCollisionBody()->getCollider(i); - if (collider->getEntity() == colliderID) - return i; - } - - return std::numeric_limits::max(); -} - -namespace SHADE -{ - /*-----------------------------------------------------------------------------------*/ - /* Constructors & Destructor Definitions */ - /*-----------------------------------------------------------------------------------*/ - - SHCollisionListener::SHCollisionListener() noexcept - : system { nullptr } - {} - - /*-----------------------------------------------------------------------------------*/ - /* Getter Function Definitions */ - /*-----------------------------------------------------------------------------------*/ - - const std::vector& SHCollisionListener::GetCollisionInfoContainer() const noexcept - { - return collisionInfoContainer; - } - - const std::vector& SHCollisionListener::GetTriggerInfoContainer() const noexcept - { - return triggerInfoContainer; - } - - /*-----------------------------------------------------------------------------------*/ - /* Public Function Member Definitions */ - /*-----------------------------------------------------------------------------------*/ - - void SHCollisionListener::BindToSystem(SHPhysicsSystem* physicsSystem) noexcept - { - system = physicsSystem; - } - - void SHCollisionListener::BindToWorld(rp3d::PhysicsWorld* world) noexcept - { - if (!world) - return; - - world->setEventListener(this); - } - - void SHCollisionListener::CleanContainers() noexcept - { - static const auto CLEAR = [](std::vector& container) - { - for (auto eventIter = container.begin(); eventIter != container.end();) - { - const SHCollisionInfo& C_INFO = *eventIter; - - const bool INVALID_ENTITY = !SHEntityManager::IsValidEID(C_INFO.GetEntityA()) || !SHEntityManager::IsValidEID(C_INFO.GetEntityB()); - if (INVALID_ENTITY) - { - eventIter = container.erase(eventIter); - continue; - } - else - { - const bool CLEAR_EVENT = C_INFO.GetCollisionState() == SHCollisionInfo::State::EXIT || C_INFO.GetCollisionState() == SHCollisionInfo::State::INVALID; - - const bool INACTIVE_OBJECT = !SHSceneManager::CheckNodeAndComponentsActive(C_INFO.GetEntityA()) - || !SHSceneManager::CheckNodeAndComponentsActive(C_INFO.GetEntityB()); - - if (CLEAR_EVENT || INACTIVE_OBJECT) - { - eventIter = container.erase(eventIter); - continue; - } - } - - ++eventIter; - } - }; - - CLEAR(collisionInfoContainer); - CLEAR(triggerInfoContainer); - } - - void SHCollisionListener::ClearContainers() noexcept - { - collisionInfoContainer.clear(); - triggerInfoContainer.clear(); - } - - void SHCollisionListener::onContact(const rp3d::CollisionCallback::CallbackData& callbackData) - { - for (uint32_t i = 0; i < callbackData.getNbContactPairs(); ++i) - { - const auto CONTACT_PAIR = callbackData.getContactPair(i); - const SHCollisionInfo NEW_INFO = generateCollisionInfo(CONTACT_PAIR); - - updateInfoContainers(NEW_INFO, collisionInfoContainer); - } - } - - void SHCollisionListener::onTrigger(const rp3d::OverlapCallback::CallbackData& callbackData) - { - for (uint32_t i = 0; i < callbackData.getNbOverlappingPairs(); ++i) - { - const auto OVERLAP_PAIR = callbackData.getOverlappingPair(i); - const SHCollisionInfo NEW_INFO = generateTriggerInfo(OVERLAP_PAIR); - - updateInfoContainers(NEW_INFO, triggerInfoContainer); - } - } - - /*-----------------------------------------------------------------------------------*/ - /* Private Function Member Definitions */ - /*-----------------------------------------------------------------------------------*/ - - void SHCollisionListener::updateInfoContainers(const SHCollisionInfo& collisionEvent, std::vector& container) noexcept - { - const auto IT = std::ranges::find_if(container.begin(), container.end(), [&](const SHCollisionInfo& info) - { - const bool ENTITY_MATCH = (info.ids[0] == collisionEvent.ids[0] && info.ids[1] == collisionEvent.ids[1]) - || (info.ids[0] == collisionEvent.ids[1] && info.ids[1] == collisionEvent.ids[0]); - const bool COLLIDERS_MATCH = (info.ids[2] == collisionEvent.ids[2] && info.ids[3] == collisionEvent.ids[3]) - || (info.ids[2] == collisionEvent.ids[3] && info.ids[3] == collisionEvent.ids[2]); - return ENTITY_MATCH && COLLIDERS_MATCH; - }); - - if (IT == container.end()) - container.emplace_back(collisionEvent); - else - IT->collisionState = collisionEvent.collisionState; - } - - SHCollisionInfo SHCollisionListener::generateCollisionInfo(const rp3d::CollisionCallback::ContactPair& cp) const noexcept - { - SHCollisionInfo cInfo; - - // Update collision state - cInfo.collisionState = static_cast(cp.getEventType()); - - // Match body and collider for collision event - const rp3d::Entity body1 = cp.getBody1()->getEntity(); - const rp3d::Entity body2 = cp.getBody2()->getEntity(); - const rp3d::Entity collider1 = cp.getCollider1()->getEntity(); - const rp3d::Entity collider2 = cp.getCollider2()->getEntity(); - - // Find and match both ids - bool matched[2] = { false, false }; - - - for (auto& [entityID, physicsObject] : system->GetPhysicsObjects()) - { - // Match body 1 - if (matched[SHCollisionInfo::ENTITY_A] == false && physicsObject.GetCollisionBody()->getEntity() == body1) - { - cInfo.ids[SHCollisionInfo::ENTITY_A] = entityID; - cInfo.ids[SHCollisionInfo::COLLIDER_A] = matchColliders(physicsObject, collider1); - - matched[SHCollisionInfo::ENTITY_A] = true; - } - - // Match body 2 - if (matched[SHCollisionInfo::ENTITY_B] == false && physicsObject.GetCollisionBody()->getEntity() == body2) - { - cInfo.ids[SHCollisionInfo::ENTITY_B] = entityID; - cInfo.ids[SHCollisionInfo::COLLIDER_B] = matchColliders(physicsObject, collider2); - - matched[SHCollisionInfo::ENTITY_B] = true; - } - - if (matched[SHCollisionInfo::ENTITY_A] == true && matched[SHCollisionInfo::ENTITY_B] == true) - return cInfo; - } - - return cInfo; - } - - SHCollisionInfo SHCollisionListener::generateTriggerInfo(const rp3d::OverlapCallback::OverlapPair& cp) const noexcept - { - SHCollisionInfo cInfo; - - // Update collision state - cInfo.collisionState = static_cast(cp.getEventType()); - - // Match body and collider for collision event - const rp3d::Entity body1 = cp.getBody1()->getEntity(); - const rp3d::Entity body2 = cp.getBody2()->getEntity(); - const rp3d::Entity collider1 = cp.getCollider1()->getEntity(); - const rp3d::Entity collider2 = cp.getCollider2()->getEntity(); - - // Find and match both ids - bool matched[2] = { false, false }; - - - for (auto& [entityID, physicsObject] : system->GetPhysicsObjects()) - { - // Match body 1 - if (matched[SHCollisionInfo::ENTITY_A] == false && physicsObject.GetCollisionBody()->getEntity() == body1) - { - cInfo.ids[SHCollisionInfo::ENTITY_A] = entityID; - cInfo.ids[SHCollisionInfo::COLLIDER_A] = matchColliders(physicsObject, collider1); - - matched[SHCollisionInfo::ENTITY_A] = true; - } - - // Match body 2 - if (matched[SHCollisionInfo::ENTITY_B] == false && physicsObject.GetCollisionBody()->getEntity() == body2) - { - cInfo.ids[SHCollisionInfo::ENTITY_B] = entityID; - cInfo.ids[SHCollisionInfo::COLLIDER_B] = matchColliders(physicsObject, collider2); - - matched[SHCollisionInfo::ENTITY_B] = true; - } - - if (matched[SHCollisionInfo::ENTITY_A] == true && matched[SHCollisionInfo::ENTITY_B] == true) - return cInfo; - } - - return cInfo; - } - - - -} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/SHCollisionSpace.cpp b/SHADE_Engine/src/Physics/Collision/SHCollisionSpace.cpp new file mode 100644 index 00000000..c643e05e --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/SHCollisionSpace.cpp @@ -0,0 +1,308 @@ +/**************************************************************************************** + * \file SHCollisionSpace.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for a Collision Space that handles collision detetction. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + + +#include + +// Primary Header +#include "SHCollisionSpace.h" + +#include "Narrowphase/SHCollisionDispatch.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Getter Functions Definitions */ + /*-----------------------------------------------------------------------------------*/ + + const SHAABBTree::AABBs& SHCollisionSpace::GetBroadphaseAABBs() const noexcept + { + return broadphase.GetAABBs(); + } + + /*-----------------------------------------------------------------------------------*/ + /* Setter Functions Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHCollisionSpace::SetContactManager(SHContactManager* _contactManager) noexcept + { + contactManager = _contactManager; + } + + /*-----------------------------------------------------------------------------------*/ + /* Public Member Functions Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHCollisionSpace::AddCollider(SHCollider* collider) noexcept + { + const bool INSERTED = colliders.emplace(collider->entityID, collider).second; + if (!INSERTED) + { + SHLOG_WARNING_D("Attempting to add duplicate collider {} to the Physics World!", collider->entityID) + return; + } + + collider->broadphase = &broadphase; + + // Add all existing shapes to the broadphase + for (const auto* shape : collider->shapes) + broadphase.Insert(shape->id, shape->ComputeAABB()); + } + + void SHCollisionSpace::RemoveCollider(SHCollider* collider) noexcept + { + colliders.erase(collider->entityID); + + const uint32_t NUM_SHAPES = static_cast(collider->shapes.size()); + if (NUM_SHAPES == 0) + return; + + for (uint32_t i = 0; i < NUM_SHAPES; ++i) + broadphase.Remove(collider->shapes[i]->id); + + if (contactManager) + { + contactManager->RemoveInvalidatedTrigger(collider->entityID); + contactManager->RemoveInvalidatedManifold(collider->entityID); + } + + /* + * TODO: + * Get collider's rigid body + * Run through the rigid body's contact graph and wake all of its non-static bodies that are asleep + */ + } + + void SHCollisionSpace::UpdateBroadphase() noexcept + { + // Update any colliders that have moved + for (auto& collider : colliders | std::views::values) + { + const bool IS_ACTIVE = collider->IsActive(); + const bool HAS_MOVED = collider->flags & SHCollider::MOVED_FLAG; + + if (!IS_ACTIVE || !HAS_MOVED) + continue; + + // Clear hasMoved flag here + collider->flags &= ~SHCollider::MOVED_FLAG; + + // Update moved shapes in broadphase + for (auto* shape : collider->shapes) + broadphase.Update(shape->id, shape->ComputeAABB()); + } + } + + void SHCollisionSpace::DetectCollisions() noexcept + { + // TODO: Profile broad-phase and narrow-phase + + /* + * Broad-phase + */ + + // Broadphase Queries: Kinematic Triggers, Awake Dynamic Bodies & Dynamic Triggers + for (auto& collider : colliders | std::views::values) + { + // Colliders without bodies are considered to be static bodies + // This is specific to this engine because of Unity's stupid convention. + const bool IS_IMPLICIT_STATIC = !collider->rigidBody; + const bool IS_ACTIVE = collider->IsActive(); + + // Skip inactive colliders + if (!IS_ACTIVE || IS_IMPLICIT_STATIC) + continue; + + const bool IS_EXPLICIT_STATIC = collider->rigidBody->GetType() == SHRigidBody::Type::STATIC; + if (IS_EXPLICIT_STATIC) + continue; + + // All remaining are kinematic or dynamic + // Iterate through shapes: if kinematic / dynamic trigger, else if dynamic & awake + // Results are loaded into the narrowphase batch + broadphaseQuery(collider->rigidBody->GetType(), collider); + } + + /* + * Narrow-phase + */ + + // If no potential collisions, we can skip the entire narrow phase. No further updates necessary. + // All contact / trigger states persist in this step. + if (narrowphaseBatch.empty()) + return; + + // All narrowphase IDs are unique, there should be no duplicate collision checks. + // This applies both ways: A -> B and B -> A. + for (auto& [key, narrowphasePair] : narrowphaseBatch) + { + // Filter through tags before attempting narrow-phase + const uint16_t TAG_A = narrowphasePair.A->GetCollisionTag().GetMask(); + const uint16_t TAG_B = narrowphasePair.B->GetCollisionTag().GetMask(); + + const bool MATCH_TAG = TAG_A & TAG_B; + if (!MATCH_TAG) + continue; + + const bool IS_A_TRIGGER = narrowphasePair.A->IsTrigger(); + const bool IS_B_TRIGGER = narrowphasePair.B->IsTrigger(); + + if (IS_A_TRIGGER || IS_B_TRIGGER) + collideTriggers(key, narrowphasePair); + else + collideManifolds(key, narrowphasePair); + } + + // Clear every frame + narrowphaseBatch.clear(); + + // Test all collisions + if (contactManager) + contactManager->Update(); + } + + const SHCollisionSpace::RaycastResults& SHCollisionSpace::Raycast(const RaycastInfo& info) noexcept + { + static RaycastResults results; + results.clear(); + + const bool FILTER_COLLIDER = info.colliderEntityID.has_value(); + + // Cast ray into the broadphase scene + const auto& POTENTIAL_HITS = broadphase.Query(info.ray, info.distance); + + if (POTENTIAL_HITS.empty()) + return results; + + // Iterate through all potential hits + const int NUM_HITS = static_cast(POTENTIAL_HITS.size()); + for (const int i : std::ranges::views::iota(0, NUM_HITS)) + { + const auto HIT_ID = POTENTIAL_HITS[i]; + + const EntityID EID = HIT_ID.GetEntityID(); + + if (FILTER_COLLIDER && EID == info.colliderEntityID.value()) + continue; + + // Get shape + const uint32_t IDX = HIT_ID.GetShapeIndex(); + const auto* SHAPE = colliders.find(EID)->second->GetCollisionShape(IDX); + + // Filter the layers + const bool LAYER_MATCH = SHAPE->GetCollisionTag().GetMask() & info.layers; + if (!LAYER_MATCH) + continue; + + // We cast to the underlying shape. THis is done because a convex hull will not have an inherited raycast method. + // Kinda awkward oversight...oops + + SHRaycastResult baseResult; + switch (SHAPE->GetType()) + { + case SHCollisionShape::Type::SPHERE: + { + baseResult = dynamic_cast(SHAPE)->Raycast(info.ray); + break; + } + case SHCollisionShape::Type::BOX: + { + baseResult = dynamic_cast(SHAPE)->Raycast(info.ray); + break; + } + case SHCollisionShape::Type::CAPSULE: + { + // TODO + break; + } + default: continue; // Redundant case + } + + if (!baseResult || baseResult.distance > info.distance) + continue; + + // Copy to a physics raycast result + SHPhysicsRaycastResult result; + memcpy_s(&result, sizeof(SHRaycastResult), &baseResult, sizeof(SHRaycastResult)); + + result.entityHit = EID; + result.shapeIndex = IDX; + + results.emplace_back(result); + } + + return results; + } + + + /*-----------------------------------------------------------------------------------*/ + /* Private Member Functions Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHCollisionSpace::broadphaseQuery(SHRigidBody::Type rigidBodyType, SHCollider* collider) noexcept + { + for (auto* shape : collider->shapes) + { + // For kinematic shapes, we only query triggers against everything else + if (rigidBodyType == SHRigidBody::Type::KINEMATIC && !shape->IsTrigger()) + continue; + + auto& potentialCollisions = broadphase.Query(shape->id, shape->ComputeAABB()); + + // Build narrow-phase pairs + auto* shapeA = shape; + + const EntityID ID_A = shape->id.GetEntityID(); + const uint32_t INDEX_A = shape->id.GetShapeIndex(); + + for (auto& id : potentialCollisions) + { + // Get corresponding shape + const EntityID ID_B = id.GetEntityID(); + const uint32_t INDEX_B = id.GetShapeIndex(); + + auto* shapeB = colliders[ID_B]->GetCollisionShape(INDEX_B); + + // Build collision ID + SHCollisionKey collisionKey; + collisionKey.SetEntityA(ID_A); + collisionKey.SetEntityB(ID_B); + collisionKey.SetCollisionShapeA(INDEX_A); + collisionKey.SetCollisionShapeB(INDEX_B); + + // Check if it already exists. If it doesn't, put into batch. + // The overloaded equality operator ensures no duplicate collision tests are performed. + auto narrowphasePair = narrowphaseBatch.find(collisionKey); + if (narrowphasePair == narrowphaseBatch.end()) + narrowphaseBatch.emplace(collisionKey, NarrowphasePair{ shapeA, shapeB }); + } + } + } + + void SHCollisionSpace::collideTriggers(const SHCollisionKey& key, NarrowphasePair& narrowphasePair) const noexcept + { + auto* A = narrowphasePair.A; + auto* B = narrowphasePair.B; + + // Send to contact manager + if (contactManager) + contactManager->AddTrigger(key, A, B); + } + + void SHCollisionSpace::collideManifolds(const SHCollisionKey& key, NarrowphasePair& narrowphasePair) const noexcept + { + auto* A = narrowphasePair.A; + auto* B = narrowphasePair.B; + + // Send to contact manager + if (contactManager) + contactManager->AddManifold(key, A, B); + } +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/SHCollisionSpace.h b/SHADE_Engine/src/Physics/Collision/SHCollisionSpace.h new file mode 100644 index 00000000..8607cf45 --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/SHCollisionSpace.h @@ -0,0 +1,196 @@ +/**************************************************************************************** + * \file SHCollisionSpace.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for a Collision Space that handles collision detetction. + * This is to separate the logic between dynamics and collision detection, + * but the collision space does send information to the contact manager + * for dynamic resolution and collision state reporting. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +#include + +// Project Headers +#include "Broadphase/SHDynamicAABBTree.h" +#include "Physics/Dynamics/SHContactManager.h" +#include "SHCollider.h" +#include "SHPhysicsRaycastResult.h" +#include "CollisionTags/SHCollisionTags.h" +#include "CollisionTags/SHCollisionTags.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + + /** + * @brief + * Allows collision detection to be performed with the use of colliders & collision shapes. + * The space will generate manifold data for resolution when needed. + */ + class SH_API SHCollisionSpace + { + public: + /*---------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*---------------------------------------------------------------------------------*/ + + /** + * @brief + * Contains information to cast a ray into the collision space. + * The collider entityID and shape index is optional. + */ + struct RaycastInfo + { + private: + /*-------------------------------------------------------------------------------*/ + /* Friends */ + /*-------------------------------------------------------------------------------*/ + + friend class SHCollisionSpace; + + public: + /*-------------------------------------------------------------------------------*/ + /* Data Members */ + /*-------------------------------------------------------------------------------*/ + + bool continuous = false; + uint16_t layers = static_cast(SHCollisionTag::Layer::ALL); + float distance = std::numeric_limits::infinity(); + SHRay ray; + + /*-------------------------------------------------------------------------------*/ + /* Setter Functions */ + /*-------------------------------------------------------------------------------*/ + + /** + * @brief + * Sets the collider ID for the raycast. Setting this specifies that the ray + * should ignore this collider. + * @param eid + * The entity ID of the collider. + */ + void SetColliderID(EntityID eid) noexcept { colliderEntityID = eid; } + + private: + /*-------------------------------------------------------------------------------*/ + /* Data Members */ + /*-------------------------------------------------------------------------------*/ + + std::optional colliderEntityID; + }; + + using RaycastResults = std::vector; + + /*---------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*---------------------------------------------------------------------------------*/ + + SHCollisionSpace () noexcept = default; + ~SHCollisionSpace () noexcept = default; + + /*---------------------------------------------------------------------------------*/ + /* Getter Functions */ + /*---------------------------------------------------------------------------------*/ + + const SHAABBTree::AABBs& GetBroadphaseAABBs () const noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Setter Functions */ + /*---------------------------------------------------------------------------------*/ + + void SetContactManager(SHContactManager* contactManager) noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Member Functions */ + /*---------------------------------------------------------------------------------*/ + + /** + * @brief + * Adds a collider to the collision space for it to be tested for collision with + * other colliders. + * @param collider + * A collider to add. Duplicates will be ignored. + */ + void AddCollider (SHCollider* collider) noexcept; + + /** + * @brief + * Removes a collider from the collision space. This will prevent any collisions + * being detected between it and other colliders unless manually tested. + * @param collider + * A collider to remove. If a reference to it doesn't exist, it will be ignored. + */ + void RemoveCollider (SHCollider* collider) noexcept; + + /** + * @brief + * Invoke this method to update the broadphase of colliders that have been moved since + * the last frame. + */ + void UpdateBroadphase () noexcept; + + /** + * @brief + * Detects collisions between all colliders. Results are sent to the attached contact + * manager for resolution. + */ + void DetectCollisions () noexcept; + + /** + * @brief + * Casts a ray into the collision space. + * @param info + * Contains the information for the raycast. + * @return + * A container of the objects hit by the ray. If nothing was hit, the container + * will be empty. + */ + [[nodiscard]] const RaycastResults& Raycast(const RaycastInfo& info) noexcept; + + private: + /*---------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*---------------------------------------------------------------------------------*/ + + struct NarrowphasePair + { + SHCollisionShape* A = nullptr; + SHCollisionShape* B = nullptr; + }; + + using Colliders = std::unordered_map; + using NarrowphaseBatch = std::unordered_map; + + /*---------------------------------------------------------------------------------*/ + /* Data Members */ + /*---------------------------------------------------------------------------------*/ + + SHContactManager* contactManager = nullptr; + + Colliders colliders; + NarrowphaseBatch narrowphaseBatch; + + SHAABBTree broadphase; + + /*---------------------------------------------------------------------------------*/ + /* Member Functions */ + /*---------------------------------------------------------------------------------*/ + + // Broadphase helpers + + void broadphaseQuery (SHRigidBody::Type rigidBodyType, SHCollider* collider) noexcept; + + // Narrowphase helpers + + void collideTriggers (const SHCollisionKey& key, NarrowphasePair& narrowphasePair) const noexcept; + void collideManifolds (const SHCollisionKey& key, NarrowphasePair& narrowphasePair) const noexcept; + }; + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/SHCompositeCollider.cpp b/SHADE_Engine/src/Physics/Collision/SHCompositeCollider.cpp new file mode 100644 index 00000000..28b6aafe --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/SHCompositeCollider.cpp @@ -0,0 +1,176 @@ +/**************************************************************************************** + * \file SHCompositeCollider.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for a Composite Collider Class. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "SHCompositeCollider.h" + +// Project Headers +#include "Broadphase/SHDynamicAABBTree.h" +#include "Math/SHMathHelpers.h" +#include "Physics/SHPhysicsEvents.h" +#include "Physics/Dynamics/SHRigidBody.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHCompositeCollider::SHCompositeCollider(EntityID eid, const SHTransform& worldTransform) noexcept + : SHCollider( eid, worldTransform ) + { + flags |= COMPOSITE_FLAG; + } + + SHCompositeCollider::SHCompositeCollider(const SHCompositeCollider& rhs) noexcept + : SHCollider( rhs ) + {} + + SHCompositeCollider::SHCompositeCollider(SHCompositeCollider&& rhs) noexcept + : SHCollider( rhs ) + {} + + /*-----------------------------------------------------------------------------------*/ + /* Operator Overload Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHCompositeCollider& SHCompositeCollider::operator=(const SHCompositeCollider& rhs) noexcept + { + if (this == &rhs) + return *this; + + SHCollider::operator=(rhs); + + return *this; + } + + SHCompositeCollider& SHCompositeCollider::operator=(SHCompositeCollider&& rhs) noexcept + { + SHCollider::operator=(rhs); + + return *this; + } + + /*-----------------------------------------------------------------------------------*/ + /* Public Member Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + int SHCompositeCollider::AddSphereCollisionShape(float relativeRadius, const SHVec3& posOffset, const SHVec3& rotOffset) + { + if (!shapeLibrary) + { + SHLOGV_ERROR("Shape factory is unlinked with Collider {}. Unable to add new shape!", entityID) + return -1; + } + + // Compute world radius + const float SPHERE_SCALE = std::fabs(SHMath::Max({ transform.scale.x, transform.scale.y, transform.scale.z })); + + // Compute center + const SHQuaternion FINAL_ROT = transform.orientation * SHQuaternion::FromEuler(rotOffset); + const SHMatrix TRS = SHMatrix::Rotate(FINAL_ROT) * SHMatrix::Translate(transform.position); + + // Create Sphere + const SHSphereCreateInfo SPHERE_CREATE_INFO + { + .Center = SHVec3::Transform(posOffset, TRS) + , .Radius = relativeRadius * SPHERE_SCALE * 0.5f + , .RelativeRadius = relativeRadius + , .Scale = SPHERE_SCALE + }; + + const uint32_t NEW_INDEX = static_cast(shapes.size()); + const SHCollisionShapeID NEW_SHAPE_ID{ entityID, NEW_INDEX }; + + SHSphere* sphere = shapeLibrary->CreateSphere(NEW_SHAPE_ID, SPHERE_CREATE_INFO); + + // Set offsets + sphere->collider = this; + sphere->SetPositionOffset(posOffset); + sphere->SetRotationOffset(rotOffset); + + shapes.emplace_back(sphere); + + if (broadphase) + broadphase->Insert(NEW_SHAPE_ID, sphere->ComputeAABB()); + + // Broadcast Event for adding a shape + const SHPhysicsColliderAddedEvent EVENT_DATA + { + .entityID = entityID + , .colliderType = SHCollisionShape::Type::SPHERE + , .colliderIndex = static_cast(NEW_INDEX) + }; + + SHEventManager::BroadcastEvent(EVENT_DATA, SH_PHYSICS_COLLIDER_ADDED_EVENT); + + if (rigidBody) + rigidBody->ComputeMassData(); + + return static_cast(NEW_INDEX); + } + + int SHCompositeCollider::AddBoxCollisionShape(const SHVec3& relativeExtents, const SHVec3& posOffset, const SHVec3& rotOffset) + { + if (!shapeLibrary) + { + SHLOGV_ERROR("Shape factory is unlinked with Collider {}. Unable to add new shape!", entityID) + return -1; + } + + // Compute center + const SHQuaternion FINAL_ROT = transform.orientation * SHQuaternion::FromEuler(rotOffset); + const SHMatrix TRS = SHMatrix::Rotate(FINAL_ROT) * SHMatrix::Translate(transform.position); + + // Create Sphere + const SHBoxCreateInfo BOX_CREATE_INFO + { + .Center = SHVec3::Transform(posOffset, TRS) + , .Extents = relativeExtents * SHVec3::Abs(transform.scale) * 0.5f + , .RelativeExtents = relativeExtents + , .Orientation = FINAL_ROT + , .Scale = SHVec3::Abs(transform.scale) + }; + + const uint32_t NEW_INDEX = static_cast(shapes.size()); + const SHCollisionShapeID NEW_SHAPE_ID{ entityID, NEW_INDEX }; + + SHBox* box = shapeLibrary->CreateBox(NEW_SHAPE_ID, BOX_CREATE_INFO); + + // Set offsets + box->collider = this; + box->SetPositionOffset(posOffset); + box->SetRotationOffset(rotOffset); + + shapes.emplace_back(box); + + if (broadphase) + broadphase->Insert(NEW_SHAPE_ID, box->ComputeAABB()); + + // Broadcast Event for adding a shape + const SHPhysicsColliderAddedEvent EVENT_DATA + { + .entityID = entityID + , .colliderType = SHCollisionShape::Type::BOX + , .colliderIndex = static_cast(NEW_INDEX) + }; + + SHEventManager::BroadcastEvent(EVENT_DATA, SH_PHYSICS_COLLIDER_ADDED_EVENT); + + if (rigidBody) + rigidBody->ComputeMassData(); + + return static_cast(NEW_INDEX); + } + + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/SHCompositeCollider.h b/SHADE_Engine/src/Physics/Collision/SHCompositeCollider.h new file mode 100644 index 00000000..8ab71186 --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/SHCompositeCollider.h @@ -0,0 +1,80 @@ +/**************************************************************************************** + * \file SHCompositeCollider.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for a Composite Collider Class. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +// Project Headers +#include "SHCollider.h" + +namespace SHADE +{ + /** + * @brief + * Encapsulates the behaviour of a collider with composited shapes.
+ * Contains no data members but methods to add multiple shapes. + */ + class SH_API SHCompositeCollider : public SHCollider + { + public: + /*---------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*---------------------------------------------------------------------------------*/ + + SHCompositeCollider(EntityID eid, const SHTransform& worldTransform = SHTransform::Identity) noexcept; + SHCompositeCollider(const SHCompositeCollider& rhs) noexcept; + SHCompositeCollider(SHCompositeCollider&& rhs) noexcept; + ~SHCompositeCollider () noexcept override = default; + + /*---------------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*---------------------------------------------------------------------------------*/ + + SHCompositeCollider& operator=(const SHCompositeCollider& rhs) noexcept; + SHCompositeCollider& operator=(SHCompositeCollider&& rhs) noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Member Functions */ + /*---------------------------------------------------------------------------------*/ + + /** + * @brief + * Adds a sphere collision shape. + * @param relativeRadius + * The relative radius is constructed with respect to the world scale.
+ * Radius = max(scale.x, scale.y, scale.z) * 0.5 * relativeRadius + * @param posOffset + * The position offset of the sphere from the center of the collider. Defaults to a Zero Vector. + * @param rotOffset + * The rotation offset of the sphere from the rotation of the collider. Defaults to a Zero Vector. + * @return + * The index of the newly added shape. + */ + int AddSphereCollisionShape (float relativeRadius, const SHVec3& posOffset = SHVec3::Zero, const SHVec3& rotOffset = SHVec3::Zero); + + /** + * @brief + * Adds a box collision shape. + * @param relativeExtents + * The relative extents are constructed with respect to the world scale.
+ * Extents = scale * 0.5 * relativeExtents + * @param posOffset + * The position offset of the box from the center of the collider. Defaults to a Zero Vector. + * @param rotOffset + * The rotation offset of the box from the rotation of the collider. Defaults to a Zero Vector. + * @return + * The index of the newly added shape. + */ + int AddBoxCollisionShape (const SHVec3& relativeExtents, const SHVec3& posOffset = SHVec3::Zero, const SHVec3& rotOffset = SHVec3::Zero); + + // TODO: Add Capsule + }; + + +} // namespace SHADE diff --git a/SHADE_Engine/src/Physics/Interface/SHPhysicsMaterial.cpp b/SHADE_Engine/src/Physics/Collision/SHPhysicsMaterial.cpp similarity index 100% rename from SHADE_Engine/src/Physics/Interface/SHPhysicsMaterial.cpp rename to SHADE_Engine/src/Physics/Collision/SHPhysicsMaterial.cpp diff --git a/SHADE_Engine/src/Physics/Interface/SHPhysicsMaterial.h b/SHADE_Engine/src/Physics/Collision/SHPhysicsMaterial.h similarity index 98% rename from SHADE_Engine/src/Physics/Interface/SHPhysicsMaterial.h rename to SHADE_Engine/src/Physics/Collision/SHPhysicsMaterial.h index b3db1655..773ac4c1 100644 --- a/SHADE_Engine/src/Physics/Interface/SHPhysicsMaterial.h +++ b/SHADE_Engine/src/Physics/Collision/SHPhysicsMaterial.h @@ -19,6 +19,10 @@ namespace SHADE /* Type Definitions */ /*-----------------------------------------------------------------------------------*/ + /** + * @brief + * Encapsulates the data of a physics material for physics simulations. + */ class SH_API SHPhysicsMaterial { public: diff --git a/SHADE_Engine/src/Physics/Collision/SHPhysicsRaycaster.cpp b/SHADE_Engine/src/Physics/Collision/SHPhysicsRaycaster.cpp deleted file mode 100644 index cab5c93b..00000000 --- a/SHADE_Engine/src/Physics/Collision/SHPhysicsRaycaster.cpp +++ /dev/null @@ -1,350 +0,0 @@ -/**************************************************************************************** - * \file SHPhysicsRaycaster.cpp - * \author Diren D Bharwani, diren.dbharwani, 390002520 - * \brief Implementation for a Physics Raycaster. - * - * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or - * disclosure of this file or its contents without the prior written consent - * of DigiPen Institute of Technology is prohibited. -****************************************************************************************/ - -#include - -// Primary Header -#include "SHPhysicsRaycaster.h" - -/* - * TODO(DIREN): - * Once the physics engine has been rebuilt, this whole implementation should change - * and just call PhysicsWorld.Raycast etc. - * - * SHRaycastResult can be converted to a bool when necessary. - */ - -namespace SHADE -{ - /*-----------------------------------------------------------------------------------*/ - /* Constructors & Destructor Definitions */ - /*-----------------------------------------------------------------------------------*/ - - SHPhysicsRaycaster::SHPhysicsRaycaster() noexcept - : world { nullptr } - {} - - /*-----------------------------------------------------------------------------------*/ - /* Getter Function Definitions */ - /*-----------------------------------------------------------------------------------*/ - - const SHPhysicsRaycaster::RaycastPairs& SHPhysicsRaycaster::GetRaycasts() const noexcept - { - return raycasts; - } - - /*-----------------------------------------------------------------------------------*/ - /* Getter Function Definitions */ - /*-----------------------------------------------------------------------------------*/ - - void SHPhysicsRaycaster::SetObjectManager(SHPhysicsObjectManager* physicsObjectManager) noexcept - { - objectManager = physicsObjectManager; - } - - /*-----------------------------------------------------------------------------------*/ - /* Public Function Member Definitions */ - /*-----------------------------------------------------------------------------------*/ - - void SHPhysicsRaycaster::BindToWorld(rp3d::PhysicsWorld* physicsWorld) noexcept - { - world = physicsWorld; - } - - void SHPhysicsRaycaster::ClearFrame() noexcept - { - raycasts.clear(); - } - - SHPhysicsRaycastResult SHPhysicsRaycaster::Raycast(const SHRay& ray, float distance, const SHCollisionTag& collisionTag) noexcept - { - // Reset temp - temp = SHPhysicsRaycastResult{}; - temp.distance = distance; - - if (!world) - { - SHLOG_ERROR("Physics world missing for raycasting!") - return temp; - } - - // If distance in infinity, cast to the default max distance of 2 km. - if (distance == std::numeric_limits::infinity()) - { - world->raycast(ray, this, collisionTag); - } - else - { - const SHVec3 END_POINT = ray.position + ray.direction * distance; - const rp3d::Ray RP3D_RAY{ ray.position, END_POINT }; - world->raycast(RP3D_RAY, this, collisionTag); - } - - // If a hit was found, populate temp info for return. - if (temp.hit) - { - temp.distance = SHVec3::Distance(ray.position, temp.position); - temp.angle = SHVec3::Angle(ray.position, temp.position); - } - - raycasts.emplace_back(ray, temp); - return temp; - } - - SHPhysicsRaycastResult SHPhysicsRaycaster::Linecast(const SHVec3& start, const SHVec3& end, const SHCollisionTag& collisionTag) noexcept - { - temp = SHPhysicsRaycastResult{}; - temp.distance = SHVec3::Distance(start, end); - - if (!world) - { - SHLOG_ERROR("Physics world missing for raycasting!") - return temp; - } - - const rp3d::Ray RP3D_RAY{ start, end }; - world->raycast(RP3D_RAY, this, collisionTag); - - if (temp.hit) - { - temp.distance = SHVec3::Distance(start, temp.position); - temp.angle = SHVec3::Angle(start, temp.position); - } - - raycasts.emplace_back(RP3D_RAY, temp); - return temp; - } - - SHPhysicsRaycastResult SHPhysicsRaycaster::ColliderRaycast(EntityID eid, const SHRay& ray, float distance) noexcept - { - SHPhysicsRaycastResult result; - result.distance = distance; - - // Get a valid physics object with at least 1 collider. - const auto* PHYSICS_OBJECT = validateColliderRaycast(eid); - if (!PHYSICS_OBJECT) - return result; - - auto* rp3dBody = PHYSICS_OBJECT->GetCollisionBody(); - - // Data to populate - rp3d::RaycastInfo rp3dRaycastInfo; - bool hit = false; - - if (distance == std::numeric_limits::infinity()) - { - hit = rp3dBody->raycast(ray, rp3dRaycastInfo); - } - else - { - const SHVec3 END_POINT = ray.position + ray.direction * distance; - const rp3d::Ray RP3D_RAY{ ray.position, END_POINT }; - hit = rp3dBody->raycast(RP3D_RAY, rp3dRaycastInfo); - } - - if (hit) - { - result.hit = true; - result.position = rp3dRaycastInfo.worldPoint; - result.normal = rp3dRaycastInfo.worldPoint; - result.distance = SHVec3::Distance(ray.position, result.position); - result.angle = SHVec3::Angle(ray.position, result.position); - result.entityHit = eid; - result.shapeIndex = findColliderIndex(rp3dBody, rp3dRaycastInfo.collider->getEntity()); - } - - raycasts.emplace_back(ray, result); - return result; - } - - SHPhysicsRaycastResult SHPhysicsRaycaster::ColliderRaycast(EntityID eid, int shapeIndex, const SHRay& ray, float distance) noexcept - { - SHPhysicsRaycastResult result; - result.distance = distance; - - // Get a valid physics object with at least 1 collider. - const auto* PHYSICS_OBJECT = validateColliderRaycast(eid); - if (!PHYSICS_OBJECT) - return result; - - // Boundary check for shape index - if (shapeIndex < 0 || shapeIndex >= static_cast(PHYSICS_OBJECT->GetCollisionBody()->getNbColliders())) - { - SHLOGV_WARNING("Invalid collision shape index passed in") - return result; - } - - auto* rp3dCollider = PHYSICS_OBJECT->GetCollisionBody()->getCollider(shapeIndex); - - rp3d::RaycastInfo rp3dRaycastInfo; - bool hit = false; - if (distance == std::numeric_limits::infinity()) - { - hit = rp3dCollider->raycast(ray, rp3dRaycastInfo); - } - else - { - const SHVec3 END_POINT = ray.position + ray.direction * distance; - const rp3d::Ray RP3D_RAY{ ray.position, END_POINT }; - hit = rp3dCollider->raycast(RP3D_RAY, rp3dRaycastInfo); - } - - if (hit) - { - result.hit = true; - result.position = rp3dRaycastInfo.worldPoint; - result.normal = rp3dRaycastInfo.worldPoint; - result.distance = SHVec3::Distance(ray.position, result.position); - result.angle = SHVec3::Angle(ray.position, result.position); - result.entityHit = eid; - result.shapeIndex = shapeIndex; - } - - raycasts.emplace_back(ray, result); - return result; - } - - SHPhysicsRaycastResult SHPhysicsRaycaster::ColliderLinecast(EntityID eid, const SHVec3& start, const SHVec3& end) noexcept - { - SHPhysicsRaycastResult result; - result.distance = SHVec3::Distance(start, end); - - const auto* PHYSICS_OBJECT = validateColliderRaycast(eid); - if (!PHYSICS_OBJECT) - return result; - - auto* rp3dBody = PHYSICS_OBJECT->GetCollisionBody(); - - rp3d::RaycastInfo rp3dRaycastInfo; - - const rp3d::Ray RP3D_RAY{ start, end }; - if (rp3dBody->raycast(RP3D_RAY, rp3dRaycastInfo)) - { - result.hit = true; - result.position = rp3dRaycastInfo.worldPoint; - result.normal = rp3dRaycastInfo.worldPoint; - result.distance = SHVec3::Distance(start, result.position); - result.angle = SHVec3::Angle(end, result.position); - result.entityHit = eid; - result.shapeIndex = findColliderIndex(rp3dBody, rp3dRaycastInfo.collider->getEntity()); - } - - raycasts.emplace_back(RP3D_RAY, result); - return result; - } - - SHPhysicsRaycastResult SHPhysicsRaycaster::ColliderLinecast(EntityID eid, int shapeIndex, const SHVec3& start, const SHVec3& end) noexcept - { - SHPhysicsRaycastResult result; - result.distance = SHVec3::Distance(start, end); - - const auto* PHYSICS_OBJECT = validateColliderRaycast(eid); - if (!PHYSICS_OBJECT) - return result; - - if (shapeIndex < 0 || shapeIndex >= static_cast(PHYSICS_OBJECT->GetCollisionBody()->getNbColliders())) - { - SHLOGV_WARNING("Invalid collision shape index passed in") - return result; - } - - auto* rp3dCollider = PHYSICS_OBJECT->GetCollisionBody()->getCollider(shapeIndex); - - rp3d::RaycastInfo rp3dRaycastInfo; - - const rp3d::Ray RP3D_RAY{ start, end }; - if (rp3dCollider->raycast(RP3D_RAY, rp3dRaycastInfo)) - { - result.hit = true; - result.position = rp3dRaycastInfo.worldPoint; - result.normal = rp3dRaycastInfo.worldPoint; - result.distance = SHVec3::Distance(start, result.position); - result.angle = SHVec3::Angle(end, result.position); - result.entityHit = eid; - result.shapeIndex = shapeIndex; - } - - raycasts.emplace_back(RP3D_RAY, result); - return result; - } - - rp3d::decimal SHPhysicsRaycaster::notifyRaycastHit(const rp3d::RaycastInfo& raycastInfo) - { - temp.hit = true; - temp.position = raycastInfo.worldPoint; - temp.normal = raycastInfo.worldNormal; - - if (!objectManager) - { - SHLOGV_ERROR("No physics object manager linked with raycaster to match bodies") - return 0.0f; - } - - // Compare body IDs to find the matching physics object - const auto HIT_BODY_EID = raycastInfo.body->getEntity(); - - for (const auto& [entityID, physicsObject] : objectManager->GetPhysicsObjects()) - { - const auto RP3D_BODY = physicsObject.GetCollisionBody(); - - // Match rp3d bodies - if (RP3D_BODY->getEntity() != HIT_BODY_EID) - continue; - - temp.entityHit = entityID; - - // Find collider index - if (const int INDEX = findColliderIndex(RP3D_BODY, raycastInfo.collider->getEntity()); INDEX > -1) - { - temp.shapeIndex = INDEX; - break; - } - } - - return 0.0f; - } - - /*-----------------------------------------------------------------------------------*/ - /* Private Function Member Definitions */ - /*-----------------------------------------------------------------------------------*/ - - SHPhysicsObject* SHPhysicsRaycaster::validateColliderRaycast(EntityID eid) noexcept - { - if (!objectManager) - { - SHLOGV_ERROR("No physics object manager linked with raycaster to match bodies") - return nullptr; - } - - auto* physicsObject = objectManager->GetPhysicsObject(eid); - if (!physicsObject || physicsObject->GetCollisionBody()->getNbColliders() == 0) - { - SHLOGV_WARNING("Cannot cast ray at an entity without colliders!") - return nullptr; - } - - return physicsObject; - } - - int SHPhysicsRaycaster::findColliderIndex(const rp3d::CollisionBody* rp3dBody, rp3d::Entity rp3dColliderEID) noexcept - { - const int NUM_COLLISION_SHAPES = static_cast(rp3dBody->getNbColliders()); - for (int i = 0; i < NUM_COLLISION_SHAPES; ++i) - { - const auto COLLIDER_EID = rp3dBody->getCollider(i)->getEntity(); - if (COLLIDER_EID == rp3dColliderEID) - return i; - } - - return -1; - } - - -} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/SHPhysicsRaycaster.h b/SHADE_Engine/src/Physics/Collision/SHPhysicsRaycaster.h deleted file mode 100644 index 447207c7..00000000 --- a/SHADE_Engine/src/Physics/Collision/SHPhysicsRaycaster.h +++ /dev/null @@ -1,134 +0,0 @@ -/**************************************************************************************** - * \file SHPhysicsRaycaster.h - * \author Diren D Bharwani, diren.dbharwani, 390002520 - * \brief Interface for a Physics Raycaster. - * - * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or - * disclosure of this file or its contents without the prior written consent - * of DigiPen Institute of Technology is prohibited. -****************************************************************************************/ - -#pragma once - -#include - -#include - -// Project Headers -#include "Math/SHRay.h" -#include "Physics/PhysicsObject/SHPhysicsObjectManager.h" -#include "Physics/SHPhysicsWorld.h" -#include "SH_API.h" -#include "SHCollisionTags.h" -#include "SHPhysicsRaycastResult.h" - -namespace SHADE -{ - /*-----------------------------------------------------------------------------------*/ - /* Type Definitions */ - /*-----------------------------------------------------------------------------------*/ - - class SH_API SHPhysicsRaycaster : public reactphysics3d::RaycastCallback - { - private: - /*---------------------------------------------------------------------------------*/ - /* Type Definitions */ - /*---------------------------------------------------------------------------------*/ - - using RaycastPair = std::pair; - using RaycastPairs = std::vector; - - public: - /*---------------------------------------------------------------------------------*/ - /* Constructors & Destructor */ - /*---------------------------------------------------------------------------------*/ - - SHPhysicsRaycaster() noexcept; - - /*---------------------------------------------------------------------------------*/ - /* Getter Functions */ - /*---------------------------------------------------------------------------------*/ - - [[nodiscard]] const RaycastPairs& GetRaycasts() const noexcept; - - /*---------------------------------------------------------------------------------*/ - /* Setter Functions */ - /*---------------------------------------------------------------------------------*/ - - void SetObjectManager(SHPhysicsObjectManager* physicsObjectManager) noexcept; - - /*---------------------------------------------------------------------------------*/ - /* Function Members */ - /*---------------------------------------------------------------------------------*/ - - void BindToWorld (rp3d::PhysicsWorld* physicsWorld) noexcept; - void ClearFrame () noexcept; - - // TODO(Diren): Filtering, return all shades ray hits - - SHPhysicsRaycastResult Raycast - ( - const SHRay& ray - , float distance = std::numeric_limits::infinity() - , const SHCollisionTag& collisionTag = SHCollisionTag{} - ) noexcept; - - SHPhysicsRaycastResult Linecast - ( - const SHVec3& start - , const SHVec3& end - , const SHCollisionTag& collisionTag = SHCollisionTag{} - ) noexcept; - - SHPhysicsRaycastResult ColliderRaycast - ( - EntityID eid - , const SHRay& ray - , float distance = std::numeric_limits::infinity() - ) noexcept; - - SHPhysicsRaycastResult ColliderRaycast - ( - EntityID eid - , int shapeIndex - , const SHRay& ray - , float distance = std::numeric_limits::infinity() - ) noexcept; - - SHPhysicsRaycastResult ColliderLinecast - ( - EntityID eid - , const SHVec3& start - , const SHVec3& end - ) noexcept; - - SHPhysicsRaycastResult ColliderLinecast - ( - EntityID eid - , int shapeIndex - , const SHVec3& start - , const SHVec3& end - ) noexcept; - - rp3d::decimal notifyRaycastHit(const rp3d::RaycastInfo& raycastInfo) override; - - private: - /*---------------------------------------------------------------------------------*/ - /* Data Members */ - /*---------------------------------------------------------------------------------*/ - - rp3d::PhysicsWorld* world; - SHPhysicsObjectManager* objectManager; // For - SHPhysicsRaycastResult temp; // Holds the temporary result after casting into the world - RaycastPairs raycasts; // Used for debug drawing - - /*---------------------------------------------------------------------------------*/ - /* Function Members */ - /*---------------------------------------------------------------------------------*/ - - SHPhysicsObject* validateColliderRaycast (EntityID eid) noexcept; - static int findColliderIndex (const rp3d::CollisionBody* rp3dBody, rp3d::Entity rp3dColliderEID) noexcept; - }; - - -} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/Shapes/SHBox.cpp b/SHADE_Engine/src/Physics/Collision/Shapes/SHBox.cpp new file mode 100644 index 00000000..8022e487 --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/Shapes/SHBox.cpp @@ -0,0 +1,319 @@ +/**************************************************************************************** + * \file SHBoxCollisionShape.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for a Box Collision Shape. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "SHBox.h" + +// Project Headers +#include "Math/SHMathHelpers.h" +#include "Math/SHMatrix.h" +#include "Physics/Collision/SHCollider.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHBox::SHBox(SHCollisionShapeID id) noexcept + : SHConvexPolyhedron (id, Type::BOX) + , relativeExtents { SHVec3::One } + , scale { SHVec3::One } + { + Extents = SHVec3::One * 0.5f; + } + + SHBox::SHBox(const SHBox& rhs) noexcept + : SHConvexPolyhedron ( rhs ) + , relativeExtents { rhs.relativeExtents } + , scale { rhs.scale } + { + Center = rhs.Center; + Extents = rhs.Extents; + Orientation = rhs.Orientation; + } + + SHBox::SHBox(SHBox&& rhs) noexcept + : SHConvexPolyhedron ( rhs ) + , relativeExtents { rhs.relativeExtents } + , scale { rhs.scale } + { + Center = rhs.Center; + Extents = rhs.Extents; + Orientation = rhs.Orientation; + } + + /*-----------------------------------------------------------------------------------*/ + /* Operator Overload Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHBox& SHBox::operator=(const SHBox& rhs) noexcept + { + if (this == &rhs) + return *this; + + // Collision Shape Properties + + SHConvexPolyhedron::operator=(rhs); + + // Box Properties + + Center = rhs.Center; + Extents = rhs.Extents; + Orientation = rhs.Orientation; + + // Local Properties + + relativeExtents = rhs.relativeExtents; + scale = rhs.scale; + + return *this; + } + + SHBox& SHBox::operator=(SHBox&& rhs) noexcept + { + // Collision Shape Properties + + SHConvexPolyhedron::operator=(rhs); + + // Box Properties + + Center = rhs.Center; + Extents = rhs.Extents; + Orientation = rhs.Orientation; + + // Local Properties + + relativeExtents = rhs.relativeExtents; + scale = rhs.scale; + + return *this; + } + + /*-----------------------------------------------------------------------------------*/ + /* Getter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHVec3 SHBox::GetWorldExtents() const noexcept + { + return Extents; + } + + SHVec3 SHBox::GetRelativeExtents() const noexcept + { + return relativeExtents; + } + + SHVec3 SHBox::GetVertex(int index) const + { + if (index < 0 || index >= NUM_VERTICES) + throw std::invalid_argument("Index out-of-range!"); + + SHVec3 vertices[NUM_VERTICES]; + GetCorners(vertices); + + return vertices[index]; + } + + SHVec3 SHBox::GetNormal(int faceIndex) const + { + // Get local normal + const SHVec3& LOCAL_NORMAL = halfEdgeStructure->GetFace(faceIndex).normal; + + // Rotate normal into world space + return SHVec3::Rotate(LOCAL_NORMAL, Orientation); + } + + SHVec3 SHBox::GetWorldCentroid() const noexcept + { + return Center; + } + + SHVec3 SHBox::GetRelativeCentroid() const noexcept + { + if (collider) + return SHVec3{ Center } - collider->GetPosition(); + + return Center; + } + + SHVec3 SHBox::GetLocalCentroid() const noexcept + { + return SHVec3::Zero; + } + + SHQuaternion SHBox::GetWorldOrientation() const noexcept + { + return Orientation; + } + + SHQuaternion SHBox::GetRelativeOrientation() const noexcept + { + return transform.orientation; + } + + float SHBox::GetVolume() const noexcept + { + return 8.0f * (Extents.x * Extents.y * Extents.z); + } + + float SHBox::GetSurfaceArea() const noexcept + { + return 8.0f * (Extents.x * Extents.y + + Extents.x * Extents.z + + Extents.y * Extents.z); + } + + SHMatrix SHBox::GetInertiaTensor(float mass) const noexcept + { + static constexpr float ONE_OVER_TWELVE = (1.0f / 12.0f); + + const float WIDTH = 2.0f * Extents.x; + const float HEIGHT = 2.0f * Extents.y; + const float DEPTH = 2.0f * Extents.z; + + const float WIDTH_SQUARED = WIDTH * WIDTH; + const float HEIGHT_SQUARED = HEIGHT * HEIGHT; + const float DEPTH_SQUARED = DEPTH * DEPTH; + + const float H2_PLUS_D2 = HEIGHT_SQUARED + DEPTH_SQUARED; + const float W2_PLUS_H2 = WIDTH_SQUARED + HEIGHT_SQUARED; + const float W2_PLUS_D2 = WIDTH_SQUARED + DEPTH_SQUARED; + + SHMatrix result; + result.m[0][0] = ONE_OVER_TWELVE * mass * H2_PLUS_D2; + result.m[1][1] = ONE_OVER_TWELVE * mass * W2_PLUS_H2; + result.m[2][2] = ONE_OVER_TWELVE * mass * W2_PLUS_D2; + return result; + } + + /*-----------------------------------------------------------------------------------*/ + /* Setter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHBox::SetWorldExtents(const SHVec3& newWorldExtents) noexcept + { + Extents = newWorldExtents; + + // Recompute Relative radius + relativeExtents = 2.0f * Extents / scale; + } + + void SHBox::SetRelativeExtents(const SHVec3& newRelativeExtents) noexcept + { + relativeExtents = newRelativeExtents; + + // Recompute world radius + Extents = relativeExtents * scale * 0.5f; + } + + void SHBox::SetScale(const SHVec3& newScale) noexcept + { + scale = SHVec3::Abs(newScale); + + // Recompute world radius + Extents = relativeExtents * scale * 0.5f; + } + + /*-----------------------------------------------------------------------------------*/ + /* Public Member Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHBox::Update() noexcept + { + const SHTransform& PARENT_TRANSFORM = collider->GetTransform(); + + SetScale(PARENT_TRANSFORM.scale); + + // Recompute center + const SHQuaternion FINAL_ROT = PARENT_TRANSFORM.orientation * transform.orientation; + const SHMatrix TRS = SHMatrix::Rotate(FINAL_ROT) * SHMatrix::Translate(PARENT_TRANSFORM.position); + + Orientation = FINAL_ROT; + Center = SHVec3::Transform(transform.position, TRS); + } + + bool SHBox::TestPoint(const SHVec3& point) const noexcept + { + return Contains(point); + } + + SHRaycastResult SHBox::Raycast(const SHRay& ray) const noexcept + { + SHRaycastResult result; + + result.hit = Intersects(ray.position, ray.direction, result.distance); + if (result.hit) + { + result.position = ray.position + ray.direction * result.distance; + result.angle = SHVec3::Angle(ray.position, result.position); + + // TODO: Compute Normal: Test which face the position belongs in. The normal is that face's normal. + } + + return result; + } + + SHMatrix SHBox::GetTRS() const noexcept + { + const SHQuaternion ROTATION = collider ? collider->GetTransform().orientation * transform.orientation : Orientation; + const SHVec3 SCALE = SHVec3{ Extents } *2.0f; + + return SHMatrix::Transform(Center, ROTATION, SCALE); + } + + SHAABB SHBox::ComputeAABB() const noexcept + { + SHVec3 min{ std::numeric_limits::max() }; + SHVec3 max{ std::numeric_limits::lowest() }; + + SHVec3 vertices[NUM_VERTICES]; + GetCorners(vertices); + + for (auto& vertex : vertices) + { + min = SHVec3::Min({ vertex, min }); + max = SHVec3::Max({ vertex, max }); + } + + const SHVec3 HALF_EXTENTS = (max - min) * 0.5f; + const SHVec3 CENTROID = min + HALF_EXTENTS; + + return SHAABB{ CENTROID, HALF_EXTENTS }; + } + + SHVec3 SHBox::FindSupportPoint(const SHVec3& direction) const noexcept + { + float bestDistance = std::numeric_limits::lowest(); + + + SHVec3 vertices[NUM_VERTICES]; + GetCorners(vertices); + + // No reason to put the center really.. + SHVec3 bestPoint = Center; + for (auto& vertex : vertices) + { + const float PROJECTION = SHVec3::Dot(vertex, direction); + + if (PROJECTION > bestDistance) + { + bestDistance = PROJECTION; + bestPoint = vertex; + } + } + + return bestPoint; + } + + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/Shapes/SHBox.h b/SHADE_Engine/src/Physics/Collision/Shapes/SHBox.h new file mode 100644 index 00000000..480b2501 --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/Shapes/SHBox.h @@ -0,0 +1,129 @@ +/**************************************************************************************** + * \file SHBox.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for a Box Collision Shape. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +#include + +// Project Headers +#include "SHConvexPolyhedron.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + + /** + * @brief + * Encapsulates the information to create a box. + */ + struct SHBoxCreateInfo + { + public: + SHVec3 Center = SHVec3::Zero; + SHVec3 Extents = SHVec3::One * 0.5f; + SHVec3 RelativeExtents = SHVec3::One; + SHQuaternion Orientation = SHQuaternion::Identity; + SHVec3 Scale = SHVec3::One; + }; + + /** + * @brief + * Encapsulate a Box Shape used for Physics Simulations. + */ + class SH_API SHBox final : public SHConvexPolyhedron + , private DirectX::BoundingOrientedBox + { + private: + /*---------------------------------------------------------------------------------*/ + /* Friends */ + /*---------------------------------------------------------------------------------*/ + + friend class SHCollider; + friend class SHCompositeCollider; + friend class SHCollision; + friend class SHCollisionShapeLibrary; + + public: + /*---------------------------------------------------------------------------------*/ + /* Data Members */ + /*---------------------------------------------------------------------------------*/ + + static constexpr int NUM_VERTICES = 8; + + /*---------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*---------------------------------------------------------------------------------*/ + + SHBox (SHCollisionShapeID id) noexcept; + SHBox (const SHBox& rhs) noexcept; + SHBox (SHBox&& rhs) noexcept; + + ~SHBox () override = default; + + /*---------------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*---------------------------------------------------------------------------------*/ + + SHBox& operator= (const SHBox& rhs) noexcept; + SHBox& operator= (SHBox&& rhs) noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Getter Functions */ + /*---------------------------------------------------------------------------------*/ + + [[nodiscard]] SHVec3 GetWorldExtents () const noexcept; + [[nodiscard]] SHVec3 GetRelativeExtents () const noexcept; + + // Overriden Methods + + [[nodiscard]] SHVec3 GetVertex (int index) const override; + [[nodiscard]] SHVec3 GetNormal (int faceIndex) const override; + + [[nodiscard]] SHVec3 GetWorldCentroid () const noexcept override; + [[nodiscard]] SHVec3 GetRelativeCentroid () const noexcept override; + [[nodiscard]] SHVec3 GetLocalCentroid () const noexcept override; + [[nodiscard]] SHQuaternion GetWorldOrientation () const noexcept override; + [[nodiscard]] SHQuaternion GetRelativeOrientation () const noexcept override; + [[nodiscard]] float GetVolume () const noexcept override; + [[nodiscard]] float GetSurfaceArea () const noexcept override; + [[nodiscard]] SHMatrix GetInertiaTensor (float mass) const noexcept override; + + /*---------------------------------------------------------------------------------*/ + /* Setter Functions */ + /*---------------------------------------------------------------------------------*/ + + void SetWorldExtents (const SHVec3& newWorldExtents) noexcept; + void SetRelativeExtents (const SHVec3& newRelativeExtents) noexcept; + void SetScale (const SHVec3& newScale) noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Function Members */ + /*---------------------------------------------------------------------------------*/ + + void Update () noexcept override; + [[nodiscard]] bool TestPoint (const SHVec3& point) const noexcept override; + [[nodiscard]] SHRaycastResult Raycast (const SHRay& ray) const noexcept override; + [[nodiscard]] SHMatrix GetTRS () const noexcept override; + [[nodiscard]] SHAABB ComputeAABB () const noexcept override; + [[nodiscard]] SHVec3 FindSupportPoint (const SHVec3& direction) const noexcept override; + + private: + /*---------------------------------------------------------------------------------*/ + /* Data Members */ + /*---------------------------------------------------------------------------------*/ + + SHVec3 relativeExtents; + SHVec3 scale; + }; + + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/Shapes/SHCollisionShape.cpp b/SHADE_Engine/src/Physics/Collision/Shapes/SHCollisionShape.cpp new file mode 100644 index 00000000..dfbed047 --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/Shapes/SHCollisionShape.cpp @@ -0,0 +1,188 @@ +/**************************************************************************************** + * \file SHCollider.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for a Collider. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "SHCollisionShape.h" + +// Project Headers +#include "Physics/Collision/SHCollider.h" +#include "Physics/Collision/CollisionTags/SHCollisionTagMatrix.h" +#include "Reflection/SHReflectionMetadata.h" +#include "Tools/Utilities/SHUtilities.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHCollisionShape::SHCollisionShape(SHCollisionShapeID id, Type colliderType) + : id { id } + , flags { 0 } + , collider { nullptr } + , collisionTag { SHCollisionTagMatrix::GetTag(0) } + { + flags |= 1U << SHUtilities::ConvertEnum(colliderType); + } + + /*-----------------------------------------------------------------------------------*/ + /* Getter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + EntityID SHCollisionShape::GetEntityID() const noexcept + { + return id.GetEntityID(); + } + + uint32_t SHCollisionShape::GetIndex() const noexcept + { + return id.GetShapeIndex(); + } + + float SHCollisionShape::GetFriction() const noexcept + { + return material.GetFriction(); + } + + float SHCollisionShape::GetBounciness() const noexcept + { + return material.GetBounciness(); + } + + float SHCollisionShape::GetDensity() const noexcept + { + return material.GetDensity(); + } + + const SHPhysicsMaterial& SHCollisionShape::GetMaterial() const noexcept + { + return material; + } + + const SHVec3& SHCollisionShape::GetPositionOffset() const noexcept + { + return transform.position; + } + + const SHVec3& SHCollisionShape::GetRotationOffset() const noexcept + { + return rotationOffset; + } + + SHCollisionShape::Type SHCollisionShape::GetType() const noexcept + { + for (int i = 0; i < SHUtilities::ConvertEnum(Type::COUNT); ++i) + { + const uint8_t FLAG_VALUE = 1U << SHUtilities::ConvertEnum(static_cast(i)); + + if (flags & FLAG_VALUE) + return static_cast(i); + } + + return Type::INVALID; + } + + bool SHCollisionShape::IsTrigger() const noexcept + { + static constexpr int FLAG_POS = 3; + static constexpr uint8_t FLAG_VALUE = 1U << FLAG_POS; + + return flags & FLAG_VALUE; + } + + bool SHCollisionShape::IsColliding() const noexcept + { + static constexpr int FLAG_POS = 4; + static constexpr uint8_t FLAG_VALUE = 1U << FLAG_POS; + + return flags & FLAG_VALUE; + } + + const SHCollisionTag& SHCollisionShape::GetCollisionTag() const noexcept + { + return *collisionTag; + } + + /*-----------------------------------------------------------------------------------*/ + /* Setter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHCollisionShape::SetCollisionTag(SHCollisionTag* newCollisionTag) noexcept + { + collisionTag = newCollisionTag; + } + + void SHCollisionShape::SetFriction(float friction) noexcept + { + material.SetFriction(friction); + } + + void SHCollisionShape::SetBounciness(float bounciness) noexcept + { + material.SetBounciness(bounciness); + } + + void SHCollisionShape::SetDensity(float density) noexcept + { + material.SetDensity(density); + } + + void SHCollisionShape::SetMaterial(const SHPhysicsMaterial& newMaterial) noexcept + { + material = newMaterial; + } + + void SHCollisionShape::SetPositionOffset(const SHVec3& posOffset) noexcept + { + transform.position = posOffset; + + Update(); + } + + void SHCollisionShape::SetRotationOffset(const SHVec3& rotOffset) noexcept + { + rotationOffset = rotOffset; + transform.orientation = SHQuaternion::FromEuler(rotationOffset); + + Update(); + } + + void SHCollisionShape::SetIsTrigger(bool isTrigger) noexcept + { + static constexpr int FLAG_POS = 3; + static constexpr uint8_t FLAG_VALUE = 1U << FLAG_POS; + + isTrigger ? flags |= FLAG_VALUE : flags &= ~FLAG_VALUE; + } + +} // namespace SHADE + +RTTR_REGISTRATION +{ + using namespace SHADE; + using namespace rttr; + + registration::enumeration("Collider Type") + ( + value("Box", SHCollisionShape::Type::BOX), + value("Sphere", SHCollisionShape::Type::SPHERE) + // TODO(Diren): Add More Shapes + ); + + registration::class_("Collider") + .property("IsTrigger" , &SHCollisionShape::IsTrigger , &SHCollisionShape::SetIsTrigger ) + .property("Friction" , &SHCollisionShape::GetFriction , &SHCollisionShape::SetFriction ) + .property("Bounciness" , &SHCollisionShape::GetBounciness , &SHCollisionShape::SetBounciness ) + .property("Density" , &SHCollisionShape::GetDensity , &SHCollisionShape::SetDensity ) + .property("Position Offset" , &SHCollisionShape::GetPositionOffset, &SHCollisionShape::SetPositionOffset) + .property("Rotation Offset" , &SHCollisionShape::GetRotationOffset, &SHCollisionShape::SetRotationOffset) (metadata(META::angleInRad, true)); +} \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/Shapes/SHCollisionShape.h b/SHADE_Engine/src/Physics/Collision/Shapes/SHCollisionShape.h new file mode 100644 index 00000000..3e57b74a --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/Shapes/SHCollisionShape.h @@ -0,0 +1,210 @@ +/**************************************************************************************** + * \file SHCollisionShape.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for a Base CollisionShape Class. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +#include + +// Project Headers +#include "ECS_Base/Entity/SHEntity.h" +#include "Physics/Collision/CollisionTags/SHCollisionTags.h" +#include "Physics/Collision/SHPhysicsMaterial.h" +#include "SHCollisionShapeID.h" +#include "Math/Geometry/SHAABB.h" +#include "Math/Transform/SHTransform.h" +#include "Physics/Collision/SHPhysicsRaycastResult.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Forward Declarations */ + /*-----------------------------------------------------------------------------------*/ + + class SHRigidBody; + + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + + class SH_API SHCollisionShape + { + private: + + /*---------------------------------------------------------------------------------*/ + /* Friends */ + /*---------------------------------------------------------------------------------*/ + + friend class SHCollider; + friend class SHCompositeCollider; + friend class SHColliderComponent; + friend class SHCollisionShapeLibrary; + friend class SHCollisionSpace; + friend struct SHManifold; + + public: + /*---------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*---------------------------------------------------------------------------------*/ + + enum class Type + { + SPHERE + , BOX + , CAPSULE + , CONVEX_HULL + + , COUNT + , INVALID = -1 + }; + + /*---------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*---------------------------------------------------------------------------------*/ + + SHCollisionShape (SHCollisionShapeID id, Type colliderType = Type::SPHERE); + + SHCollisionShape (const SHCollisionShape& rhs) noexcept = default; + SHCollisionShape (SHCollisionShape&& rhs) noexcept = default; + virtual ~SHCollisionShape () noexcept = default; + + /*---------------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*---------------------------------------------------------------------------------*/ + + SHCollisionShape& operator=(const SHCollisionShape& rhs) noexcept = default; + SHCollisionShape& operator=(SHCollisionShape&& rhs) noexcept = default; + + /*---------------------------------------------------------------------------------*/ + /* Getter Functions */ + /*---------------------------------------------------------------------------------*/ + + [[nodiscard]] EntityID GetEntityID () const noexcept; + [[nodiscard]] uint32_t GetIndex () const noexcept; + + // Material Properties + // TODO: Remove individual setters once instanced materials are supported + + [[nodiscard]] float GetFriction () const noexcept; + [[nodiscard]] float GetBounciness () const noexcept; + [[nodiscard]] float GetDensity () const noexcept; + [[nodiscard]] const SHPhysicsMaterial& GetMaterial () const noexcept; + + // Offsets + + [[nodiscard]] const SHVec3& GetPositionOffset () const noexcept; + [[nodiscard]] const SHVec3& GetRotationOffset () const noexcept; + + // Flags + + [[nodiscard]] Type GetType () const noexcept; + [[nodiscard]] bool IsTrigger () const noexcept; + [[nodiscard]] bool IsColliding () const noexcept; + + [[nodiscard]] const SHCollisionTag& GetCollisionTag () const noexcept; + + // Virtual methods + + [[nodiscard]] virtual SHVec3 GetWorldCentroid () const noexcept = 0; + [[nodiscard]] virtual SHVec3 GetRelativeCentroid () const noexcept = 0; + [[nodiscard]] virtual SHVec3 GetLocalCentroid () const noexcept = 0; + [[nodiscard]] virtual SHQuaternion GetWorldOrientation () const noexcept = 0; + [[nodiscard]] virtual SHQuaternion GetRelativeOrientation () const noexcept = 0; + [[nodiscard]] virtual float GetVolume () const noexcept = 0; + [[nodiscard]] virtual float GetSurfaceArea () const noexcept = 0; + [[nodiscard]] virtual SHMatrix GetInertiaTensor (float mass) const noexcept = 0; + + /*---------------------------------------------------------------------------------*/ + /* Setter Functions */ + /*---------------------------------------------------------------------------------*/ + + void SetCollisionTag (SHCollisionTag* newCollisionTag) noexcept; + + void SetFriction (float friction) noexcept; + void SetBounciness (float bounciness) noexcept; + void SetDensity (float density) noexcept; + void SetMaterial (const SHPhysicsMaterial& newMaterial) noexcept; + + void SetPositionOffset (const SHVec3& posOffset) noexcept; + void SetRotationOffset (const SHVec3& rotOffset) noexcept; + + // Flags + + // Forces rigidbody to recompute mass if one exists + void SetIsTrigger (bool isTrigger) noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Member Functions */ + /*---------------------------------------------------------------------------------*/ + + /** + * @brief + * Computes the transform of the shape. + */ + virtual void Update () noexcept = 0; + + /** + * @brief + * Tests if a point is inside this shape. + * @param point + * The point to test against the shape. + * @return + * True if the point is inside the shape. False otherwise. + */ + [[nodiscard]] virtual bool TestPoint (const SHVec3& point) const noexcept = 0; + + /** + * @brief + * Casts a ray at this shape. + * @param ray + * The ray to cast at the shape. + * @return + * The result of the ray cast. See the corresponding struct for it's contents. + */ + [[nodiscard]] virtual SHRaycastResult Raycast (const SHRay& ray) const noexcept = 0; + + /** + * @brief + * Computes the TRS matrix for rendering the shape. + * @return + * The model-to-world matrix for rendering the shape. + */ + [[nodiscard]] virtual SHMatrix GetTRS () const noexcept = 0; + + /** + * @brief + * Computes a tight-fitting AABB around this shape. + * @return + * An AABB. + */ + [[nodiscard]] virtual SHAABB ComputeAABB () const noexcept = 0; + + protected: + /*---------------------------------------------------------------------------------*/ + /* Data Members */ + /*---------------------------------------------------------------------------------*/ + + SHCollisionShapeID id; + + SHCollider* collider; // The collider it belongs to. + SHCollisionTag* collisionTag; + SHPhysicsMaterial material; // TODO: Change to pointer once instancing is supported + + SHTransform transform; // Stores the local position and rotation. + + // Needed for conversion to euler angles + SHVec3 rotationOffset; + + uint8_t flags; // 0 0 0 trigger convexHull capsule sphere box + + + RTTR_ENABLE() + }; + +} // namespace SHADE diff --git a/SHADE_Engine/src/Physics/Collision/SHCollisionInfo.h b/SHADE_Engine/src/Physics/Collision/Shapes/SHCollisionShapeID.h similarity index 55% rename from SHADE_Engine/src/Physics/Collision/SHCollisionInfo.h rename to SHADE_Engine/src/Physics/Collision/Shapes/SHCollisionShapeID.h index d2dad647..09f712d1 100644 --- a/SHADE_Engine/src/Physics/Collision/SHCollisionInfo.h +++ b/SHADE_Engine/src/Physics/Collision/Shapes/SHCollisionShapeID.h @@ -1,7 +1,7 @@ /**************************************************************************************** - * \file SHCollisionInfo.h + * \file SHCollisionShapeKey.h * \author Diren D Bharwani, diren.dbharwani, 390002520 - * \brief Interface for Collision Information for Collision & Triggers. + * \brief Interface for a Collison Shape ID Class and it's hashing function * * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or * disclosure of this file or its contents without the prior written consent @@ -11,92 +11,95 @@ #pragma once // Project Headers -#include "Physics/Interface/SHColliderComponent.h" -#include "Physics/Interface/SHRigidBodyComponent.h" - +#include "ECS_Base/Entity/SHEntity.h" namespace SHADE { + /*-----------------------------------------------------------------------------------*/ + /* Forward Declarations */ + /*-----------------------------------------------------------------------------------*/ + + struct SHCollisionShapeIDHash; + /*-----------------------------------------------------------------------------------*/ /* Type Definitions */ /*-----------------------------------------------------------------------------------*/ - class SH_API SHCollisionInfo + /** + * @brief + * Encapsulates an identifier for a collision shape. + */ + union SHCollisionShapeID { private: /*---------------------------------------------------------------------------------*/ /* Friends */ /*---------------------------------------------------------------------------------*/ - friend class SHCollisionListener; + friend struct SHCollisionShapeIDHash; public: - /*---------------------------------------------------------------------------------*/ - /* Type Definitions */ - /*---------------------------------------------------------------------------------*/ - - enum class State - { - ENTER - , STAY - , EXIT - - , TOTAL - , INVALID = -1 - }; - /*---------------------------------------------------------------------------------*/ /* Constructors & Destructor */ /*---------------------------------------------------------------------------------*/ - SHCollisionInfo () noexcept; - SHCollisionInfo (EntityID entityA, EntityID entityB) noexcept; + SHCollisionShapeID (EntityID eid, uint32_t shapeID) noexcept; + SHCollisionShapeID (const SHCollisionShapeID& rhs) noexcept; + SHCollisionShapeID (SHCollisionShapeID&& rhs) noexcept; - - SHCollisionInfo (const SHCollisionInfo& rhs) = default; - SHCollisionInfo (SHCollisionInfo&& rhs) = default; - ~SHCollisionInfo () = default; + ~SHCollisionShapeID () noexcept = default; /*---------------------------------------------------------------------------------*/ /* Operator Overloads */ /*---------------------------------------------------------------------------------*/ - bool operator== (const SHCollisionInfo& rhs) const noexcept; - bool operator!= (const SHCollisionInfo& rhs) const noexcept; + SHCollisionShapeID& operator=(const SHCollisionShapeID& rhs) noexcept; + SHCollisionShapeID& operator=(SHCollisionShapeID&& rhs) noexcept; - SHCollisionInfo& operator= (const SHCollisionInfo& rhs) = default; - SHCollisionInfo& operator= (SHCollisionInfo&& rhs) = default; + bool operator==(const SHCollisionShapeID& rhs) const; /*---------------------------------------------------------------------------------*/ /* Getter Functions */ /*---------------------------------------------------------------------------------*/ - [[nodiscard]] EntityID GetEntityA () const noexcept; - [[nodiscard]] EntityID GetEntityB () const noexcept; - [[nodiscard]] const SHRigidBodyComponent* GetRigidBodyA () const noexcept; - [[nodiscard]] const SHRigidBodyComponent* GetRigidBodyB () const noexcept; - [[nodiscard]] const SHCollisionShape* GetColliderA () const noexcept; - [[nodiscard]] const SHCollisionShape* GetColliderB () const noexcept; - [[nodiscard]] State GetCollisionState () const noexcept; + [[nodiscard]] EntityID GetEntityID () const noexcept; + [[nodiscard]] uint32_t GetShapeIndex () const noexcept; private: + /*---------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*---------------------------------------------------------------------------------*/ + + struct IDs + { + public: + EntityID entityID = MAX_EID; + uint32_t shapeIndex = std::numeric_limits::max(); + }; - static constexpr uint32_t ENTITY_A = 0; - static constexpr uint32_t ENTITY_B = 1; - static constexpr uint32_t COLLIDER_A = 2; - static constexpr uint32_t COLLIDER_B = 3; /*---------------------------------------------------------------------------------*/ /* Data Members */ /*---------------------------------------------------------------------------------*/ - union - { - uint64_t value[2]; // EntityValue, ColliderIndexValue - uint32_t ids [4]; // EntityA, EntityB, ColliderIndexA, ColliderIndexB - }; - - State collisionState; + uint64_t value; + IDs ids; }; -} // namespace SHADE \ No newline at end of file + /** + * @brief + * Encapsulates a functor to hash a CollisionShapeID + */ + struct SHCollisionShapeIDHash + { + public: + /*---------------------------------------------------------------------------------*/ + /* Member Functions */ + /*---------------------------------------------------------------------------------*/ + + std::size_t operator()(const SHCollisionShapeID& id) const; + }; + +} // namespace SHADE + +#include "SHCollisionShapeID.hpp" diff --git a/SHADE_Engine/src/Physics/Collision/Shapes/SHCollisionShapeID.hpp b/SHADE_Engine/src/Physics/Collision/Shapes/SHCollisionShapeID.hpp new file mode 100644 index 00000000..bb9ccb1f --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/Shapes/SHCollisionShapeID.hpp @@ -0,0 +1,80 @@ +/**************************************************************************************** + * \file SHCollisionShapeKey.hpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Inlined Implementations for a Collison Shape ID Class and + * it's hashing function. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +// Primary Header +#include "SHCollisionShapeID.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor Definitions */ + /*-----------------------------------------------------------------------------------*/ + + inline SHCollisionShapeID::SHCollisionShapeID(EntityID eid, uint32_t shapeID) noexcept + : ids { eid, shapeID } + {} + + inline SHCollisionShapeID::SHCollisionShapeID(const SHCollisionShapeID& rhs) noexcept + : ids { rhs.ids.entityID, rhs.ids.shapeIndex } + {} + + inline SHCollisionShapeID::SHCollisionShapeID(SHCollisionShapeID&& rhs) noexcept + : ids { rhs.ids.entityID, rhs.ids.shapeIndex } + {} + + + /*-----------------------------------------------------------------------------------*/ + /* Operator Overload Definitions */ + /*-----------------------------------------------------------------------------------*/ + + inline SHCollisionShapeID& SHCollisionShapeID::operator=(const SHCollisionShapeID& rhs) noexcept + { + if (this == &rhs) + return *this; + + value = rhs.value; + + return *this; + } + + inline SHCollisionShapeID& SHCollisionShapeID::operator=(SHCollisionShapeID&& rhs) noexcept + { + value = rhs.value; + + return *this; + } + + inline bool SHCollisionShapeID::operator==(const SHCollisionShapeID& rhs) const + { + return value == rhs.value; + } + + inline std::size_t SHCollisionShapeIDHash::operator()(const SHCollisionShapeID& id) const + { + return std::hash{}(id.value); + } + + /*-----------------------------------------------------------------------------------*/ + /* Getter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + inline EntityID SHCollisionShapeID::GetEntityID() const noexcept + { + return ids.entityID; + } + + inline uint32_t SHCollisionShapeID::GetShapeIndex() const noexcept + { + return ids.shapeIndex; + } +} diff --git a/SHADE_Engine/src/Physics/Collision/Shapes/SHCollisionShapeLibrary.cpp b/SHADE_Engine/src/Physics/Collision/Shapes/SHCollisionShapeLibrary.cpp new file mode 100644 index 00000000..c70728f3 --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/Shapes/SHCollisionShapeLibrary.cpp @@ -0,0 +1,174 @@ +/**************************************************************************************** + * \file SHCollisionShapeLibrary.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for a Collison Shape Factory Class. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "SHCollisionShapeLibrary.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHCollisionShapeLibrary::SHCollisionShapeLibrary() noexcept + { + createBoxPolyhedron(); + } + + SHCollisionShapeLibrary::~SHCollisionShapeLibrary() noexcept + { + // Free all shapes in each container + for (auto* sphereCollisionShape : spheres | std::views::values) + DestroyShape(sphereCollisionShape); + + // Free all shapes in each container + for (auto* boxCollisionShape : boxes | std::views::values) + DestroyShape(boxCollisionShape); + } + + /*-----------------------------------------------------------------------------------*/ + /* Public Member Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHSphere* SHCollisionShapeLibrary::CreateSphere(SHCollisionShapeID id, const SHSphereCreateInfo& createInfo) + { + const auto RESULT = spheres.emplace(id, new SHSphere{ id }); + if (RESULT.second) + { + SHSphere* sphere = RESULT.first->second; + + sphere->Center = createInfo.Center; + sphere->Radius = createInfo.Radius; + sphere->relativeRadius = createInfo.RelativeRadius; + sphere->scale = createInfo.Scale; + + return sphere; + } + + return spheres.find(id)->second; + } + + SHBox* SHCollisionShapeLibrary::CreateBox(SHCollisionShapeID id, const SHBoxCreateInfo& createInfo) + { + const auto RESULT = boxes.emplace(id, new SHBox{ id }); + if (RESULT.second) + { + SHBox* box = RESULT.first->second; + + box->Center = createInfo.Center; + box->Extents = createInfo.Extents; + box->relativeExtents = createInfo.RelativeExtents; + box->Orientation = createInfo.Orientation; + box->scale = createInfo.Scale; + + // Set halfEdge data structure for the box + box->halfEdgeStructure = &boxHalfEdgeStructure; + + return box; + } + + return boxes.find(id)->second; + } + + + void SHCollisionShapeLibrary::DestroyShape(SHCollisionShape* shape) + { + switch (shape->GetType()) + { + case SHCollisionShape::Type::BOX: + { + break; + } + case SHCollisionShape::Type::SPHERE: + { + SHSphere* sphere = spheres.find(shape->id)->second; + spheres.erase(shape->id); + + delete sphere; + sphere = nullptr; + + break; + } + case SHCollisionShape::Type::CAPSULE: + { + break; + } + default: break; + } + } + + /*-----------------------------------------------------------------------------------*/ + /* Private Member Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHCollisionShapeLibrary::createBoxPolyhedron() noexcept + { + static constexpr int NUM_VERTICES_PER_FACE = 4; + static constexpr int NUM_FACES = 6; + + /* + * Vertices (Front/Back Face): + * + * 3/7 ---------- 2/6 + * | | + * | | + * | | + * 0/4 ---------- 1/5 + * + * Faces: + * + * Front: 0 (0,1,2,3) Normal: -Z + * Right: 1 (1,5,6,2) Normal: X + * Back: 2 (5,4,7,6) Normal: Z + * Left: 3 (4,0,3,7) Normal: -X + * Top: 4 (3,2,6,7) Normal: Y + * Bottom: 5 (4,5,1,0) Normal: -Y + * + */ + + // Create face data + + const SHVec3 FACE_NORMALS[NUM_FACES] + { + -SHVec3::UnitZ + , SHVec3::UnitX + , SHVec3::UnitZ + , -SHVec3::UnitX + , SHVec3::UnitY + , -SHVec3::UnitY + }; + + const int32_t FACE_VERTICES[NUM_FACES][NUM_VERTICES_PER_FACE] + { + { 0, 1, 2, 3 } + , { 5, 6, 2, 1 } + , { 5, 4, 7, 6 } + , { 0, 3, 7, 4 } + , { 2, 6, 7, 3 } + , { 5, 1, 0, 4 } + }; + + for (int i = 0; i < NUM_FACES; ++i) + { + SHHalfEdgeStructure::Face newFace; + newFace.normal = FACE_NORMALS[i]; + + for (int j = 0; j < NUM_VERTICES_PER_FACE; ++j) + newFace.vertexIndices.emplace_back(FACE_VERTICES[i][j]); + + boxHalfEdgeStructure.AddFace(newFace); + } + + boxHalfEdgeStructure.Build(); + } + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/SHCollisionListener.h b/SHADE_Engine/src/Physics/Collision/Shapes/SHCollisionShapeLibrary.h similarity index 50% rename from SHADE_Engine/src/Physics/Collision/SHCollisionListener.h rename to SHADE_Engine/src/Physics/Collision/Shapes/SHCollisionShapeLibrary.h index 62882556..462b8dd8 100644 --- a/SHADE_Engine/src/Physics/Collision/SHCollisionListener.h +++ b/SHADE_Engine/src/Physics/Collision/Shapes/SHCollisionShapeLibrary.h @@ -1,7 +1,7 @@ /**************************************************************************************** - * \file SHCollisionListener.h + * \file SHCollisionShapeLibrary.h * \author Diren D Bharwani, diren.dbharwani, 390002520 - * \brief Interface for a Collision Listener. + * \brief Interface for a Collison Shape Library. * * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or * disclosure of this file or its contents without the prior written consent @@ -10,71 +10,99 @@ #pragma once -// External Dependencies -#include +#include -// Project Headers -#include "SH_API.h" -#include "SHCollisionInfo.h" +// Project Header +#include "SHSphere.h" +#include "SHBox.h" namespace SHADE { - /*-----------------------------------------------------------------------------------*/ - /* Forward Declarations */ - /*-----------------------------------------------------------------------------------*/ - - class SHPhysicsSystem; - /*-----------------------------------------------------------------------------------*/ /* Type Definitions */ /*-----------------------------------------------------------------------------------*/ - class SH_API SHCollisionListener final : public rp3d::EventListener + /** + * @brief + * Encapsulates a class for Creating, Storing and Destroying Collision Shapes.
+ * All memory for collision shapes are stored in this factory class.
+ */ + class SH_API SHCollisionShapeLibrary final { public: /*---------------------------------------------------------------------------------*/ /* Constructors & Destructor */ /*---------------------------------------------------------------------------------*/ - SHCollisionListener() noexcept; - - /*---------------------------------------------------------------------------------*/ - /* Getter Functions */ - /*---------------------------------------------------------------------------------*/ - - [[nodiscard]] const std::vector& GetCollisionInfoContainer () const noexcept; - [[nodiscard]] const std::vector& GetTriggerInfoContainer () const noexcept; + SHCollisionShapeLibrary () noexcept; + ~SHCollisionShapeLibrary () noexcept; /*---------------------------------------------------------------------------------*/ /* Function Members */ /*---------------------------------------------------------------------------------*/ - void BindToSystem (SHPhysicsSystem* physicsSystem) noexcept; - void BindToWorld (rp3d::PhysicsWorld* world) noexcept; - void CleanContainers () noexcept; - void ClearContainers () noexcept; + /** + * @brief + * Creates a sphere collision shape. + * @param id + * The ID of the shape. + * @param createInfo + * The info to create the sphere with. + * @return + * A new sphere collision shape. + */ + SHSphere* CreateSphere (SHCollisionShapeID id, const SHSphereCreateInfo& createInfo); - void onContact (const rp3d::CollisionCallback::CallbackData& callbackData) override; - void onTrigger (const rp3d::OverlapCallback::CallbackData& callbackData) override; + /** + * @brief + * Creates a box collision shape. + * @param id + * The ID of the shape. + * @param createInfo + * The info to create the box with. + * @return + * A new box collision shape. + */ + SHBox* CreateBox (SHCollisionShapeID id, const SHBoxCreateInfo& createInfo); + + /** + * @brief + * Destroys a collision shape. + * * @param eid + * The entity the shape belongs to. + * @param shapeID + * The ID of the shape. + * @param shape + * The shape to destroy. + */ + void DestroyShape (SHCollisionShape* shape); private: + /*---------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*---------------------------------------------------------------------------------*/ + + // We use unordered maps for fast lookup when deleting. + // Since we are not instancing shapes (yet?), I'd rather not iterate through an entire vector to find the shape. + + using Spheres = std::unordered_map; + using Boxes = std::unordered_map; /*---------------------------------------------------------------------------------*/ /* Data Members */ /*---------------------------------------------------------------------------------*/ + + SHHalfEdgeStructure boxHalfEdgeStructure; - SHPhysicsSystem* system; - std::vector collisionInfoContainer; - std::vector triggerInfoContainer; + Spheres spheres; + Boxes boxes; + // TODO: Add capsules and hulls /*---------------------------------------------------------------------------------*/ /* Function Members */ /*---------------------------------------------------------------------------------*/ - static void updateInfoContainers (const SHCollisionInfo& collisionEvent, std::vector& container) noexcept; - - SHCollisionInfo generateCollisionInfo (const rp3d::CollisionCallback::ContactPair& cp) const noexcept; - SHCollisionInfo generateTriggerInfo (const rp3d::OverlapCallback::OverlapPair& cp) const noexcept; + void createBoxPolyhedron() noexcept; }; } // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/Shapes/SHConvexPolyhedron.cpp b/SHADE_Engine/src/Physics/Collision/Shapes/SHConvexPolyhedron.cpp new file mode 100644 index 00000000..8cccd837 --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/Shapes/SHConvexPolyhedron.cpp @@ -0,0 +1,96 @@ +/**************************************************************************************** + * \file SHConvexPolyhedronCollisionShape.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for a convex polyhedron collision shape. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "SHConvexPolyhedron.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHConvexPolyhedron::SHConvexPolyhedron(SHCollisionShapeID id,Type polyhedronType) noexcept + : SHCollisionShape (id, polyhedronType) + , halfEdgeStructure { nullptr } + {} + + SHConvexPolyhedron::SHConvexPolyhedron(const SHConvexPolyhedron& rhs) noexcept + : SHCollisionShape ( rhs ) + , halfEdgeStructure { rhs.halfEdgeStructure } + {} + + SHConvexPolyhedron::SHConvexPolyhedron(SHConvexPolyhedron&& rhs) noexcept + : SHCollisionShape ( rhs ) + , halfEdgeStructure { rhs.halfEdgeStructure } + {} + + /*-----------------------------------------------------------------------------------*/ + /* Operator Overload Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHConvexPolyhedron& SHConvexPolyhedron::operator=(const SHConvexPolyhedron& rhs) noexcept + { + if (this == &rhs) + return *this; + + SHCollisionShape::operator=(rhs); + + // Local Properties + halfEdgeStructure = rhs.halfEdgeStructure; + + return *this; + } + + SHConvexPolyhedron& SHConvexPolyhedron::operator=(SHConvexPolyhedron&& rhs) noexcept + { + SHCollisionShape::operator=(rhs); + + // Local Properties + halfEdgeStructure = rhs.halfEdgeStructure; + + return *this; + } + + /*-----------------------------------------------------------------------------------*/ + /* Getter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + const SHHalfEdgeStructure* SHConvexPolyhedron::GetHalfEdgeStructure() const noexcept + { + return halfEdgeStructure; + } + + int32_t SHConvexPolyhedron::GetFaceCount() const noexcept + { + return halfEdgeStructure->GetFaceCount(); + } + + int32_t SHConvexPolyhedron::GetHalfEdgeCount() const noexcept + { + return halfEdgeStructure->GetHalfEdgeCount(); + } + + const SHHalfEdgeStructure::Face& SHConvexPolyhedron::GetFace(int index) const + { + // Assume it has already been initialised + return halfEdgeStructure->GetFace(index); + } + + const SHHalfEdgeStructure::HalfEdge& SHConvexPolyhedron::GetHalfEdge(int index) const + { + // Assume it has already been initialised + return halfEdgeStructure->GetHalfEdge(index); + } + + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/Shapes/SHConvexPolyhedron.h b/SHADE_Engine/src/Physics/Collision/Shapes/SHConvexPolyhedron.h new file mode 100644 index 00000000..3944c556 --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/Shapes/SHConvexPolyhedron.h @@ -0,0 +1,93 @@ +/**************************************************************************************** + * \file SHConvexPolyhedronCollisionShape.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for a convex polyhedron collision shape. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +// Project Headers +#include "SHCollisionShape.h" +#include "SHHalfEdgeStructure.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + + /** + * @brief + * Encapsulates a convex polyhedron shape used for Physics Simulations.. + */ + class SH_API SHConvexPolyhedron : public SHCollisionShape + { + private: + /*---------------------------------------------------------------------------------*/ + /* Friends */ + /*---------------------------------------------------------------------------------*/ + + friend class SHCollider; + friend class SHCollision; + friend class SHCollisionShapeLibrary; + + public: + /*---------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*---------------------------------------------------------------------------------*/ + + SHConvexPolyhedron (SHCollisionShapeID id, Type polyhedronType) noexcept; + SHConvexPolyhedron (const SHConvexPolyhedron& rhs) noexcept; + SHConvexPolyhedron (SHConvexPolyhedron&& rhs) noexcept; + + ~SHConvexPolyhedron () override = default; + + /*---------------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*---------------------------------------------------------------------------------*/ + + SHConvexPolyhedron& operator=(const SHConvexPolyhedron& rhs) noexcept; + SHConvexPolyhedron& operator=(SHConvexPolyhedron&& rhs) noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Getter Functions */ + /*---------------------------------------------------------------------------------*/ + + [[nodiscard]] const SHHalfEdgeStructure* GetHalfEdgeStructure () const noexcept; + [[nodiscard]] int32_t GetFaceCount () const noexcept; + [[nodiscard]] const SHHalfEdgeStructure::Face& GetFace (int index) const; + [[nodiscard]] int32_t GetHalfEdgeCount () const noexcept; + [[nodiscard]] const SHHalfEdgeStructure::HalfEdge& GetHalfEdge (int index) const; + + // Virtual Methods + + [[nodiscard]] virtual SHVec3 GetVertex (int index) const = 0; + [[nodiscard]] virtual SHVec3 GetNormal (int faceIndex) const = 0; + + /*---------------------------------------------------------------------------------*/ + /* Member Functions */ + /*---------------------------------------------------------------------------------*/ + + /** + * @brief + * Finds the most extreme point on the polygon in a given direction. + * @param direction + * The direction to find the support point in. + * @return + * The most extreme vertex in the given direction. + */ + [[nodiscard]] virtual SHVec3 FindSupportPoint (const SHVec3& direction) const noexcept = 0; + + protected: + /*---------------------------------------------------------------------------------*/ + /* Data Members */ + /*---------------------------------------------------------------------------------*/ + + SHHalfEdgeStructure* halfEdgeStructure; // Defines the polyhedron by it's half edges. + }; + +} // namespace SHADE diff --git a/SHADE_Engine/src/Physics/Collision/Shapes/SHHalfEdgeStructure.cpp b/SHADE_Engine/src/Physics/Collision/Shapes/SHHalfEdgeStructure.cpp new file mode 100644 index 00000000..a25b5b8b --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/Shapes/SHHalfEdgeStructure.cpp @@ -0,0 +1,182 @@ +/**************************************************************************************** + * \file SHHalfEdgeStructure.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for a half-edge data structure to represent polyhedra. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "SHHalfEdgeStructure.h" + +// Helper Macros + +#define BUILD_UINT64_FROM_UINT32S(a, b) (uint64_t)a << 32 | b + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHHalfEdgeStructure::Face::Face(const Face& rhs) noexcept + : normal { rhs.normal } + { + std::ranges::copy(rhs.vertexIndices.begin(), rhs.vertexIndices.end(), std::back_inserter(vertexIndices)); + } + + SHHalfEdgeStructure::Face::Face(Face&& rhs) noexcept + : normal { rhs.normal } + { + std::ranges::copy(rhs.vertexIndices.begin(), rhs.vertexIndices.end(), std::back_inserter(vertexIndices)); + } + + /*-----------------------------------------------------------------------------------*/ + /* Operator Overload Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHHalfEdgeStructure::Face& SHHalfEdgeStructure::Face::operator=(const Face& rhs) noexcept + { + if (this == &rhs) + return *this; + + normal = rhs.normal; + + vertexIndices.clear(); + std::ranges::copy(rhs.vertexIndices.begin(), rhs.vertexIndices.end(), std::back_inserter(vertexIndices)); + + return *this; + } + + SHHalfEdgeStructure::Face& SHHalfEdgeStructure::Face::operator=(Face&& rhs) noexcept + { + normal = rhs.normal; + + vertexIndices.clear(); + std::ranges::copy(rhs.vertexIndices.begin(), rhs.vertexIndices.end(), std::back_inserter(vertexIndices)); + + return *this; + } + + /*-----------------------------------------------------------------------------------*/ + /* Getter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + int32_t SHHalfEdgeStructure::GetFaceCount() const noexcept + { + return static_cast(faces.size()); + } + + int32_t SHHalfEdgeStructure::GetHalfEdgeCount() const noexcept + { + return static_cast(halfEdges.size()); + } + + const SHHalfEdgeStructure::Face& SHHalfEdgeStructure::GetFace(int32_t index) const + { + if (index < 0 || index >= static_cast(faces.size())) + throw std::invalid_argument("Index out-of-range!"); + + return faces[index]; + } + + const SHHalfEdgeStructure::HalfEdge& SHHalfEdgeStructure::GetHalfEdge(int32_t index) const + { + if (index < 0 || index >= static_cast(halfEdges.size())) + throw std::invalid_argument("Index out-of-range!"); + + return halfEdges[index]; + } + + /*-----------------------------------------------------------------------------------*/ + /* Public Member Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHHalfEdgeStructure::AddFace(const Face& face) + { + faces.emplace_back(face); + } + + void SHHalfEdgeStructure::Build() noexcept + { + // We use the pair of vertex IDs on a half-edge to prevent duplicates + std::unordered_map edgeMap; + edgeMap.clear(); + + if (faces.empty()) + { + SHLOGV_CRITICAL("Unable to build convex polyhedron, no faces have been added!") + return; + } + + // For each face, build half edges + for (size_t i = 0; i < faces.size(); ++i) + { + Face& face = faces[i]; + + if (face.vertexIndices.empty()) + { + SHLOGV_CRITICAL("Unable to build convex polyhedron, no vertices have been added to face {}!", i) + return; + } + + // Iterate through vertices and build half-edges + for (size_t j = 0; j < face.vertexIndices.size(); ++j) + { + const int32_t TAIL = face.vertexIndices[j].index; + const int32_t HEAD = face.vertexIndices[(j + 1) % face.vertexIndices.size()].index; + + const uint64_t NEW_EDGE_ID = BUILD_UINT64_FROM_UINT32S(TAIL, HEAD); + const uint64_t TWIN_EDGE_ID = BUILD_UINT64_FROM_UINT32S(HEAD, TAIL); + + // Check if the half-edge has already been inserted + auto newEdgeIter = edgeMap.find(NEW_EDGE_ID); + if (newEdgeIter == edgeMap.end()) + { + // Reuse the iterator for mapping with the twin + newEdgeIter = edgeMap.emplace(NEW_EDGE_ID, HalfEdge{}).first; + + HalfEdge& newHalfEdge = newEdgeIter->second; + newHalfEdge.tailVertexIndex = TAIL; + newHalfEdge.headVertexIndex = HEAD; + newHalfEdge.faceIndex = static_cast(i); + + // Set edge index of the newly inserted edge as the size of the map - 1 + // Since it is an unordered map, it will just be at the back + newHalfEdge.edgeIndex = static_cast(edgeMap.size()) - 1; + + // Map vertex to this edge index + face.vertexIndices[j].edgeIndex = newHalfEdge.edgeIndex; + } + + // Find twin edge if one exists + auto twinEdgeIter = edgeMap.find(TWIN_EDGE_ID); + if (twinEdgeIter != edgeMap.end()) + { + // Set the twin index of both the edges + HalfEdge& newHalfEdge = newEdgeIter->second; + HalfEdge& twinHalfEdge = twinEdgeIter->second; + + newHalfEdge.twinEdgeIndex = twinHalfEdge.edgeIndex; + twinHalfEdge.twinEdgeIndex = newHalfEdge.edgeIndex; + } + } + } + + // Copy all half edges into the vector + // At this point, no duplicates should be in the map and all edges should be linked. + for (auto& halfEdge : edgeMap | std::views::values) + halfEdges.emplace_back(halfEdge); + + // Sort based on edge indices + std::ranges::sort(halfEdges.begin(), halfEdges.end(), [](const HalfEdge& lhs, const HalfEdge& rhs) + { + return lhs.edgeIndex < rhs.edgeIndex; + }); + } + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/Shapes/SHHalfEdgeStructure.h b/SHADE_Engine/src/Physics/Collision/Shapes/SHHalfEdgeStructure.h new file mode 100644 index 00000000..8982ae23 --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/Shapes/SHHalfEdgeStructure.h @@ -0,0 +1,143 @@ +/**************************************************************************************** + * \file SHHalfEdgeStructure.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for a half-edge data structure to represent polyhedra. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +#include + +// Project Headers +#include "Math/Vector/SHVec3.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + + /** + * @brief + * Encapsulates data for a convex polyhedron's geometry represented as faces & half edges. + */ + class SH_API SHHalfEdgeStructure + { + public: + /*---------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*---------------------------------------------------------------------------------*/ + + /** + * @brief + * Encapsulates the data half edge of a face on a polyhedron. + */ + struct HalfEdge + { + /*-------------------------------------------------------------------------------*/ + /* Data Members */ + /*-------------------------------------------------------------------------------*/ + + //Head and tail forms the edge. + //Head <----- Tail + int32_t tailVertexIndex = -1; + + // Head is also tail of the next edge. + int32_t headVertexIndex = -1; + + int32_t edgeIndex = -1; + // Other half of the edge on a different face. + // Important for extrapolating face normals. + int32_t twinEdgeIndex = -1; + + // Adjacent face of this edge. + int32_t faceIndex = -1; + }; + + struct Vertex + { + public: + /*-------------------------------------------------------------------------------*/ + /* Data Members */ + /*-------------------------------------------------------------------------------*/ + + int32_t index = -1; + int32_t edgeIndex = -1; // the half-edge that this vertex is a tail of. + }; + + /** + * @brief + * Encapsulates the data of a face on a polyhedron. + */ + struct Face + { + public: + /*-------------------------------------------------------------------------------*/ + /* Data Members */ + /*-------------------------------------------------------------------------------*/ + + SHVec3 normal; + std::vector vertexIndices; // Must be in CCW order + + /*-------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*-------------------------------------------------------------------------------*/ + + Face () noexcept = default; + Face (const Face& rhs) noexcept; + Face (Face&& rhs) noexcept; + ~Face () noexcept = default; + + /*-------------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*-------------------------------------------------------------------------------*/ + + Face& operator= (const Face& rhs) noexcept; + Face& operator= (Face&& rhs) noexcept; + }; + + /*---------------------------------------------------------------------------------*/ + /* Getter Functions */ + /*---------------------------------------------------------------------------------*/ + + [[nodiscard]] int32_t GetFaceCount () const noexcept; + [[nodiscard]] int32_t GetHalfEdgeCount () const noexcept; + + [[nodiscard]] const Face& GetFace (int32_t index) const; + [[nodiscard]] const HalfEdge& GetHalfEdge (int32_t index) const; + + /*---------------------------------------------------------------------------------*/ + /* Member Functions */ + /*---------------------------------------------------------------------------------*/ + + /** + * @brief + * Adds a face to the polyhedron. The face must be constructed outside the polyhedron. + * @param face + * The face to insert. + */ + void AddFace (const Face& face); + + /** + * @brief + * Builds the half-edges of the polyhedron using the faces.
+ * Before this method is invoked, there must be some faces. + * @return + */ + void Build() noexcept; + + private: + /*---------------------------------------------------------------------------------*/ + /* Data Members */ + /*---------------------------------------------------------------------------------*/ + + std::vector faces; + std::vector halfEdges; + + }; + +} // namespace SHADE diff --git a/SHADE_Engine/src/Physics/Collision/Shapes/SHSphere.cpp b/SHADE_Engine/src/Physics/Collision/Shapes/SHSphere.cpp new file mode 100644 index 00000000..5708bf91 --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/Shapes/SHSphere.cpp @@ -0,0 +1,240 @@ +/**************************************************************************************** + * \file SHSphereCollisionShape.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for a Sphere Collision Shape. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "SHSphere.h" + +// Project Headers +#include "Math/SHMathHelpers.h" +#include "Math/SHMatrix.h" +#include "Physics/Collision/SHCollider.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHSphere::SHSphere(SHCollisionShapeID id) noexcept + : SHCollisionShape (id, Type::SPHERE) + , relativeRadius { 1.0f } + , scale { 1.0f } + { + Radius = 0.5f; + } + + SHSphere::SHSphere(const SHSphere& rhs) noexcept + : SHCollisionShape ( rhs ) + , relativeRadius { rhs.relativeRadius } + , scale { rhs.scale } + { + Center = rhs.Center; + Radius = rhs.Radius; + } + + SHSphere::SHSphere(SHSphere&& rhs) noexcept + : SHCollisionShape ( rhs ) + , relativeRadius { rhs.relativeRadius } + , scale { rhs.scale } + { + Center = rhs.Center; + Radius = rhs.Radius; + } + + /*-----------------------------------------------------------------------------------*/ + /* Operator Overload Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHSphere& SHSphere::operator=(const SHSphere& rhs) noexcept + { + if (this == &rhs) + return *this; + + SHCollisionShape::operator=(rhs); + + // Sphere Properties + + Center = rhs.Center; + Radius = rhs.Radius; + + // Local Properties + + relativeRadius = rhs.relativeRadius; + scale = rhs.scale; + + return *this; + } + + SHSphere& SHSphere::operator=(SHSphere&& rhs) noexcept + { + SHCollisionShape::operator=(rhs); + + // Sphere Properties + + Center = rhs.Center; + Radius = rhs.Radius; + + // Local Properties + + relativeRadius = rhs.relativeRadius; + scale = rhs.scale; + + return *this; + } + + /*-----------------------------------------------------------------------------------*/ + /* Getter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + float SHSphere::GetWorldRadius() const noexcept + { + return Radius; + } + + float SHSphere::GetRelativeRadius() const noexcept + { + return relativeRadius; + } + + SHVec3 SHSphere::GetWorldCentroid() const noexcept + { + return Center; + } + + SHVec3 SHSphere::GetRelativeCentroid() const noexcept + { + if (collider) + return SHVec3{ Center } - collider->GetPosition(); + + return Center; + } + + SHVec3 SHSphere::GetLocalCentroid() const noexcept + { + return SHVec3::Zero; + } + + SHQuaternion SHSphere::GetWorldOrientation() const noexcept + { + if (collider) + return collider->GetOrientation() * transform.orientation; + + return transform.orientation; + } + + SHQuaternion SHSphere::GetRelativeOrientation() const noexcept + { + return transform.orientation; + } + + float SHSphere::GetVolume() const noexcept + { + return (4.0f / 3.0f) * SHMath::PI * (Radius * Radius * Radius); + } + + float SHSphere::GetSurfaceArea() const noexcept + { + return 4.0f * SHMath::PI * (Radius * Radius); + } + + SHMatrix SHSphere::GetInertiaTensor(float mass) const noexcept + { + static constexpr float TWO_OVER_FIVE = 2.0f / 5.0f; + + const float DIAGONAL = TWO_OVER_FIVE * mass * (Radius * Radius); + + SHMatrix result; + result.m[0][0] = result.m[1][1] = result.m[2][2] = DIAGONAL; + return result; + } + + /*-----------------------------------------------------------------------------------*/ + /* Setter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHSphere::SetWorldRadius(float newWorldRadius) noexcept + { + Radius = newWorldRadius; + + // Recompute Relative radius + relativeRadius = 2.0f * Radius / scale; + } + + void SHSphere::SetRelativeRadius(float newRelativeRadius) noexcept + { + relativeRadius = newRelativeRadius; + + // Recompute world radius + Radius = relativeRadius * scale * 0.5f; + } + + void SHSphere::SetScale(float maxScale) noexcept + { + scale = std::fabs(maxScale); + + // Recompute world radius + Radius = relativeRadius * scale * 0.5f; + } + + /*-----------------------------------------------------------------------------------*/ + /* Public Member Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHSphere::Update() noexcept + { + const SHTransform& PARENT_TRANSFORM = collider->GetTransform(); + + const float SPHERE_SCALE = std::fabs(SHMath::Max({ PARENT_TRANSFORM.scale.x, PARENT_TRANSFORM.scale.y, PARENT_TRANSFORM.scale.z })); + SetScale(SPHERE_SCALE); + + // Recompute center + const SHQuaternion FINAL_ROT = PARENT_TRANSFORM.orientation * transform.orientation; + const SHMatrix TRS = SHMatrix::Rotate(FINAL_ROT) * SHMatrix::Translate(PARENT_TRANSFORM.position); + + Center = SHVec3::Transform(transform.position, TRS); + } + + bool SHSphere::TestPoint(const SHVec3& point) const noexcept + { + return Contains(point); + } + + SHRaycastResult SHSphere::Raycast(const SHRay& ray) const noexcept + { + SHRaycastResult result; + + result.hit = Intersects(ray.position, ray.direction, result.distance); + if (result.hit) + { + result.position = ray.position + ray.direction * result.distance; + result.angle = SHVec3::Angle(ray.position, result.position); + result.normal = SHVec3::Normalise(result.position - Center); + } + + return result; + } + + SHMatrix SHSphere::GetTRS() const noexcept + { + const SHQuaternion ROTATION = collider ? collider->GetTransform().orientation * transform.orientation : transform.orientation; + const SHVec3 SCALE { Radius }; + + return SHMatrix::Transform(Center, ROTATION, SCALE); + } + + SHAABB SHSphere::ComputeAABB() const noexcept + { + return SHAABB{ Center, SHVec3{ Radius } }; + } + + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Math/Geometry/SHSphere.h b/SHADE_Engine/src/Physics/Collision/Shapes/SHSphere.h similarity index 56% rename from SHADE_Engine/src/Math/Geometry/SHSphere.h rename to SHADE_Engine/src/Physics/Collision/Shapes/SHSphere.h index e056f21a..b874d2fe 100644 --- a/SHADE_Engine/src/Math/Geometry/SHSphere.h +++ b/SHADE_Engine/src/Physics/Collision/Shapes/SHSphere.h @@ -1,7 +1,7 @@ /**************************************************************************************** - * \file SHBoundingSphere.h + * \file SHSphereCollisionShape.h * \author Diren D Bharwani, diren.dbharwani, 390002520 - * \brief Interface for a Bounding Sphere. + * \brief Interface for a Sphere Collision Shape. * * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or * disclosure of this file or its contents without the prior written consent @@ -13,8 +13,7 @@ #include // Project Headers -#include "SHShape.h" -#include "SH_API.h" +#include "SHCollisionShape.h" namespace SHADE { @@ -22,18 +21,44 @@ namespace SHADE /* Type Definitions */ /*-----------------------------------------------------------------------------------*/ - class SH_API SHSphere : public SHShape, - private DirectX::BoundingSphere + /** + * @brief + * Encapsulates the information to create a sphere. + */ + struct SHSphereCreateInfo { + public: + SHVec3 Center = SHVec3::Zero; + float Radius = 1.0f; + float RelativeRadius = 1.0f; + float Scale = 1.0f; + }; + + /** + * @brief + * Encapsulate a Sphere Shape used for Physics Simulations. + */ + class SH_API SHSphere final : public SHCollisionShape + , private DirectX::BoundingSphere + { + private: + /*---------------------------------------------------------------------------------*/ + /* Friends */ + /*---------------------------------------------------------------------------------*/ + + friend class SHCollider; + friend class SHCompositeCollider; + friend class SHCollision; + friend class SHCollisionShapeLibrary; + public: /*---------------------------------------------------------------------------------*/ /* Constructors & Destructor */ /*---------------------------------------------------------------------------------*/ - SHSphere () noexcept; - SHSphere (const SHVec3& center, float radius) noexcept; - SHSphere (const SHSphere& rhs) noexcept; - SHSphere (SHSphere&& rhs) noexcept; + SHSphere (SHCollisionShapeID id) noexcept; + SHSphere (const SHSphere& rhs) noexcept; + SHSphere (SHSphere&& rhs) noexcept; ~SHSphere () override = default; @@ -48,45 +73,43 @@ namespace SHADE /* Getter Functions */ /*---------------------------------------------------------------------------------*/ - [[nodiscard]] SHVec3 GetCenter () const noexcept; - [[nodiscard]] float GetWorldRadius () const noexcept; - [[nodiscard]] float GetRelativeRadius () const noexcept; + [[nodiscard]] float GetWorldRadius () const noexcept; + [[nodiscard]] float GetRelativeRadius () const noexcept; + + [[nodiscard]] SHVec3 GetWorldCentroid () const noexcept override; + [[nodiscard]] SHVec3 GetRelativeCentroid () const noexcept override; + [[nodiscard]] SHVec3 GetLocalCentroid () const noexcept override; + [[nodiscard]] SHQuaternion GetWorldOrientation () const noexcept override; + [[nodiscard]] SHQuaternion GetRelativeOrientation () const noexcept override; + [[nodiscard]] float GetVolume () const noexcept override; + [[nodiscard]] float GetSurfaceArea () const noexcept override; + [[nodiscard]] SHMatrix GetInertiaTensor (float mass) const noexcept override; /*---------------------------------------------------------------------------------*/ /* Setter Functions */ /*---------------------------------------------------------------------------------*/ - void SetCenter (const SHVec3& center) noexcept; void SetWorldRadius (float newWorldRadius) noexcept; void SetRelativeRadius (float newRelativeRadius) noexcept; + void SetScale (float maxScale) noexcept; /*---------------------------------------------------------------------------------*/ /* Function Members */ /*---------------------------------------------------------------------------------*/ + void Update () noexcept override; [[nodiscard]] bool TestPoint (const SHVec3& point) const noexcept override; - [[nodiscard]] SHRaycastResult Raycast(const SHRay& ray) const noexcept override; - - [[nodiscard]] bool Contains (const SHSphere& rhs) const noexcept; - [[nodiscard]] float Volume () const noexcept; - [[nodiscard]] float SurfaceArea () const noexcept; - - - /*---------------------------------------------------------------------------------*/ - /* Static Function Members */ - /*---------------------------------------------------------------------------------*/ - - [[nodiscard]] static SHSphere Combine (const SHSphere& lhs, const SHSphere& rhs) noexcept; - [[nodiscard]] static bool Intersect (const SHSphere& lhs, const SHSphere& rhs) noexcept; - [[nodiscard]] static SHSphere BuildFromSpheres (const SHSphere* spheres, size_t numSpheres) noexcept; - [[nodiscard]] static SHSphere BuildFromVertices (const SHVec3* vertices, size_t numVertices, size_t stride = 0) noexcept; + [[nodiscard]] SHRaycastResult Raycast (const SHRay& ray) const noexcept override; + [[nodiscard]] SHMatrix GetTRS () const noexcept override; + [[nodiscard]] SHAABB ComputeAABB () const noexcept override; private: /*---------------------------------------------------------------------------------*/ /* Data Members */ /*---------------------------------------------------------------------------------*/ - float RelativeRadius; - + float relativeRadius; + float scale; }; -} // namespace SHADE + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Dynamics/Constraints/SHContactConstraint.h b/SHADE_Engine/src/Physics/Dynamics/Constraints/SHContactConstraint.h new file mode 100644 index 00000000..04be00b4 --- /dev/null +++ b/SHADE_Engine/src/Physics/Dynamics/Constraints/SHContactConstraint.h @@ -0,0 +1,56 @@ +/**************************************************************************************** + * \file SHContactConstraint.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for a Contact Constraint. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +// Project Headers +#include "Physics/Collision/Contacts/SHManifold.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + + struct SH_API SHContactConstraint + { + public: + /*---------------------------------------------------------------------------------*/ + /* Data Members */ + /*---------------------------------------------------------------------------------*/ + + // Use the entity IDs to map resolved constraints back to the bodies + + SHCollisionKey key; + + // Material Data + + float friction = 0.0f; + float restitution = 0.0f; + + // Mass Data + + float invMassA = 0.0f; + float invMassB = 0.0f; + SHMatrix invInertiaA; + SHMatrix invInertiaB; + SHVec3 centerOfMassA; + SHVec3 centerOfMassB; + + // Collision Data + + SHVec3 normal; + SHVec3 tangents[SHContact::NUM_TANGENTS]; + SHContact contacts[SHManifold::MAX_NUM_CONTACTS]; + + uint32_t numContacts = 0; + }; +} // namespace SHADE + diff --git a/SHADE_Engine/src/Physics/Dynamics/Constraints/SHVelocityState.h b/SHADE_Engine/src/Physics/Dynamics/Constraints/SHVelocityState.h new file mode 100644 index 00000000..7c9b6a10 --- /dev/null +++ b/SHADE_Engine/src/Physics/Dynamics/Constraints/SHVelocityState.h @@ -0,0 +1,63 @@ +/**************************************************************************************** + * \file SHVelocityState.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for a Velocity State for constraint solving. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +// Project Headers +#include "Physics/Dynamics/SHRigidBody.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + + struct SH_API SHVelocityState + { + public: + SHVec3 LinearVelocity; + SHVec3 AngularVelocity; + + SHVec3 LinearLockFactor; + SHVec3 AngularLockFactor; + + /*---------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*---------------------------------------------------------------------------------*/ + + SHVelocityState (const SHRigidBody* rigidBody) noexcept + : LinearVelocity { SHVec3::Zero } + , AngularVelocity { SHVec3::Zero } + , LinearLockFactor { SHVec3::Zero } + , AngularLockFactor { SHVec3::Zero } + { + if (rigidBody) + { + LinearVelocity = rigidBody->GetLinearVelocity(); + AngularVelocity = rigidBody->GetAngularVelocity(); + + LinearLockFactor = SHVec3 + { + rigidBody->GetFreezePositionX() ? 0.0f : 1.0f + , rigidBody->GetFreezePositionY() ? 0.0f : 1.0f + , rigidBody->GetFreezePositionZ() ? 0.0f : 1.0f + }; + + AngularLockFactor = SHVec3 + { + rigidBody->GetFreezeRotationX() ? 0.0f : 1.0f + , rigidBody->GetFreezeRotationY() ? 0.0f : 1.0f + , rigidBody->GetFreezeRotationZ() ? 0.0f : 1.0f + }; + } + } + }; + +} // namespace SHADE diff --git a/SHADE_Engine/src/Physics/Dynamics/SHContactManager.cpp b/SHADE_Engine/src/Physics/Dynamics/SHContactManager.cpp new file mode 100644 index 00000000..7434953e --- /dev/null +++ b/SHADE_Engine/src/Physics/Dynamics/SHContactManager.cpp @@ -0,0 +1,297 @@ +/**************************************************************************************** + * \file SHContactManager.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for a Contact Manager that stores collision information and + * resolves contact constraints. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "SHContactManager.h" + +// Project Headers +#include "Math/SHMathHelpers.h" +#include "Physics/Collision/Narrowphase/SHCollisionDispatch.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Getter Functions Definitions */ + /*-----------------------------------------------------------------------------------*/ + + const SHContactManager::TriggerEvents& SHContactManager::GetTriggerEvents() const noexcept + { + static TriggerEvents triggerEvents; + + triggerEvents.clear(); + + for (auto& [id, trigger] : triggers) + triggerEvents.emplace_back(SHTriggerEvent{ id, trigger.state }); + + return triggerEvents; + } + + const SHContactManager::CollisionEvents& SHContactManager::GetCollisionEvents() const noexcept + { + static CollisionEvents collisionEvents; + + collisionEvents.clear(); + + for (auto& [id, manifold] : manifolds) + { + SHCollisionEvent collisionEvent + { + .info = id + , .state = manifold.state + , .normal = manifold.normal + }; + + for (uint32_t i = 0; i < manifold.numContacts; ++i) + collisionEvent.contactPoints[i] = manifold.contacts[i].position; + + collisionEvents.emplace_back(collisionEvent); + } + + return collisionEvents; + } + + const SHContactManager::ContactPoints& SHContactManager::GetContactPoints() const noexcept + { + static ContactPoints contactPoints; + contactPoints.clear(); + + for (auto& manifold : manifolds | std::views::values) + { + // Skip exit state manifolds + if (manifold.state == SHCollisionState::EXIT) + continue; + + for (uint32_t i = 0; i < manifold.numContacts; ++i) + { + const ContactInfo INFO + { + .position = manifold.contacts[i].position + , .normal = manifold.normal + }; + + contactPoints.emplace_back(INFO); + } + } + + return contactPoints; + } + + /*-----------------------------------------------------------------------------------*/ + /* Public Member Functions Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHContactManager::AddTrigger(const SHCollisionKey& key, SHCollisionShape* A, SHCollisionShape* B) noexcept + { + // If id not found, emplace new trigger. + auto trigger = triggers.find(key); + if (trigger == triggers.end()) + triggers.emplace(key, Trigger{ A, B, SHCollisionState::INVALID }); + } + + void SHContactManager::AddManifold(const SHCollisionKey& key, SHCollisionShape* A, SHCollisionShape* B) noexcept + { + // If id not found, emplace new manifold + auto manifold = manifolds.find(key); + if (manifold == manifolds.end()) + manifolds.emplace(key, SHManifold{ A, B }); + } + + void SHContactManager::RemoveInvalidatedTrigger(EntityID eid) noexcept + { + removeInvalidObject(triggers, eid); + } + + void SHContactManager::RemoveInvalidatedTrigger(EntityID eid, uint32_t shapeIndex) noexcept + { + removeInvalidObject(triggers, eid, shapeIndex); + } + + void SHContactManager::RemoveInvalidatedManifold(EntityID eid) noexcept + { + removeInvalidObject(manifolds, eid); + } + + void SHContactManager::RemoveInvalidatedManifold(EntityID eid, uint32_t shapeIndex) noexcept + { + removeInvalidObject(manifolds, eid, shapeIndex); + } + + void SHContactManager::Update() noexcept + { + // Clear expired or invalid collisions. If not, test collision. + for (auto manifoldPair = manifolds.begin(); manifoldPair != manifolds.end();) + { + // Test collision of every manifold. + SHManifold& manifold = manifoldPair->second; + SHManifold oldManifold = manifold; + + const bool IS_COLLIDING = SHCollisionDispatcher::Collide(manifold, *manifold.shapeA, *manifold.shapeB); + + auto& collisionState = manifold.state; + updateCollisionState(IS_COLLIDING, collisionState); + + const bool IS_INVALID = collisionState == SHCollisionState::INVALID; + if (IS_INVALID) + { + manifoldPair = manifolds.erase(manifoldPair); + continue; + } + + updateManifold(manifold, oldManifold); + ++manifoldPair; + } + + // Clear expired or invalid triggers, If not, test collision. + for (auto triggerPair = triggers.begin(); triggerPair != triggers.end();) + { + // Test collision of every trigger. + Trigger& oldTrigger = triggerPair->second; + Trigger newTrigger = oldTrigger; + + const bool IS_COLLIDING = SHCollisionDispatcher::Collide(*newTrigger.A, *newTrigger.B); + + auto& collisionState = newTrigger.state; + updateCollisionState(IS_COLLIDING, collisionState); + + const bool IS_INVALID = collisionState == SHCollisionState::INVALID; + if (IS_INVALID) + triggerPair = triggers.erase(triggerPair); + else + ++triggerPair; + } + } + + void SHContactManager::SolveCollisions(int numIterations, float dt) noexcept + { + static constexpr int SIZE_CONTACTS = sizeof(SHContact) * SHManifold::MAX_NUM_CONTACTS; + + // Build constraints + for (auto& [key, manifold] : manifolds) + contactSolver.AddContact(key, manifold); + + // Solve contacts + contactSolver.SolveContacts(numIterations, dt); + + // Map impulses back to manifolds + const auto& CONTACT_CONSTRAINTS = contactSolver.GetContantConstraints(); + const auto& VELOCITY_STATES = contactSolver.GetVelocities(); + + for (auto& [key, contactConstraint] : CONTACT_CONSTRAINTS) + { + SHManifold& manifold = manifolds.find(key)->second; + + for (uint32_t i = 0; i < contactConstraint.numContacts; ++i) + manifold.contacts[i] = contactConstraint.contacts[i]; + + // Assign velocities back to the bodies + SHRigidBody* bodyA = manifold.bodyA; + SHRigidBody* bodyB = manifold.bodyB; + + const auto& STATE_A = VELOCITY_STATES.find(key.GetEntityA())->second; + const auto& STATE_B = VELOCITY_STATES.find(key.GetEntityB())->second; + + if (bodyA) + { + bodyA->SetLinearVelocity(STATE_A.LinearVelocity); + bodyA->SetAngularVelocity(STATE_A.AngularVelocity); + } + + if (bodyB) + { + bodyB->SetLinearVelocity(STATE_B.LinearVelocity); + bodyB->SetAngularVelocity(STATE_B.AngularVelocity); + } + } + + contactSolver.Reset(); + } + + + /*-----------------------------------------------------------------------------------*/ + /* Private Member Functions Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHContactManager::updateCollisionState(bool isColliding, SHCollisionState& state) noexcept + { + if (isColliding) + { + // New states start at invalid. In the first frame of collision, move to enter. + // If it already in enter, move to stay + state = state == SHCollisionState::INVALID ? SHCollisionState::ENTER : SHCollisionState::STAY; + } + else + { + // If already exited and still not colliding, the collision has expired. + // Invalid states are removed in the next frame + if (state == SHCollisionState::EXIT) + state = SHCollisionState::INVALID; + + // If previously colliding, move to exit. + if (state == SHCollisionState::ENTER || state == SHCollisionState::STAY) + state = SHCollisionState::EXIT; + } + } + + void SHContactManager::updateManifold(SHManifold& manifold, const SHManifold& oldManifold) noexcept + { + static const float SQRT_ONE_THIRD = std::sqrtf(1.0f / 3.0f); + + // Early out since exiting a collision does not require an update beyond updating the state + if (manifold.state == SHCollisionState::EXIT) + return; + + const SHVec3& NORMAL = manifold.normal; + SHVec3& tangent0 = manifold.tangents[0]; + SHVec3& tangent1 = manifold.tangents[1]; + + const SHVec3& OLD_TANGENT_0 = oldManifold.tangents[0]; + const SHVec3& OLD_TANGENT_1 = oldManifold.tangents[1]; + + // Compute tangents + if (std::fabs(NORMAL.x) >= SQRT_ONE_THIRD) + tangent0 = SHVec3{ NORMAL.y, -NORMAL.x, 0.0f }; + else + tangent0 = SHVec3{ 0.0f, NORMAL.z, -NORMAL.y }; + + tangent0 = SHVec3::Normalise(tangent0); + tangent1 = SHVec3::Cross(NORMAL, tangent0); + + // Accumulate impulses + for (uint32_t i = 0; i < manifold.numContacts; ++i) + { + SHContact& contact = manifold.contacts[i]; + + // Reset impulses + contact.normalImpulse = 0.0f; + contact.tangentImpulse[0] = contact.tangentImpulse[1] = 0.0f; + + for (uint32_t j = 0; j < oldManifold.numContacts; ++j) + { + const SHContact& OLD_CONTACT = oldManifold.contacts[j]; + + if (OLD_CONTACT.featurePair.key == contact.featurePair.key) + { + // If contact features persists, re-project old solution + contact.normalImpulse = OLD_CONTACT.normalImpulse; + + const SHVec3 FRICTION_FORCE = OLD_TANGENT_0 * OLD_CONTACT.tangentImpulse[0] + OLD_TANGENT_1 * OLD_CONTACT.tangentImpulse[1]; + contact.tangentImpulse[0] = SHVec3::Dot(FRICTION_FORCE, tangent0); + contact.tangentImpulse[1] = SHVec3::Dot(FRICTION_FORCE, tangent1); + + break; + } + } + } + } + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Dynamics/SHContactManager.h b/SHADE_Engine/src/Physics/Dynamics/SHContactManager.h new file mode 100644 index 00000000..81f37146 --- /dev/null +++ b/SHADE_Engine/src/Physics/Dynamics/SHContactManager.h @@ -0,0 +1,140 @@ +/**************************************************************************************** + * \file SHContactManager.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for a Contact Manager that stores collision information. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +#include + +// Project Headers +#include "Physics/Collision/Contacts/SHCollisionEvents.h" +#include "Physics/Collision/Contacts/SHCollisionKey.h" +#include "Physics/Collision/Contacts/SHManifold.h" +#include "SHContactSolver.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + + /** + * @brief + * Encapsulates a class that stores collision information. + */ + class SH_API SHContactManager + { + private: + /*---------------------------------------------------------------------------------*/ + /* Friends */ + /*---------------------------------------------------------------------------------*/ + + friend class SHPhysicsWorld; + + public: + /*---------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*---------------------------------------------------------------------------------*/ + + struct ContactInfo + { + SHVec3 position; + SHVec3 normal; + }; + + using TriggerEvents = std::vector; + using CollisionEvents = std::vector; + using ContactPoints = std::vector; + + /*---------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*---------------------------------------------------------------------------------*/ + + SHContactManager () noexcept = default; + ~SHContactManager () noexcept = default; + + /*---------------------------------------------------------------------------------*/ + /* Getter Functions */ + /*---------------------------------------------------------------------------------*/ + + const TriggerEvents& GetTriggerEvents () const noexcept; + const CollisionEvents& GetCollisionEvents () const noexcept; + const ContactPoints& GetContactPoints () const noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Member Functions */ + /*---------------------------------------------------------------------------------*/ + + void AddTrigger (const SHCollisionKey& key, SHCollisionShape* A, SHCollisionShape* B) noexcept; + void AddManifold (const SHCollisionKey& key, SHCollisionShape* A, SHCollisionShape* B) noexcept; + + void RemoveInvalidatedTrigger (EntityID eid) noexcept; + void RemoveInvalidatedTrigger (EntityID eid, uint32_t shapeIndex) noexcept; + void RemoveInvalidatedManifold (EntityID eid) noexcept; + void RemoveInvalidatedManifold (EntityID eid, uint32_t shapeIndex) noexcept; + + /** + * @brief + * Removes any invalidated contacts and triggers, then performs narrowphase collision + * detection on existing triggers and manifolds. + */ + void Update () noexcept; + + /** + * @brief + * Builds contact constraints and solves them. Results are stored in the corresponding + * manifolds abiding by the sequential impulse method. + */ + void SolveCollisions (int numIterations, float dt) noexcept; + + private: + /*---------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*---------------------------------------------------------------------------------*/ + + struct Trigger + { + SHCollisionShape* A = nullptr; + SHCollisionShape* B = nullptr; + + SHCollisionState state = SHCollisionState::INVALID; + }; + + using Manifolds = std::unordered_map; + using Triggers = std::unordered_map; + + /*---------------------------------------------------------------------------------*/ + /* Data Members */ + /*---------------------------------------------------------------------------------*/ + + Manifolds manifolds; + Triggers triggers; + + SHContactSolver contactSolver; + + /*---------------------------------------------------------------------------------*/ + /* Member Functions */ + /*---------------------------------------------------------------------------------*/ + + static void updateCollisionState (bool isColliding, SHCollisionState& state) noexcept; + static void updateManifold (SHManifold& manifold, const SHManifold& oldManifold) noexcept; + + // Removal Helpers + + template + static void removeInvalidObject (std::unordered_map& container, EntityID eid) noexcept; + template + static void removeInvalidObject (std::unordered_map& container, EntityID eid, uint32_t shapeIndex) noexcept; + + }; + + +} // namespace SHADE + +#include "SHContactManager.hpp" \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Dynamics/SHContactManager.hpp b/SHADE_Engine/src/Physics/Dynamics/SHContactManager.hpp new file mode 100644 index 00000000..04a4b234 --- /dev/null +++ b/SHADE_Engine/src/Physics/Dynamics/SHContactManager.hpp @@ -0,0 +1,61 @@ +/**************************************************************************************** + * \file SHContactManager.hpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for templated methods of the Contact Manager. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +// Primary Header +#include "SHContactManager.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Private Member Functions Definitions */ + /*-----------------------------------------------------------------------------------*/ + + template + void SHContactManager::removeInvalidObject(std::unordered_map& container, EntityID eid) noexcept + { + if (container.empty()) + return; + + for (auto invalidated = container.begin(); invalidated != container.end();) + { + const auto& ID = invalidated->first; + + const bool MATCHES_A = ID.GetEntityA() == eid; + const bool MATCHES_B = ID.GetEntityB() == eid; + + if (MATCHES_A || MATCHES_B) + invalidated = container.erase(invalidated); + else + ++invalidated; + } + } + + template + void SHContactManager::removeInvalidObject(std::unordered_map& container, EntityID eid, uint32_t shapeIndex) noexcept + { + if (container.empty()) + return; + + for (auto invalidated = container.begin(); invalidated != container.end();) + { + const auto& ID = invalidated->first; + + const bool MATCHES_A = ID.GetEntityA() == eid && ID.GetShapeIndexA() == shapeIndex; + const bool MATCHES_B = ID.GetEntityB() == eid && ID.GetShapeIndexB() == shapeIndex; + + if (MATCHES_A || MATCHES_B) + invalidated = container.erase(invalidated); + else + ++invalidated; + } + } +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Dynamics/SHContactSolver.cpp b/SHADE_Engine/src/Physics/Dynamics/SHContactSolver.cpp new file mode 100644 index 00000000..f16d7f1e --- /dev/null +++ b/SHADE_Engine/src/Physics/Dynamics/SHContactSolver.cpp @@ -0,0 +1,332 @@ +/**************************************************************************************** + * \file SHContactSolver.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for a Contact Solver. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +***************************************************************************************/ + +#include + +// Primary Header +#include "SHContactSolver.h" + +// Project Headers +#include "Math/SHMathHelpers.h" +#include "Physics/SHPhysicsConstants.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Getter Functions Definitions */ + /*-----------------------------------------------------------------------------------*/ + + const SHContactSolver::VelocityStates& SHContactSolver::GetVelocities() const noexcept + { + return velocityStates; + } + + const SHContactSolver::ContactConstraints& SHContactSolver::GetContantConstraints() const noexcept + { + return contactConstraints; + } + + /*-----------------------------------------------------------------------------------*/ + /* Public Member Functions Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHContactSolver::AddContact(const SHCollisionKey& key, const SHManifold& manifold) noexcept + { + SHContactConstraint& newConstraint = contactConstraints.emplace(key, SHContactConstraint{}).first->second; + + const auto* SHAPE_A = manifold.shapeA; + const auto* SHAPE_B = manifold.shapeB; + + const auto* BODY_A = manifold.bodyA; + const auto* BODY_B = manifold.bodyB; + + // Add velocities if it doesn't already exist + velocityStates.emplace(key.GetEntityA(), SHVelocityState{ BODY_A }); + velocityStates.emplace(key.GetEntityB(), SHVelocityState{ BODY_B }); + + // Mix friction & restitution + const float FRICTION_A = SHAPE_A->GetFriction(); + const float RESTITUTION_A = SHAPE_A->GetBounciness(); + + const float FRICTION_B = SHAPE_B->GetFriction(); + const float RESTITUTION_B = SHAPE_B->GetBounciness(); + + newConstraint.friction = std::sqrtf(FRICTION_A * FRICTION_B); + newConstraint.restitution = std::max(RESTITUTION_A, RESTITUTION_B); + + // Mass data + + // Account for implicity-static bodies + if (BODY_A) + { + newConstraint.invMassA = BODY_A->invMass; + newConstraint.centerOfMassA = BODY_A->worldCentroid; + newConstraint.invInertiaA = BODY_A->worldInvInertia; + } + else + { + newConstraint.invMassA = 0.0f; + newConstraint.centerOfMassA = SHVec3::Zero; + + // Matrix needs to maintain its homogenous structure + newConstraint.invInertiaA = SHMatrix::Zero; + newConstraint.invInertiaA.m[3][3] = 1.0f; + } + + if (BODY_B) + { + newConstraint.invMassB = BODY_B->invMass; + newConstraint.centerOfMassB = BODY_B->worldCentroid; + newConstraint.invInertiaB = BODY_B->worldInvInertia; + } + else + { + newConstraint.invMassB = 0.0f; + newConstraint.centerOfMassB = SHVec3::Zero; + + // Matrix needs to maintain its homogenous structure + newConstraint.invInertiaB = SHMatrix::Zero; + newConstraint.invInertiaB.m[3][3] = 1.0f; + } + + // Collision data + + newConstraint.numContacts = manifold.numContacts; + + newConstraint.normal = manifold.normal; + + static constexpr size_t TANGENTS_SIZE = sizeof(SHVec3) * SHContact::NUM_TANGENTS; + static constexpr size_t CONTACTS_SIZE = sizeof(SHContact) * SHManifold::MAX_NUM_CONTACTS; + + memcpy_s(newConstraint.tangents, TANGENTS_SIZE, manifold.tangents, TANGENTS_SIZE); + memcpy_s(newConstraint.contacts, CONTACTS_SIZE, manifold.contacts, CONTACTS_SIZE); + + // Compute rA & rB for contacts + for (uint32_t i = 0; i < newConstraint.numContacts; ++i) + { + newConstraint.contacts[i].rA = newConstraint.contacts[i].position - newConstraint.centerOfMassA; + newConstraint.contacts[i].rB = newConstraint.contacts[i].position - newConstraint.centerOfMassB; + } + } + + void SHContactSolver::Reset() noexcept + { + velocityStates.clear(); + contactConstraints.clear(); + } + + void SHContactSolver::SolveContacts(int numIterations, float dt) noexcept + { + preSolve(dt); + + for (int i = 0; i < numIterations; ++i) + solve(); + } + + /*-----------------------------------------------------------------------------------*/ + /* Private Member Functions Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHContactSolver::preSolve(float dt) noexcept + { + const float INV_DT = 1.0f / dt; + + for (auto& [key, constraint] : contactConstraints) + { + const float INV_MASS_SUM = constraint.invMassA + constraint.invMassB; + + SHVelocityState& velocityStateA = velocityStates.find(key.GetEntityA())->second; + SHVelocityState& velocityStateB = velocityStates.find(key.GetEntityB())->second; + + SHVec3 vA = velocityStateA.LinearVelocity; + SHVec3 wA = velocityStateA.AngularVelocity; + SHVec3 vB = velocityStateB.LinearVelocity; + SHVec3 wB = velocityStateB.AngularVelocity; + + const SHVec3& LINEAR_LOCK_A = velocityStateA.LinearLockFactor; + const SHVec3& ANGULAR_LOCK_A = velocityStateA.AngularLockFactor; + const SHVec3& LINEAR_LOCK_B = velocityStateB.LinearLockFactor; + const SHVec3& ANGULAR_LOCK_B = velocityStateB.AngularLockFactor; + + for (uint32_t i = 0; i < constraint.numContacts; ++i) + { + SHContact& contact = constraint.contacts[i]; + + // Calculate JM-1JT (Effective mass) + /* + * rXnT * I-1 * rXn: + * + * 1. 3x3 * 3x1 = 3x1 + * 2. 1x3 * 3x1 = 1x1 + * + * First do I-1 * rXn + * | ix 0 0 || x | | ix * x | + * | 0 iy 0 || y | = | iy * y | + * | 0 0 iz || z | | iz * z | + * + * Then dot product the result with rXnT + * | ix * x |[ u v w ] + * | iy * y | = [ ix * x * w + iy * y * v + iz * z * w ] + * | iz * z | + * + * Simplified: + * + * rXnT /dot (I-1 * rXn) + */ + + // Effective mass along Normal + const SHVec3 RA_CROSS_N = SHVec3::Cross(contact.rA, constraint.normal); + const SHVec3 RB_CROSS_N = SHVec3::Cross(contact.rB, constraint.normal); + + contact.normalMass = INV_MASS_SUM; + contact.normalMass += SHVec3::Dot(RA_CROSS_N, constraint.invInertiaA * RA_CROSS_N); + contact.normalMass += SHVec3::Dot(RB_CROSS_N, constraint.invInertiaB * RB_CROSS_N); + + // Invert the normal mass (we want the actual mass, not the inverse mass) + contact.normalMass = 1.0f / contact.normalMass; + + // Effective mass along tangents (same steps as above) + + for (int j = 0; j < SHContact::NUM_TANGENTS; ++j) + { + const SHVec3 RA_CROSS_T = SHVec3::Cross(contact.rA, constraint.tangents[j]); + const SHVec3 RB_CROSS_T = SHVec3::Cross(contact.rB, constraint.tangents[j]); + + contact.tangentMass[j] = INV_MASS_SUM; + contact.tangentMass[j] += SHVec3::Dot(RA_CROSS_T, constraint.invInertiaA * RA_CROSS_T); + contact.tangentMass[j] += SHVec3::Dot(RB_CROSS_T, constraint.invInertiaB * RB_CROSS_T); + + contact.tangentMass[j] = 1.0f / contact.tangentMass[j]; + } + + // Calculate bias per contact + /* + * error bias = baumgarte factor / dt * penetration + * restituion bias = restitution * (relative velocity /dot normal) + */ + + const float ERROR_BIAS = -SHPHYSICS_BAUMGARTE * INV_DT * std::max(0.0f, contact.penetration - SHPHYSICS_LINEAR_SLOP); + + // Warm starting + // Compute impulses + SHVec3 impulse = constraint.normal * contact.normalImpulse; + for (int j = 0; j < SHContact::NUM_TANGENTS; ++j) + impulse += constraint.tangents[j] * contact.tangentImpulse[j]; + + // Apply impulses onto velocities + vA -= impulse * constraint.invMassA * LINEAR_LOCK_A; + wA -= constraint.invInertiaA * SHVec3::Cross(contact.rA, impulse) * ANGULAR_LOCK_A; + + vB += impulse * constraint.invMassB * LINEAR_LOCK_B; + wB += constraint.invInertiaB * SHVec3::Cross(contact.rB, impulse) * ANGULAR_LOCK_B; + + const SHVec3 RV_A = vA + SHVec3::Cross(wA, contact.rA); + const SHVec3 RV_B = vB + SHVec3::Cross(wB, contact.rB); + const float RV_N = SHVec3::Dot(RV_B - RV_A, constraint.normal); + + const float RESTITUTION_BIAS = std::fabs(RV_N) > SHPHYSICS_RESTITUTION_THRESHOLD ? -constraint.restitution * RV_N : 0.0f; + + contact.bias = ERROR_BIAS + RESTITUTION_BIAS; + } + + velocityStateA.LinearVelocity = vA; + velocityStateA.AngularVelocity = wA; + velocityStateB.LinearVelocity = vB; + velocityStateB.AngularVelocity = wB; + } + } + + void SHContactSolver::solve() noexcept + { + for (auto& [key, constraint] : contactConstraints) + { + SHVelocityState& velocityStateA = velocityStates.find(key.GetEntityA())->second; + SHVelocityState& velocityStateB = velocityStates.find(key.GetEntityB())->second; + + SHVec3 vA = velocityStateA.LinearVelocity; + SHVec3 wA = velocityStateA.AngularVelocity; + SHVec3 vB = velocityStateB.LinearVelocity; + SHVec3 wB = velocityStateB.AngularVelocity; + + const SHVec3& LINEAR_LOCK_A = velocityStateA.LinearLockFactor; + const SHVec3& ANGULAR_LOCK_A = velocityStateA.AngularLockFactor; + const SHVec3& LINEAR_LOCK_B = velocityStateB.LinearLockFactor; + const SHVec3& ANGULAR_LOCK_B = velocityStateB.AngularLockFactor; + + for (uint32_t i = 0; i < constraint.numContacts; ++i) + { + SHContact& contact = constraint.contacts[i]; + + // Compute relative velocity + SHVec3 velocityA = vA + SHVec3::Cross(wA, contact.rA); + SHVec3 velocityB = vB + SHVec3::Cross(wB, contact.rB); + SHVec3 relativeVelocity = velocityB - velocityA; + + // Get scalar of relative velocity along the normal + const float VN = SHVec3::Dot(relativeVelocity, constraint.normal); + + // Compute true normal impulse + const float OLD_NORMAL_IMPULSE = contact.normalImpulse; + + float newNormalImpulse = -(VN + contact.bias) * contact.normalMass; + contact.normalImpulse = std::max(OLD_NORMAL_IMPULSE + newNormalImpulse, 0.0f); + newNormalImpulse = contact.normalImpulse - OLD_NORMAL_IMPULSE; + + const SHVec3 NORMAL_IMPULSE = newNormalImpulse * constraint.normal; + + // Apply impulses + vA -= NORMAL_IMPULSE * constraint.invMassA * LINEAR_LOCK_A; + wA -= constraint.invInertiaA * SHVec3::Cross(contact.rA, NORMAL_IMPULSE) * ANGULAR_LOCK_A; + + vB += NORMAL_IMPULSE * constraint.invMassB * LINEAR_LOCK_B; + wB += constraint.invInertiaB * SHVec3::Cross(contact.rB, NORMAL_IMPULSE) * ANGULAR_LOCK_B; + + // Solve normal impulse + // Re-compute relative velocity + velocityA = vA + SHVec3::Cross(wA, contact.rA); + velocityB = vB + SHVec3::Cross(wB, contact.rB); + relativeVelocity = velocityB - velocityA; + + // Solve tangent impulse + for (int j = 0; j < SHContact::NUM_TANGENTS; ++j) + { + // Get scalar of relative velocity along tangent + const float VT = SHVec3::Dot(relativeVelocity, constraint.tangents[j]); + + // Compute true tangent impulse + const float MAX_TANGENT_IMPULSE = constraint.friction * contact.normalImpulse; + const float OLD_TANGENT_IMPULSE = contact.tangentImpulse[j]; + + // We cannot exceed the maximum frictional force (coulumb's law) + // Compute true tangent impulse + float newTangentImpulse = -VT * contact.tangentMass[j]; + contact.tangentImpulse[j] = std::clamp(OLD_TANGENT_IMPULSE + newTangentImpulse, -MAX_TANGENT_IMPULSE, MAX_TANGENT_IMPULSE); + newTangentImpulse = contact.tangentImpulse[j] - OLD_TANGENT_IMPULSE; + + const SHVec3 TANGENT_IMPULSE = newTangentImpulse * constraint.tangents[j]; + + // Apply impulses + vA -= TANGENT_IMPULSE * constraint.invMassA * LINEAR_LOCK_A; + wA -= constraint.invInertiaA * SHVec3::Cross(contact.rA, TANGENT_IMPULSE) * ANGULAR_LOCK_A; + + vB += TANGENT_IMPULSE * constraint.invMassB * LINEAR_LOCK_B; + wB += constraint.invInertiaB * SHVec3::Cross(contact.rB, TANGENT_IMPULSE) * ANGULAR_LOCK_B; + } + } + + velocityStateA.LinearVelocity = vA; + velocityStateA.AngularVelocity = wA; + velocityStateB.LinearVelocity = vB; + velocityStateB.AngularVelocity = wB; + } + } + + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Math/Geometry/SHShape.h b/SHADE_Engine/src/Physics/Dynamics/SHContactSolver.h similarity index 57% rename from SHADE_Engine/src/Math/Geometry/SHShape.h rename to SHADE_Engine/src/Physics/Dynamics/SHContactSolver.h index 812cb169..3146a743 100644 --- a/SHADE_Engine/src/Math/Geometry/SHShape.h +++ b/SHADE_Engine/src/Physics/Dynamics/SHContactSolver.h @@ -1,7 +1,8 @@ /**************************************************************************************** - * \file SHShape.h + * \file SHContactSolver.h * \author Diren D Bharwani, diren.dbharwani, 390002520 - * \brief Interface for a shape. + * \brief Interface for a Contact Solver that builds contacct constraints and solves + * them. * * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or * disclosure of this file or its contents without the prior written consent @@ -11,9 +12,8 @@ #pragma once // Project Headers -#include "SH_API.h" -#include "Math/SHRay.h" - +#include "Constraints/SHContactConstraint.h" +#include "Constraints/SHVelocityState.h" namespace SHADE { @@ -21,62 +21,73 @@ namespace SHADE /* Type Definitions */ /*-----------------------------------------------------------------------------------*/ - class SH_API SHShape + /** + * @brief + * Encapsulates an object that builds contact constraints and solves them. + */ + class SH_API SHContactSolver { public: /*---------------------------------------------------------------------------------*/ /* Type Definitions */ /*---------------------------------------------------------------------------------*/ - enum class Type - { - BOX - , SPHERE - , CAPSULE - , CONVEX_HULL - - , COUNT - , NONE = -1 - }; - - /*---------------------------------------------------------------------------------*/ - /* Data Members */ - /*---------------------------------------------------------------------------------*/ - - bool isIntersecting; + using VelocityStates = std::unordered_map; + using ContactConstraints = std::unordered_map; /*---------------------------------------------------------------------------------*/ /* Constructors & Destructor */ /*---------------------------------------------------------------------------------*/ - virtual ~SHShape () = default; - - SHShape (const SHShape&) = default; - SHShape (SHShape&&) = default; - - SHShape& operator=(const SHShape&) = default; - SHShape& operator=(SHShape&&) = default; - - SHShape(); + SHContactSolver () noexcept = default; + ~SHContactSolver () noexcept = default; /*---------------------------------------------------------------------------------*/ /* Getter Functions */ /*---------------------------------------------------------------------------------*/ - [[nodiscard]] Type GetType () const noexcept; + [[nodiscard]] const VelocityStates& GetVelocities () const noexcept; + [[nodiscard]] const ContactConstraints& GetContantConstraints () const noexcept; /*---------------------------------------------------------------------------------*/ - /* Function Members */ + /* Member Functions */ /*---------------------------------------------------------------------------------*/ - [[nodiscard]] virtual bool TestPoint (const SHVec3& point) const noexcept = 0; - [[nodiscard]] virtual SHRaycastResult Raycast (const SHRay& ray) const noexcept = 0; + /** + * @brief + * Build a contact constraint from a new manifold. + * @param manifold + * A manifold to build a contact constraint from. + */ + void AddContact (const SHCollisionKey& key, const SHManifold& manifold) noexcept; - protected: + void Reset () noexcept; + + /** + * @brief + * Solves all the contact constraints. + * @param numIterations + * The number of times to iterate over constraints when solving them. + * @param dt + * The delta time of the simulation step. + */ + void SolveContacts (int numIterations, float dt) noexcept; + + private: /*---------------------------------------------------------------------------------*/ /* Data Members */ /*---------------------------------------------------------------------------------*/ - Type type; + VelocityStates velocityStates; + ContactConstraints contactConstraints; + + /*---------------------------------------------------------------------------------*/ + /* Member Functions */ + /*---------------------------------------------------------------------------------*/ + + void preSolve (float dt) noexcept; + void solve () noexcept; + }; -} // namespace SHADE \ No newline at end of file + +} // namespace SHADE diff --git a/SHADE_Engine/src/Physics/Dynamics/SHMotionState.cpp b/SHADE_Engine/src/Physics/Dynamics/SHMotionState.cpp new file mode 100644 index 00000000..89c8ad32 --- /dev/null +++ b/SHADE_Engine/src/Physics/Dynamics/SHMotionState.cpp @@ -0,0 +1,128 @@ +/**************************************************************************************** + * \file SHMotionState.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for a Motion State. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "SHMotionState.h" + +// Project Headers +#include "Math/SHMathHelpers.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHMotionState::SHMotionState() noexcept + : hasMoved { false } + {} + + SHMotionState::SHMotionState(const SHMotionState& rhs) noexcept + : hasMoved { rhs.hasMoved } + , position { rhs.position } + , prevPosition { rhs.prevPosition } + {} + + SHMotionState::SHMotionState(SHMotionState&& rhs) noexcept + : hasMoved { rhs.hasMoved } + , position { rhs.position } + , prevPosition { rhs.prevPosition } + {} + + /*-----------------------------------------------------------------------------------*/ + /* Operator Overload Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHMotionState& SHMotionState::operator=(const SHMotionState& rhs) noexcept + { + if (this == &rhs) + return *this; + + hasMoved = rhs.hasMoved; + position = rhs.position; + prevPosition = rhs.prevPosition; + + return *this; + } + + SHMotionState& SHMotionState::operator=(SHMotionState&& rhs) noexcept + { + hasMoved = rhs.hasMoved; + position = rhs.position; + prevPosition = rhs.prevPosition; + + return *this; + } + + SHMotionState::operator bool() const noexcept + { + return hasMoved; + } + + /*-----------------------------------------------------------------------------------*/ + /* Public Member Function Definition */ + /*-----------------------------------------------------------------------------------*/ + + void SHMotionState::ForcePosition(const SHVec3& newPosition) noexcept + { + hasMoved = true; + + prevPosition = newPosition; + position = newPosition; + } + + void SHMotionState::ForceOrientation(const SHQuaternion& newOrientation) noexcept + { + hasMoved = true; + + prevOrientation = newOrientation; + orientation = newOrientation; + } + + + void SHMotionState::IntegratePosition(const SHVec3& velocity, float dt) noexcept + { + // Velocities are 0 when objects are static or sleeping. We do not want to integrate them here. + // This call should never reach here. + + hasMoved = true; + + prevPosition = position; + position += velocity * dt; + } + + void SHMotionState::IntegrateOrientation(const SHVec3& velocity, float dt) noexcept + { + // Velocities are 0 when objects are static or sleeping. We do not want to integrate them here. + // This call should never reach here. + + hasMoved = true; + + prevOrientation = orientation; + + orientation += orientation * SHQuaternion{ velocity.x, velocity.y, velocity.z, 0.0f } * dt * 0.5f; + orientation = SHQuaternion::Normalise(orientation); + } + + + SHVec3 SHMotionState::InterpolatePositions(float factor) const noexcept + { + return SHVec3::ClampedLerp(prevPosition, position, factor); + } + + SHQuaternion SHMotionState::InterpolateOrientations(float factor) const noexcept + { + return SHQuaternion::ClampedSlerp(prevOrientation, orientation, factor); + } + + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Dynamics/SHMotionState.h b/SHADE_Engine/src/Physics/Dynamics/SHMotionState.h new file mode 100644 index 00000000..778e6a8b --- /dev/null +++ b/SHADE_Engine/src/Physics/Dynamics/SHMotionState.h @@ -0,0 +1,127 @@ +/**************************************************************************************** + * \file SHMotionState.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for a Motion State. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +// Project Headers +#include "Math/SHQuaternion.h" +#include "Math/Vector/SHVec3.h" + + +namespace SHADE +{ + /*-------------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-------------------------------------------------------------------------------------*/ + + /** + * @brief + * Encapsulates the motion state of a rigid body in physics. + */ + struct SH_API SHMotionState + { + public: + /*-----------------------------------------------------------------------------------*/ + /* Data Members */ + /*-----------------------------------------------------------------------------------*/ + + bool hasMoved; + + SHVec3 position; + SHVec3 prevPosition; + + SHQuaternion orientation; + SHQuaternion prevOrientation; + + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*-----------------------------------------------------------------------------------*/ + + SHMotionState () noexcept; + SHMotionState (const SHMotionState& rhs) noexcept; + SHMotionState (SHMotionState&& rhs) noexcept; + + ~SHMotionState() = default; + + /*-----------------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*-----------------------------------------------------------------------------------*/ + + SHMotionState& operator= (const SHMotionState& rhs) noexcept; + SHMotionState& operator= (SHMotionState&& rhs) noexcept; + + operator bool () const noexcept; + + /*-----------------------------------------------------------------------------------*/ + /* Function Members */ + /*-----------------------------------------------------------------------------------*/ + + /** + * @brief + * Forcefully sets the position. Meant to be used when transform overrides the rigid body + * positions. + * @param newPosition + * The new position to set. + */ + void ForcePosition (const SHVec3& newPosition) noexcept; + + /** + * @brief + * Forcefully sets the orientation. Meant to be used when transform overrides the rigid body + * orientations + * @param newOrientation + * The new orientation to set. + */ + void ForceOrientation (const SHQuaternion& newOrientation) noexcept; + + /** + * @brief + * Integrates the positions using linear velocity with respect to time. + * @param velocity + * The linear velocity to integrate. + * @param dt + * The delta time to integrate with respect to. + */ + void IntegratePosition (const SHVec3& velocity, float dt) noexcept; + + /** + * @brief + * Integrates the orientation using angular velocity with respect to time. + * @param velocity + * The angular velocity to integrate. + * @param dt + * The delta time to integrate with respect to. + */ + void IntegrateOrientation (const SHVec3& velocity, float dt) noexcept; + + /** + * @brief + * Interpolates the position between the previous and the last using a given factor. + * @param factor + * The factor to interpolate by. Should be between 0 & 1. + * @returns + * The interpolated position meant for rendering. + */ + SHVec3 InterpolatePositions (float factor) const noexcept; + + /** + * @brief + * Interpolates the orientation between the previous and the last using a given factor. + * @param factor + * The factor to interpolate by. Should be between 0 & 1. + * @returns + * The interpolated orientation meant for rendering. + */ + SHQuaternion InterpolateOrientations (float factor) const noexcept; + + }; + + +} // namespace SHADE diff --git a/SHADE_Engine/src/Physics/Dynamics/SHPhysicsWorld.cpp b/SHADE_Engine/src/Physics/Dynamics/SHPhysicsWorld.cpp new file mode 100644 index 00000000..ed00e80e --- /dev/null +++ b/SHADE_Engine/src/Physics/Dynamics/SHPhysicsWorld.cpp @@ -0,0 +1,190 @@ +/**************************************************************************************** + * \file SHPhysicsWorld.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for a Physics World. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "SHPhysicsWorld.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHPhysicsWorld::SHPhysicsWorld(const WorldSettings& worldSettings) noexcept + : settings { worldSettings } + , collisionSpace { nullptr } + { + SHLOG_INFO_D("Creating Physics World") + } + + SHPhysicsWorld::~SHPhysicsWorld() noexcept + { + collisionSpace = nullptr; + } + + /*-----------------------------------------------------------------------------------*/ + /* Getter Functions Definitions */ + /*-----------------------------------------------------------------------------------*/ + + const SHContactManager::ContactPoints& SHPhysicsWorld::GetContactPoints() const noexcept + { + return contactManager.GetContactPoints(); + } + + const SHContactManager::TriggerEvents& SHPhysicsWorld::GetTriggerEvents() const noexcept + { + return contactManager.GetTriggerEvents(); + } + + const SHContactManager::CollisionEvents& SHPhysicsWorld::GetCollisionEvents() const noexcept + { + return contactManager.GetCollisionEvents(); + } + + /*-----------------------------------------------------------------------------------*/ + /* Setter Functions Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHPhysicsWorld::SetCollisionSpace(SHCollisionSpace* _collisionSpace) noexcept + { + collisionSpace = _collisionSpace; + _collisionSpace->SetContactManager(&contactManager); + } + + /*-----------------------------------------------------------------------------------*/ + /* Public Member Functions Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHPhysicsWorld::AddRigidBody(SHRigidBody* rigidBody) noexcept + { + const bool INSERTED = rigidBodies.emplace(rigidBody->entityID, rigidBody).second; + if (!INSERTED) + { + SHLOG_WARNING_D("Attempting to add duplicate rigid body {} to the Physics World!", rigidBody->entityID) + } + } + + void SHPhysicsWorld::RemoveRigidBody(SHRigidBody* rigidBody) noexcept + { + rigidBodies.erase(rigidBody->entityID); + + // Contact manager to remove invalidated contacts + contactManager.RemoveInvalidatedManifold(rigidBody->entityID); + + // TODO: Run through the rigid body's contact graph and wake all of its non-static bodies that are asleep + } + + + void SHPhysicsWorld::Step(float dt) + { + /* + * Detect Collisions + */ + + if (collisionSpace) + collisionSpace->DetectCollisions(); + + /* + * Integrate Forces + */ + + for (auto* rigidBody : rigidBodies | std::views::values) + { + if (!rigidBody->IsActive()) + continue; + + rigidBody->ComputeWorldData(); + integrateForces(*rigidBody, dt); + } + + + /* + * Resolve Contacts + */ + + contactManager.SolveCollisions(settings.numVelocitySolverIterations, dt); + + /* + * Integrate Velocities + */ + + for (auto* rigidBody : rigidBodies | std::views::values) + { + if (!rigidBody->IsActive()) + continue; + + integrateVelocities(*rigidBody, dt); + } + } + + /*-----------------------------------------------------------------------------------*/ + /* Private Member Functions Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHPhysicsWorld::integrateForces(SHRigidBody& rigidBody, float dt) const noexcept + { + if (rigidBody.bodyType != SHRigidBody::Type::DYNAMIC) + return; + + // Integrate forces and gravity into linear velocity + const SHVec3 LINEAR_ACCELERATION = rigidBody.accumulatedForce * rigidBody.invMass; + const SHVec3 GRAVITATIONAL_ACCELERATION = rigidBody.IsGravityEnabled() ? settings.gravity * rigidBody.gravityScale : SHVec3::Zero; + + rigidBody.linearVelocity += (LINEAR_ACCELERATION + GRAVITATIONAL_ACCELERATION) * dt; + + // Integrate torque into angular velocity + rigidBody.angularVelocity += rigidBody.worldInvInertia * rigidBody.accumulatedTorque * dt; + + // Apply drag (exponentially applied) + rigidBody.linearVelocity *= 1.0f / (1.0f + dt * rigidBody.linearDrag); + rigidBody.angularVelocity *= 1.0f / (1.0f + dt * rigidBody.angularDrag); + + rigidBody.constrainLinearVelocities(); + rigidBody.constrainAngularVelocities(); + } + + void SHPhysicsWorld::integrateVelocities(SHRigidBody& rigidBody, float dt) const noexcept + { + // Always reset movement flag + rigidBody.motionState.hasMoved = false; + + // Set all velocities of static bodies to 0 + if (rigidBody.bodyType == SHRigidBody::Type::STATIC) + { + rigidBody.linearVelocity = SHVec3::Zero; + } + // Dynamic & Kinematic bodies + // Both dynamic and kinematic can sleep when their velocities are under the thresholds. + else if (!rigidBody.IsSleeping()) + { + rigidBody.constrainLinearVelocities(); + rigidBody.constrainAngularVelocities(); + + rigidBody.motionState.IntegratePosition(rigidBody.linearVelocity, dt); + rigidBody.motionState.IntegrateOrientation(rigidBody.angularVelocity, dt); + + // Sync with collider transforms if a collider is present + if (rigidBody.collider) + { + rigidBody.collider->SetPosition(rigidBody.motionState.position); + rigidBody.collider->SetOrientation(rigidBody.motionState.orientation); + + rigidBody.collider->Update(); + } + } + + // Clear all forces + // We clear forces for static bodies as well for redundancy + rigidBody.ClearForces(); + } + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Dynamics/SHPhysicsWorld.h b/SHADE_Engine/src/Physics/Dynamics/SHPhysicsWorld.h new file mode 100644 index 00000000..9ad525e8 --- /dev/null +++ b/SHADE_Engine/src/Physics/Dynamics/SHPhysicsWorld.h @@ -0,0 +1,145 @@ +/**************************************************************************************** + * \file SHPhysicsWorld.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for a Physics World. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +#include + +// Project Headers +#include "Physics/Collision/SHCollisionSpace.h" +#include "SHContactManager.h" +#include "SHContactSolver.h" +#include "SHRigidBody.h" + + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + + /** + * @brief + * Encapsulates the overall simulation of physics. The bulk of dynamics are handled here, + * with the collision detection handled by an attached collision space.
+ * A collision space must be created separately and attached with the world. + */ + class SH_API SHPhysicsWorld + { + public: + /*---------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*---------------------------------------------------------------------------------*/ + + struct WorldSettings + { + public: + /*-------------------------------------------------------------------------------*/ + /* Data Members */ + /*-------------------------------------------------------------------------------*/ + + SHVec3 gravity = SHVec3{ 0.0f, -9.81f, 0.0f }; + uint16_t numVelocitySolverIterations = 10; + uint16_t numPositionSolverIterations = 5; // Unused until PGS is implemented + bool sleepingEnabled = true; + }; + + /*---------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*---------------------------------------------------------------------------------*/ + + SHPhysicsWorld (const WorldSettings& worldSettings = WorldSettings{}) noexcept; + ~SHPhysicsWorld () noexcept; + + SHPhysicsWorld (const SHPhysicsWorld&) = delete; + SHPhysicsWorld (SHPhysicsWorld&&) = delete; + + /*---------------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*---------------------------------------------------------------------------------*/ + + SHPhysicsWorld& operator=(const SHPhysicsWorld&) = delete; + SHPhysicsWorld& operator=(SHPhysicsWorld&&) = delete; + + /*---------------------------------------------------------------------------------*/ + /* Getter Functions */ + /*---------------------------------------------------------------------------------*/ + + const SHContactManager::ContactPoints& GetContactPoints () const noexcept; + const SHContactManager::TriggerEvents& GetTriggerEvents () const noexcept; + const SHContactManager::CollisionEvents& GetCollisionEvents () const noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Setter Functions */ + /*---------------------------------------------------------------------------------*/ + + void SetCollisionSpace(SHCollisionSpace* collisionSpace) noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Member Functions */ + /*---------------------------------------------------------------------------------*/ + + /** + * @brief + * Adds a rigid body to the world for it to be simulated using motion dynamics. + * @param rigidBody + * A rigid body to add. Duplicates will be ignored. + */ + void AddRigidBody (SHRigidBody* rigidBody) noexcept; + + /** + * @brief + * Removes a rigid body from the world. It's motion will not be affected unless + * explicitly modified. + * @param rigidBody + * A rigid body to add. Duplicates will be ignored. + */ + void RemoveRigidBody (SHRigidBody* rigidBody) noexcept; + + /** + * @brief + * Performs a single simulation step.
+ * Detect Collisions -> Integrate Forces -> Resolve Contacts -> Integrate Velocities + * @param dt + * A discrete time step for the simulation. This should be consistent for deterministic + * behaviour. + */ + void Step (float dt); + + private: + /*---------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*---------------------------------------------------------------------------------*/ + + // EntityIDs are used to map resolved constraints back to bodies + using RigidBodies = std::unordered_map; + + /*---------------------------------------------------------------------------------*/ + /* Data Members */ + /*---------------------------------------------------------------------------------*/ + + WorldSettings settings; + SHCollisionSpace* collisionSpace; + + RigidBodies rigidBodies; + SHContactManager contactManager; + SHContactSolver contactSolver; + + /*---------------------------------------------------------------------------------*/ + /* Function Members */ + /*---------------------------------------------------------------------------------*/ + + // TODO: Move to island when islands are set up + void integrateForces (SHRigidBody& rigidBody, float dt) const noexcept; + void integrateVelocities (SHRigidBody& rigidBody, float dt) const noexcept; + }; + + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Dynamics/SHRigidBody.cpp b/SHADE_Engine/src/Physics/Dynamics/SHRigidBody.cpp new file mode 100644 index 00000000..bdaaf230 --- /dev/null +++ b/SHADE_Engine/src/Physics/Dynamics/SHRigidBody.cpp @@ -0,0 +1,765 @@ +/**************************************************************************************** + * \file SHRigidBody.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for a Rigid Body. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "SHRigidBody.h" + +// Project Headers +#include +#include + +#include "Physics/Collision/SHCollider.h" +#include "Tools/Logger/SHLogger.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHRigidBody::SHRigidBody(EntityID eid, Type type) noexcept + : entityID { eid } + , collider { nullptr } + , bodyType { type } + , gravityScale { 1.0f } + , invMass { type == Type::DYNAMIC ? 1.0f : 0.0f } + , linearDrag { 0.01f } + , angularDrag { 0.01f } + , flags { 0U } + { + // Set default flags + flags |= 1U << 0; // Body is active + flags |= 1U << 2; // Sleeping is enabled + flags |= 1U << 3; // Gravity is enabled + + // TODO: Compute inertia if body is dynamic + } + + SHRigidBody::SHRigidBody(const SHRigidBody& rhs) noexcept + : entityID { rhs.entityID } + , collider { nullptr } + , bodyType { rhs.bodyType } + , gravityScale { rhs.gravityScale } + , invMass { rhs.invMass } + , linearDrag { rhs.linearDrag } + , angularDrag { rhs.angularDrag } + , localInvInertia { rhs.localInvInertia } + , worldInvInertia { rhs.worldInvInertia } + , localCentroid { rhs.localCentroid } + , worldCentroid { rhs.worldCentroid } + , flags { rhs.flags } + , motionState { rhs.motionState } + { + // All other properties are defaulted to 0 to not carry over any potential errors / invalid values. + } + + SHRigidBody::SHRigidBody(SHRigidBody&& rhs) noexcept + : entityID { rhs.entityID } + , collider { nullptr } + , bodyType { rhs.bodyType } + , gravityScale { rhs.gravityScale } + , invMass { rhs.invMass } + , linearDrag { rhs.linearDrag } + , angularDrag { rhs.angularDrag } + , localInvInertia { rhs.localInvInertia } + , worldInvInertia { rhs.worldInvInertia } + , localCentroid { rhs.localCentroid } + , worldCentroid { rhs.worldCentroid } + , flags { rhs.flags } + , motionState { std::move(rhs.motionState) } + { + // All other properties are defaulted to 0 to not carry over any potential errors / invalid values. + } + + /*-----------------------------------------------------------------------------------*/ + /* Operator Overload Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHRigidBody& SHRigidBody::operator=(const SHRigidBody& rhs) noexcept + { + // Handle self assignment + if (this == &rhs) + return *this; + + entityID = rhs.entityID; + + // Deep copy the collider + *collider = *rhs.collider; + bodyType = rhs.bodyType; + gravityScale = rhs.gravityScale; + invMass = rhs.invMass; + linearDrag = rhs.linearDrag; + angularDrag = rhs.angularDrag; + localInvInertia = rhs.localInvInertia; + worldInvInertia = rhs.worldInvInertia; + localCentroid = rhs.localCentroid; + worldCentroid = rhs.worldCentroid; + flags = rhs.flags; + motionState = rhs.motionState; + + // All other properties are defaulted to 0 to not carry over any potential errors / invalid values. + accumulatedForce = SHVec3::Zero; + accumulatedTorque = SHVec3::Zero; + linearVelocity = SHVec3::Zero; + angularVelocity = SHVec3::Zero; + + return *this; + } + + SHRigidBody& SHRigidBody::operator=(SHRigidBody&& rhs) noexcept + { + entityID = rhs.entityID; + + // Deep copy the collider + *collider = *rhs.collider; + bodyType = rhs.bodyType; + gravityScale = rhs.gravityScale; + invMass = rhs.invMass; + linearDrag = rhs.linearDrag; + angularDrag = rhs.angularDrag; + localInvInertia = rhs.localInvInertia; + worldInvInertia = rhs.worldInvInertia; + localCentroid = rhs.localCentroid; + worldCentroid = rhs.worldCentroid; + flags = rhs.flags; + motionState = std::move(rhs.motionState); + + // All other properties are defaulted to 0 to not carry over any potential errors / invalid values. + accumulatedForce = SHVec3::Zero; + accumulatedTorque = SHVec3::Zero; + linearVelocity = SHVec3::Zero; + angularVelocity = SHVec3::Zero; + + return *this; + } + + /*-----------------------------------------------------------------------------------*/ + /* Getter Functions Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHRigidBody::Type SHRigidBody::GetType() const noexcept + { + return bodyType; + } + + float SHRigidBody::GetGravityScale() const noexcept + { + return gravityScale; + } + + float SHRigidBody::GetMass() const noexcept + { + return 1.0f/ invMass; + } + + float SHRigidBody::GetLinearDrag() const noexcept + { + return linearDrag; + } + + float SHRigidBody::GetAngularDrag() const noexcept + { + return angularDrag; + } + + const SHMatrix& SHRigidBody::GetLocalInvInertia() const noexcept + { + return localInvInertia; + } + + const SHMatrix& SHRigidBody::GetWorldInvInertia() const noexcept + { + return worldInvInertia; + } + + const SHVec3& SHRigidBody::GetLocalCentroid() const noexcept + { + return localCentroid; + } + + const SHVec3& SHRigidBody::GetWorldCentroid() const noexcept + { + return worldCentroid; + } + + const SHVec3& SHRigidBody::GetForce() const noexcept + { + return accumulatedForce; + } + + const SHVec3& SHRigidBody::GetTorque() const noexcept + { + return accumulatedTorque; + } + + const SHVec3& SHRigidBody::GetLinearVelocity() const noexcept + { + // Check if linear velocity needs to be constrained + + return linearVelocity; + } + + const SHVec3& SHRigidBody::GetAngularVelocity() const noexcept + { + return angularVelocity; + } + + // Flags + + bool SHRigidBody::IsActive() const noexcept + { + static constexpr unsigned int FLAG_POS = 0; + return flags & (1U << FLAG_POS); + } + + bool SHRigidBody::IsSleeping() const noexcept + { + static constexpr unsigned int FLAG_POS = 1; + return flags & (1U << FLAG_POS); + } + + bool SHRigidBody::IsSleepingEnabled() const noexcept + { + static constexpr unsigned int FLAG_POS = 2; + return flags & (1U << FLAG_POS); + } + + bool SHRigidBody::IsGravityEnabled() const noexcept + { + static constexpr unsigned int FLAG_POS = 3; + return flags & (1U << FLAG_POS); + } + + bool SHRigidBody::IsAutoMassEnabled() const noexcept + { + static constexpr unsigned int FLAG_POS = 4; + return flags & (1U << FLAG_POS); + } + + bool SHRigidBody::IsTriggerInMassData() const noexcept + { + static constexpr unsigned int FLAG_POS = 6; + return flags & (1U << FLAG_POS); + } + + bool SHRigidBody::GetFreezePositionX() const noexcept + { + static constexpr unsigned int FLAG_POS = 10; + return flags & (1U << FLAG_POS); + } + + bool SHRigidBody::GetFreezePositionY() const noexcept + { + static constexpr unsigned int FLAG_POS = 11; + return flags & (1U << FLAG_POS); + } + + bool SHRigidBody::GetFreezePositionZ() const noexcept + { + static constexpr unsigned int FLAG_POS = 12; + return flags & (1U << FLAG_POS); + } + + bool SHRigidBody::GetFreezeRotationX() const noexcept + { + static constexpr unsigned int FLAG_POS = 13; + return flags & (1U << FLAG_POS); + } + + bool SHRigidBody::GetFreezeRotationY() const noexcept + { + static constexpr unsigned int FLAG_POS = 14; + return flags & (1U << FLAG_POS); + } + + bool SHRigidBody::GetFreezeRotationZ() const noexcept + { + static constexpr unsigned int FLAG_POS = 15; + return flags & (1U << FLAG_POS); + } + + SHMotionState& SHRigidBody::GetMotionState() noexcept + { + return motionState; + } + + /*-----------------------------------------------------------------------------------*/ + /* Setter Functions Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHRigidBody::SetCollider(SHCollider* c) noexcept + { + collider = c; + } + + void SHRigidBody::SetType(Type newType) noexcept + { + if (newType == bodyType) + return; + + bodyType = newType; + + if (bodyType != Type::DYNAMIC) + { + invMass = 0.0f; + localInvInertia.m[0][0] = localInvInertia.m[1][1] = localInvInertia.m[2][2] = 0.0f; + worldInvInertia.m[0][0] = worldInvInertia.m[1][1] = worldInvInertia.m[2][2] = 0.0f; + } + else + { + invMass = 1.0f; + localInvInertia = SHMatrix::Identity; + } + } + + void SHRigidBody::SetGravityScale(float newGravityScale) noexcept + { + gravityScale = newGravityScale; + } + + void SHRigidBody::SetMass(float newMass) noexcept + { + if (bodyType != Type::DYNAMIC) + { + invMass = 0.0f; + SHLOG_WARNING("Cannot set mass of a non-Dynamic Body {}", entityID) + return; + } + + if (newMass < 0.0f) + { + SHLOG_WARNING("Cannot set mass below 0. Object {}'s mass will remain unchanged.", entityID) + return; + } + + invMass = 1.0f / newMass; + + // Turn off automass + static constexpr unsigned int AUTO_MASS_FLAG = 4; + static constexpr uint16_t VALUE = 1U << AUTO_MASS_FLAG; + + flags &= ~(VALUE); + ComputeMassData(); + } + + void SHRigidBody::SetLinearDrag(float newLinearDrag) noexcept + { + if (bodyType == Type::STATIC) + { + SHLOG_WARNING("Cannot set linear drag of a Static Body {}", entityID) + return; + } + + if (newLinearDrag < 0.0f) + { + SHLOG_WARNING("Cannot set drag below 0. Object {}'s linear drag will remain unchanged.", entityID) + return; + } + + linearDrag = newLinearDrag; + } + + void SHRigidBody::SetAngularDrag(float newAngularDrag) noexcept + { + if (bodyType == Type::STATIC) + { + SHLOG_WARNING("Cannot set angular drag of a Static Body {}", entityID) + return; + } + + if (newAngularDrag < 0.0f) + { + SHLOG_WARNING("Cannot set drag below 0. Object {}'s angular drag will remain unchanged.", entityID) + return; + } + + angularDrag = newAngularDrag; + } + + void SHRigidBody::SetLinearVelocity(const SHVec3& newLinearVelocity) noexcept + { + if (bodyType == Type::STATIC) + { + SHLOG_WARNING("Cannot set linear velocity of a Static Body {}", entityID) + return; + } + + linearVelocity = newLinearVelocity; + constrainLinearVelocities(); + } + + void SHRigidBody::SetAngularVelocity(const SHVec3& newAngularVelocity) noexcept + { + if (bodyType == Type::STATIC) + { + SHLOG_WARNING("Cannot set angular velocity of a Static Body {}", entityID) + return; + } + + angularVelocity = newAngularVelocity; + constrainAngularVelocities(); + } + + void SHRigidBody::SetIsActive(bool isActive) noexcept + { + static constexpr unsigned int FLAG_POS = 0; + static constexpr uint16_t VALUE = 1U << FLAG_POS; + + isActive ? flags |= VALUE : flags &= ~VALUE; + } + + void SHRigidBody::SetIsSleeping(bool isSleeping) noexcept + { + static constexpr unsigned int FLAG_POS = 1; + static constexpr uint16_t VALUE = 1U << FLAG_POS; + + if (isSleeping) + { + flags |= VALUE; + + ClearForces(); + linearVelocity = SHVec3::Zero; + angularVelocity = SHVec3::Zero; + } + else + { + flags &= ~VALUE; + } + } + + void SHRigidBody::SetSleepingEnabled(bool enableSleeping) noexcept + { + static constexpr unsigned int FLAG_POS = 2; + static constexpr uint16_t VALUE = 1U << FLAG_POS; + + if (enableSleeping) + { + flags |= VALUE; + } + else + { + flags &= ~VALUE; + // Wake the body + SetIsSleeping(false); + } + } + + void SHRigidBody::SetGravityEnabled(bool enableGravity) noexcept + { + static constexpr unsigned int FLAG_POS = 3; + static constexpr uint16_t VALUE = 1U << FLAG_POS; + + enableGravity ? flags |= VALUE : flags &= ~VALUE; + } + + void SHRigidBody::SetAutoMassEnabled(bool enableAutoMass) noexcept + { + static constexpr unsigned int FLAG_POS = 4; + static constexpr uint16_t VALUE = 1U << FLAG_POS; + + if (enableAutoMass) + { + flags |= VALUE; + } + else + { + flags &= ~VALUE; + // Use default mass of 1 + invMass = 1.0f; + } + + ComputeMassData(); + } + + void SHRigidBody::SetTriggerInMassData(bool triggerInMassData) noexcept + { + static constexpr unsigned int FLAG_POS = 6; + static constexpr uint16_t VALUE = 1U << FLAG_POS; + + triggerInMassData ? flags |= VALUE : flags &= ~VALUE; + } + + void SHRigidBody::SetFreezePositionX(bool freezePositionX) noexcept + { + static constexpr unsigned int FLAG_POS = 10; + static constexpr uint16_t VALUE = 1U << FLAG_POS; + + if (freezePositionX) + { + flags |= VALUE; + // Reset linear velocity along X-axis + linearVelocity.x = 0.0f; + } + else + { + flags &= ~VALUE; + } + } + + void SHRigidBody::SetFreezePositionY(bool freezePositionY) noexcept + { + static constexpr unsigned int FLAG_POS = 11; + static constexpr uint16_t VALUE = 1U << FLAG_POS; + + if (freezePositionY) + { + flags |= VALUE; + // Reset linear velocity along Y-axis + linearVelocity.y = 0.0f; + } + else + { + flags &= ~VALUE; + } + } + + void SHRigidBody::SetFreezePositionZ(bool freezePositionZ) noexcept + { + static constexpr unsigned int FLAG_POS = 12; + static constexpr uint16_t VALUE = 1U << FLAG_POS; + + if (freezePositionZ) + { + flags |= VALUE; + // Reset linear velocity along Z-axis + linearVelocity.z = 0.0f; + } + else + { + flags &= ~VALUE; + } + } + + void SHRigidBody::SetFreezeRotationX(bool freezeRotationX) noexcept + { + static constexpr unsigned int FLAG_POS = 13; + static constexpr uint16_t VALUE = 1U << FLAG_POS; + + if (freezeRotationX) + { + flags |= VALUE; + // Reset angular velocity along X-axis + angularVelocity.x = 0.0f; + // Set inertia tensor on the x-axis to 0 + localInvInertia.m[0][0] = 0.0f; + } + else + { + flags &= ~VALUE; + ComputeMassData(); + } + } + + void SHRigidBody::SetFreezeRotationY(bool freezeRotationY) noexcept + { + static constexpr unsigned int FLAG_POS = 14; + static constexpr uint16_t VALUE = 1U << FLAG_POS; + + if (freezeRotationY) + { + flags |= VALUE; + // Reset angular velocity along Y-axis + angularVelocity.y = 0.0f; + // Set inertia tensor on the y-axis to 0 + localInvInertia.m[1][1] = 0.0f; + } + else + { + flags &= ~VALUE; + ComputeMassData(); + } + } + + void SHRigidBody::SetFreezeRotationZ(bool freezeRotationZ) noexcept + { + static constexpr unsigned int FLAG_POS = 15; + static constexpr uint16_t VALUE = 1U << FLAG_POS; + + if (freezeRotationZ) + { + flags |= VALUE; + // Reset angular velocity along Z-axis + angularVelocity.z = 0.0f; + // Set inertia tensor on the z-axis to 0 + localInvInertia.m[2][2] = 0.0f; + } + else + { + flags &= ~VALUE; + ComputeMassData(); + } + } + + /*-----------------------------------------------------------------------------------*/ + /* Public Member Function Definition */ + /*-----------------------------------------------------------------------------------*/ + + void SHRigidBody::AddForce(const SHVec3& force, const SHVec3& pos) noexcept + { + if (bodyType != Type::DYNAMIC) + return; + + accumulatedForce += force; + accumulatedTorque += SHVec3::Cross(pos, force); + } + + void SHRigidBody::AddImpulse(const SHVec3& impulse, const SHVec3& pos) noexcept + { + if (bodyType != Type::DYNAMIC) + return; + + linearVelocity += impulse * invMass; + angularVelocity += worldInvInertia * SHVec3::Cross(pos, impulse); + } + + void SHRigidBody::AddTorque(const SHVec3& torque) noexcept + { + if (bodyType != Type::DYNAMIC) + return; + + accumulatedTorque += torque; + } + + void SHRigidBody::ClearForces() noexcept + { + accumulatedForce = SHVec3::Zero; + accumulatedTorque = SHVec3::Zero; + } + + void SHRigidBody::ComputeWorldData() noexcept + { + const SHMatrix R = SHMatrix::Rotate(motionState.orientation); + const SHMatrix RT = SHMatrix::Transpose(R); + + // Compute world centroid + worldCentroid = (R * localCentroid) + motionState.position; + + if (bodyType != Type::DYNAMIC) + return; + + // Compute world inertia + worldInvInertia = R * (localInvInertia * RT); + } + + void SHRigidBody::ComputeMassData() noexcept + { + // Reset centroid + localCentroid = SHVec3::Zero; + localInvInertia = SHMatrix::Identity; + + // In the instance the body is a particle + if (!collider || collider->GetCollisionShapes().empty()) + { + localInvInertia.m[0][0] = localInvInertia.m[1][1] = localInvInertia.m[2][2] = invMass; + return; + } + + const float CUSTOM_MASS = 1.0f / invMass; + const bool AUTO_MASS = IsAutoMassEnabled(); + const bool INCLUDE_TRIGGERS = IsTriggerInMassData(); + + + // Compute Total mass and store individual masses if custom mass is being used. + // Compute local centroid at the same time + + // Zero matrix; + SHMatrix J = SHMatrix::Zero; + + float totalMass = 0.0f; + std::vector trueMass; // We store the true masses here for calculating the ratio with custom masses. + + const auto& SHAPES = collider->GetCollisionShapes(); + for (auto* shape : SHAPES) + { + // We skip triggers by default + if (shape->IsTrigger() && !INCLUDE_TRIGGERS) + continue; + + // p = m/v, therefore m = pv. This is the true mass of the shape. + const float MASS = shape->GetDensity() * shape->GetVolume(); + totalMass += MASS; + + trueMass.emplace_back(MASS); + + // Weighted sum of masses contribute to the centroid's location using the collider's local position. + localCentroid += MASS * shape->GetRelativeCentroid(); + } + + if (totalMass > 0.0f) + { + localCentroid /= totalMass; + + if (AUTO_MASS) + invMass = 1.0f / totalMass; + } + + const SHMatrix R = SHMatrix::Rotate(motionState.orientation); + const SHMatrix RT = SHMatrix::Transpose(R); + + // We need the world centroid to compute the offset of the collider from the body's centroid + worldCentroid = (R * localCentroid) + motionState.position; + + for (size_t i = 0; i < SHAPES.size(); ++i) + { + const auto* SHAPE = SHAPES[i]; + + // We skip triggers by default + if (SHAPE->IsTrigger() && !INCLUDE_TRIGGERS) + continue; + + // If using custom mass, take the ratio of the mass + float actualMass = trueMass[i]; + if (!AUTO_MASS) + actualMass *= CUSTOM_MASS / totalMass; + + // Convert inertia tensor into local-space of the body + // R * I * RT = R * (I * RT) + SHMatrix I = SHAPE->GetInertiaTensor( actualMass ) * RT; + I = R * I; + + // Parallel Axis Theorem + // https://en.wikipedia.org/wiki/Parallel_axis_theorem + // J = I + m((R /dot R)E_3 - R /outerProduct R) + const SHVec3 R = SHAPE->GetWorldCentroid() - worldCentroid; + const float R_MAG2 = R.LengthSquared(); + const SHMatrix R_OX_R = SHVec3::OuterProduct(R, R); + + J += I + actualMass * (SHMatrix::Identity * R_MAG2 - R_OX_R); + } + + // Set diagonals then invert + localInvInertia.m[0][0] = J.m[0][0]; + localInvInertia.m[1][1] = J.m[1][1]; + localInvInertia.m[2][2] = J.m[2][2]; + + localInvInertia = SHMatrix::Inverse(localInvInertia); + } + + /*-----------------------------------------------------------------------------------*/ + /* Private Member Function Definition */ + /*-----------------------------------------------------------------------------------*/ + + void SHRigidBody::constrainLinearVelocities() noexcept + { + linearVelocity.x = GetFreezePositionX() ? 0.0f : linearVelocity.x; + linearVelocity.y = GetFreezePositionY() ? 0.0f : linearVelocity.y; + linearVelocity.z = GetFreezePositionZ() ? 0.0f : linearVelocity.z; + } + + void SHRigidBody::constrainAngularVelocities() noexcept + { + angularVelocity.x = GetFreezeRotationX() ? 0.0f : angularVelocity.x; + angularVelocity.y = GetFreezeRotationY() ? 0.0f : angularVelocity.y; + angularVelocity.z = GetFreezeRotationZ() ? 0.0f : angularVelocity.z; + } + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Dynamics/SHRigidBody.h b/SHADE_Engine/src/Physics/Dynamics/SHRigidBody.h new file mode 100644 index 00000000..3c869ad2 --- /dev/null +++ b/SHADE_Engine/src/Physics/Dynamics/SHRigidBody.h @@ -0,0 +1,268 @@ +/**************************************************************************************** + * \file SHRigidBody.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for a Rigid Body. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +// Project Headers +#include "ECS_Base/Entity/SHEntity.h" +#include "Math/SHMatrix.h" +#include "Math/Vector/SHVec3.h" +#include "SHMotionState.h" + +namespace SHADE +{ + /*-------------------------------------------------------------------------------------*/ + /* Forward Declarations */ + /*-------------------------------------------------------------------------------------*/ + + class SHCollider; + + /*-------------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-------------------------------------------------------------------------------------*/ + + /** + * @brief + * Encapsulates a Rigid Body used in Physics Simulations + */ + class SH_API SHRigidBody + { + private: + /*-----------------------------------------------------------------------------------*/ + /* Friends */ + /*-----------------------------------------------------------------------------------*/ + + friend class SHPhysicsWorld; + friend class SHContactSolver; + + public: + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + + enum class Type + { + STATIC // Immovable body with infinite mass + , KINEMATIC // Only movable by setting velocity, unaffected by forces. Has infinite mass. + , DYNAMIC // Affected by forces. + }; + + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*-----------------------------------------------------------------------------------*/ + + SHRigidBody (EntityID eid, Type type) noexcept; + SHRigidBody (const SHRigidBody& rhs) noexcept; + SHRigidBody (SHRigidBody&& rhs) noexcept; + + /*-----------------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*-----------------------------------------------------------------------------------*/ + + SHRigidBody& operator= (const SHRigidBody& rhs) noexcept; + SHRigidBody& operator= (SHRigidBody&& rhs) noexcept; + + /*-----------------------------------------------------------------------------------*/ + /* Getter Functions */ + /*-----------------------------------------------------------------------------------*/ + + [[nodiscard]] Type GetType () const noexcept; + + [[nodiscard]] float GetGravityScale () const noexcept; + + [[nodiscard]] float GetMass () const noexcept; + [[nodiscard]] float GetLinearDrag () const noexcept; + [[nodiscard]] float GetAngularDrag () const noexcept; + + [[nodiscard]] const SHMatrix& GetLocalInvInertia () const noexcept; + [[nodiscard]] const SHMatrix& GetWorldInvInertia () const noexcept; + + [[nodiscard]] const SHVec3& GetLocalCentroid () const noexcept; + [[nodiscard]] const SHVec3& GetWorldCentroid () const noexcept; + + [[nodiscard]] const SHVec3& GetForce () const noexcept; + [[nodiscard]] const SHVec3& GetTorque () const noexcept; + [[nodiscard]] const SHVec3& GetLinearVelocity () const noexcept; + [[nodiscard]] const SHVec3& GetAngularVelocity () const noexcept; + + // Flags + + [[nodiscard]] bool IsActive () const noexcept; + [[nodiscard]] bool IsSleeping () const noexcept; + [[nodiscard]] bool IsSleepingEnabled () const noexcept; + [[nodiscard]] bool IsGravityEnabled () const noexcept; + [[nodiscard]] bool IsAutoMassEnabled () const noexcept; + [[nodiscard]] bool IsTriggerInMassData () const noexcept; + [[nodiscard]] bool GetFreezePositionX () const noexcept; + [[nodiscard]] bool GetFreezePositionY () const noexcept; + [[nodiscard]] bool GetFreezePositionZ () const noexcept; + [[nodiscard]] bool GetFreezeRotationX () const noexcept; + [[nodiscard]] bool GetFreezeRotationY () const noexcept; + [[nodiscard]] bool GetFreezeRotationZ () const noexcept; + + [[nodiscard]] SHMotionState& GetMotionState () noexcept; + + /*-----------------------------------------------------------------------------------*/ + /* Setter Functions */ + /*-----------------------------------------------------------------------------------*/ + + void SetCollider (SHCollider* c) noexcept; + + /** + * @brief + * Changing the type from non-Dynamic to Dynamic will set the default + * mass and drag values. + */ + void SetType (Type newType) noexcept; + + void SetGravityScale (float newGravityScale) noexcept; + + /** + * @brief + * Mass is only modifiable for Dynamic bodies. + * @param newMass + * The new mass to set. Values below 0 will be ignored. + */ + void SetMass (float newMass) noexcept; + + /** + * @brief + * Drag is only modifiable for non-Static bodies. + * @param newLinearDrag + * The new drag to set. Values below 0 will be ignored. + */ + void SetLinearDrag (float newLinearDrag) noexcept; + + /** + * @brief + * Drag is only modifiable for non-Static bodies. + * @param newAngularDrag + * The new drag to set. Values below 0 will be ignored. + */ + void SetAngularDrag (float newAngularDrag) noexcept; + + void SetLinearVelocity (const SHVec3& newLinearVelocity) noexcept; + void SetAngularVelocity (const SHVec3& newAngularVelocity)noexcept; + + // Flags + + void SetIsActive (bool isActive) noexcept; + void SetIsSleeping (bool isSleeping) noexcept; + void SetSleepingEnabled (bool enableSleeping) noexcept; + void SetGravityEnabled (bool enableGravity) noexcept; + void SetAutoMassEnabled (bool enableAutoMass) noexcept; + void SetTriggerInMassData(bool triggerInMassData) noexcept; + void SetFreezePositionX (bool freezePositionX) noexcept; + void SetFreezePositionY (bool freezePositionY) noexcept; + void SetFreezePositionZ (bool freezePositionZ) noexcept; + void SetFreezeRotationX (bool freezeRotationX) noexcept; + void SetFreezeRotationY (bool freezeRotationY) noexcept; + void SetFreezeRotationZ (bool freezeRotationZ) noexcept; + + /*-----------------------------------------------------------------------------------*/ + /* Member Functions */ + /*-----------------------------------------------------------------------------------*/ + + /** + * @brief + * Adds a force to the body with an offset from it's center of mass.
+ * Non-dynamic bodies will be ignored. + * @param force + * The force to add to the body. + * @param pos + * The position from the center of mass to offset the force. Defaults to zero. + */ + void AddForce (const SHVec3& force, const SHVec3& pos = SHVec3::Zero) noexcept; + + /** + * @brief + * Adds an impulse to the body with an offset from it's center of mass.
+ * Non-dynamic bodies will be ignored. + * @param impulse + * The impulse to add to the body. + * @param pos + * The position from the center of mass to offset the impulse. Defaults to zero. + */ + void AddImpulse (const SHVec3& impulse, const SHVec3& pos = SHVec3::Zero) noexcept; + + /** + * @brief + * Adds torque to rotate the body about it's centroid.
+ * Non-dynamic bodies will be ignored. + * @param torque + * The torque to add to the body. + */ + void AddTorque (const SHVec3& torque) noexcept; + + /** + * @brief + * Removes all the forces from the body. + */ + void ClearForces () noexcept; + + /** + * @brief + * Computes the centroid and invInertia in world space. + */ + void ComputeWorldData () noexcept; + + /** + * @brief + * Computes the centroid and inertia of the object.
+ * If auto-mass is enabled, computes the mass.
+ * If auto-mass is disabled, the inertia is computed based on the ratio each shape's volume over the total volume. + * + */ + void ComputeMassData () noexcept; + + private: + /*-----------------------------------------------------------------------------------*/ + /* Data Members */ + /*-----------------------------------------------------------------------------------*/ + + // The entityID here is only meant for linking with the actual component in the engine. + EntityID entityID; + SHCollider* collider; + + Type bodyType; + + float gravityScale; + + float invMass; + float linearDrag; + float angularDrag; + + SHMatrix localInvInertia; + SHMatrix worldInvInertia; + + SHVec3 localCentroid; + SHVec3 worldCentroid; + + SHVec3 accumulatedForce; + SHVec3 accumulatedTorque; + + SHVec3 linearVelocity; + SHVec3 angularVelocity; + + // aZ aY aX pZ pY pX 0 0 0 addTriggersToMassData inIsland autoMass enableGravity enableSleeping sleeping active + uint16_t flags; + + SHMotionState motionState; + + /*-----------------------------------------------------------------------------------*/ + /* Member Functions */ + /*-----------------------------------------------------------------------------------*/ + + void constrainLinearVelocities () noexcept; + void constrainAngularVelocities () noexcept; + + }; + +} // namespace SHADE diff --git a/SHADE_Engine/src/Physics/Interface/PhysicsObject/SHPhysicsObject.cpp b/SHADE_Engine/src/Physics/Interface/PhysicsObject/SHPhysicsObject.cpp new file mode 100644 index 00000000..2353e3f3 --- /dev/null +++ b/SHADE_Engine/src/Physics/Interface/PhysicsObject/SHPhysicsObject.cpp @@ -0,0 +1,163 @@ +/**************************************************************************************** + * \file SHPhysicsObject.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for a Physics Object. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "SHPhysicsObject.h" + +#include "Physics/Collision/SHCollider.h" +#include "Physics/Collision/SHCompositeCollider.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Constructor & Destructor Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHPhysicsObject::SHPhysicsObject(EntityID eid) noexcept + : entityID { eid } + {} + + SHPhysicsObject::SHPhysicsObject(const SHPhysicsObject& rhs) noexcept + : entityID { rhs.entityID } + { + deepCopyComponents(rhs.rigidBody, rhs.collider); + } + + SHPhysicsObject::SHPhysicsObject(SHPhysicsObject&& rhs) noexcept + : entityID { rhs.entityID } + { + deepCopyComponents(rhs.rigidBody, rhs.collider); + } + + SHPhysicsObject::~SHPhysicsObject() noexcept + { + entityID = MAX_EID; + + delete rigidBody; + rigidBody = nullptr; + + delete collider; + collider = nullptr; + } + + /*-----------------------------------------------------------------------------------*/ + /* Operator Overload Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHPhysicsObject& SHPhysicsObject::operator=(const SHPhysicsObject& rhs) noexcept + { + if (this == &rhs) + return *this; + + entityID = rhs.entityID; + + deepCopyComponents(rhs.rigidBody, rhs.collider); + + return *this; + } + + SHPhysicsObject& SHPhysicsObject::operator=(SHPhysicsObject&& rhs) noexcept + { + entityID = rhs.entityID; + + deepCopyComponents(rhs.rigidBody, rhs.collider); + + return *this; + } + + /*-----------------------------------------------------------------------------------*/ + /* Public Member Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + bool SHPhysicsObject::IsEmpty() const noexcept + { + return rigidBody == nullptr && collider == nullptr; + } + + SHRigidBody* SHPhysicsObject::CreateRigidBody(SHRigidBody::Type bodyType) + { + if (rigidBody) + { + SHLOG_INFO_D("Rigid body for Entity {} has already been created!", entityID) + return rigidBody; + } + + rigidBody = new SHRigidBody{ entityID, bodyType }; + + // Link with collider if it exists + if (collider) + { + collider->SetRigidBody(rigidBody); + rigidBody->SetCollider(collider); + } + + rigidBody->ComputeMassData(); + return rigidBody; + } + + void SHPhysicsObject::DestroyRigidBody() noexcept + { + delete rigidBody; + rigidBody = nullptr; + + // Unlink with collider + if (collider) + collider->SetRigidBody(nullptr); + } + + SHCollider* SHPhysicsObject::CreateCompositeCollider(const SHTransform& transform) + { + if (collider) + { + SHLOG_INFO_D("Collider for Entity {} has already been created!", entityID) + return collider; + } + + collider = new SHCompositeCollider{ entityID, transform }; + + // Link with rigidBody if it exists + if (rigidBody) + { + rigidBody->SetCollider(collider); + collider->SetRigidBody(rigidBody); + } + + return collider; + } + + void SHPhysicsObject::DestroyCollider() noexcept + { + delete collider; + collider = nullptr; + + // Unlink with rigid body + if (rigidBody) + { + rigidBody->SetCollider(nullptr); + rigidBody->ComputeMassData(); + } + } + + /*-----------------------------------------------------------------------------------*/ + /* Private Member Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHPhysicsObject::deepCopyComponents(const SHRigidBody* rhsRigidBody, const SHCollider* rhsCollider) + { + if (rhsRigidBody) + rigidBody = new SHRigidBody{ *rhsRigidBody }; + + if (rhsCollider) + collider = new SHCollider { *rhsCollider }; + } + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Interface/PhysicsObject/SHPhysicsObject.h b/SHADE_Engine/src/Physics/Interface/PhysicsObject/SHPhysicsObject.h new file mode 100644 index 00000000..9736f8d0 --- /dev/null +++ b/SHADE_Engine/src/Physics/Interface/PhysicsObject/SHPhysicsObject.h @@ -0,0 +1,109 @@ +/**************************************************************************************** + * \file SHPhysicsObject.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for a Physics Object. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +// Project Headers +#include "Physics/Collision/SHCollider.h" +#include "Physics/Dynamics/SHRigidBody.h" + +namespace SHADE +{ + /*-------------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-------------------------------------------------------------------------------------*/ + + /** + * @brief + * Encapsulates a rigid body and a collider tied to an Entity. + */ + struct SH_API SHPhysicsObject + { + public: + /*-----------------------------------------------------------------------------------*/ + /* Data Members */ + /*-----------------------------------------------------------------------------------*/ + + EntityID entityID = MAX_EID; + SHRigidBody* rigidBody = nullptr; + SHCollider* collider = nullptr; + + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*-----------------------------------------------------------------------------------*/ + + SHPhysicsObject (EntityID eid) noexcept; + SHPhysicsObject (const SHPhysicsObject& rhs) noexcept; + SHPhysicsObject (SHPhysicsObject&& rhs) noexcept; + ~SHPhysicsObject () noexcept; + + /*-----------------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*-----------------------------------------------------------------------------------*/ + + SHPhysicsObject& operator=(const SHPhysicsObject& rhs) noexcept; + SHPhysicsObject& operator=(SHPhysicsObject&& rhs) noexcept; + + /*-----------------------------------------------------------------------------------*/ + /* Member Functions */ + /*-----------------------------------------------------------------------------------*/ + + /** + * @brief + * Checks if the physics object has a rigid body or a collider. + * @return + * True if the physics object has neither a rigid body nor a collider. + */ + [[nodiscard]] bool IsEmpty () const noexcept; + + /** + * @brief + * Creates a rigid body for this physics object. + * @param bodyType + * The rigid body's type. Can be modified after creation. + * @return + * Pointer to the rigid body that was created. The memory of this rigid body is managed + * by the physics object itself. + */ + SHRigidBody* CreateRigidBody (SHRigidBody::Type bodyType); + + /** + * @brief + * Destroys the rigid body of this physics object and frees the memory. + */ + void DestroyRigidBody () noexcept; + + /** + * @brief + * Creates a collider for this physics object. + * @param colliderType + * The collider's type. Should not be modified after creation. + * @param transform. + * The world transform of the collider. Defaults to the identity transform. + * @return + * Pointer to the collider that was created. The memory of this collider is managed + * by the physics object itself. + */ + SHCollider* CreateCompositeCollider (const SHTransform& transform = SHTransform::Identity); + + /** + * @brief + * Destroys the collider of this physics object and frees the memory. + */ + void DestroyCollider () noexcept; + + private: + /*-----------------------------------------------------------------------------------*/ + /* Member Functions */ + /*-----------------------------------------------------------------------------------*/ + + void deepCopyComponents(const SHRigidBody* rhsRigidBody, const SHCollider* rhsCollider); + }; +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Interface/PhysicsObject/SHPhysicsObjectManager.cpp b/SHADE_Engine/src/Physics/Interface/PhysicsObject/SHPhysicsObjectManager.cpp new file mode 100644 index 00000000..956f8078 --- /dev/null +++ b/SHADE_Engine/src/Physics/Interface/PhysicsObject/SHPhysicsObjectManager.cpp @@ -0,0 +1,178 @@ +/**************************************************************************************** + * \file SHPhysicsObjectManager.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for a Physics Object Manager. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "SHPhysicsObjectManager.h" + +// Project Headers +#include "Math/Transform/SHTransformComponent.h" +#include "Physics/Interface/SHColliderComponent.h" +#include "Physics/Interface/SHRigidBodyComponent.h" +#include "Tools/Utilities/SHUtilities.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHPhysicsObjectManager::~SHPhysicsObjectManager() noexcept + { + RemoveAllObjects(); + } + + /*-----------------------------------------------------------------------------------*/ + /* Getter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHPhysicsObjectManager::EntityObjectMap& SHPhysicsObjectManager::GetPhysicsObjects() noexcept + { + return physicsObjects; + } + + const SHPhysicsObject* SHPhysicsObjectManager::GetPhysicsObject(EntityID entityID) noexcept + { + const auto PHYSICS_OBJECT_ITERATOR = physicsObjects.find(entityID); + if (PHYSICS_OBJECT_ITERATOR == physicsObjects.end()) + { + SHLOG_ERROR("Cannot find physics object for entity {}!", entityID) + return nullptr; + } + + return &PHYSICS_OBJECT_ITERATOR->second; + } + + /*-----------------------------------------------------------------------------------*/ + /* Public Member Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHPhysicsObjectManager::AddRigidBody(EntityID entityID) noexcept + { + SHPhysicsObject* physicsObject = ensurePhysicsObject(entityID); + + // Get the component + auto* rigidBodyComponent = SHComponentManager::GetComponent(entityID); + + // Create a new rigidbody in the physics object + const auto RIGID_BODY_TYPE = static_cast(rigidBodyComponent->GetType()); + auto* rigidBody = physicsObject->CreateRigidBody(RIGID_BODY_TYPE); + + SHVec3 worldPos = SHVec3::Zero; + SHQuaternion worldRot = SHQuaternion::Identity; + + if (const auto* TRANSFORM_COMPONENT = SHComponentManager::GetComponent_s(entityID); TRANSFORM_COMPONENT) + { + worldPos = TRANSFORM_COMPONENT->GetWorldPosition(); + worldRot = TRANSFORM_COMPONENT->GetWorldOrientation(); + } + + SHMotionState& motionState = rigidBody->GetMotionState(); + motionState.ForcePosition(worldPos); + motionState.ForceOrientation(worldRot); + + // Link with the component + rigidBodyComponent->SetRigidBody(rigidBody); + } + + void SHPhysicsObjectManager::RemoveRigidBody(EntityID entityID) noexcept + { + const auto PHYSICS_OBJECT_ITERATOR = physicsObjects.find(entityID); + if (PHYSICS_OBJECT_ITERATOR == physicsObjects.end()) + return; + + SHPhysicsObject* physicsObject = &PHYSICS_OBJECT_ITERATOR->second; + + physicsObject->DestroyRigidBody(); + + // Destroy empty physics objects + if (physicsObject->IsEmpty()) + destroyPhysicsObject(entityID); + } + + void SHPhysicsObjectManager::AddCollider(EntityID entityID, SHCollider::Type type) noexcept + { + SHPhysicsObject* physicsObject = ensurePhysicsObject(entityID); + + // Get the component + auto* colliderComponent = SHComponentManager::GetComponent(entityID); + + SHTransform worldTransform = SHTransform::Identity; + if (const auto* TRANSFORM_COMPONENT = SHComponentManager::GetComponent_s(entityID); TRANSFORM_COMPONENT) + { + worldTransform.position = TRANSFORM_COMPONENT->GetWorldPosition(); + worldTransform.orientation = TRANSFORM_COMPONENT->GetWorldOrientation(); + worldTransform.scale = TRANSFORM_COMPONENT->GetWorldScale(); + + worldTransform.ComputeTRS(); + } + + // Create a new composite collider in the physics object + if (type == SHCollider::Type::COMPOSITE) + physicsObject->CreateCompositeCollider(worldTransform); + + // TODO: Hull collider + + physicsObject->collider->SetLibrary(&shapeLibrary); + + // Link with the component + colliderComponent->SetCollider(dynamic_cast(physicsObject->collider)); + } + + void SHPhysicsObjectManager::RemoveCollider(EntityID entityID) noexcept + { + const auto PHYSICS_OBJECT_ITERATOR = physicsObjects.find(entityID); + if (PHYSICS_OBJECT_ITERATOR != physicsObjects.end()) + { + SHPhysicsObject* physicsObject = &PHYSICS_OBJECT_ITERATOR->second; + + physicsObject->DestroyCollider(); + + // Destroy empty physics objects + if (physicsObject->IsEmpty()) + destroyPhysicsObject(entityID); + } + } + + void SHPhysicsObjectManager::RemoveAllObjects() noexcept + { + // Physics objects itself will delete the object + physicsObjects.clear(); + } + + /*-----------------------------------------------------------------------------------*/ + /* Private Member Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHPhysicsObject* SHPhysicsObjectManager::createPhysicsObject(EntityID entityID) + { + const auto& NEW_OBJECT = physicsObjects.emplace(entityID, SHPhysicsObject{entityID}).first; + return &NEW_OBJECT->second; + } + + SHPhysicsObject* SHPhysicsObjectManager::ensurePhysicsObject(EntityID entityID) + { + const auto PHYSICS_OBJECT_ITERATOR = physicsObjects.find(entityID); + + SHPhysicsObject* physicsObject = PHYSICS_OBJECT_ITERATOR == physicsObjects.end() + ? createPhysicsObject(entityID) + : &PHYSICS_OBJECT_ITERATOR->second; + + return physicsObject; + } + + + void SHPhysicsObjectManager::destroyPhysicsObject(EntityID entityID) + { + physicsObjects.erase(entityID); + } + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Interface/PhysicsObject/SHPhysicsObjectManager.h b/SHADE_Engine/src/Physics/Interface/PhysicsObject/SHPhysicsObjectManager.h new file mode 100644 index 00000000..8b4e79c1 --- /dev/null +++ b/SHADE_Engine/src/Physics/Interface/PhysicsObject/SHPhysicsObjectManager.h @@ -0,0 +1,116 @@ +/**************************************************************************************** + * \file SHPhysicsObjectManager.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for a Physics Object Manager. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +#include + +// Project Headers +#include "SHPhysicsObject.h" +#include "Physics/Collision/Shapes/SHCollisionShapeLibrary.h" + +namespace SHADE +{ + /*-------------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-------------------------------------------------------------------------------------*/ + + /** + * @brief + * Encapsulates a manager for physics objects that links raw physics components with the + * engine's components. + */ + class SH_API SHPhysicsObjectManager + { + private: + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + + using EntityObjectMap = std::unordered_map; + + public: + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*-----------------------------------------------------------------------------------*/ + + SHPhysicsObjectManager () noexcept = default; + ~SHPhysicsObjectManager () noexcept; + + /*-----------------------------------------------------------------------------------*/ + /* Getter Functions */ + /*-----------------------------------------------------------------------------------*/ + + [[nodiscard]] EntityObjectMap& GetPhysicsObjects () noexcept; + [[nodiscard]] const SHPhysicsObject* GetPhysicsObject (EntityID entityID) noexcept; + + /*-----------------------------------------------------------------------------------*/ + /* Member Functions */ + /*-----------------------------------------------------------------------------------*/ + + /** + * @brief + * Creates a rigid body and links it with the rigid body component. + * @param entityID + * The entity to link the new rigid body to. + */ + void AddRigidBody (EntityID entityID) noexcept; + + /** + * @brief + * Destroys a rigid body and removes the link with the rigid body component. + * @param entityID + * The entity to destroy the rigid body of. + */ + void RemoveRigidBody (EntityID entityID) noexcept; + + /** + * @brief + * Creates a composite collider and links it with the collider component. + * @param entityID + * The entity to link the new collider to. + */ + void AddCollider (EntityID entityID, SHCollider::Type type) noexcept; + + /** + * @brief + * Destroys a composite collider and removes the link with the collider component. + * @param entityID + * The entity to destroy the collider of. + */ + void RemoveCollider (EntityID entityID) noexcept; + + /** + * @brief + * Removes all physics object in the manager. This is only meant to be called when + * the world is being destroyed or the scene is being changed. + */ + void RemoveAllObjects () noexcept; + + private: + /*-----------------------------------------------------------------------------------*/ + /* Data Members */ + /*-----------------------------------------------------------------------------------*/ + + EntityObjectMap physicsObjects; + SHCollisionShapeLibrary shapeLibrary; + + /*-----------------------------------------------------------------------------------*/ + /* Member Functions */ + /*-----------------------------------------------------------------------------------*/ + + SHPhysicsObject* createPhysicsObject (EntityID entityID); + SHPhysicsObject* ensurePhysicsObject (EntityID entityID); + void destroyPhysicsObject (EntityID entityID); + + + }; + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Interface/SHColliderComponent.cpp b/SHADE_Engine/src/Physics/Interface/SHColliderComponent.cpp index d7db2c64..a36fb730 100644 --- a/SHADE_Engine/src/Physics/Interface/SHColliderComponent.cpp +++ b/SHADE_Engine/src/Physics/Interface/SHColliderComponent.cpp @@ -13,11 +13,6 @@ // Primary Header #include "SHColliderComponent.h" -// Project Headers -#include "ECS_Base/Managers/SHSystemManager.h" -#include "Math/SHMathHelpers.h" -#include "Physics/System/SHPhysicsSystem.h" - namespace SHADE { /*-----------------------------------------------------------------------------------*/ @@ -25,185 +20,58 @@ namespace SHADE /*-----------------------------------------------------------------------------------*/ SHColliderComponent::SHColliderComponent() noexcept - : system { nullptr } + : collider { nullptr } {} /*-----------------------------------------------------------------------------------*/ /* Getter Function Definitions */ /*-----------------------------------------------------------------------------------*/ - - const SHVec3& SHColliderComponent::GetPosition() const noexcept + SHCompositeCollider* const SHColliderComponent::GetCollider() const noexcept { - return position; + return collider; } - const SHQuaternion& SHColliderComponent::GetOrientation() const noexcept + const SHCollider::CollisionShapes* const SHColliderComponent::GetCollisionShapes() const noexcept { - return orientation; + if (!collider) + return nullptr; + + return &collider->GetCollisionShapes(); } - SHVec3 SHColliderComponent::GetRotation() const noexcept + + SHCollisionShape* const SHColliderComponent::GetCollisionShape(int index) const { - return orientation.ToEuler(); + if (!collider) + return nullptr; + + return collider->GetCollisionShape(index); } - const SHVec3& SHColliderComponent::GetScale() const noexcept + bool SHColliderComponent::GetDebugDrawState() const noexcept { - return scale; + if (!collider) + return false; + + return collider->GetDebugDrawState(); } - - const SHColliderComponent::CollisionShapes& SHColliderComponent::GetCollisionShapes() const noexcept - { - return collisionShapes; - } - - SHCollisionShape& SHColliderComponent::GetCollisionShape(int index) - { - if (index < 0 || static_cast(index) >= collisionShapes.size()) - throw std::invalid_argument("Out-of-range access!"); - - return collisionShapes[index]; - } - + /*-----------------------------------------------------------------------------------*/ - /* Public Function Member Definitions */ + /* Setter Function Definitions */ /*-----------------------------------------------------------------------------------*/ - void SHColliderComponent::OnCreate() + void SHColliderComponent::SetCollider(SHCompositeCollider* c) noexcept { - auto* physicsSystem = SHSystemManager::GetSystem(); - if (!physicsSystem) - { - SHLOG_ERROR("Physics System does not exist to link with Physics Components!") - return; - } - - system = physicsSystem; - - // Sync with transform if one already exists - if (auto* transformComponent = SHComponentManager::GetComponent_s(GetEID()); transformComponent) - { - position = transformComponent->GetWorldPosition(); - orientation = transformComponent->GetWorldOrientation(); - scale = transformComponent->GetWorldScale(); - } + collider = c; } - void SHColliderComponent::OnDestroy() + void SHColliderComponent::SetDebugDrawState(bool state) noexcept { - + if (collider) + collider->SetDebugDrawState(state); } - void SHColliderComponent::RecomputeCollisionShapes() noexcept - { - for (auto& collisionShape : collisionShapes) - { - switch (collisionShape.GetType()) - { - case SHCollisionShape::Type::BOX: - { - auto* box = reinterpret_cast(collisionShape.shape); - const SHVec3& RELATIVE_EXTENTS = box->GetRelativeExtents(); - - // Recompute world extents based on new scale and fixed relative extents - - const SHVec3 WORLD_EXTENTS = RELATIVE_EXTENTS * (scale * 0.5f); - box->SetWorldExtents(WORLD_EXTENTS); - - continue; - } - case SHCollisionShape::Type::SPHERE: - { - auto* sphere = reinterpret_cast(collisionShape.shape); - const float RELATIVE_RADIUS = sphere->GetRelativeRadius(); - - // Recompute world radius based on new scale and fixed radius - - const float MAX_SCALE = SHMath::Max({ scale.x, scale.y, scale.z }); - const float WORLD_RADIUS = RELATIVE_RADIUS * MAX_SCALE * 0.5f; - sphere->SetWorldRadius(WORLD_RADIUS); - - continue; - } - default: continue; - } - } - } - - int SHColliderComponent::AddBoundingBox(const SHVec3& halfExtents, const SHVec3& posOffset, const SHVec3& rotOffset) noexcept - { - if (!system) - { - SHLOG_ERROR("Physics system does not exist, unable to add Box Collider!") - return -1; - } - - static constexpr auto TYPE = SHCollisionShape::Type::BOX; - - auto& collider = collisionShapes.emplace_back(SHCollisionShape{ GetEID(), TYPE }); - - collider.entityID = GetEID(); - collider.SetPositionOffset(posOffset); - collider.SetRotationOffset(rotOffset); - collider.SetBoundingBox(halfExtents); - - // Notify Physics System - const int NEW_SHAPE_INDEX = static_cast(collisionShapes.size()) - 1; - - system->AddCollisionShape(GetEID(), NEW_SHAPE_INDEX); - return NEW_SHAPE_INDEX; - } - - int SHColliderComponent::AddBoundingSphere(float radius, const SHVec3& posOffset) noexcept - { - if (!system) - { - SHLOG_ERROR("Physics system does not exist, unable to add Sphere Collider!") - return -1; - } - - static constexpr auto TYPE = SHCollisionShape::Type::SPHERE; - - auto& collider = collisionShapes.emplace_back(SHCollisionShape{ GetEID(), TYPE }); - - collider.entityID = GetEID(); - collider.SetPositionOffset(posOffset); - collider.SetBoundingSphere(radius); - - // Notify Physics System - const int NEW_SHAPE_INDEX = static_cast(collisionShapes.size()) - 1; - - system->AddCollisionShape(GetEID(), NEW_SHAPE_INDEX); - return NEW_SHAPE_INDEX; - } - - void SHColliderComponent::RemoveCollider(int index) - { - if (index < 0 || static_cast(index) >= collisionShapes.size()) - throw std::invalid_argument("Out-of-range access!"); - - int idx = 0; - auto it = collisionShapes.begin(); - for (; it != collisionShapes.end(); ++it) - { - if (idx == index) - break; - - ++idx; - } - - it = collisionShapes.erase(it); - - // Notify Physics System - if (!system) - { - SHLOG_ERROR("Physics system does not exist, unable to remove Collider!") - return; - } - - system->RemoveCollisionShape(GetEID(), index); - } } // namespace SHADE @@ -212,5 +80,6 @@ RTTR_REGISTRATION using namespace rttr; using namespace SHADE; - registration::class_("Collider Component"); -} \ No newline at end of file + registration::class_("Collider Component") + .property("Is Debug Drawing", &SHColliderComponent::GetDebugDrawState, &SHColliderComponent::SetDebugDrawState); +} \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Interface/SHColliderComponent.h b/SHADE_Engine/src/Physics/Interface/SHColliderComponent.h index 0781f3cf..39552949 100644 --- a/SHADE_Engine/src/Physics/Interface/SHColliderComponent.h +++ b/SHADE_Engine/src/Physics/Interface/SHColliderComponent.h @@ -14,14 +14,7 @@ // Project Headers #include "ECS_Base/Components/SHComponent.h" -#include "Math/Geometry/SHBox.h" -#include "Math/Geometry/SHSphere.h" -#include "SHCollisionShape.h" - -//namespace SHADE -//{ -// class SHPhysicsSystem; -//} +#include "Physics/Collision/SHCompositeCollider.h" namespace SHADE { @@ -37,13 +30,7 @@ namespace SHADE /*---------------------------------------------------------------------------------*/ friend class SHPhysicsSystem; - friend class SHPhysicsObject; - - /*---------------------------------------------------------------------------------*/ - /* Type Definitions */ - /*---------------------------------------------------------------------------------*/ - - using CollisionShapes = std::vector; + friend struct SHPhysicsObject; public: @@ -67,42 +54,30 @@ namespace SHADE /* Getter Functions */ /*---------------------------------------------------------------------------------*/ - [[nodiscard]] bool HasChanged () const noexcept; + [[nodiscard]] SHCompositeCollider* const GetCollider () const noexcept; + [[nodiscard]] const SHCollider::CollisionShapes* const GetCollisionShapes() const noexcept; + [[nodiscard]] SHCollisionShape* const GetCollisionShape (int index) const; - [[nodiscard]] const SHVec3& GetPosition () const noexcept; - [[nodiscard]] const SHQuaternion& GetOrientation () const noexcept; - [[nodiscard]] SHVec3 GetRotation () const noexcept; - [[nodiscard]] const SHVec3& GetScale () const noexcept; + // Required for serialisation - [[nodiscard]] const CollisionShapes& GetCollisionShapes() const noexcept; - [[nodiscard]] SHCollisionShape& GetCollisionShape (int index); + [[nodiscard]] bool GetDebugDrawState () const noexcept; /*---------------------------------------------------------------------------------*/ - /* Function Members */ + /* Setter Functions */ /*---------------------------------------------------------------------------------*/ - void OnCreate () override; - void OnDestroy () override; + void SetCollider (SHCompositeCollider* c) noexcept; - void RecomputeCollisionShapes () noexcept; + // Required for serialisation - void RemoveCollider (int index); - - int AddBoundingBox (const SHVec3& halfExtents = SHVec3::One, const SHVec3& posOffset = SHVec3::Zero, const SHVec3& rotOffset = SHVec3::Zero) noexcept; - int AddBoundingSphere (float radius = 1.0f, const SHVec3& posOffset = SHVec3::Zero) noexcept; + void SetDebugDrawState (bool state) noexcept; private: - /*---------------------------------------------------------------------------------*/ /* Data Members */ /*---------------------------------------------------------------------------------*/ - SHPhysicsSystem* system; - - SHVec3 position; - SHQuaternion orientation; - SHVec3 scale; - CollisionShapes collisionShapes; + SHCompositeCollider* collider; RTTR_ENABLE() }; diff --git a/SHADE_Engine/src/Physics/Interface/SHCollisionShape.cpp b/SHADE_Engine/src/Physics/Interface/SHCollisionShape.cpp deleted file mode 100644 index f597077f..00000000 --- a/SHADE_Engine/src/Physics/Interface/SHCollisionShape.cpp +++ /dev/null @@ -1,368 +0,0 @@ -/**************************************************************************************** - * \file SHCollider.cpp - * \author Diren D Bharwani, diren.dbharwani, 390002520 - * \brief Implementation for a Collider. - * - * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or - * disclosure of this file or its contents without the prior written consent - * of DigiPen Institute of Technology is prohibited. -****************************************************************************************/ - -#include - -// Primary Header -#include "SHCollisionShape.h" -// Project Headers -#include "Math/Geometry/SHBox.h" -#include "Math/Geometry/SHSphere.h" -#include "Math/SHMathHelpers.h" -#include "Physics/Collision/SHCollisionTagMatrix.h" -#include "Reflection/SHReflectionMetadata.h" -#include "SHColliderComponent.h" - -namespace SHADE -{ - /*-----------------------------------------------------------------------------------*/ - /* Constructors & Destructor Definitions */ - /*-----------------------------------------------------------------------------------*/ - - SHCollisionShape::SHCollisionShape(EntityID eid, Type colliderType, const SHPhysicsMaterial& physicsMaterial) - : type { colliderType } - , entityID { eid } - , isTrigger { false } - , dirty { true } - , shape { nullptr } - , material { physicsMaterial } - , collisionTag { SHCollisionTagMatrix::GetTag(0) } - { - switch (type) - { - case Type::BOX: - { - shape = new SHBox{ SHVec3::Zero, SHVec3::One }; - break; - } - case Type::SPHERE: - { - shape = new SHSphere{ SHVec3::Zero, 0.5f }; - break; - } - default: break; - } - } - - SHCollisionShape::SHCollisionShape(const SHCollisionShape& rhs) noexcept - : type { rhs.type} - , entityID { rhs.entityID } - , isTrigger { rhs.isTrigger } - , dirty { true } - , shape { nullptr } - , material { rhs.material } - , positionOffset { rhs.positionOffset } - , rotationOffset { rhs.rotationOffset } - , collisionTag { rhs.collisionTag } - { - CopyShape(rhs.shape); - } - - SHCollisionShape::SHCollisionShape(SHCollisionShape&& rhs) noexcept - : type { rhs.type} - , entityID { rhs.entityID } - , isTrigger { rhs.isTrigger } - , dirty { true } - , shape { nullptr } - , material { rhs.material } - , positionOffset { rhs.positionOffset } - , rotationOffset { rhs.rotationOffset } - , collisionTag { rhs.collisionTag } - { - CopyShape(rhs.shape); - } - - SHCollisionShape::~SHCollisionShape() noexcept - { - shape = nullptr; - } - - /*-----------------------------------------------------------------------------------*/ - /* Operator Overload Definitions */ - /*-----------------------------------------------------------------------------------*/ - - SHCollisionShape& SHCollisionShape::operator=(const SHCollisionShape& rhs) noexcept - { - if (this == &rhs) - return *this; - - type = rhs.type; - entityID = rhs.entityID; - isTrigger = rhs.isTrigger; - dirty = true; - material = rhs.material; - positionOffset = rhs.positionOffset; - rotationOffset = rhs.rotationOffset; - collisionTag = rhs.collisionTag; - - delete shape; - CopyShape(rhs.shape); - - return *this; - } - - SHCollisionShape& SHCollisionShape::operator=(SHCollisionShape&& rhs) noexcept - { - type = rhs.type; - entityID = rhs.entityID; - isTrigger = rhs.isTrigger; - dirty = true; - material = rhs.material; - positionOffset = rhs.positionOffset; - rotationOffset = rhs.rotationOffset; - collisionTag = rhs.collisionTag; - - delete shape; - CopyShape(rhs.shape); - - return *this; - } - - /*-----------------------------------------------------------------------------------*/ - /* Getter Function Definitions */ - /*-----------------------------------------------------------------------------------*/ - - bool SHCollisionShape::HasChanged() const noexcept - { - return dirty; - } - - bool SHCollisionShape::IsTrigger() const noexcept - { - return isTrigger; - } - - SHCollisionShape::Type SHCollisionShape::GetType() const noexcept - { - return type; - } - - const SHCollisionTag& SHCollisionShape::GetCollisionTag() const noexcept - { - return *collisionTag; - } - - float SHCollisionShape::GetFriction() const noexcept - { - return material.GetFriction(); - } - - float SHCollisionShape::GetBounciness() const noexcept - { - return material.GetBounciness(); - } - - float SHCollisionShape::GetDensity() const noexcept - { - return material.GetDensity(); - } - - const SHPhysicsMaterial& SHCollisionShape::GetMaterial() const noexcept - { - return material; - } - - const SHVec3& SHCollisionShape::GetPositionOffset() const noexcept - { - return positionOffset; - } - - const SHVec3& SHCollisionShape::GetRotationOffset() const noexcept - { - return rotationOffset; - } - - const SHShape* SHCollisionShape::GetShape() const noexcept - { - return shape; - } - - /*-----------------------------------------------------------------------------------*/ - /* Setter Function Definitions */ - /*-----------------------------------------------------------------------------------*/ - - void SHCollisionShape::SetBoundingBox(const SHVec3& halfExtents) - { - dirty = true; - - const auto* COLLIDER = SHComponentManager::GetComponent(entityID); - auto* box = reinterpret_cast(shape); - - SHVec3 correctedHalfExtents = halfExtents; - - // Get current relative halfExtents for error checking. 0 is ignored - const SHVec3& CURRENT_RELATIVE_EXTENTS = box->GetRelativeExtents(); - for (size_t i = 0; i < SHVec3::SIZE; ++i) - { - if (SHMath::CompareFloat(halfExtents[i], 0.0f)) - correctedHalfExtents[i] = CURRENT_RELATIVE_EXTENTS[i]; - } - - // Set the half extents relative to world scale - const SHVec3 WORLD_EXTENTS = correctedHalfExtents * COLLIDER->GetScale() * 0.5f; - - if (type != Type::BOX) - { - type = Type::BOX; - - delete shape; - shape = new SHBox{ positionOffset, WORLD_EXTENTS }; - } - - box->SetWorldExtents(WORLD_EXTENTS); - box->SetRelativeExtents(correctedHalfExtents); - } - - void SHCollisionShape::SetBoundingSphere(float radius) - { - dirty = true; - - auto* sphere = reinterpret_cast(shape); - const auto* COLLIDER = SHComponentManager::GetComponent(entityID); - - // Get current relative halfExtents for error checking. 0 is ignored - const float CURRENT_RELATIVE_RADIUS = sphere->GetRelativeRadius(); - if (SHMath::CompareFloat(radius, 0.0f)) - radius = CURRENT_RELATIVE_RADIUS; - - // Set the radius relative to world scale - const SHVec3 WORLD_SCALE = COLLIDER->GetScale(); - const float MAX_SCALE = SHMath::Max({ WORLD_SCALE.x, WORLD_SCALE.y, WORLD_SCALE.z }); - const float WORLD_RADIUS = radius * MAX_SCALE * 0.5f; - - if (type != Type::SPHERE) - { - type = Type::SPHERE; - - delete shape; - shape = new SHSphere{ positionOffset, WORLD_RADIUS }; - } - - sphere->SetWorldRadius(WORLD_RADIUS); - sphere->SetRelativeRadius(radius); - } - - void SHCollisionShape::SetIsTrigger(bool trigger) noexcept - { - dirty = true; - isTrigger = trigger; - } - - void SHCollisionShape::SetCollisionTag(SHCollisionTag* newCollisionTag) noexcept - { - dirty = true; - collisionTag = newCollisionTag; - } - - void SHCollisionShape::SetFriction(float friction) noexcept - { - dirty = true; - material.SetFriction(friction); - } - - void SHCollisionShape::SetBounciness(float bounciness) noexcept - { - dirty = true; - material.SetBounciness(bounciness); - } - - void SHCollisionShape::SetDensity(float density) noexcept - { - dirty = true; - material.SetDensity(density); - } - - void SHCollisionShape::SetMaterial(const SHPhysicsMaterial& newMaterial) noexcept - { - dirty = true; - material = newMaterial; - } - - void SHCollisionShape::SetPositionOffset(const SHVec3& posOffset) noexcept - { - dirty = true; - positionOffset = posOffset; - - switch (type) - { - case Type::BOX: - { - reinterpret_cast(shape)->SetCenter(positionOffset); - break; - } - case Type::SPHERE: - { - reinterpret_cast(shape)->SetCenter(positionOffset); - break; - } - default: break; - } - } - - void SHCollisionShape::SetRotationOffset(const SHVec3& rotOffset) noexcept - { - dirty = true; - rotationOffset = rotOffset; - } - - /*-----------------------------------------------------------------------------------*/ - /* Private Function Member Definitions */ - /*-----------------------------------------------------------------------------------*/ - - void SHCollisionShape::CopyShape(const SHShape* rhs) - { - switch (type) - { - case Type::BOX: - { - const auto* RHS_BOX = reinterpret_cast(rhs); - - shape = new SHBox{ positionOffset, RHS_BOX->GetWorldExtents() }; - auto* lhsBox = reinterpret_cast(shape); - lhsBox->SetRelativeExtents(RHS_BOX->GetRelativeExtents()); - - break; - } - case Type::SPHERE: - { - const auto* RHS_SPHERE = reinterpret_cast(rhs); - - shape = new SHSphere{ positionOffset, RHS_SPHERE->GetWorldRadius() }; - auto* lhsSphere = reinterpret_cast(shape); - lhsSphere->SetRelativeRadius(RHS_SPHERE->GetRelativeRadius()); - - break; - } - default: break; - } - } - -} // namespace SHADE - -RTTR_REGISTRATION -{ - using namespace SHADE; - using namespace rttr; - - registration::enumeration("Collider Type") - ( - value("Box", SHCollisionShape::Type::BOX), - value("Sphere", SHCollisionShape::Type::SPHERE) - // TODO(Diren): Add More Shapes - ); - - registration::class_("Collider") - .property("IsTrigger" , &SHCollisionShape::IsTrigger , &SHCollisionShape::SetIsTrigger ) - .property("Friction" , &SHCollisionShape::GetFriction , &SHCollisionShape::SetFriction ) - .property("Bounciness" , &SHCollisionShape::GetBounciness , &SHCollisionShape::SetBounciness ) - .property("Density" , &SHCollisionShape::GetDensity , &SHCollisionShape::SetDensity ) - .property("Position Offset" , &SHCollisionShape::GetPositionOffset, &SHCollisionShape::SetPositionOffset) - .property("Rotation Offset" , &SHCollisionShape::GetRotationOffset, &SHCollisionShape::SetRotationOffset) (metadata(META::angleInRad, true)); -} \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Interface/SHCollisionShape.h b/SHADE_Engine/src/Physics/Interface/SHCollisionShape.h deleted file mode 100644 index 597814a6..00000000 --- a/SHADE_Engine/src/Physics/Interface/SHCollisionShape.h +++ /dev/null @@ -1,134 +0,0 @@ -/**************************************************************************************** - * \file SHCollider.h - * \author Diren D Bharwani, diren.dbharwani, 390002520 - * \brief Interface for a Collider. - * - * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or - * disclosure of this file or its contents without the prior written consent - * of DigiPen Institute of Technology is prohibited. -****************************************************************************************/ - -#pragma once - -#include - -// Project Headers -#include "ECS_Base/Entity/SHEntity.h" -#include "Math/Geometry/SHShape.h" -#include "Math/SHQuaternion.h" -#include "SHPhysicsMaterial.h" -#include "Physics/Collision/SHCollisionTags.h" - -namespace SHADE -{ - /*-----------------------------------------------------------------------------------*/ - /* Type Definitions */ - /*-----------------------------------------------------------------------------------*/ - - class SH_API SHCollisionShape - { - private: - - /*---------------------------------------------------------------------------------*/ - /* Friends */ - /*---------------------------------------------------------------------------------*/ - - friend class SHColliderComponent; - friend class SHPhysicsObject; - - public: - /*---------------------------------------------------------------------------------*/ - /* Type Definitions */ - /*---------------------------------------------------------------------------------*/ - - enum class Type - { - BOX - , SPHERE - , CAPSULE - }; - - /*---------------------------------------------------------------------------------*/ - /* Constructors & Destructor */ - /*---------------------------------------------------------------------------------*/ - - SHCollisionShape (EntityID eid, Type colliderType = Type::BOX, const SHPhysicsMaterial& physicsMaterial = SHPhysicsMaterial::DEFAULT); - - SHCollisionShape (const SHCollisionShape& rhs) noexcept; - SHCollisionShape (SHCollisionShape&& rhs) noexcept; - ~SHCollisionShape () noexcept; - - /*---------------------------------------------------------------------------------*/ - /* Operator Overloads */ - /*---------------------------------------------------------------------------------*/ - - SHCollisionShape& operator=(const SHCollisionShape& rhs) noexcept; - SHCollisionShape& operator=(SHCollisionShape&& rhs) noexcept; - - /*---------------------------------------------------------------------------------*/ - /* Getter Functions */ - /*---------------------------------------------------------------------------------*/ - - [[nodiscard]] bool HasChanged () const noexcept; - - [[nodiscard]] bool IsTrigger () const noexcept; - - [[nodiscard]] Type GetType () const noexcept; - - [[nodiscard]] const SHCollisionTag& GetCollisionTag () const noexcept; - - [[nodiscard]] float GetFriction () const noexcept; - [[nodiscard]] float GetBounciness () const noexcept; - [[nodiscard]] float GetDensity () const noexcept; - [[nodiscard]] const SHPhysicsMaterial& GetMaterial () const noexcept; - - [[nodiscard]] const SHVec3& GetPositionOffset () const noexcept; - [[nodiscard]] const SHVec3& GetRotationOffset () const noexcept; - - [[nodiscard]] const SHShape* GetShape () const noexcept; - - /*---------------------------------------------------------------------------------*/ - /* Setter Functions */ - /*---------------------------------------------------------------------------------*/ - - void SetBoundingBox (const SHVec3& halfExtents); - void SetBoundingSphere (float radius); - - void SetIsTrigger (bool isTrigger) noexcept; - void SetCollisionTag (SHCollisionTag* newCollisionTag) noexcept; - void SetFriction (float friction) noexcept; - void SetBounciness (float bounciness) noexcept; - void SetDensity (float density) noexcept; - void SetMaterial (const SHPhysicsMaterial& newMaterial) noexcept; - - void SetPositionOffset (const SHVec3& posOffset) noexcept; - void SetRotationOffset (const SHVec3& rotOffset) noexcept; - - private: - /*---------------------------------------------------------------------------------*/ - /* Data Members */ - /*---------------------------------------------------------------------------------*/ - - Type type; - EntityID entityID; // The entity this collider belongs to - bool isTrigger; - bool dirty; - - SHShape* shape; - SHPhysicsMaterial material; - - SHVec3 positionOffset; - SHVec3 rotationOffset; - - SHCollisionTag* collisionTag; - - /*---------------------------------------------------------------------------------*/ - /* Function Members */ - /*---------------------------------------------------------------------------------*/ - - void CopyShape(const SHShape* rhs); - - RTTR_ENABLE() - }; - -} // namespace SHADE diff --git a/SHADE_Engine/src/Physics/Interface/SHRigidBodyComponent.cpp b/SHADE_Engine/src/Physics/Interface/SHRigidBodyComponent.cpp index 330c3abe..04bb5b6b 100644 --- a/SHADE_Engine/src/Physics/Interface/SHRigidBodyComponent.cpp +++ b/SHADE_Engine/src/Physics/Interface/SHRigidBodyComponent.cpp @@ -10,17 +10,9 @@ #include -// External Dependencies -#include - // Primary Header #include "SHRigidBodyComponent.h" -// Project Headers -#include "ECS_Base/Managers/SHSystemManager.h" -#include "Math/SHMathHelpers.h" -#include "Physics/System/SHPhysicsSystem.h" - namespace SHADE { /*-----------------------------------------------------------------------------------*/ @@ -29,382 +21,318 @@ namespace SHADE SHRigidBodyComponent::SHRigidBodyComponent() noexcept : type { Type::DYNAMIC } - , flags { 0 } - , dirtyFlags { std::numeric_limits::max() } - , mass { 1.0f } - , drag { 0.01f } - , angularDrag { 0.01f } - , system { nullptr } - { - // Initialise default flags - flags |= 1U << 0; // Gravity set to true - flags |= 1U << 1; // Sleeping allowed - flags |= 1U << 8; // Interpolate by default - } + , interpolate { true } + , rigidBody { nullptr } + {} /*-----------------------------------------------------------------------------------*/ - /* Getter Function Definitions */ + /* Getter Functions Definitions */ /*-----------------------------------------------------------------------------------*/ - bool SHRigidBodyComponent::IsGravityEnabled() const noexcept - { - static constexpr int FLAG_POS = 0; - return flags & (1U << FLAG_POS); - } - - bool SHRigidBodyComponent::IsAllowedToSleep() const noexcept - { - static constexpr int FLAG_POS = 1; - return flags & (1U << FLAG_POS); - } - - bool SHRigidBodyComponent::IsInterpolating() const noexcept - { - static constexpr int FLAG_POS = 8; - return flags & (1U << FLAG_POS); - } - - bool SHRigidBodyComponent::GetIsSleeping() const noexcept - { - if (auto* physicsObject = system->GetPhysicsObject(GetEID()); physicsObject) - return physicsObject->GetRigidBody()->isSleeping(); - - return false; - } - SHRigidBodyComponent::Type SHRigidBodyComponent::GetType() const noexcept { return type; } + bool SHRigidBodyComponent::IsGravityEnabled() const noexcept + { + return rigidBody ? rigidBody->IsGravityEnabled() : false; + } + + bool SHRigidBodyComponent::IsAllowedToSleep() const noexcept + { + return rigidBody ? rigidBody->IsSleepingEnabled() : false; + } + + bool SHRigidBodyComponent::IsInterpolating() const noexcept + { + return interpolate; + } + + bool SHRigidBodyComponent::IsSleeping() const noexcept + { + return rigidBody ? rigidBody->IsSleeping() : false; + } + + bool SHRigidBodyComponent::GetAutoMass() const noexcept + { + return rigidBody ? rigidBody->IsAutoMassEnabled() : false; + } + bool SHRigidBodyComponent::GetFreezePositionX() const noexcept { - static constexpr int FLAG_POS = 2; - return flags & (1U << FLAG_POS); + return rigidBody ? rigidBody->GetFreezePositionX() : false; } bool SHRigidBodyComponent::GetFreezePositionY() const noexcept { - static constexpr int FLAG_POS = 3; - return flags & (1U << FLAG_POS); + return rigidBody ? rigidBody->GetFreezePositionY() : false; } bool SHRigidBodyComponent::GetFreezePositionZ() const noexcept { - static constexpr int FLAG_POS = 4; - return flags & (1U << FLAG_POS); + return rigidBody ? rigidBody->GetFreezePositionZ() : false; } bool SHRigidBodyComponent::GetFreezeRotationX() const noexcept { - static constexpr int FLAG_POS = 5; - return flags & (1U << FLAG_POS); + return rigidBody ? rigidBody->GetFreezeRotationX() : false; } bool SHRigidBodyComponent::GetFreezeRotationY() const noexcept { - static constexpr int FLAG_POS = 6; - return flags & (1U << FLAG_POS); + return rigidBody ? rigidBody->GetFreezeRotationY() : false; } bool SHRigidBodyComponent::GetFreezeRotationZ() const noexcept { - static constexpr int FLAG_POS = 7; - return flags & (1U << FLAG_POS); + return rigidBody ? rigidBody->GetFreezeRotationZ() : false; } - //bool SHRigidBodyComponent::GetAutoMass() const noexcept - //{ - // static constexpr int FLAG_POS = 9; - // return flags & (1U << FLAG_POS); - //} - - float SHRigidBodyComponent::GetMass() const noexcept + float SHRigidBodyComponent::GetGravityScale() const noexcept { - return mass; + return rigidBody ? rigidBody->GetGravityScale() : 0.0f; + } + + float SHRigidBodyComponent::GetMass() const noexcept + { + return rigidBody ? rigidBody->GetMass() : -1.0f; } float SHRigidBodyComponent::GetDrag() const noexcept { - return drag; + return rigidBody ? rigidBody->GetLinearDrag() : -1.0f; } float SHRigidBodyComponent::GetAngularDrag() const noexcept { - return angularDrag; + return rigidBody ? rigidBody->GetAngularDrag() : -1.0f; } SHVec3 SHRigidBodyComponent::GetForce() const noexcept { - if (auto* physicsObject = system->GetPhysicsObject(GetEID()); physicsObject) - return physicsObject->GetRigidBody()->getForce(); - - return SHVec3::Zero; + return rigidBody ? rigidBody->GetForce() : SHVec3::Zero; } SHVec3 SHRigidBodyComponent::GetTorque() const noexcept { - if (auto* physicsObject = system->GetPhysicsObject(GetEID()); physicsObject) - return physicsObject->GetRigidBody()->getTorque(); - - return SHVec3::Zero; + return rigidBody ? rigidBody->GetTorque() : SHVec3::Zero; } SHVec3 SHRigidBodyComponent::GetLinearVelocity() const noexcept { - if (auto* physicsObject = system->GetPhysicsObject(GetEID()); physicsObject) - return physicsObject->GetRigidBody()->getLinearVelocity(); - - return SHVec3::Zero; + return rigidBody ? rigidBody->GetLinearVelocity() : SHVec3::Zero; } SHVec3 SHRigidBodyComponent::GetAngularVelocity() const noexcept { - if (auto* physicsObject = system->GetPhysicsObject(GetEID()); physicsObject) - return physicsObject->GetRigidBody()->getAngularVelocity(); - - return SHVec3::Zero; + return rigidBody ? rigidBody->GetAngularVelocity() : SHVec3::Zero; } - const SHVec3& SHRigidBodyComponent::GetPosition() const noexcept + SHVec3 SHRigidBodyComponent::GetPosition() const noexcept { - return position; - } - - const SHQuaternion& SHRigidBodyComponent::GetOrientation() const noexcept - { - return orientation; + return rigidBody ? rigidBody->GetMotionState().position : SHVec3::Zero; } SHVec3 SHRigidBodyComponent::GetRotation() const noexcept { - return orientation.ToEuler(); + return rigidBody ? rigidBody->GetMotionState().orientation.ToEuler() : SHVec3::Zero; } /*-----------------------------------------------------------------------------------*/ - /* Setter Function Definitions */ + /* Setter Functions Definitions */ /*-----------------------------------------------------------------------------------*/ void SHRigidBodyComponent::SetType(Type newType) noexcept { - static constexpr int FLAG_POS = 8; - - if (type == newType) + if (newType == type) return; type = newType; - dirtyFlags |= 1U << FLAG_POS; + + if (rigidBody) + rigidBody->SetType(static_cast(newType)); } - void SHRigidBodyComponent::SetGravityEnabled(bool enableGravity) noexcept + void SHRigidBodyComponent::SetRigidBody(SHRigidBody* rb) noexcept { - static constexpr int FLAG_POS = 0; + rigidBody = rb; + } - if (type != Type::DYNAMIC) - { - SHLOG_WARNING("Cannot enable gravity of a non-dynamic object {}", GetEID()) - return; - } - - dirtyFlags |= 1U << FLAG_POS; - enableGravity ? flags |= 1U << FLAG_POS : flags &= ~(1U << FLAG_POS); + void SHRigidBodyComponent::SetIsGravityEnabled(bool enableGravity) noexcept + { + if (rigidBody) + rigidBody->SetGravityEnabled(enableGravity); } void SHRigidBodyComponent::SetIsAllowedToSleep(bool isAllowedToSleep) noexcept { - static constexpr int FLAG_POS = 1; + if (rigidBody) + rigidBody->SetSleepingEnabled(isAllowedToSleep); + } - if (type != Type::DYNAMIC) - { - SHLOG_WARNING("Cannot enable sleeping of a non-dynamic object {}", GetEID()) - return; - } - - dirtyFlags |= 1U << FLAG_POS; - isAllowedToSleep ? flags |= 1U << FLAG_POS : flags &= ~(1U << FLAG_POS); + void SHRigidBodyComponent::SetAutoMass(bool autoMass) noexcept + { + if (rigidBody) + rigidBody->SetAutoMassEnabled(autoMass); } void SHRigidBodyComponent::SetFreezePositionX(bool freezePositionX) noexcept { - static constexpr int FLAG_POS = 2; - - if (type == Type::STATIC) - { - SHLOG_WARNING("Cannot set linear constraints of a static object {}", GetEID()) - return; - } - - dirtyFlags |= 1U << FLAG_POS; - freezePositionX ? flags |= 1U << FLAG_POS : flags &= ~(1U << FLAG_POS); + if (rigidBody) + rigidBody->SetFreezePositionX(freezePositionX); } void SHRigidBodyComponent::SetFreezePositionY(bool freezePositionY) noexcept { - static constexpr int FLAG_POS = 3; - - if (type == Type::STATIC) - { - SHLOG_WARNING("Cannot set linear constraints of a static object {}", GetEID()) - return; - } - - dirtyFlags |= 1U << FLAG_POS; - freezePositionY ? flags |= 1U << FLAG_POS : flags &= ~(1U << FLAG_POS); + if (rigidBody) + rigidBody->SetFreezePositionY(freezePositionY); } void SHRigidBodyComponent::SetFreezePositionZ(bool freezePositionZ) noexcept { - static constexpr int FLAG_POS = 4; - - if (type == Type::STATIC) - { - SHLOG_WARNING("Cannot set linear constraints of a static object {}", GetEID()) - return; - } - - dirtyFlags |= 1U << FLAG_POS; - freezePositionZ ? flags |= 1U << FLAG_POS : flags &= ~(1U << FLAG_POS); + if (rigidBody) + rigidBody->SetFreezePositionZ(freezePositionZ); } void SHRigidBodyComponent::SetFreezeRotationX(bool freezeRotationX) noexcept { - static constexpr int FLAG_POS = 5; - - if (type == Type::STATIC) - { - SHLOG_WARNING("Cannot set angular constraints of a static object {}", GetEID()) - return; - } - - dirtyFlags |= 1U << FLAG_POS; - freezeRotationX ? flags |= 1U << FLAG_POS : flags &= ~(1U << FLAG_POS); + if (rigidBody) + rigidBody->SetFreezeRotationX(freezeRotationX); } void SHRigidBodyComponent::SetFreezeRotationY(bool freezeRotationY) noexcept { - static constexpr int FLAG_POS = 6; - - if (type == Type::STATIC) - { - SHLOG_WARNING("Cannot set angular constraints of a static object {}", GetEID()) - return; - } - - dirtyFlags |= 1U << FLAG_POS; - freezeRotationY ? flags |= 1U << FLAG_POS : flags &= ~(1U << FLAG_POS); + if (rigidBody) + rigidBody->SetFreezeRotationY(freezeRotationY); } void SHRigidBodyComponent::SetFreezeRotationZ(bool freezeRotationZ) noexcept { - static constexpr int FLAG_POS = 7; - - if (type == Type::STATIC) - { - SHLOG_WARNING("Cannot set angular constraints of a static object {}", GetEID()) - return; - } - - dirtyFlags |= 1U << FLAG_POS; - freezeRotationZ ? flags |= 1U << FLAG_POS : flags &= ~(1U << FLAG_POS); + if (rigidBody) + rigidBody->SetFreezeRotationZ(freezeRotationZ); } void SHRigidBodyComponent::SetInterpolate(bool allowInterpolation) noexcept { - static constexpr int FLAG_POS = 8; - allowInterpolation ? flags |= 1U << FLAG_POS : flags &= ~(1U << FLAG_POS); + interpolate = allowInterpolation; } - //void SHRigidBodyComponent::SetAutoMass(bool autoMass) noexcept - //{ - // static constexpr int FLAG_POS = 9; - // autoMass ? flags |= 1U << FLAG_POS : flags &= ~(1U << FLAG_POS); + void SHRigidBodyComponent::SetGravityScale(float gravityScale) noexcept + { + if (rigidBody) + rigidBody->SetGravityScale(gravityScale); + } - // dirtyFlags |= 1U << FLAG_POS; - //} - - //void SHRigidBodyComponent::SetMass(float newMass) noexcept - //{ - // static constexpr int FLAG_POS = 9; - - // if (newMass < 0.0f) - // return; - - // if (type != Type::DYNAMIC) - // { - // SHLOG_WARNING("Cannot set mass of a non-dynamic object {}", GetEID()) - // return; - // } - - // dirtyFlags |= 1U << FLAG_POS; - // mass = newMass; - - // // Turn off automass - // flags &= ~(1U << FLAG_POS); - //} + void SHRigidBodyComponent::SetMass(float newMass) noexcept + { + if (rigidBody) + rigidBody->SetMass(newMass); + } void SHRigidBodyComponent::SetDrag(float newDrag) noexcept { - static constexpr int FLAG_POS = 10; - - if (type != Type::DYNAMIC) - { - SHLOG_WARNING("Cannot set drag of a non-dynamic object {}", GetEID()) - return; - } - - dirtyFlags |= 1U << FLAG_POS; - drag = newDrag; + if (rigidBody) + rigidBody->SetLinearDrag(newDrag); } void SHRigidBodyComponent::SetAngularDrag(float newAngularDrag) noexcept { - static constexpr int FLAG_POS = 11; - - if (type != Type::DYNAMIC) - { - SHLOG_WARNING("Cannot set angular drag of a non-dynamic object {}", GetEID()) - return; - } - - dirtyFlags |= 1U << FLAG_POS; - angularDrag = newAngularDrag; + if (rigidBody) + rigidBody->SetAngularDrag(newAngularDrag); } void SHRigidBodyComponent::SetLinearVelocity(const SHVec3& newLinearVelocity) noexcept { - - if (type == Type::STATIC) - { - SHLOG_WARNING("Cannot set linear velocity of a static object {}", GetEID()) - return; - } - - auto* physicsObject = system->GetPhysicsObject(GetEID()); - if (!physicsObject) - { - SHLOGV_ERROR("Unable to retrieve physics object of Entity {}", GetEID()) - return; - } - physicsObject->GetRigidBody()->setLinearVelocity(newLinearVelocity); + if (rigidBody) + rigidBody->SetLinearVelocity(newLinearVelocity); } void SHRigidBodyComponent::SetAngularVelocity(const SHVec3& newAngularVelocity) noexcept { - static constexpr int FLAG_POS = 13; + if (rigidBody) + rigidBody->SetAngularVelocity(newAngularVelocity); + } - if (type == Type::STATIC) - { - SHLOG_WARNING("Cannot set angular velocity of a static object {}", GetEID()) - return; - } + /*-----------------------------------------------------------------------------------*/ + /* Member Function Definitions */ + /*-----------------------------------------------------------------------------------*/ - auto* physicsObject = system->GetPhysicsObject(GetEID()); - if (!physicsObject) + void SHRigidBodyComponent::AddForce(const SHVec3& force) const noexcept + { + if (rigidBody) + rigidBody->AddForce(force); + } + + void SHRigidBodyComponent::AddForceAtLocalPos(const SHVec3& force, const SHVec3& localPos) const noexcept + { + if (rigidBody) + rigidBody->AddForce(force, localPos); + } + + void SHRigidBodyComponent::AddForceAtWorldPos(const SHVec3& force, const SHVec3& worldPos) const noexcept + { + if (rigidBody) { - SHLOGV_ERROR("Unable to retrieve physics object of Entity {}", GetEID()) - return; + // Convert world pos into local space of the body + const SHVec3 LOCAL_POS = worldPos - rigidBody->GetWorldCentroid(); + rigidBody->AddForce(force, LOCAL_POS); } - physicsObject->GetRigidBody()->setAngularVelocity(newAngularVelocity); + } + + void SHRigidBodyComponent::AddRelativeForce(const SHVec3& relativeForce) const noexcept + { + if (rigidBody) + { + // Rotate force into world space + const SHVec3 FORCE = SHVec3::Rotate(relativeForce, rigidBody->GetMotionState().orientation); + rigidBody->AddForce(FORCE); + } + } + + void SHRigidBodyComponent::AddRelativeForceAtLocalPos(const SHVec3& relativeForce, const SHVec3& localPos) const noexcept + { + if (rigidBody) + { + // Rotate force into world space + const SHVec3 FORCE = SHVec3::Rotate(relativeForce, rigidBody->GetMotionState().orientation); + rigidBody->AddForce(FORCE, localPos); + } + } + + void SHRigidBodyComponent::AddRelativeForceAtWorldPos(const SHVec3& relativeForce, const SHVec3& worldPos) const noexcept + { + if (rigidBody) + { + // Rotate force into world space + const SHVec3 FORCE = SHVec3::Rotate(relativeForce, rigidBody->GetMotionState().orientation); + // Convert world pos into local space of the body + const SHVec3 LOCAL_POS = worldPos - rigidBody->GetWorldCentroid(); + + rigidBody->AddForce(FORCE, LOCAL_POS); + } + } + + void SHRigidBodyComponent::AddTorque(const SHVec3& torque) const noexcept + { + if (rigidBody) + rigidBody->AddTorque(torque); + } + + void SHRigidBodyComponent::AddRelativeTorque(const SHVec3& relativeTorque) const noexcept + { + if (rigidBody) + { + // Rotate force into world space + const SHVec3 TORQUE = SHVec3::Rotate(relativeTorque, rigidBody->GetMotionState().orientation); + rigidBody->AddTorque(TORQUE); + } + } + + void SHRigidBodyComponent::ClearForces() const noexcept + { + if (rigidBody) + rigidBody->ClearForces(); } /*-----------------------------------------------------------------------------------*/ @@ -413,81 +341,7 @@ namespace SHADE void SHRigidBodyComponent::OnCreate() { - auto* physicsSystem = SHSystemManager::GetSystem(); - if (!physicsSystem) - { - SHLOG_ERROR("Physics System does not exist to link with Physics Components!") - return; - } - - system = physicsSystem; - - // Sync with transform if one already exists - if (auto* transformComponent = SHComponentManager::GetComponent_s(GetEID()); transformComponent) - { - position = transformComponent->GetWorldPosition(); - orientation = transformComponent->GetWorldOrientation(); - } - } - - void SHRigidBodyComponent::AddForce(const SHVec3& force) const noexcept - { - if (auto* physicsObject = system->GetPhysicsObject(GetEID()); physicsObject) - physicsObject->GetRigidBody()->applyWorldForceAtCenterOfMass(force); - } - - void SHRigidBodyComponent::AddForceAtLocalPos(const SHVec3& force, const SHVec3& localPos) const noexcept - { - if (auto* physicsObject = system->GetPhysicsObject(GetEID()); physicsObject) - physicsObject->GetRigidBody()->applyWorldForceAtLocalPosition(force, localPos); - } - - void SHRigidBodyComponent::AddForceAtWorldPos(const SHVec3& force, const SHVec3& worldPos) const noexcept - { - if (auto* physicsObject = system->GetPhysicsObject(GetEID()); physicsObject) - physicsObject->GetRigidBody()->applyWorldForceAtWorldPosition(force, worldPos); - } - - void SHRigidBodyComponent::AddRelativeForce(const SHVec3& relativeForce) const noexcept - { - if (auto* physicsObject = system->GetPhysicsObject(GetEID()); physicsObject) - physicsObject->GetRigidBody()->applyLocalForceAtCenterOfMass(relativeForce); - } - - void SHRigidBodyComponent::AddRelativeForceAtLocalPos(const SHVec3& relativeForce, const SHVec3& localPos) const noexcept - { - if (auto* physicsObject = system->GetPhysicsObject(GetEID()); physicsObject) - physicsObject->GetRigidBody()->applyLocalForceAtLocalPosition(relativeForce, localPos); - } - - void SHRigidBodyComponent::AddRelativeForceAtWorldPos(const SHVec3& relativeForce, const SHVec3& worldPos) const noexcept - { - if (auto* physicsObject = system->GetPhysicsObject(GetEID()); physicsObject) - physicsObject->GetRigidBody()->applyLocalForceAtWorldPosition(relativeForce, worldPos); - } - - void SHRigidBodyComponent::AddTorque(const SHVec3& torque) const noexcept - { - if (auto* physicsObject = system->GetPhysicsObject(GetEID()); physicsObject) - physicsObject->GetRigidBody()->applyWorldTorque(torque); - } - - void SHRigidBodyComponent::AddRelativeTorque(const SHVec3& relativeTorque) const noexcept - { - if (auto* physicsObject = system->GetPhysicsObject(GetEID()); physicsObject) - physicsObject->GetRigidBody()->applyLocalTorque(relativeTorque); - } - - void SHRigidBodyComponent::ClearForces() const noexcept - { - if (auto* physicsObject = system->GetPhysicsObject(GetEID()); physicsObject) - physicsObject->GetRigidBody()->resetForce(); - } - - void SHRigidBodyComponent::ClearTorque() const noexcept - { - if (auto* physicsObject = system->GetPhysicsObject(GetEID()); physicsObject) - physicsObject->GetRigidBody()->resetTorque(); + } } // namespace SHADE @@ -505,18 +359,19 @@ RTTR_REGISTRATION ); registration::class_("RigidBody Component") - .property("Type" , &SHRigidBodyComponent::GetType , &SHRigidBodyComponent::SetType ) - //.property("Mass" , &SHRigidBodyComponent::GetMass , &SHRigidBodyComponent::SetMass ) - .property("Drag" , &SHRigidBodyComponent::GetDrag , &SHRigidBodyComponent::SetDrag ) - .property("Angular Drag" , &SHRigidBodyComponent::GetAngularDrag , &SHRigidBodyComponent::SetAngularDrag ) - .property("Use Gravity" , &SHRigidBodyComponent::IsGravityEnabled , &SHRigidBodyComponent::SetGravityEnabled ) - .property("Interpolate" , &SHRigidBodyComponent::IsInterpolating , &SHRigidBodyComponent::SetInterpolate ) - .property("Sleeping Enabled" , &SHRigidBodyComponent::IsAllowedToSleep , &SHRigidBodyComponent::SetIsAllowedToSleep) - //.property("Auto Mass" , &SHRigidBodyComponent::GetAutoMass , &SHRigidBodyComponent::SetAutoMass ) - .property("Freeze Position X" , &SHRigidBodyComponent::GetFreezePositionX , &SHRigidBodyComponent::SetFreezePositionX ) - .property("Freeze Position Y" , &SHRigidBodyComponent::GetFreezePositionY , &SHRigidBodyComponent::SetFreezePositionY ) - .property("Freeze Position Z" , &SHRigidBodyComponent::GetFreezePositionZ , &SHRigidBodyComponent::SetFreezePositionZ ) - .property("Freeze Rotation X" , &SHRigidBodyComponent::GetFreezeRotationX , &SHRigidBodyComponent::SetFreezeRotationX ) - .property("Freeze Rotation Y" , &SHRigidBodyComponent::GetFreezeRotationY , &SHRigidBodyComponent::SetFreezeRotationY ) - .property("Freeze Rotation Z" , &SHRigidBodyComponent::GetFreezeRotationZ , &SHRigidBodyComponent::SetFreezeRotationZ ); + .property("Type" , &SHRigidBodyComponent::GetType , &SHRigidBodyComponent::SetType ) + .property("Auto Mass" , &SHRigidBodyComponent::GetAutoMass , &SHRigidBodyComponent::SetAutoMass ) + .property("Mass" , &SHRigidBodyComponent::GetMass , &SHRigidBodyComponent::SetMass ) + .property("Drag" , &SHRigidBodyComponent::GetDrag , &SHRigidBodyComponent::SetDrag ) + .property("Angular Drag" , &SHRigidBodyComponent::GetAngularDrag , &SHRigidBodyComponent::SetAngularDrag ) + .property("Use Gravity" , &SHRigidBodyComponent::IsGravityEnabled , &SHRigidBodyComponent::SetIsGravityEnabled ) + .property("Gravity Scale" , &SHRigidBodyComponent::GetGravityScale , &SHRigidBodyComponent::SetGravityScale ) + .property("Interpolate" , &SHRigidBodyComponent::IsInterpolating , &SHRigidBodyComponent::SetInterpolate ) + .property("Sleeping Enabled" , &SHRigidBodyComponent::IsAllowedToSleep , &SHRigidBodyComponent::SetIsAllowedToSleep ) + .property("Freeze Position X" , &SHRigidBodyComponent::GetFreezePositionX , &SHRigidBodyComponent::SetFreezePositionX ) + .property("Freeze Position Y" , &SHRigidBodyComponent::GetFreezePositionY , &SHRigidBodyComponent::SetFreezePositionY ) + .property("Freeze Position Z" , &SHRigidBodyComponent::GetFreezePositionZ , &SHRigidBodyComponent::SetFreezePositionZ ) + .property("Freeze Rotation X" , &SHRigidBodyComponent::GetFreezeRotationX , &SHRigidBodyComponent::SetFreezeRotationX ) + .property("Freeze Rotation Y" , &SHRigidBodyComponent::GetFreezeRotationY , &SHRigidBodyComponent::SetFreezeRotationY ) + .property("Freeze Rotation Z" , &SHRigidBodyComponent::GetFreezeRotationZ , &SHRigidBodyComponent::SetFreezeRotationZ ); } \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Interface/SHRigidBodyComponent.h b/SHADE_Engine/src/Physics/Interface/SHRigidBodyComponent.h index 532b3312..1173c1d5 100644 --- a/SHADE_Engine/src/Physics/Interface/SHRigidBodyComponent.h +++ b/SHADE_Engine/src/Physics/Interface/SHRigidBodyComponent.h @@ -15,7 +15,7 @@ // Project Headers #include "ECS_Base/Components/SHComponent.h" #include "Math/Vector/SHVec3.h" -#include "Math/SHQuaternion.h" +#include "Physics/Dynamics/SHRigidBody.h" namespace SHADE { @@ -31,7 +31,7 @@ namespace SHADE /*---------------------------------------------------------------------------------*/ friend class SHPhysicsSystem; - friend class SHPhysicsObject; + friend struct SHPhysicsObject; public: /*---------------------------------------------------------------------------------*/ @@ -67,13 +67,13 @@ namespace SHADE /* Getter Functions */ /*---------------------------------------------------------------------------------*/ + [[nodiscard]] Type GetType () const noexcept; + [[nodiscard]] bool IsGravityEnabled () const noexcept; [[nodiscard]] bool IsAllowedToSleep () const noexcept; [[nodiscard]] bool IsInterpolating () const noexcept; - - [[nodiscard]] bool GetIsSleeping () const noexcept; - - [[nodiscard]] Type GetType () const noexcept; + [[nodiscard]] bool IsSleeping () const noexcept; + [[nodiscard]] bool GetAutoMass () const noexcept; [[nodiscard]] bool GetFreezePositionX () const noexcept; [[nodiscard]] bool GetFreezePositionY () const noexcept; @@ -82,8 +82,7 @@ namespace SHADE [[nodiscard]] bool GetFreezeRotationY () const noexcept; [[nodiscard]] bool GetFreezeRotationZ () const noexcept; - //[[nodiscard]] bool GetAutoMass () const noexcept; - + [[nodiscard]] float GetGravityScale () const noexcept; [[nodiscard]] float GetMass () const noexcept; [[nodiscard]] float GetDrag () const noexcept; [[nodiscard]] float GetAngularDrag () const noexcept; @@ -93,8 +92,7 @@ namespace SHADE [[nodiscard]] SHVec3 GetLinearVelocity () const noexcept; [[nodiscard]] SHVec3 GetAngularVelocity () const noexcept; - [[nodiscard]] const SHVec3& GetPosition () const noexcept; - [[nodiscard]] const SHQuaternion& GetOrientation () const noexcept; + [[nodiscard]] SHVec3 GetPosition () const noexcept; [[nodiscard]] SHVec3 GetRotation () const noexcept; /*---------------------------------------------------------------------------------*/ @@ -103,8 +101,12 @@ namespace SHADE void SetType (Type newType) noexcept; - void SetGravityEnabled (bool enableGravity) noexcept; + void SetRigidBody (SHRigidBody* rb) noexcept; + + void SetIsGravityEnabled (bool enableGravity) noexcept; void SetIsAllowedToSleep (bool isAllowedToSleep) noexcept; + void SetAutoMass (bool autoMass) noexcept; + void SetFreezePositionX (bool freezePositionX) noexcept; void SetFreezePositionY (bool freezePositionY) noexcept; void SetFreezePositionZ (bool freezePositionZ) noexcept; @@ -112,9 +114,9 @@ namespace SHADE void SetFreezeRotationY (bool freezeRotationY) noexcept; void SetFreezeRotationZ (bool freezeRotationZ) noexcept; void SetInterpolate (bool allowInterpolation) noexcept; - //void SetAutoMass (bool autoMass) noexcept; - //void SetMass (float newMass) noexcept; + void SetGravityScale (float gravityScale) noexcept; + void SetMass (float newMass) noexcept; void SetDrag (float newDrag) noexcept; void SetAngularDrag (float newAngularDrag) noexcept; @@ -137,33 +139,17 @@ namespace SHADE void AddRelativeTorque (const SHVec3& relativeTorque) const noexcept; void ClearForces () const noexcept; - void ClearTorque () const noexcept; private: /*---------------------------------------------------------------------------------*/ /* Data Members */ /*---------------------------------------------------------------------------------*/ - static constexpr size_t NUM_FLAGS = 8; - static constexpr size_t NUM_DIRTY_FLAGS = 12; - - Type type; - - uint16_t flags; // 0 0 0 0 0 0 am ip aZ aY aX lZ lY lX slp g - uint16_t dirtyFlags; // 0 0 0 0 aD d m t aZ aY aX lZ lY lX slp g - - float mass; - float drag; - float angularDrag; - - SHVec3 linearVelocity; - SHVec3 angularVelocity; - - SHPhysicsSystem* system; - - SHVec3 position; - SHQuaternion orientation; + Type type; + bool interpolate; + SHRigidBody* rigidBody; RTTR_ENABLE() }; + } // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/PhysicsObject/SHPhysicsObject.cpp b/SHADE_Engine/src/Physics/PhysicsObject/SHPhysicsObject.cpp deleted file mode 100644 index 71b08831..00000000 --- a/SHADE_Engine/src/Physics/PhysicsObject/SHPhysicsObject.cpp +++ /dev/null @@ -1,431 +0,0 @@ -/**************************************************************************************** - * \file SHPhysicsObject.cpp - * \author Diren D Bharwani, diren.dbharwani, 390002520 - * \brief Implementation for a Physics Object. - * - * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or - * disclosure of this file or its contents without the prior written consent - * of DigiPen Institute of Technology is prohibited. -****************************************************************************************/ - -#include - -// Primary Header -#include "SHPhysicsObject.h" - -// Project Headers -#include "ECS_Base/Managers/SHSystemManager.h" -#include "ECS_Base/Managers/SHComponentManager.h" -#include "Scene/SHSceneManager.h" - - -namespace SHADE -{ - /*-----------------------------------------------------------------------------------*/ - /* Constructors & Destructor Definitions */ - /*-----------------------------------------------------------------------------------*/ - - SHPhysicsObject::SHPhysicsObject(EntityID eid, rp3d::PhysicsCommon* physicsFactory, rp3d::PhysicsWorld* physicsWorld) noexcept - : entityID { eid } - , collidersActive { true } - , factory { physicsFactory } - , world { physicsWorld } - , rp3dBody { nullptr } - { - // Implicitly create a static body. - - const auto* TRANSFORM = SHComponentManager::GetComponent(eid); - - const rp3d::Transform RP3D_TRANSFORM { TRANSFORM->GetWorldPosition(), TRANSFORM->GetWorldOrientation() }; - - rp3dBody = world->createRigidBody(RP3D_TRANSFORM); - rp3dBody->setType(rp3d::BodyType::STATIC); - } - - SHPhysicsObject::~SHPhysicsObject() noexcept - { - factory = nullptr; - world = nullptr; - rp3dBody = nullptr; - } - - /*-----------------------------------------------------------------------------------*/ - /* Getter Function Definitions */ - /*-----------------------------------------------------------------------------------*/ - - SHVec3 SHPhysicsObject::GetPosition() const noexcept - { - return rp3dBody->getTransform().getPosition(); - } - - SHQuaternion SHPhysicsObject::GetOrientation() const noexcept - { - return rp3dBody->getTransform().getOrientation(); - } - - SHVec3 SHPhysicsObject::GetRotation() const noexcept - { - return SHQuaternion{ rp3dBody->getTransform().getOrientation() }.ToEuler(); - } - - rp3d::CollisionBody* SHPhysicsObject::GetCollisionBody() const noexcept - { - return rp3dBody; - } - - rp3d::RigidBody* SHPhysicsObject::GetRigidBody() const noexcept - { - return rp3dBody; - } - - /*-----------------------------------------------------------------------------------*/ - /* Setter Function Definitions */ - /*-----------------------------------------------------------------------------------*/ - - void SHPhysicsObject::SetStaticBody() const noexcept - { - if (!rp3dBody) - return; - - rp3dBody->setType(rp3d::BodyType::STATIC); - } - - /*-----------------------------------------------------------------------------------*/ - /* Public Function Member Definitions */ - /*-----------------------------------------------------------------------------------*/ - - int SHPhysicsObject::AddCollisionShape(int index) - { - // Get collider component - auto* colliderComponent = SHComponentManager::GetComponent_s(entityID); - if (!colliderComponent) - { - SHLOGV_ERROR("Unable to add Collision Shape to Entity {} due to Missing Collider Component!", entityID) - return -1; - } - - auto& collisionShape = colliderComponent->GetCollisionShape(index); - switch (collisionShape.GetType()) - { - // TODO(Diren): Add more collider shapes - - case SHCollisionShape::Type::BOX: - { - addBoxShape(collisionShape); - break; - } - - case SHCollisionShape::Type::SPHERE: - { - addSphereShape(collisionShape); - break; - } - default: break; - } - - auto* rp3dCollider = rp3dBody->getCollider(rp3dBody->getNbColliders() - 1); - syncColliderProperties(collisionShape, rp3dCollider); - - if (rp3dBody->getType() == rp3d::BodyType::DYNAMIC) - { - rp3dBody->updateMassPropertiesFromColliders(); - - if (auto* rigidBodyComponent = SHComponentManager::GetComponent_s(entityID); rigidBodyComponent) - rigidBodyComponent->mass = rp3dBody->getMass(); - } - - return index; - } - - void SHPhysicsObject::RemoveCollisionShape(int index) - { - const int NUM_COLLIDERS = static_cast(rp3dBody->getNbColliders()); - if (NUM_COLLIDERS == 0) - return; - - if (index < 0 || index >= NUM_COLLIDERS) - throw std::invalid_argument("Index out of range!"); - - auto* collider = rp3dBody->getCollider(index); - rp3dBody->removeCollider(collider); - - if (rp3dBody->getType() == rp3d::BodyType::DYNAMIC) - { - rp3dBody->updateMassPropertiesFromColliders(); - - auto* rigidBodyComponent = SHComponentManager::GetComponent_s(entityID); - if (rigidBodyComponent) - rigidBodyComponent->mass = rp3dBody->getMass(); - } - } - - void SHPhysicsObject::RemoveAllCollisionShapes() const noexcept - { - int numColliders = static_cast(rp3dBody->getNbColliders()); - if (numColliders == 0) - return; - - while (numColliders - 1 >= 0) - { - auto* collider = rp3dBody->getCollider(numColliders - 1); - rp3dBody->removeCollider(collider); - - --numColliders; - } - } - - void SHPhysicsObject::SyncRigidBody(SHRigidBodyComponent& component) const noexcept - { - // This state is synced in the pre-update routine - if (!rp3dBody->isActive()) - return; - - if (component.dirtyFlags == 0) - return; - - for (size_t i = 0; i < SHRigidBodyComponent::NUM_DIRTY_FLAGS; ++i) - { - if (const bool IS_DIRTY = component.dirtyFlags & (1U << i); IS_DIRTY) - { - switch (i) - { - case 0: // Gravity - { - const bool IS_ENABLED = component.flags & (1U << i); - rp3dBody->enableGravity(IS_ENABLED); - - break; - } - case 1: // Sleeping - { - const bool IS_ENABLED = component.flags & (1U << i); - rp3dBody->setIsAllowedToSleep(IS_ENABLED); - - break; - } - case 2: // Lock Position X - { - const bool IS_ENABLED = component.flags & (1U << i); - - auto positionLock = rp3dBody->getLinearLockAxisFactor(); - positionLock.x = IS_ENABLED ? 0.0f : 1.0f; - rp3dBody->setLinearLockAxisFactor(positionLock); - - break; - } - case 3: // Lock Position Y - { - const bool IS_ENABLED = component.flags & (1U << i); - - auto positionLock = rp3dBody->getLinearLockAxisFactor(); - positionLock.y = IS_ENABLED ? 0.0f : 1.0f; - rp3dBody->setLinearLockAxisFactor(positionLock); - - break; - } - case 4: // Lock Position Z - { - const bool IS_ENABLED = component.flags & (1U << i); - - auto positionLock = rp3dBody->getLinearLockAxisFactor(); - positionLock.z = IS_ENABLED ? 0.0f : 1.0f; - rp3dBody->setLinearLockAxisFactor(positionLock); - - break; - } - case 5: // Lock Rotation X - { - const bool IS_ENABLED = component.flags & (1U << i); - - auto rotationLock = rp3dBody->getAngularLockAxisFactor(); - rotationLock.x = IS_ENABLED ? 0.0f : 1.0f; - rp3dBody->setAngularLockAxisFactor(rotationLock); - - break; - } - case 6: // Lock Rotation Y - { - const bool IS_ENABLED = component.flags & (1U << i); - - auto rotationLock = rp3dBody->getAngularLockAxisFactor(); - rotationLock.y = IS_ENABLED ? 0.0f : 1.0f; - rp3dBody->setAngularLockAxisFactor(rotationLock); - - break; - } - case 7: // Lock Rotation Z - { - const bool IS_ENABLED = component.flags & (1U << i); - - auto rotationLock = rp3dBody->getAngularLockAxisFactor(); - rotationLock.z = IS_ENABLED ? 0.0f : 1.0f; - rp3dBody->setAngularLockAxisFactor(rotationLock); - - break; - } - case 8: // Type - { - rp3dBody->setType(static_cast(component.type)); - - break; - } - case 9: // Mass - { - //rp3dBody->setMass(component.mass); - - //if (component.GetAutoMass()) - //{ - // rp3dBody->updateMassPropertiesFromColliders(); - // component.mass = rp3dBody->getMass(); - //} - //else - //{ - // rp3dBody->setMass(component.mass); - // rp3dBody->updateLocalCenterOfMassFromColliders(); - // rp3dBody->updateLocalInertiaTensorFromColliders(); - //} - - break; - } - case 10: // Drag - { - rp3dBody->setLinearDamping(component.drag); - - break; - } - case 11: // Angular Drag - { - rp3dBody->setAngularDamping(component.angularDrag); - - break; - } - default: break; - } - } - } - - component.dirtyFlags = 0; - } - - void SHPhysicsObject::SyncColliders(SHColliderComponent& component) const noexcept - { - // This state is synced in the pre-update routine - if (!rp3dBody->isActive()) - return; - - const int NUM_SHAPES = static_cast(rp3dBody->getNbColliders()); - for (int i = 0; i < NUM_SHAPES; ++i) - { - auto& collisionShape = component.collisionShapes[i]; - - if (!collisionShape.dirty) - continue; - - switch (collisionShape.GetType()) - { - case SHCollisionShape::Type::BOX: syncBoxShape(i, collisionShape); break; - case SHCollisionShape::Type::SPHERE: syncSphereShape(i, collisionShape); break; - default: break; - } - - auto* rp3dCollider = rp3dBody->getCollider(i); - syncColliderProperties(collisionShape, rp3dCollider); - - collisionShape.dirty = false; - } - - // Set rigidbody mass if dynamic - auto* rigidBodyComponent = SHComponentManager::GetComponent_s(entityID); - if (rigidBodyComponent) - { - // This is generally expensive, will be optimised in the future with my own engine. - rp3dBody->updateMassPropertiesFromColliders(); - rigidBodyComponent->mass = rp3dBody->getMass(); - } - } - - /*-----------------------------------------------------------------------------------*/ - /* Private Function Member Definitions */ - /*-----------------------------------------------------------------------------------*/ - - void SHPhysicsObject::syncColliderProperties(const SHCollisionShape& collisionShape, rp3d::Collider* rp3dCollider) const noexcept - { - rp3dCollider->setIsTrigger(collisionShape.IsTrigger()); - - auto& rp3dMaterial = rp3dCollider->getMaterial(); - - rp3dMaterial.setFrictionCoefficient(collisionShape.GetFriction()); - rp3dMaterial.setBounciness(collisionShape.GetBounciness()); - rp3dMaterial.setMassDensity(collisionShape.GetDensity()); - - const unsigned short MASK_BITS = collisionShape.GetCollisionTag(); - rp3dCollider->setCollisionCategoryBits(MASK_BITS); - rp3dCollider->setCollideWithMaskBits(MASK_BITS); - } - - void SHPhysicsObject::addBoxShape(const SHCollisionShape& boxShape) const noexcept - { - const rp3d::Transform OFFSETS - { - boxShape.GetPositionOffset() - , boxShape.GetRotationOffset() - }; - - const auto* BOX = reinterpret_cast(boxShape.GetShape()); - rp3d::BoxShape* newBox = factory->createBoxShape(BOX->GetWorldExtents()); - - rp3dBody->addCollider(newBox, OFFSETS); - } - - void SHPhysicsObject::syncBoxShape(int index, const SHCollisionShape& boxShape) const noexcept - { - const auto* BOX = reinterpret_cast(boxShape.GetShape()); - - auto* rp3dCollider = rp3dBody->getCollider(index); - auto* rp3dBox = reinterpret_cast(rp3dCollider->getCollisionShape()); - - const rp3d::Transform OFFSETS - { - boxShape.GetPositionOffset() - , boxShape.GetRotationOffset() - }; - - rp3dCollider->setIsTrigger(boxShape.IsTrigger()); - rp3dCollider->setLocalToBodyTransform(OFFSETS); - - rp3dBox->setHalfExtents(BOX->GetWorldExtents()); - } - - void SHPhysicsObject::addSphereShape(const SHCollisionShape& sphereShape) const noexcept - { - const rp3d::Transform OFFSETS - { - sphereShape.GetPositionOffset() - , sphereShape.GetRotationOffset() - }; - - const auto* SPHERE = reinterpret_cast(sphereShape.GetShape()); - rp3d::SphereShape* newSphere = factory->createSphereShape(SPHERE->GetWorldRadius()); - - rp3dBody->addCollider(newSphere, OFFSETS); - } - - void SHPhysicsObject::syncSphereShape(int index, const SHCollisionShape& sphereShape) const noexcept - { - const auto* SPHERE = reinterpret_cast(sphereShape.GetShape()); - - auto* rp3dCollider = rp3dBody->getCollider(index); - auto* rp3dSphere = reinterpret_cast(rp3dCollider->getCollisionShape()); - - const rp3d::Transform OFFSETS - { - sphereShape.GetPositionOffset() - , sphereShape.GetRotationOffset() - }; - - rp3dCollider->setIsTrigger(sphereShape.IsTrigger()); - rp3dCollider->setLocalToBodyTransform(OFFSETS); - - rp3dSphere->setRadius(SPHERE->GetWorldRadius()); - } -} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/PhysicsObject/SHPhysicsObjectManager.cpp b/SHADE_Engine/src/Physics/PhysicsObject/SHPhysicsObjectManager.cpp deleted file mode 100644 index 7c111a2d..00000000 --- a/SHADE_Engine/src/Physics/PhysicsObject/SHPhysicsObjectManager.cpp +++ /dev/null @@ -1,309 +0,0 @@ -/**************************************************************************************** - * \file SHPhysicsObjectManager.cpp - * \author Diren D Bharwani, diren.dbharwani, 390002520 - * \brief Implementation for a Physics Object Manager. - * - * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or - * disclosure of this file or its contents without the prior written consent - * of DigiPen Institute of Technology is prohibited. -****************************************************************************************/ - -#include - -// Primary Header -#include "SHPhysicsObjectManager.h" - -// Project Headers -#include "ECS_Base/Managers/SHEntityManager.h" -#include "Tools/Utilities/SHUtilities.h" - -namespace SHADE -{ - /*-----------------------------------------------------------------------------------*/ - /* Static Data Member Definitions */ - /*-----------------------------------------------------------------------------------*/ - - SHPhysicsObjectManager::CommandFunctionPtr SHPhysicsObjectManager::componentFunc[3][2] - { - addRigidBody , addCollider , addCollisionShape - , removeRigidBody , removeCollider , removeCollisionShape - }; - - /*-----------------------------------------------------------------------------------*/ - /* Setter Function Definitions */ - /*-----------------------------------------------------------------------------------*/ - - void SHPhysicsObjectManager::SetFactory(rp3d::PhysicsCommon& physicsFactory) noexcept - { - factory = &physicsFactory; - } - - void SHPhysicsObjectManager::SetWorld(rp3d::PhysicsWorld* physicsWorld) noexcept - { - world = physicsWorld; - } - - /*-----------------------------------------------------------------------------------*/ - /* Getter Function Definitions */ - /*-----------------------------------------------------------------------------------*/ - - SHPhysicsObject* SHPhysicsObjectManager::GetPhysicsObject(EntityID eid) noexcept - { - const auto it = physicsObjects.find(eid); - if (it == physicsObjects.end()) - return nullptr; - - return &it->second; - } - - const SHPhysicsObjectManager::PhysicsObjectEntityMap SHPhysicsObjectManager::GetPhysicsObjects() const noexcept - { - return physicsObjects; - } - - /*-----------------------------------------------------------------------------------*/ - /* Public Function Member Definitions */ - /*-----------------------------------------------------------------------------------*/ - - void SHPhysicsObjectManager::AddRigidBody(EntityID eid) noexcept - { - const QueueCommand NEW_QUEUE_COMMAND - { - .eid = eid - , .command = QueueCommand::Command::ADD - , .component = PhysicsComponents::RIGID_BODY - }; - - commandQueue.push(NEW_QUEUE_COMMAND); - } - - void SHPhysicsObjectManager::AddCollider(EntityID eid) noexcept - { - const QueueCommand NEW_QUEUE_COMMAND - { - .eid = eid - , .command = QueueCommand::Command::ADD - , .component = PhysicsComponents::COLLIDER - }; - - commandQueue.push(NEW_QUEUE_COMMAND); - } - - void SHPhysicsObjectManager::AddCollisionShape(EntityID eid, int shapeIndex) noexcept - { - const QueueCommand NEW_QUEUE_COMMAND - { - .eid = eid - , .command = QueueCommand::Command::ADD - , .component = PhysicsComponents::COLLISION_SHAPE - , .shapeIndex = shapeIndex - }; - - commandQueue.push(NEW_QUEUE_COMMAND); - } - - void SHPhysicsObjectManager::RemoveRigidBody(EntityID eid) noexcept - { - const QueueCommand NEW_QUEUE_COMMAND - { - .eid = eid - , .command = QueueCommand::Command::REMOVE - , .component = PhysicsComponents::RIGID_BODY - }; - - commandQueue.push(NEW_QUEUE_COMMAND); - } - - void SHPhysicsObjectManager::RemoveCollider(EntityID eid) noexcept - { - const QueueCommand NEW_QUEUE_COMMAND - { - .eid = eid - , .command = QueueCommand::Command::REMOVE - , .component = PhysicsComponents::COLLIDER - }; - - commandQueue.push(NEW_QUEUE_COMMAND); - } - - void SHPhysicsObjectManager::RemoveCollisionShape(EntityID eid, int shapeIndex) noexcept - { - const QueueCommand NEW_QUEUE_COMMAND - { - .eid = eid - , .command = QueueCommand::Command::REMOVE - , .component = PhysicsComponents::COLLISION_SHAPE - , .shapeIndex = shapeIndex - }; - - commandQueue.push(NEW_QUEUE_COMMAND); - } - - void SHPhysicsObjectManager::UpdateCommands() - { - if (commandQueue.empty()) - return; - - while (!commandQueue.empty()) - { - const QueueCommand COMMAND = commandQueue.front(); - commandQueue.pop(); - - // Check validity of command - if (COMMAND.command == QueueCommand::Command::INVALID || COMMAND.component == PhysicsComponents::INVALID) - continue; - - // Get physics components - const PhysicsComponentGroup COMPONENT_GROUP - { - .eid = COMMAND.eid - , .rigidBodyComponent = SHComponentManager::GetComponent_s(COMMAND.eid) - , .colliderComponent = SHComponentManager::GetComponent_s(COMMAND.eid) - }; - - // Delete any object that is missing both components - // We infer that a remove command has been pushed for these, but we will ignore those if both components have already been removed. - if (!COMPONENT_GROUP.rigidBodyComponent && !COMPONENT_GROUP.colliderComponent) - { - destroyPhysicsObject(COMMAND.eid); - wakeAllObjects(); - continue; - } - - // Find the physics Object. If none found and attempting to add, create an object. - SHPhysicsObject* physicsObject = GetPhysicsObject(COMMAND.eid); - if (!physicsObject && COMMAND.command == QueueCommand::Command::ADD) - physicsObject = createPhysicsObject(COMMAND.eid); - - componentFunc[SHUtilities::ConvertEnum(COMMAND.command)][SHUtilities::ConvertEnum(COMMAND.component)](COMMAND, physicsObject, COMPONENT_GROUP); - - // If any removal was done, wake all objects - if (COMMAND.command == QueueCommand::Command::REMOVE) - wakeAllObjects(); - } - } - - void SHPhysicsObjectManager::RemoveAllObjects() - { - // Destroy all objects and clear - for (auto& physicsObject : physicsObjects | std::views::values) - { - world->destroyRigidBody(physicsObject.GetRigidBody()); - physicsObject.rp3dBody = nullptr; - } - - physicsObjects.clear(); - } - - /*-----------------------------------------------------------------------------------*/ - /* Private Function Member Definitions */ - /*-----------------------------------------------------------------------------------*/ - - SHPhysicsObject* SHPhysicsObjectManager::createPhysicsObject(EntityID eid) noexcept - { - // Force transforms to sync - SHVec3 worldPos = SHVec3::Zero; - SHQuaternion worldRot = SHQuaternion::Identity; - - const SHTransformComponent* TRANSFORM = nullptr; - if (SHEntityManager::IsValidEID(eid)) - TRANSFORM = SHComponentManager::GetComponent_s(eid); - - if (TRANSFORM) - { - worldPos = TRANSFORM->GetWorldPosition(); - worldRot = TRANSFORM->GetWorldOrientation(); - } - - const rp3d::Transform RP3D_TRANSFORM{ worldPos, worldRot }; - - auto& newPhysicsObject = physicsObjects.emplace(eid, SHPhysicsObject{ eid, factory, world }).first->second; - newPhysicsObject.GetRigidBody()->setTransform(RP3D_TRANSFORM); - newPhysicsObject.prevTransform = RP3D_TRANSFORM; - - return &newPhysicsObject; - } - - void SHPhysicsObjectManager::destroyPhysicsObject(EntityID eid) noexcept - { - const auto ITER = physicsObjects.find(eid); - if (ITER == physicsObjects.end()) - { - // Assume the object has already been successfully destroyed - return; - } - - world->destroyRigidBody(ITER->second.GetRigidBody()); - ITER->second.rp3dBody = nullptr; - - physicsObjects.erase(eid); - } - - void SHPhysicsObjectManager::addRigidBody(const QueueCommand&, SHPhysicsObject* physicsObject, const PhysicsComponentGroup& componentGroup) - { - SHASSERT(physicsObject != nullptr, "Valid physics object required to add body!") - - if (!componentGroup.rigidBodyComponent) - { - SHLOG_ERROR("Entity {} is missing a Rigidbody Component. Unable to update physics object!", componentGroup.eid) - return; - } - - // A static rigid body is implicitly created on creation of a physics object. - // Nothing is needed here. - } - - void SHPhysicsObjectManager::addCollider(const QueueCommand&, SHPhysicsObject* physicsObject, const PhysicsComponentGroup& componentGroup) - { - SHASSERT(physicsObject != nullptr, "Valid physics object required to add collider!") - - if (!componentGroup.colliderComponent) - { - SHLOG_ERROR("Entity {} is missing a Rigidbody Component. Unable to update physics object!", componentGroup.eid) - return; - } - - //const int NUM_SHAPES = static_cast(componentGroup.colliderComponent->GetCollisionShapes().size()); - //for (int i = 0; i < NUM_SHAPES; ++i) - // physicsObject->AddCollisionShape(i); - - physicsObject->SyncColliders(*componentGroup.colliderComponent); - } - - void SHPhysicsObjectManager::removeRigidBody(const QueueCommand&, SHPhysicsObject* physicsObject, const PhysicsComponentGroup& componentGroup) - { - SHASSERT(physicsObject != nullptr, "Valid physics object required to remove body!") - - if (componentGroup.colliderComponent) - physicsObject->SetStaticBody(); - } - - void SHPhysicsObjectManager::removeCollider(const QueueCommand&, SHPhysicsObject* physicsObject, const PhysicsComponentGroup&) - { - SHASSERT(physicsObject != nullptr, "Valid physics object required to remove collider!") - - physicsObject->RemoveAllCollisionShapes(); - } - - void SHPhysicsObjectManager::addCollisionShape(const QueueCommand& command, SHPhysicsObject* physicsObject, const PhysicsComponentGroup&) - { - SHASSERT(physicsObject != nullptr, "Valid physics object required to add collision shape!") - - physicsObject->AddCollisionShape(command.shapeIndex); - } - - void SHPhysicsObjectManager::removeCollisionShape(const QueueCommand& command, SHPhysicsObject* physicsObject, const PhysicsComponentGroup&) - { - SHASSERT(physicsObject != nullptr, "Valid physics object required to remove collision shape!") - - physicsObject->RemoveCollisionShape(command.shapeIndex); - } - - void SHPhysicsObjectManager::wakeAllObjects() noexcept - { - for (auto& physicsObject : physicsObjects | std::views::values) - physicsObject.GetRigidBody()->setIsSleeping(false); - } - - -} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/PhysicsObject/SHPhysicsObjectManager.h b/SHADE_Engine/src/Physics/PhysicsObject/SHPhysicsObjectManager.h deleted file mode 100644 index f41c62ad..00000000 --- a/SHADE_Engine/src/Physics/PhysicsObject/SHPhysicsObjectManager.h +++ /dev/null @@ -1,181 +0,0 @@ -/**************************************************************************************** - * \file SHPhysicsObjectManager.h - * \author Diren D Bharwani, diren.dbharwani, 390002520 - * \brief Interface for a Physics Object Manager. - * - * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or - * disclosure of this file or its contents without the prior written consent - * of DigiPen Institute of Technology is prohibited. -****************************************************************************************/ - -#pragma once - -#include -#include - -#include - -// Project Headers -#include "SHPhysicsObject.h" - -namespace SHADE -{ - /*-----------------------------------------------------------------------------------*/ - /* Type Definitions */ - /*-----------------------------------------------------------------------------------*/ - - class SH_API SHPhysicsObjectManager - { - private: - /*---------------------------------------------------------------------------------*/ - /* Friends */ - /*---------------------------------------------------------------------------------*/ - - friend class SHPhysicsSystem; - - /*---------------------------------------------------------------------------------*/ - /* Type Definitions */ - /*---------------------------------------------------------------------------------*/ - - using PhysicsObjectEntityMap = std::unordered_map; - - public: - - /*---------------------------------------------------------------------------------*/ - /* Type Definitions */ - /*---------------------------------------------------------------------------------*/ - - enum class PhysicsComponents - { - RIGID_BODY - , COLLIDER - , COLLISION_SHAPE - - , TOTAL - , INVALID = -1 - }; - - /*---------------------------------------------------------------------------------*/ - /* Constructors & Destructor */ - /*---------------------------------------------------------------------------------*/ - - SHPhysicsObjectManager () = default; - ~SHPhysicsObjectManager () = default; - - SHPhysicsObjectManager (const SHPhysicsObjectManager&) = delete; - SHPhysicsObjectManager (SHPhysicsObjectManager&&) = delete; - - /*---------------------------------------------------------------------------------*/ - /* Operator Overloads */ - /*---------------------------------------------------------------------------------*/ - - SHPhysicsObjectManager& operator=(const SHPhysicsObjectManager&) = delete; - SHPhysicsObjectManager& operator=(SHPhysicsObjectManager&&) = delete; - - /*---------------------------------------------------------------------------------*/ - /* Getter Functions */ - /*---------------------------------------------------------------------------------*/ - - [[nodiscard]] SHPhysicsObject* GetPhysicsObject (EntityID eid) noexcept; - [[nodiscard]] const PhysicsObjectEntityMap GetPhysicsObjects () const noexcept; - - /*---------------------------------------------------------------------------------*/ - /* Setter Functions */ - /*---------------------------------------------------------------------------------*/ - - void SetFactory (rp3d::PhysicsCommon& physicsFactory) noexcept; - void SetWorld (rp3d::PhysicsWorld* physicsWorld) noexcept; - - /*---------------------------------------------------------------------------------*/ - /* Function Members */ - /*---------------------------------------------------------------------------------*/ - - void AddRigidBody (EntityID eid) noexcept; - void AddCollider (EntityID eid) noexcept; - void AddCollisionShape (EntityID eid, int shapeIndex) noexcept; - - void RemoveRigidBody (EntityID eid) noexcept; - void RemoveCollider (EntityID eid) noexcept; - void RemoveCollisionShape (EntityID eid, int shapeIndex) noexcept; - - void UpdateCommands (); - void RemoveAllObjects (); - - private: - /*---------------------------------------------------------------------------------*/ - /* Type Definitions */ - /*---------------------------------------------------------------------------------*/ - - struct QueueCommand - { - /*-------------------------------------------------------------------------------*/ - /* Type Definitions */ - /*-------------------------------------------------------------------------------*/ - - enum class Command - { - ADD - , REMOVE - - , INVALID = -1 - }; - - /*-------------------------------------------------------------------------------*/ - /* Data Members */ - /*-------------------------------------------------------------------------------*/ - - EntityID eid = MAX_EID; - Command command = Command::INVALID; - PhysicsComponents component = PhysicsComponents::INVALID; - int shapeIndex = -1; // Only used when adding & removing collision shapes - }; - - struct PhysicsComponentGroup - { - public: - - /*-------------------------------------------------------------------------------*/ - /* Data Members */ - /*-------------------------------------------------------------------------------*/ - - - EntityID eid = MAX_EID; - SHRigidBodyComponent* rigidBodyComponent = nullptr; - SHColliderComponent* colliderComponent = nullptr; - }; - - using CommandFunctionPtr = void(*)(const QueueCommand&, SHPhysicsObject*, const PhysicsComponentGroup&); - - /*---------------------------------------------------------------------------------*/ - /* Data Members */ - /*---------------------------------------------------------------------------------*/ - - static CommandFunctionPtr componentFunc[3][2]; // 3 components, 2 commands - - rp3d::PhysicsCommon* factory = nullptr; - rp3d::PhysicsWorld* world = nullptr; - - PhysicsObjectEntityMap physicsObjects; - std::queue commandQueue; - - /*---------------------------------------------------------------------------------*/ - /* Function Members */ - /*---------------------------------------------------------------------------------*/ - - SHPhysicsObject* createPhysicsObject (EntityID eid) noexcept; - void destroyPhysicsObject (EntityID eid) noexcept; - - void wakeAllObjects () noexcept; - - static void addRigidBody (const QueueCommand& command, SHPhysicsObject* physicsObject, const PhysicsComponentGroup& componentGroup); - static void addCollider (const QueueCommand& command, SHPhysicsObject* physicsObject, const PhysicsComponentGroup& componentGroup); - static void removeRigidBody (const QueueCommand& command, SHPhysicsObject* physicsObject, const PhysicsComponentGroup& componentGroup); - static void removeCollider (const QueueCommand& command, SHPhysicsObject* physicsObject, const PhysicsComponentGroup& componentGroup); - - static void addCollisionShape (const QueueCommand& command, SHPhysicsObject* physicsObject, const PhysicsComponentGroup& componentGroup); - static void removeCollisionShape (const QueueCommand& command, SHPhysicsObject* physicsObject, const PhysicsComponentGroup& componentGroup); - - - }; - -} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/SHPhysicsConstants.h b/SHADE_Engine/src/Physics/SHPhysicsConstants.h new file mode 100644 index 00000000..b680515e --- /dev/null +++ b/SHADE_Engine/src/Physics/SHPhysicsConstants.h @@ -0,0 +1,50 @@ +/**************************************************************************************** + * \file SHPhysicsConstants.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Definitions for constants used in physics simulations + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +// Project Includes +#include "Math/SHMathHelpers.h" + +namespace SHADE +{ + /** + * @brief + * The number of simulations length for every real world unit meter.
+ * Modify this to change the global scale of the simulation. + */ + static constexpr float SHPHYSICS_LENGTHS_PER_UNIT_METER = 1.0f; + + /** + * @brief + * Linear Collision & Constraint tolerance. + */ + static constexpr float SHPHYSICS_LINEAR_SLOP = 0.01f * SHPHYSICS_LENGTHS_PER_UNIT_METER; + + /** + * @brief + * Velocity threshold for restitution to be applied. + */ + static constexpr float SHPHYSICS_RESTITUTION_THRESHOLD = 1.0f; + + /** + * @brief + * Scaling factor to control how fast overlaps are resolved.
+ * 1 is ideal for instant correction, but values close to 1 can lead to overshoot. + */ + static constexpr float SHPHYSICS_BAUMGARTE = 0.2f; + + /** + * @brief + * Distance threshold to consider two contacts as the same. + */ + static constexpr float SHPHYSICS_SAME_CONTACT_DISTANCE = 0.01; + +} diff --git a/SHADE_Engine/src/Physics/SHPhysicsEvents.h b/SHADE_Engine/src/Physics/SHPhysicsEvents.h index ae48a75b..a192ec3f 100644 --- a/SHADE_Engine/src/Physics/SHPhysicsEvents.h +++ b/SHADE_Engine/src/Physics/SHPhysicsEvents.h @@ -11,8 +11,7 @@ #pragma once // Project Headers -#include "Interface/SHCollisionShape.h" - +#include "Collision/Shapes/SHCollisionShape.h" namespace SHADE { @@ -28,9 +27,16 @@ namespace SHADE }; struct SHPhysicsColliderRemovedEvent + { + EntityID entityID; + SHCollisionShape::Type colliderType; + int colliderIndex; + }; + + struct SHColliderOnDebugDrawEvent { EntityID entityID; - int colliderIndex; + bool debugDrawState; }; diff --git a/SHADE_Engine/src/Physics/SHPhysicsWorld.cpp b/SHADE_Engine/src/Physics/SHPhysicsWorld.cpp deleted file mode 100644 index 85e76702..00000000 --- a/SHADE_Engine/src/Physics/SHPhysicsWorld.cpp +++ /dev/null @@ -1,71 +0,0 @@ -/**************************************************************************************** - * \file SHPhysicsWorld.cpp - * \author Diren D Bharwani, diren.dbharwani, 390002520 - * \brief Implementation for a Physics World. - * - * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or - * disclosure of this file or its contents without the prior written consent - * of DigiPen Institute of Technology is prohibited. -****************************************************************************************/ - -#include - -// Primary Header -#include "SHPhysicsWorld.h" - -namespace SHADE -{ - /*-----------------------------------------------------------------------------------*/ - /* Constructors & Destructor Definitions */ - /*-----------------------------------------------------------------------------------*/ - - SHPhysicsWorldState::SHPhysicsWorldState() noexcept - : world { nullptr } - {} - - /*-----------------------------------------------------------------------------------*/ - /* Public Function Members Definitions */ - /*-----------------------------------------------------------------------------------*/ - - void SHPhysicsWorldState::CreateWorld(rp3d::PhysicsCommon& factory) - { - rp3d::PhysicsWorld::WorldSettings rp3dWorldSettings; - rp3dWorldSettings.gravity = settings.gravity; - rp3dWorldSettings.defaultVelocitySolverNbIterations = settings.numVelocitySolverIterations; - rp3dWorldSettings.defaultPositionSolverNbIterations = settings.numPositionSolverIterations; - rp3dWorldSettings.isSleepingEnabled = settings.sleepingEnabled; - - // These are my preferred default values. QoL for modifying these. - rp3dWorldSettings.defaultBounciness = 0.0f; - rp3dWorldSettings.defaultFrictionCoefficient = 0.4f; - - world = factory.createPhysicsWorld(rp3dWorldSettings); - world->setContactsPositionCorrectionTechnique(rp3d::ContactsPositionCorrectionTechnique::SPLIT_IMPULSES); - } - - void SHPhysicsWorldState::DestroyWorld(rp3d::PhysicsCommon& factory) - { - if (!world) - return; - - factory.destroyPhysicsWorld(world); - world = nullptr; - } - - void SHPhysicsWorldState::UpdateSettings() const noexcept - { - if (!world) - { - SHLOGV_ERROR("Unable to update Physics World settings without creating a world!") - return; - } - - world->setGravity(settings.gravity); - world->setNbIterationsVelocitySolver(settings.numVelocitySolverIterations); - world->setNbIterationsPositionSolver(settings.numPositionSolverIterations); - world->enableSleeping(settings.sleepingEnabled); - } - - - -} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/System/Routines/SHPhysicsDebugDrawRoutine.cpp b/SHADE_Engine/src/Physics/System/Routines/SHPhysicsDebugDrawRoutine.cpp new file mode 100644 index 00000000..69317e59 --- /dev/null +++ b/SHADE_Engine/src/Physics/System/Routines/SHPhysicsDebugDrawRoutine.cpp @@ -0,0 +1,114 @@ +/**************************************************************************************** + * \file SHPhysicsDebugDrawRutine.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for the Physics Debut Draw Routine + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "Physics/System/SHPhysicsDebugDrawSystem.h" + +// Project Headers +#include "ECS_Base/Managers/SHSystemManager.h" +#include "Graphics/MiddleEnd/Interface/SHDebugDrawSystem.h" +#include "Math/Transform/SHTransformComponent.h" +#include "Physics/System/SHPhysicsSystem.h" +#include "Tools/Utilities/SHUtilities.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHPhysicsDebugDrawSystem::PhysicsDebugDraw::PhysicsDebugDraw() + : SHSystemRoutine { "Physics Debug-Draw", true } + {} + + /*-----------------------------------------------------------------------------------*/ + /* Public Function Member Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHPhysicsDebugDrawSystem::PhysicsDebugDraw::Execute(double) noexcept + { + auto* physicsDebugDrawSystem = reinterpret_cast(GetSystem()); + + if (!physicsDebugDrawSystem->IsDebugDrawActive()) + return; + + auto* debugDrawSystem = SHSystemManager::GetSystem(); + + const bool DRAW_COLLIDERS = physicsDebugDrawSystem->GetFlagState(DebugDrawFlags::COLLIDERS); + const bool DRAW_CONTACTS = physicsDebugDrawSystem->GetFlagState(DebugDrawFlags::CONTACTS); + const bool DRAW_RAYCASTS = physicsDebugDrawSystem->GetFlagState(DebugDrawFlags::RAYCASTS); + const bool DRAW_BROADPHASE = physicsDebugDrawSystem->GetFlagState(DebugDrawFlags::BROADPHASE); + + // If draw all colliders is active, get all colliders from the dense set and draw. + // Else we check if any colliders have been flagged for drawing. + if (DRAW_COLLIDERS) + { + const auto& COLLIDER_COMPONENT_DENSE = SHComponentManager::GetDense(); + for (const auto& COLLIDER_COMPONENT : COLLIDER_COMPONENT_DENSE) + { + const auto* COLLIDER = COLLIDER_COMPONENT.GetCollider(); + drawCollider(debugDrawSystem, *COLLIDER); + } + } + else if (!physicsDebugDrawSystem->collidersToDraw.empty()) + { + for (const auto EID : physicsDebugDrawSystem->collidersToDraw) + { + const auto* COLLIDER = SHComponentManager::GetComponent(EID)->GetCollider(); + drawCollider(debugDrawSystem, *COLLIDER); + } + } + + auto* physicsSystem = SHSystemManager::GetSystem(); + if (!physicsSystem) + return; + + if (DRAW_CONTACTS) + { + const SHColour& CONTACT_COLOUR = physicsDebugDrawSystem->DEBUG_DRAW_COLOURS[SHUtilities::ConvertEnum(Colours::CONTACT)]; + + const auto& CONTACT_POINTS = physicsSystem->physicsWorld->GetContactPoints(); + for (auto& contactPoint : CONTACT_POINTS) + { + const SHMatrix TRS = SHMatrix::Transform(contactPoint.position, SHQuaternion::Identity, SHVec3{ 0.1f }); + debugDrawSystem->DrawCube(TRS, CONTACT_COLOUR); + debugDrawSystem->DrawLine(contactPoint.position, contactPoint.position + contactPoint.normal * 0.5f, CONTACT_COLOUR, true); + } + } + + if (DRAW_RAYCASTS) + { + const SHColour& RAY_COLOUR = physicsDebugDrawSystem->DEBUG_DRAW_COLOURS[SHUtilities::ConvertEnum(Colours::RAYCAST)]; + + const auto& RAYS = physicsSystem->raycastHits; + for (const auto& hit : RAYS) + debugDrawSystem->DrawLine(hit.start, hit.end, RAY_COLOUR, true); + + // Clear rays for the physics system + physicsSystem->raycastHits.clear(); + } + + if (DRAW_BROADPHASE) + { + const SHColour& AABB_COLOUR = physicsDebugDrawSystem->DEBUG_DRAW_COLOURS[SHUtilities::ConvertEnum(Colours::BROADPHASE)]; + + const auto& BROADPHASE_AABBS = physicsSystem->collisionSpace->GetBroadphaseAABBs(); + for (auto& aabb : BROADPHASE_AABBS) + { + // Compute AABB Transform + const SHMatrix TRS = SHMatrix::Transform(aabb.GetCenter(), SHQuaternion::Identity, aabb.GetExtents() * 2.0f); + debugDrawSystem->DrawWireCube(TRS, AABB_COLOUR); + } + } + } + +} // namespace SHADE diff --git a/SHADE_Engine/src/Physics/System/Routines/SHPhysicsPostUpdateRoutine.cpp b/SHADE_Engine/src/Physics/System/Routines/SHPhysicsPostUpdateRoutine.cpp new file mode 100644 index 00000000..a08b943b --- /dev/null +++ b/SHADE_Engine/src/Physics/System/Routines/SHPhysicsPostUpdateRoutine.cpp @@ -0,0 +1,104 @@ +/**************************************************************************************** + * \file SHPhysicsPostUpdateRoutine.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for the Physics Post-Update Routine + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "Physics/System/SHPhysicsSystem.h" + +// Project Headers +#include "ECS_Base/Managers/SHSystemManager.h" +#include "Math/Transform/SHTransformComponent.h" +#include "Scene/SHSceneManager.h" +#include "Scripting/SHScriptEngine.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHPhysicsSystem::PhysicsPostUpdate::PhysicsPostUpdate() + : SHSystemRoutine { "Physics Post-Update", false } + {} + + /*-----------------------------------------------------------------------------------*/ + /* Public Function Member Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHPhysicsSystem::PhysicsPostUpdate::Execute(double) noexcept + { + auto* physicsSystem = reinterpret_cast(GetSystem()); + auto* scriptingSystem = SHSystemManager::GetSystem(); + + if (scriptingSystem == nullptr) + { + SHLOGV_ERROR("Unable to invoke collision and trigger script events due to missing SHScriptEngine!"); + } + + const float FACTOR = static_cast(physicsSystem->interpolationFactor); + + // Interpolate transforms for rendering. + // Only rigid bodies can move due to physics, so we run through the rigid body component dense set. + if (physicsSystem->worldUpdated) + { + const auto& RIGIDBODY_DENSE = SHComponentManager::GetDense(); + for (auto& rigidBodyComponent : RIGIDBODY_DENSE) + { + const EntityID EID = rigidBodyComponent.GetEID(); + + // Skip missing transforms + auto* transformComponent = SHComponentManager::GetComponent_s(EID); + if (!transformComponent) + continue; + + // Skip invalid bodies (Should not occur) + if (!rigidBodyComponent.rigidBody) + continue; + + // Skip inactive bodies + const bool IS_ACTIVE = SHSceneManager::CheckNodeAndComponentsActive(EID); + if (!IS_ACTIVE) + continue; + + const SHMotionState& MOTION_STATE = rigidBodyComponent.rigidBody->GetMotionState(); + + // Skip objects that have not moved + if (!MOTION_STATE) + continue; + + if (rigidBodyComponent.IsInterpolating()) + { + const SHVec3 RENDER_POSITION = MOTION_STATE.InterpolatePositions(FACTOR); + const SHQuaternion RENDER_ORIENTATION = MOTION_STATE.InterpolateOrientations(FACTOR); + + transformComponent->SetWorldPosition(RENDER_POSITION); + transformComponent->SetWorldOrientation(RENDER_ORIENTATION); + } + else + { + transformComponent->SetWorldPosition(MOTION_STATE.position); + transformComponent->SetWorldOrientation(MOTION_STATE.orientation); + } + + /* + * TODO: Test if the scene graph transforms abides by setting world position. Collisions will ignore the scene graph hierarchy. + */ + } + } + + + + // Collision & Trigger messages + if (scriptingSystem != nullptr) + scriptingSystem->ExecuteCollisionFunctions(); + } + +} // namespace SHADE diff --git a/SHADE_Engine/src/Physics/System/Routines/SHPhysicsPreUpdateRoutine.cpp b/SHADE_Engine/src/Physics/System/Routines/SHPhysicsPreUpdateRoutine.cpp new file mode 100644 index 00000000..3f2de93f --- /dev/null +++ b/SHADE_Engine/src/Physics/System/Routines/SHPhysicsPreUpdateRoutine.cpp @@ -0,0 +1,94 @@ +/**************************************************************************************** + * \file SHPhysicsPreUpdateRoutine.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for the Physics Pre-Update Routine + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "Physics/System/SHPhysicsSystem.h" + +// Project Headers +#include "ECS_Base/Managers/SHComponentManager.h" +#include "Math/Transform/SHTransformComponent.h" +#include "Scene/SHSceneManager.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHPhysicsSystem::PhysicsPreUpdate::PhysicsPreUpdate() + : SHSystemRoutine { "Physics Pre-Update", true } + {} + + /*-----------------------------------------------------------------------------------*/ + /* Public Function Member Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHPhysicsSystem::PhysicsPreUpdate::Execute(double) noexcept + { + auto* physicsSystem = reinterpret_cast(GetSystem()); + + // Get all physics objects & sync transforms + auto& physicsObjects = physicsSystem->physicsObjectManager.GetPhysicsObjects(); + for (auto& [entityID, physicsObject] : physicsObjects) + { + const auto* TRANSFORM_COMPONENT = SHComponentManager::GetComponent_s(entityID); + // Assume transform is always active + const bool UPDATE_TRANSFORM = TRANSFORM_COMPONENT && TRANSFORM_COMPONENT->HasChanged(); + + // We assume that all engine components and physics object components have been successfully linked + + if (physicsObject.rigidBody) + { + const bool IS_ACTIVE = SHSceneManager::CheckNodeAndComponentsActive(entityID); + const bool RIGIDBODY_ACTIVE = physicsObject.rigidBody->IsActive(); + + if (IS_ACTIVE != RIGIDBODY_ACTIVE) + physicsObject.rigidBody->SetIsActive(IS_ACTIVE); + + if (UPDATE_TRANSFORM) + { + const SHVec3& WORLD_POS = TRANSFORM_COMPONENT->GetWorldPosition(); + const SHQuaternion& WORLD_ROT = TRANSFORM_COMPONENT->GetWorldOrientation(); + + SHMotionState& motionState = physicsObject.rigidBody->GetMotionState(); + motionState.ForcePosition(WORLD_POS); + motionState.ForceOrientation(WORLD_ROT); + } + } + + if (physicsObject.collider) + { + const bool IS_ACTIVE = SHSceneManager::CheckNodeAndComponentsActive(entityID); + const bool COLLIDER_ACTIVE = physicsObject.collider->IsActive(); + + if (IS_ACTIVE != COLLIDER_ACTIVE) + physicsObject.collider->SetIsActive(IS_ACTIVE); + + if (UPDATE_TRANSFORM) + { + const SHVec3& WORLD_POS = TRANSFORM_COMPONENT->GetWorldPosition(); + const SHQuaternion& WORLD_ROT = TRANSFORM_COMPONENT->GetWorldOrientation(); + const SHVec3& WORLD_SCL = TRANSFORM_COMPONENT->GetWorldScale(); + + physicsObject.collider->SetPosition(WORLD_POS); + physicsObject.collider->SetOrientation(WORLD_ROT); + physicsObject.collider->SetScale(WORLD_SCL); + + physicsObject.collider->Update(); + } + } + } + + physicsSystem->collisionSpace->UpdateBroadphase(); + } + +} // namespace SHADE diff --git a/SHADE_Engine/src/Physics/System/Routines/SHPhysicsUpdateRoutine.cpp b/SHADE_Engine/src/Physics/System/Routines/SHPhysicsUpdateRoutine.cpp new file mode 100644 index 00000000..6ae53b31 --- /dev/null +++ b/SHADE_Engine/src/Physics/System/Routines/SHPhysicsUpdateRoutine.cpp @@ -0,0 +1,66 @@ +/**************************************************************************************** + * \file SHPhysicsUpdateRoutine.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for the Physics Update Routine + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "Physics/System/SHPhysicsSystem.h" + +// Project Headers +#include "ECS_Base/Managers/SHSystemManager.h" +#include "Scripting/SHScriptEngine.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHPhysicsSystem::PhysicsUpdate::PhysicsUpdate() + : SHFixedSystemRoutine { DEFAULT_FIXED_STEP, "Physics Update", false } + {} + + /*-----------------------------------------------------------------------------------*/ + /* Public Function Member Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHPhysicsSystem::PhysicsUpdate::Execute(double dt) noexcept + { + auto* physicsSystem = reinterpret_cast(GetSystem()); + + auto* scriptEngine = SHSystemManager::GetSystem(); + if (!scriptEngine) + { + SHLOGV_ERROR("Unable to invoke FixedUpdate() on scripts due to missing ScriptEngine!") + } + + const double FIXED_DT = physicsSystem->fixedDT; + accumulatedTime += dt; + + int count = 0; + while (accumulatedTime > FIXED_DT) + { + if (scriptEngine) + scriptEngine->ExecuteFixedUpdates(); + + if (physicsSystem->physicsWorld) + physicsSystem->physicsWorld->Step(static_cast(FIXED_DT)); + + accumulatedTime -= FIXED_DT; + ++count; + } + + stats.numSteps = count; + physicsSystem->worldUpdated = count > 0; + + physicsSystem->interpolationFactor = physicsSystem->worldUpdated ? accumulatedTime / FIXED_DT : 0.0; + } + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/System/SHPhysicsDebugDrawSystem.cpp b/SHADE_Engine/src/Physics/System/SHPhysicsDebugDrawSystem.cpp index 96af5e39..ae25216f 100644 --- a/SHADE_Engine/src/Physics/System/SHPhysicsDebugDrawSystem.cpp +++ b/SHADE_Engine/src/Physics/System/SHPhysicsDebugDrawSystem.cpp @@ -13,79 +13,60 @@ // Primary Header #include "SHPhysicsDebugDrawSystem.h" -// Project Headers +// Project Header #include "ECS_Base/Managers/SHSystemManager.h" -#include "Editor/SHEditor.h" -#include "Scene/SHSceneManager.h" +#include "Math/Transform/SHTransformComponent.h" +#include "Physics/SHPhysicsEvents.h" +#include "Tools/Utilities/SHUtilities.h" namespace SHADE { - /*-----------------------------------------------------------------------------------*/ - /* Static Data Member Definitions */ - /*-----------------------------------------------------------------------------------*/ - - const SHPhysicsDebugDrawSystem::DebugDrawFunction SHPhysicsDebugDrawSystem::drawFunctions[NUM_FLAGS] = + const SHColour SHPhysicsDebugDrawSystem::DEBUG_DRAW_COLOURS[SHUtilities::ConvertEnum(Colours::COUNT)] { - drawColliders - , drawColliderAABBs - , drawBroadPhaseAABBs - , drawContactPoints - , drawContactNormals - , drawRaycasts + SHColour::GREEN // Colliders + , SHColour::PURPLE // Triggers + , SHColour::RED // Contacts + , SHColour::ORANGE // Raycasts + , SHColour::CYAN // Broadphase }; - SHVec3 SHPhysicsDebugDrawSystem::boxVertices[NUM_BOX_VERTICES]; - /*-----------------------------------------------------------------------------------*/ /* Constructors & Destructor Definitions */ /*-----------------------------------------------------------------------------------*/ SHPhysicsDebugDrawSystem::SHPhysicsDebugDrawSystem() noexcept - : debugDrawFlags { 0 } - , physicsSystem { nullptr } + : flags { 0 } { - debugColours[SHUtilities::ConvertEnum(DebugDrawFlags::COLLIDER)] = SHColour::GREEN; - debugColours[SHUtilities::ConvertEnum(DebugDrawFlags::COLLIDER_AABB)] = SHColour::YELLOW; - debugColours[SHUtilities::ConvertEnum(DebugDrawFlags::BROAD_PHASE_AABB)] = SHColour::CYAN; - debugColours[SHUtilities::ConvertEnum(DebugDrawFlags::CONTACT_POINTS)] = SHColour::RED; - debugColours[SHUtilities::ConvertEnum(DebugDrawFlags::CONTACT_NORMALS)] = SHColour::RED; - debugColours[SHUtilities::ConvertEnum(DebugDrawFlags::RAYCASTS)] = SHColour::ORANGE; + collidersToDraw.clear(); } - SHPhysicsDebugDrawSystem::PhysicsDebugDrawRoutine::PhysicsDebugDrawRoutine() - : SHSystemRoutine { "Physics Debug Draw", true } - {} - /*-----------------------------------------------------------------------------------*/ /* Getter Function Definitions */ /*-----------------------------------------------------------------------------------*/ - bool SHPhysicsDebugDrawSystem::GetDebugDrawFlag(DebugDrawFlags flag) const noexcept + bool SHPhysicsDebugDrawSystem::IsDebugDrawActive() const noexcept { - const auto INT_FLAG = SHUtilities::ConvertEnum(flag); - if (INT_FLAG < 0 || INT_FLAG >= NUM_FLAGS) - { - SHLOG_ERROR("Invalid Debug Draw Flag Passed {} in. Unable to get debug draw state!", INT_FLAG) - return false; - } + return flags & ACTIVE_FLAG; + } - return debugDrawFlags & 1U << SHUtilities::ConvertEnum(flag); + bool SHPhysicsDebugDrawSystem::GetFlagState(DebugDrawFlags flag) const noexcept + { + const uint8_t ENUM_VALUE = SHUtilities::ConvertEnum(flag); + return flags & ENUM_VALUE; } /*-----------------------------------------------------------------------------------*/ /* Setter Function Definitions */ /*-----------------------------------------------------------------------------------*/ - void SHPhysicsDebugDrawSystem::SetDebugDrawFlag(DebugDrawFlags flag, bool value) noexcept + void SHPhysicsDebugDrawSystem::SetFlagState(DebugDrawFlags flag, bool state) noexcept { - const auto INT_FLAG = SHUtilities::ConvertEnum(flag); - if (INT_FLAG < 0 || INT_FLAG >= NUM_FLAGS) - { - SHLOG_ERROR("Invalid Debug Draw Flag Passed {} in. Unable to set debug draw state!", INT_FLAG) - return; - } + const uint8_t ENUM_VALUE = SHUtilities::ConvertEnum(flag); + state ? flags |= ENUM_VALUE : flags &= ~ENUM_VALUE; - value ? (debugDrawFlags |= 1U << INT_FLAG) : (debugDrawFlags &= ~(1U << INT_FLAG)); + // If no other debug drawing state is active, turn active off. Otherwise, we maintain + // the active state. + flags == ACTIVE_FLAG ? flags = 0 : flags |= ACTIVE_FLAG; } /*-----------------------------------------------------------------------------------*/ @@ -96,240 +77,76 @@ namespace SHADE { SystemFamily::GetID(); - SHASSERT(physicsSystem == nullptr, "Non-existent physics system attached to the physics debug draw system!") - physicsSystem = SHSystemManager::GetSystem(); + // Register collider draw event + const std::shared_ptr EVENT_RECEIVER = std::make_shared>(this, &SHPhysicsDebugDrawSystem::onColliderDraw); + const ReceiverPtr EVENT_RECEIVER_PTR = std::dynamic_pointer_cast(EVENT_RECEIVER); - // Generate shapes - generateBox(); + SHEventManager::SubscribeTo(SH_PHYSICS_COLLIDER_DRAW_EVENT, EVENT_RECEIVER_PTR); } void SHPhysicsDebugDrawSystem::Exit() { - physicsSystem = nullptr; + } - void SHPhysicsDebugDrawSystem::PhysicsDebugDrawRoutine::Execute(double) noexcept + void SHPhysicsDebugDrawSystem::AddRaycast(const SHRay& ray, const SHPhysicsRaycastResult& result) noexcept { - auto* system = reinterpret_cast(GetSystem()); - - auto* debugDrawSystem = SHSystemManager::GetSystem(); - if (debugDrawSystem == nullptr) - { - SHLOG_ERROR("Unable to get a debug draw system for Physics Debug Drawing!") - return; - } - - rp3d::DebugRenderer* rp3dRenderer = nullptr; - if (system->physicsSystem->worldState.world) - rp3dRenderer = &system->physicsSystem->worldState.world->getDebugRenderer(); - - for (int i = 0; i < SHUtilities::ConvertEnum(DebugDrawFlags::NUM_FLAGS); ++i) - { - const bool DRAW = (system->debugDrawFlags & (1U << i)) > 0; - if (DRAW) - { - drawFunctions[i](debugDrawSystem, rp3dRenderer); - } - else - { - if (rp3dRenderer && (i == 3 || i == 4)) - { - rp3dRenderer->setIsDebugItemDisplayed(reactphysics3d::DebugRenderer::DebugItem::CONTACT_POINT, false); - rp3dRenderer->setIsDebugItemDisplayed(reactphysics3d::DebugRenderer::DebugItem::CONTACT_NORMAL, false); - } - } - - } - - // Automatically clear the container of raycasts despite debug drawing state - // TODO(Diren): Move this somewhere else - system->physicsSystem->raycaster.ClearFrame(); + } /*-----------------------------------------------------------------------------------*/ /* Private Function Member Definitions */ /*-----------------------------------------------------------------------------------*/ - void SHPhysicsDebugDrawSystem::drawColliders(SHDebugDrawSystem* debugRenderer, rp3d::DebugRenderer* rp3dRenderer) noexcept + SHEventHandle SHPhysicsDebugDrawSystem::onColliderDraw(SHEventPtr onColliderDrawEvent) { - const auto& COLLIDER_SET = SHComponentManager::GetDense(); - for (const auto& COLLIDER : COLLIDER_SET) - { - // Skip inactive colliders - if (!SHSceneManager::CheckNodeAndComponentsActive(COLLIDER.GetEID())) - continue; + const auto& EVENT_DATA = reinterpret_cast*>(onColliderDrawEvent.get())->data; - for (auto& collisionShape : COLLIDER.GetCollisionShapes()) + // Add to the container to draw all colliders + if (EVENT_DATA->debugDrawState) + { + if (collidersToDraw.empty()) + flags |= ACTIVE_FLAG; + + collidersToDraw.emplace(EVENT_DATA->entityID); + } + else + { + collidersToDraw.erase(EVENT_DATA->entityID); + + // if no colliders queued for drawing and no other debug drawing is enabled, disable debug drawing + if (collidersToDraw.empty() && flags == ACTIVE_FLAG) + flags = 0; + } + + return onColliderDrawEvent.get()->handle; + } + + void SHPhysicsDebugDrawSystem::drawCollider(SHDebugDrawSystem* debugDrawSystem, const SHCollider& collider) noexcept + { + for (const auto* SHAPE : collider.GetCollisionShapes()) + { + const SHColour& DRAW_COLOUR = DEBUG_DRAW_COLOURS[SHUtilities::ConvertEnum(SHAPE->IsTrigger() ? Colours::TRIGGER : Colours::COLLIDER)]; + + switch (SHAPE->GetType()) { - switch (collisionShape.GetType()) + case SHCollisionShape::Type::SPHERE: { - case SHCollisionShape::Type::BOX: debugDrawBox(debugRenderer, COLLIDER, collisionShape); break; - case SHCollisionShape::Type::SPHERE: debugDrawSphere(debugRenderer, COLLIDER, collisionShape); break; - default: break; + debugDrawSystem->DrawWireSphere(SHAPE->GetTRS(), DRAW_COLOUR, true); + break; } + case SHCollisionShape::Type::BOX: + { + debugDrawSystem->DrawWireCube(SHAPE->GetTRS(), DRAW_COLOUR, true); + break; + } + case SHCollisionShape::Type::CAPSULE: + { + break; + } + default: break; } } } - void SHPhysicsDebugDrawSystem::drawColliderAABBs(SHDebugDrawSystem* debugRenderer, rp3d::DebugRenderer* rp3dRenderer) noexcept - { - - } - - void SHPhysicsDebugDrawSystem::drawBroadPhaseAABBs(SHDebugDrawSystem* debugRenderer, rp3d::DebugRenderer* rp3dRenderer) noexcept - { - - } - - void SHPhysicsDebugDrawSystem::drawContactPoints(SHDebugDrawSystem* debugRenderer, rp3d::DebugRenderer* rp3dRenderer) noexcept - { - #ifdef SHEDITOR - - const auto* EDITOR = SHSystemManager::GetSystem(); - if (EDITOR && EDITOR->editorState != SHEditor::State::STOP) - { - rp3dRenderer->setIsDebugItemDisplayed(rp3d::DebugRenderer::DebugItem::CONTACT_POINT, true); - const int NUM_TRIS = static_cast(rp3dRenderer->getNbTriangles()); - if (NUM_TRIS == 0) - return; - - const auto& TRI_ARRAY = rp3dRenderer->getTrianglesArray(); - for (int i = 0; i < NUM_TRIS; ++i) - debugRenderer->DrawTri(TRI_ARRAY[i].point1, TRI_ARRAY[i].point2, TRI_ARRAY[i].point3, SHColour::RED); - } - - #else - - rp3dRenderer->setIsDebugItemDisplayed(rp3d::DebugRenderer::DebugItem::CONTACT_POINT, true); - const int NUM_TRIS = static_cast(rp3dRenderer->getNbTriangles()); - if (NUM_TRIS == 0) - return; - - const auto& TRI_ARRAY = rp3dRenderer->getTrianglesArray(); - for (int i = 0; i < NUM_TRIS; ++i) - debugRenderer->DrawTri(TRI_ARRAY[i].point1, TRI_ARRAY[i].point2, TRI_ARRAY[i].point3, SHColour::RED); - - #endif - } - - void SHPhysicsDebugDrawSystem::drawContactNormals(SHDebugDrawSystem* debugRenderer, rp3d::DebugRenderer* rp3dRenderer) noexcept - { - #ifdef SHEDITOR - const auto* EDITOR = SHSystemManager::GetSystem(); - if (EDITOR && EDITOR->editorState != SHEditor::State::STOP) - { - rp3dRenderer->setIsDebugItemDisplayed(rp3d::DebugRenderer::DebugItem::CONTACT_NORMAL, true); - const int NUM_LINES = static_cast(rp3dRenderer->getNbLines()); - if (NUM_LINES == 0) - return; - - const auto& LINE_ARRAY = rp3dRenderer->getLinesArray(); - for (int i = 0; i < NUM_LINES; ++i) - debugRenderer->DrawLine(LINE_ARRAY[i].point1, LINE_ARRAY[i].point2, SHColour::RED); - } - - #else - - rp3dRenderer->setIsDebugItemDisplayed(rp3d::DebugRenderer::DebugItem::CONTACT_NORMAL, true); - const int NUM_LINES = static_cast(rp3dRenderer->getNbLines()); - if (NUM_LINES == 0) - return; - - const auto& LINE_ARRAY = rp3dRenderer->getLinesArray(); - for (int i = 0; i < NUM_LINES; ++i) - debugRenderer->DrawLine(LINE_ARRAY[i].point1, LINE_ARRAY[i].point2, SHColour::RED); - - #endif - } - - void SHPhysicsDebugDrawSystem::drawRaycasts(SHDebugDrawSystem* debugRenderer, rp3d::DebugRenderer* rp3dRenderer) noexcept - { - auto* physicsSystem = SHSystemManager::GetSystem(); - if (!physicsSystem) - { - SHLOG_ERROR("Unable to retrieve physics system for debug drawing raycasts!") - return; - } - - const SHColour& RAY_COLOUR = SHColour::ORANGE; - - // Draw all raycast pairs - for (const auto& [ray, raycastResult] : physicsSystem->raycaster.GetRaycasts()) - { - // If infinity, it is an infinite raycast. If not, render the distance in raycastResult. - // Ignore the hit variable as it will always correspond to the length of the raycast, hit or miss. - const float RENDER_DIST = raycastResult.distance == std::numeric_limits::infinity() ? SHRay::MAX_RAYCAST_DIST : raycastResult.distance; - const SHVec3 END_POS = ray.position + (ray.direction * RENDER_DIST); - - debugRenderer->DrawLine(ray.position, END_POS, RAY_COLOUR); - } - } - - - void SHPhysicsDebugDrawSystem::generateBox() noexcept - { - boxVertices[0] = { 0.5f, 0.5f, -0.5f }; // TOP_RIGHT_BACK - boxVertices[1] = { -0.5f, 0.5f, -0.5f }; // TOP_LEFT_BACK - boxVertices[2] = { 0.5f, -0.5f, -0.5f }; // BTM_RIGHT_BACK - boxVertices[3] = { -0.5f, -0.5f, -0.5f }; // BTM_LEFT_BACK - boxVertices[4] = { 0.5f, 0.5f, 0.5f }; // TOP_RIGHT_FRONT - boxVertices[5] = { -0.5f, 0.5f, 0.5f }; // TOP_LEFT_FRONT - boxVertices[6] = { 0.5f, -0.5f, 0.5f }; // BTM_RIGHT_FRONT - boxVertices[7] = { -0.5f, -0.5f, 0.5f }; // BTM_LEFT_FRONT - } - - void SHPhysicsDebugDrawSystem::debugDrawBox(SHDebugDrawSystem* debugRenderer, const SHColliderComponent& colliderComponent, const SHCollisionShape& collisionShape) noexcept - { - auto* BOX = reinterpret_cast(collisionShape.GetShape()); - - // Calculate final position & orientation - const SHVec3 COLLIDER_POS = colliderComponent.GetPosition(); - const SHVec3 BOX_POS = collisionShape.GetPositionOffset(); - const SHQuaternion COLLIDER_ROT = colliderComponent.GetOrientation(); - const SHQuaternion BOX_ROT = SHQuaternion::FromEuler(collisionShape.GetRotationOffset()); - - - const SHMatrix COLLIDER_TR = SHMatrix::Rotate(COLLIDER_ROT) * SHMatrix::Translate(COLLIDER_POS); - const SHMatrix BOX_TRS = SHMatrix::Scale(BOX->GetWorldExtents() * 2.0f) * SHMatrix::Rotate(BOX_ROT) * SHMatrix::Translate(BOX_POS); - - const SHMatrix FINAL_TRS = BOX_TRS * COLLIDER_TR; - - const SHColour COLLIDER_COLOUR = collisionShape.IsTrigger() ? SHColour::PURPLE : SHColour::GREEN; - - std::array transformedVertices; - for (uint32_t i = 0; i < NUM_BOX_VERTICES / 2; ++i) - { - const uint32_t IDX1 = i; - const uint32_t IDX2 = i + NUM_BOX_VERTICES / 2; - - transformedVertices[IDX1] = SHVec3::Transform(boxVertices[IDX1], FINAL_TRS); - transformedVertices[IDX2] = SHVec3::Transform(boxVertices[IDX2], FINAL_TRS); - - // Draw 4 line to connect the quads - debugRenderer->DrawLine(transformedVertices[IDX1], transformedVertices[IDX2], COLLIDER_COLOUR); - } - - // A, B, C, D - std::array backQuad { transformedVertices[0], transformedVertices[1], transformedVertices[3], transformedVertices[2] }; - debugRenderer->DrawLineLoop(backQuad.begin(), backQuad.end(), COLLIDER_COLOUR); - - // E, F, G, H - std::array frontQuad { transformedVertices[4], transformedVertices[5], transformedVertices[7], transformedVertices[6] }; - debugRenderer->DrawLineLoop(frontQuad.begin(), frontQuad.end(), COLLIDER_COLOUR); - } - - void SHPhysicsDebugDrawSystem::debugDrawSphere(SHDebugDrawSystem* debugRenderer, const SHColliderComponent& colliderComponent, const SHCollisionShape& collisionShape) noexcept - { - auto* SPHERE = reinterpret_cast(collisionShape.GetShape()); - - const SHColour COLLIDER_COLOUR = collisionShape.IsTrigger() ? SHColour::PURPLE : SHColour::GREEN; - - // Calculate final position & orientation - const SHQuaternion FINAL_ROT = colliderComponent.GetOrientation() * SHQuaternion::FromEuler(collisionShape.GetRotationOffset()); - const SHMatrix TR = SHMatrix::Rotate(FINAL_ROT) * SHMatrix::Translate(colliderComponent.GetPosition()); - - /* #KWFix */ - //debugRenderer->DrawSphere(COLLIDER_COLOUR, SHVec3::Transform(collisionShape.GetPositionOffset(), TR), SPHERE->GetWorldRadius()); - } - } // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/System/SHPhysicsDebugDrawSystem.h b/SHADE_Engine/src/Physics/System/SHPhysicsDebugDrawSystem.h index dc703092..336dff0c 100644 --- a/SHADE_Engine/src/Physics/System/SHPhysicsDebugDrawSystem.h +++ b/SHADE_Engine/src/Physics/System/SHPhysicsDebugDrawSystem.h @@ -10,14 +10,18 @@ #pragma once -#include +#include // Project Headers +#include "ECS_Base/Entity/SHEntity.h" +#include "ECS_Base/System/SHSystem.h" #include "ECS_Base/System/SHSystemRoutine.h" +#include "Events/SHEvent.h" #include "Graphics/MiddleEnd/Interface/SHDebugDrawSystem.h" -#include "Math/SHColour.h" -#include "SHPhysicsSystem.h" -#include "Tools/Utilities/SHUtilities.h" +#include "Physics/Collision/SHCollider.h" +#include "Physics/Collision/SHPhysicsRaycastResult.h" +#include "Physics/Collision/Shapes/SHSphere.h" + namespace SHADE { @@ -28,63 +32,55 @@ namespace SHADE class SH_API SHPhysicsDebugDrawSystem final : public SHSystem { public: - /*---------------------------------------------------------------------------------*/ - /* Type Definitions */ - /*---------------------------------------------------------------------------------*/ - enum class DebugDrawFlags + enum class DebugDrawFlags : uint8_t { - COLLIDER - , COLLIDER_AABB - , BROAD_PHASE_AABB - , CONTACT_POINTS - , CONTACT_NORMALS - , RAYCASTS - - , NUM_FLAGS + COLLIDERS = 0x02 + , CONTACTS = 0x04 + , RAYCASTS = 0x08 + , BROADPHASE = 0x10 }; /*---------------------------------------------------------------------------------*/ /* Constructors & Destructor */ /*---------------------------------------------------------------------------------*/ - SHPhysicsDebugDrawSystem() noexcept; + SHPhysicsDebugDrawSystem () noexcept; + ~SHPhysicsDebugDrawSystem() noexcept = default; /*---------------------------------------------------------------------------------*/ /* Getter Functions */ /*---------------------------------------------------------------------------------*/ - bool GetDebugDrawFlag(DebugDrawFlags flag) const noexcept; - + [[nodiscard]] bool IsDebugDrawActive () const noexcept; + [[nodiscard]] bool GetFlagState (DebugDrawFlags flag) const noexcept; /*---------------------------------------------------------------------------------*/ /* Setter Functions */ /*---------------------------------------------------------------------------------*/ - void SetDebugDrawFlag(DebugDrawFlags flag, bool value) noexcept; + void SetFlagState (DebugDrawFlags flag, bool state) noexcept; /*---------------------------------------------------------------------------------*/ - /* Function Members */ + /* Member Functions */ /*---------------------------------------------------------------------------------*/ - void Init() override; - void Exit() override; + void Init () override; + void Exit () override; + + void AddRaycast (const SHRay& ray, const SHPhysicsRaycastResult& result) noexcept; /*---------------------------------------------------------------------------------*/ /* System Routines */ /*---------------------------------------------------------------------------------*/ - class SH_API PhysicsDebugDrawRoutine final : public SHSystemRoutine + /** + * @brief + * If the editor is enabled, this routine invokes debug drawing for colliders and collision information. + */ + class SH_API PhysicsDebugDraw final : public SHSystemRoutine { public: - /*-------------------------------------------------------------------------------*/ - /* Constructors & Destructor */ - /*-------------------------------------------------------------------------------*/ - - PhysicsDebugDrawRoutine(); - - /*-------------------------------------------------------------------------------*/ - /* Function Members */ - /*-------------------------------------------------------------------------------*/ + PhysicsDebugDraw(); void Execute(double dt) noexcept override; }; @@ -93,46 +89,59 @@ namespace SHADE /* Type Definitions */ /*---------------------------------------------------------------------------------*/ - using DebugDrawFunction = void(*)(SHDebugDrawSystem*, rp3d::DebugRenderer*) noexcept; + union DebugDrawInfo + { + struct Contact + { + SHVec3 worldPos; + SHVec3 normal; + } contact; + + struct Raycast + { + SHVec3 start; + SHVec3 end; + } raycast; + }; + + using Colliders = std::unordered_set; + using Raycasts = std::vector; + using Contacts = std::vector; + + enum class Colours + { + COLLIDER + , TRIGGER + , CONTACT + , RAYCAST + , BROADPHASE + + , COUNT + }; /*---------------------------------------------------------------------------------*/ /* Data Members */ /*---------------------------------------------------------------------------------*/ - static constexpr int NUM_FLAGS = SHUtilities::ConvertEnum(DebugDrawFlags::NUM_FLAGS); - static const DebugDrawFunction drawFunctions[NUM_FLAGS]; + static constexpr uint8_t ACTIVE_FLAG = 0x01; - // SHAPES INFO + static const SHColour DEBUG_DRAW_COLOURS[static_cast(Colours::COUNT)]; - static constexpr size_t NUM_BOX_VERTICES = 8; - static SHVec3 boxVertices[NUM_BOX_VERTICES]; + // 0 0 0 drawBroadphase drawRaycasts drawContacts drawAllColliders debugDrawActive + uint8_t flags; + + Colliders collidersToDraw; + + /*---------------------------------------------------------------------------------*/ + /* Member Functions */ + /*---------------------------------------------------------------------------------*/ + + SHEventHandle onColliderDraw(SHEventPtr onColliderDrawEvent); + + static void drawCollider (SHDebugDrawSystem* debugDrawSystem, const SHCollider& collider) noexcept; + static void drawRaycast (SHDebugDrawSystem* debugDrawSystem, const DebugDrawInfo::Raycast& raycastInfo) noexcept; - - uint8_t debugDrawFlags; - SHPhysicsSystem* physicsSystem; - SHColour debugColours[NUM_FLAGS]; - - /*---------------------------------------------------------------------------------*/ - /* Function Members */ - /*---------------------------------------------------------------------------------*/ - - // Generic Draw Functions - - static void drawColliders (SHDebugDrawSystem* debugRenderer, rp3d::DebugRenderer* rp3dRenderer) noexcept; - static void drawColliderAABBs (SHDebugDrawSystem* debugRenderer, rp3d::DebugRenderer* rp3dRenderer) noexcept; - static void drawBroadPhaseAABBs (SHDebugDrawSystem* debugRenderer, rp3d::DebugRenderer* rp3dRenderer) noexcept; - static void drawContactPoints (SHDebugDrawSystem* debugRenderer, rp3d::DebugRenderer* rp3dRenderer) noexcept; - static void drawContactNormals (SHDebugDrawSystem* debugRenderer, rp3d::DebugRenderer* rp3dRenderer) noexcept; - static void drawRaycasts (SHDebugDrawSystem* debugRenderer, rp3d::DebugRenderer* rp3dRenderer) noexcept; - - // Shape Generation Functions - - static void generateBox () noexcept; - - // Shape Draw Functions - - static void debugDrawBox (SHDebugDrawSystem* debugRenderer, const SHColliderComponent& colliderComponent, const SHCollisionShape& collisionShape) noexcept; - static void debugDrawSphere (SHDebugDrawSystem* debugRenderer, const SHColliderComponent& colliderComponent, const SHCollisionShape& collisionShape) noexcept; }; + } // namespace SHADE diff --git a/SHADE_Engine/src/Physics/System/SHPhysicsSystem.cpp b/SHADE_Engine/src/Physics/System/SHPhysicsSystem.cpp index 768c9b77..97b555af 100644 --- a/SHADE_Engine/src/Physics/System/SHPhysicsSystem.cpp +++ b/SHADE_Engine/src/Physics/System/SHPhysicsSystem.cpp @@ -19,9 +19,9 @@ #include "ECS_Base/Managers/SHEntityManager.h" #include "ECS_Base/Managers/SHSystemManager.h" #include "Editor/SHEditor.h" -#include "Physics/Collision/SHCollisionTagMatrix.h" -#include "Physics/SHPhysicsEvents.h" -#include "Scene/SHSceneManager.h" +#include "Physics/Collision/SHCollisionSpace.h" +#include "Physics/Collision/CollisionTags/SHCollisionTagMatrix.h" +#include "Physics/Interface/SHColliderComponent.h" #include "Scripting/SHScriptEngine.h" namespace SHADE @@ -30,11 +30,26 @@ namespace SHADE /* Constructors & Destructor Definitions */ /*-----------------------------------------------------------------------------------*/ - SHPhysicsSystem::SHPhysicsSystem() + SHPhysicsSystem::SHPhysicsSystem() noexcept : worldUpdated { false } , interpolationFactor { 0.0 } , fixedDT { DEFAULT_FIXED_STEP } - {} + , physicsWorld { nullptr } + , collisionSpace { nullptr } + { + // Add more events here to register them + + eventFunctions[0] = { &SHPhysicsSystem::onComponentAdded , SH_COMPONENT_ADDED_EVENT }; + eventFunctions[1] = { &SHPhysicsSystem::onComponentRemoved, SH_COMPONENT_REMOVED_EVENT }; + eventFunctions[2] = { &SHPhysicsSystem::onSceneInit , SH_SCENE_INIT_POST }; + eventFunctions[3] = { &SHPhysicsSystem::onSceneExit , SH_SCENE_EXIT_POST }; + } + + SHPhysicsSystem::~SHPhysicsSystem() noexcept + { + delete collisionSpace; + delete physicsWorld; + } /*-----------------------------------------------------------------------------------*/ /* Getter Function Definitions */ @@ -45,45 +60,58 @@ namespace SHADE return 1.0 / fixedDT; } - const SHPhysicsWorldState::WorldSettings& SHPhysicsSystem::GetWorldSettings() const noexcept + double SHPhysicsSystem::GetFixedDT() const noexcept { - return worldState.settings; + return fixedDT; } - const std::vector& SHPhysicsSystem::GetAllCollisionInfo() const noexcept + const std::vector& SHPhysicsSystem::GetTriggerInfo() const noexcept { - return collisionListener.GetCollisionInfoContainer(); + return physicsWorld->GetTriggerEvents(); } - const std::vector& SHPhysicsSystem::GetAllTriggerInfo() const noexcept + const std::vector& SHPhysicsSystem::GetCollisionInfo() const noexcept { - return collisionListener.GetTriggerInfoContainer(); - } - - const SHPhysicsObject* SHPhysicsSystem::GetPhysicsObject(EntityID eid) noexcept - { - return objectManager.GetPhysicsObject(eid); - } - - - const SHPhysicsObjectManager::PhysicsObjectEntityMap& SHPhysicsSystem::GetPhysicsObjects() const noexcept - { - return objectManager.physicsObjects; + return physicsWorld->GetCollisionEvents(); } /*-----------------------------------------------------------------------------------*/ /* Setter Function Definitions */ /*-----------------------------------------------------------------------------------*/ - void SHPhysicsSystem::SetFixedUpdateRate(double fixedUpdateRate) noexcept + void SHPhysicsSystem::SetFixedUpdateRate(double fixedUpdateRate) noexcept { + // Handle invalid input + if (fixedUpdateRate <= 0.0) + { + SHLOGV_WARNING("Invalid value for setting fixed update rate! Fixed update rate unchanged.") + return; + } + fixedDT = 1.0 / fixedUpdateRate; + + // Handle potential incorrect / unintended input + if (fixedDT > 1.0) + { + SHLOGV_WARNING("Fixed Update Rate Time is set below 1. This may result in undesirable behaviour.") + } } - void SHPhysicsSystem::SetWorldSettings(const SHPhysicsWorldState::WorldSettings& settings) noexcept + void SHPhysicsSystem::SetFixedDT(double fixedDt) noexcept { - worldState.settings = settings; - worldState.UpdateSettings(); + if (fixedDt <= 0.0) + { + SHLOGV_WARNING("Invalid value for setting fixed delta time! Fixed delta time unchanged.") + return; + } + + fixedDT = fixedDt; + + // Handle potential incorrect / unintended input + if (fixedDT > 1.0) + { + SHLOGV_WARNING("Fixed Delta Time is set above 1. This may result in undesirable behaviour.") + } } /*-----------------------------------------------------------------------------------*/ @@ -92,390 +120,271 @@ namespace SHADE void SHPhysicsSystem::Init() { + // TODO(Diren): Consider using a non-static collision tag matrix. // Initialise collision tags std::filesystem::path defaultCollisionTagNameFilePath { ASSET_ROOT }; defaultCollisionTagNameFilePath.append("CollisionTags.SHConfig"); SHCollisionTagMatrix::Init(defaultCollisionTagNameFilePath); - // Link Physics Object Manager with System & Raycaster - objectManager.SetFactory(factory); - raycaster.SetObjectManager(&objectManager); + // Register Events + for (int i = 0; i < NUM_EVENT_FUNCTIONS; ++i) + { + const std::shared_ptr EVENT_RECEIVER = std::make_shared>(this, eventFunctions[i].first); + const ReceiverPtr EVENT_RECEIVER_PTR = std::dynamic_pointer_cast(EVENT_RECEIVER); - // Link Collision Listener with System - collisionListener.BindToSystem(this); - - // Subscribe to component events - const std::shared_ptr ADD_COMPONENT_RECEIVER { std::make_shared>(this, &SHPhysicsSystem::addPhysicsComponent) }; - const ReceiverPtr ADD_COMPONENT_RECEIVER_PTR = std::dynamic_pointer_cast(ADD_COMPONENT_RECEIVER); - SHEventManager::SubscribeTo(SH_COMPONENT_ADDED_EVENT, ADD_COMPONENT_RECEIVER_PTR); - - const std::shared_ptr REMOVE_COMPONENT_RECEIVER { std::make_shared>(this, &SHPhysicsSystem::removePhysicsComponent) }; - const ReceiverPtr REMOVE_COMPONENT_RECEIVER_PTR = std::dynamic_pointer_cast(REMOVE_COMPONENT_RECEIVER); - SHEventManager::SubscribeTo(SH_COMPONENT_REMOVED_EVENT, REMOVE_COMPONENT_RECEIVER_PTR); - - #ifdef SHEDITOR - - // Subscribe to Editor State Change Events - const std::shared_ptr ON_PLAY_RECEIVER { std::make_shared>(this, &SHPhysicsSystem::onPlay) }; - const ReceiverPtr ON_PLAY_RECEIVER_PTR = std::dynamic_pointer_cast(ON_PLAY_RECEIVER); - SHEventManager::SubscribeTo(SH_EDITOR_ON_PLAY_EVENT, ON_PLAY_RECEIVER_PTR); - - const std::shared_ptr ON_STOP_RECEIVER { std::make_shared>(this, &SHPhysicsSystem::onStop) }; - const ReceiverPtr ON_STOP_RECEIVER_PTR = std::dynamic_pointer_cast(ON_STOP_RECEIVER); - SHEventManager::SubscribeTo(SH_EDITOR_ON_STOP_EVENT, ON_STOP_RECEIVER_PTR); - - #endif - + SHEventManager::SubscribeTo(eventFunctions[i].second, EVENT_RECEIVER_PTR); + } } void SHPhysicsSystem::Exit() { - worldState.DestroyWorld(factory); - // Write collision tag names to file std::filesystem::path defaultCollisionTagNameFilePath { ASSET_ROOT }; defaultCollisionTagNameFilePath.append("CollisionTags.SHConfig"); SHCollisionTagMatrix::Exit(defaultCollisionTagNameFilePath); } - void SHPhysicsSystem::BuildScene(SHSceneGraph& sceneGraph) - { - static const auto BUILD_NEW_SCENE_PHYSICS_OBJECT = [&](SHSceneNode* node) - { - const EntityID EID = node->GetEntityID(); - - if (SHComponentManager::HasComponent(EID)) - objectManager.AddRigidBody(EID); - - if (SHComponentManager::HasComponent(EID)) - { - objectManager.AddCollider(EID); - - auto* COLLIDER = SHComponentManager::GetComponent(EID); - for (size_t i = 0; i < COLLIDER->GetCollisionShapes().size(); ++i) - objectManager.AddCollisionShape(EID, i); - } - - }; - - //////////////////////////////// - - // Destroy an existing world - if (worldState.world != nullptr) - { - objectManager.RemoveAllObjects(); - objectManager.SetWorld(nullptr); - - collisionListener.ClearContainers(); - raycaster.ClearFrame(); - - worldState.DestroyWorld(factory); - } - - worldState.CreateWorld(factory); -#ifdef _PUBLISH - worldState.world->setIsDebugRenderingEnabled(false); -#else - worldState.world->setIsDebugRenderingEnabled(true); -#endif - - // Link Collision Listener & Raycaster - collisionListener.BindToWorld(worldState.world); - raycaster.BindToWorld(worldState.world); - - // Link with object manager & create all physics objects - objectManager.SetWorld(worldState.world); - - // When building a scene, clear the object manager command queue and build scene objects again. - // This is done to avoid duplicate adds. - while (!objectManager.commandQueue.empty()) - objectManager.commandQueue.pop(); - - sceneGraph.Traverse(BUILD_NEW_SCENE_PHYSICS_OBJECT); - objectManager.UpdateCommands(); - } - - void SHPhysicsSystem::ForceBuild(SHSceneGraph& sceneGraph) - { - // HACK: Band-aid fix. To be removed. - objectManager.UpdateCommands(); - } - - void SHPhysicsSystem::ForceUpdate() { - if (!worldState.world) - { - SHLOGV_ERROR("Unable to force update without a Physics world!") + if (!physicsWorld) return; - } auto* scriptingSystem = SHSystemManager::GetSystem(); + if (scriptingSystem == nullptr) { - SHLOGV_ERROR("Unable to invoke FixedUpdate() on scripts due to missing SHScriptEngine!"); + SHLOGV_ERROR("Unable to invoke collision and trigger script events due to missing SHScriptEngine!"); } - // Force the physics world to update once - if (scriptingSystem != nullptr) - scriptingSystem->ExecuteFixedUpdates(); + scriptingSystem->ExecuteFixedUpdates(); + physicsWorld->Step(static_cast(fixedDT)); - worldState.world->update(static_cast(fixedDT)); - - // Sync transforms. No interpolation applied here - for (auto& [entityID, physicsObject] : objectManager.physicsObjects) + const auto& RIGIDBODY_DENSE = SHComponentManager::GetDense(); + for (auto& rigidBodyComponent : RIGIDBODY_DENSE) { - auto* transformComponent = SHComponentManager::GetComponent_s(entityID); - auto* rigidBodyComponent = SHComponentManager::GetComponent_s(entityID); - auto* colliderComponent = SHComponentManager::GetComponent_s(entityID); + const EntityID EID = rigidBodyComponent.GetEID(); - const auto& CURRENT_TF = physicsObject.GetRigidBody()->getTransform(); - const auto& RENDER_POS = CURRENT_TF.getPosition(); - const auto& RENDER_ROT = CURRENT_TF.getOrientation(); + // Skip missing transforms + auto* transformComponent = SHComponentManager::GetComponent_s(EID); + if (!transformComponent) + continue; - // Cache transform - physicsObject.prevTransform = CURRENT_TF; + // Skip invalid bodies (Should not occur) + if (!rigidBodyComponent.rigidBody) + continue; - // Sync with physics components - if (rigidBodyComponent && SHSceneManager::CheckNodeAndComponentsActive(entityID)) - { - rigidBodyComponent->position = RENDER_POS; - rigidBodyComponent->orientation = RENDER_ROT; - } + // Skip inactive bodies + const bool IS_ACTIVE = SHSceneManager::CheckNodeAndComponentsActive(EID); + if (!IS_ACTIVE) + continue; - if (colliderComponent && SHSceneManager::CheckNodeAndComponentsActive(entityID)) - { - colliderComponent->position = RENDER_POS; - colliderComponent->orientation = RENDER_ROT; - } + const SHMotionState& MOTION_STATE = rigidBodyComponent.rigidBody->GetMotionState(); - // Set transform for rendering - if (transformComponent) - { - transformComponent->SetWorldPosition(RENDER_POS); - transformComponent->SetWorldOrientation(RENDER_ROT); - } + // Skip objects that have not moved + if (!MOTION_STATE) + continue; + + // We ignore interpolations here because we are only stepping once + transformComponent->SetWorldPosition(MOTION_STATE.position); + transformComponent->SetWorldOrientation(MOTION_STATE.orientation); } } - SHPhysicsRaycastResult SHPhysicsSystem::Raycast(const SHRay& ray, float distance, const SHCollisionTag& collisionTag) noexcept + const std::vector& SHPhysicsSystem::Raycast(const SHCollisionSpace::RaycastInfo& info) noexcept { - return raycaster.Raycast(ray, distance, collisionTag); - } + auto& results = collisionSpace->Raycast(info); - SHPhysicsRaycastResult SHPhysicsSystem::Linecast(const SHVec3& start, const SHVec3& end, const SHCollisionTag& collisionTag) noexcept - { - return raycaster.Linecast(start, end, collisionTag); - } + // Load start and end points into the container for debug drawing + #ifdef SHEDITOR - SHPhysicsRaycastResult SHPhysicsSystem::ColliderRaycast(EntityID eid, const SHRay& ray, float distance) noexcept - { - return raycaster.ColliderRaycast(eid, ray, distance); - } + SHVec3 endPos = info.ray.position + info.ray.direction * SHRay::MAX_RAYCAST_DIST; - SHPhysicsRaycastResult SHPhysicsSystem::ColliderRaycast(EntityID eid, int shapeIndex, const SHRay& ray, float distance) noexcept - { - return raycaster.ColliderRaycast(eid, shapeIndex, ray, distance); - } + if (!results.empty()) + endPos = results.back().position; + + raycastHits.emplace_back(info.ray.position, endPos); + + #endif - SHPhysicsRaycastResult SHPhysicsSystem::ColliderLinecast(EntityID eid, const SHVec3& start, const SHVec3& end) noexcept - { - return raycaster.ColliderLinecast(eid, start, end); - } - - SHPhysicsRaycastResult SHPhysicsSystem::ColliderLinecast(EntityID eid, int shapeIndex, const SHVec3& start, const SHVec3& end) noexcept - { - return raycaster.ColliderLinecast(eid, shapeIndex, start, end); - } - - void SHPhysicsSystem::AddCollisionShape(EntityID eid, int shapeIndex) - { - static const auto ADD_SHAPE = [&](EntityID entityID, int index) - { - objectManager.AddCollisionShape(entityID, index); - - auto* colliderComponent = SHComponentManager::GetComponent(entityID); - auto& collisionShape = colliderComponent->GetCollisionShape(index); - - const SHPhysicsColliderAddedEvent COLLIDER_ADDED_EVENT_DATA - { - .entityID = entityID - , .colliderType = collisionShape.GetType() - , .colliderIndex = index - }; - - SHEventManager::BroadcastEvent(COLLIDER_ADDED_EVENT_DATA, SH_PHYSICS_COLLIDER_ADDED_EVENT); - }; - - #ifdef SHEDITOR - - const auto* EDITOR = SHSystemManager::GetSystem(); - if (EDITOR && EDITOR->editorState != SHEditor::State::STOP) - ADD_SHAPE(eid, shapeIndex); - - #else - - ADD_SHAPE(eid, shapeIndex); - - #endif - } - - void SHPhysicsSystem::RemoveCollisionShape(EntityID eid, int shapeIndex) - { - static const auto REMOVE_SHAPE = [&](EntityID entityID, int index) - { - objectManager.RemoveCollisionShape(entityID, index); - - const SHPhysicsColliderRemovedEvent COLLIDER_REMOVED_EVENT_DATA - { - .entityID = entityID - , .colliderIndex = index - }; - - SHEventManager::BroadcastEvent(COLLIDER_REMOVED_EVENT_DATA, SH_PHYSICS_COLLIDER_REMOVED_EVENT); - }; - - #ifdef SHEDITOR - - const auto* EDITOR = SHSystemManager::GetSystem(); - if (EDITOR && EDITOR->editorState != SHEditor::State::STOP) - REMOVE_SHAPE(eid, shapeIndex); - - #else - - REMOVE_SHAPE(eid, shapeIndex); - - #endif + return results; } /*-----------------------------------------------------------------------------------*/ /* Private Function Member Definitions */ /*-----------------------------------------------------------------------------------*/ - SHEventHandle SHPhysicsSystem::addPhysicsComponent(SHEventPtr addComponentEvent) noexcept + SHEventHandle SHPhysicsSystem::onSceneInit(SHEventPtr onSceneInitEvent) { - const auto& EVENT_DATA = reinterpret_cast*>(addComponentEvent.get()); + /* + * If a world already exists, destroy it + * Recreate the world. + * + * If there is an editor and editor mode is already playing, link all entities with the world immediately. + */ - static const auto RIGID_BODY_ID = ComponentFamily::GetID(); - static const auto COLLIDER_ID = ComponentFamily::GetID(); - - const auto ADDED_ID = EVENT_DATA->data->addedComponentType; - const bool IS_PHYSICS_COMPONENT = ADDED_ID == RIGID_BODY_ID || ADDED_ID == COLLIDER_ID; - if (IS_PHYSICS_COMPONENT) + // Destroy an existing world if there is one. + //! This should almost never happen. + if (physicsWorld) { - const EntityID EID = EVENT_DATA->data->eid; - - // We only add tell the physics object manager to add a component if the scene is played - - #ifdef SHEDITOR - - const auto* EDITOR = SHSystemManager::GetSystem(); - - if (EDITOR && EDITOR->editorState != SHEditor::State::STOP) - ADDED_ID == RIGID_BODY_ID ? objectManager.AddRigidBody(EID) : objectManager.AddCollider(EID); - - #else - - ADDED_ID == RIGID_BODY_ID ? objectManager.AddRigidBody(EID) : objectManager.AddCollider(EID); - - #endif - } - - return EVENT_DATA->handle; - } - - SHEventHandle SHPhysicsSystem::removePhysicsComponent(SHEventPtr removeComponentEvent) noexcept - { - const auto& EVENT_DATA = reinterpret_cast*>(removeComponentEvent.get()); - - static const auto RIGID_BODY_ID = ComponentFamily::GetID(); - static const auto COLLIDER_ID = ComponentFamily::GetID(); - - const auto REMOVED_ID = EVENT_DATA->data->removedComponentType; - const bool IS_PHYSICS_COMPONENT = REMOVED_ID == RIGID_BODY_ID || REMOVED_ID == COLLIDER_ID; - if (IS_PHYSICS_COMPONENT) - { - const EntityID EID = EVENT_DATA->data->eid; - - // We only add tell the physics object manager to remove a component if the scene is played - - #ifdef SHEDITOR - - const auto* EDITOR = SHSystemManager::GetSystem(); - - if (EDITOR && EDITOR->editorState != SHEditor::State::STOP) - REMOVED_ID == RIGID_BODY_ID ? objectManager.RemoveRigidBody(EID) : objectManager.RemoveCollider(EID); - - #else - - REMOVED_ID == RIGID_BODY_ID ? objectManager.RemoveRigidBody(EID) : objectManager.RemoveCollider(EID); - - #endif - } - - return EVENT_DATA->handle; - } - - SHEventHandle SHPhysicsSystem::onPlay(SHEventPtr onPlayEvent) - { - static const auto BUILD_PHYSICS_OBJECT = [&](SHSceneNode* node) - { - const EntityID EID = node->GetEntityID(); - - if (SHComponentManager::HasComponent(EID)) - objectManager.AddRigidBody(EID); - - if (SHComponentManager::HasComponent(EID)) + // Remove all references of physics objects from the world + for (const auto& PHYSICS_OBJECT : physicsObjectManager.GetPhysicsObjects() | std::views::values) { - objectManager.AddCollider(EID); - - auto* COLLIDER = SHComponentManager::GetComponent(EID); - for (size_t i = 0; i < COLLIDER->GetCollisionShapes().size(); ++i) - objectManager.AddCollisionShape(EID, i); + if (PHYSICS_OBJECT.rigidBody) + physicsWorld->RemoveRigidBody(PHYSICS_OBJECT.rigidBody); } - }; - //////////////////////////////// + delete physicsWorld; + physicsWorld = nullptr; + } - // Create physics world - if (worldState.world != nullptr) - return onPlayEvent->handle; + if (collisionSpace) + { + for (const auto& PHYSICS_OBJECT : physicsObjectManager.GetPhysicsObjects() | std::views::values) + { + if (PHYSICS_OBJECT.collider) + collisionSpace->RemoveCollider(PHYSICS_OBJECT.collider); + } - worldState.CreateWorld(factory); -#ifdef _PUBLISH - worldState.world->setIsDebugRenderingEnabled(false); -#else - worldState.world->setIsDebugRenderingEnabled(true); -#endif + delete collisionSpace; + collisionSpace = nullptr; + } - // Link Collision Listener & Raycaster - collisionListener.BindToWorld(worldState.world); - raycaster.BindToWorld(worldState.world); + // Create the physics world & collision space + physicsWorld = new SHPhysicsWorld; + collisionSpace = new SHCollisionSpace; - // Link with object manager & create all physics objects - objectManager.SetWorld(worldState.world); + physicsWorld->SetCollisionSpace(collisionSpace); - // Build scene - SHSceneManager::GetCurrentSceneGraph().Traverse(BUILD_PHYSICS_OBJECT); - objectManager.UpdateCommands(); + // Immediately add all existing bodies and colliders to the world. + // Since we recreated the scene and the world, the initial data has been reset and determinism is guaranteed. + // Only if the current scene data changes, then so would the results of the simulation. - return onPlayEvent->handle; + for (const auto& PHYSICS_OBJECT : physicsObjectManager.GetPhysicsObjects() | std::views::values) + { + if (PHYSICS_OBJECT.rigidBody) + physicsWorld->AddRigidBody(PHYSICS_OBJECT.rigidBody); + + if (PHYSICS_OBJECT.collider) + collisionSpace->AddCollider(PHYSICS_OBJECT.collider); + } + + return onSceneInitEvent.get()->handle; } - SHEventHandle SHPhysicsSystem::onStop(SHEventPtr onStopEvent) + SHEventHandle SHPhysicsSystem::onSceneExit(SHEventPtr onSceneExitEvent) { - // Remove all physics objects - objectManager.RemoveAllObjects(); - objectManager.SetWorld(nullptr); + /* + * Destroy the physics world. + * Destroy all physics objects. + */ - // Clear all collision info - // Collision listener is automatically unbound when world is destroyed - collisionListener.ClearContainers(); - raycaster.ClearFrame(); + for (const auto& PHYSICS_OBJECT : physicsObjectManager.GetPhysicsObjects() | std::views::values) + { + if (PHYSICS_OBJECT.rigidBody) + physicsWorld->RemoveRigidBody(PHYSICS_OBJECT.rigidBody); - // Destroy the world - worldState.DestroyWorld(factory); + if (PHYSICS_OBJECT.collider) + collisionSpace->RemoveCollider(PHYSICS_OBJECT.collider); + } - return onStopEvent->handle; + delete collisionSpace; + collisionSpace = nullptr; + + delete physicsWorld; + physicsWorld = nullptr; + + return onSceneExitEvent.get()->handle; } -} // namespace SHADE \ No newline at end of file + + SHEventHandle SHPhysicsSystem::onComponentAdded(SHEventPtr onComponentAddedEvent) + { + static const auto RIGID_BODY_COMPONENT_ID = ComponentFamily::GetID(); + static const auto COLLIDER_COMPONENT_ID = ComponentFamily::GetID(); + + const auto& EVENT_DATA = reinterpret_cast*>(onComponentAddedEvent.get())->data; + + const auto ADDED_ID = EVENT_DATA->addedComponentType; + + const bool IS_RIGID_BODY = ADDED_ID == RIGID_BODY_COMPONENT_ID; + const bool IS_COLLIDER = ADDED_ID == COLLIDER_COMPONENT_ID; + + // TODO: Hull Collider + + // Check if its a physics component + const bool IS_PHYSICS_COMPONENT = IS_RIGID_BODY || IS_COLLIDER; + if (!IS_PHYSICS_COMPONENT) + return onComponentAddedEvent.get()->handle; + + const EntityID EID = EVENT_DATA->eid; + + // Link engine components with physics object component + if (IS_RIGID_BODY) + { + physicsObjectManager.AddRigidBody(EID); + + if (physicsWorld) + { + auto* rigidBody = physicsObjectManager.GetPhysicsObject(EID)->rigidBody; + physicsWorld->AddRigidBody(rigidBody); + } + } + + if (IS_COLLIDER) + { + physicsObjectManager.AddCollider(EID, SHCollider::Type::COMPOSITE); + + if (collisionSpace) + { + auto* collider = physicsObjectManager.GetPhysicsObject(EID)->collider; + collisionSpace->AddCollider(collider); + } + } + + return onComponentAddedEvent.get()->handle; + } + + SHEventHandle SHPhysicsSystem::onComponentRemoved(SHEventPtr onComponentRemovedEvent) + { + static const auto RIGID_BODY_COMPONENT_ID = ComponentFamily::GetID(); + static const auto COLLIDER_COMPONENT_ID = ComponentFamily::GetID(); + + const auto& EVENT_DATA = reinterpret_cast*>(onComponentRemovedEvent.get())->data; + + const auto REMOVED_DATA = EVENT_DATA->removedComponentType; + + const bool IS_RIGID_BODY = REMOVED_DATA == RIGID_BODY_COMPONENT_ID; + const bool IS_COLLIDER = REMOVED_DATA == COLLIDER_COMPONENT_ID; + + // Check if its a physics component + const bool IS_PHYSICS_COMPONENT = IS_RIGID_BODY || IS_COLLIDER; + if (!IS_PHYSICS_COMPONENT) + return onComponentRemovedEvent.get()->handle; + + const EntityID EID = EVENT_DATA->eid; + + if (IS_RIGID_BODY) + { + if (physicsWorld) + { + auto* rigidBody = physicsObjectManager.GetPhysicsObject(EID)->rigidBody; + physicsWorld->RemoveRigidBody(rigidBody); + } + + physicsObjectManager.RemoveRigidBody(EID); + } + + if (IS_COLLIDER) + { + if (collisionSpace) + { + auto* collider = physicsObjectManager.GetPhysicsObject(EID)->collider; + collisionSpace->RemoveCollider(collider); + } + + physicsObjectManager.RemoveCollider(EID); + } + + return onComponentRemovedEvent.get()->handle; + } + +} // namespace SHADE diff --git a/SHADE_Engine/src/Physics/System/SHPhysicsSystem.h b/SHADE_Engine/src/Physics/System/SHPhysicsSystem.h index 99db493e..712727ec 100644 --- a/SHADE_Engine/src/Physics/System/SHPhysicsSystem.h +++ b/SHADE_Engine/src/Physics/System/SHPhysicsSystem.h @@ -10,24 +10,16 @@ #pragma once -#include -#include - -// External Dependencies -#include - // Project Headers +#include "ECS_Base/System/SHSystem.h" #include "ECS_Base/System/SHSystemRoutine.h" #include "ECS_Base/System/SHFixedSystemRoutine.h" +#include "Events/SHEvent.h" -#include "Math/Transform/SHTransformComponent.h" -#include "Physics/Collision/SHCollisionListener.h" -#include "Physics/Collision/SHPhysicsRaycaster.h" +#include "Physics/Dynamics/SHPhysicsWorld.h" +#include "Physics/Interface/PhysicsObject/SHPhysicsObjectManager.h" #include "Physics/Interface/SHRigidBodyComponent.h" #include "Physics/Interface/SHColliderComponent.h" -#include "Physics/PhysicsObject/SHPhysicsObjectManager.h" -#include "Physics/SHPhysicsWorld.h" -#include "Scene/SHSceneGraph.h" namespace SHADE { @@ -35,6 +27,10 @@ namespace SHADE /* Type Definitions */ /*-----------------------------------------------------------------------------------*/ + /** + * @brief + * Encapsulates a system for running and managing the physics simulation of the engine. + */ class SH_API SHPhysicsSystem final : public SHSystem { private: @@ -49,248 +45,146 @@ namespace SHADE /* Constructors & Destructor */ /*---------------------------------------------------------------------------------*/ - SHPhysicsSystem(); + SHPhysicsSystem () noexcept; + ~SHPhysicsSystem() noexcept; /*---------------------------------------------------------------------------------*/ /* Getter Functions */ /*---------------------------------------------------------------------------------*/ - [[nodiscard]] double GetFixedUpdateRate () const noexcept; - [[nodiscard]] const SHPhysicsWorldState::WorldSettings& GetWorldSettings () const noexcept; + [[nodiscard]] double GetFixedUpdateRate() const noexcept; + [[nodiscard]] double GetFixedDT () const noexcept; - [[nodiscard]] const std::vector& GetAllCollisionInfo () const noexcept; - [[nodiscard]] const std::vector& GetAllTriggerInfo () const noexcept; + [[nodiscard]] const std::vector& GetTriggerInfo () const noexcept; + [[nodiscard]] const std::vector& GetCollisionInfo () const noexcept; - [[nodiscard]] const SHPhysicsObject* GetPhysicsObject (EntityID eid) noexcept; - [[nodiscard]] const SHPhysicsObjectManager::PhysicsObjectEntityMap& GetPhysicsObjects () const noexcept; /*---------------------------------------------------------------------------------*/ /* Setter Functions */ /*---------------------------------------------------------------------------------*/ - void SetFixedUpdateRate (double fixedUpdateRate) noexcept; - void SetWorldSettings (const SHPhysicsWorldState::WorldSettings& settings) noexcept; + void SetFixedUpdateRate(double fixedUpdateRate) noexcept; + void SetFixedDT(double fixedDt) noexcept; /*---------------------------------------------------------------------------------*/ - /* Function Members */ + /* Member Functions */ /*---------------------------------------------------------------------------------*/ - void Init () override; - void Exit () override; - - void BuildScene (SHSceneGraph& sceneGraph); - void ForceBuild (SHSceneGraph& sceneGraph); - void ForceUpdate (); + /** + * @brief + * - Initialises the static collision tag matrix. + * - Registers the system to catch specific events. + */ + void Init() override; + void Exit() override; /** - * @brief Casts a ray into the world. - * @param ray The ray to cast. - * @param distance The distance to cast the ray. Defaults to infinity. - * @param collisionTag The collision tag to use for filtering the raycast. - * @return The result of the raycast. + * @brief + * Forces the world to take a single step. Interpolation of bodies cannot be done when + * forcing an update. */ - SHPhysicsRaycastResult Raycast - ( - const SHRay& ray - , float distance = std::numeric_limits::infinity() - , const SHCollisionTag& collisionTag = SHCollisionTag{} - ) noexcept; + void ForceUpdate(); /** - * @brief Casts a bounded ray into the world. - * @param start The starting point of the ray. - * @param end The end point of the ray. - * @param collisionTag The collision tag to use for filtering the bounded raycast. - * @return The result of the raycast. - */ - SHPhysicsRaycastResult Linecast - ( - const SHVec3& start - , const SHVec3& end - , const SHCollisionTag& collisionTag = SHCollisionTag{} - ) noexcept; - - /** - * @brief Casts a ray at a body with colliders. - * @param eid The entity to cast to. - * @param ray The ray to cast. - * @param distance The distance to cast the ray. Defaults to infinity. - * @return The result of the raycast. - */ - SHPhysicsRaycastResult ColliderRaycast - ( - EntityID eid - , const SHRay& ray - , float distance = std::numeric_limits::infinity() - ) noexcept; - - /** - * @brief Casts a ray at a collider. - * @param eid The entity to cast to. - * @param shapeIndex The index of the collision shape. - * @param ray The ray to cast. - * @param distance The distance to cast the ray. Defaults to infinity. - * @return The result of the raycast. - */ - SHPhysicsRaycastResult ColliderRaycast - ( - EntityID eid - , int shapeIndex - , const SHRay& ray - , float distance = std::numeric_limits::infinity() - ) noexcept; - - /** - * @brief Casts a bounded ray at a body with colliders. - * @param eid - * @param start - * @param end - * @return The result of the raycast. - */ - SHPhysicsRaycastResult ColliderLinecast - ( - EntityID eid - , const SHVec3& start - , const SHVec3& end - ) noexcept; - - /** - * @brief - * @param eid - * @param shapeIndex - * @param start - * @param end - * @return The result of the raycast. - */ - SHPhysicsRaycastResult ColliderLinecast - ( - EntityID eid - , int shapeIndex - , const SHVec3& start - , const SHVec3& end - ) noexcept; - - // Specific Handling for Collision Shapes as they are not under the Component System. - // This is done as events need to be sent out. - // TODO(Diren): Consider using a static method through the ColliderComponent. - - void AddCollisionShape (EntityID eid, int shapeIndex); - void RemoveCollisionShape (EntityID eid, int shapeIndex); + * @brief + * Casts a ray into the collision space. + * @param info + * Contains the information for the raycast. + * @return + * A container of the objects hit by the ray. If nothing was hit, the container + * will be empty. + */ + [[nodiscard]] const std::vector& Raycast(const SHCollisionSpace::RaycastInfo& info) noexcept; /*---------------------------------------------------------------------------------*/ /* System Routines */ /*---------------------------------------------------------------------------------*/ + /** + * @brief + * The physics update routine that runs before the simulation is updated. + * This is always running, regardless of the editor state. + *
+ * This update game logic is applied before the simulation runs. + */ class SH_API PhysicsPreUpdate final : public SHSystemRoutine { public: - /*-------------------------------------------------------------------------------*/ - /* Constructors & Destructor */ - /*-------------------------------------------------------------------------------*/ - PhysicsPreUpdate(); - - /*-------------------------------------------------------------------------------*/ - /* Function Members */ - /*-------------------------------------------------------------------------------*/ - void Execute(double dt) noexcept override; - - private: - /*-------------------------------------------------------------------------------*/ - /* Function Members */ - /*-------------------------------------------------------------------------------*/ - - void syncRigidBodyActive (EntityID eid, SHPhysicsObject& physicsObject) const noexcept; - void syncColliderActive (EntityID eid, SHPhysicsObject& physicsObject) const noexcept; - static void syncOnPlay (EntityID eid, SHPhysicsObject& physicsObject) noexcept; - - static void preUpdateSyncTransform - ( - SHPhysicsObject& physicsObject - , SHTransformComponent* transformComponent - , SHRigidBodyComponent* rigidBodyComponent - , SHColliderComponent* colliderComponent - ) noexcept; }; - class SH_API PhysicsFixedUpdate final : public SHFixedSystemRoutine + /** + * @brief + * The physics update routine that runs at a fixed rate. This is where the main + * simulation runs. If delta time is large enough, this may run more than once per + * frame. If delta time is small enough, this may not run at all. + */ + class SH_API PhysicsUpdate final : public SHFixedSystemRoutine { public: - /*-------------------------------------------------------------------------------*/ - /* Constructors & Destructor */ - /*-------------------------------------------------------------------------------*/ - - PhysicsFixedUpdate(); - - /*-------------------------------------------------------------------------------*/ - /* Function Members */ - /*-------------------------------------------------------------------------------*/ - - void Execute (double dt) noexcept override; + PhysicsUpdate(); + void Execute(double dt) noexcept override; }; + /** + * @brief + * The physics update that runs after the simulation. This sets the rendering + * transforms and sends messages to scripting system for collision & trigger events.
+ * + */ class SH_API PhysicsPostUpdate final : public SHSystemRoutine { public: - /*-------------------------------------------------------------------------------*/ - /* Constructors & Destructor */ - /*-------------------------------------------------------------------------------*/ - PhysicsPostUpdate(); - - /*-------------------------------------------------------------------------------*/ - /* Function Members */ - /*-------------------------------------------------------------------------------*/ - void Execute(double dt) noexcept override; - - private: - - /*-------------------------------------------------------------------------------*/ - /* Function Members */ - /*-------------------------------------------------------------------------------*/ - - static void postUpdateSyncTransforms - ( - SHPhysicsObject& physicsObject - , SHTransformComponent* transformComponent - , SHRigidBodyComponent* rigidBodyComponent - , SHColliderComponent* colliderComponent - , double interpolationFactor - ) noexcept; }; private: + /*---------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*---------------------------------------------------------------------------------*/ + + using EventFunctionPair = std::pair; + + struct RaycastHit + { + SHVec3 start; + SHVec3 end; + }; + /*---------------------------------------------------------------------------------*/ /* Data Members */ /*---------------------------------------------------------------------------------*/ - // System data + static constexpr int NUM_EVENT_FUNCTIONS = 4; + // Event function container for cleanly registering to events + EventFunctionPair eventFunctions[NUM_EVENT_FUNCTIONS]; + + // System data bool worldUpdated; double interpolationFactor; double fixedDT; - // rp3d + // Sub-systems / managers - rp3d::PhysicsCommon factory; + SHPhysicsWorld* physicsWorld; + SHCollisionSpace* collisionSpace; + SHPhysicsObjectManager physicsObjectManager; - // Interface objects - - SHPhysicsWorldState worldState; - SHPhysicsObjectManager objectManager; - SHCollisionListener collisionListener; - SHPhysicsRaycaster raycaster; + // For the debug drawer to draw rays + #ifdef SHEDITOR + std::vector raycastHits; + #endif /*---------------------------------------------------------------------------------*/ /* Function Members */ /*---------------------------------------------------------------------------------*/ - SHEventHandle addPhysicsComponent (SHEventPtr addComponentEvent) noexcept; - SHEventHandle removePhysicsComponent (SHEventPtr removeComponentEvent) noexcept; + SHEventHandle onSceneInit (SHEventPtr onSceneInitEvent); + SHEventHandle onSceneExit (SHEventPtr onSceneExitEvent); - SHEventHandle onPlay (SHEventPtr onPlayEvent); - SHEventHandle onStop (SHEventPtr onStopEvent); - SHEventHandle buildScene (SHEventPtr onSceneChangeEvent); + SHEventHandle onComponentAdded (SHEventPtr onComponentAddedEvent); + SHEventHandle onComponentRemoved (SHEventPtr onComponentRemovedEvent); }; } // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/System/SHPhysicsSystemInterface.cpp b/SHADE_Engine/src/Physics/System/SHPhysicsSystemInterface.cpp index 1fb11274..b6ed9d56 100644 --- a/SHADE_Engine/src/Physics/System/SHPhysicsSystemInterface.cpp +++ b/SHADE_Engine/src/Physics/System/SHPhysicsSystemInterface.cpp @@ -1,8 +1,6 @@ /************************************************************************************//*! \file SHPhysicsSystemInterface.cpp -\author Tng Kah Wei, kahwei.tng, 390009620 -\par email: kahwei.tng\@digipen.edu -\date Oct 31, 2022 +\author Diren D Bharwani, diren.dbharwani, 390002520 \brief Contains the definitions of the functions of the static SHPhysicsSystemInterface class. @@ -10,10 +8,13 @@ Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or disclosure of this file or its contents without the prior written consent of DigiPen Institute of Technology is prohibited. *//*************************************************************************************/ -// Precompiled Headers + + #include "SHpch.h" + // Primary Header #include "SHPhysicsSystemInterface.h" + // Project Includes #include "ECS_Base/Managers/SHSystemManager.h" #include "Physics/System/SHPhysicsSystem.h" @@ -23,28 +24,24 @@ namespace SHADE /*-----------------------------------------------------------------------------------*/ /* Static Usage Functions */ /*-----------------------------------------------------------------------------------*/ - const std::vector& SHPhysicsSystemInterface::GetCollisionInfo() noexcept + const std::vector& SHPhysicsSystemInterface::GetCollisionInfo() noexcept { - static std::vector emptyVec; + static std::vector emptyVec; - auto phySystem = SHSystemManager::GetSystem(); - if (phySystem) - { - return phySystem->GetAllCollisionInfo(); - } + auto* physicsSystem = SHSystemManager::GetSystem(); + if (physicsSystem) + return physicsSystem->GetCollisionInfo(); SHLOGV_WARNING("Failed to get collision events. Empty vector returned instead."); return emptyVec; } - const std::vector& SHPhysicsSystemInterface::GetTriggerInfo() noexcept + const std::vector& SHPhysicsSystemInterface::GetTriggerInfo() noexcept { - static std::vector emptyVec; + static std::vector emptyVec; - auto phySystem = SHSystemManager::GetSystem(); - if (phySystem) - { - return phySystem->GetAllTriggerInfo(); - } + auto* physicsSystem = SHSystemManager::GetSystem(); + if (physicsSystem) + return physicsSystem->GetTriggerInfo(); SHLOGV_WARNING("Failed to get trigger events. Empty vector returned instead."); return emptyVec; @@ -52,85 +49,34 @@ namespace SHADE double SHPhysicsSystemInterface::GetFixedDT() noexcept { - auto phySystem = SHSystemManager::GetSystem(); - if (phySystem) - { - return 1.0 / phySystem->GetFixedUpdateRate(); - } + auto* physicsSystem = SHSystemManager::GetSystem(); + if (physicsSystem) + return physicsSystem->GetFixedDT(); SHLOGV_WARNING("Failed to get fixed delta time. 0.0 returned instead."); return 0.0; } - SHPhysicsRaycastResult SHPhysicsSystemInterface::Raycast(const SHRay& ray, float distance) noexcept + int SHPhysicsSystemInterface::GetFixedUpdateRate() noexcept { auto* physicsSystem = SHSystemManager::GetSystem(); if (physicsSystem) - { - return physicsSystem->Raycast(ray, distance); - } + return physicsSystem->GetFixedUpdateRate(); - SHLOGV_WARNING("Failed to get the physics system. No ray was casted."); - return SHPhysicsRaycastResult{}; + SHLOGV_WARNING("Failed to get fixed update rate. 0.0 returned instead."); + return 0.0; } - SHPhysicsRaycastResult SHPhysicsSystemInterface::Linecast(const SHVec3& start, const SHVec3& end) noexcept + const std::vector& SHPhysicsSystemInterface::Raycast(const SHCollisionSpace::RaycastInfo& info) noexcept { + static std::vector emptyVec; + auto* physicsSystem = SHSystemManager::GetSystem(); if (physicsSystem) - { - return physicsSystem->Linecast(start, end); - } + return physicsSystem->Raycast(info); - SHLOGV_WARNING("Failed to get the physics system. No ray was casted."); - return SHPhysicsRaycastResult{}; + SHLOGV_WARNING("Failed to get fixed update rate. 0.0 returned instead."); + return emptyVec; } - SHPhysicsRaycastResult SHPhysicsSystemInterface::ColliderRaycast(EntityID eid, const SHRay& ray, float distance) noexcept - { - auto* physicsSystem = SHSystemManager::GetSystem(); - if (physicsSystem) - { - return physicsSystem->ColliderRaycast(eid, ray, distance); - } - - SHLOGV_WARNING("Failed to get the physics system. No ray was casted."); - return SHPhysicsRaycastResult{}; - } - - SHPhysicsRaycastResult SHPhysicsSystemInterface::ColliderRaycast(EntityID eid, int shapeIndex, const SHRay& ray, float distance) noexcept - { - auto* physicsSystem = SHSystemManager::GetSystem(); - if (physicsSystem) - { - return physicsSystem->ColliderRaycast(eid, shapeIndex, ray, distance); - } - - SHLOGV_WARNING("Failed to get the physics system. No ray was casted."); - return SHPhysicsRaycastResult{}; - } - - SHPhysicsRaycastResult SHPhysicsSystemInterface::ColliderLinecast(EntityID eid, const SHVec3& start, const SHVec3& end) noexcept - { - auto* physicsSystem = SHSystemManager::GetSystem(); - if (physicsSystem) - { - return physicsSystem->ColliderLinecast(eid, start, end); - } - - SHLOGV_WARNING("Failed to get the physics system. No ray was casted."); - return SHPhysicsRaycastResult{}; - } - - SHPhysicsRaycastResult SHPhysicsSystemInterface::ColliderLinecast(EntityID eid, int shapeIndex, const SHVec3& start, const SHVec3& end) noexcept - { - auto* physicsSystem = SHSystemManager::GetSystem(); - if (physicsSystem) - { - return physicsSystem->ColliderLinecast(eid, shapeIndex, start, end); - } - - SHLOGV_WARNING("Failed to get the physics system. No ray was casted."); - return SHPhysicsRaycastResult{}; - } } diff --git a/SHADE_Engine/src/Physics/System/SHPhysicsSystemInterface.h b/SHADE_Engine/src/Physics/System/SHPhysicsSystemInterface.h index 0065aee3..8a1f6be8 100644 --- a/SHADE_Engine/src/Physics/System/SHPhysicsSystemInterface.h +++ b/SHADE_Engine/src/Physics/System/SHPhysicsSystemInterface.h @@ -1,21 +1,21 @@ /************************************************************************************//*! \file SHPhysicsSystemInterface.h -\author Tng Kah Wei, kahwei.tng, 390009620 -\par email: kahwei.tng\@digipen.edu -\date Oct 31, 2022 +\author Diren D Bharwani, diren.dbharwani, 390002520 \brief Contains the definition of the SHGraphicsSystemInterface static class. Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or disclosure of this file or its contents without the prior written consent of DigiPen Institute of Technology is prohibited. *//*************************************************************************************/ + #pragma once -// STL Includes #include // Project Headers #include "ECS_Base/Entity/SHEntity.h" +#include "Physics/Collision/SHCollisionSpace.h" +#include "Physics/Collision/Contacts/SHCollisionEvents.h" namespace SHADE @@ -24,10 +24,10 @@ namespace SHADE /* Forward Declarations */ /*-----------------------------------------------------------------------------------*/ - class SHCollisionInfo; class SHVec3; struct SHRay; struct SHPhysicsRaycastResult; + struct SHCollisionSpace::RaycastInfo; /*-----------------------------------------------------------------------------------*/ @@ -49,15 +49,12 @@ namespace SHADE /* Static Usage Functions */ /*---------------------------------------------------------------------------------*/ - [[nodiscard]] static const std::vector& GetCollisionInfo() noexcept; - [[nodiscard]] static const std::vector& GetTriggerInfo () noexcept; - [[nodiscard]] static double GetFixedDT () noexcept; + [[nodiscard]] static const std::vector& GetCollisionInfo () noexcept; + [[nodiscard]] static const std::vector& GetTriggerInfo () noexcept; + [[nodiscard]] static double GetFixedDT () noexcept; + [[nodiscard]] static int GetFixedUpdateRate () noexcept; + [[nodiscard]] static const std::vector& Raycast (const SHCollisionSpace::RaycastInfo& info) noexcept; + - [[nodiscard]] static SHPhysicsRaycastResult Raycast (const SHRay& ray, float distance = std::numeric_limits::infinity()) noexcept; - [[nodiscard]] static SHPhysicsRaycastResult Linecast (const SHVec3& start, const SHVec3& end) noexcept; - [[nodiscard]] static SHPhysicsRaycastResult ColliderRaycast (EntityID eid, const SHRay& ray, float distance = std::numeric_limits::infinity()) noexcept; - [[nodiscard]] static SHPhysicsRaycastResult ColliderRaycast (EntityID eid, int shapeIndex, const SHRay& ray, float distance = std::numeric_limits::infinity()) noexcept; - [[nodiscard]] static SHPhysicsRaycastResult ColliderLinecast (EntityID eid, const SHVec3& start, const SHVec3& end) noexcept; - [[nodiscard]] static SHPhysicsRaycastResult ColliderLinecast (EntityID eid, int shapeIndex, const SHVec3& start, const SHVec3& end) noexcept; }; } diff --git a/SHADE_Engine/src/Physics/System/SHPhysicsSystemRoutines.cpp b/SHADE_Engine/src/Physics/System/SHPhysicsSystemRoutines.cpp deleted file mode 100644 index a5ca957a..00000000 --- a/SHADE_Engine/src/Physics/System/SHPhysicsSystemRoutines.cpp +++ /dev/null @@ -1,412 +0,0 @@ -/**************************************************************************************** - * \file SHPhysicsSystemRoutines.h - * \author Diren D Bharwani, diren.dbharwani, 390002520 - * \brief Implementation for the Physics System Routines - * - * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or - * disclosure of this file or its contents without the prior written consent - * of DigiPen Institute of Technology is prohibited. -****************************************************************************************/ - -#include - -// Primary Header -#include "SHPhysicsSystem.h" -// Project Headers -#include "ECS_Base/Managers/SHEntityManager.h" -#include "ECS_Base/Managers/SHSystemManager.h" -#include "Editor/SHEditor.h" -#include "Scene/SHSceneManager.h" -#include "Scripting/SHScriptEngine.h" - -#include "Input/SHInputManager.h" -#include "Physics/Collision/SHCollisionTagMatrix.h" - -/*-------------------------------------------------------------------------------------*/ -/* Local Functions */ -/*-------------------------------------------------------------------------------------*/ - -void testFunction(); - -///////////////////////////////////////////////////////////////////////////////////////// - -namespace SHADE -{ - /*-----------------------------------------------------------------------------------*/ - /* Constructors & Destructor Definitions */ - /*-----------------------------------------------------------------------------------*/ - - SHPhysicsSystem::PhysicsPreUpdate::PhysicsPreUpdate() - : SHSystemRoutine { "Physics PreUpdate", true } - {} - - SHPhysicsSystem::PhysicsFixedUpdate::PhysicsFixedUpdate() - : SHFixedSystemRoutine { DEFAULT_FIXED_STEP, "Physics FixedUpdate", false } - {} - - SHPhysicsSystem::PhysicsPostUpdate::PhysicsPostUpdate() - : SHSystemRoutine { "Physics PostUpdate", false } - {} - - /*-----------------------------------------------------------------------------------*/ - /* Public Function Member Definitions */ - /*-----------------------------------------------------------------------------------*/ - - void SHPhysicsSystem::PhysicsPreUpdate::Execute(double) noexcept - { - auto* physicsSystem = reinterpret_cast(GetSystem()); - - #ifdef SHEDITOR - - // Only Sync on Play. - // Otherwise, Components are only holding data until the world is built on play. - const auto* EDITOR = SHSystemManager::GetSystem(); - if (EDITOR && EDITOR->editorState != SHEditor::State::STOP) - { - physicsSystem->objectManager.UpdateCommands(); - - for (auto& [entityID, physicsObject] : physicsSystem->objectManager.physicsObjects) - { - // Ensure a valid physics Object - if (physicsObject.rp3dBody == nullptr) - continue; - - // Sync active states between SHADE & RP3D - syncRigidBodyActive(entityID, physicsObject); - syncColliderActive(entityID, physicsObject); - - syncOnPlay(entityID, physicsObject); - } - } - else - { - auto& rigidBodyDense = SHComponentManager::GetDense(); - auto& colliderDense = SHComponentManager::GetDense(); - - for (auto& rigidBodyComponent : rigidBodyDense) - { - const auto* TRANSFORM = SHComponentManager::GetComponent_s(rigidBodyComponent.GetEID()); - - if (TRANSFORM && TRANSFORM->HasChanged()) - { - rigidBodyComponent.position = TRANSFORM->GetWorldPosition(); - rigidBodyComponent.orientation = TRANSFORM->GetWorldOrientation(); - } - } - - for (auto& colliderComponent : colliderDense) - { - const auto* TRANSFORM = SHComponentManager::GetComponent_s(colliderComponent.GetEID()); - - if (TRANSFORM && TRANSFORM->HasChanged()) - { - colliderComponent.position = TRANSFORM->GetWorldPosition(); - colliderComponent.orientation = TRANSFORM->GetWorldOrientation(); - colliderComponent.scale = TRANSFORM->GetWorldScale(); - - colliderComponent.RecomputeCollisionShapes(); - } - } - } - - #else - - // Always sync Rigid Body & Collider Components with Physics Objects - // Do not check for an editor here - - physicsSystem->objectManager.UpdateCommands(); - - for (auto& [entityID, physicsObject] : physicsSystem->objectManager.physicsObjects) - { - // Ensure a valid physics Object - if (physicsObject.rp3dBody == nullptr) - continue; - - syncRigidBodyActive(entityID, physicsObject); - syncColliderActive(entityID, physicsObject); - - syncOnPlay(entityID, physicsObject); - } - - #endif - } - - void SHPhysicsSystem::PhysicsFixedUpdate::Execute(double dt) noexcept - { - auto* physicsSystem = reinterpret_cast(GetSystem()); - auto* scriptingSystem = SHSystemManager::GetSystem(); - if (scriptingSystem == nullptr) - { - SHLOGV_ERROR("Unable to invoke FixedUpdate() on scripts due to missing SHScriptEngine!"); - } - - const double FIXED_DT = physicsSystem->fixedDT; - // HACK: Clamp DT here to prevent a ridiculous amount of updates. This limits updates from large dt to 2. - // HACK: This should be done by the FRC and not here for predictable behaviour. - - accumulatedTime += dt; - - //testFunction(); - - int count = 0; - while (accumulatedTime > FIXED_DT) - { - if (scriptingSystem != nullptr) - scriptingSystem->ExecuteFixedUpdates(); - - physicsSystem->worldState.world->update(static_cast(FIXED_DT)); - - accumulatedTime -= FIXED_DT; - ++count; - } - - stats.numSteps = count; - physicsSystem->worldUpdated = count > 0; - - physicsSystem->interpolationFactor = accumulatedTime / fixedTimeStep; - } - - void SHPhysicsSystem::PhysicsPostUpdate::Execute(double) noexcept - { - auto* physicsSystem = reinterpret_cast(GetSystem()); - auto* scriptingSystem = SHSystemManager::GetSystem(); - - if (scriptingSystem == nullptr) - { - SHLOGV_ERROR("Unable to invoke collision and trigger script events due to missing SHScriptEngine!"); - } - - // Interpolate transforms for rendering - if (physicsSystem->worldUpdated) - { - for (auto& [entityID, physicsObject] : physicsSystem->objectManager.physicsObjects) - { - auto* transformComponent = SHComponentManager::GetComponent_s(entityID); - auto* rigidBodyComponent = SHComponentManager::GetComponent_s(entityID); - auto* colliderComponent = SHComponentManager::GetComponent_s(entityID); - - postUpdateSyncTransforms - ( - physicsObject - , transformComponent - , rigidBodyComponent - , colliderComponent - , physicsSystem->interpolationFactor - ); - } - - // Collision & Trigger messages - if (scriptingSystem != nullptr) - scriptingSystem->ExecuteCollisionFunctions(); - - // Since this function never runs when editor in not in play, execute the function anyway - physicsSystem->collisionListener.CleanContainers(); - } - } - - /*-----------------------------------------------------------------------------------*/ - /* Private Function Member Definitions */ - /*-----------------------------------------------------------------------------------*/ - - void SHPhysicsSystem::PhysicsPreUpdate::syncRigidBodyActive(EntityID eid, SHPhysicsObject& physicsObject) const noexcept - { - if (!SHComponentManager::HasComponent(eid)) - return; - - const bool IS_ACTIVE_IN_SCENE = SHSceneManager::CheckNodeAndComponentsActive(eid); - const bool IS_RP3D_BODY_ACTIVE = physicsObject.GetRigidBody()->isActive(); - - if (IS_ACTIVE_IN_SCENE != IS_RP3D_BODY_ACTIVE) - physicsObject.GetRigidBody()->setIsActive(IS_ACTIVE_IN_SCENE); - } - - void SHPhysicsSystem::PhysicsPreUpdate::syncColliderActive(EntityID eid, SHPhysicsObject& physicsObject) const noexcept - { - const auto* COLLIDER = SHComponentManager::GetComponent_s(eid); - if (!COLLIDER) - return; - - const bool IS_ACTIVE_IN_SCENE = SHSceneManager::CheckNodeAndComponentsActive(eid); - const bool IS_RP3D_COLLIDER_ACTIVE = physicsObject.collidersActive; - - if (IS_ACTIVE_IN_SCENE != IS_RP3D_COLLIDER_ACTIVE) - { - // HACK: If active state turned off, remove all collision shapes. If turned on, add them back. - auto* physicsSystem = reinterpret_cast(GetSystem()); - - const int NUM_SHAPES = static_cast(COLLIDER->GetCollisionShapes().size()); - if (IS_ACTIVE_IN_SCENE) - { - for (int i = 0; i < NUM_SHAPES; ++i) - physicsSystem->objectManager.AddCollisionShape(eid, i); - } - else - { - for (int i = NUM_SHAPES - 1; i >= 0; --i) - physicsSystem->objectManager.RemoveCollisionShape(eid, i); - } - - physicsObject.collidersActive = IS_ACTIVE_IN_SCENE; - } - } - - void SHPhysicsSystem::PhysicsPreUpdate::syncOnPlay(EntityID eid, SHPhysicsObject& physicsObject) noexcept - { - auto* transformComponent = SHComponentManager::GetComponent_s(eid); - auto* rigidBodyComponent = SHComponentManager::GetComponent_s(eid); - auto* colliderComponent = SHComponentManager::GetComponent_s(eid); - - // Sync transforms & physics components transforms - if (transformComponent && transformComponent->HasChanged()) - { - physicsObject.GetRigidBody()->setIsSleeping(false); - - preUpdateSyncTransform - ( - physicsObject - , transformComponent - , rigidBodyComponent - , colliderComponent - ); - } - - // Sync Rigid Bodies - if (rigidBodyComponent) - physicsObject.SyncRigidBody(*rigidBodyComponent); - - // Sync Colliders - if (colliderComponent) - physicsObject.SyncColliders(*colliderComponent); - } - - void SHPhysicsSystem::PhysicsPreUpdate::preUpdateSyncTransform - ( - SHPhysicsObject& physicsObject - , SHTransformComponent* transformComponent - , SHRigidBodyComponent* rigidBodyComponent - , SHColliderComponent* colliderComponent - ) noexcept - { - if (!transformComponent) - return; - - const SHVec3& WORLD_POS = transformComponent->GetWorldPosition(); - const SHQuaternion& WORLD_ROT = transformComponent->GetWorldOrientation(); - const SHVec3& WORLD_SCL = transformComponent->GetWorldScale(); - - const rp3d::Transform RP3D_TRANSFORM { WORLD_POS, WORLD_ROT }; - physicsObject.GetRigidBody()->setTransform(RP3D_TRANSFORM); - physicsObject.prevTransform = RP3D_TRANSFORM; - - if (rigidBodyComponent && SHSceneManager::CheckNodeAndComponentsActive(physicsObject.entityID)) - { - rigidBodyComponent->position = WORLD_POS; - rigidBodyComponent->orientation = WORLD_ROT; - } - - if (colliderComponent && SHSceneManager::CheckNodeAndComponentsActive(physicsObject.entityID)) - { - colliderComponent->position = WORLD_POS; - colliderComponent->orientation = WORLD_ROT; - colliderComponent->scale = WORLD_SCL; - - colliderComponent->RecomputeCollisionShapes(); - } - } - - void SHPhysicsSystem::PhysicsPostUpdate::postUpdateSyncTransforms - ( - SHPhysicsObject& physicsObject - , SHTransformComponent* transformComponent - , SHRigidBodyComponent* rigidBodyComponent - , SHColliderComponent* colliderComponent - , double interpolationFactor - ) noexcept - { - const rp3d::Transform& CURRENT_TF = physicsObject.GetRigidBody()->getTransform(); - auto renderPos = CURRENT_TF.getPosition(); - auto renderRot = CURRENT_TF.getOrientation(); - - // Cache transforms - if (physicsObject.GetRigidBody()->isActive()) - physicsObject.prevTransform = CURRENT_TF; - - // Sync with rigid bodies - if (rigidBodyComponent && SHSceneManager::CheckNodeAndComponentsActive(physicsObject.entityID)) - { - // Skip static bodies - if (rigidBodyComponent->GetType() == SHRigidBodyComponent::Type::STATIC) - return; - - // Check if transform should be interpolated - if (rigidBodyComponent->IsInterpolating()) - { - // Interpolate transforms between current and predicted next transform - - const rp3d::Transform PREV_TF = physicsObject.prevTransform; - const rp3d::Transform INTERPOLATED_TF = rp3d::Transform::interpolateTransforms(PREV_TF, CURRENT_TF, static_cast(interpolationFactor)); - - renderPos = INTERPOLATED_TF.getPosition(); - renderRot = INTERPOLATED_TF.getOrientation(); - } - - rigidBodyComponent->position = CURRENT_TF.getPosition(); - rigidBodyComponent->orientation = CURRENT_TF.getOrientation(); - - // Sync with colliders - if (colliderComponent && SHSceneManager::CheckNodeAndComponentsActive(physicsObject.entityID)) - { - // Skip colliders without rigidbody components. If any transform was updated, it was done in pre-update. - - colliderComponent->position = CURRENT_TF.getPosition(); - colliderComponent->orientation = CURRENT_TF.getOrientation(); - } - - // Set transform for rendering - if (transformComponent) - { - transformComponent->SetWorldPosition(renderPos); - transformComponent->SetWorldOrientation(renderRot); - } - } - } -} // namespace SHADE - -///////////////////////////////////////////////////////////////////////////////////////// - -void testFunction() -{ - using namespace SHADE; - - // Test movement - const float forceModifier = 25.0f; - EntityID eid = 65538; - - if (SHEntityManager::IsValidEID(eid)) - { - auto* rb = SHComponentManager::GetComponent_s(eid); - if (rb) - { - if (SHInputManager::GetKey(SHInputManager::SH_KEYCODE::W)) - rb->AddForce(SHVec3::UnitZ * forceModifier); - - if (SHInputManager::GetKey(SHInputManager::SH_KEYCODE::A)) - rb->AddForce(-SHVec3::UnitX * forceModifier); - - if (SHInputManager::GetKey(SHInputManager::SH_KEYCODE::S)) - rb->AddForce(-SHVec3::UnitZ * forceModifier); - - if (SHInputManager::GetKey(SHInputManager::SH_KEYCODE::D)) - rb->AddForce(SHVec3::UnitX * forceModifier); - } - } - - // Cast rays - auto* tag = SHCollisionTagMatrix::GetTag(1); - tag->SetLayerState(SHCollisionTag::Layer::_1, false); - tag->SetLayerState(SHCollisionTag::Layer::_2, true); - - SHRay ray { SHVec3{3.0f, 3.5f, 0.0f}, -SHVec3::UnitX }; - auto* physicsSystem = SHSystemManager::GetSystem(); - physicsSystem->Raycast(ray, std::numeric_limits::infinity(), *tag); -} diff --git a/SHADE_Engine/src/Scene/SHSceneGraph.cpp b/SHADE_Engine/src/Scene/SHSceneGraph.cpp index b876f5b0..7dc8d84d 100644 --- a/SHADE_Engine/src/Scene/SHSceneGraph.cpp +++ b/SHADE_Engine/src/Scene/SHSceneGraph.cpp @@ -27,7 +27,7 @@ namespace SHADE : root { nullptr } { // The root is set to the maximum entity. It should not be interfaced with. - root = AllocateNode(MAX_EID); + root = allocateNode(MAX_EID); } SHSceneGraph::~SHSceneGraph() noexcept @@ -260,7 +260,7 @@ namespace SHADE if (newParent == nullptr) newParent = root; - ChangeParent(NODE_ITER->second, newParent); + changeParent(NODE_ITER->second, newParent); SHEventManager::BroadcastEvent(EVENT_DATA, SH_SCENEGRAPH_CHANGE_PARENT_EVENT); } @@ -305,7 +305,7 @@ namespace SHADE }; SHSceneNode* currentNode = NODE_ITER->second; - ChangeParent(currentNode, PARENT_ITER->second); + changeParent(currentNode, PARENT_ITER->second); SHEventManager::BroadcastEvent(EVENT_DATA, SH_SCENEGRAPH_CHANGE_PARENT_EVENT); } @@ -352,7 +352,7 @@ namespace SHADE return NODE_ITER->second; } - SHSceneNode* newNode = AllocateNode(entityID); + SHSceneNode* newNode = allocateNode(entityID); if (parent == nullptr) { @@ -362,7 +362,7 @@ namespace SHADE } else { - ChangeParent(newNode, parent); + changeParent(newNode, parent); } return newNode; @@ -389,9 +389,9 @@ namespace SHADE // Remove reference of current node from parent SHSceneNode* currentNode = NODE_ITER->second; if (currentNode->parent != nullptr) - RemoveChild(currentNode->parent, currentNode); + removeChild(currentNode->parent, currentNode); - ReleaseNode(currentNode); + releaseNode(currentNode); return true; } @@ -399,16 +399,16 @@ namespace SHADE { // Remove reference of current node from parent if (nodeToRemove->parent != nullptr) - RemoveChild(nodeToRemove->parent, nodeToRemove); + removeChild(nodeToRemove->parent, nodeToRemove); - ReleaseNode(nodeToRemove); + releaseNode(nodeToRemove); return true; } void SHSceneGraph::Reset() noexcept { for (auto* node : entityNodeMap | std::views::values) - ReleaseNode(node); + releaseNode(node); } bool SHSceneGraph::IsChildOf(EntityID entityID, SHSceneNode* targetNode) noexcept @@ -498,39 +498,39 @@ namespace SHADE void SHSceneGraph::Traverse (const UnaryFunction& function) const { - TraverseAndInvokeFunction(root, function); + traverseAndInvokeFunction(root, function); } /*-----------------------------------------------------------------------------------*/ /* Private Function Member Definitions */ /*-----------------------------------------------------------------------------------*/ - SHSceneNode* SHSceneGraph::AllocateNode(EntityID entityID) + SHSceneNode* SHSceneGraph::allocateNode(EntityID entityID) { SHSceneNode* newNode = new SHSceneNode{entityID}; entityNodeMap.emplace(entityID, newNode); return newNode; } - void SHSceneGraph::ReleaseNode(SHSceneNode* node) noexcept + void SHSceneGraph::releaseNode(SHSceneNode* node) noexcept { SHASSERT(node != nullptr, "Attempting to release Invalid Node!") // Remove parent's reference to this node if there is a parent if (node->parent != nullptr) - RemoveChild(node->parent, node); + removeChild(node->parent, node); // Remove child's references to this node. Children end up as floating nodes. for (auto* child : node->GetChildren()) { - ChangeParent(child, nullptr); + changeParent(child, nullptr); } entityNodeMap.erase(node->GetEntityID()); delete node; } - void SHSceneGraph::ChangeParent(SHSceneNode* node, SHSceneNode* newParent) + void SHSceneGraph::changeParent(SHSceneNode* node, SHSceneNode* newParent) { // Handle self assignment if (node->parent != nullptr && newParent != nullptr && node->parent->entityID == newParent->entityID) @@ -538,7 +538,7 @@ namespace SHADE // Remove child if (node->parent) - RemoveChild(node->parent, node); + removeChild(node->parent, node); if (newParent == nullptr) { @@ -548,16 +548,16 @@ namespace SHADE node->parent = newParent; // Update parent's children - AddChild(newParent, node); + addChild(newParent, node); } - void SHSceneGraph::AddChild(SHSceneNode* node, SHSceneNode* newChild) + void SHSceneGraph::addChild(SHSceneNode* node, SHSceneNode* newChild) { SHASSERT(node != nullptr, "Attempting to modify a non-existent scene node!") SHASSERT(newChild != nullptr, "Attempting to add a non-existent child to a SceneNode!") if (newChild->parent) - RemoveChild(newChild->parent, newChild); + removeChild(newChild->parent, newChild); newChild->parent = node; node->children.emplace_back(newChild); @@ -571,7 +571,7 @@ namespace SHADE SHEventManager::BroadcastEvent(EVENT_DATA, SH_SCENEGRAPH_ADD_CHILD_EVENT); } - void SHSceneGraph::RemoveChild(SHSceneNode* node, SHSceneNode* childToRemove) + void SHSceneGraph::removeChild(SHSceneNode* node, SHSceneNode* childToRemove) { SHASSERT(node != nullptr, "Attempting to modify a non-existent scene node!") SHASSERT(childToRemove != nullptr, "Attempting to remove a non-existent child from a SceneNode!") @@ -592,12 +592,12 @@ namespace SHADE SHEventManager::BroadcastEvent(EVENT_DATA, SH_SCENEGRAPH_REMOVE_CHILD_EVENT); } - void SHSceneGraph::TraverseAndInvokeFunction(const SHSceneNode* node, const UnaryFunction& function) + void SHSceneGraph::traverseAndInvokeFunction(const SHSceneNode* node, const UnaryFunction& function) { for (auto* child : node->children) { function(child); - TraverseAndInvokeFunction(child, function); + traverseAndInvokeFunction(child, function); } } diff --git a/SHADE_Engine/src/Scene/SHSceneGraph.h b/SHADE_Engine/src/Scene/SHSceneGraph.h index 3285fc6f..ce51db5e 100644 --- a/SHADE_Engine/src/Scene/SHSceneGraph.h +++ b/SHADE_Engine/src/Scene/SHSceneGraph.h @@ -24,6 +24,10 @@ namespace SHADE /* Type Definitions */ /*-----------------------------------------------------------------------------------*/ + /** + * @brief + * Encapsulates a hierarchical tree for objects in the scene. + */ class SH_API SHSceneGraph { public: @@ -65,7 +69,28 @@ namespace SHADE /* Setter Functions */ /*---------------------------------------------------------------------------------*/ + /** + * @brief + * Changing the parent of a node will broadcast three events in the following order: + *
+ * 1. SHSceneGraphChangeParentEvent + * 2. SHSceneGraphRemoveChildEvent + * 3. SHSceneGraphAddChildEvent + *

+ * See the corresponding header file for the contents of the event struct. + */ void SetParent (EntityID entityID, SHSceneNode* newParent) noexcept; + + /** + * @brief + * Changing the parent of a node will broadcast three events in the following order: + *
+ * 1. SHSceneGraphChangeParentEvent + * 2. SHSceneGraphRemoveChildEvent + * 3. SHSceneGraphAddChildEvent + *

+ * See the corresponding header file for the contents of the event struct. + */ void SetParent (EntityID entityID, EntityID newParent) noexcept; void SetActive (EntityID entityID, bool isActive) noexcept; @@ -74,15 +99,47 @@ namespace SHADE /* Function Members */ /*---------------------------------------------------------------------------------*/ + /** + * @brief + * Adding a node will broadcast two events in the following order: + *
+ * 1. SHSceneGraphChangeParentEvent + * 2. SHSceneGraphAddChildEvent + *

+ * See the corresponding header file for the contents of the event struct. + */ SHSceneNode* AddNode (EntityID entityID, SHSceneNode* parent = nullptr); - bool RemoveNode (EntityID entityID) noexcept; - bool RemoveNode (SHSceneNode* nodeToRemove) noexcept; - void Reset () noexcept; - bool IsChildOf (EntityID entityID, SHSceneNode* targetNode) noexcept; - bool IsChildOf (EntityID entityID, EntityID targetID) noexcept; + /** + * @brief + * Removing a node will broadcast the SHSceneGraphRemoveChildEvent. + * See the corresponding header file for the contents of the event struct. + */ + bool RemoveNode (EntityID entityID) noexcept; - void Traverse (const UnaryFunction& function) const; + /** + * @brief + * Removing a node will broadcast the SHSceneGraphRemoveChildEvent. + * See the corresponding header file for the contents of the event struct. + */ + bool RemoveNode (SHSceneNode* nodeToRemove) noexcept; + + /** + * @brief + * Clears all the scene nodes in the scene graph. + */ + void Reset () noexcept; + + bool IsChildOf (EntityID entityID, SHSceneNode* targetNode) noexcept; + bool IsChildOf (EntityID entityID, EntityID targetID) noexcept; + + /** + * @brief + * Traverses the graph and a depth-first manner and applies the the function onto each node. + * @param function + * A unary function that takes in a SHSceneNode pointer. + */ + void Traverse (const UnaryFunction& function) const; private: /*---------------------------------------------------------------------------------*/ @@ -96,14 +153,14 @@ namespace SHADE /* Function Members */ /*---------------------------------------------------------------------------------*/ - SHSceneNode* AllocateNode (EntityID entityID); - void ReleaseNode (SHSceneNode* node) noexcept; + SHSceneNode* allocateNode (EntityID entityID); + void releaseNode (SHSceneNode* node) noexcept; - void ChangeParent (SHSceneNode* node, SHSceneNode* newParent); - void AddChild (SHSceneNode* node, SHSceneNode* newChild); - void RemoveChild (SHSceneNode* node, SHSceneNode* childToRemove); + void changeParent (SHSceneNode* node, SHSceneNode* newParent); + void addChild (SHSceneNode* node, SHSceneNode* newChild); + void removeChild (SHSceneNode* node, SHSceneNode* childToRemove); - static void TraverseAndInvokeFunction (const SHSceneNode* node, const UnaryFunction& function); + static void traverseAndInvokeFunction (const SHSceneNode* node, const UnaryFunction& function); }; } // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Scene/SHSceneManager.cpp b/SHADE_Engine/src/Scene/SHSceneManager.cpp index 3614fa52..79e8818a 100644 --- a/SHADE_Engine/src/Scene/SHSceneManager.cpp +++ b/SHADE_Engine/src/Scene/SHSceneManager.cpp @@ -19,6 +19,7 @@ #include "Events/SHEventManager.hpp" //#include "FRC/SHFrameRateController.h" //#include "ECS_Base/System/SHApplication.h" +#include "SHSceneEvents.h" #include @@ -66,7 +67,6 @@ namespace SHADE SHEventManager::BroadcastEvent(exitEvent, SH_SCENE_EXIT_POST); delete currentScene; - } if (!prevSceneReload) { diff --git a/SHADE_Engine/src/Scene/SHSceneNode.h b/SHADE_Engine/src/Scene/SHSceneNode.h index 62979850..45d81c1d 100644 --- a/SHADE_Engine/src/Scene/SHSceneNode.h +++ b/SHADE_Engine/src/Scene/SHSceneNode.h @@ -15,20 +15,17 @@ // Project Headers #include "ECS_Base/Entity/SHEntity.h" #include "SH_API.h" -#include "SHSceneGraph.h" namespace SHADE { - /*-----------------------------------------------------------------------------------*/ - /* Forward Declarations */ - /*-----------------------------------------------------------------------------------*/ - - class SHSceneGraph; - /*-----------------------------------------------------------------------------------*/ /* Type Definitions */ /*-----------------------------------------------------------------------------------*/ + /** + * @brief + * Encapsulates an object in the scene that is part of the scene's hierarchy. + */ class SH_API SHSceneNode { private: @@ -67,7 +64,7 @@ namespace SHADE /* Setter Functions */ /*---------------------------------------------------------------------------------*/ - void SetActive (bool newActiveState) noexcept; + void SetActive (bool newActiveState) noexcept; private: /*---------------------------------------------------------------------------------*/ diff --git a/SHADE_Engine/src/Serialization/SHYAMLConverters.h b/SHADE_Engine/src/Serialization/SHYAMLConverters.h index 2e2d45f4..1b485633 100644 --- a/SHADE_Engine/src/Serialization/SHYAMLConverters.h +++ b/SHADE_Engine/src/Serialization/SHYAMLConverters.h @@ -3,9 +3,6 @@ #include "Physics/Interface/SHColliderComponent.h" #include "Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.h" #include "Graphics/MiddleEnd/Materials/SHMaterialSpec.h" -#include "Math/Geometry/SHBox.h" -#include "Math/Geometry/SHSphere.h" -#include "Physics/Interface/SHCollisionShape.h" #include "Resource/SHResourceManager.h" #include "Math/Vector/SHVec2.h" #include "Math/Vector/SHVec3.h" @@ -14,7 +11,8 @@ #include "Graphics/MiddleEnd/Interface/SHMaterialInstance.h" #include "SHSerializationTools.h" #include "Graphics/MiddleEnd/TextRendering/SHFont.h" -#include "Physics/Collision/SHCollisionTagMatrix.h" +#include "Physics/Collision/SHCompositeCollider.h" +#include "Physics/Collision/CollisionTags/SHCollisionTagMatrix.h" namespace YAML { @@ -146,14 +144,14 @@ namespace YAML { case SHCollisionShape::Type::BOX: { - const auto* BOX = reinterpret_cast(rhs.GetShape()); - node[HalfExtents] = BOX->GetRelativeExtents(); + const auto& BOX = dynamic_cast(rhs); + node[HalfExtents] = BOX.GetRelativeExtents(); } break; case SHCollisionShape::Type::SPHERE: { - const auto* SPHERE = reinterpret_cast(rhs.GetShape()); - node[Radius] = SPHERE->GetRelativeRadius(); + const auto& SPHERE = dynamic_cast(rhs); + node[Radius] = SPHERE.GetRelativeRadius(); } break; case SHCollisionShape::Type::CAPSULE: break; @@ -189,13 +187,19 @@ namespace YAML case SHCollisionShape::Type::BOX: { if (node[HalfExtents].IsDefined()) - rhs.SetBoundingBox(node[HalfExtents].as()); + { + auto* box = dynamic_cast(&rhs); + box->SetRelativeExtents(node[HalfExtents].as()); + } } break; case SHCollisionShape::Type::SPHERE: { if (node[Radius].IsDefined()) - rhs.SetBoundingSphere(node[Radius].as()); + { + auto* sphere = dynamic_cast(&rhs); + sphere->SetRelativeRadius(node[Radius].as()); + } } break; case SHCollisionShape::Type::CAPSULE: break; @@ -219,15 +223,19 @@ namespace YAML template<> struct convert { + static constexpr const char* DrawColliders = "DrawColliders"; static constexpr const char* Colliders = "Colliders"; + static Node encode(SHColliderComponent& rhs) { Node node, collidersNode; - auto const& colliders = rhs.GetCollisionShapes(); - int const numColliders = static_cast(colliders.size()); + + node[DrawColliders] = rhs.GetDebugDrawState(); + + int const numColliders = static_cast(rhs.GetCollisionShapes()->size()); for (int i = 0; i < numColliders; ++i) { - auto& collider = rhs.GetCollisionShape(i); + auto& collider = *rhs.GetCollisionShape(i); Node colliderNode = convert::encode(collider); if (colliderNode.IsDefined()) collidersNode[i] = colliderNode; @@ -237,6 +245,9 @@ namespace YAML } static bool decode(Node const& node, SHColliderComponent& rhs) { + if (node[DrawColliders].IsDefined()) + rhs.SetDebugDrawState(node[DrawColliders].as()); + if (node[Colliders].IsDefined()) { int numColliders{}; @@ -249,14 +260,16 @@ namespace YAML if (!ok) return false; + auto* collider = rhs.GetCollider(); switch (colliderType) { - case SHCollisionShape::Type::BOX: rhs.AddBoundingBox(); break; - case SHCollisionShape::Type::SPHERE: rhs.AddBoundingSphere(); break; - case SHCollisionShape::Type::CAPSULE: break; - default:; + case SHCollisionShape::Type::SPHERE: collider->AddSphereCollisionShape(1.0f); break; + case SHCollisionShape::Type::BOX: collider->AddBoxCollisionShape(SHVec3::One); break; + case SHCollisionShape::Type::CAPSULE: break; + default:; } - YAML::convert::decode(colliderNode, rhs.GetCollisionShape(numColliders++)); + + YAML::convert::decode(colliderNode, *collider->GetCollisionShape(numColliders++)); } } return true; diff --git a/SHADE_Managed/src/Components/Collider.cxx b/SHADE_Managed/src/Components/Collider.cxx index b5f1444f..f4b4f09d 100644 --- a/SHADE_Managed/src/Components/Collider.cxx +++ b/SHADE_Managed/src/Components/Collider.cxx @@ -19,7 +19,7 @@ of DigiPen Institute of Technology is prohibited. namespace SHADE { - /*---------------------------------------------------------------------------------*/ + /*---------------------------------------------------------------------------------*/ /* CollisionShape - Constructors */ /*---------------------------------------------------------------------------------*/ CollisionShape::CollisionShape(int arrayIdx, Entity attachedEntity) @@ -107,7 +107,7 @@ namespace SHADE try { - auto& shape = collider->GetCollisionShape(arrayIndex); + auto& shape = *collider->GetCollisionShape(arrayIndex); return shape; } catch (std::invalid_argument&) @@ -128,35 +128,19 @@ namespace SHADE /*---------------------------------------------------------------------------------*/ Vector3 BoxCollider::Center::get() { - return Convert::ToCLI(getNativeCollisionShape().GetCenter()); - } - void BoxCollider::Center::set(Vector3 value) - { - getNativeCollisionShape().SetCenter(Convert::ToNative(value)); + return Convert::ToCLI(getNativeCollisionShape().GetWorldCentroid()); } Vector3 BoxCollider::HalfExtents::get() { - return Convert::ToCLI(getNativeCollisionShape().GetWorldExtents()); + return Convert::ToCLI(getNativeCollisionShape().GetWorldExtents()); } void BoxCollider::HalfExtents::set(Vector3 value) { - getNativeCollisionShape().SetWorldExtents(Convert::ToNative(value)); + getNativeCollisionShape().SetWorldExtents(Convert::ToNative(value)); } - Vector3 BoxCollider::Min::get() + Quaternion BoxCollider::Orientation::get() { - return Convert::ToCLI(getNativeCollisionShape().GetMin()); - } - void BoxCollider::Min::set(Vector3 value) - { - getNativeCollisionShape().SetMin(Convert::ToNative(value)); - } - Vector3 BoxCollider::Max::get() - { - return Convert::ToCLI(getNativeCollisionShape().GetMax()); - } - void BoxCollider::Max::set(Vector3 value) - { - getNativeCollisionShape().SetMax(Convert::ToNative(value)); + return Convert::ToCLI(getNativeCollisionShape().GetWorldOrientation()); } /*---------------------------------------------------------------------------------*/ @@ -164,11 +148,13 @@ namespace SHADE /*---------------------------------------------------------------------------------*/ bool BoxCollider::TestPoint(Vector3 point) { - return getNativeCollisionShape().TestPoint(Convert::ToNative(point)); + //return getNativeCollisionShape().TestPoint(Convert::ToNative(point)); + return false; } bool BoxCollider::Raycast(Ray ray, float maxDistance) { - return getNativeCollisionShape().Raycast(Convert::ToNative(ray)); + //return getNativeCollisionShape().Raycast(Convert::ToNative(ray)); + return false; } /*---------------------------------------------------------------------------------*/ @@ -176,11 +162,7 @@ namespace SHADE /*---------------------------------------------------------------------------------*/ Vector3 SphereCollider::Center::get() { - return Convert::ToCLI(getNativeCollisionShape().GetCenter()); - } - void SphereCollider::Center::set(Vector3 value) - { - getNativeCollisionShape().SetCenter(Convert::ToNative(value)); + return Convert::ToCLI(getNativeCollisionShape().GetWorldCentroid()); } float SphereCollider::Radius::get() { @@ -196,11 +178,11 @@ namespace SHADE /*---------------------------------------------------------------------------------*/ bool SphereCollider::TestPoint(Vector3 point) { - return getNativeCollisionShape().TestPoint(Convert::ToNative(point)); + return getNativeCollisionShape().TestPoint(Convert::ToNative(point)); } bool SphereCollider::Raycast(Ray ray, float maxDistance) { - return getNativeCollisionShape().Raycast(Convert::ToNative(ray)); + return getNativeCollisionShape().Raycast(Convert::ToNative(ray)); } /*---------------------------------------------------------------------------------*/ @@ -231,7 +213,10 @@ namespace SHADE /*---------------------------------------------------------------------------------*/ int Collider::CollisionShapeCount::get() { - return static_cast(GetNativeComponent()->GetCollisionShapes().size()); + if (const auto* shapes = GetNativeComponent()->GetCollisionShapes()) + return static_cast(shapes->size()); + + return -1; } /*---------------------------------------------------------------------------------*/ @@ -311,10 +296,10 @@ namespace SHADE // Populate the list int i = 0; - for (const auto& collider : GetNativeComponent()->GetCollisionShapes()) + for (const auto* collider : *GetNativeComponent()->GetCollisionShapes()) { CollisionShape^ bound = nullptr; - switch (collider.GetType()) + switch (collider->GetType()) { case SHCollisionShape::Type::BOX: bound = gcnew BoxCollider(i, Owner.GetEntity()); diff --git a/SHADE_Managed/src/Components/Collider.h++ b/SHADE_Managed/src/Components/Collider.h++ index 8ea648aa..c2e732f4 100644 --- a/SHADE_Managed/src/Components/Collider.h++ +++ b/SHADE_Managed/src/Components/Collider.h++ @@ -27,11 +27,11 @@ namespace SHADE try { - auto& shape = collider->GetCollisionShape(arrayIndex); - if (shape.GetType() != SHCollisionShape::Type::BOX) + auto* shape = collider->GetCollisionShape(arrayIndex); + if (!shape || shape->GetType() == SHCollisionShape::Type::INVALID) throw gcnew System::InvalidOperationException("Attempted to retrieve invalid CollisionShape."); - return reinterpret_cast(shape); + return dynamic_cast(*shape); } catch (std::invalid_argument&) { diff --git a/SHADE_Managed/src/Components/Collider.hxx b/SHADE_Managed/src/Components/Collider.hxx index a649483f..19235571 100644 --- a/SHADE_Managed/src/Components/Collider.hxx +++ b/SHADE_Managed/src/Components/Collider.hxx @@ -142,15 +142,14 @@ namespace SHADE /* Properties */ /*-----------------------------------------------------------------------------*/ /// - /// Center of the Bounding Box formed by this bound. + /// Center of the box collider. /// property Vector3 Center { Vector3 get(); - void set(Vector3 value); } /// - /// Half of the scale of the Bounding Box formed by this bound. + /// Half of the scale of the box collider. /// property Vector3 HalfExtents { @@ -158,22 +157,11 @@ namespace SHADE void set(Vector3 value); } /// - /// Position of the bottom left back corner of the Bounding Box formed by this - /// bound. + /// The orientation of the box. /// - property Vector3 Min + property Quaternion Orientation { - Vector3 get(); - void set(Vector3 value); - } - /// - /// Position of the top right front corner of the Bounding Box formed by this - /// bound. - /// - property Vector3 Max - { - Vector3 get(); - void set(Vector3 value); + Quaternion get(); } /*-----------------------------------------------------------------------------*/ @@ -201,12 +189,11 @@ namespace SHADE /* Properties */ /*-----------------------------------------------------------------------------*/ /// - /// Center of the Bounding Sphere formed by this bound. + /// Center of the sphere. /// property Vector3 Center { Vector3 get(); - void set(Vector3 value); } /// /// Radius of the Bounding Sphere formed by this bound. diff --git a/SHADE_Managed/src/Components/RigidBody.cxx b/SHADE_Managed/src/Components/RigidBody.cxx index a564402f..6237f3a9 100644 --- a/SHADE_Managed/src/Components/RigidBody.cxx +++ b/SHADE_Managed/src/Components/RigidBody.cxx @@ -34,7 +34,7 @@ namespace SHADE } void RigidBody::IsGravityEnabled::set(bool value) { - return GetNativeComponent()->SetGravityEnabled(value); + return GetNativeComponent()->SetIsGravityEnabled(value); } bool RigidBody::IsAllowedToSleep::get() { @@ -217,10 +217,4 @@ namespace SHADE { return Convert::ToCLI(GetNativeComponent()->GetTorque()); } - - void RigidBody::ClearTorque() - { - GetNativeComponent()->ClearTorque(); - } - } \ No newline at end of file diff --git a/SHADE_Managed/src/Components/RigidBody.hxx b/SHADE_Managed/src/Components/RigidBody.hxx index 8bfe34aa..8293cca4 100644 --- a/SHADE_Managed/src/Components/RigidBody.hxx +++ b/SHADE_Managed/src/Components/RigidBody.hxx @@ -155,7 +155,6 @@ namespace SHADE void AddRelativeTorque(Vector3 relativeForce); Vector3 GetTorque(); - void ClearTorque(); }; } \ No newline at end of file diff --git a/SHADE_Managed/src/Physics/Physics.cxx b/SHADE_Managed/src/Physics/Physics.cxx index 9e2c1413..60aba58d 100644 --- a/SHADE_Managed/src/Physics/Physics.cxx +++ b/SHADE_Managed/src/Physics/Physics.cxx @@ -15,10 +15,15 @@ // External Dependencies #include "Physics/System/SHPhysicsSystemInterface.h" // Project Header +#include "Components/Collider.hxx" +#include "Components/Transform.hxx" #include "Engine/GameObject.hxx" +#include "Physics/Collision/SHCollisionSpace.h" #include "Utility/Convert.hxx" #include "Utility/Debug.hxx" +using namespace System::Collections::Generic; + namespace SHADE { /*-----------------------------------------------------------------------------------*/ @@ -41,49 +46,262 @@ namespace SHADE /* Raycast Function Member Definitions */ /*-----------------------------------------------------------------------------------*/ - RaycastHit Physics::Raycast(Ray ray) + List^ Physics::Raycast(Ray ray, bool continuous) { - return Convert::ToCLI(SHPhysicsSystemInterface::Raycast(Convert::ToNative(ray))); + List^ results = gcnew List(); + + // Cast natively + SHCollisionSpace::RaycastInfo raycastInfo; + raycastInfo.ray = Convert::ToNative(ray); + raycastInfo.continuous = continuous; + + const auto& NATIVE_RESULTS = SHPhysicsSystemInterface::Raycast(raycastInfo); + if (!NATIVE_RESULTS.empty()) + { + for (const auto& nativeResult : NATIVE_RESULTS) + results->Add(Convert::ToCLI(nativeResult)); + } + + return results; } - RaycastHit Physics::Raycast(Ray ray, float distance) + List^ Physics::Raycast(Ray ray, float distance, bool continuous) { - return Convert::ToCLI(SHPhysicsSystemInterface::Raycast(Convert::ToNative(ray), distance)); + List^ results = gcnew List(); + + // Cast natively + SHCollisionSpace::RaycastInfo raycastInfo; + raycastInfo.ray = Convert::ToNative(ray); + raycastInfo.distance = distance; + raycastInfo.continuous = continuous; + + const auto& NATIVE_RESULTS = SHPhysicsSystemInterface::Raycast(raycastInfo); + if (!NATIVE_RESULTS.empty()) + { + for (const auto& nativeResult : NATIVE_RESULTS) + results->Add(Convert::ToCLI(nativeResult)); + } + + return results; } - RaycastHit Physics::Linecast(Vector3 start, Vector3 end) + List^ Physics::Linecast(Vector3 start, Vector3 end, bool continuous) { - return Convert::ToCLI(SHPhysicsSystemInterface::Linecast(Convert::ToNative(start), Convert::ToNative(end))); + List^ results = gcnew List(); + + // Cast natively + Vector3 direction = end - start; + direction.Normalise(); + const Ray CLI_RAY( start, direction ); + + SHCollisionSpace::RaycastInfo raycastInfo; + raycastInfo.ray = Convert::ToNative(CLI_RAY); + raycastInfo.distance = (end - start).GetMagnitude(); + raycastInfo.continuous = continuous; + + const auto& NATIVE_RESULTS = SHPhysicsSystemInterface::Raycast(raycastInfo); + if (!NATIVE_RESULTS.empty()) + { + for (const auto& nativeResult : NATIVE_RESULTS) + results->Add(Convert::ToCLI(nativeResult)); + } + + return results; } - RaycastHit Physics::ColliderRaycast(GameObject object, Ray ray) + List^ Physics::ColliderRaycast(GameObject object, Ray ray, bool continuous) { - return Convert::ToCLI(SHPhysicsSystemInterface::ColliderRaycast(object.EntityId, Convert::ToNative(ray))); + List^ results = gcnew List(); + + // Get the collider's position (same as the transform) + Transform^ managedTransform = object.GetComponent(); + if (!managedTransform) + throw gcnew System::InvalidOperationException("Attempted to retrieve invalid Transform."); + + const Vector3 COLLIDER_POS = managedTransform->GlobalPosition; + ray.Position += COLLIDER_POS; + + SHCollisionSpace::RaycastInfo raycastInfo; + raycastInfo.ray = Convert::ToNative(ray); + raycastInfo.continuous = continuous; + raycastInfo.SetColliderID(object.EntityId); + + const auto& NATIVE_RESULTS = SHPhysicsSystemInterface::Raycast(raycastInfo); + if (!NATIVE_RESULTS.empty()) + { + for (const auto& nativeResult : NATIVE_RESULTS) + results->Add(Convert::ToCLI(nativeResult)); + } + + return results; } - RaycastHit Physics::ColliderRaycast(GameObject object, Ray ray, float distance) + List^ Physics::ColliderRaycast(GameObject object, Ray ray, float distance, bool continuous) { - return Convert::ToCLI(SHPhysicsSystemInterface::ColliderRaycast(object.EntityId, Convert::ToNative(ray), distance)); + List^ results = gcnew List(); + + // Get the collider's position (same as the transform) + Transform^ managedTransform = object.GetComponent(); + if (!managedTransform) + throw gcnew System::InvalidOperationException("Attempted to retrieve invalid Transform."); + + const Vector3 COLLIDER_POS = managedTransform->GlobalPosition; + ray.Position += COLLIDER_POS; + + SHCollisionSpace::RaycastInfo raycastInfo; + raycastInfo.ray = Convert::ToNative(ray); + raycastInfo.distance = distance; + raycastInfo.continuous = continuous; + raycastInfo.SetColliderID(object.EntityId); + + const auto& NATIVE_RESULTS = SHPhysicsSystemInterface::Raycast(raycastInfo); + if (!NATIVE_RESULTS.empty()) + { + for (const auto& nativeResult : NATIVE_RESULTS) + results->Add(Convert::ToCLI(nativeResult)); + } + + return results; } - RaycastHit Physics::ColliderRaycast(GameObject object, int shapeIndex, Ray ray) + List^ Physics::ColliderRaycast(GameObject object, int shapeIndex, Ray ray, bool continuous) { - return Convert::ToCLI(SHPhysicsSystemInterface::ColliderRaycast(object.EntityId, shapeIndex, Convert::ToNative(ray))); + List^ results = gcnew List(); + + // Get the collider's position + Vector3 shapePos = Vector3::Zero; + Collider^ managedCollider = object.GetComponent(); + if (!managedCollider) + throw gcnew System::InvalidOperationException("Attempted to retrieve invalid Collider."); + + CollisionShape^ managedShape = managedCollider->GetCollisionShape(shapeIndex); + if (!managedShape) + throw gcnew System::InvalidOperationException("Attempted to retrieve invalid CollisionShape."); + + const auto& NATIVE_SHAPE = managedShape->getNativeCollisionShape(); + shapePos = Convert::ToCLI(NATIVE_SHAPE.GetWorldCentroid()); + + ray.Position += shapePos; + + SHCollisionSpace::RaycastInfo raycastInfo; + raycastInfo.ray = Convert::ToNative(ray); + raycastInfo.continuous = continuous; + raycastInfo.SetColliderID(object.EntityId); + + const auto& NATIVE_RESULTS = SHPhysicsSystemInterface::Raycast(raycastInfo); + if (!NATIVE_RESULTS.empty()) + { + for (const auto& nativeResult : NATIVE_RESULTS) + results->Add(Convert::ToCLI(nativeResult)); + } + + return results; } - RaycastHit Physics::ColliderRaycast(GameObject object, int shapeIndex, Ray ray, float distance) + List^ Physics::ColliderRaycast(GameObject object, int shapeIndex, Ray ray, float distance, bool continuous) { - return Convert::ToCLI(SHPhysicsSystemInterface::ColliderRaycast(object.EntityId, shapeIndex, Convert::ToNative(ray), distance)); + List^ results = gcnew List(); + + // Get the collider's position + Vector3 shapePos = Vector3::Zero; + Collider^ managedCollider = object.GetComponent(); + if (!managedCollider) + throw gcnew System::InvalidOperationException("Attempted to retrieve invalid Collider."); + + CollisionShape^ managedShape = managedCollider->GetCollisionShape(shapeIndex); + if (!managedShape) + throw gcnew System::InvalidOperationException("Attempted to retrieve invalid CollisionShape."); + + const auto& NATIVE_SHAPE = managedShape->getNativeCollisionShape(); + shapePos = Convert::ToCLI(NATIVE_SHAPE.GetWorldCentroid()); + + ray.Position += shapePos; + + SHCollisionSpace::RaycastInfo raycastInfo; + raycastInfo.ray = Convert::ToNative(ray); + raycastInfo.continuous = continuous; + raycastInfo.distance = distance; + raycastInfo.SetColliderID(object.EntityId); + + const auto& NATIVE_RESULTS = SHPhysicsSystemInterface::Raycast(raycastInfo); + if (!NATIVE_RESULTS.empty()) + { + for (const auto& nativeResult : NATIVE_RESULTS) + results->Add(Convert::ToCLI(nativeResult)); + } + + return results; } - RaycastHit Physics::ColliderLineCast(GameObject object, Vector3 start, Vector3 end) + List^ Physics::ColliderLineCast(GameObject object, Vector3 start, Vector3 end, bool continuous) { - return Convert::ToCLI(SHPhysicsSystemInterface::ColliderLinecast(object.EntityId, Convert::ToNative(start), Convert::ToNative(end))); + List^ results = gcnew List(); + + // Get the collider's position (same as the transform) + Transform^ managedTransform = object.GetComponent(); + if (!managedTransform) + throw gcnew System::InvalidOperationException("Attempted to retrieve invalid Transform."); + + const Vector3 COLLIDER_POS = managedTransform->GlobalPosition; + start += COLLIDER_POS; + + Vector3 direction = end - start; + direction.Normalise(); + const Ray CLI_RAY( start, direction ); + + SHCollisionSpace::RaycastInfo raycastInfo; + raycastInfo.ray = Convert::ToNative(CLI_RAY); + raycastInfo.distance = (end - start).GetMagnitude(); + raycastInfo.continuous = continuous; + raycastInfo.SetColliderID(object.EntityId); + + const auto& NATIVE_RESULTS = SHPhysicsSystemInterface::Raycast(raycastInfo); + if (!NATIVE_RESULTS.empty()) + { + for (const auto& nativeResult : NATIVE_RESULTS) + results->Add(Convert::ToCLI(nativeResult)); + } + + return results; } - RaycastHit Physics::ColliderLineCast(GameObject object, int shapeIndex, Vector3 start, Vector3 end) + List^ Physics::ColliderLineCast(GameObject object, int shapeIndex, Vector3 start, Vector3 end, bool continuous) { - return Convert::ToCLI(SHPhysicsSystemInterface::ColliderLinecast(object.EntityId, shapeIndex, Convert::ToNative(start), Convert::ToNative(end))); + List^ results = gcnew List(); + + // Get the collider's position + Vector3 shapePos = Vector3::Zero; + Collider^ managedCollider = object.GetComponent(); + if (!managedCollider) + throw gcnew System::InvalidOperationException("Attempted to retrieve invalid Collider."); + + CollisionShape^ managedShape = managedCollider->GetCollisionShape(shapeIndex); + if (!managedShape) + throw gcnew System::InvalidOperationException("Attempted to retrieve invalid CollisionShape."); + + const auto& NATIVE_SHAPE = managedShape->getNativeCollisionShape(); + shapePos = Convert::ToCLI(NATIVE_SHAPE.GetWorldCentroid()); + + start += shapePos; + + Vector3 direction = end - start; + direction.Normalise(); + const Ray CLI_RAY( start, direction ); + + SHCollisionSpace::RaycastInfo raycastInfo; + raycastInfo.ray = Convert::ToNative(CLI_RAY); + raycastInfo.continuous = continuous; + raycastInfo.distance = (end - start).GetMagnitude(); + raycastInfo.SetColliderID(object.EntityId); + + const auto& NATIVE_RESULTS = SHPhysicsSystemInterface::Raycast(raycastInfo); + if (!NATIVE_RESULTS.empty()) + { + for (const auto& nativeResult : NATIVE_RESULTS) + results->Add(Convert::ToCLI(nativeResult)); + } + + return results; } /*-----------------------------------------------------------------------------------*/ diff --git a/SHADE_Managed/src/Physics/Physics.hxx b/SHADE_Managed/src/Physics/Physics.hxx index f13e5952..abbd1891 100644 --- a/SHADE_Managed/src/Physics/Physics.hxx +++ b/SHADE_Managed/src/Physics/Physics.hxx @@ -10,6 +10,7 @@ #pragma once + // Project Includes #include "Math/Ray.hxx" #include "RaycastHit.hxx" @@ -39,83 +40,146 @@ namespace SHADE /* Raycast Function Members */ /*---------------------------------------------------------------------------------*/ + // TODO(Diren): Add layers for raycasting + /// - /// Casts an infinite ray into the world. + /// Casts an infinite ray into the world.
+ /// This raycast will stop at the first object hit. ///
/// The ray to cast. - /// The result of the raycast. - static RaycastHit Raycast (Ray ray); + /// + /// Whether or not the raycast should stop at the first object hit. + /// + /// + /// The results of the raycast. If nothing was hit, an empty list is returned. + /// + static System::Collections::Generic::List^ Raycast (Ray ray, bool continuous); /// /// Casts a ray for a given distance into the world. /// /// The ray to cast. /// The distance to cast the ray. - /// The result of the raycast. - static RaycastHit Raycast (Ray ray, float distance); + /// + /// Whether or not the raycast should stop at the first object hit. + /// + /// + /// The results of the raycast. If nothing was hit, an empty list is returned. + /// + static System::Collections::Generic::List^ Raycast (Ray ray, float distance, bool continuous); /// /// Casts a bounded ray into the world. /// /// The start of the bounded ray. /// The end of the bounded ray. - /// The result of the raycast. - static RaycastHit Linecast (Vector3 start, Vector3 end); + /// + /// Whether or not the raycast should stop at the first object hit. + /// + /// + /// The results of the raycast. If nothing was hit, an empty list is returned. + /// + static System::Collections::Generic::List^ Linecast (Vector3 start, Vector3 end, bool continuous); /// /// Casts an infinite ray w.r.t a GameObject. /// /// The GameObject to cast the ray to. - /// The ray to cast. - /// The result of the raycast. - static RaycastHit ColliderRaycast (GameObject object, Ray ray); + /// + /// The ray to cast.
+ /// The position of the ray is offset from the collider's position. + /// + /// + /// Whether or not the raycast should stop at the first object hit. + /// + /// + /// The results of the raycast. If nothing was hit, an empty list is returned. + /// + static System::Collections::Generic::List^ ColliderRaycast (GameObject object, Ray ray, bool continuous); /// /// Casts a ray for a given distance w.r.t a GameObject. /// /// The GameObject to cast the ray to. - /// The ray to cast. + /// + /// The ray to cast.
+ /// The position of the ray is offset from the collider's position. + /// /// The distance to cast the ray. - /// The result of the raycast. - static RaycastHit ColliderRaycast (GameObject object, Ray ray, float distance); + /// + /// Whether or not the raycast should stop at the first object hit. + /// + /// + /// The results of the raycast. If nothing was hit, an empty list is returned. + /// + static System::Collections::Generic::List^ ColliderRaycast (GameObject object, Ray ray, float distance, bool continuous); /// /// Casts an infinite ray w.r.t a specific collider on a GameObject. /// /// The GameObject to cast the ray to. /// The collision shape index on the collider to cast to. - /// The ray to cast. - /// The result of the raycast. - static RaycastHit ColliderRaycast (GameObject object, int shapeIndex, Ray ray); + /// + /// The ray to cast.
+ /// The position of the ray is offset from the collider's position. + /// + /// + /// Whether or not the raycast should stop at the first object hit. + /// + /// + /// The results of the raycast. If nothing was hit, an empty list is returned. + /// + static System::Collections::Generic::List^ ColliderRaycast (GameObject object, int shapeIndex, Ray ray, bool continuous); /// /// Casts a ray for a given distance w.r.t a specific collider on a GameObject. /// /// The GameObject to cast the ray to. /// The collision shape index on the collider to cast to. - /// The ray to cast. + /// + /// The ray to cast.
+ /// The position of the ray is offset from the collider's position. + /// /// The distance to cast the ray. - /// The result of the raycast. - static RaycastHit ColliderRaycast (GameObject object, int shapeIndex, Ray ray, float distance); + /// + /// Whether or not the raycast should stop at the first object hit. + /// + /// + /// The results of the raycast. If nothing was hit, an empty list is returned. + /// + static System::Collections::Generic::List^ ColliderRaycast (GameObject object, int shapeIndex, Ray ray, float distance, bool continuous); /// /// Casts a bounded ray w.r.t a GameObject. /// /// The GameObject to cast the ray to. - /// The start of the bounded ray. + /// + /// The start of the bounded ray.
+ /// The start of the ray is offset from the collider's position. /// - /// The result of the raycast. - static RaycastHit ColliderLineCast (GameObject object, Vector3 start, Vector3 end); + /// + /// Whether or not the raycast should stop at the first object hit. + /// + /// + /// The results of the raycast. If nothing was hit, an empty list is returned. + /// + static System::Collections::Generic::List^ ColliderLineCast (GameObject object, Vector3 start, Vector3 end, bool continuous); /// /// Casts a bounded ray w.r.t a specific collider on a GameObject. /// /// The GameObject to cast the ray to. /// The collision shape index on the collider to cast to. - /// The start of the bounded ray. + /// + /// The start of the bounded ray.
+ /// The start of the ray is offset from the collider's position. /// The end of the bounded ray. - /// The result of the raycast. - static RaycastHit ColliderLineCast (GameObject object, int shapeIndex, Vector3 start, Vector3 end); + /// + /// Whether or not the raycast should stop at the first object hit. + /// + /// + /// The results of the raycast. If nothing was hit, an empty list is returned./// + static System::Collections::Generic::List^ ColliderLineCast (GameObject object, int shapeIndex, Vector3 start, Vector3 end, bool continuous); private: /*---------------------------------------------------------------------------------*/ diff --git a/SHADE_Managed/src/Scripts/ScriptStore.cxx b/SHADE_Managed/src/Scripts/ScriptStore.cxx index a5a0ebc7..1393fe33 100644 --- a/SHADE_Managed/src/Scripts/ScriptStore.cxx +++ b/SHADE_Managed/src/Scripts/ScriptStore.cxx @@ -30,7 +30,6 @@ of DigiPen Institute of Technology is prohibited. #include "Engine/Application.hxx" #include "Physics/System/SHPhysicsSystemInterface.h" #include "Physics/SHPhysicsEvents.h" -#include "Physics/Collision/SHCollisionInfo.h" namespace SHADE { @@ -605,8 +604,8 @@ namespace SHADE { auto entities = { - std::make_pair(collisionInfo.GetEntityA(), collisionInfo.GetEntityB()), - std::make_pair(collisionInfo.GetEntityB(), collisionInfo.GetEntityA()) + std::make_pair(collisionInfo.info.GetEntityA(), collisionInfo.info.GetEntityB()), + std::make_pair(collisionInfo.info.GetEntityB(), collisionInfo.info.GetEntityA()) }; for (auto entity : entities) { @@ -625,15 +624,15 @@ namespace SHADE for (int i = 0; i < entityScripts->Count; ++i) { Script^ script = entityScripts[i]; - switch (collisionInfo.GetCollisionState()) + switch (collisionInfo.state) { - case SHCollisionInfo::State::ENTER: + case SHCollisionState::ENTER: script->OnCollisionEnter(info); break; - case SHCollisionInfo::State::STAY: + case SHCollisionState::STAY: script->OnCollisionStay(info); break; - case SHCollisionInfo::State::EXIT: + case SHCollisionState::EXIT: script->OnCollisionExit(info); break; } @@ -647,8 +646,8 @@ namespace SHADE { auto entities = { - std::make_pair(triggerInfo.GetEntityA(), triggerInfo.GetEntityB()), - std::make_pair(triggerInfo.GetEntityB(), triggerInfo.GetEntityA()) + std::make_pair(triggerInfo.info.GetEntityA(), triggerInfo.info.GetEntityB()), + std::make_pair(triggerInfo.info.GetEntityB(), triggerInfo.info.GetEntityA()) }; for (auto entity : entities) { @@ -667,15 +666,15 @@ namespace SHADE for (int i = 0; i < entityScripts->Count; ++i) { Script^ script = entityScripts[i]; - switch (triggerInfo.GetCollisionState()) + switch (triggerInfo.state) { - case SHCollisionInfo::State::ENTER: + case SHCollisionState::ENTER: script->OnTriggerEnter(info); break; - case SHCollisionInfo::State::STAY: + case SHCollisionState::STAY: script->OnTriggerStay(info); break; - case SHCollisionInfo::State::EXIT: + case SHCollisionState::EXIT: script->OnTriggerExit(info); break; } diff --git a/SHADE_Managed/src/Utility/Convert.cxx b/SHADE_Managed/src/Utility/Convert.cxx index 590a3cf0..e3a53661 100644 --- a/SHADE_Managed/src/Utility/Convert.cxx +++ b/SHADE_Managed/src/Utility/Convert.cxx @@ -135,6 +135,7 @@ namespace SHADE return cli; } + /*---------------------------------------------------------------------------------*/ /* Handle Conversions */ /*---------------------------------------------------------------------------------*/ diff --git a/SHADE_Managed/src/Utility/Convert.hxx b/SHADE_Managed/src/Utility/Convert.hxx index fb373c51..f48eb66d 100644 --- a/SHADE_Managed/src/Utility/Convert.hxx +++ b/SHADE_Managed/src/Utility/Convert.hxx @@ -144,14 +144,14 @@ namespace SHADE /// /// Converts from a managed RaycastHit to a native SHPhysicsRaycastResult /// - /// The managed RaycastHit to convert from. + /// The managed RaycastHit to convert from. /// Native copy of a managed RaycastHit. static SHPhysicsRaycastResult ToNative(RaycastHit cli); /// - /// Converts from native SHPhysicsRaycastResult to a managed RaycastHit. + /// Converts from a native SHPhysicsRaycastResult to a managed RaycastHit /// - /// The native SHPhysicsRaycastResult to convert from. + /// The native SHPhysicsRaycastResult to convert from. /// Managed copy of a native SHPhysicsRaycastResult. static RaycastHit ToCLI(const SHPhysicsRaycastResult& native); From 4047699544b76b07c146b95f629c590e314b7957 Mon Sep 17 00:00:00 2001 From: Diren D Bharwani Date: Fri, 3 Mar 2023 20:09:59 +0800 Subject: [PATCH 2/8] Auto stash before revert of "Revert "Implemented a custom physics engine"" --- Assets/Scenes/Level2.shade~HEAD | 15162 ++++++++++++++++++++++++++++++ Assets/Scenes/Level2.shade~main | 14793 +++++++++++++++++++++++++++++ 2 files changed, 29955 insertions(+) create mode 100644 Assets/Scenes/Level2.shade~HEAD create mode 100644 Assets/Scenes/Level2.shade~main diff --git a/Assets/Scenes/Level2.shade~HEAD b/Assets/Scenes/Level2.shade~HEAD new file mode 100644 index 00000000..0c3fc9cd --- /dev/null +++ b/Assets/Scenes/Level2.shade~HEAD @@ -0,0 +1,15162 @@ +- EID: 20 + Name: ===== Light ===== + IsActive: true + NumberOfChildren: 3 + Components: ~ + Scripts: ~ +- EID: 296 + Name: Light_Directional + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Light Component: + Position: {x: 0, y: 0, z: 0} + Type: Directional + Direction: {x: 15, y: 90, z: 15} + Color: {x: 1, y: 1, z: 1, w: 1} + Layer: 4294967295 + Strength: 1 + IsActive: true + Scripts: ~ +- EID: 5 + Name: Light_Ambient + IsActive: true + NumberOfChildren: 0 + Components: + Light Component: + Position: {x: 0, y: 0, z: 0} + Type: Ambient + Direction: {x: 0, y: 0, z: 1} + Color: {x: 0.901608765, y: 0.867841423, z: 1, w: 1} + Layer: 4294967295 + Strength: 0.699999988 + IsActive: true + Scripts: ~ +- EID: 65674 + Name: Light_Directional + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.242245644, y: 1.56757355, z: -6.07086945} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Light Component: + Position: {x: 2, y: 1.5, z: -5.5999999} + Type: Directional + Direction: {x: 0, y: 0, z: -1} + Color: {x: 0, y: 0, z: 0, w: 1} + Layer: 4294967295 + Strength: 1 + IsActive: true + Scripts: ~ +- EID: 240 + Name: ====ItemPool==== + IsActive: true + NumberOfChildren: 35 + Components: ~ + Scripts: ~ +- EID: 241 + Name: Mesh_Meat + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4.29928255, y: 1.04368806, z: 3.10842299} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136892700 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.300000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 157 + Name: Mesh_Meat + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.0829463, y: 1.37235689, z: -4.4815464} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136892700 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.300000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 155 + Name: Mesh_Cheese + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4.43617487, y: 1.15123272, z: 4.36190414} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 141841143 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.5, y: 0.150000006, z: 0.5} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 500 + currCategory: 2 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 154 + Name: Mesh_Cheese + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.36943603, y: 1.43484139, z: -3.52366042} + Rotate: {x: 0.266221136, y: 0, z: 0} + Scale: {x: 1, y: 0.999999166, z: 0.999999166} + IsActive: true + Renderable Component: + Mesh: 141841143 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.5, y: 0.150000006, z: 0.5} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 500 + currCategory: 2 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 65778 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4.24789906, y: 0.931104183, z: 2.13486958} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 152 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.5356307, y: 0.850251734, z: 4.42769098} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 151 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.47161412, y: 0.949428797, z: -4.23114157} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 144 + Name: Egg + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: 0.199520111, y: 1.25556076, z: 1.23466492} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 147457317 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Sphere + Radius: 0.200000003 + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 0.5 + ignoreRaccoon: true + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 2 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 143 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0224030018, y: 0.0607728958, z: -0.00627422333} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 134900190 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0.164060935, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 142 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.00627422333, y: 0.0337567925, z: -0.00243234634} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146271645 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.34906584} + IsActive: false + Scripts: ~ +- EID: 141 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0166685581, y: -0.0367090404, z: 0.0114421844} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 135945648 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.261799395} + IsActive: false + Scripts: ~ +- EID: 140 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.020128727, y: -0.0155199468, z: -0.0045747757} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 141722646 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -1.04719758} + IsActive: false + Scripts: ~ +- EID: 66006 + Name: Mesh_Meat + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.662652433, y: 1.31857622, z: 2.67310381} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136892700 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.300000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 471 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.00604016334, y: 1.34554219, z: -4.45292473} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 472 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.60755205, y: 0.949428797, z: -4.45292473} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 473 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.35755205, y: 0.949428797, z: -4.45292473} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 474 + Name: Mesh_Cheese + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.29891086, y: 0.324859649, z: 1.82623053} + Rotate: {x: -1.30018079, y: -5.44327818e-08, z: 2.90564827e-07} + Scale: {x: 1, y: 0.999972939, z: 0.999972939} + IsActive: true + Renderable Component: + Mesh: 141841143 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.5, y: 0.150000006, z: 0.5} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 500 + currCategory: 2 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 475 + Name: Mesh_Meat + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.59078503, y: 0.339213222, z: -0.511481285} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136892700 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.300000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 65689 + Name: Mesh_Meat + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.588481545, y: 1.31857622, z: 2.26481533} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136892700 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.300000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 476 + Name: Mesh_Meat + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.37222624, y: 0.944371462, z: 4.06488085} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136892700 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.300000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 477 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.33684826, y: 1.25251341, z: 1.29717481} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 478 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.16341925, y: 0.865918756, z: -1.33664751} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 479 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.97658026, y: 0.865918756, z: -1.76429439} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 480 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.67503321, y: 0.865918756, z: -1.93959498} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 481 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.94789433, y: 1.197981, z: 4.27040815} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 482 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.73878908, y: 1.197981, z: 4.27040815} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 483 + Name: Mesh_Meat + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.461924851, y: 0.742430747, z: -3.68689799} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136892700 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.300000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 484 + Name: Mesh_Cheese + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.26750499, y: 1.28282726, z: 0.749736428} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 141841143 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.5, y: 0.150000006, z: 0.5} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 500 + currCategory: 2 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 485 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.667112291, y: 1.25251341, z: -4.2965107} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 486 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.24768829, y: 1.25251341, z: -2.47891474} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 487 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.54528368, y: 1.25251341, z: -0.123424977} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 464 + Name: Watermelon + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: -3.26610065, y: 1.34320831, z: 4.47019911} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 134305891 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Sphere + Radius: 0.5 + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 4 + ignoreRaccoon: true + - Type: Item + Enabled: true + Score: 500 + currCategory: 2 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 463 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0218036175, y: 5.38527966e-05, z: 0.202852726} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 144023586 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.400000006, y: 0.300000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0.164060935, y: 0, z: 0} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 3 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 466 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0812162161, y: 0.0825212598, z: -0.0991339684} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 142132679 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.34906584} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 3 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 467 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0350502729, y: -0.210244894, z: -0.0336794853} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 138231239 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.0799999982, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.261799395} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 3 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 468 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.230162144, y: -0.0580062866, z: -0.00789308548} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 135293480 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.0500000007, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -1.04719758} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 3 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 469 + Name: Piece5 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.129600644, y: 0.219047099, z: 0.0484838486} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146157335 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.25, y: 0.0500000007, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0.436332315} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 3 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 176 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.33684826, y: 0.0771836638, z: 6.68176699} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 175 + Name: Mesh_Meat + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.2909081, y: 0.179948017, z: 6.6051631} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136892700 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.300000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 522 + Name: Watermelon + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 1.62003577, y: 0.241820931, z: 5.90758133} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 134305891 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: false + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Sphere + Radius: 0.5 + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 4 + ignoreRaccoon: true + - Type: Item + Enabled: true + Score: 500 + currCategory: 2 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 523 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 0 + Material: 0 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: true + Sleeping Enabled: false + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.400000006, y: 0.300000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0.164060935, y: 0, z: 0} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 3 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 525 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0350502729, y: -0.210244894, z: -0.0336794853} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 138231239 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.0799999982, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.261799395} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 3 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 526 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.230162144, y: -0.0580062866, z: -0.00789308548} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 135293480 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.0500000007, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -1.04719758} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 3 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 527 + Name: Piece5 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.129600644, y: 0.219047099, z: 0.0484838486} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146157335 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.25, y: 0.0500000007, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0.436332315} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 3 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 524 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.62003577, y: -0.241820931, z: -5.90758133} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 142132679 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.34906584} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 3 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 131228 + Name: Watermelon + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0.623170555, y: 1.0488801, z: -0.65238905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 134305891 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Sphere + Radius: 0.5 + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 4 + ignoreRaccoon: true + - Type: Item + Enabled: true + Score: 500 + currCategory: 2 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 66068 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0218036175, y: 5.38527966e-05, z: 0.202852726} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 144023586 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.400000006, y: 0.300000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0.164060935, y: 0, z: 0} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 3 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 66067 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0812162161, y: 0.0825212598, z: -0.0991339684} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 142132679 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.34906584} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 3 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 66066 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0350502729, y: -0.210244894, z: -0.0336794853} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 138231239 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.0799999982, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.261799395} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 3 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 66065 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.230162144, y: -0.0580062866, z: -0.00789308548} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 135293480 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.0500000007, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -1.04719758} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 3 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 66064 + Name: Piece5 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.129600644, y: 0.219047099, z: 0.0484838486} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146157335 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.25, y: 0.0500000007, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0.436332315} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 3 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 533 + Name: Egg + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: 3.11708331, y: 0.333341181, z: 6.14019775} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 147457317 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Sphere + Radius: 0.200000003 + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 0.5 + ignoreRaccoon: true + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 2 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 534 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0224030018, y: 0.0607728958, z: -0.00627422333} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 134900190 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0.164060935, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 535 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.00627422333, y: 0.0337567925, z: -0.00243234634} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146271645 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.34906584} + IsActive: false + Scripts: ~ +- EID: 536 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0166685581, y: -0.0367090404, z: 0.0114421844} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 135945648 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.261799395} + IsActive: false + Scripts: ~ +- EID: 537 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.020128727, y: -0.0155199468, z: -0.0045747757} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 141722646 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -1.04719758} + IsActive: false + Scripts: ~ +- EID: 538 + Name: Egg + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: -0.272738755, y: 1.24863148, z: -4.62824583} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 147457317 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Sphere + Radius: 0.200000003 + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 0.5 + ignoreRaccoon: true + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 2 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 539 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0224030018, y: 0.0607728958, z: -0.00627422333} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 134900190 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0.164060935, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 540 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.00627422333, y: 0.0337567925, z: -0.00243234634} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146271645 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.34906584} + IsActive: false + Scripts: ~ +- EID: 541 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0166685581, y: -0.0367090404, z: 0.0114421844} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 135945648 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.261799395} + IsActive: false + Scripts: ~ +- EID: 542 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.020128727, y: -0.0155199468, z: -0.0045747757} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 141722646 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -1.04719758} + IsActive: false + Scripts: ~ +- EID: 66079 + Name: Egg + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: -1.86591768, y: 0.84575963, z: -1.40127254} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 147457317 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Sphere + Radius: 0.200000003 + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 0.5 + ignoreRaccoon: true + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 2 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 66083 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0224030018, y: 0.0607728958, z: -0.00627422333} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 134900190 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0.164060935, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 66082 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.00627422333, y: 0.0337567925, z: -0.00243234634} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146271645 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.34906584} + IsActive: false + Scripts: ~ +- EID: 66081 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0166685581, y: -0.0367090404, z: 0.0114421844} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 135945648 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.261799395} + IsActive: false + Scripts: ~ +- EID: 66080 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.020128727, y: -0.0155199468, z: -0.0045747757} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 141722646 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -1.04719758} + IsActive: false + Scripts: ~ +- EID: 15 + Name: ====ScoreZonePool==== + IsActive: true + NumberOfChildren: 2 + Components: ~ + Scripts: ~ +- EID: 13 + Name: ScoreZone + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 2.24178481, y: 1.4327563, z: 9.46397972} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: true + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: true + Collision Tag: 0 + Type: Box + Half Extents: {x: 1.79999995, y: 1, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: ScoringZone + Enabled: true +- EID: 18 + Name: CollisionWall + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0655272007, y: 0.127076745, z: -0.344656944} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1.79999995, y: 1, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 14 + Name: ScoreZone + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: -0.5, y: 1.5, z: -5} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: true + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: true + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: ScoringZone + Enabled: true +- EID: 17 + Name: CollisionWall + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.5, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 238 + Name: ====GameManager==== + IsActive: true + NumberOfChildren: 0 + Components: ~ + Scripts: + - Type: GameManager + Enabled: true + winScene: 92009475 + loseScene: 91685359 + currGameState: 0 + totalItemCount: 0 + Score: 0 + timer: 200 + scoreText: 237 + timeText: 206 + multiplierText: 139 + maxMultiplierDuration: 5 + maxMultiplierCombo: 10 + multiplierFont: 60 + - Type: PauseMenu + Enabled: true + resumeBtn: 8 + retryBtn: 459 + quitBtn: 0 + canvas: 10 +- EID: 199 + Name: Gameplay Canvas + IsActive: true + NumberOfChildren: 3 + Components: + Canvas Component: + Canvas Width: 1920 + Canvas Height: 1080 + Scale by canvas width: false + IsActive: true + Scripts: ~ +- EID: 237 + Name: Score Text + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: -800, y: 365, z: 0.600000024} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 100, y: 100, z: 60} + IsActive: true + Text Renderer Component: + Text: My name is Brandon. + Font: 174412429 + Color: {x: 1, y: 1, z: 1, w: 1} + Text Size: {x: 1, y: 1, z: 1} + IsActive: true + UI Component: + Canvas ID: 199 + 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: ~ +- EID: 206 + Name: Timer + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 500, y: 400, z: 0.100000001} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 60, y: 60, z: 60} + IsActive: true + Text Renderer Component: + Text: My name is Brandon. + Font: 176667660 + Color: {x: 1, y: 1, z: 1, w: 1} + Text Size: {x: 1, y: 1, z: 1} + IsActive: true + UI Component: + Canvas ID: 199 + Hovered: false + Clicked: false + IsActive: true + Scripts: ~ +- EID: 139 + Name: Multiplier Text + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: -800, y: 250, z: 0.100000001} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 50, y: 50, z: 60} + IsActive: true + Text Renderer Component: + Text: X2 + Font: 174412429 + Color: {x: 1, y: 1, z: 1, w: 1} + Text Size: {x: 1, y: 1, z: 1} + IsActive: true + UI Component: + Canvas ID: 199 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.MultiplierTextFx + Enabled: true + maxSize: 1 + minSize: 0.300000012 + minAlpha: 0.300000012 +- EID: 520 + Name: Multiplier BG + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.400000006, y: 0.400000006, z: 0.98999995} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 4.26499987, y: 2, z: 1} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 133784677 + IsActive: true + UI Component: + Canvas ID: 199 + Hovered: false + Clicked: false + IsActive: true + Scripts: ~ +- EID: 198 + Name: ====Raccoon==== + IsActive: true + NumberOfChildren: 2 + Components: ~ + Scripts: ~ +- EID: 2 + Name: Player + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 2.35245037, y: 0.0613552481, z: 7.10571432} + Rotate: {x: -0, y: 3.14159274, z: -0} + Scale: {x: 0.999999881, y: 1, z: 0.999999881} + IsActive: true + Renderable Component: + Mesh: 149697411 + Material: 126974645 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: false + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: true + Freeze Rotation Y: true + Freeze Rotation Z: true + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.400000006, y: 0.5, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.25, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: PlayerController + Enabled: true + respawnPoint: 239 + currentState: 0 + maxMoveVel: 3 + moveForce: 50 + sprintMultiplier: 1.5 + rotationFactorPerFrame: 5 + maxJumpHeight: 2 + maxJumpTime: 0.75 + fallMultipler: 3 + jumpPadMultiplayer: 1.20000005 + lightMultiper: 0.899999976 + mediumMultiper: 0.699999988 + heavyMultiper: 0.5 + silhouettePlayer: 462 + silhouetteBag: 465 + - Type: PickAndThrow + Enabled: true + throwForce: [10, 8, 10] + cameraArmOffSet: [0.25, 0.600000024, 0.200000003] + delayTimer: 1 + aimingLength: 1 + throwItem: false + silhouettePlayer: 51000 + silhouetteBag: 51000 + rayDistance: 0.75 + rayHeight: 0.100000001 + aimingFOV: 50 + defaultFOV: 45 +- EID: 3 + Name: HoldingPoint + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0.899999976, z: 0.200000286} + Rotate: {x: 0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 4 + Name: PlayerCamera + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: -5.96046448e-08, z: 0} + Rotate: {x: 0, y: 3.14159274, z: 2.23517329e-08} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Camera Component: + Position: {x: 2.12735963, y: 0.362327784, z: 7.98933029} + Pitch: 0 + Yaw: 360 + Roll: 1.28065994e-06 + Width: 1920 + Near: 0.00999999978 + Far: 10000 + Perspective: true + FOV: 45 + IsActive: true + Camera Arm Component: + Arm Pitch: 20 + Arm Yaw: 0 + Arm Length: 3 + Look At Camera Origin: true + Target Offset: {x: 0, y: 0.75, z: 0} + Camera Collision: true + IsActive: true + Scripts: + - Type: SHADE_Scripting.ThirdPersonCamera + Enabled: true + armLength: 3 + turnSpeedPitch: 0.200000003 + turnSpeedYaw: 0.400000006 + inverseXControls: true + inverseYControls: false + pitchUpperClamp: 45 + pitchLowerClamp: 5 +- EID: 9 + Name: PlayerBag + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: -2.98023224e-08, z: 4.76837158e-07} + Rotate: {x: 0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144838771 + Material: 123745521 + IsActive: true + Scripts: ~ +- EID: 462 + Name: SilouettePlayer + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.38418579e-07, y: -2.98023224e-08, z: -2.98023224e-07} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 149697411 + Material: 126391182 + IsActive: true + Scripts: ~ +- EID: 465 + Name: SilouetteBag + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: -2.98023224e-08, z: 4.76837158e-07} + Rotate: {x: 0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144838771 + Material: 126391182 + IsActive: true + Scripts: ~ +- EID: 239 + Name: RespawnPoint + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.5, y: 0.660660267, z: 7} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 177 + Name: ====Breakables==== + IsActive: true + NumberOfChildren: 10 + Components: ~ + Scripts: ~ +- EID: 1 + Name: Plate + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: 4.39069891, y: 1.33369851, z: -2.95690465} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 140964851 + Material: 124370424 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.200000003, y: 0.100000001, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 0.100000001 + ignoreRaccoon: false +- EID: 196 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0586929321, y: 0, z: 0} + Rotate: {x: -0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146557542 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 195 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0104182959, y: 0, z: -0.0662035942} + Rotate: {x: -0, y: 0.174533099, z: -0} + Scale: {x: 0.999999881, y: 1, z: 0.999999881} + IsActive: false + Renderable Component: + Mesh: 145439064 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 6 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0431699753, y: 1.18017197e-05, z: -0.0288243294} + Rotate: {x: -0, y: 0, z: 0.174533099} + Scale: {x: 0.999999881, y: 0.999999583, z: 1} + IsActive: false + Renderable Component: + Mesh: 139411134 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 7 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0341523886, y: 0.0088942796, z: 0.0554270744} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 136742160 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 65707 + Name: Plate + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: -1.62782168, y: 1.24122202, z: 0.321960568} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 140964851 + Material: 124370424 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.200000003, y: 0.100000001, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 0.100000001 + ignoreRaccoon: false +- EID: 65703 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0586929321, y: 0, z: 0} + Rotate: {x: -0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146557542 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 65704 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0104182959, y: 0, z: -0.0662035942} + Rotate: {x: -0, y: 0.174533099, z: -0} + Scale: {x: 0.999999881, y: 1, z: 0.999999881} + IsActive: false + Renderable Component: + Mesh: 145439064 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 65705 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0431697369, y: 1.18017197e-05, z: -0.0288243294} + Rotate: {x: 0, y: 0, z: 0.174533099} + Scale: {x: 0.999999881, y: 0.999999583, z: 1} + IsActive: false + Renderable Component: + Mesh: 139411134 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 65706 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0341523886, y: 0.0088942796, z: 0.0554270744} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 136742160 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 150 + Name: Plate + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: 1.25038707, y: 0.118150897, z: 0.393263906} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 140964851 + Material: 124370424 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.200000003, y: 0.100000001, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 0.100000001 + ignoreRaccoon: false +- EID: 149 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0586929321, y: 0, z: 0} + Rotate: {x: -0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146557542 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 148 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0104182959, y: 0, z: -0.0662035942} + Rotate: {x: -0, y: 0.174533099, z: -0} + Scale: {x: 0.999999881, y: 1, z: 0.999999881} + IsActive: false + Renderable Component: + Mesh: 145439064 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 147 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0431699753, y: 1.18017197e-05, z: -0.0288243294} + Rotate: {x: -0, y: 0, z: 0.174533099} + Scale: {x: 0.999999881, y: 0.999999583, z: 1} + IsActive: false + Renderable Component: + Mesh: 139411134 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 146 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0341523886, y: 0.0088942796, z: 0.0554270744} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 136742160 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 145 + Name: Plate + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: 1.55880511, y: 0.118150897, z: 0.619565189} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 140964851 + Material: 124370424 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.200000003, y: 0.100000001, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 0.100000001 + ignoreRaccoon: false +- EID: 488 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0586929321, y: 0, z: 0} + Rotate: {x: -0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146557542 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 489 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0104182959, y: 0, z: -0.0662035942} + Rotate: {x: -0, y: 0.174533099, z: -0} + Scale: {x: 0.999999881, y: 1, z: 0.999999881} + IsActive: false + Renderable Component: + Mesh: 145439064 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 490 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0431699753, y: 1.18017197e-05, z: -0.0288243294} + Rotate: {x: -0, y: 0, z: 0.174533099} + Scale: {x: 0.999999881, y: 0.999999583, z: 1} + IsActive: false + Renderable Component: + Mesh: 139411134 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 491 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0341523886, y: 0.0088942796, z: 0.0554270744} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 136742160 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 492 + Name: Plate + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: 4.31892872, y: 0.25564307, z: 0.661221743} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 140964851 + Material: 124370424 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.200000003, y: 0.100000001, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 0.100000001 + ignoreRaccoon: false +- EID: 493 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0586929321, y: 0, z: 0} + Rotate: {x: -0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146557542 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 494 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0104182959, y: 0, z: -0.0662035942} + Rotate: {x: -0, y: 0.174533099, z: -0} + Scale: {x: 0.999999881, y: 1, z: 0.999999881} + IsActive: false + Renderable Component: + Mesh: 145439064 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 495 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0431699753, y: 1.18017197e-05, z: -0.0288243294} + Rotate: {x: -0, y: 0, z: 0.174533099} + Scale: {x: 0.999999881, y: 0.999999583, z: 1} + IsActive: false + Renderable Component: + Mesh: 139411134 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 496 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0341523886, y: 0.0088942796, z: 0.0554270744} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 136742160 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 497 + Name: Plate + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: 4.31892872, y: 0.25564307, z: 1.16538286} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 140964851 + Material: 124370424 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.200000003, y: 0.100000001, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 0.100000001 + ignoreRaccoon: false +- EID: 498 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0586929321, y: 0, z: 0} + Rotate: {x: -0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146557542 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 499 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0104182959, y: 0, z: -0.0662035942} + Rotate: {x: -0, y: 0.174533099, z: -0} + Scale: {x: 0.999999881, y: 1, z: 0.999999881} + IsActive: false + Renderable Component: + Mesh: 145439064 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 500 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0431699753, y: 1.18017197e-05, z: -0.0288243294} + Rotate: {x: -0, y: 0, z: 0.174533099} + Scale: {x: 0.999999881, y: 0.999999583, z: 1} + IsActive: false + Renderable Component: + Mesh: 139411134 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 501 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0341523886, y: 0.0088942796, z: 0.0554270744} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 136742160 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 502 + Name: Plate + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: 4.2164793, y: 0.254351377, z: 1.81888735} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 140964851 + Material: 124370424 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.200000003, y: 0.100000001, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 0.100000001 + ignoreRaccoon: false +- EID: 503 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0586929321, y: 0, z: 0} + Rotate: {x: -0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146557542 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 504 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0104182959, y: 0, z: -0.0662035942} + Rotate: {x: -0, y: 0.174533099, z: -0} + Scale: {x: 0.999999881, y: 1, z: 0.999999881} + IsActive: false + Renderable Component: + Mesh: 145439064 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 505 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0431699753, y: 1.18017197e-05, z: -0.0288243294} + Rotate: {x: -0, y: 0, z: 0.174533099} + Scale: {x: 0.999999881, y: 0.999999583, z: 1} + IsActive: false + Renderable Component: + Mesh: 139411134 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 506 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0341523886, y: 0.0088942796, z: 0.0554270744} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 136742160 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 507 + Name: Plate + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: -1.35538912, y: 0.840553164, z: -2.1925149} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 140964851 + Material: 124370424 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.200000003, y: 0.100000001, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 0.100000001 + ignoreRaccoon: false +- EID: 508 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0586929321, y: 0, z: 0} + Rotate: {x: -0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146557542 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 509 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0104182959, y: 0, z: -0.0662035942} + Rotate: {x: -0, y: 0.174533099, z: -0} + Scale: {x: 0.999999881, y: 1, z: 0.999999881} + IsActive: false + Renderable Component: + Mesh: 145439064 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 510 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0431699753, y: 1.18017197e-05, z: -0.0288243294} + Rotate: {x: -0, y: 0, z: 0.174533099} + Scale: {x: 0.999999881, y: 0.999999583, z: 1} + IsActive: false + Renderable Component: + Mesh: 139411134 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 511 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0341523886, y: 0.0088942796, z: 0.0554270744} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 136742160 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 512 + Name: Plate + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: -0.486019313, y: 1.24122202, z: -0.516791761} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 140964851 + Material: 124370424 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.200000003, y: 0.100000001, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 0.100000001 + ignoreRaccoon: false +- EID: 513 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0586929321, y: 0, z: 0} + Rotate: {x: -0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146557542 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 514 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0104182959, y: 0, z: -0.0662035942} + Rotate: {x: -0, y: 0.174533099, z: -0} + Scale: {x: 0.999999881, y: 1, z: 0.999999881} + IsActive: false + Renderable Component: + Mesh: 145439064 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 515 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0431697369, y: 1.18017197e-05, z: -0.0288243294} + Rotate: {x: 0, y: 0, z: 0.174533099} + Scale: {x: 0.999999881, y: 0.999999583, z: 1} + IsActive: false + Renderable Component: + Mesh: 139411134 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 516 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0341523886, y: 0.0088942796, z: 0.0554270744} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 136742160 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 517 + Name: Plate + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: -1.24972427, y: 1.24122202, z: 1.70917392} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 140964851 + Material: 124370424 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.200000003, y: 0.100000001, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 0.100000001 + ignoreRaccoon: false +- EID: 518 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0586929321, y: 0, z: 0} + Rotate: {x: -0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146557542 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 519 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0104182959, y: 0, z: -0.0662035942} + Rotate: {x: -0, y: 0.174533099, z: -0} + Scale: {x: 0.999999881, y: 1, z: 0.999999881} + IsActive: false + Renderable Component: + Mesh: 145439064 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 461 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0431697369, y: 1.18017197e-05, z: -0.0288243294} + Rotate: {x: 0, y: 0, z: 0.174533099} + Scale: {x: 0.999999881, y: 0.999999583, z: 1} + IsActive: false + Renderable Component: + Mesh: 139411134 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 460 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0341523886, y: 0.0088942796, z: 0.0554270744} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 136742160 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 166 + Name: ====WaypointPool==== + IsActive: true + NumberOfChildren: 7 + Components: ~ + Scripts: ~ +- EID: 165 + Name: 1 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.75, y: 0, z: -2} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 164 + Name: 2 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.25, y: 0, z: -3} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 163 + Name: 3 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: -3.75} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 162 + Name: 4 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.75, y: 0, z: -2.25} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 161 + Name: 5 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.75, y: 0, z: 2.75} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 160 + Name: 6 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.5, y: 0, z: 4} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 159 + Name: 7 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.75, y: 0, z: 4} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 158 + Name: ====AI===== + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0576689839, y: 0, z: -2.61272359} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140697366 + Material: 129495479 + IsActive: true + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: true + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: true + Freeze Rotation Y: false + Freeze Rotation Z: true + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 5 + Type: Box + Half Extents: {x: 0.600000024, y: 1.79999995, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.899999976, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Homeowner1 + Enabled: true + waypointsPool: 166 + patrolSpeed: 3 + chaseSpeed: 6 + turningSpeed: 5 + sightDistance: 8 + eyeOffset: [0, 1.64999998, 0] + distanceToCapture: 0.5 + captureTime: 0.5 + footstepSFXIntervalMultiplier: 0.5 +- EID: 12 + Name: Mesh_Meat + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.964969039, y: 0.103873327, z: 6.05876541} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 136892700 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Auto Mass: false + Mass: 1 + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Gravity Scale: 1 + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.300000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 16 + Name: JumpPad + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.52692485, y: 0, z: 6.85981083} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 1, y: 0.25, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: JumpPad + Enabled: true +- EID: 10 + Name: Pause Canvas + IsActive: true + NumberOfChildren: 4 + Components: + Canvas Component: + Canvas Width: 1920 + Canvas Height: 1080 + Scale by canvas width: false + IsActive: true + Scripts: ~ +- EID: 8 + Name: ResumeButton + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 100, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 400, y: 100, z: 500} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 129340704 + IsActive: true + Button Component: + Default Texture: 63979907 + Hovered Texture: 51379325 + Clicked Texture: 66788278 + IsActive: true + UI Component: + Canvas ID: 10 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.ButtonFX + Enabled: true + onHoverEnterSound: event:/Music/player_undetected + onHoverExitSound: event:/Music/player_undetected + onClickSound: event:/Music/player_undetected + onReleaseSound: event:/Music/player_undetected + hoverScale: 1.10000002 + clickScale: 0.899999976 +- EID: 0 + Name: QuitButton + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: -300, z: 0} + Rotate: {x: -4.5, y: 2, z: -2.5} + Scale: {x: 400, y: 100, z: 500} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 129340704 + IsActive: true + Button Component: + Default Texture: 61602036 + Hovered Texture: 58910810 + Clicked Texture: 57786063 + IsActive: true + UI Component: + Canvas ID: 10 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.ButtonFX + Enabled: true + onHoverEnterSound: event:/Music/player_undetected + onHoverExitSound: event:/Music/player_undetected + onClickSound: event:/Music/player_undetected + onReleaseSound: event:/Music/player_undetected + hoverScale: 1.10000002 + clickScale: 0.899999976 +- EID: 459 + Name: RetryButton + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: -100, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 400, y: 100, z: 500} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 129340704 + IsActive: true + Button Component: + Default Texture: 64806384 + Hovered Texture: 58347825 + Clicked Texture: 63234380 + IsActive: true + UI Component: + Canvas ID: 10 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.ButtonFX + Enabled: true + onHoverEnterSound: event:/Music/player_undetected + onHoverExitSound: event:/Music/player_undetected + onClickSound: event:/Music/player_undetected + onReleaseSound: event:/Music/player_undetected + hoverScale: 1.10000002 + clickScale: 0.899999976 +- EID: 11 + Name: GamePause + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -250, y: 300, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 100, y: 100, z: 100} + IsActive: true + Text Renderer Component: + Text: Game Pause + Font: 176667660 + Color: {x: 1, y: 1, z: 1, w: 1} + Text Size: {x: 1, y: 1, z: 1} + IsActive: false + UI Component: + Canvas ID: 10 + Hovered: false + Clicked: false + IsActive: true + Scripts: ~ +- EID: 19 + Name: ====EnvironmentMaster==== + IsActive: true + NumberOfChildren: 4 + 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: 136 + Name: Main_Room + IsActive: true + NumberOfChildren: 3 + 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: 51 + Name: Floor_Master + IsActive: true + NumberOfChildren: 6 + 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: 26 + Name: Floor_Row_1 + IsActive: true + NumberOfChildren: 5 + 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: 21 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 22 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 23 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 24 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 25 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 27 + Name: Floor_Row_2 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: -2} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 28 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 29 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 30 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 31 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 32 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 33 + Name: Floor_Row_3 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 2} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 34 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 35 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 36 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 37 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 38 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 39 + Name: Floor_Row_4 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: -4} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 40 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 41 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 42 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 43 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 44 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 45 + Name: Floor_Row_5 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 4} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 46 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 47 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 48 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 49 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 50 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 65779 + Name: Floor_Collider + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 10, y: 0.0500000007, z: 18} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 82 + Name: Walls_Master + IsActive: true + NumberOfChildren: 25 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1.10000002, z: 1} + IsActive: true + Scripts: ~ +- EID: 53 + Name: Window_O_Small + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.5, y: 0, z: -5} + Rotate: {x: 0, y: -3.1415925, z: 0} + Scale: {x: 0.999988258, y: 1, z: 0.999988258} + IsActive: true + Renderable Component: + Mesh: 149786048 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.200000003, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 2.0999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.899999976, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.449999988, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.449999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65591 + Name: Wall_Corner + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5, y: 0, z: 5} + Rotate: {x: -0, y: 1.57079649, z: 0} + Scale: {x: 0.999999523, y: 1, z: 0.999999523} + IsActive: true + Renderable Component: + Mesh: 134714737 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: -0.449999988} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 56 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.12474632, y: 0, z: -5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.24999325, y: 1, z: 0.999946237} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 57 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5, y: 0, z: -3} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999992847, y: 1, z: 0.999992847} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 58 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5, y: 0, z: 3} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.99996388, y: 1, z: 0.99996388} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 59 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5, y: 0, z: -1} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999984503, y: 1, z: 0.999984503} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 60 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1, y: 0, z: 5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999947786, y: 1, z: 0.999947786} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 61 + Name: Wall_Corner + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5, y: 0, z: -5} + Rotate: {x: 0, y: -3.1415925, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 134714737 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: -0.449999988} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 64 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.5, y: 0, z: 5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -5, y: 0, z: -1.5} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999983549, y: 1, z: 0.999983549} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 66 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -5, y: 0, z: -2.125} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.24999325, y: 1, z: 0.999946237} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 69 + Name: Door_Wall_Frame + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: -5, y: 0, z: -0.5} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999984145, y: 1, z: 0.999984145} + IsActive: true + Renderable Component: + Mesh: 150924328 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.150000006, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 2.125, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.455000013, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.455000013, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 70 + Name: Door_Door_Frame + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: -6.4710548e-10, y: 0, z: -0.00173091888} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1.10000002, z: 1} + IsActive: true + Renderable Component: + Mesh: 146862321 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: ~ + IsActive: true + Scripts: ~ +- EID: 71 + Name: Door_Main_Piece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.400000006, y: 0, z: 0.113865376} + Rotate: {x: -0, y: 1.57079649, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 147152385 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.800000012, y: 2, z: 0.0350000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.400000006, y: 1, z: -0.0175000001} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65608 + Name: Window_C_Large + IsActive: true + NumberOfChildren: 0 + 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} + IsActive: true + Renderable Component: + Mesh: 148351779 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65609 + Name: Wall_Corner + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -5, y: 0, z: 5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 134714737 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: -0.449999988} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65610 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5, y: 0, z: 1} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999973536, y: 1, z: 0.999973536} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 75 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -5, y: 0, z: 1} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999958873, y: 1, z: 0.999958873} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 76 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3, y: 0, z: 5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999947786, y: 1, z: 0.999947786} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 77 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1, y: 0, z: 5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999947786, y: 1, z: 0.999947786} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 78 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.5, y: 0, z: -5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 79 + Name: Door_Wall_Frame + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 2.5, y: 0, z: 5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150924328 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.150000006, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 2.125, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.455000013, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.455000013, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 80 + Name: Door_Door_Frame + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1.10000002, z: 1} + IsActive: true + Renderable Component: + Mesh: 146862321 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: ~ + IsActive: true + Scripts: ~ +- EID: 81 + Name: Door_Main_Piece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.400000095, y: 0, z: 0.113215446} + Rotate: {x: 0, y: -2.96705961, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 147152385 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.800000012, y: 2, z: 0.0350000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.400000006, y: 1, z: -0.0175000001} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 54 + Name: Window_C_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: -5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 148351779 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 67 + Name: Window_C_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.87180281, y: 0, z: -4.27037907} + Rotate: {x: -0, y: 0.785398066, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 148351779 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 68 + Name: Window_C_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4.28601646, y: 0, z: -2.85616589} + Rotate: {x: -0, y: 0.785398066, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 148351779 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65588 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.5, y: 0, z: -5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 131135 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.5, y: 0, z: -5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 83 + Name: Ceiling_Master + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 2.46117163, z: 0} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 84 + Name: Floor_Row_1 + IsActive: true + NumberOfChildren: 5 + 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: 85 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 86 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 87 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 88 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 89 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 90 + Name: Floor_Row_2 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: -2} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 91 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 92 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 93 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 94 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 95 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 96 + Name: Floor_Row_3 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 2} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 97 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 98 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 99 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 100 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 101 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 102 + Name: Floor_Row_4 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: -4} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 103 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 104 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 105 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 106 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 107 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 108 + Name: Floor_Row_5 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 4} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 109 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 110 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 111 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 112 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 113 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 137 + Name: Entrance_Room + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: 2.25, y: 0, z: 7} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 127 + Name: Floor_Master + IsActive: true + NumberOfChildren: 2 + 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: 118 + Name: Floor_Row_1 + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: -1, y: 0, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 119 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 132690168 + IsActive: true + Scripts: ~ +- EID: 120 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 132690168 + IsActive: true + Scripts: ~ +- EID: 122 + Name: Floor_Row_2 + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: -1, y: 0, z: 1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 123 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 132690168 + IsActive: true + Scripts: ~ +- EID: 124 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 132690168 + IsActive: true + Scripts: ~ +- EID: 128 + Name: Ceiling_Master + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: 0, y: 2.36603451, z: 0} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 129 + Name: Floor_Row_1 + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: -1, y: 0, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 130 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 131 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 132 + Name: Floor_Row_2 + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: -1, y: 0, z: 1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 133 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 134 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 135 + Name: Wall_Master + IsActive: true + NumberOfChildren: 7 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1.10000002, z: 1} + IsActive: true + Scripts: ~ +- EID: 65661 + Name: Wall_Corner + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 2} + Rotate: {x: -0, y: 1.57079649, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 134714737 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: -0.449999988} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65657 + Name: Wall_Corner + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 2} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 134714737 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: -0.449999988} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65653 + Name: Window_O_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 2} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 138781993 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.200000003, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 2.0999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.899999976, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.449999988, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.949999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.949999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 131186 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999992251, y: 1, z: 0.999992251} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 131187 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999995828, y: 1, z: 0.999995828} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65652 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: -1.5} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999990523, y: 1, z: 0.999990523} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 126 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: -1.5} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999993861, y: 1, z: 0.999993861} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 235 + Name: Furniture_Chair01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.5, y: 0, z: 1.5} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.999954104, y: 1, z: 0.999954104} + IsActive: true + Renderable Component: + Mesh: 142860936 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.219999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.180000007, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 273 + Name: Furnitures + IsActive: true + NumberOfChildren: 10 + Components: + Transform Component: + Translate: {x: 1.25, y: 0, z: 1.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 131134 + Name: SetA + IsActive: true + NumberOfChildren: 10 + Components: + Transform Component: + Translate: {x: 0.75, y: 0, z: -4.67308044} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 178 + Name: Furniture_CounterBlock1 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.5, y: 0, z: -1.5} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999954104, y: 1, z: 0.999954104} + IsActive: true + Renderable Component: + Mesh: 142281760 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 179 + Name: BottomLid + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.5, y: 0, z: -1.5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999834061, y: 1, z: 0.999834061} + IsActive: true + Renderable Component: + Mesh: 144974966 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 180 + Name: Furniture_CounterBlock2 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.5, y: 0, z: -0.5} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.99990958, y: 1, z: 0.99990958} + IsActive: true + Renderable Component: + Mesh: 144974966 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65719 + Name: Furniture_CounterDrawer1 + IsActive: true + NumberOfChildren: 3 + Components: + Transform Component: + Translate: {x: 2.5, y: 0, z: 0.25} + Rotate: {x: 0, y: -3.1415925, z: 0} + Scale: {x: 0.999855638, y: 1, z: 0.999855638} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65717 + Name: Furniture_CounterDrawerSmall + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.980086565, y: 0.306859791, z: 0.000663099228} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999737263, y: 1, z: 0.999737263} + IsActive: true + Renderable Component: + Mesh: 135779275 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.970000029, y: 0.0250000004, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.219999999, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.147, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.757000029, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: -0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: 0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65720 + Name: Furniture_CounterDrawerSmall + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.546036243, y: 1.02225077, z: 0.00050569122} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999866426, y: 1, z: 0.999866426} + IsActive: true + Renderable Component: + Mesh: 135779275 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.970000029, y: 0.0250000004, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.219999999, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.147, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.757000029, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: -0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: 0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65718 + Name: Furniture_CounterDrawerSmall + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.79029417, y: 0.665752649, z: 0.000704084581} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999760687, y: 1, z: 0.999760687} + IsActive: true + Renderable Component: + Mesh: 135779275 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.970000029, y: 0.0250000004, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.219999999, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.147, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.757000029, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: -0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: 0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 185 + Name: Furniture_Oven + IsActive: true + NumberOfChildren: 2 + 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} + IsActive: true + Renderable Component: + Mesh: 136828790 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 186 + Name: Oven_Door + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 0.537624598, y: 0.246981457, z: 0.000124454513} + Rotate: {x: 1.34603506e-05, y: 3.58487387e-06, z: -1.04719746} + Scale: {x: 1.00001323, y: 0.999983132, z: 0.999992907} + IsActive: true + Renderable Component: + Mesh: 150740704 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.725000024, z: 0.850000024} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.375, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 187 + Name: Oven_Glass + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.13589262e-05, y: 0.354365677, z: -4.48226929e-05} + Rotate: {x: -5.66244012e-07, y: 1.57079184, z: -1.04719758} + Scale: {x: 0.999997735, y: 0.999998629, z: 0.999999285} + IsActive: true + Renderable Component: + Mesh: 135623020 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 188 + Name: Oven_Tray + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.678130627, y: 0.635995746, z: -0.000453472167} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999971926, y: 1, z: 0.947892308} + IsActive: true + Renderable Component: + Mesh: 136078992 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.800000012, y: 0.0500000007, z: 0.800000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 189 + Name: Furniture_CounterSink2 + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: -0.5, y: 0, z: -1.5} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.999882996, y: 1, z: 0.999882996} + IsActive: true + Renderable Component: + Mesh: 141601355 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.860000014, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.444999993, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.300000012, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.444999993, y: 1.04999995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.04999995, z: 0.444999993} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.04999995, z: -0.444999993} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.449999988, y: 1.38999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 190 + Name: Furniture_CounterDoorRightFull + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.499101311, y: 0.0500000007, z: 0.460019141} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999967337, y: 1, z: 0.999967337} + IsActive: true + Renderable Component: + Mesh: 146520338 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 1.07500005, z: 0.925000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.540000021, z: -0.460000008} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 191 + Name: Furniture_CounterSink3 + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 0.5, y: 0, z: -1.5} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.999868512, y: 1, z: 0.999868512} + IsActive: true + Renderable Component: + Mesh: 141601355 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.860000014, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.444999993, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.300000012, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.444999993, y: 1.04999995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.04999995, z: 0.444999993} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.04999995, z: -0.444999993} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.449999988, y: 1.38999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 192 + Name: Furniture_CounterDoorLeftFull + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500843167, y: 0.0500000007, z: -0.459560156} + Rotate: {x: -0, y: 0.559825659, z: 0} + Scale: {x: 0.999928236, y: 1, z: 0.999928236} + IsActive: true + Renderable Component: + Mesh: 150547241 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 1.07500005, z: 0.925000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.540000021, z: 0.460000008} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 193 + Name: Furniture_CounterBlock2 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.5, y: 0, z: -1.5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999834061, y: 1, z: 0.999834061} + IsActive: true + Renderable Component: + Mesh: 144974966 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 194 + Name: Furniture_ServiceTray + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.3758707, y: 0, z: -0.556610107} + Rotate: {x: -0, y: 1.66631782, z: 0} + Scale: {x: 0.999944031, y: 1, z: 0.999944031} + IsActive: true + Renderable Component: + Mesh: 140279658 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.400000006, y: 1.29999995, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.699999988, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.600000024, y: 1.70000005, z: 0.0700000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.850000024, z: -0.5} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.600000024, y: 1.70000005, z: 0.0700000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.850000024, z: 0.5} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 197 + Name: Furniture_TallStool01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25, y: 0, z: -1.57691956} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140539561 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.300000012, y: 0.800000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 205 + Name: SetB + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: -3, y: 0, z: -3.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 200 + Name: Furniture_Table01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0670871735, y: 0, z: 0.236379623} + Rotate: {x: -0, y: -0.785398245, z: 0} + Scale: {x: 1.49995053, y: 1, z: 1.49995029} + IsActive: true + Renderable Component: + Mesh: 140474147 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.699999988, y: 0.0500000007, z: 1.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.77700001, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.449999988, y: 0.400000006, z: -0.850000024} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.449999988, y: 0.400000006, z: 0.850000024} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.449999988, y: 0.400000006, z: 0.850000024} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.449999988, y: 0.400000006, z: -0.850000024} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 201 + Name: Furniture_Chair01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.901912689, y: -2.37551575e-07, z: 0.00345230103} + Rotate: {x: -0, y: 1.95162022, z: 0} + Scale: {x: 0.999974966, y: 1, z: 0.999974966} + IsActive: true + Renderable Component: + Mesh: 142860936 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.219999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.180000007, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 202 + Name: Furniture_Chair01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.180002213, y: 0, z: -0.507282257} + Rotate: {x: -0, y: 2.26356983, z: 0} + Scale: {x: 0.999929309, y: 1, z: 0.999929309} + IsActive: true + Renderable Component: + Mesh: 142860936 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.219999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.180000007, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 203 + Name: Furniture_Chair01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.905802727, y: -2.37634836e-07, z: 0.32503891} + Rotate: {x: 0, y: -2.49300814, z: 0} + Scale: {x: 0.999879777, y: 1, z: 0.999879777} + IsActive: true + Renderable Component: + Mesh: 142860936 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.219999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.180000007, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 204 + Name: Furniture_Chair01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.483336449, y: -1.01110842e-07, z: 1.39031887} + Rotate: {x: 0, y: -0.448161721, z: 0} + Scale: {x: 0.999916553, y: 1, z: 0.999916553} + IsActive: true + Renderable Component: + Mesh: 142860936 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.219999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.180000007, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 236 + Name: SetC + IsActive: true + NumberOfChildren: 16 + 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 + Scripts: ~ +- EID: 65743 + Name: Furniture_CounterEmpty + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.5, y: 0, z: 0.75} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 0.999873936, y: 1, z: 0.999873936} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 208 + Name: Furniture_CounterEmpty + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.5, y: 0, z: -0.25} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999873936, y: 1, z: 0.999873936} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 209 + Name: Furniture_CounterSink1 + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: 0.5, y: 0, z: -1.25} + Rotate: {x: -0, y: 1.57079649, z: 0} + Scale: {x: 0.999842346, y: 1, z: 0.999842346} + IsActive: true + Renderable Component: + Mesh: 141601355 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.860000014, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.444999993, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.300000012, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.444999993, y: 1.04999995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.04999995, z: 0.444999993} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.04999995, z: -0.444999993} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.449999988, y: 1.38999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 210 + Name: Furniture_CounterDoorLeftHalf + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.499338686, y: 0.0500000119, z: -0.460074902} + Rotate: {x: -0, y: 0.107343696, z: 0} + Scale: {x: 0.999879241, y: 1, z: 0.999879241} + IsActive: true + Renderable Component: + Mesh: 146024338 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 1.07500005, z: 0.462500006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.540000021, z: 0.230000004} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 211 + Name: Furniture_CounterDoorRightHalf + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.499669075, y: 0.0500000119, z: 0.460034132} + Rotate: {x: 0, y: -0.299843848, z: 0} + Scale: {x: 0.999920487, y: 1, z: 0.999920487} + IsActive: true + Renderable Component: + Mesh: 146717179 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 1.07500005, z: 0.462500006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.540000021, z: -0.230000004} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 212 + Name: Furniture_CounterDrawer2 + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: 1.5, y: 0, z: -1.25} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999874115, y: 1, z: 0.999874115} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 213 + Name: Furniture_CounterDrawerMid + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.426957726, y: 0.589012742, z: -0.000452041626} + Rotate: {x: 0, y: 0, z: -0} + Scale: {x: 0.999950111, y: 1, z: 0.999950111} + IsActive: true + Renderable Component: + Mesh: 139881558 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.970000029, y: 0.0250000004, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.519999981, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.699999988, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.147, y: -0.170000002, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.699999988, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.757000029, y: -0.170000002, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.959999979, y: 0.699999988, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.170000002, z: -0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.959999979, y: 0.699999988, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.170000002, z: 0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 214 + Name: Furniture_CounterDrawerSmall + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.709421813, y: 1.02225077, z: -5.60283661e-06} + Rotate: {x: 0, y: 0, z: -0} + Scale: {x: 0.999918222, y: 1, z: 0.999918222} + IsActive: true + Renderable Component: + Mesh: 135779275 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.970000029, y: 0.0250000004, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.219999999, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.147, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.757000029, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: -0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: 0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 215 + Name: Furniture_CounterEmpty + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.5, y: 0, z: 0.75} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999839723, y: 1, z: 0.999839723} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 216 + Name: Furniture_CounterBlock1 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.5, y: 0, z: -0.25} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999942064, y: 1, z: 0.999942064} + IsActive: true + Renderable Component: + Mesh: 142281760 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 217 + Name: Furniture_CounterBlock1 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.5, y: 0, z: -0.25} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999970734, y: 1, z: 0.999970734} + IsActive: true + Renderable Component: + Mesh: 142281760 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 218 + Name: Furniture_CounterBlock1 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.5, y: 0, z: 0.75} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999965072, y: 1, z: 0.999965072} + IsActive: true + Renderable Component: + Mesh: 142281760 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 219 + Name: Furniture_CounterBlock1 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.5, y: 0, z: 0.75} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999953389, y: 1, z: 0.999953389} + IsActive: true + Renderable Component: + Mesh: 142281760 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 220 + Name: Furniture_Oven + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: -0.5, y: 0, z: 1.75} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999866664, y: 1, z: 0.999866664} + IsActive: true + Renderable Component: + Mesh: 136828790 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 221 + Name: Oven_Door + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 0.535853326, y: 0.246981457, z: 4.76837158e-06} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999996006, y: 0.999996006, z: 1} + IsActive: true + Renderable Component: + Mesh: 150740704 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.725000024, z: 0.850000024} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.375, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 222 + Name: Oven_Glass + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0.354394436, z: 0} + Rotate: {x: 0, y: 1.57079637, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 135623020 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 223 + Name: Oven_Tray + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.000432908564, y: 0.649999976, z: 3.81469727e-06} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999995291, y: 1, z: 0.999995291} + IsActive: true + Renderable Component: + Mesh: 136078992 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.800000012, y: 0.0500000007, z: 0.800000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 224 + Name: Furniture_Oven + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: 0.5, y: 0, z: 1.75} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999874473, y: 1, z: 0.999874473} + IsActive: true + Renderable Component: + Mesh: 136828790 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 225 + Name: Oven_Door + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 0.536169469, y: 0.246981457, z: 1.90734863e-06} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999996006, y: 0.999996006, z: 1} + IsActive: true + Renderable Component: + Mesh: 150740704 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.725000024, z: 0.850000024} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.375, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 226 + Name: Oven_Glass + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0.354394436, z: 0} + Rotate: {x: 0, y: 1.57079637, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 135623020 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 227 + Name: Oven_Tray + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.49009327e-06, y: 0.649999976, z: 9.53674316e-07} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999995291, y: 1, z: 0.999995291} + IsActive: true + Renderable Component: + Mesh: 136078992 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.800000012, y: 0.0500000007, z: 0.800000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 228 + Name: Furniture_CounterEmpty + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.5, y: 0, z: 1.75} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999866128, y: 1, z: 0.999866128} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 230 + Name: Furniture_CounterEmpty + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.1354574, y: 0, z: 1.3964591} + Rotate: {x: -0, y: 0.785398006, z: -0} + Scale: {x: 0.999848902, y: 0.988888323, z: 1.42164671} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 231 + Name: Furniture_CounterEmpty + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.5, y: 0, z: -0.25} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.99984026, y: 1, z: 0.99984026} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65765 + Name: Furniture_CounterDrawer2 + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: -0.5, y: 0, z: -1.25} + Rotate: {x: 0, y: -3.1415925, z: 0} + Scale: {x: 0.999849498, y: 1, z: 0.999849498} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 232 + Name: Furniture_CounterDrawerMid + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.350027919, y: 0.589012742, z: 1.59145634e-06} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999964356, y: 1, z: 0.999964356} + IsActive: true + Renderable Component: + Mesh: 139881558 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.970000029, y: 0.0250000004, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.519999981, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.699999988, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.147, y: -0.170000002, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.699999988, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.757000029, y: -0.170000002, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.959999979, y: 0.699999988, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.170000002, z: -0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.959999979, y: 0.699999988, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.170000002, z: 0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 233 + Name: Furniture_CounterDrawerSmall + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.59729749, y: 1.02225077, z: 1.68053782e-06} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999922097, y: 1, z: 0.999922097} + IsActive: true + Renderable Component: + Mesh: 135779275 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.970000029, y: 0.0250000004, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.219999999, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.147, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.757000029, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: -0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: 0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 234 + Name: Furniture_TallStool01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.60869884, y: 0, z: -1.51192188} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140539561 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.300000012, y: 0.800000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 251 + Name: Furniture_Shelf1 + IsActive: true + NumberOfChildren: 6 + Components: + Transform Component: + Translate: {x: -4.89725351, y: 0, z: 2.57555723} + Rotate: {x: 0, y: -3.1415925, z: 0} + Scale: {x: 1.19999945, y: 1.20000005, z: 1.19999945} + IsActive: true + Scripts: ~ +- EID: 252 + Name: Furniture_Shelf1_Bottom + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.000432491302, y: 0, z: -1.14566433e-07} + Rotate: {x: -0, y: 1.57079649, z: 0} + Scale: {x: 0.999999225, y: 1, z: 0.999999225} + IsActive: true + Renderable Component: + Mesh: 138181722 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0500000007, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 253 + Name: Furniture_Shelf1_Top + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.000432491302, y: 2, z: -1.14566433e-07} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.99998945, y: 1, z: 0.99998945} + IsActive: true + Renderable Component: + Mesh: 147761585 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 254 + Name: Furniture_Shelf1_Back + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.000432491302, y: 1, z: -0.500000119} + Rotate: {x: 2.08616285e-07, y: 1.57079577, z: 1.57079554} + Scale: {x: 2, y: 0.999999523, z: 1.10000002} + IsActive: true + Renderable Component: + Mesh: 139576452 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.100000001, z: 1.89999998} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 255 + Name: Furniture_Shelf1_MidShelf + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0.878599584, z: -1.57223099e-07} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999942183, y: 1, z: 0.999942183} + IsActive: true + Renderable Component: + Mesh: 142336524 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.899999976, y: 0.100000001, z: 1.89999998} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 256 + Name: Furniture_Shelf1_FrameHigh + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 1, z: -5.04253421e-07} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999908686, y: 1, z: 0.999908686} + IsActive: true + Renderable Component: + Mesh: 150586966 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: -1.14999998} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 1.14999998} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 257 + Name: Furniture_Shelf1_FrameLow + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.000432729721, y: 0, z: -1.14566461e-07} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.99994278, y: 1, z: 0.99994278} + IsActive: true + Renderable Component: + Mesh: 140066298 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: -1.14999998} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 1.14999998} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65784 + Name: Furniture_Chair01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4.64632654, y: 0, z: 1.5004077} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.999930918, y: 1, z: 0.999930918} + IsActive: true + Renderable Component: + Mesh: 142860936 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.219999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.180000007, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65786 + Name: Furniture_Shelf1 + IsActive: true + NumberOfChildren: 6 + Components: + Transform Component: + Translate: {x: 3.04601955, y: 0, z: -0.46364665} + Rotate: {x: -0, y: -1.57079601, z: 0} + Scale: {x: 0.999849677, y: 1.02300358, z: 0.999849677} + IsActive: true + Scripts: ~ +- EID: 258 + Name: Furniture_Shelf1_Bottom + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.000105963634, y: 0, z: 0.000874042511} + Rotate: {x: 0, y: 1.57079613, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 138181722 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.200000003, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 259 + Name: Furniture_Shelf1_Top + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.000105836909, y: 2, z: 0.000872135162} + Rotate: {x: -0, y: 1.57079601, z: -0} + Scale: {x: 0.99998945, y: 1, z: 0.99998945} + IsActive: true + Renderable Component: + Mesh: 147761585 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 260 + Name: Furniture_Shelf1_Back + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.00010786378, y: 1, z: -0.499994278} + Rotate: {x: 2.98023224e-08, y: 1.57079542, z: 1.57079542} + Scale: {x: 2, y: 0.999999523, z: 1.10000002} + IsActive: true + Renderable Component: + Mesh: 139576452 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.100000001, z: 1.89999998} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 261 + Name: Furniture_Shelf1_MidShelf + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.000105777304, y: 1, z: 0.000871658325} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999976516, y: 1, z: 0.999976516} + IsActive: true + Renderable Component: + Mesh: 142336524 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.899999976, y: 0.100000001, z: 1.89999998} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 262 + Name: Furniture_Shelf1_FrameHigh + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.000105777304, y: 1, z: 0.000871658325} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999963403, y: 1, z: 0.999963403} + IsActive: true + Renderable Component: + Mesh: 150586966 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: -0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 263 + Name: Furniture_Shelf1_FrameLow + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.000105836909, y: 0, z: 0.000872135162} + Rotate: {x: -0, y: 1.57079601, z: -0} + Scale: {x: 0.999942899, y: 1, z: 0.999942899} + IsActive: true + Renderable Component: + Mesh: 140066298 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: -0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 264 + Name: Furniture_Shelf1 + IsActive: true + NumberOfChildren: 6 + Components: + Transform Component: + Translate: {x: 3.10281086, y: 0, z: -2.91405487} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.999990523, y: 1, z: 0.999990523} + IsActive: true + Scripts: ~ +- EID: 265 + Name: Furniture_Shelf1_Bottom + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.49641334e-06, y: 0, z: -2.86102295e-06} + Rotate: {x: -0, y: 1.57079613, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 138181722 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.200000003, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 266 + Name: Furniture_Shelf1_Top + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.49641334e-06, y: 2, z: -2.86102295e-06} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.99998945, y: 1, z: 0.99998945} + IsActive: true + Renderable Component: + Mesh: 147761585 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 267 + Name: Furniture_Shelf1_Back + IsActive: true + 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} + IsActive: true + Renderable Component: + Mesh: 139576452 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.100000001, z: 1.89999998} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 268 + Name: Furniture_Shelf1_MidShelf + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.49641334e-06, y: 1, z: -2.86102295e-06} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999976516, y: 1, z: 0.999976516} + IsActive: true + Renderable Component: + Mesh: 142336524 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.899999976, y: 0.100000001, z: 1.89999998} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 269 + Name: Furniture_Shelf1_FrameHigh + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.49641334e-06, y: 1, z: -2.86102295e-06} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999963403, y: 1, z: 0.999963403} + IsActive: true + Renderable Component: + Mesh: 150586966 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: -0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 270 + Name: Furniture_Shelf1_FrameLow + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.49641334e-06, y: 0, z: -2.86102295e-06} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999942899, y: 1, z: 0.999942899} + IsActive: true + Renderable Component: + Mesh: 140066298 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: -0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 271 + Name: Furniture_Table01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.28806686, y: 4.76837158e-07, z: 2.51028538} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999803007, y: 1, z: 0.999803007} + IsActive: true + Renderable Component: + Mesh: 140474147 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.699999988, y: 0.0500000007, z: 1.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.77700001, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.25, y: 0.400000006, z: -0.550000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.25, y: 0.400000006, z: 0.550000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.25, y: 0.400000006, z: 0.550000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.25, y: 0.400000006, z: -0.550000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 272 + Name: Furniture_Chair01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.37112713, y: -2.77225354e-09, z: 1.61954117} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999916911, y: 1, z: 0.999916911} + IsActive: true + Renderable Component: + Mesh: 142860936 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.219999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.180000007, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 244 + Name: Furniture_Shelf1 + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: -5.52377319, y: 0, z: 1.00466061} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999963343, y: 1, z: 0.999963343} + IsActive: true + Scripts: ~ +- EID: 245 + Name: Furniture_Shelf1_Bottom + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.4045338e-07, y: 0, z: 0} + Rotate: {x: -0, y: 1.57079649, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 138181722 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0500000007, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 246 + Name: Furniture_Shelf1_Top + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.40490897e-07, y: 0.83211112, z: 0.000104904175} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999976337, y: 1, z: 0.999976337} + IsActive: true + Renderable Component: + Mesh: 147761585 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 247 + Name: Furniture_Shelf1_Back + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.8239591e-08, y: 0.425199866, z: -0.499661922} + Rotate: {x: 2.98023224e-07, y: 1.57079613, z: 1.57079566} + Scale: {x: 0.927978218, y: 0.999999523, z: 1.10000813} + IsActive: true + Renderable Component: + Mesh: 139576452 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.100000001, z: 1.89999998} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 249 + Name: Furniture_Shelf1_FrameHigh + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.40554903e-07, y: -0.132160872, z: 0.000283718109} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999927938, y: 1, z: 0.999927938} + IsActive: true + Renderable Component: + Mesh: 150586966 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: -0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 458 + Name: Exterior + IsActive: true + NumberOfChildren: 5 + 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: 274 + Name: SkyDome + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 22.8147907, y: 22.8147907, z: 22.8147907} + IsActive: true + Renderable Component: + Mesh: 144340823 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 295 + Name: Fences + IsActive: true + NumberOfChildren: 20 + 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: -2.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: 290 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1, 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: 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: -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: 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: 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: -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: 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: -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: 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: 446 + 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: 449 + 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: 450 + 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: 451 + 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: 452 + 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: 453 + 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: 454 + 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: 455 + 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: 456 + 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: 457 + 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: 174 + 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: 173 + 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: 172 + Name: TweenManager + IsActive: true + NumberOfChildren: 0 + Components: ~ + Scripts: + - Type: SHADE_Scripting.UI.TweenManager + Enabled: true +- EID: 548 + Name: StealFoodCanvas + IsActive: true + NumberOfChildren: 1 + Components: + Canvas Component: + Canvas Width: 1920 + Canvas Height: 1080 + Scale by canvas width: false + IsActive: true + Scripts: ~ +- EID: 549 + Name: StealFoodLogo + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0, y: 0, z: 1} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 127459277 + IsActive: true + UI Component: + Canvas ID: 548 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.StealFoodPopUp + Enabled: true + popInDuration: 0.5 + popOutDuration: 0.075000003 + stayDuration: 1 + rotationAmt: 1800 + scaleAmtX: 538 + scaleAmtY: 377 +- EID: 550 + Name: TransitionCanvas + IsActive: true + NumberOfChildren: 1 + Components: + Canvas Component: + Canvas Width: 1920 + Canvas Height: 1080 + Scale by canvas width: false + IsActive: true + Scripts: ~ +- EID: 551 + Name: Transition + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0.100000001} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 2500, y: 1080, z: 1} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 120016136 + IsActive: true + UI Component: + Canvas ID: 550 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.SceneFadeInOut + Enabled: true + alphaValue: 1 + fadeInTime: 0.5 + fadeOutTime: 0.5 +- EID: 552 + Name: TweenManager + IsActive: true + NumberOfChildren: 0 + Components: ~ + Scripts: + - Type: SHADE_Scripting.UI.TweenManager + Enabled: true +- EID: 553 + Name: CameraPoints + IsActive: true + NumberOfChildren: 3 + Components: ~ + Scripts: + - Type: SHADE_Scripting.UI.PreviewLevel + Enabled: true + endPoint1: [-3.5, 1.5, -4.5] + endPoint2: [0, 2, 4.5] + endPoint3: [1.14999998, 2.20000005, 2] + playerCamera: 4 + duration: 3 +- EID: 554 + Name: PreviewLevel1 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -5, y: 1.5, z: -3} + Rotate: {x: 0, y: -2.3561945, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Camera Component: + Position: {x: -5.5, y: 1.5, z: -2} + Pitch: 0 + Yaw: -135 + Roll: 0 + Width: 1920 + Near: 0.00999999978 + Far: 10000 + Perspective: true + FOV: 90 + IsActive: true + Scripts: ~ +- EID: 555 + Name: PreviewLevel2 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3, y: 2, z: 4.5} + Rotate: {x: -0.5497787, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Camera Component: + Position: {x: -0.24528563, y: 1.5, z: -7.5} + Pitch: -31.5 + Yaw: 0 + Roll: 0 + Width: 1920 + Near: 0.00999999978 + Far: 10000 + Perspective: true + FOV: 90 + IsActive: true + Scripts: ~ +- EID: 556 + Name: PreviewLevel3 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.29999995, y: 2.20000005, z: -4} + Rotate: {x: -0.34906584, y: -1.57079637, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Camera Component: + Position: {x: 2.5, y: 1.5, z: -7.5} + Pitch: -20 + Yaw: -90 + Roll: 0 + Width: 1920 + Near: 0.00999999978 + Far: 10000 + Perspective: true + FOV: 90 + IsActive: true + Scripts: ~ \ No newline at end of file diff --git a/Assets/Scenes/Level2.shade~main b/Assets/Scenes/Level2.shade~main new file mode 100644 index 00000000..3989fa4a --- /dev/null +++ b/Assets/Scenes/Level2.shade~main @@ -0,0 +1,14793 @@ +- EID: 20 + Name: ===== Light ===== + IsActive: true + NumberOfChildren: 3 + Components: ~ + Scripts: ~ +- EID: 296 + Name: Light_Directional + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Light Component: + Position: {x: 0, y: 0, z: 0} + Type: Directional + Direction: {x: 15, y: 90, z: 15} + Color: {x: 1, y: 1, z: 1, w: 1} + Layer: 4294967295 + Strength: 1 + IsActive: true + Scripts: ~ +- EID: 5 + Name: Light_Ambient + IsActive: true + NumberOfChildren: 0 + Components: + Light Component: + Position: {x: 0, y: 0, z: 0} + Type: Ambient + Direction: {x: 0, y: 0, z: 1} + Color: {x: 0.901608765, y: 0.867841423, z: 1, w: 1} + Layer: 4294967295 + Strength: 0.699999988 + IsActive: true + Scripts: ~ +- EID: 65674 + Name: Light_Directional + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.242245644, y: 1.56757355, z: -6.07086945} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Light Component: + Position: {x: 2, y: 1.5, z: -5.5999999} + Type: Directional + Direction: {x: 0, y: 0, z: -1} + Color: {x: 0, y: 0, z: 0, w: 1} + Layer: 4294967295 + Strength: 1 + IsActive: true + Scripts: ~ +- EID: 240 + Name: ====ItemPool==== + IsActive: true + NumberOfChildren: 35 + Components: ~ + Scripts: ~ +- EID: 241 + Name: Mesh_Meat + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4.29928255, y: 1.04368806, z: 3.10842299} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136892700 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.300000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 157 + Name: Mesh_Meat + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.0829463, y: 1.37235689, z: -4.4815464} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136892700 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.300000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 155 + Name: Mesh_Cheese + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4.43617487, y: 1.15123272, z: 4.36190414} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 141841143 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.5, y: 0.150000006, z: 0.5} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 500 + currCategory: 2 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 154 + Name: Mesh_Cheese + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.36943603, y: 1.43484139, z: -3.52366042} + Rotate: {x: 0.266221136, y: 0, z: 0} + Scale: {x: 1, y: 0.999999166, z: 0.999999166} + IsActive: true + Renderable Component: + Mesh: 141841143 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.5, y: 0.150000006, z: 0.5} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 500 + currCategory: 2 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 65778 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4.24789906, y: 0.931104183, z: 2.13486958} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 152 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.5356307, y: 0.850251734, z: 4.42769098} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 151 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.47161412, y: 0.949428797, z: -4.23114157} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 144 + Name: Egg + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: 0.199520111, y: 1.25556076, z: 1.23466492} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 147457317 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Sphere + Radius: 0.200000003 + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 0.5 + ignoreRaccoon: true + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 2 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 143 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0224030018, y: 0.0607728958, z: -0.00627422333} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 134900190 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0.164060935, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 142 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.00627422333, y: 0.0337567925, z: -0.00243234634} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146271645 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.34906584} + IsActive: false + Scripts: ~ +- EID: 141 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0166685581, y: -0.0367090404, z: 0.0114421844} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 135945648 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.261799395} + IsActive: false + Scripts: ~ +- EID: 140 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.020128727, y: -0.0155199468, z: -0.0045747757} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 141722646 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -1.04719758} + IsActive: false + Scripts: ~ +- EID: 66006 + Name: Mesh_Meat + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.662652433, y: 1.31857622, z: 2.67310381} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136892700 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.300000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 471 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.00604016334, y: 1.34554219, z: -4.45292473} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 472 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.60755205, y: 0.949428797, z: -4.45292473} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 473 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.35755205, y: 0.949428797, z: -4.45292473} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 474 + Name: Mesh_Cheese + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.29891086, y: 0.324859649, z: 1.82623053} + Rotate: {x: -1.30018079, y: -5.44327818e-08, z: 2.90564827e-07} + Scale: {x: 1, y: 0.999972939, z: 0.999972939} + IsActive: true + Renderable Component: + Mesh: 141841143 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.5, y: 0.150000006, z: 0.5} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 500 + currCategory: 2 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 475 + Name: Mesh_Meat + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.59078503, y: 0.339213222, z: -0.511481285} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136892700 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.300000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 65689 + Name: Mesh_Meat + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.588481545, y: 1.31857622, z: 2.26481533} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136892700 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.300000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 476 + Name: Mesh_Meat + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.37222624, y: 0.944371462, z: 4.06488085} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136892700 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.300000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 477 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.33684826, y: 1.25251341, z: 1.29717481} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 478 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.16341925, y: 0.865918756, z: -1.33664751} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 479 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.97658026, y: 0.865918756, z: -1.76429439} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 480 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.67503321, y: 0.865918756, z: -1.93959498} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 481 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.94789433, y: 1.197981, z: 4.27040815} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 482 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.73878908, y: 1.197981, z: 4.27040815} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 483 + Name: Mesh_Meat + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.461924851, y: 0.742430747, z: -3.68689799} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136892700 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.300000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 484 + Name: Mesh_Cheese + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.26750499, y: 1.28282726, z: 0.749736428} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 141841143 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.5, y: 0.150000006, z: 0.5} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 500 + currCategory: 2 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 485 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.667112291, y: 1.25251341, z: -4.2965107} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 486 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.24768829, y: 1.25251341, z: -2.47891474} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 487 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.54528368, y: 1.25251341, z: -0.123424977} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 464 + Name: Watermelon + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: -3.26610065, y: 1.34320831, z: 4.47019911} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 134305891 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Sphere + Radius: 0.5 + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 4 + ignoreRaccoon: true + - Type: Item + Enabled: true + Score: 500 + currCategory: 2 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 463 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0218036175, y: 5.38527966e-05, z: 0.202852726} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 144023586 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.400000006, y: 0.300000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0.164060935, y: 0, z: 0} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 3 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 466 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0812162161, y: 0.0825212598, z: -0.0991339684} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 142132679 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.34906584} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 3 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 467 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0350502729, y: -0.210244894, z: -0.0336794853} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 138231239 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.0799999982, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.261799395} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 3 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 468 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.230162144, y: -0.0580062866, z: -0.00789308548} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 135293480 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.0500000007, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -1.04719758} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 3 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 469 + Name: Piece5 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.129600644, y: 0.219047099, z: 0.0484838486} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146157335 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.25, y: 0.0500000007, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0.436332315} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 3 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 176 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.33684826, y: 0.0771836638, z: 6.68176699} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 175 + Name: Mesh_Meat + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.2909081, y: 0.179948017, z: 6.6051631} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136892700 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.300000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 522 + Name: Watermelon + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 1.62003577, y: 0.241820931, z: 5.90758133} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 134305891 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: false + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Sphere + Radius: 0.5 + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 4 + ignoreRaccoon: true + - Type: Item + Enabled: true + Score: 500 + currCategory: 2 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 523 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 0 + Material: 0 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: true + Sleeping Enabled: false + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.400000006, y: 0.300000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0.164060935, y: 0, z: 0} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 3 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 525 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0350502729, y: -0.210244894, z: -0.0336794853} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 138231239 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.0799999982, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.261799395} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 3 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 526 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.230162144, y: -0.0580062866, z: -0.00789308548} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 135293480 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.0500000007, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -1.04719758} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 3 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 527 + Name: Piece5 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.129600644, y: 0.219047099, z: 0.0484838486} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146157335 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.25, y: 0.0500000007, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0.436332315} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 3 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 524 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.62003577, y: -0.241820931, z: -5.90758133} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 142132679 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.34906584} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 3 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 131228 + Name: Watermelon + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0.623170555, y: 1.0488801, z: -0.65238905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 134305891 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Sphere + Radius: 0.5 + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 4 + ignoreRaccoon: true + - Type: Item + Enabled: true + Score: 500 + currCategory: 2 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 66068 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0218036175, y: 5.38527966e-05, z: 0.202852726} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 144023586 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.400000006, y: 0.300000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0.164060935, y: 0, z: 0} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 3 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 66067 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0812162161, y: 0.0825212598, z: -0.0991339684} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 142132679 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.34906584} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 3 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 66066 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0350502729, y: -0.210244894, z: -0.0336794853} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 138231239 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.0799999982, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.261799395} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 3 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 66065 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.230162144, y: -0.0580062866, z: -0.00789308548} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 135293480 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.0500000007, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -1.04719758} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 3 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 66064 + Name: Piece5 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.129600644, y: 0.219047099, z: 0.0484838486} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146157335 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.25, y: 0.0500000007, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0.436332315} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 3 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 533 + Name: Egg + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: 3.11708331, y: 0.333341181, z: 6.14019775} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 147457317 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Sphere + Radius: 0.200000003 + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 0.5 + ignoreRaccoon: true + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 2 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 534 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0224030018, y: 0.0607728958, z: -0.00627422333} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 134900190 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0.164060935, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 535 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.00627422333, y: 0.0337567925, z: -0.00243234634} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146271645 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.34906584} + IsActive: false + Scripts: ~ +- EID: 536 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0166685581, y: -0.0367090404, z: 0.0114421844} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 135945648 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.261799395} + IsActive: false + Scripts: ~ +- EID: 537 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.020128727, y: -0.0155199468, z: -0.0045747757} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 141722646 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -1.04719758} + IsActive: false + Scripts: ~ +- EID: 538 + Name: Egg + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: -0.272738755, y: 1.24863148, z: -4.62824583} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 147457317 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Sphere + Radius: 0.200000003 + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 0.5 + ignoreRaccoon: true + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 2 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 539 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0224030018, y: 0.0607728958, z: -0.00627422333} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 134900190 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0.164060935, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 540 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.00627422333, y: 0.0337567925, z: -0.00243234634} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146271645 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.34906584} + IsActive: false + Scripts: ~ +- EID: 541 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0166685581, y: -0.0367090404, z: 0.0114421844} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 135945648 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.261799395} + IsActive: false + Scripts: ~ +- EID: 542 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.020128727, y: -0.0155199468, z: -0.0045747757} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 141722646 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -1.04719758} + IsActive: false + Scripts: ~ +- EID: 66079 + Name: Egg + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: -1.86591768, y: 0.84575963, z: -1.40127254} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 147457317 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Sphere + Radius: 0.200000003 + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 0.5 + ignoreRaccoon: true + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 2 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 66083 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0224030018, y: 0.0607728958, z: -0.00627422333} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 134900190 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0.164060935, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 66082 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.00627422333, y: 0.0337567925, z: -0.00243234634} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146271645 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.34906584} + IsActive: false + Scripts: ~ +- EID: 66081 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0166685581, y: -0.0367090404, z: 0.0114421844} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 135945648 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -0.261799395} + IsActive: false + Scripts: ~ +- EID: 66080 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.020128727, y: -0.0155199468, z: -0.0045747757} + Rotate: {x: 0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 141722646 + Material: 131956078 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 3 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.0500000007, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: -1.04719758} + IsActive: false + Scripts: ~ +- EID: 15 + Name: ====ScoreZonePool==== + IsActive: true + NumberOfChildren: 2 + Components: ~ + Scripts: ~ +- EID: 13 + Name: ScoreZone + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 2.24178481, y: 1.4327563, z: 9.46397972} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: true + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: true + Collision Tag: 0 + Type: Box + Half Extents: {x: 1.79999995, y: 1, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: ScoringZone + Enabled: true +- EID: 18 + Name: CollisionWall + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0655272007, y: 0.127076745, z: -0.344656944} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1.79999995, y: 1, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 14 + Name: ScoreZone + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: -0.5, y: 1.5, z: -5} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: true + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: true + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: ScoringZone + Enabled: true +- EID: 17 + Name: CollisionWall + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.5, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 238 + Name: ====GameManager==== + IsActive: true + NumberOfChildren: 0 + Components: ~ + Scripts: + - Type: GameManager + Enabled: true + winScene: 92009475 + loseScene: 91685359 + currGameState: 0 + totalItemCount: 0 + Score: 0 + timer: 200 + scoreText: 237 + timeText: 206 + multiplierText: 139 + maxMultiplierDuration: 5 + maxMultiplierCombo: 10 + multiplierFont: 60 + - Type: PauseMenu + Enabled: true + resumeBtn: 8 + retryBtn: 459 + quitBtn: 0 + canvas: 10 +- EID: 199 + Name: Gameplay Canvas + IsActive: true + NumberOfChildren: 3 + Components: + Canvas Component: + Canvas Width: 1920 + Canvas Height: 1080 + Scale by canvas width: false + IsActive: true + Scripts: ~ +- EID: 237 + Name: Score Text + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: -800, y: 365, z: 0.600000024} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 100, y: 100, z: 60} + IsActive: true + Text Renderer Component: + Text: My name is Brandon. + Font: 174412429 + Color: {x: 1, y: 1, z: 1, w: 1} + IsActive: true + UI Component: + Canvas ID: 199 + Hovered: false + Clicked: false + IsActive: true + Scripts: ~ +- EID: 521 + Name: Score BG + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 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: ~ +- EID: 206 + Name: Timer + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 500, y: 400, z: 0.100000001} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 60, y: 60, z: 60} + IsActive: true + Text Renderer Component: + Text: My name is Brandon. + Font: 176667660 + Color: {x: 1, y: 1, z: 1, w: 1} + IsActive: true + UI Component: + Canvas ID: 199 + Hovered: false + Clicked: false + IsActive: true + Scripts: ~ +- EID: 139 + Name: Multiplier Text + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: -800, y: 250, z: 0.100000001} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 50, y: 50, z: 60} + IsActive: true + Text Renderer Component: + Text: X2 + Font: 174412429 + Color: {x: 1, y: 1, z: 1, w: 1} + IsActive: true + UI Component: + Canvas ID: 199 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.MultiplierTextFx + Enabled: true + maxSize: 1 + minSize: 0.300000012 + minAlpha: 0.300000012 +- EID: 520 + Name: Multiplier BG + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.400000006, y: 0.400000006, z: 0.98999995} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 4.26499987, y: 2, z: 1} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 133784677 + IsActive: true + UI Component: + Canvas ID: 199 + Hovered: false + Clicked: false + IsActive: true + Scripts: ~ +- EID: 198 + Name: ====Raccoon==== + IsActive: true + NumberOfChildren: 2 + Components: ~ + Scripts: ~ +- EID: 2 + Name: Player + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 2.35245037, y: 0.0613552481, z: 7.10571432} + Rotate: {x: -0, y: 3.14159274, z: -0} + Scale: {x: 0.999999881, y: 1, z: 0.999999881} + IsActive: true + Renderable Component: + Mesh: 149697411 + Material: 126974645 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: false + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: true + Freeze Rotation Y: true + Freeze Rotation Z: true + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.400000006, y: 0.5, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.25, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: PlayerController + Enabled: true + respawnPoint: 239 + currentState: 0 + maxMoveVel: 3 + moveForce: 50 + sprintMultiplier: 1.5 + rotationFactorPerFrame: 5 + maxJumpHeight: 2 + maxJumpTime: 0.75 + fallMultipler: 3 + jumpPadMultiplayer: 1.20000005 + lightMultiper: 0.899999976 + mediumMultiper: 0.699999988 + heavyMultiper: 0.5 + silhouettePlayer: 462 + silhouetteBag: 465 + - Type: PickAndThrow + Enabled: true + throwForce: [10, 8, 10] + cameraArmOffSet: [0.25, 0.600000024, 0.200000003] + delayTimer: 1 + aimingLength: 1 + throwItem: false + rayDistance: 0.75 + rayHeight: 0.100000001 + aimingFOV: 50 + defaultFOV: 45 +- EID: 3 + Name: HoldingPoint + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0.899999976, z: 0.200000286} + Rotate: {x: 0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 4 + Name: PlayerCamera + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: -5.96046448e-08, z: 0} + Rotate: {x: 0, y: 3.14159274, z: 2.23517329e-08} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Camera Component: + Position: {x: 2.12735963, y: 0.362327784, z: 7.98933029} + Pitch: 0 + Yaw: 360 + Roll: 1.28065994e-06 + Width: 1920 + Near: 0.00999999978 + Far: 10000 + Perspective: true + FOV: 45 + IsActive: true + Camera Arm Component: + Arm Pitch: 20 + Arm Yaw: 0 + Arm Length: 3 + Look At Camera Origin: true + Target Offset: {x: 0, y: 0.75, z: 0} + Camera Collision: true + IsActive: true + Scripts: + - Type: SHADE_Scripting.ThirdPersonCamera + Enabled: true + armLength: 3 + turnSpeedPitch: 0.200000003 + turnSpeedYaw: 0.400000006 + inverseXControls: true + inverseYControls: false + pitchUpperClamp: 45 + pitchLowerClamp: 5 +- EID: 9 + Name: PlayerBag + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: -2.98023224e-08, z: 4.76837158e-07} + Rotate: {x: 0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144838771 + Material: 123745521 + IsActive: true + Scripts: ~ +- EID: 462 + Name: SilouettePlayer + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.38418579e-07, y: -2.98023224e-08, z: -2.98023224e-07} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 149697411 + Material: 126391182 + IsActive: true + Scripts: ~ +- EID: 465 + Name: SilouetteBag + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: -2.98023224e-08, z: 4.76837158e-07} + Rotate: {x: 0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144838771 + Material: 126391182 + IsActive: true + Scripts: ~ +- EID: 239 + Name: RespawnPoint + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.5, y: 0.660660267, z: 7} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 177 + Name: ====Breakables==== + IsActive: true + NumberOfChildren: 10 + Components: ~ + Scripts: ~ +- EID: 1 + Name: Plate + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: 4.39069891, y: 1.33369851, z: -2.95690465} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 140964851 + Material: 124370424 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.200000003, y: 0.100000001, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 0.100000001 + ignoreRaccoon: false +- EID: 196 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0586929321, y: 0, z: 0} + Rotate: {x: -0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146557542 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 195 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0104182959, y: 0, z: -0.0662035942} + Rotate: {x: -0, y: 0.174533099, z: -0} + Scale: {x: 0.999999881, y: 1, z: 0.999999881} + IsActive: false + Renderable Component: + Mesh: 145439064 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 6 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0431699753, y: 1.18017197e-05, z: -0.0288243294} + Rotate: {x: -0, y: 0, z: 0.174533099} + Scale: {x: 0.999999881, y: 0.999999583, z: 1} + IsActive: false + Renderable Component: + Mesh: 139411134 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 7 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0341523886, y: 0.0088942796, z: 0.0554270744} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 136742160 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 65707 + Name: Plate + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: -1.62782168, y: 1.24122202, z: 0.321960568} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 140964851 + Material: 124370424 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.200000003, y: 0.100000001, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 0.100000001 + ignoreRaccoon: false +- EID: 65703 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0586929321, y: 0, z: 0} + Rotate: {x: -0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146557542 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 65704 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0104182959, y: 0, z: -0.0662035942} + Rotate: {x: -0, y: 0.174533099, z: -0} + Scale: {x: 0.999999881, y: 1, z: 0.999999881} + IsActive: false + Renderable Component: + Mesh: 145439064 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 65705 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0431697369, y: 1.18017197e-05, z: -0.0288243294} + Rotate: {x: 0, y: 0, z: 0.174533099} + Scale: {x: 0.999999881, y: 0.999999583, z: 1} + IsActive: false + Renderable Component: + Mesh: 139411134 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 65706 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0341523886, y: 0.0088942796, z: 0.0554270744} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 136742160 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 150 + Name: Plate + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: 1.25038707, y: 0.118150897, z: 0.393263906} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 140964851 + Material: 124370424 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.200000003, y: 0.100000001, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 0.100000001 + ignoreRaccoon: false +- EID: 149 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0586929321, y: 0, z: 0} + Rotate: {x: -0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146557542 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 148 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0104182959, y: 0, z: -0.0662035942} + Rotate: {x: -0, y: 0.174533099, z: -0} + Scale: {x: 0.999999881, y: 1, z: 0.999999881} + IsActive: false + Renderable Component: + Mesh: 145439064 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 147 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0431699753, y: 1.18017197e-05, z: -0.0288243294} + Rotate: {x: -0, y: 0, z: 0.174533099} + Scale: {x: 0.999999881, y: 0.999999583, z: 1} + IsActive: false + Renderable Component: + Mesh: 139411134 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 146 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0341523886, y: 0.0088942796, z: 0.0554270744} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 136742160 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 145 + Name: Plate + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: 1.55880511, y: 0.118150897, z: 0.619565189} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 140964851 + Material: 124370424 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.200000003, y: 0.100000001, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 0.100000001 + ignoreRaccoon: false +- EID: 488 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0586929321, y: 0, z: 0} + Rotate: {x: -0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146557542 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 489 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0104182959, y: 0, z: -0.0662035942} + Rotate: {x: -0, y: 0.174533099, z: -0} + Scale: {x: 0.999999881, y: 1, z: 0.999999881} + IsActive: false + Renderable Component: + Mesh: 145439064 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 490 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0431699753, y: 1.18017197e-05, z: -0.0288243294} + Rotate: {x: -0, y: 0, z: 0.174533099} + Scale: {x: 0.999999881, y: 0.999999583, z: 1} + IsActive: false + Renderable Component: + Mesh: 139411134 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 491 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0341523886, y: 0.0088942796, z: 0.0554270744} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 136742160 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 492 + Name: Plate + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: 4.31892872, y: 0.25564307, z: 0.661221743} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 140964851 + Material: 124370424 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.200000003, y: 0.100000001, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 0.100000001 + ignoreRaccoon: false +- EID: 493 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0586929321, y: 0, z: 0} + Rotate: {x: -0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146557542 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 494 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0104182959, y: 0, z: -0.0662035942} + Rotate: {x: -0, y: 0.174533099, z: -0} + Scale: {x: 0.999999881, y: 1, z: 0.999999881} + IsActive: false + Renderable Component: + Mesh: 145439064 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 495 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0431699753, y: 1.18017197e-05, z: -0.0288243294} + Rotate: {x: -0, y: 0, z: 0.174533099} + Scale: {x: 0.999999881, y: 0.999999583, z: 1} + IsActive: false + Renderable Component: + Mesh: 139411134 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 496 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0341523886, y: 0.0088942796, z: 0.0554270744} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 136742160 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 497 + Name: Plate + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: 4.31892872, y: 0.25564307, z: 1.16538286} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 140964851 + Material: 124370424 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.200000003, y: 0.100000001, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 0.100000001 + ignoreRaccoon: false +- EID: 498 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0586929321, y: 0, z: 0} + Rotate: {x: -0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146557542 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 499 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0104182959, y: 0, z: -0.0662035942} + Rotate: {x: -0, y: 0.174533099, z: -0} + Scale: {x: 0.999999881, y: 1, z: 0.999999881} + IsActive: false + Renderable Component: + Mesh: 145439064 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 500 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0431699753, y: 1.18017197e-05, z: -0.0288243294} + Rotate: {x: -0, y: 0, z: 0.174533099} + Scale: {x: 0.999999881, y: 0.999999583, z: 1} + IsActive: false + Renderable Component: + Mesh: 139411134 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 501 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0341523886, y: 0.0088942796, z: 0.0554270744} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 136742160 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 502 + Name: Plate + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: 4.2164793, y: 0.254351377, z: 1.81888735} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 140964851 + Material: 124370424 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.200000003, y: 0.100000001, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 0.100000001 + ignoreRaccoon: false +- EID: 503 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0586929321, y: 0, z: 0} + Rotate: {x: -0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146557542 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 504 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0104182959, y: 0, z: -0.0662035942} + Rotate: {x: -0, y: 0.174533099, z: -0} + Scale: {x: 0.999999881, y: 1, z: 0.999999881} + IsActive: false + Renderable Component: + Mesh: 145439064 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 505 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0431699753, y: 1.18017197e-05, z: -0.0288243294} + Rotate: {x: -0, y: 0, z: 0.174533099} + Scale: {x: 0.999999881, y: 0.999999583, z: 1} + IsActive: false + Renderable Component: + Mesh: 139411134 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 506 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0341523886, y: 0.0088942796, z: 0.0554270744} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 136742160 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 507 + Name: Plate + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: -1.35538912, y: 0.840553164, z: -2.1925149} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 140964851 + Material: 124370424 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.200000003, y: 0.100000001, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 0.100000001 + ignoreRaccoon: false +- EID: 508 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0586929321, y: 0, z: 0} + Rotate: {x: -0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146557542 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 509 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0104182959, y: 0, z: -0.0662035942} + Rotate: {x: -0, y: 0.174533099, z: -0} + Scale: {x: 0.999999881, y: 1, z: 0.999999881} + IsActive: false + Renderable Component: + Mesh: 145439064 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 510 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0431699753, y: 1.18017197e-05, z: -0.0288243294} + Rotate: {x: -0, y: 0, z: 0.174533099} + Scale: {x: 0.999999881, y: 0.999999583, z: 1} + IsActive: false + Renderable Component: + Mesh: 139411134 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 511 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0341523886, y: 0.0088942796, z: 0.0554270744} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 136742160 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 512 + Name: Plate + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: -0.486019313, y: 1.24122202, z: -0.516791761} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 140964851 + Material: 124370424 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.200000003, y: 0.100000001, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 0.100000001 + ignoreRaccoon: false +- EID: 513 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0586929321, y: 0, z: 0} + Rotate: {x: -0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146557542 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 514 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0104182959, y: 0, z: -0.0662035942} + Rotate: {x: -0, y: 0.174533099, z: -0} + Scale: {x: 0.999999881, y: 1, z: 0.999999881} + IsActive: false + Renderable Component: + Mesh: 145439064 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 515 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0431697369, y: 1.18017197e-05, z: -0.0288243294} + Rotate: {x: 0, y: 0, z: 0.174533099} + Scale: {x: 0.999999881, y: 0.999999583, z: 1} + IsActive: false + Renderable Component: + Mesh: 139411134 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 516 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0341523886, y: 0.0088942796, z: 0.0554270744} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 136742160 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 517 + Name: Plate + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: -1.24972427, y: 1.24122202, z: 1.70917392} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999979734, y: 1, z: 0.999979734} + IsActive: true + Renderable Component: + Mesh: 140964851 + Material: 124370424 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.200000003, y: 0.100000001, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Breakable + Enabled: true + threshHold: 0.100000001 + ignoreRaccoon: false +- EID: 518 + Name: Piece1 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0586929321, y: 0, z: 0} + Rotate: {x: -0, y: 3.6088712e-09, z: 1.97286229e-16} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 146557542 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 519 + Name: Piece2 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0104182959, y: 0, z: -0.0662035942} + Rotate: {x: -0, y: 0.174533099, z: -0} + Scale: {x: 0.999999881, y: 1, z: 0.999999881} + IsActive: false + Renderable Component: + Mesh: 145439064 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 461 + Name: Piece3 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0431697369, y: 1.18017197e-05, z: -0.0288243294} + Rotate: {x: 0, y: 0, z: 0.174533099} + Scale: {x: 0.999999881, y: 0.999999583, z: 1} + IsActive: false + Renderable Component: + Mesh: 139411134 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 460 + Name: Piece4 + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0341523886, y: 0.0088942796, z: 0.0554270744} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 136742160 + Material: 124370424 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.0500000007, z: 0.150000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: ~ +- EID: 166 + Name: ====WaypointPool==== + IsActive: true + NumberOfChildren: 7 + Components: ~ + Scripts: ~ +- EID: 165 + Name: 1 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.75, y: 0, z: -2} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 164 + Name: 2 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.25, y: 0, z: -3} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 163 + Name: 3 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: -3.75} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 162 + Name: 4 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.75, y: 0, z: -2.25} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 161 + Name: 5 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.75, y: 0, z: 2.75} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 160 + Name: 6 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.5, y: 0, z: 4} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 159 + Name: 7 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.75, y: 0, z: 4} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 158 + Name: ====AI===== + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.0576689839, y: 0, z: -2.61272359} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140697366 + Material: 129495479 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: true + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: true + Freeze Rotation Y: false + Freeze Rotation Z: true + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 5 + Type: Box + Half Extents: {x: 0.600000024, y: 1.79999995, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.899999976, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Homeowner1 + Enabled: true + waypointsPool: 166 + patrolSpeed: 3 + chaseSpeed: 6 + turningSpeed: 5 + sightDistance: 8 + eyeOffset: [0, 1.64999998, 0] + distanceToCapture: 0.5 + captureTime: 0.5 + footstepSFXIntervalMultiplier: 0.5 +- EID: 12 + Name: Mesh_Meat + IsActive: false + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.964969039, y: 0.103873327, z: 6.05876541} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: false + Renderable Component: + Mesh: 136892700 + Material: 122370915 + IsActive: false + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: false + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.300000012, y: 0.300000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: false + Scripts: + - Type: Item + Enabled: true + Score: 50 + currCategory: 1 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 300 + highlightThickness: 250 + highlightLowerClamp: 0.25 +- EID: 16 + Name: JumpPad + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.52692485, y: 0, z: 6.85981083} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 1 + Type: Box + Half Extents: {x: 1, y: 0.25, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: JumpPad + Enabled: true +- EID: 10 + Name: Pause Canvas + IsActive: true + NumberOfChildren: 4 + Components: + Canvas Component: + Canvas Width: 1920 + Canvas Height: 1080 + Scale by canvas width: false + IsActive: true + Scripts: ~ +- EID: 8 + Name: ResumeButton + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 100, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 400, y: 100, z: 500} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 129340704 + IsActive: true + Button Component: + Default Texture: 63979907 + Hovered Texture: 51379325 + Clicked Texture: 66788278 + IsActive: true + UI Component: + Canvas ID: 10 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.ButtonFX + Enabled: true + onHoverEnterSound: event:/Music/player_undetected + onHoverExitSound: event:/Music/player_undetected + onClickSound: event:/Music/player_undetected + onReleaseSound: event:/Music/player_undetected + hoverScale: 1.10000002 + clickScale: 0.899999976 +- EID: 0 + Name: QuitButton + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: -300, z: 0} + Rotate: {x: -4.5, y: 2, z: -2.5} + Scale: {x: 400, y: 100, z: 500} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 129340704 + IsActive: true + Button Component: + Default Texture: 61602036 + Hovered Texture: 58910810 + Clicked Texture: 57786063 + IsActive: true + UI Component: + Canvas ID: 10 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.ButtonFX + Enabled: true + onHoverEnterSound: event:/Music/player_undetected + onHoverExitSound: event:/Music/player_undetected + onClickSound: event:/Music/player_undetected + onReleaseSound: event:/Music/player_undetected + hoverScale: 1.10000002 + clickScale: 0.899999976 +- EID: 459 + Name: RetryButton + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: -100, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 400, y: 100, z: 500} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 129340704 + IsActive: true + Button Component: + Default Texture: 64806384 + Hovered Texture: 58347825 + Clicked Texture: 63234380 + IsActive: true + UI Component: + Canvas ID: 10 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.ButtonFX + Enabled: true + onHoverEnterSound: event:/Music/player_undetected + onHoverExitSound: event:/Music/player_undetected + onClickSound: event:/Music/player_undetected + onReleaseSound: event:/Music/player_undetected + hoverScale: 1.10000002 + clickScale: 0.899999976 +- EID: 11 + Name: GamePause + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -250, y: 300, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 100, y: 100, z: 100} + IsActive: true + Text Renderer Component: + Text: Game Pause + Font: 176667660 + Color: {x: 1, y: 1, z: 1, w: 1} + IsActive: false + UI Component: + Canvas ID: 10 + Hovered: false + Clicked: false + IsActive: true + Scripts: ~ +- EID: 19 + Name: ====EnvironmentMaster==== + IsActive: true + NumberOfChildren: 4 + 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: 136 + Name: Main_Room + IsActive: true + NumberOfChildren: 3 + 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: 51 + Name: Floor_Master + IsActive: true + NumberOfChildren: 6 + 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: 26 + Name: Floor_Row_1 + IsActive: true + NumberOfChildren: 5 + 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: 21 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 22 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 23 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 24 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 25 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 27 + Name: Floor_Row_2 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: -2} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 28 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 29 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 30 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 31 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 32 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 33 + Name: Floor_Row_3 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 2} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 34 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 35 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 36 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 37 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 38 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 39 + Name: Floor_Row_4 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: -4} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 40 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 41 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 42 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 43 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 44 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 45 + Name: Floor_Row_5 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 4} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 46 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 47 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 48 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 49 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 50 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Scripts: ~ +- EID: 65779 + Name: Floor_Collider + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 10, y: 0.0500000007, z: 18} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 82 + Name: Walls_Master + IsActive: true + NumberOfChildren: 25 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1.10000002, z: 1} + IsActive: true + Scripts: ~ +- EID: 53 + Name: Window_O_Small + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.5, y: 0, z: -5} + Rotate: {x: 0, y: -3.1415925, z: 0} + Scale: {x: 0.999988258, y: 1, z: 0.999988258} + IsActive: true + Renderable Component: + Mesh: 149786048 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.200000003, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 2.0999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.899999976, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.449999988, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.449999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65591 + Name: Wall_Corner + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5, y: 0, z: 5} + Rotate: {x: -0, y: 1.57079649, z: 0} + Scale: {x: 0.999999523, y: 1, z: 0.999999523} + IsActive: true + Renderable Component: + Mesh: 134714737 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: -0.449999988} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 56 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.12474632, y: 0, z: -5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.24999325, y: 1, z: 0.999946237} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 57 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5, y: 0, z: -3} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999992847, y: 1, z: 0.999992847} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 58 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5, y: 0, z: 3} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.99996388, y: 1, z: 0.99996388} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 59 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5, y: 0, z: -1} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999984503, y: 1, z: 0.999984503} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 60 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1, y: 0, z: 5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999947786, y: 1, z: 0.999947786} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 61 + Name: Wall_Corner + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5, y: 0, z: -5} + Rotate: {x: 0, y: -3.1415925, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 134714737 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: -0.449999988} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 64 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.5, y: 0, z: 5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -5, y: 0, z: -1.5} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999983549, y: 1, z: 0.999983549} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 66 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -5, y: 0, z: -2.125} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.24999325, y: 1, z: 0.999946237} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 69 + Name: Door_Wall_Frame + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: -5, y: 0, z: -0.5} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999984145, y: 1, z: 0.999984145} + IsActive: true + Renderable Component: + Mesh: 150924328 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.150000006, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 2.125, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.455000013, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.455000013, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 70 + Name: Door_Door_Frame + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: -6.4710548e-10, y: 0, z: -0.00173091888} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1.10000002, z: 1} + IsActive: true + Renderable Component: + Mesh: 146862321 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: ~ + IsActive: true + Scripts: ~ +- EID: 71 + Name: Door_Main_Piece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.400000006, y: 0, z: 0.113865376} + Rotate: {x: -0, y: 1.57079649, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 147152385 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.800000012, y: 2, z: 0.0350000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.400000006, y: 1, z: -0.0175000001} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65608 + Name: Window_C_Large + IsActive: true + NumberOfChildren: 0 + 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} + IsActive: true + Renderable Component: + Mesh: 148351779 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65609 + Name: Wall_Corner + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -5, y: 0, z: 5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 134714737 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: -0.449999988} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65610 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5, y: 0, z: 1} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999973536, y: 1, z: 0.999973536} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 75 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -5, y: 0, z: 1} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999958873, y: 1, z: 0.999958873} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 76 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3, y: 0, z: 5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999947786, y: 1, z: 0.999947786} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 77 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1, y: 0, z: 5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999947786, y: 1, z: 0.999947786} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 78 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.5, y: 0, z: -5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 79 + Name: Door_Wall_Frame + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 2.5, y: 0, z: 5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150924328 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.150000006, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 2.125, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.455000013, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.455000013, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 80 + Name: Door_Door_Frame + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1.10000002, z: 1} + IsActive: true + Renderable Component: + Mesh: 146862321 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: ~ + IsActive: true + Scripts: ~ +- EID: 81 + Name: Door_Main_Piece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.400000095, y: 0, z: 0.113215446} + Rotate: {x: 0, y: -2.96705961, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 147152385 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.800000012, y: 2, z: 0.0350000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.400000006, y: 1, z: -0.0175000001} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 54 + Name: Window_C_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: -5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 148351779 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 67 + Name: Window_C_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.87180281, y: 0, z: -4.27037907} + Rotate: {x: -0, y: 0.785398066, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 148351779 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 68 + Name: Window_C_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4.28601646, y: 0, z: -2.85616589} + Rotate: {x: -0, y: 0.785398066, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 148351779 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65588 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.5, y: 0, z: -5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 131135 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.5, y: 0, z: -5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 83 + Name: Ceiling_Master + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 2.46117163, z: 0} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 84 + Name: Floor_Row_1 + IsActive: true + NumberOfChildren: 5 + 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: 85 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 86 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 87 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 88 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 89 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 90 + Name: Floor_Row_2 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: -2} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 91 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 92 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 93 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 94 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 95 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 96 + Name: Floor_Row_3 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 2} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 97 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 98 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 99 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 100 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 101 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 102 + Name: Floor_Row_4 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: -4} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 103 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 104 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 105 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 106 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 107 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 108 + Name: Floor_Row_5 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 4} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 109 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 110 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 111 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 112 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 113 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 137 + Name: Entrance_Room + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: 2.25, y: 0, z: 7} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 127 + Name: Floor_Master + IsActive: true + NumberOfChildren: 2 + 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: 118 + Name: Floor_Row_1 + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: -1, y: 0, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 119 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 132690168 + IsActive: true + Scripts: ~ +- EID: 120 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 132690168 + IsActive: true + Scripts: ~ +- EID: 122 + Name: Floor_Row_2 + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: -1, y: 0, z: 1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 123 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 132690168 + IsActive: true + Scripts: ~ +- EID: 124 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 132690168 + IsActive: true + Scripts: ~ +- EID: 128 + Name: Ceiling_Master + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: 0, y: 2.36603451, z: 0} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 129 + Name: Floor_Row_1 + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: -1, y: 0, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 130 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 131 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 132 + Name: Floor_Row_2 + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: -1, y: 0, z: 1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 133 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 134 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 135 + Name: Wall_Master + IsActive: true + NumberOfChildren: 7 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1.10000002, z: 1} + IsActive: true + Scripts: ~ +- EID: 65661 + Name: Wall_Corner + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 2} + Rotate: {x: -0, y: 1.57079649, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 134714737 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: -0.449999988} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65657 + Name: Wall_Corner + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 2} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 134714737 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: -0.449999988} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65653 + Name: Window_O_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 2} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 138781993 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.200000003, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 2.0999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 0.899999976, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.449999988, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.949999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.949999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 131186 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999992251, y: 1, z: 0.999992251} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 131187 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999995828, y: 1, z: 0.999995828} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65652 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: -1.5} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999990523, y: 1, z: 0.999990523} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 126 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: -1.5} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999993861, y: 1, z: 0.999993861} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 235 + Name: Furniture_Chair01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.5, y: 0, z: 1.5} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.999954104, y: 1, z: 0.999954104} + IsActive: true + Renderable Component: + Mesh: 142860936 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.219999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.180000007, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 273 + Name: Furnitures + IsActive: true + NumberOfChildren: 10 + Components: + Transform Component: + Translate: {x: 1.25, y: 0, z: 1.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 131134 + Name: SetA + IsActive: true + NumberOfChildren: 10 + Components: + Transform Component: + Translate: {x: 0.75, y: 0, z: -4.67308044} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 178 + Name: Furniture_CounterBlock1 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.5, y: 0, z: -1.5} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999954104, y: 1, z: 0.999954104} + IsActive: true + Renderable Component: + Mesh: 142281760 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 179 + Name: BottomLid + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.5, y: 0, z: -1.5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999834061, y: 1, z: 0.999834061} + IsActive: true + Renderable Component: + Mesh: 144974966 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 180 + Name: Furniture_CounterBlock2 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.5, y: 0, z: -0.5} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.99990958, y: 1, z: 0.99990958} + IsActive: true + Renderable Component: + Mesh: 144974966 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65719 + Name: Furniture_CounterDrawer1 + IsActive: true + NumberOfChildren: 3 + Components: + Transform Component: + Translate: {x: 2.5, y: 0, z: 0.25} + Rotate: {x: 0, y: -3.1415925, z: 0} + Scale: {x: 0.999855638, y: 1, z: 0.999855638} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65717 + Name: Furniture_CounterDrawerSmall + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.980086565, y: 0.306859791, z: 0.000663099228} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999737263, y: 1, z: 0.999737263} + IsActive: true + Renderable Component: + Mesh: 135779275 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.970000029, y: 0.0250000004, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.219999999, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.147, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.757000029, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: -0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: 0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65720 + Name: Furniture_CounterDrawerSmall + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.546036243, y: 1.02225077, z: 0.00050569122} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999866426, y: 1, z: 0.999866426} + IsActive: true + Renderable Component: + Mesh: 135779275 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.970000029, y: 0.0250000004, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.219999999, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.147, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.757000029, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: -0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: 0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65718 + Name: Furniture_CounterDrawerSmall + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.79029417, y: 0.665752649, z: 0.000704084581} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999760687, y: 1, z: 0.999760687} + IsActive: true + Renderable Component: + Mesh: 135779275 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.970000029, y: 0.0250000004, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.219999999, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.147, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.757000029, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: -0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: 0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 185 + Name: Furniture_Oven + IsActive: true + NumberOfChildren: 2 + 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} + IsActive: true + Renderable Component: + Mesh: 136828790 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 186 + Name: Oven_Door + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 0.537624598, y: 0.246981457, z: 0.000124454513} + Rotate: {x: 1.34603506e-05, y: 3.58487387e-06, z: -1.04719746} + Scale: {x: 1.00001323, y: 0.999983132, z: 0.999992907} + IsActive: true + Renderable Component: + Mesh: 150740704 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.725000024, z: 0.850000024} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.375, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 187 + Name: Oven_Glass + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.13589262e-05, y: 0.354365677, z: -4.48226929e-05} + Rotate: {x: -5.66244012e-07, y: 1.57079184, z: -1.04719758} + Scale: {x: 0.999997735, y: 0.999998629, z: 0.999999285} + IsActive: true + Renderable Component: + Mesh: 135623020 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 188 + Name: Oven_Tray + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.678130627, y: 0.635995746, z: -0.000453472167} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999971926, y: 1, z: 0.947892308} + IsActive: true + Renderable Component: + Mesh: 136078992 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.800000012, y: 0.0500000007, z: 0.800000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 189 + Name: Furniture_CounterSink2 + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: -0.5, y: 0, z: -1.5} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.999882996, y: 1, z: 0.999882996} + IsActive: true + Renderable Component: + Mesh: 141601355 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.860000014, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.444999993, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.300000012, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.444999993, y: 1.04999995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.04999995, z: 0.444999993} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.04999995, z: -0.444999993} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.449999988, y: 1.38999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 190 + Name: Furniture_CounterDoorRightFull + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.499101311, y: 0.0500000007, z: 0.460019141} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999967337, y: 1, z: 0.999967337} + IsActive: true + Renderable Component: + Mesh: 146520338 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 1.07500005, z: 0.925000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.540000021, z: -0.460000008} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 191 + Name: Furniture_CounterSink3 + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 0.5, y: 0, z: -1.5} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.999868512, y: 1, z: 0.999868512} + IsActive: true + Renderable Component: + Mesh: 141601355 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.860000014, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.444999993, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.300000012, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.444999993, y: 1.04999995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.04999995, z: 0.444999993} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.04999995, z: -0.444999993} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.449999988, y: 1.38999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 192 + Name: Furniture_CounterDoorLeftFull + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500843167, y: 0.0500000007, z: -0.459560156} + Rotate: {x: -0, y: 0.559825659, z: 0} + Scale: {x: 0.999928236, y: 1, z: 0.999928236} + IsActive: true + Renderable Component: + Mesh: 150547241 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 1.07500005, z: 0.925000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.540000021, z: 0.460000008} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 193 + Name: Furniture_CounterBlock2 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.5, y: 0, z: -1.5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999834061, y: 1, z: 0.999834061} + IsActive: true + Renderable Component: + Mesh: 144974966 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 194 + Name: Furniture_ServiceTray + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.3758707, y: 0, z: -0.556610107} + Rotate: {x: -0, y: 1.66631782, z: 0} + Scale: {x: 0.999944031, y: 1, z: 0.999944031} + IsActive: true + Renderable Component: + Mesh: 140279658 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.400000006, y: 1.29999995, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.699999988, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.600000024, y: 1.70000005, z: 0.0700000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.850000024, z: -0.5} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.600000024, y: 1.70000005, z: 0.0700000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.850000024, z: 0.5} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 197 + Name: Furniture_TallStool01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25, y: 0, z: -1.57691956} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140539561 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.300000012, y: 0.800000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 205 + Name: SetB + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: -3, y: 0, z: -3.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 200 + Name: Furniture_Table01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0670871735, y: 0, z: 0.236379623} + Rotate: {x: -0, y: -0.785398245, z: 0} + Scale: {x: 1.49995053, y: 1, z: 1.49995029} + IsActive: true + Renderable Component: + Mesh: 140474147 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.699999988, y: 0.0500000007, z: 1.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.77700001, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.449999988, y: 0.400000006, z: -0.850000024} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.449999988, y: 0.400000006, z: 0.850000024} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.449999988, y: 0.400000006, z: 0.850000024} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.449999988, y: 0.400000006, z: -0.850000024} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 201 + Name: Furniture_Chair01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.901912689, y: -2.37551575e-07, z: 0.00345230103} + Rotate: {x: -0, y: 1.95162022, z: 0} + Scale: {x: 0.999974966, y: 1, z: 0.999974966} + IsActive: true + Renderable Component: + Mesh: 142860936 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.219999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.180000007, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 202 + Name: Furniture_Chair01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.180002213, y: 0, z: -0.507282257} + Rotate: {x: -0, y: 2.26356983, z: 0} + Scale: {x: 0.999929309, y: 1, z: 0.999929309} + IsActive: true + Renderable Component: + Mesh: 142860936 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.219999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.180000007, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 203 + Name: Furniture_Chair01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.905802727, y: -2.37634836e-07, z: 0.32503891} + Rotate: {x: 0, y: -2.49300814, z: 0} + Scale: {x: 0.999879777, y: 1, z: 0.999879777} + IsActive: true + Renderable Component: + Mesh: 142860936 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.219999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.180000007, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 204 + Name: Furniture_Chair01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.483336449, y: -1.01110842e-07, z: 1.39031887} + Rotate: {x: 0, y: -0.448161721, z: 0} + Scale: {x: 0.999916553, y: 1, z: 0.999916553} + IsActive: true + Renderable Component: + Mesh: 142860936 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.219999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.180000007, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 236 + Name: SetC + IsActive: true + NumberOfChildren: 16 + 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 + Scripts: ~ +- EID: 65743 + Name: Furniture_CounterEmpty + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.5, y: 0, z: 0.75} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 0.999873936, y: 1, z: 0.999873936} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 208 + Name: Furniture_CounterEmpty + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.5, y: 0, z: -0.25} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999873936, y: 1, z: 0.999873936} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 209 + Name: Furniture_CounterSink1 + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: 0.5, y: 0, z: -1.25} + Rotate: {x: -0, y: 1.57079649, z: 0} + Scale: {x: 0.999842346, y: 1, z: 0.999842346} + IsActive: true + Renderable Component: + Mesh: 141601355 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.860000014, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.444999993, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.300000012, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.444999993, y: 1.04999995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.04999995, z: 0.444999993} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.04999995, z: -0.444999993} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.100000001, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.449999988, y: 1.38999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 210 + Name: Furniture_CounterDoorLeftHalf + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.499338686, y: 0.0500000119, z: -0.460074902} + Rotate: {x: -0, y: 0.107343696, z: 0} + Scale: {x: 0.999879241, y: 1, z: 0.999879241} + IsActive: true + Renderable Component: + Mesh: 146024338 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 1.07500005, z: 0.462500006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.540000021, z: 0.230000004} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 211 + Name: Furniture_CounterDoorRightHalf + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.499669075, y: 0.0500000119, z: 0.460034132} + Rotate: {x: 0, y: -0.299843848, z: 0} + Scale: {x: 0.999920487, y: 1, z: 0.999920487} + IsActive: true + Renderable Component: + Mesh: 146717179 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 1.07500005, z: 0.462500006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.540000021, z: -0.230000004} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 212 + Name: Furniture_CounterDrawer2 + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: 1.5, y: 0, z: -1.25} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999874115, y: 1, z: 0.999874115} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 213 + Name: Furniture_CounterDrawerMid + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.426957726, y: 0.589012742, z: -0.000452041626} + Rotate: {x: 0, y: 0, z: -0} + Scale: {x: 0.999950111, y: 1, z: 0.999950111} + IsActive: true + Renderable Component: + Mesh: 139881558 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.970000029, y: 0.0250000004, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.519999981, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.699999988, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.147, y: -0.170000002, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.699999988, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.757000029, y: -0.170000002, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.959999979, y: 0.699999988, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.170000002, z: -0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.959999979, y: 0.699999988, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.170000002, z: 0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 214 + Name: Furniture_CounterDrawerSmall + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.709421813, y: 1.02225077, z: -5.60283661e-06} + Rotate: {x: 0, y: 0, z: -0} + Scale: {x: 0.999918222, y: 1, z: 0.999918222} + IsActive: true + Renderable Component: + Mesh: 135779275 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.970000029, y: 0.0250000004, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.219999999, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.147, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.757000029, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: -0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: 0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 215 + Name: Furniture_CounterEmpty + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.5, y: 0, z: 0.75} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999839723, y: 1, z: 0.999839723} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 216 + Name: Furniture_CounterBlock1 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.5, y: 0, z: -0.25} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999942064, y: 1, z: 0.999942064} + IsActive: true + Renderable Component: + Mesh: 142281760 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 217 + Name: Furniture_CounterBlock1 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.5, y: 0, z: -0.25} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999970734, y: 1, z: 0.999970734} + IsActive: true + Renderable Component: + Mesh: 142281760 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 218 + Name: Furniture_CounterBlock1 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.5, y: 0, z: 0.75} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999965072, y: 1, z: 0.999965072} + IsActive: true + Renderable Component: + Mesh: 142281760 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 219 + Name: Furniture_CounterBlock1 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.5, y: 0, z: 0.75} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999953389, y: 1, z: 0.999953389} + IsActive: true + Renderable Component: + Mesh: 142281760 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 220 + Name: Furniture_Oven + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: -0.5, y: 0, z: 1.75} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999866664, y: 1, z: 0.999866664} + IsActive: true + Renderable Component: + Mesh: 136828790 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 221 + Name: Oven_Door + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 0.535853326, y: 0.246981457, z: 4.76837158e-06} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999996006, y: 0.999996006, z: 1} + IsActive: true + Renderable Component: + Mesh: 150740704 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.725000024, z: 0.850000024} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.375, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 222 + Name: Oven_Glass + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0.354394436, z: 0} + Rotate: {x: 0, y: 1.57079637, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 135623020 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 223 + Name: Oven_Tray + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.000432908564, y: 0.649999976, z: 3.81469727e-06} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999995291, y: 1, z: 0.999995291} + IsActive: true + Renderable Component: + Mesh: 136078992 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.800000012, y: 0.0500000007, z: 0.800000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 224 + Name: Furniture_Oven + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: 0.5, y: 0, z: 1.75} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999874473, y: 1, z: 0.999874473} + IsActive: true + Renderable Component: + Mesh: 136828790 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 225 + Name: Oven_Door + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 0.536169469, y: 0.246981457, z: 1.90734863e-06} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999996006, y: 0.999996006, z: 1} + IsActive: true + Renderable Component: + Mesh: 150740704 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.725000024, z: 0.850000024} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.375, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 226 + Name: Oven_Glass + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0.354394436, z: 0} + Rotate: {x: 0, y: 1.57079637, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 135623020 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 227 + Name: Oven_Tray + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.49009327e-06, y: 0.649999976, z: 9.53674316e-07} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999995291, y: 1, z: 0.999995291} + IsActive: true + Renderable Component: + Mesh: 136078992 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.800000012, y: 0.0500000007, z: 0.800000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 228 + Name: Furniture_CounterEmpty + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.5, y: 0, z: 1.75} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999866128, y: 1, z: 0.999866128} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 230 + Name: Furniture_CounterEmpty + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.1354574, y: 0, z: 1.3964591} + Rotate: {x: -0, y: 0.785398006, z: -0} + Scale: {x: 0.999848902, y: 0.988888323, z: 1.42164671} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 231 + Name: Furniture_CounterEmpty + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.5, y: 0, z: -0.25} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.99984026, y: 1, z: 0.99984026} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65765 + Name: Furniture_CounterDrawer2 + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: -0.5, y: 0, z: -1.25} + Rotate: {x: 0, y: -3.1415925, z: 0} + Scale: {x: 0.999849498, y: 1, z: 0.999849498} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 232 + Name: Furniture_CounterDrawerMid + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.350027919, y: 0.589012742, z: 1.59145634e-06} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999964356, y: 1, z: 0.999964356} + IsActive: true + Renderable Component: + Mesh: 139881558 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.970000029, y: 0.0250000004, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.519999981, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.699999988, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.147, y: -0.170000002, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.699999988, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.757000029, y: -0.170000002, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.959999979, y: 0.699999988, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.170000002, z: -0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.959999979, y: 0.699999988, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.170000002, z: 0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 233 + Name: Furniture_CounterDrawerSmall + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.59729749, y: 1.02225077, z: 1.68053782e-06} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999922097, y: 1, z: 0.999922097} + IsActive: true + Renderable Component: + Mesh: 135779275 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.970000029, y: 0.0250000004, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.219999999, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.147, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.757000029, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: -0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: 0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 234 + Name: Furniture_TallStool01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.60869884, y: 0, z: -1.51192188} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140539561 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.300000012, y: 0.800000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 251 + Name: Furniture_Shelf1 + IsActive: true + NumberOfChildren: 6 + Components: + Transform Component: + Translate: {x: -4.89725351, y: 0, z: 2.57555723} + Rotate: {x: 0, y: -3.1415925, z: 0} + Scale: {x: 1.19999945, y: 1.20000005, z: 1.19999945} + IsActive: true + Scripts: ~ +- EID: 252 + Name: Furniture_Shelf1_Bottom + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.000432491302, y: 0, z: -1.14566433e-07} + Rotate: {x: -0, y: 1.57079649, z: 0} + Scale: {x: 0.999999225, y: 1, z: 0.999999225} + IsActive: true + Renderable Component: + Mesh: 138181722 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0500000007, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 253 + Name: Furniture_Shelf1_Top + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.000432491302, y: 2, z: -1.14566433e-07} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.99998945, y: 1, z: 0.99998945} + IsActive: true + Renderable Component: + Mesh: 147761585 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 254 + Name: Furniture_Shelf1_Back + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.000432491302, y: 1, z: -0.500000119} + Rotate: {x: 2.08616285e-07, y: 1.57079577, z: 1.57079554} + Scale: {x: 2, y: 0.999999523, z: 1.10000002} + IsActive: true + Renderable Component: + Mesh: 139576452 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.100000001, z: 1.89999998} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 255 + Name: Furniture_Shelf1_MidShelf + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0.878599584, z: -1.57223099e-07} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999942183, y: 1, z: 0.999942183} + IsActive: true + Renderable Component: + Mesh: 142336524 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.899999976, y: 0.100000001, z: 1.89999998} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 256 + Name: Furniture_Shelf1_FrameHigh + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 1, z: -5.04253421e-07} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999908686, y: 1, z: 0.999908686} + IsActive: true + Renderable Component: + Mesh: 150586966 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: -1.14999998} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 1.14999998} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 257 + Name: Furniture_Shelf1_FrameLow + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.000432729721, y: 0, z: -1.14566461e-07} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.99994278, y: 1, z: 0.99994278} + IsActive: true + Renderable Component: + Mesh: 140066298 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: -1.14999998} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 1.14999998} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65784 + Name: Furniture_Chair01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4.64632654, y: 0, z: 1.5004077} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.999930918, y: 1, z: 0.999930918} + IsActive: true + Renderable Component: + Mesh: 142860936 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.219999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.180000007, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65786 + Name: Furniture_Shelf1 + IsActive: true + NumberOfChildren: 6 + Components: + Transform Component: + Translate: {x: 3.04601955, y: 0, z: -0.46364665} + Rotate: {x: -0, y: -1.57079601, z: 0} + Scale: {x: 0.999849677, y: 1.02300358, z: 0.999849677} + IsActive: true + Scripts: ~ +- EID: 258 + Name: Furniture_Shelf1_Bottom + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.000105963634, y: 0, z: 0.000874042511} + Rotate: {x: 0, y: 1.57079613, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 138181722 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.200000003, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 259 + Name: Furniture_Shelf1_Top + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.000105836909, y: 2, z: 0.000872135162} + Rotate: {x: -0, y: 1.57079601, z: -0} + Scale: {x: 0.99998945, y: 1, z: 0.99998945} + IsActive: true + Renderable Component: + Mesh: 147761585 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 260 + Name: Furniture_Shelf1_Back + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.00010786378, y: 1, z: -0.499994278} + Rotate: {x: 2.98023224e-08, y: 1.57079542, z: 1.57079542} + Scale: {x: 2, y: 0.999999523, z: 1.10000002} + IsActive: true + Renderable Component: + Mesh: 139576452 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.100000001, z: 1.89999998} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 261 + Name: Furniture_Shelf1_MidShelf + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.000105777304, y: 1, z: 0.000871658325} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999976516, y: 1, z: 0.999976516} + IsActive: true + Renderable Component: + Mesh: 142336524 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.899999976, y: 0.100000001, z: 1.89999998} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 262 + Name: Furniture_Shelf1_FrameHigh + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.000105777304, y: 1, z: 0.000871658325} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999963403, y: 1, z: 0.999963403} + IsActive: true + Renderable Component: + Mesh: 150586966 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: -0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 263 + Name: Furniture_Shelf1_FrameLow + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.000105836909, y: 0, z: 0.000872135162} + Rotate: {x: -0, y: 1.57079601, z: -0} + Scale: {x: 0.999942899, y: 1, z: 0.999942899} + IsActive: true + Renderable Component: + Mesh: 140066298 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: -0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 264 + Name: Furniture_Shelf1 + IsActive: true + NumberOfChildren: 6 + Components: + Transform Component: + Translate: {x: 3.10281086, y: 0, z: -2.91405487} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.999990523, y: 1, z: 0.999990523} + IsActive: true + Scripts: ~ +- EID: 265 + Name: Furniture_Shelf1_Bottom + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.49641334e-06, y: 0, z: -2.86102295e-06} + Rotate: {x: -0, y: 1.57079613, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 138181722 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.200000003, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 266 + Name: Furniture_Shelf1_Top + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.49641334e-06, y: 2, z: -2.86102295e-06} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.99998945, y: 1, z: 0.99998945} + IsActive: true + Renderable Component: + Mesh: 147761585 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 267 + Name: Furniture_Shelf1_Back + IsActive: true + 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} + IsActive: true + Renderable Component: + Mesh: 139576452 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.100000001, z: 1.89999998} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 268 + Name: Furniture_Shelf1_MidShelf + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.49641334e-06, y: 1, z: -2.86102295e-06} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999976516, y: 1, z: 0.999976516} + IsActive: true + Renderable Component: + Mesh: 142336524 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.899999976, y: 0.100000001, z: 1.89999998} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 269 + Name: Furniture_Shelf1_FrameHigh + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.49641334e-06, y: 1, z: -2.86102295e-06} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999963403, y: 1, z: 0.999963403} + IsActive: true + Renderable Component: + Mesh: 150586966 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: -0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 270 + Name: Furniture_Shelf1_FrameLow + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.49641334e-06, y: 0, z: -2.86102295e-06} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999942899, y: 1, z: 0.999942899} + IsActive: true + Renderable Component: + Mesh: 140066298 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: -0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 271 + Name: Furniture_Table01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.28806686, y: 4.76837158e-07, z: 2.51028538} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999803007, y: 1, z: 0.999803007} + IsActive: true + Renderable Component: + Mesh: 140474147 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.699999988, y: 0.0500000007, z: 1.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.77700001, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.25, y: 0.400000006, z: -0.550000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.25, y: 0.400000006, z: 0.550000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.25, y: 0.400000006, z: 0.550000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.25, y: 0.400000006, z: -0.550000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 272 + Name: Furniture_Chair01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.37112713, y: -2.77225354e-09, z: 1.61954117} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999916911, y: 1, z: 0.999916911} + IsActive: true + Renderable Component: + Mesh: 142860936 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.219999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.180000007, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 244 + Name: Furniture_Shelf1 + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: -5.52377319, y: 0, z: 1.00466061} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999963343, y: 1, z: 0.999963343} + IsActive: true + Scripts: ~ +- EID: 245 + Name: Furniture_Shelf1_Bottom + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.4045338e-07, y: 0, z: 0} + Rotate: {x: -0, y: 1.57079649, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 138181722 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0500000007, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 246 + Name: Furniture_Shelf1_Top + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.40490897e-07, y: 0.83211112, z: 0.000104904175} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999976337, y: 1, z: 0.999976337} + IsActive: true + Renderable Component: + Mesh: 147761585 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 247 + Name: Furniture_Shelf1_Back + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.8239591e-08, y: 0.425199866, z: -0.499661922} + Rotate: {x: 2.98023224e-07, y: 1.57079613, z: 1.57079566} + Scale: {x: 0.927978218, y: 0.999999523, z: 1.10000813} + IsActive: true + Renderable Component: + Mesh: 139576452 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 0.100000001, z: 1.89999998} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 249 + Name: Furniture_Shelf1_FrameHigh + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.40554903e-07, y: -0.132160872, z: 0.000283718109} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999927938, y: 1, z: 0.999927938} + IsActive: true + Renderable Component: + Mesh: 150586966 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: -0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 0 + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 458 + Name: Exterior + IsActive: true + NumberOfChildren: 5 + 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: 274 + Name: SkyDome + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 22.8147907, y: 22.8147907, z: 22.8147907} + IsActive: true + Renderable Component: + Mesh: 144340823 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 295 + Name: Fences + IsActive: true + NumberOfChildren: 20 + 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: -2.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: 290 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1, 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: 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: -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: 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: 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: -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: 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: -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: 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: 446 + 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: 449 + 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: 450 + 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: 451 + 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: 452 + 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: 453 + 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: 454 + 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: 455 + 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: 456 + 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: 457 + 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: 174 + 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: 173 + 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: 172 + Name: TweenManager + IsActive: true + NumberOfChildren: 0 + Components: ~ + Scripts: + - Type: SHADE_Scripting.UI.TweenManager + Enabled: true +- EID: 548 + Name: StealFoodCanvas + IsActive: true + NumberOfChildren: 1 + Components: + Canvas Component: + Canvas Width: 1920 + Canvas Height: 1080 + Scale by canvas width: false + IsActive: true + Scripts: ~ +- EID: 549 + Name: StealFoodLogo + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0, y: 0, z: 1} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 127459277 + IsActive: true + UI Component: + Canvas ID: 548 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.StealFoodPopUp + Enabled: true + popInDuration: 0.5 + popOutDuration: 0.075000003 + stayDuration: 1 + rotationAmt: 1800 + scaleAmtX: 538 + scaleAmtY: 377 +- EID: 550 + Name: TransitionCanvas + IsActive: true + NumberOfChildren: 1 + Components: + Canvas Component: + Canvas Width: 1920 + Canvas Height: 1080 + Scale by canvas width: false + IsActive: true + Scripts: ~ +- EID: 551 + Name: Transition + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0.100000001} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 2500, y: 1080, z: 1} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 120016136 + IsActive: true + UI Component: + Canvas ID: 550 + Hovered: false + Clicked: false + IsActive: true + Scripts: + - Type: SHADE_Scripting.UI.SceneFadeInOut + Enabled: true + alphaValue: 1 + fadeInTime: 0.5 + fadeOutTime: 0.5 +- EID: 552 + Name: TweenManager + IsActive: true + NumberOfChildren: 0 + Components: ~ + Scripts: + - Type: SHADE_Scripting.UI.TweenManager + Enabled: true +- EID: 553 + Name: CameraPoints + IsActive: true + NumberOfChildren: 3 + Components: ~ + Scripts: + - Type: SHADE_Scripting.UI.PreviewLevel + Enabled: true + endPoint1: [-3.5, 1.5, -4.5] + endPoint2: [0, 2, 4.5] + endPoint3: [1.14999998, 2.20000005, 2] + playerCamera: 4 + duration: 3 +- EID: 554 + Name: PreviewLevel1 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -5, y: 1.5, z: -3} + Rotate: {x: 0, y: -2.3561945, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Camera Component: + Position: {x: -5.5, y: 1.5, z: -2} + Pitch: 0 + Yaw: -135 + Roll: 0 + Width: 1920 + Near: 0.00999999978 + Far: 10000 + Perspective: true + FOV: 90 + IsActive: true + Scripts: ~ +- EID: 555 + Name: PreviewLevel2 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3, y: 2, z: 4.5} + Rotate: {x: -0.5497787, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Camera Component: + Position: {x: -0.24528563, y: 1.5, z: -7.5} + Pitch: -31.5 + Yaw: 0 + Roll: 0 + Width: 1920 + Near: 0.00999999978 + Far: 10000 + Perspective: true + FOV: 90 + IsActive: true + Scripts: ~ +- EID: 556 + Name: PreviewLevel3 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.29999995, y: 2.20000005, z: -4} + Rotate: {x: -0.34906584, y: -1.57079637, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Camera Component: + Position: {x: 2.5, y: 1.5, z: -7.5} + Pitch: -20 + Yaw: -90 + Roll: 0 + Width: 1920 + Near: 0.00999999978 + Far: 10000 + Perspective: true + FOV: 90 + IsActive: true + Scripts: ~ \ No newline at end of file From 74c32457a8e9ac424f3c7ab27aab2c1eb81712ff Mon Sep 17 00:00:00 2001 From: Diren D Bharwani Date: Fri, 3 Mar 2023 21:07:59 +0800 Subject: [PATCH 3/8] Merge branch 'main' into Revert-Revert-SHPhysics --- Assets/Audio/Master.bank | Bin 2216 -> 2762 bytes Assets/Audio/Master.strings.bank | Bin 2318 -> 2702 bytes Assets/Audio/Music.bank | Bin 4856128 -> 6200736 bytes Assets/Audio/SFX.bank | Bin 1354816 -> 1740384 bytes Assets/Materials/UI/UIMat_Black.shmat | 2 +- Assets/Scenes/Level2.shade | 369 ------------------ Assets/Scenes/PhysicsTest.shade | 8 +- .../Implemented/LeafNodes/LeafChase.cs | 5 +- .../Implemented/LeafNodes/LeafPatrol.cs | 5 +- .../Implemented/LeafNodes/LeafSearch.cs | 25 +- Assets/Scripts/Gameplay/SC_GameManager.cs | 34 +- Assets/Scripts/Tests/PhysicsTestObj.cs | 33 +- Assets/Scripts/UI/SC_ChangeSceneButton.cs | 13 +- Assets/Scripts/UI/SC_EndScene.cs | 12 +- Assets/Scripts/UI/SC_MainMenu.cs | 6 +- Assets/Scripts/UI/SC_PauseMenu.cs | 7 +- Assets/Scripts/UI/SC_SceneFadeInOut.cs | 11 +- .../src/AudioSystem/SHAudioSystem.cpp | 25 +- SHADE_Engine/src/AudioSystem/SHAudioSystem.h | 3 +- .../AssetBrowser/SHAssetBrowser.cpp | 2 + .../Inspector/SHEditorComponentView.hpp | 2 +- SHADE_Engine/src/Editor/SHEditor.cpp | 2 + .../src/Graphics/Windowing/SHWindow.cpp | 3 +- SHADE_Engine/src/Math/SHRay.cpp | 2 + SHADE_Engine/src/Math/SHRay.h | 5 + .../Collision/Contacts/SHCollisionKey.h~HEAD | 117 ++++++ .../Narrowphase/SHCollisionUtils.cpp~HEAD | 38 ++ .../Physics/Interface/SHColliderComponent.cpp | 1 + .../Physics/Interface/SHColliderComponent.h | 3 + .../Physics/Interface/SHRigidBodyComponent.h | 25 ++ .../Physics/System/SHPhysicsDebugDrawSystem.h | 2 +- .../src/Physics/System/SHPhysicsSystem.h | 4 + .../Physics/System/SHPhysicsSystemInterface.h | 44 ++- SHADE_Managed/src/Audio/Audio.cxx | 6 + SHADE_Managed/src/Audio/Audio.hxx | 1 + SHADE_Managed/src/Audio/AudioClip.cxx | 5 + SHADE_Managed/src/Audio/AudioClip.hxx | 1 + SHADE_Managed/src/Components/Collider.cxx | 18 +- SHADE_Managed/src/Components/Collider.hxx | 2 + 39 files changed, 387 insertions(+), 454 deletions(-) create mode 100644 SHADE_Engine/src/Physics/Collision/Contacts/SHCollisionKey.h~HEAD create mode 100644 SHADE_Engine/src/Physics/Collision/Narrowphase/SHCollisionUtils.cpp~HEAD diff --git a/Assets/Audio/Master.bank b/Assets/Audio/Master.bank index 21c524fe605a61c3d064ccc9caf489fe0655d83c..49135fbcde65f8b2ad8069b69eb4e4e5358b481e 100644 GIT binary patch delta 620 zcmZ1>cuG_$$kWa35Elc3n`@YYn{S8$2Ll5`9}xEdv5#kP$TF^tO8-~|6&M*90(^af zeVqM5Sb$P2lMUIt>urE6pr}6(JE;NLwI^lOom4E?B)6`8x$>iM&B?-`?=PB!JU954 zg*&ZYVa&(?G={-BB*>o$NHc;hKsRH0NX=3EPmwH|q8?U?xNY+32wXb3Z3Ta7kiOiF;yhDnvi3t3hHc3~WH` enUa$##2|oB9#E88T#Uu-AwVqwn`g4|GXVhd#+$|f delta 91 zcmX>lxZwx0Hj$Gy#N3J diff --git a/Assets/Audio/Master.strings.bank b/Assets/Audio/Master.strings.bank index 3992afa162e5b668f1e09ccce857c611f88beee1..b769c07fa39ec262ac287cfd614d647d1aa7b234 100644 GIT binary patch delta 1170 zcmX|=duUT<7{;IPB(*hOme#gfyDe$j&N^+i*2}i;Vxo;LwYHez4M%#?9MjaCBs)2$ zsUS<~w!&adCx?oHrCvaWPTKxcov@(}WXdk+5OpH{A%!U-+t>vJjZYgVyy3_DeQ)0H zJMZ^A>4J2TYipC&J75F64cnaFmUd?zfHZ$!@VB|i*WPWLa2*u0k8)jbY0$hVO6UD7 z5PuJ_=1J&rn-7Fz=WOn|0OM7X-Q>A|RKmQFc_x#=>!cm1$$gQRl5Ya)Vsa&*u@>uq z#1gWe|EnUs>{DsV(t?zY=Pd;+K>=+QJAWo%tY&Ti!3tJ>3hXH-dGRiuf)OC#WZf7~ z;H~ft5GSP@Jc0F==^M@B`YFJ_h`h)?uaH-HvX#6Cgm@F_F%T{TQh34!%eXNGL|!8w z0?A@BUm(1kgK!IU^OMmkkjx=V1OgV)A)xT{q-6qK)y!9Ne-2qD5Go)m1R@JaLtqcb zfs}wgJ?77u^Mi3fKwZc4rON_|d0aRo5PX{rPqQ)SB#p8`5!X+$@D1{eKs28`FVJfv ze`EbZ@;>(+AzFOK;V)Q#*@Dj_kSxkG|6Edjd(*+~{N$Mi@(G>0wa_VPz{ zMZ@ih=Dxv?cTcTw-8Rozoc3;IqPF+n9b1mMuPrKH^H;*WWodKXZ~dcn==yO9IetY?E&$hIDpkYG$q_FJZ@vCN)wau>E_H}gh7%k`T)IQx?@aIFbmy5s5ZR|TT z>}#65RGhQRm)URrVC}H0qn_~#hc~VN`lphyfiLSP&8nOWt}7pH{qOhwf~N7-p6#B~ zU)9O|zNc2>u6y#z{^U?$<{y`2KFK*{^+%PYd16+;hp-x#J9R$-nj-Iof=~z%IiZI; z(Ism^BxPOER3#FN`m+_?h8mB{L4P0?j)u6M=py~9+(|0_NGujN9l1R<*r@1Ar>+Fi zVnp z6*CT53wUO%MaS^LDW+P05~2v`5t@+tq~xhyJ|A63*;0t_1ANs=fMTV^=q{@49qJXJ z>{hduHlkkE(~>lrS)C`RXk7-4%Ai!TQ9+GT1^)*%`7)?y2F1moiL$W^)udV4ii?7c6k8~!_~=IeG^q(T8uDme6bj;^ zf<$4!ojX^>jUu{GL>GeYTo(jgxTyPp8;M^U;S7g6Gk5OXb8fAx7LHyXPbLE)DLHn< zNls2XK}j{%Bi6)tYWjEZW%Q{DIc<_*t7<=)-i{|m#W2xxqlJWBH~rT+R+Qr%aJ%Gg zmOS0WTZtQuhIYZ*q@(`-aTk10Ds;lfrBVbQmdXx%j=TXl$vb`4^+cBa)Y~t4<3=U2 zJQt0shl#6FW)C+XNOQYkKAxkpo=IsRyh?>$__b7Y$oobGe(8Nr-X``xQ^^ajNw@ZK zzAoi^i0jBK7gBZ|rMmIu&P@8~=Lzc6yq zSFea6P1?FQW(R$az2=*;Us!|wDZApoY5({?hTZ$AzrO1C(Klb079V#u>K}|<3#{6Q zZEjD#P;_T2Hmv9fk>4X6|DWNfQg|)bh0SBbB t8{^Y#QPzg8PV`9tty(~2z|^&XS%6_{;fMq<05D~Msc0b~CG1T5&_9_Ed9wfj diff --git a/Assets/Audio/Music.bank b/Assets/Audio/Music.bank index a7a856e5192bb7aa057a4180c5b4b92713e5b82d..41112f65756ff0095585d4eb42142ed32c310e55 100644 GIT binary patch delta 1355007 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

evJ)|P zHbN2C;|t0BVoU^_L;4s4)6lz%5@R24FcAX>lXpUX6R;mP4xSRB7E0I-yu%*2UI$F_ zXtOW?xcl&E$^G zLv5QmJ0<{Qwz1wafwHMjJQ?;F4NUi zOf-<`v2P8p1e6{e@q$A`CNlUxOAO$elX`zT!fz+6Rf+U&zyC^$8(C#VH%wXU$> zeSjO+kB6LY$_DhO0|fmG2L^oo_$Itc5|0S3UaI4DyDjW3;}WzaHe&Ll&zMak6Ohph zwV%)KykwG2V8XMF=4{qDDCREL)<%wt-8E;TaRchr((^s?tWyXr#uRh@_x{6DLzbpk zEp~|$aO65f=??OW96*Myk&cbuziC{wj8aZ|R|HjVGT1J8w`Y+>#1kaY`r{ov@2Ge7vjqNtnLYZEJrOL_g7-Z&%1f{C%2 z_?iAK^pFi8eQ@=e|5}2bLf&I3FSBRouX~A3Mx9e(zL-C)m6b?^u?N=fuQ_Hbz7!B{ zt2%v64??X2g{ecQn(l?O9;Z(W^;EfTh;B8B=vUH9_t)QzOoH}*GGT_Sp#UeFOxtsG zr_gtl7BzJyqQF~-)5yKX5O{9Jqr%g)Oa$#$iOfoaXLJfz~uv(K~?-DilM|GfZ^JU<;hRKN7=XiNsOF;fo!2aJjNwdGcfpI`PP?X8(Fn0q*8`iS;r`jF!dP(9hBsj2!}$3eVU5 zqn89N+<$7evlILerP40Eeb;wzPQSjnW83m0DO2lO`Dq1e{Apu3oOQq2)Q=Fq{QHQ+ zy9$GbG8!BWRG`E|k6c7>=!H1#hC-Ln>prA5iO(n|7c*>^mu7+ix|uxa3$^>d1dE5h zoZ1+%^JQpe<7&4woRo0R%jt3!*^s;5WBE%QH3j>GL%kE}w6mFLP^#`aT<&I(A& zEs-JqBu%k0Q$P&cNBP0VZva{WbWeVBgq>$!&1eidD5~(P$YSlrnzEgUx}}y;=o_}A z`c)p-1<+B`G&)^-hP&k&)nPZ%^}~U0Q;spnd&pQ|IObV4!6i^mo|LDRvR~Huth$%gCgoeVt&+da6$ONL z9)DV6b03gr#8)`L-zW@+oz{Q z>%^3Y1C*7fco=j`0a121|3e=I8epGZmQ)!1!Wah zEC5o1(80*8dhw+~4_@{|tu)j6y34~%WprpfQzZ?9)*(%`^^p>{gcI|nmlxHD!rHPkqPI` z1di+rX881t7x>JTM>%vpAub>Z+pZ_`N1@gFbY1|+Oh*kPCUCJ`Aii1#?6Fu@7n-4zkSwn=34fX%QQ4KUDjjU_r>=i9|J~9*i`Ep8%#1@>$4t@Du$cQs>*R{;@Z z0DdEGFhevVIi=Gi8*7CCbxThGP*;Sc^H_QS&AR}4F#^Zo5t&i3LIRY>vV6TLFzQ#4 zosvBU(@A++@D=%|q1?9KMFF5AM9RUd2?v6hLpU}f!yMA^76F(xSZfNp+<(s|$?dX2 z>q2m~GcUcSX{Z6^Yjs7@pa&{&O_fretf=?Lpg#phdBRqA^ z!Se(AWc))F07djd!tBohQ%X;KBnB1wQH=*pxI`PAEnrdcm3PcJfZfAQ?#t0DpDjfg zSdm6uB)Qss+g85CMz~zlAcUE8=Wb-`iroAvA&@h|lW#I#-o*<`N|8SPNdI8$gJX21 zl)P-gc@)8-)*?G}5Hth=bajGT%l7x~Txmn7ssdyk13Yk(t^@Q8X**?{Gzet_nglK= zU&+-Xieb?RpjMvaB3Wwy>VL+U$0h=IA*Lw0tOJw~80d3{(szfUV*Kyt>R}euHsyIH zcFh4fj>mOQSjpAzuiJJwVtJlgJG49V5CC_fr!;ed+#Yb-tQ5lx^Q@6`7kVPVM$>XG z5>=6LRgZg&fz^)o>}`U8qTt=Bbvw=%j9ecEO{uobQ<+tA^NjfmcKidGfRs^elW?e; z*Y)H{EXLp#CrBD?pa={NZm@9I4a4`)3{7Hv7LVU0jkeDqT?5H{z zkKzOj=)nP^SxUc`Kj;zy%$ML|*^~_2w@85>`^rhgQ2_wD1)=?H!_9yXI)7v3oSxo; zj<`BIzJnVNS7vUNKH_-9Y_Gg26)gLYW>y>F4KH9Ffkjhn<0)*9BBimb{g^-lY4+nb zy?v7^#^d{L|1Rp?=1k)QtWH-3mMj1;HNo&%R+sY|!GPcA6iT%@QW@YR04SE$HG_tB z#wi(K-I<#BpI!Gxjba_80ig&db@erK1xIr~WjlRZX#FL#(u|OB(^kHLJF~abb7y#7 zSOaKB(r;qcZK>KAw53`w0vFD_AOxJ%PGCsno}TGw$Vi)qr!(B3?g)HRZa_kP_+W}9 zbO%_lhdU%JprYOaw9ze#J_oVT>%)2Z!K4h?0sf78tQ=f?i_L7X!Ju54ZY;;Yd22D7 zARS7tdctUOv|aOI`HDAhEF*^JwXcsRf5`R_wmhFHlh!Sp_5a6AaQjkjv``D%6s(+{ zcq?aRCCy{BKT}>dv!BlIS}!9EA@JOwZANaE9aS> zJ)|=&9JG&>*yu^YzD^R7SQwcY9QBOWz~@3is%;gOn%f*;qZnhG?g@egb;M{*7;H8N zKxwC)xlt?_ExRo-Q!HKs*Z*YfNi~3Y*1}X~xvC0$I!v5JBP3o9ip7BI@T+4K%;Tbe z-Fa5TybwU0;0mL0CJ}xYHvb5>7pCDRRpgL4lqmx({a7;KL+)^d`9D@D=1UTI+LY=V zw9>Vj{fL93wKBjewa)PqR{4=wraVB8!le`=~IL4uyZoHh8*-pfel<@2o_fob;zwZq|HO9!6E(vg6p*IeK!>TjbjmaLDK1ot zuFMa}Hy7aI$$UHC?_?7tt0QZqRCMbNNO6HX!GjY64svsEOu5+D$Q%rH>)+oRu8Nxr zqlaIt_uS(##%rDn<2T)q!ajYLAv)9Jm`h+XQl;Yt-MuLYB_=pxr%Pe!VJvG{BM-ym zbc)Nvivuhu8AsI9n!WVZZRG9Fl=1P%jSIPxZ@JoIo0EhFv}_dgFO|$ceq0+}O`X+*b3Q0)T(! zg&$jyaKRLmd4&ytV?C-x+%qLAa8P84z-Nwu&k6emS`47`cbNysR(+U2xU2)oJK)EB zH7_L=dg3}IFs!hu^IsI)rAfd7GpA?LtYXpG@ohQ0)|m<254a^{vte%I<&T8zt> z_|5olgom{~^h;yEZsB5?@6(o|_n*elsFdR9Wm!I z>Vxg2?1!kTS-?B#+|lpTKR5!gIVym)Qq7);kYA?@SL}*;%rJp)q|C$SY03M12c>HI zV2F?sWSWkE+LStYXO|wtZk32_*u_bnpcso-@7IeSTQ$t*2htP_ODACcU!P0e*Y=^= zWuxeDbz~;a`J6cVBod*UcLP>p1O_;OGi$dI9lomyuq{eGDHX<20BBudhd_a;n>+yh zpZ+QH+bOWHh5!`)+(0!B{x~*A@TeEufSq{YuSo(_iKyookQsIvI`aEt+tDLn<_ipD zgn$n)3!{d-sO?XD-yYR}OmFser-+#1O|gP7nf+>nrjpdYi~nfG+&!&(1X}sKuxZC) zcG3>wQ1r6w`6tM(zx)#uaS@yW2CvwIkB~&{`}C=g-nLt3rtPTJ;Rh{szVMgyT8nMn zV{AaOy37XRjWg9Uqb2YNx-iG1Dynond*RTc z*n5zlz;9&LZqN+P3V_r7(;eUg7J|TZV63G!>Gt7zZ$b@;aYiqBpkL#ywUw&EZWr%= z{d7pjhnD~+ML*uE8*=Y;~X1Wu|=;p&=Up%=jVF57> znFs$Dy;d|Rb2iCM^^;)eR=h-PN<*LapuJY$&y%;G-%R3qP$E@v$y^W5BjH4p>-T`hu7k0N5NfKF zw2x^qg}!16U-8Gov5((dqlYK3VrkE$*Wz!@s`tvieBAm*=EQ%u^5>rxep>v0mD&rId39WL`o-@2YxCO zVVH)9HUvAePmz!d#yEy+k{~<_`~o%+Ht)|o-;$I+I(FDpf~S?ayhv|b>v7snao>hX zNd=FfjX#M~rn6DI-2mI+IhMVGC5Jf}wNL6Ot9~0-?jvy)JN;6F)M62(RzUS$T+#N; z0b3$52;dF30zmzu3 z(xnHRiUY02lOmgc6P(&YZ1)CGIWxeJ+d)~I3lK1ay5z@X5i&Shs3^Lt;xfi-qkuaA zO(AEvcN#J01QIxbB!@ZBK6HN5c2X9MblW9ZGsg8s9>ktDbk=P&8fdp;JSGk+TQ7le z0<-6$U$$6KA2}$qgW~*%z?n3Q*>-Q+LCVfoI%6dhfz}t@8+gNFAS>g?)&V-xV|=>O zM%AS-kP#c+#YtAbltbcYth}2LzQ5#@YG zFRmSpYLXkCXO`WNIkwEolX!pg7maK6P-^ZzcJDY_Vh*Mha$|epby#Jzs77kcV!)hL zj2&Rc%#x~&dH@b)*;8P2h=G-_YX_Q)aW1LCB|-Kg!o!i1mXbuw`g#m8VMT_~byGAi zjvxwX(U?WZMJn>(LUQmpmBkrN=<($n4v{Zf-S#i%dR&6E&Lp*mOH%n|H~>+qqQ^cF zd&S!0#tLZ=SNUHclFQj#Je_oqE?jj-es6{U3HPpZ7Q+(#5hybMcqdVD%PBF2{GeOd zfPtR#^2%bOH5vIh$|t77pzvh14if0UE{aS8@k4hyUhR73%OKet&%eFtMYDFm23Z2) z*7T`yZVsDB3g&zyO^&SOql+L?fyKB;mD3Mgo&bv%i8ws zhD_HI*v7H2Z;(s6TDJ{=kGTY7~| zh88_XouHuiQLSR$0DTs^%W17nO2|&3F}lhJB(l5)1axSwg77UM*5f0=pHk{&uP~rB zd$L&4{S~g(_`+YG(`CbTo3(R3zzQO?nS1`w8kDT>F}*EuclX+fn0cytzo~89!rb?Q zaThv{O)dVR!B@PC6IzSSzfWwDhkF$E+G`^rSr{BojBI;!2~Ksdp3M;Hk@$}Z6133R z35WeO5D;m?O7-8djPy^xHx(mj8+?U0ih#Wc6_ytQ{^JKuK?8Wu*Fig9BRXwn280vC z`9O_gjBn8ptDTH6WiZxsRwx;l3O%Eq#x|%#dqj7wGs#o4T-*4C<`Y?Oc+^}SP*X&Y zonKpbZM#V+_QuP#KGIlqOOWS2hR~8DnGr{4`mSTG;p^+f$S9SVn_ZsQvGwg=*DMc~rxs{!O;# z-!E-wl`-3nfU-Z!w>`aha!{7x{2_OqnO*m#_f_)Qq?L=0gRF&E>}xxF3@O9@p-GAB ze1a$9j#=Cm=mQ2@3}hZyXTkimU>(Rn@X>FG&wC2=7o;#|q8&6jM-2NQxZ-IFWUIy_ zygol1Lm*ztfwraIIbPsNGE_6IJEc*u)8jzTQ>?`MQKE3J( z4!lqTv8ahDF`pwoDr9{^%6tBNMF2l#?P2h`CX0{!<_IhSIk)v8{1ndKe={!4Lj(S)DXu zKt%9}Jo5u!zh7H+FANMZ=h-6JPcUEiTLNu6fQ5bAr85_nol-DvEW1XIwN89`tYvSyq$a|jq27@TH6Mkjp}g7# zsUh4tQbc-%*)zs^A}H{^bFIs>;Q%>3K7nI=!tg3MZrIX-ChC1fr+FJuD;cHEFa3=i zT)z-)(b>#U(ap?B5saE3wq%Z5|O<-nt-&LJ#T6PLU?PcNW6Guynrx4ysS!@c1 zex=w#xg^E0kGj`Lh5-WRr%`*ZIgSB3}35FkLJ zQ!@cu;f*yt?*IZ{aHc@A^2IceR*RV~KSea>rFW9RM3K%aYd0vklU*K zi7Q(DX+&VcoHV~#Qh{D! z>tghLjrmc<6(cXpTPB)HoSq)N8n0a7zw~EHdx0bDtlyg>+r3YJc`h&b4rO|k66an% zC5Ga6U-!Olo*vYnI$Lm6Wg`<1p5=%55$My8BkdJB3LDQ@;9_X(1dvHIJZl2X&;KE; zxsr~@SL3;q0`Uq{BsBiAXKI8=)E!mL@7?RLr@?*WeYv{quw4iKMErftD@^WG-gZnA zZxxHg@W!ShiHYwwHtu#Mq7DE8Q^jR^!Y>%oGP%etpQ&TBiS+=?hhS0QqZ{jh^@)Q? zae7pQE*dL$*}#%&V$&o@KtN)3pv@xAMFT{b20{3O`qaBpN0p?BzJHx|AC#CX%9r?~ z*W}u#cy){Pk^u=*0O$WObbr*Q@iA_%h}Qg(k}9QiaPy`q|C0@OI!5g5xTG21RagOt z(PYHGcXL-Nkfq2qCon3z?&k45O<7~b+li^u&zt?yk5)ZGlK#pJl)vM!ok3*Jv!rdv z`q?!iQle(~d@lF35P&fN@fiaCTpXM7oOt)NZrVXIlXXiw-G3#Og!3%)gF*Pfe|`-G zpdL**+B!5#TfK0q2Li%m=chWsl_}WnpEAU zy<>?ckCMMz?ch|q%oJA&8Bp@} zZ_=_X*0sK7`($t6Ff&C~Bo{I=-mSW&GYxjUwljocbkOnhapbn01+dQaJ$`maYJe{U zUrfPlgTKeoF9E^K2Rr`*mLDd(4{LjR1z7%yynCVg#EAki}a2P3lZ_$k950xn%3Fn-NXy zO8yzqo8#I=E}Qkt2Czah=*8m2zUVaudAJnc<5pMEbL9=PX2;Le<$YCT7M=erXJd16r3hXw{kE zBpPtQ_Vsr?JA8GiNd9VR^Rf6W~8{BT#e* z%;-$EHo9J@eIF2TJA8Ynv7oR6N6ZzdmmgmH(Qp@;_+DMMy9yCh;E}?vpwdB|6Cl5CGcl+*Ly-Vi1O2#l?l}V=zDY2~q^p(@AV2D0*%=B0rde>r zB0VEAsPn-90VUlI+XANqnb=3S2Zb1cG+qlLf&1k#PAR0w07M=N>gD>I;HE;L1o5B2 zzaPIDzzahi+D}HD5DYBe%u<3nBL5&mrEoQ^6AxV1(}Dt*4RVuqdaS#B`$uqX1u1>^ z+WWHOnIT_I=v5!`RNa8=qR*vqN$3^%DVgX^;YfyV2$!=kAh`s{RbE)!9^@(|Z~3?~ z%db`5rC~Zq;m+l_w55d`$ysDvdhZ?WunVQj zBN6W%FX9bX5Lza^TZ}1Xw%|~%qi_56)liGmgII*I&q)s{iVIuDHW(_h&M*-s%zoum z*6yh6aX}r$8pE^@WqXD^?>e~LfSXu8F9&}ugdDD0g@(Wq><8EZfH8B_fZdWoh$W&U z1~?JrT?mJ;@{| zYVXjMT_(ChGFQAxMhUl8$umnoy^OA4VUYLsNoTWSeO4cO0^Mpn$W+9_=RSpO_dY9O zfcozZAGjRtD~8CGuCg##=Fpfl^(=ph`gd`8esvO+Ica|rg59{E2ufr|Matz7X!@vL zK{d*$m!ya{AdZa@)#AGDUiPI7)X!7-_|6np!)a{|3)ToHp|Zv(%O{w0QtULQ(!Fhs*lsuJPex9a=h3UHL zYMhUZ+<+JrBwXKPgs3Z4iq~p|dtH^o`cb{(I)f<+PDXPS60oE+?UBG6LK9cb1~Sz z{TD3t2srE6pBGr4(WYK%V<~QXulv(`$%SJkk0=)Pb|;k8pxMH$d$6;L2EAcbU(3Y(xD zlqwc1MZ3f$f6%Q}Qa9{mt>z0;xm~BP{1v3o(y0g$5vb%bPB8!*GPweK(3r)d@lNZ3 zcmjTfsUQ@qwOPcAz*`|sif#7!?yI(YSX-M!axOQ>Uig*qedMaW(#xGs2rX^Fj^B>z zj;xI5$q=dn`jCnlhv85XfoRmT(qhRI&A%TqCIBTma5s&+oY?epn1C979wSFe$iXIo zVKgb~ec$#R@ zU!^;6T7^5AUV7Ms9EWxosrNN>B@K!vaBq(lYZ06#sLLS*N(br=bW40I=7j1FIbw5 zXeu{LEx|&n3pw8T-l4rexbdSwLlqXgB3Gm$wu}8~O(K_H3ohrOP3Ij7Jkq$LNHe7#De37tcgZ_=fVf6Pl-NmGC zGbP)UE7`SuB>O62*hXc8sAWZxh^)qB^>^)M4KiUWcx1Rk6OdQTPQl$^Jj#kGW3Ior8@%H6`2T@-(6zp4D2;Q4dS-jgA9ENw1kTG z8SqXA8;kDmLCRQ&_#@6e#)&@Gg|tLp3wLWq_@%!4K`M(|94DMuG9DouSe{!jl&Mmh zMxWGkA?c73x<2g%BBA(S1nZnXilbInrGUEd;pYEZDm%L(_i0AnBOy*p4Ez9Zj;TSt z*y|_aab$CcoolgN$95R3LjTvt;f@k`?-?N8?0y}%G~e^VAL@7SUYC4jW9TG~$I4y& z-#@_@@j(g`#f#e|_}mUkUQ3ju3JqFkjO0~x-4>lv2!J4xOCe5bIbzx4k}DB!@iRzl zE%3C!qvG!_K(sEvTrDP25-o6Hs|5pz!39n*`*!;o5j%^tgIzUW0Y^wIj+Xfr1_NPf zXvTF3?{CCb#T>-HS-x_zsq0=j;}J9*mcQV-X2tU@)jIa7n`f%4UW$DiDlR4bCO@zv zH_j5&hn2yb#&GPW5RT-+zS{8A&sEs@T){ryox6cENhO9HEe(`6WCbgKcr`p36ZR;tf^Cuj+Dq`LNBhpD5d!~&m)QD2L% z=!`vH)^J%z-Sr{2Y&GOF`l4uLCT5d_op|q*LC-4mEJjjO4AT;?Dvwd_FfmoX{nkEYW9Xzx-}Ta`XY2D@6rTPwWx^7< z?m<$92j^};2HY;91k-npfMv^FpQap?Fi$fteIZHp(06pqVyv=_xhJRjGwRA#46NPA zWe6Z3NqXM=71~epsBV8hGvHBqk=kkb>tU^^2E5zVd?$mqlOVH0 zU5|(O&Z$6|Qo1MZjy`UzWKvU6L&_)b16)7uRGu3>9V-3=@uUkr4T&Kk>;^IZ=9c<} zJRIumB#QQfi;iS6ktebIe=-oW}sFMU%e{D#8Bp`*BI0Nls_a& zeFQl#M15-WgE_|_cb`8!$K)SA`4|#v9TMpJ+Ow)J9%7}Iz+<@dmd5kMR;AdkBK!_f zJX+kQ-BzqBiN~=iqr!p+El-HE2$|m*z3=B&X9N5(*8AqKa34Amx)BST-3LLMQRcFh zca{Z(7Z=X^>lGjQ@Jim+z-huKvw^H2w&d1sXijNKMEoe;l7Pg%{o-oHC)L=`&9sNj zHed@=@m!>iyAsT_GYy3wn1UC7sgAiP=^XwWYMSBi2o_V$idKM_%!j5p5%-28UPFm2 zn%G8y0rbLu(RtWM;4k}D3R?u>Elo1R0Ffeq2RRnDGv1L8RbO%JKQv|Ruz7&&Zjkxz z-d?|@lfOS@rC-13&K)Zb372Hv%kBRSj_Kq#EagE}TU~d#CD+TN>Eu?@T7+vb36)3Ne;_;*O#j}6G!IoO?iy0ceqrYqx`|P z+nV?R`LLo@n&U1t>Wg; z?!)6n4XI9w3S~P~?wQe2uVk~FTKrj*J90Q$hm%?s8qshFaTKw%gMmMQL^CsJjlRP_ zLZ#!INVq%c)k+#F8lRbRQvkFuV@fWfe~nMpQB)$`zLu>jttydqEX%cP$ymYFE@&}y zr!FRtbdM2WtBS2$Cl!&ud(gVgxv`jYI?qf>I=a?H%H^>>)@y`Rhse|vA79U(>;Kwl z+}V=WTkiB~Q18f%G~?XS3u6csxd$7xP!{+gu()hL1N^m1pag6$rmXV6Be$#ER)bE{RhdU;fi_7q<>NY zlKe%HW(s35Ja6ez#EC_?9x{5Bh|bV_2p@^jwg~fh8+0z&PvNeSrM-GJv(jLViYvND zQQM{F6(ck^uA{QNu8BN;p7noebvq72YS6LUEmyj@L|rUeKj8FHlINJNu1Mppzq&4I zcT$=z@f_oTnS{D-@&4G@lj>{Pl8O!YMAW9OJa`G=z(DEQ5I@BFsD`?a*ij6Ev&5Vg z(X=fHNaPr6THuI+8zz(k{;wd!=-AZi53>cj$-b&RQBWMsIA*q>F*(;jV_@UZ%k@fQ zemLRT7Ag7o`Iw;TA)=FA%VN5R3PPAQ=SazVY!mh z#)@NeXPsJDUr_k%ihPJalZZT*lRu?~NT^w9mD*Xi_!}56Xb(DHlGJTPo4#S*;7fJ^ z&O+rNj<8E$_RadIu?I-O9Cm#-fbgpmjTZ$rYKXYSo43g7GU1SC2fTjH09~UXh-%{E z+LGijIIYsI$df>^p{|<|Qw`CVs6cmgtvhXPmg#O1`57ex9}a5V2`<=ZVVG?k*CiXB zy)}$qM3+?=l=RhuAW<}jN4u$s}03C6&&$V zWqM0dgP=)S4JQ&!R(Xo8sDnSo-`s%x=QBn%jSCd1w-{t z1>FCR?j~&51i3Bkd;8b^2CyBNG?EdnTh5FB74N-ATUdm3Q&>?qErdKVWSNN>f%P=@ zD?5X!qVJmFVz{^KRqYo7?nE-h9;RX_=&`j)Y8Z*Slu6;qtS6F6;}H|N-3>rmHoG4% zkkIZSqHbynPFCga3>Qi4)D;aNPJ?`*j9S~+2!AJqHX(eO1Be!=0MJRV8KLRV7;_|= z0wf|AWM$@=PLNJfZU`Ak!uHX6V}4F6v%qlQYrAs`C+}3g5iHBi-gTINI)8<0LG%WK zg6{3-7Icv|b1%eh=@elZx>Hk3@-*d2+TN4k&}N5h)5ALETAz!3*_I=)KQu>Cbwqr! zi-f8ITJkk>RAy%h2CSX_^S%K}U!^D-6?0d`A0sC`Pt%*wpA^p5F157*7(Q|Rt)<5i zMJuF`j7inHyt8v{lV02_OASN!oa8=N-<)VLjJ|S`fbUmMef#-Qrsqno9HK^^l?7ql zl@q?lS({Z3yJ!=!oQ`Gd_`tW>YrkA^t~LVH!Wr{tG?zg@b=eX>m~Bs1Jf7BqS8Vd_~R)^j*(G z2N`w9{&1Tg#7Cokt-Eq4)BGolkz`HTS=V~w1a34uM*f0yuVEbWjqw_pq{XDpJ4KE} z?&Qud=l8WluWsoSoUS|L8EjME^gdoK>>L>i;=DB`I1(i!(^{W73J3sUb(o>)k||$s zPNCt=fg?)rS(F09Z?*Hl&(IL_7N}B}9oN7X`E7jmI&}fOl1vY}Xp3cID1Hr2Xn?W+ zeh5sDovWwT5AeB;+n=O`@xPm`x_PEVJ2@BXY^9ZaI&M@LoosYnQ=IVIdn_ievz&_5 zr@DV6OK|MWp2b#qsyTk*v5Fpl^E}0Gj=BBAM~QmyI3ZK+M?sMbPJmj(|7O8r$Q1a- z-*VPzQR1yffy099{|!p<3S?2FTIzaX z3k{c^-hX}Ti^xfQAHC$Vs~jZo+nxCQB!i6&@0wtE?crEQTu)U2I{Fq|_edDRPQ)Qa z8L{r_2^2)rM^S9iE812%Ee|_L09b(@6F9{}(aAIL&nyO~&~yqn=9CshSF{6|WDX)6 z&`VquyI>r%-~Fw3c5`Dvwd$U(jvRASLw3RIYzVv7D-c{}+{Nepsk$P*6R>sdw&Y0* z6x+1~)EBICAaviLC4WeFd8XQ=TuOQ2c=?RyJj?bt!DbxTAq&5Bu2ykY5mFw|A7A5_ zF)6_RS&F&3!D^Y`o*g?NRM`B{fz#6FQcQ{i6@`%)!u`~sxW5N>w<9e+_Z(W9r ze(gX@RZ8yhlHzPuMW4hp-}K%l*v9S(*2FdSzp!Abne}35p&=TEhnTFkw<2Z#mlpZs z*In@0v9w$S9*wmD(vnPhG|oK-YE9fVI0c2O&}S=vXkBj~;8djD7G~Ut5YE@bavp|k zE=#eG$Wk3kP%GLyFibeF)7Dhp*ZgIti-c(-ZL|s6z{?KliXRHJ7=zz_yi* zJAX!g@u3f+ru@^!guZi?$I?5`?#W5dOCR;v$*9Y9x}WhbLO-w)G>lH@m_dz&O5?w|G#cO7jw#DZ!w{41NL?`xY|P%(V6*1 zh!OS0nhRkMLDgVBeE;Nqa3z?81W_Dx>~stbSH(PN zsF!2kO)+#8s1GKN)p+JU-|iy@U5ek8?>5=2ynA*DuD@{$ajxX;myIO~1;GVfPORrC zt^MMctX>I%67OD2NUIPC|6QqZCht?6J=!&|U%6~k`yrX)ulu7tYVE zcSkh7-{i)*swKh4pvSheq!ZHcAeq=G2;AmX2sodn&DH_{_@sTlg}sQ&W-+ZrpPJ zr5??fu?Di&Uo<_5Bq_!WU8sn8N~}HH5mDimgvtG~{TexSI^w9f8QN6a1)Nfso62M? zG_1ojoswB@2_6-%Y@IzWWV6}TRRte^749hMU%%8PY-O9Z@WE`xgPgZVbFPq+yR2U1 zSrmHpe4tO#(yd04op|?FU%tBJvQOpK-QS13JbNPf9*d7ky_Pq>7!_;UHQ|BwDt|+r z#vzj$H6A=WY0U)reO)`xZZ~tfvXZNLB1rx3{BVPvNd*1nD(FaV!TTFiM@xw+Md8iM zXm0)k0s$fUyY$~yEu5H&rwKQFaQ*D$wyV$2e7}$JoUof`E@;2S7`p?WpP2gDPc^eD zKnA93Dj(smaY^Y4ZNo83e)q`M1ShM@G;7uhrHT+0iE2vllZNF8Vp7tKbh(i#(LEkz z(tNg*>FsjW1BOSU`1mLWjly_RP~zuPiN8bYd*n^d^cLcFrtdeIu}3fW9&F@ zTCJeKf~q`5)(V=}ldTh=1eB|90fj81@^ex_rmHAFmd^1+WZ*Q$T8n!6B-K6PZ~ur@ zUh{RObpb2xl+jpEUd=eyDcALvWG<*SW>44OVsIX{h7JyFIoqV$q%*d?cmIKQ>Exbd z_7Sz#10PvlK0;kY79Ko)GdV*p$@A0l?>)Xdo+`-_oZo`G*_o~IK>_i%yr8`HJEM!8 zwwjT>Otd6qu->>@ctlorl>h1`;D_(D;~$l_ z;|%`W1n?tC&l&?q3OgGEzOF6R=znyIaGMj@<%L%uomHMHC<4NtDk(nP+;zPo>J#`@e3ba8W<1L85oeDp(PVW4^O`cu|h>p9Nv?$ ztF{4I6FIJ$f zDFsga$;bpY9nnySL#dhPUGiE~9?Aaxi0gr=P1WVilteUL39!Z~HaVKva~%8;8vINX zGZ!4LTL_M@&BKu7bW@CV`_*2A4=Bep7(vd-Cbn!cW+G%ngY%Wu;YDV4@1t^Z+2P?& zDD;nI$jClr`S1!FSlLT}n?Nv)h?86v+X4e8{4fp@L#E0vZem?^aC#4(XU!2hpX?acMFvnJSP>|dz$mn{p20p zhq%A%%-!W5c04K<{N-h(uKS;f8vT-zV@1SxYUN1jivzGEhVD>{_iQ`VV`uuGpbU=+ z1pQA=tg@-!x`f-^QN!fOe(t9omyGAXpQ4|Ae|+Nc&eZER(e(>kOC{tq8n#Z5@7=w6 zEeJy#gzqa09x!yrv+l`k`bHDV6&4mC1(wNXGBc_~@p(-;NxGeY&*=C}90S>J>m|a+ zEw3?w@PHArobw^0icPJ%Az*;1vP2x?ZG8dipDvdQ+MpX0(hwLUwoIhB84)C!;U857 zNY#$EsJ4h&2MT}o7aCdA4HWV1BO+Qh-Idt?#Ui>|^Ir_r8aUV}ipyQ0FP%;K>+8OY zml{_Zs+YzquHfWsa?M5%+Q?J*>(1t%CWd)w>4MuW2cAA?-0@QqAMBS#x!XN2M{T{q zo&7$@cQSkSir7;+f@*sS+$H@X_FLG|E}`;rc>{_!7;iS+xSMvhHBd5i|CtVRoZ2l* zNi;{SUReo#ndLOuHnYncw6tSqkJi*_C0spyV-stX##6|L&(x>dp=ft7claWDn z{26WlI-n+OvUSUhnl{(ljFB*zp)Brb8p<4fik@dc^*j^INcc_8JJR~xlcI({6a5kN zet2d2uB_^lf81i+&-Ry&Gl~pUcF5l014|+Ae6QE*E72BFzNOtVHQ8tdvixKJ`(sTV zJLmc|uiR*vZMq`sIR0*7B;(tq_H{Yv7iA5Hj&XvRv= z+Z35)%zD?kV#8*azOItX>c1Wr-0tX0JoKM^$f8qOMzL)Z_h0lBZjUpek@4hp?&vgCzdf` z!f*Mtg$Swh%jL$_f(uWmrct!B zD>9F_RB8I8WT&>Dnp?oe#EMFOvuUMs_Nc-^*2B-+`*N&1Dvil_cb-}5`J|3*+y7&o z8}+jiTq+;+E*qeCQ4U{lJjcDvJv?mJPGn{KUiN)lilz#vCPOU53{(U^o^C2vKWV;i|R}4a)Ys1W8 zw)Uu>?ziz>>mUDO@hxY@S5IcP5GU!8yPcDI9KQBx44WJuR?uJe=d+$vZlelcg)&*Q zf1{)0q4m40*;he_>LzHO?b;Opr7v$o@{@Zc)A@t*V`$jP<8SNy$DyV{9m?f@FL}m^ z)@`NWKJy8I0sWCpPR{pK$m2`N`N@y0qe%B7R8&BX5AyG#BzH&aRYb=PH~w>Lrg*g5 zF2#qM-CUU>ezNvNImTtO;?$VioGG8s1)BFyPhZC_R+;sh_lbvk`Lq5CbcTFW=&{KtRJ7{)}xEzb>A#4WJh1cDKz0?GArzs=zD{46!RJkc%gz zW>=Xh=UhD8c}r_BFz1GHU#zNo7r!iP_gLj>MGY%Kk(pcs;+{*Em7wc~U}DP|tEWo;`MfgnD=6YF;B>O3ELg#M)_Lc+RPfw|F^MWshiN*pa{I(Vz3-DJ(eKhP5u|EuN)+$v zqO{hBm)sfUT?^;5o#!~=@6xb!&D4*odt=ZM!69R2M$vt%ml4ly--+(2SKABGS+*Qz z92W|oKF#qtn@2GtItF{%sFO|A02mMKsocVtf55S$~0-=T@1a(D>Oni zbFZP-4cC#jupsPQ=KAg0*r(l-ybd2{@{U#inPsCA?V2QV7|8&iX|ESo*m_egce{$N zt=K0LBCo&&NQ(s0ht&c`b*#DYsD?{#OLVo>$@Ka&`(E~8jHy04yw@!1;M>aJa5Yeu zFGCGAAG26NuJYp1X<_fo{B6Q(O6gP;*Lsa)?)oH2zFO7^A~MiK$%8&brYy+7Y**arHZIrtd%yVJjQH3fAM`9%1&UrJ-Dwa#>G9%S~jGwoi5r%WqmQ2x&#^ZH3 zYRIuVf0a4Yj0p{nmSU~qN_!VJ%P0}_qg^a+7n}_J!jUSOb{Q)MzVBjw^gI7Ufp~~C zqU$0v(+30VkV$b02YBmV&PlT?w6m8e)N4P!PqA8Cv`}U=;Uk#P2)FvD6mVY_%~!JV zAls5(Za~OXQRA+hjV{;ER~v}ce(>%dy(_8cwUg7e9ij95gtsHP1^EKP`A0K0S5Y9l zH(P{W8i5pJr^*FL7g9r`p2hD6Z@l6mc7|WUWF{fYsL+4*&ePR`L$&&QzE%@a&0R& zPe0(5#?`%7u8nD19uF#VzNo>l$_|WKG2kokYHI%JqH~pO3rhW5{U7{=Z6WlDP5-F~ zQVO(Rt=V$qoiBlHRqNlRwk)-A|GC>bUJt)zkNn)?HtUs9&|T+o+2|KFRIeNW~W z6wl8-daP~{q*8R!rEh2UU&k3uRJpxx+qu#mO8!w#_nJ1(7CSn#u zGS>b?ulS03xYAr@M5FENuq#g^YQ3^FKSC%5`lvRz*CUV+SjVt4sIYXK{;0 zx|$tQf23V-1!m7K3QwbV9)bE&uDI( z<>!A%a8+bCZ@sDdaAd*s()p5Zf3EATA@7VnAK4QbUv7p-2Sj^s*YJ9?XiKpD^QeuM z^gj!AYy`yx7v6`S>hf_so6gy@e zU1CJOR7qNGGhwl~79kVjyXcfHHt&^~?$(yuz&L3w9PL-Z**F2c&5wC2kC#W1gzdxh zj;n-eLgH=l%f48VDJyB(O0UC>Y?KzLiHD!R{P&?J)y9t3A3X4LGJxRuFIDtZkH#k7 ziuA1!W?mV`X}?^_+FX?l!uzyBLQ6#fb^=4HOwW9~TMK74Usyrhku*A#aCJSRVHb9V z6s;dq)ohK9?wS2;x1`a)B0V~KX~0NESi4mJ{}V<=V#3-r6TSDoSf1^3W-f%?V4|6p zm)D2BcvaK>;(z-4$}W;*axz43B7#xOKgHYPgD~NYK7orEYP|}0AnRvh$7xRI(c{Ez z&!2?stvIZC-^8Vhmf<8r-q_+}%#ld6LL1nJ_d@ilIY)^(T}8ylrG_8&SU9q-ciP4> zw1ud_I(|A`LK!`e*ab;jR7AgsaiH&<5e0Q06xkxHM12gQ9Z>TfP0+$`b2(^Uhorv`s5(#@Or7-?c}nO zpn(+!HP1|#g;}UHSbPab?&8X+fzfr#F#~vT!!Ss>?WSW zwvoq=q{&tXZeqQ<<|tW=>%)6l+!h~PfkCX0)Y7v}U(c-zni14DX;RhvWh$4RQ!f%O z^&^nztr(A$cQ60x{GwsCwf*qIRfC|lvUIA8I}L%dPA>mEAxSJAvCml`D&hQn0i5i>3DfAN2k|_$b1-P zKs+HvSL&dVpiUr$D$bZf|7T-qRA~p|1ahO3(ePm+8igVc%&)Le zU)uXoZRXDdE9<+od}iaTK0h*7z1P^HL-nG+@!oYpN-2;V+3(2x-$0zQ%R=?p+Xhor zN=1t&)-`_%+*55*r8*@{&eBn$i5|W!x)nCt1r)2N1VBdQ+N9*5#rO*1O&k(fr!|DsSvA- z?v@TR8lLas`k=pmekmt#8jz6$B)BK8*jh`_O>Q#bGw|5T;ckR3fnyY(L6J!xE7d$W z63(7znv`l1<`CY3JPKMbecn#SciPyLqYr3G!r}GiTD>|b|K-T3Ny40BYYgc}Ve-d^ z;@o>(#Ecw*3jat2Q_P{45jNZw5~xZL-@XZBkpGXPvyO`D``Y-qQ`CS%Hx4N&jfjdv zHx8ZZkkTLmDyVajkalPU!J!*z1x3d~1W}|z5EYdW#O|N(`M!U#SgZxym~+nF`*}W3 zu$!u5V%ABl50^jRk>z_&qPQ~n_4XVD1*{4Jnd0;vX0R^pzDC0R*wN$r;rr|dJ1LUK z_R*C2?V_x&{D3BzuQ-tF_nG>zO1cK%!u_0b^ej4*Z)u7wOGkk`EDZK^Q7`z|G?A_y)1QC$WAT;*cf=_m| z<@sv`VHR*wg+g)B0~sQ{{NLQ^p;7I|C2Q*g3ND2wpDL#-7j)F@@e>cD08~(#8J?(& zNrje+EQC^;EZz?^nGm0~38aXIIbNTv*niZQ&T9zYyjrZKUd8pJzG!}XdfsXy_SI(D zm5DbIv^DvWRqrehAxA+Fx%=dUJMpy4WR3DVH@?$x4G}9UzVzjT&RH9$Pur*Vs02&i zyY(bUaiyS$J;k2B6FSGpd)9* zIb1Q!NMR*U2^Cze3mwcnkwuQgE`2`}t7#)0Q0n(_A!}6HGH(ip0^%5H4oZ73^u!CzEPCsq$!YgJ%&tmI;B6Dgit~MbGSQjx)_GL= z@Wq9t?6~NkGk9mKW=7O?QyuqjHTQBn8NwCgnWgk$(UVVHzy96_*1q#o-8>Q%wY43P zgk6t?kG^jeVgyRb-mJ5kmp2>6SB-Smq*nssH_23=xwnRl|9xsqx6Fq^0LdK`3^VI| z+TTs-#NnEG*W4EwB&BrRk2&+OgOj+Z47m5<{sWcMelgMZ(P5d_u7Vl{1NGxru_hE@&7lTOA4em&Th z1GGp)M<%U^a-okql5CFOBmw1{vS>Md#9B#4#)T|yxIki-MaH zT)>ar*e$~j7V=QsLy1C%sysSYg;3oia9n!A^Fhh|Q|>Ln0Cf!a*sKCIRSV$@7|QO& z-d0RQP}e*MSb35N?B=&pmJOTi-tVL?f84+iTU@)Q27Fa>YO4Cf7lc@JVj_4ig5yuP z`&nNBw11MReLm@>_EqoP1bRU1A>*Hj4hn6vFbRWe_e6oWP{wy#!}7F-<3bWPk*PPS zmnF}1OO)>4M^R6NouPTM>u}6bMtigW8c&h4^qk1KUhC$*RI!Ynx{;)gAJM#mrd$+z zKP*fTtnSO}N@GtGaiE`=>XMNWW%Y**??3vEWAlHDaI0+^Be3+yh5W!yGVBIf`_A!& z&0c(`94iG!@KuZhE(65nFS9>>{Fn_25-9akz5pM9#1zbis`)hnH?mBZS}dyUSYFpe z=1?5S#N6Yj?}_>I^q*5hivU1<@ld-`b9Owu8PMju{_`Ke`D~6KWYEk{4lgN#p#>f8 zv%7%kPi4V@0X(S=ZNBFY??CIa|g4U*s!t^Hg}mwiq7M&%(HIUwcFsp(Thxs z>??y-x~`xLC3oHKgPDOSFlC#rPTT7ML^ua=7?saTQM$A4K%^zMr~f5i9)?hNy!m;D zQ8SF#V=RUki!p{s>Q34fc=#s8U4l3zbeyFsX>uN8;Dih&^Mo`VaZ!4 z?5ezoOFQS(=gU?qRNf?zCdfu?2w-Ax^r9l;D1l*uhhm~QdO8Zj+WLMA6~M2%lOJ#D zB1D43eQ6Pv2=E0Sa(+WB$wa4n4z>iu+4)_3{r<%0de}TD;#3&)$_;McqFNaeC!Up# zJ81+J8>TUD|1Izp?$edI4Zvm#%cAu7jHiyc21km~RZMu-y-CfI=8}ERN_1^L)cy0l z@fY_!*FASMHHFB9a9@poehOx+``*HFr|?mar`ulS2=sN(Wu-*tn)O#YXA=!eOPhqk zs};HBRDiVh0aMD3m_z z0nQzpj@qMl3{8owNZ>8(ZJV-~blx(wQPG-e7l{k%9NpqXxQ(%<$WR!Y8qj&y9T~Q_ z{_G7lnjeR#{$arGd&0OU08V#5jl<6lIZ?H?_s?^kAiEB;*=|q&utzr z#>z-(Dzi54iK?E}DeS~JZtPyQ>ffzB>X!e0eH;$0blx!XgUh-WPkaY*Ll1hA6KiG1 zEk<-qeMpKt(+{e3+jA%C)((eHO;5X7(t;P7Bd#@FxXFJFftf@BqfUP-hLMNgTi>lv z#)Tc@zi))mua(-k&RD(R>{qd3uWiL#8=hIXajfvXj^=M=-{<3cX1G-^rjOOi2+i!J6CTeO_V*ipyW`I}abJkbsYpPx z%EdA^njLfP*&D&<2;V-X>Wuc5PLeUxuE10;S&Ju)g$K^D(H{@{Yf$`$6y=CfHO^vh z(>?NxxnlDt9^&}5p8#o-7j6}}mCY*`481$${PlzPPu|k}ahw`1dH+q(jULh~|H$xb zrFGU`^x$#V=gVGU0i(+Gi``CKL8pCo3)IwU_)8i@R(9QzF8iNBO?VPK+`*`q3BG2l z(L9|g&XBrmFZ7;@9^j?=-?$MNFK)8}sQ}Nkw8|dPtg`mH)sW&s$#svoL!Kr7Zxyu* zM57LVmZMe_<*lSbDQ#xg@sLkN@`?kkgS&B;HE3$RoCOmsH ztqFu-`;ol^atm`o+hXsFJYBDH;7|mkj-iH;03vuDu&Zr*!YYO#!h|#d%1#t<4{JZ( z6r9o&DyRzUM_iODmk&rjg)0#j=6FgGr%(^H&4bx9U%R+R$M@=@FA)(*n&4;<-I;gg z-8V|R!(5~_;Z@(Uw{q9ECx+1T5La8VAz7^52SFAgAs4z9d$&eY#F>xuCe0%{_WgIg z=He=6_4Kvpw%!K$K9Nq0Don0bp1SO-wiA!*)Q0 zOW$^c0?#X*PP-JJq?yQX{#xgx)9%+QH~Y55jmdO0(2PRwi3zxPD+P;U;-jFB2ti%p za%0INFiesQ6`T+2*+mK#GMXuxEf}(@FL{p!0TzE8!CXN*=k43@IG5sLPFxIowRjAB z4ewA3CW=hNFyaKM%}i^QY}?GoK!{C5C_!2~+(wbEagE_ats#Gli6N;_DQ0W}#;&~r zic5f)C=Nui_baxsqy$`7J=^(`<0;!=V+T$#7GTs`k$7mWl5eH{1x zWp$~rXVNWB^@GWY`iEb3r~0<-Bk8;RiqL^{S{MJ!_r5U(f^!Asi86d?>3C3?=nQ4v z6tQD&F1!*FQ{ead?U@_BJ2tr97v~?x>|RK>v2Vm0sL;;d5Wzv#&;B5&QH#<-3B>8Q z)97wxwXt5Y)srxg zRQXTm?9o3bIr-9zLC}^wnH_Nj`?lpUBIu<9&!sHBnSYSM)P00r`oy6SA-pBKS)M$t z4pRi>h)|+6Uj@Fn{#V%1S*iLg0}RbwO#{parF%`vDMTXU4#JBVW`=*3?-Lg*A7gZ;9yS+QHV6otxS#{ zhp)%959uG~p8H_u$C4aPj$M}s&bScs?`tKLGPS&kU^>)3Kes*!E$oFvUz}o9M@?(& z?G)BN=LbRjK}Wimyq=BfO}t%N178epo;kS5gNy z3ZT8=!{gC*&0m+U=4pQ&kAv*?iKz-n_kB4Rc8E%_)3gO&j*Bx-nK&-7vqJ;lF7l);T0fa#+Cj&)&W2}}49wI6X6Uyf=87Y@m^$BtI5$CJfrYb2 zt_lnOcz*7bIGK9Y`Kry$CkOw19}f}{2ljg0Sz|>1EB+%xgA%`Vh@A<@@UI`6VeR6K z+T`={eE&PobuZ(HHZzudrDrte!|SiannxmN&4K@ATe4{Y2MN9%?>_zd@$QTmJ>g#G zPOM0$m=C;T_N@gt&@$vF$Wl&5138$c!obxPjCnXHaR#x>_t|0qr%)2m2y}tf1h=^V z928v$%Q!0a**KyGE&g_o&j-J(5h zknHsg-EWLz!f+D0o?h53v){A*{WY;W(ratIiw3?o_&J|Kxt)2z;pfU*-|F`k|9s88 zCwVsPiu@xR9M9c*vDo#V-UY^;C05VtkMi7pETDV$Rwxq-CiAMy6}dhg7aY`+dZK2( zXnR+Pps3;o`YTQWD%L$0VftIIl?DHO_u;2$AYU3h3Vo*ES$^Fx)_|$_&p<2D>vw6Om@tUcZy(3Qgg_gmZ5=MiQnLZWW+0T0-5TErVOO9e5MdlxaN zCx-dSn@PE$1q$r(Fj5WeB*Q}^%jgU{_<{w^ZXlTxutBA;I~#--D#p7a)!qH)v3Nk| zg*T@4O{upan^#E41DDXqW9CG06GS(EPgOyNsqSmLk6UlNqHPK9d%p}WZMOOC5ZO^y zEd!z(Kio?DWN+PlE~G@TwgvOLkZlh^Kr7x_4X?31C;odB_Rc7WuAGpG@FzXud$*-A zVtZ{_;`7JYyW;+5~ieZ5j>+iH#{?C>+cfW`TetC^&+r&^YMqK=lS;I}~Ah z^a`Xw;*YIh4TQu`aJ*hpd+ik7L9cOIoKm|K4sB`r;5c z613o8(dy5CNKX(vOMKebQUL*X@Jv zZi?Ypc1wT0K{q)n$_AUIYY$G3yoe2RzWC-YON7nC11OJ7K{<3&UN&HSfzwTw99U+> zLj6QPJEjM=nB`3Ht1t;F25IP4DFuN$op(|2A7Rudoz;nl2N?7gLS1J2Phic0y-PO& zb5jn~a6ZNm#2C=DR1p#$P*#&#bHCbjbR}kfxPm)fMr3~XxY)$Qz&dgFBO|B8PHW6} zA=Lqoqd#aHFO^+anz(~!{V9l*Dz%&FTguGcc00}8K-l$acd5nS$iFTFlF0V2&3;u! zO?sSB+zI-cWYp@~>L2Qc$p1t$;;M7qkSS9W$sBJ8%6y4G5 z{P)V0zP#T~;@E312Cl;u(dD=}Aak5=H}?{buW#?(5Ap*a_(H3%p%uUvWeTf6l`gO=j(|7MvmnR*PNUBa-$!H!f^ zgn1PHs79Fxdb9xV0g!kI5Ov7dui%^egHyZVvMQDl^vSaJ)FX53q3Wb4DA7Q<^jf;M z$U9=E*>(gzuyjcwxnA;QynN&E)bVqZlikO}M5CFJ6`x~Gz1iRB5fY;}mi$VO(0_j& zBYPn{_bv&2&&MWP~Pg>qBMAYaC`*oyg+mP4L>1=$IehZxnv z1pK(yoo{1l4|{l9q@13fJM^?6GdcI#m8ZA33pDD5h%m?G^05%Zof00dsBA(^IQS_v zBnadl0x+P?ZTW|r{z|D^aH5qEq?4x1XOV7HxqomciODf$!O^`IrHVZ8k@KepJwi&P zEW=2|_fAPth#m~?*q8is^qbV1zR%t+3G%$Uzq3z|sNZe>>i9d}@72t?pXSO>QXRjm}_vfJbOq|RC;J-_UQKS z?oylSv62e3Sl)%p=X$cA?BZB~r^5cL3Kg3|v#(w1EjiV}{)Ows>-C}E9Z$FgIO?3p zPD6hEF#Q+7wabrw=|SRBAX?6w5!;qcaHu+=Gkb#sUsEo_KarE^4~}3dSL(J{fw=j=1-MBT;A{C zUd484BldN~yX&DM-|syXUSM2ZJp4h1EU_{9Tt#AZ<=FbvPaW#03l{#1udjc2A&~QJ z>j2QC>T*fkihdgwFqC^7SK;FHHe?`o*D=$~kF@H6Y`bb_s1CFBDZB0Ga*E56esW4^ z^I2G{>e#{P-}JI48sE&io}K%xi5$6NFTdZDtI97n;(L(SUZ6VjxA~P-|BZ`(_NgEH zeV<3jI(YL#L{8@j`9j`xTxT#!u(bH_f=e3?qc)+Dz`kqGL#i@(q*7I#a&1=sT zvwN>mkv%|es*}Ir&3d>~ZG^*$mG+9jtIpqZkxkZfGZn7U!(VfrZMStdR^;~on{<9^ zp7vw0@i~-0I1;{r{@|(Tb*0*x^pyIvQfF8EVS=8=`K$x~ubf)7>)-BIF&F>Zpc!s} zbJRSTKbV_KORwj#;cN)fhV|Gfn&z@Ou>AU{%$A^9N8v5EHn~Bh< z6~lm|>hGkAodsPA`dThJaI@NWZ%p~zeA&;D$T`KsC9W(I9mJyCIgg-K9QhAdFMGG@ zU3&37-9c7dgB0U5N5gWBnUvysTBrT~b?(TmMmPHC7=MxpetXX|oC`#Vx|_%&y-uEpDS!0s-lC)bAAXW2$Td4F6=w_-Re zx3Mm&+1U~Qj@}((SJqEp8bREczQE%xx~?=C7e*np3$rxt%6Vm8A2bPi67m>rD-!X{ z3w=Q}A*g>Z`!2H^4O2E*yS+&k2k*iEejk39aKbLV&BwYUnf|W# zT>aOkTZ zi%Y9tI&T>3ardBVA4QZHMy?o^f_LfB)1mQ63%v+gEFJEEZ89C~^wn5I5KbME{9f|D zq!81|qknrlXt-vGc2*7MTHZ)RE|_|ZP2i8S!RKl!`kK}2Jza{7s|JA5yq6i~2n#3Z zM#~`S2k1-@)(&@IT$YtQ3wV%ZV}zo8ZN75K_@2Gzs0zXNNAhd7iw} zO`wqn5dRDG?|HgWFBteq)8y7Zzu70rme0cX!DHAu_}{*z;?UD}yaMozUi@ef5snlX zY2}7K*khJkkXynT>F+kl#gJY1$nf=0XmsbLB&nB{*1<}-`-}9B+8kx4@U~K20+WVj^f;a)#-C`g zEPwnl$5eLz@yedz9%aRXPT+~ zb^Cw1yZ5COy{07*7AYslx7-AI`x;Dgr}I*GTs!+i>wWLVEc?iMR^Uw6Oa7S~eJmrt zha&Wo_<9HUjE`^~`89r|zbb7p|L%Lwj&J*V`ubu_`1;GLmP;R9=uD%MRs_a){(IDX z;UQOB#8^$rAb&Nj%Jl={$0LuAw37&*!T>YKHrKrLDEHV-<5y_=cylh9j724`cOoE) zlw21q_8vNVu%V>v--gPT1G8HgK&D&X0WX)@wA!sn>>V$wt=l@bHp_L9^<&GNYp!Y? zQa;~8o9is{gDB(+Ql%WhWju1%d%{mIk_$+dKOU4yY{gHFB_ANZ|2J52eJpi-mt4kp zV{gBUo0zm=95>42S?AJm;Wbzp(&nudjcz?b=Pb}uiCeNfl@696)cVNp!}O6QZ(RPx zv5VoHJr6y$1un)-lxzitH)9&&R#LK|Hx?>fSm}j}C;9h0LX}5SNR-yEgn)wnlEA3> zMo7T`ikTooEag6fw=XEYm=F1z?D*}}33eym;;+i@}4qDOh zP%q!|M*V9g4ayOZet zc(|g08HKf+5bJHgBnx6C329TyZywGJv$LBTz2x9Wj?fnljK~l2Ek@aH^7P1dEH0L3 zr*ucC#I{|41AO7>c6sohyv2UuTfE+xtVfRmQGctpp?put=92u_4x6CcTHuv2EdJYu zvPonS)jhesQSUXb4HX4`4r^S;u}*#a#A3yLc1>9UXk+fuxrlo^r_D$YAaQoD^qq=)w2rN__ZmM44WU0O<6S+M1fHYUg z0YuxJedVBB!RSUGnNT-100h z_VA_Wr44ex`e{m)WVMgEB(ScHk3`H}2GB6Y{^}iQe7&68{W`~M+By_7UZ7zy;I@87G7C`5K7jTXT%gr1A!wZNkxsB;6JPUz63znQIxCy08uwjF)^8!kh9yI0xR1rgi&qM`AOO4TkxzOvlWe7cJ z3xl&{DFodij*cNgcyL<}LT!~m6?VC+lC$*~v^N0kG0=enQV_s8P&9B;!*+LGSHx&- z&%OB%9y!ro{xK%*-}QQ^n~!#M5--X9mH}un9*BGtroHDYrbP0jE)w(-?&sh1O{QwB zQ`nD{79liFI>kna7W7d7Y*%;)T)VUv=FjV7LF;K$|87dzD@)`VYkcaqjwhnO{bGsm z7Ut_%f&+gADuMg7UQe`=$v2>qz}hSEWa2LJc4&c5BCH=A3;SMi2^2i{O80s&f1&(N zqA-x$Y`cz&0$+AR{$bjA9FU;F?1W)B*CjupL$p*q7PV#r8gf!FJxL6;L|Cv=rL@U# z1M8Cd=U!Va_CUc)vA*#wkQ1eX&Kuxwc<4JdyA6GUN0>=7nLZcHHU7|P8K z{sF^{ftv8WoR&x1g=g(rzDA5(;*#%gT>0;nS+SX{V^0>8BiSBeyP8NZH0!Y^%=bRl zl49)Bz>H?>ZPPOYqoX~~99%L7lf^q@e(3#)5F{D<%}sTn&)CTn^S}C+M(U539TAB- za-#0CpjIOW1{RG~-Z(zxeYtNBzlGq8QamE|#aac$fJzk!U>>;vIQ8qZvv#>W8Tn((MHK9@z(;pa+r;ZIo(zBFI`leNPHy^A<~0h+FX-*BpN1?PR99eqH zx@(G6@$~3H&sJR{?y7x1;;K(=&R(fF^yg2P0z$L@I@)~VEW-LR+VL{OuN6>~+V%yGt1e82vltoTuW)aXMVujBappr~Wh|Dak;NnoCs0)CS?yEw5!17wG-OIMSh?{U=KV@!66NvOo8I|O(cM#y__ChQAEd>}fm{DG(Lam~elIWHDLj{RI-;b@KwP)J z;>5+w68nuY%JDIxfQE|?1w)h*ynuXJMl_77S%xa$8Dp}E^DXz*JNmDNjEwwwzkrPU zgK%eY8hbFg)?K7B>C2YdlPk!D7?bfYheaqMwV0uuz{LhB=XvBKIIt+7V@H&t=_Xw8Swd6}dKMT2i|r1sm3 zJB(lOxv|j2k}gzL%gf<{ zO2{ZGnJzN`%6FZQuhzA9UON1s^lU0(ics}X0Xl}{3COw54!~^ha6_>*I_?E}OjlCzDLGfTiU<`CbUBh&9ks%$f}&2v^{crKyp+*qcu3MfnInf zz5hM7D%~g=7sB%>l&tkchPmk{J;J&#ckEF}SGsa?yAZ!l>e#QVIoYY8CoNc%a>Lq? zUNY^UabipR`=Qfi?*|fIyw!M~(5UH%1~u`m>j3xfK}mILiU;9o^sXAip8Ly$lai~Z zP+h0piTz&-G-Clqk@Zrhcaai{p^qP7az3L-^Y@ftO!qMDyuRp7*%?_6%vvDf3ifDA zmvmMDY)WEgO=v8#q-PKn6^xokZ>dI!kUcN79u~r}H$*rwsOaxO6SRA#NfD8xrQotF z?C?0yWO0iTLZQqgIXjWsp@8aE)8-ocAm9$McI@#pD7EoZRCH{hEA?@*G4e3Rb_!QH zT8_K?EoHx76zDa~eyLf|OT`s&7cb6k7T4n8-B9N`A1H86q@r18tLXcW+2?!udKcbk zeIMCOZMkPYU78w*P~GiJlXxhidWxvT6}#O#b%99K65={nkW<+g{-k%lwy{G25VWY_ z&XRdKRk(H#>`A3B0!qff*7fjvyL3qUId@&bnv2FP+9ZgNGX7d^jHCP;Zc9`vi^6WP z1J2K2sedz|OiqxWJ7mx?EZ>6BmPpW5I2wJvi#$p%)6>Uv?fUQRAR_uaN7ERq&*~71 z=H*lW6{BLFU|1G5*9vnpmz2k(&Kgq2aJ&A!O_K18y4{1-jk_(i)c?U~ceVM-G%Y*a z`-5mhQyy-XB4GhusxaGu00)qzB&&4iD8EXxZ_Lfg#FCxz>hy?c?_mQ)<_ml^?zPzi zx?IYyxJXDAce2)1_Avt)t9ZcDoCRIiTLvE&K9+f~jVthcz~A1ZeToZIlE47auQ^B# zp{86SU6jpxTc2?bda%FzSM!U%x~#&JQ=ccO%o_Rg0B|JQ#SdS z%>6i_wT>S#m>)zitO~jBcT?RJ7-{$F1LRuL-*D@IE19*gC$iBwp>rhmANPXP?jBiS zeMt|M+QOzG3v>TH=ZgN#@G_eK7DKrwZ#>LqfvAki=<2=})_US59r+d^XL=1R>y~_Y z_`GLFdfr)!O$pV@bYgOz$cPD^yk>5}@2Q($9LYZKuJ-RYV9bVWe$s}@E~D;s4wm=r zO?7ki-UEt6V>4rJv`M(}@?m)@&t-TV>F!O;6@2?Vq&;Q0I~ngz@djx!T;=!2cv#G7 zw_FT(fbo#k_uk(SfYKf-TO&9f#RnLGb-r4_$NDVZNe_5&{IJPa9AZ#SeBlJ_#Qzh5 z`;kLmo9l6(2UCzF7o;%!*C+xLg{UvExbHg=^vH=s;NG#|YeJ=UojebRo&USEdEDy= zyLqL(Qd`fx$DzE(x{gZ=hj`Unx2~}H3)SPUDPUl*oqP4xh){R9M|{Ha2`&w8t7x4| z_g(3`f$Is2#=uQyahNU4pq^8Bt2KvhP{FW+*;p9?ir)2(@Zt;^=2N?JC%H$I(*+SnmN%Hb}$o6_T)$Rz_3ax9(agtBiDgkyEMEd6&{@AxKH2-F_bzY4bMO#9N9%C{Y8~v9bb+b zpEVn%Y*6SuLd^Jtw~r4n-$&G77X2jz#U4# zx_fYxS}u`UAv6RaA!bk~4O{{17#I&$2F`o%G`1dBB3$WC6h%IZ1d)Q=~f4;d(&D$;jMw&b>)cS$zI4_+C!-TuV5c6jIdPhjrS` z$~`L-q*I_d_-(06;}APeDW>9P^MVD=a{0I@T7!L`pnAP0e_OvE^+gh7(_VtMKCu3U0a6k9;N>cwcnq zQXFk2WfRaVfCzJqHMO$BiFRrk+ygQ3Yior-(B(irWRWR5_i{78G(h!Ls1jvddN-C? zW{K9UHKLA9Sacd;L?A2#WF&@Rp}C+0-vk`X!Ll}tOc%w1mjA+f8It7S+IFbJ=nS!dWq&MEAL$bK>cuya=&X6|z#?%?%s$~7#)kBnj}KyRBC0@V zaX{u%>4&A4e;h7JXA@qwZ_YZ3zOtnvQ*-&hvBiQ{p#0YC5=YI=R;NFXdf3RAPHnfN zn+2u)b}!szR~kH4{J)Eh$2H`AoEWk9_~z=h4dx6A)L(NaC zIFeJr=N%NMoaXnmM8BI`(KP$oyJGAiKN-btZdYf!Lmye!<3Hrj-JZ;DBDl=gULC-2 zB6I^q!Bc9zcf-3cR}xkttUo23uCzZGKHb0z!9K8Lb(oC2FvIjPJo4fMWnoKK#B`JU zxuq79G$#Afg6B#1&j)=P*(RDn5F8Z$`buBB2!;marjH)=OesY0bpsJ9+wv+a! z!ef7a(l+NV`|=`SL5+SSYwvn&TPyo)GX24@Fh+6iw9*j*6I;@Mh^zyp1on;U9O-u}BjfDUiQI={Wy# zDUZ2)TpHT`mh{zPo>)?`>ta3QCd~-E8RscG-6r~{Ghm^Pu=;L0e-fLWe$RIFPVhqm zV*GD_$Zf}2z6!L6HUpGuBfRoGl`1FBN-}FwRLdV#%#_;W&4Lxk-BDfGinI&I=y%Sy zG`zgWGT3ELcTPHfpNsxf#Yci^HAPJ10om(NzcSWX;V0FrAJD}oz%+SUV{rl7Fwt^G z2ffpOIGup%8^>VE{vOewY6t@w?O^$_lSyY&_nJGyhJmSpKA?QmgM<$OCZ$0cmOV-W zln)qC#F?hZ%OW@*FhlkePnslgf-gegscGVWEV(pz{W9V=NKzBdU^&q^dPtgcCY7K= z0uZqO;|pz+EP-VX#vEUNbRdc9TgA07*`_Q15B_ElNqcar|3;yH_>JF}lE@^HMEg$; zkF0nxLQG*m;-@?joPISN0VnT_xr<65x&H8rrau>)4?io&yfxt`nV-u@=Iszto46q< zMt_AyXLMu6m`={w?GDv|=|5o23H%=i92@L?m^fKCEv~~k)Z)z&>HV4!hovO#w2gz068Nnek2so0IR$X@c z@ZH_j9a&EAOEMp=I4Pu)nx5fwc05tFhvztW&Qv9tQIFoyGkdh5A!Ax{C> z59vGAm_dZF<=z5r9qfz2JBeS4<*9dHe}=LJTEbp{wjZ+e3Bs|bb#PPSkyYNADj20p zno^jfGpO1W={ryuM$6GV=FilQEJWbOv z#wJq^wzy*QZFJs4=vtfW}~W49T>VR(zPVjd3q>>7Gws}PUQKVbj%AE zY3~)qXNDZ;^I77ef40}fu-_dtIry<#x*3gb7;ku18`0NEZTFIP6Pf?h3C0ZPuOH@A+Zob#4-T| zluj8OWfv%j!_&C-8%gd5!HH;~{PG=c1UVwHG`U6?KPt8^{%)S8f3xu~!TccKuY}RY zIQ?8)(4y{LSW8CWx;wa@r}>^}XN22KQu6PYm;kxXXE|bDz)1Q37%-aYiG+d(d z#XL1xfoGEQiUpiLZ%kjks#YEpwCBxcm)&>2|8q!abGa<@n@`*7kPmPSKy9%TO3PY< zB@UigaMIGoD*^!WkUP4{{yjv8b?5TpED6MU1340#xx%*C2*l{~<-=t8vt+miD@q6M z0_xv_0JU5m)ab)MsmhBM(g}b>IxMZn319;WI#LMjm~KwcBLiRu+5m$#u~eC33!oQV z0Zbidpa}i|J#p{@^34Ay5{ceM)hAQ?Ue3ha3;SZmq+4%#?mOeZkDA#0jqo!(>YyRp?xJpz)d)_G?iX=L7nJhgnwLd<6^NR1IhUH zjt@SvF+!{-o|0Bn#MByF0|)koiHe{+OFb~o$7nAOl_Ghc6$fo zYcn|euWb(vg(-y~4Wb<>t~|i~cn=@gaDv~692B4t0nHRP$WjUe;OO_5AeiEY8eBRU zTM(xp&}NGkh9eb_%hm490Y4?6g$SUE5E?IpX*Pi}%yx_%%#=o1grCr6dG3%Kh0aQx zj}rdVBrNx84~x6!p2Zg-!IE2h$iIH5S77VaY-IJ=Y`oYm`$>@o1&t`Ss&;H&%^i4u zaT&G=Da9&Vp7?yzD*f&IdiuiCI44+TK6`2AT-oP6g!>4nt7(qkYzeE}V!LXiLm9~9 zsgCa{M61zfhI@dm8rwjpDojq{b?1sRP}xDjX4u~k6eDssR3WQzA|r)d?R&JiMYdrF zo%?Nt4y>k

!6VbrPpcSwr;JZiM3Cfncuf@R$<<@%)NRx~tCE{{R2zj~TGczu~t< zP)K3kMz+O)3KDn!>qQnH$itvZLY@NigWwG~w=rP1Kqieb<7%c8t{!8M(y$@-u2P$L zaUKLCM#*3(ZCl}g>}AiyM`n|R9p!t{Nr3-M15aCsNM3JN%sRf-#<8>L@oaMCyJL)( z5i{^>oe=@24n$dLDq_=_?5Ou!NZQ;2sQT~g@oyiwem-0pj31ltQtUEm3KNS#0hE5K0V$Xi{j za&sl7`4{1vPeZj{QaGuy@gs)Ujm)Z#Ra>RJhOB0ltHzh_F-)2cbm%*n9d~GM?HWY8 zYaT`Dijo!eOL$TnWKtWLj4W|OOT=egppo~Q(SxZ}5poKsHYi`pwazCx(iOG%#@q!; z?HS40iLR71B99f0n@Pa}G}h6@YScG_vbv&u^^3O$K|tU}hse;7y{_daPXAG%U?yBM zl-u>^!u@t71hy@EQPD%SDzs{G));qd`wJiTI}KCh5rSEv=NTr4!Y&kFaSXT9c11Z@ ztQ16@1mUM1{s1``g#JG+!#erX(VPLe=ei2FU!3sF&&m%{6YUGNeJ6A`TjTMxDCxN{ z;qqEJ!g2tIv^eex=Hwo#xGg$Kz7%!dM=@y8-Etyyq=N}clypNDw(K~UbhtWMGd9t96w%T$Z7KBQ3rc`IQ8h@v>tL1jRyMryo{;*Cv@AzjfL zB_IRB5Yr}hL^bg^gar$-cI53c^b#n{@Nuc-I4hz9?(gtz$H=0Z1Q8)J#ve=R5t=PS zEMBWp01dEf>|(BAa1szgk4hW_G$Ljd9@g$8ZRnNu9zD-WbM~&Mc$OITA%JYiqO>pU zqXPtTUjCc6W+f0*(q7uIvOzL`^yVNNMdEa|ebRRVGqrcMlo$yDj$T`tHl zc~^DZa&hG3F51+fOBJ4ZyBO}?{Uz&d{i#Mi?i_7Gv2e&^SEGZJ&$)|h#jj|F|bX+G`AW3za zu%P07qM($W*Ld88U6~Pn;rZdRXrqz_)SnBHfI%S)J2wH4C?f}(F8UUg{9cj`e6(za z_aR!(Nqc&IKGxB3UaukI_S|JmHl`fwEYAIC83JATcD^5EM;XGhngS_VCEQu~AMVE;+dWJ3FZ~F- zLgS%nmZP^$paB;L0?{SClaH0X3h$9Xi%@fIO)T|9#J1yr!xeJ}ojnEtsYJ^sTmS3A zn^7J+kc3G9HiK93qk?0pT#8H$oI6gl6S_lk+3ymCfil8;ky*1zT-D>>%m8!`q8#>q zev45t(|~D}$+ohf+a%1E%!z|LP>!7ver=9RgB=}gCNPmAe9$W`A9e{$LT3mrXg8}6 z@Isr&{|C)p0G#ry9#4et1_wbz`9>d(0R%Wf?E>H|QwU;(@uEEuxVsn(%MV_2(XZAC z{?oy9jRo<@&35{ig<<|1npYAJ-%5SnbMGKPAMfv>RP5NDC0P`ZRS~Xl<=Ii=&JG-E zEZGmIZku6|W3ubOqq}wOPsV?W-Pf(}&W8@NoqR<{)3vcP;0Cs2Z--W8NI8Ao zp-{7UIyj^UhFuTmMp0K|udVC<{+uoIE)X^}OkX~3qey0F*5&RPqbjTIiF$l2rz9+%6eTtE9JNnBqz;qBlV3f*ovThn?=4S82yog}r#&3BsftsmKJCJ3 zT{`Z)b3qYuk~i|RLD@8Y*UrJ5_$IvQ_G1e0ew0_5st`sid}(=TH1EiXuQ3_o{eMXj zYC!d+SIoWA?E_p3e!Z^N+jxA$#O{24J<%B6~(A0QsgCk$2A=ef~E0qKt67WG$4f}&_KK&i0&mCLWJe-q<+v(PfuQu;Z~?YFBMix3YZ>@aO@Z zwQ`dLn_oFrOW3jdbkWoGl&r|Ua6P&Zd6jk3TjJH`Id#WI zhUPa=`YZgeh})e>>5~cN=aQ)jj=#bKLXk0crz1JtyvCa!A%FW-fT)#Lq?zXh5A*au ze}RUc=p|=WIh<($?+IMu=m}51FI$@{9f=Jyd>*gdo}@nbLbtx--0l8X>6z-YyEf-G zZ}vFca zWnFA%34yaHCP-6Lk}WP`cGttXbyB#P!!;0dP>IW+;9W(LgwNF(J*dX z9Bx_~!1$?L!seT5t6_W3mCWO;avV%6L8IleQotoT3dD*4E9OJgJXriwm0I>9vn&jw z2Z725rn>P+%N5nhK#pd>n%fgdB}f=n2npDNrck{8LtJ1D-2J8b{xX37)e5+EuxWOa zEby7S>vaW{qz+w+R;9w<3enwwS@D}U?Csdx2uKjt5y+I{I|Wc#baU4veR;bB6W|O>Syp4UI#>|BD^_-@ z<?!f^EHfU&$?HP`&AOLL5>EP`Z!}>)EWCg7T(1}6%z?z@CJfI5n zfyID5@F?7|#yeG8cR!ZiPJmH@QF5cJ7|9OGeFD*eTb-3jL59m0%{aN@n)> zw=!V7Jdb;(i6)|8wTms@X;HCGf*b`I1P4`WFZGg+OZh8i^dMw7qS??q#~G*NbNxdczO9g(Hp6IpfjV|L8Kw)ZiFglq{Lnn zt6gw%ons~;K^_ac4_AYF@GnYg?yIQ5O3kI>FMbP73q`$o(q;WsFk2_{{ka|;fyG-? zAH93_H*7oG#{I3~x9WumdT6v^&wH=GcfWmc|6`%2^X1R*j4B{`zW?Rv?=9iLxho1k zc<}OQ@xU3`-<+h~w+FZieXgs>JFA$7^ZAe|pPog60W&_;L)$^0NTTxb!s0z&s(Hpw zzPuOb_NGpkMjpbTP#}&|q_X3m)=Y3-kT4G}-|!cqZnbf2*#G2*tAe zldP)UQzb0&%TvIt{%PwV2yv^}4|tXpWe>mPSqXw&~td8&1*s96bU3u464a9F;0 z==&_%v#h+eT-0UUTQN#5xS8+NU>+)m!3H&M(M!B{-@F~W#p6C1rSnd^9+TxkU<^?H z&$GW$qY%nZv>R8MPvBGky?1j!b62EOb zKX#LLb49gCGDDqVuYSs`Zoj?nF7Rho|9;=3M;|HB4l#b+PbTgzn=0cg2RF8#ILLZV z5~{XEbY7nfoy)(uan(1@lfUlgfkyShMXtG7M#h2n&vh`C>J`Lz_Tn_C?#H@blF;TJ zks$aDFxE9AZ#}+2yIE>Bdg$;xn@09m0gD{TPj;}Ll%<+TH!Lm-SYPna-PAfky*m{r zMz=Gig{#L5{HaYJGAno;S2sYF-O%~=m5K!1J_pL zfBKGF6&i(@>45A=mzP^pFVcfV+>BfUip}mvY8GiO*vZibF`@eNlNy{J|KN!AKQb*? zIxnl1l4AqeZHugzOdYjrw)%fMXkNFMiXxDQ?vO;Ex7Jy96};D2PI&st=I^I}xr3L} z2)odaOnTL@Z$}jJ-+o(KY_zJQ+s@l(c(i}F+UdpgqqF0w?i?8Qq{u&gmA*yG`r)r) zt_R-vC--CIC$$DRG+Cp1JDO8HH2h_bBSP|C*+S|5YC}lE0=GiRSg^u=Wl;m+9kHv( z(lC^?MscFCOuwcP{vh6Hu!!atSfd`hHQB}Z6-X$*HD!7{Q!R0#pKrYc?ZPSkSVxxx z{mI%8c6Wk0hXlOFSg0oS-h+&nf5ZPU-^shrIhK-~Y$S4B`0i4D?e?NI-Z}i=YihbZ z({JBSj(hXCRgN#EN72ltwA|Pa(aO}(W_qJfiqT5zDijq(e~N(t7kcp_zctpxXjr?N zvr+Kj@;K^hxV%NbCU+FUu5{``lmu#&OPCl^+{@hH_B?P3_ObI0o9^Oc?eMq#QEvpy zoCn@#^XJ-5SeJqGAlJ^kGnrW+AWaJCEX zq#eh{hYfZQ;5ZaJAJl08v;Gi!>sm{%D@7~qsRL{F#34pUCnvus+Zm#5QF3ft$}ZSw zOIS>zl+IWa2%=g4#TK2cdZ?|*>v=^khx5^}KQl5~nST4M^o06IT{A55c>}9rPwBRz@!khE`6SRNA~O%dy4(?Rstm3G}FF)h5qn%0H-Br@I+K?c=CT>lbFz^OzxdQC`}%I^pg&ZPGch zHn+~g;sj;|26O^IAzm|UfVyp!-Vl%T zS!*w#HTLsEIoW%@5sPjG*avLw@xpzdP@K|4~M;ZGx2a1YoIS8Eb zP_$5dAgRm{on&}p)^+7$O-zUBHYr9Zjeh)LPuNJ8uo(mTt{OrPEKRi)DGn~Y8V^5t zyp31Kl2o9$NGba8SU1PBSN210~Nq=^L zaXh}cA73w3q3z?V*lo@-kyx1+o+J8|y6x!><#v())c7$lRX43fv^I|@qKLn+Du;)G9L*KL^`i~!KI-uQT+mkrHQs( z*Z%&g!a7jxF?fUrP-29gNw*&~-cPdMXBHHaf?lyvTFZZLJ+w9Q2x%7TvMF(+x0hhk zQ7xGq>+Rx_1n-T?c)D&HAw_GThw(kDMpwAUa^i!Ama zvD{MK$=0j#FfTeacMX{OW0rBAQr2S*%Ni?ATaS%qRaY-26n1P%Tl*=l1_d%ZPxA*f z$&HTcg(it{^Kgoi1lO^G>&%z6PAbtCoElSEpP~Uxi`VJOxH1DwOQ^P3o|*1!C5+9J zP$o_u8}0hbYyRAKO&-tcW82J51;-nyEQhU`m1TBfZw@k8G9l^CIX6YKcTOF87*`nJ zN`fA`y_X4*U9-wIRXQW)i`(_*UR9Y&x#B}%WpW$3jdCIB3xHqx zvWu%V3MzOZ{ise{5?4s) zawYL)U0b7>_j8fQv(HZO8KsVHAv}apAkN{s{f3d)EdEcZ0Tpq=1$NfmfM|mb2&ql4ot3l zNY#~C%Ym(}Ia7cYpAjA0_b_5?s>SBb9^3j_AhD8$E}3{d&V>aZb1((Bg!{ zZ6mncui$kwsD=XH5I2V)8)ib+Beh~)W&<4985@E+{OAxkRYnXh9wlGP*ifa0C9xTa z+eCFoXGy!j$dR#~TFvJeoA(5e*tg+Js?-yo*AFiqOUy5vt{Vj{xl9N7O@;}8O}Eh~ zHPK7UA;#2ig2fb|ygy*`>N#;;<@g07pf= zueK8>S)NW*Cj)fyX-5aD!;b8EnjO#DIMBrBv^Mv(%f4wpvsAy+o=o80*2yLKiGyKz zz)5+n2_#Wf_2Hf1VZQbER76!0BLBshgMg}1+AlQI{AA?i2g+ZS+(?7ng8&|dJ?Hig zwO=lr|C_#-{;!=$5G;YmNJSBK(g-mqkn@^@Ff3SsCa2TNO#oMYS&;4gMdPs$*~G`? zQesB8YP6O{1oE6XD=*^>X=?)d^;$Hd-$GT_&}oUf!DmriHn8YulG%cN&oDT1>VVXb zA24)5h-0GYQ9-1EAw~_|eaQ$qC>asOVD87PQGB2RGguj7hM&9!$h}fyikePDVx(9$ z9Q%7v5Ja<)X<)2ylLn?pnd?;8A=;}j?=|0|`OD9k=fAVLF5P%~oen43d-sCl$MTMD zqZhBx&u0sNQVJbPJ~c43-QV|r!L6q6>-mC~Yv=x%XI!MQ=YVb7c*;Wh2`(KjlD;AKkYqXjG>El z+xE_(&a z2z0Ndon$}D%QA@T@(Nx{3*|A#k-2vY-1NIHkQxM-%Br(P@^W*db38>V%53wcYzT*R zi+d*#-`>le)3*swb_)-SSr1M#c%oUG_4sN{@a{2NgqUa*JWCV{8<7Ws+C%JYNs44Y z*c>OFLs92!A;gIY0~2|nZTnMIf(4AMt?_PsS$kt(5IzXcM!Q705OAx_jz$*nj6@PP zXXxM?zv3)1xptGO@wrZSoywWH*2_)*UdI2O$7;NYWTvyCk&33Jha-JDyhi>~X~@y< zB!IZhpWp1X+UL{(#WZ@INY}bHQnFZk6DA9#Y8|JqC|tCbd5XYQ!oQ!rM)UV^pD|0y zgmSm*SW1=Mz|@q~szAzV@y2ZWH);~pv$~@)AhdWZXFoe5=cg1>ZF$9Ozx&<8wCFKo zM%)nQE{E{9aGoCFXkoZAlvYRJ&)NJ!zdl7MDM-X<zfW#7W{7oi-hS0wt`XXK%zWL2&(Q!YiGy*$I zJ%x+H;_5K5Y+kI@xz~kyoXXG7N>o8b-~nmF_?tAJ!5Zc?z;LC+u8@A;y&aRjlk2M9 zw2NdpQTQRBcfx*BI+ky7lf)r?er?#6v#PA{UA)k->I3gScbFbY?<1n3W-n|9vjrp;M$wLpqg~6)jq}+ z>T|#d{z7pe7r!W?>VW+kSajTM$GJP6(17j&ueRy(y7uB+11s@ueAq5H#b} zvywZNI(}!pTgCn8g;P3jtZf$&MN$vVRD)-tUmFe@q;8U?``T>Hh5-?5HDv|HO~$xrTw_0TFpZ(v{d*u`d5gEinq2y#Uzi4+bKxT^HHi1?QgHI zuSZKxCO8?6^lciE1}hTlq`3I5OV(~#dynm|5Ep-p*m11)Bge%Jj4?ZkVn7EM{W+SR z+d#VoPKQFTeT2uEaVrAKriRS!nukGLYLydX7+UpRGN-mGmMtt*o8C-{&#kcJ%L2`k z1YB1?y4}>UQSHaSUiHA2w{GQej3keygWtrYjZgd>cb7?@z4j+uch}jJQig?Ei@B&y z%`3`1&+R4d?GT&h_cF?hajbPH(ve9G5u-OW0fYJY-$d*}a&`W7Rf$}B%DBks`hM0@ zs?K;m_u@HER^m#pufz))P3gf1N_pmV4XjzI8XV1L!#-bO zx-#opW-|sB!5UFic+3bRcT}RVRTf0qGs&k@v8=@D=H(`H!ZP=@jQ*KYJ3fjC0tFq# z#%N#PFIVPLZtD#D{q00BMfKKZ${Np9Q<=kcNxw4gX(2B!m6Sr&Ti-Ubw@*}^3^Izk)9lNoWz)u1{yZk8NSNF1Hs@*AqUpO!PjL4p{9)QUph_kZpW>9zvI7 z4#LET;A>scGP!2dw5(YN1qDj_X&!vyv>a5(Smo+QLbK=8dC{Z}1WMRo${Z8kK-5tw zW#g1|C2M1t%OFi$ou`E%^ZZG^u~kq!-524I7sbYZdX0I0b)xalt|ctdV_Wm-804T< znC)U_I@#*ICib|EH&ffn!o%5;G^Fx}_mfmrD1Z|SZIql2N@|R=SrpxIM^77X7R?&4 zHKvX?J2dG=WEbMgHM`O-~hbhr<&$0#(}T-n!EY3Y4Oj;O4wfPutxbMiiEQdg3rnQxjS`Y4RUGj8VKDE8W`%U4BzF zIFeEnp8Yc-rafkQ`p(x`QzUa}t2DD$Q{ip@<~io>4QW$W7uPn&v(M&x^F_qr9zYNF z38?Oye#u|T%#umhsXkTPC&|1k8eppEQPYR^hAIVk!#u7Ac(y?h7t#knwb;Fi)xrHccV_P(@c0bQp$koUcd0#)vlFq0HdLG)Nfn$fxxbXm$k~i?g02F684L*kN>j%G>NG&fy@=E=? zl$NhYib0!a{^n;z5pjo!PZ}a98vApw!J;+e?&L z7x~=PAV))$dMkqSL1*5=ZUDYQ2GXK<`uc@KeAf%11RD0s)sC|&!ROz(w@<%P!0r3I!tsQx$DrnKRzfWs5mvTIs z4NX@0|>pq}vsbm=k7ZJg&`g_Xqsok2D|! zHolk`!#R%nS|SQwm;0W`k7%nZR*2zfj2$AZF zBD!c*P&vsi7KN!LgQ$S2fgi=B0j24c)eMsGHl5A)M3;ifYv-E)l# zVu-7CKhIFMlwh!gA0`GLwZE~ZQK(5sa7Wu^T#E@G#1<~6O`lht0((zqtfz{;Kr2Fi z?SjsssvrO!;Pjj-dQf!q_KTV zXj#FaNiGG<&{@`(=*J_}kC|N86_jrj3UE7(TnlF-cLJPfr$NsRdhXV9JQ)CwzO~K4 zIBJC}fcHn?Drlk+ICD6}|62dw&3!Q5pn>X~6B{2PeyAw^caF)?XB`ho+U#<6+AuEn zj6~}FZBtHd2LlMntkscaD>#W-FzP>ftf^C@g=vnxP~B2AW!>C$zB(nqCP<7SoP@srWKuW9qOvuDQsT;c z3U}#BL1^CSq(OL83xX!VEMYBF=b(E|@?1bH!GO{XGp8UdcAt6D1mL0qaat0PSzaYQ z{u{Rl<+UQUi_ZlLnHD>2hJ!`Ws#1c0kq>wetk+~t_*u&sAt%MagPv`)p1IUtI5?&s zO~RB2lUDUg+${ANfp{Xb_^NdC;0KRfnV?qXh9c!j-_zo=ExmfC2ev6+?-EzU93&3+ z)IWF%BNnPR+fgR>_Eq_)ml-@o_cGFX%$Ie6-k*d;v#em^lniita$15pjP$q zMkLvwgF-Vr5)1cvTFM&YF5fE>@fLGXk8r?}VmJVq0VeHJcb{2uXvA24oPDSj2Dt}9 zES3SqT@feUqq6*h>>ke3W}4J^npmo59`cd^i4CGcYQG#geK>E+#B(DXL~U)!f|@Z?>B?Dsx*WEy=os=@ipIUo?pp^fnDe+4#Gbw z8Wgp;($jLF@&kDrI>Q^o32(!p*6RPACSpQ&sy|=Hcl6x#w2n>`WCSm+6qODPbmGm|IPDvLjM zO0G_9RB->VX7YO7VVv((S~K`X!>LI7I}CXG>C}G7cHNpj=_?s;wsmZ2=>BH^K+e6` z`s?2+f}tZp`tP%0g%D-PP2P;LPkg!=B34NFhv?&Q6_R&{QH_swPM?Ow z^DoN|$yZH3*u-T?s24ALt13W59nGG|K7HSf>lZY&xFyeDHa^xjA&NQ`H+l`8H*9XY z^4$7%C^`>+?3(M=`{2ZxA8JZ@NB1wv>;C6Ynm|W}2i6x43ssOSn9lj4=(oGjqrp?e z*Khrb_+W3~Nqqv8w<7fs8$RCIkb-n=M>PGe#eWae|Ld80Mwdlolq7?7Bf*}z zMYi;gqwFlmlm@T5^F{yYKK*#aO(57AH84BVul&kB43n5_gF!~1t|iLHcM#q|mq5s zDd$o#%oGM%*`MXuoXKtMzMO)u%(`hrq~tXSVt;UJ0Fuco>89SA28H&kQum^Ao2*Xj zlAj($etOVb+fZ1d;o7DA$Lpxx)T*wbUaYEF33K6;gEBpo!Hycx{-J9 zA6d)fuqxrjon@bJ-ZOBv2TUQH^0ZN*f%`&D%fIMONnhumFry4RpAS$E8Qf<-Hx38LVmmM>}w$a z(d?Y1E-zfT>NxhRdyeC>mNM(=xPxHH`w*#yhBoYB&|810-RcFR4Zg>s#EeIzv^3`Q zkTowmXNu|*;9jeeUABk`|-EOAK z>|#dG=UW>yRwl?6bgGr*xG0NO85FD`l-s; zqRel6$Nj?8iYqW&9ZOEfWQURdS4pULwYdNx3?bB6LhH zrQ}TA(U8x{Sv~|)rZHA&l3TrCt)#*E{Jz&mKk0D@wgEfk=jT+LJ#D**A@H z*fLcgi5;dZ(|#3||2saxZ*R`?E2cFR%4D6sr+o!|p`oEPSuU~hJ4J^3)_sH4S0KO42%G6*(kqkWVg$X+O;9~3FrkGwqCotDtTnZ_Uxe&RBC zuha&O$9I)1;z=;Ft{{_bEsi;5#>ugmjrt%Z$I&L%A!(A8Q&5ZL7!F4w$kp{_(!?%h zDPB(TGB!rCbf&!P9=@-nbh)gxg8$s!O(n?rx%~O-QTu#xAD+A|Vfgb#%e^q8dDau$ zXS59rz3o#jU;qw}c7=I?@<4EDSKZ7;9r|iB3sqb!1+!Rbv^IoT7v9xt_ar2sm;Pkl1)$OUT=|(XK1jJEpb-#?&l{ZYt zYSY4X&TvN0J72_o1FKJ_^~@WcKHmM=o@kkXlJ7Qgt44UxuEFO)-mJ zKydDs%MA7>aR;qFw@w)MiUjOp{%pB9E4`QoF+ z=sd>m!<5h9hCLw}8U9_#_cJE1OSYZwG^k|J48UQW{TT|yVV=spsUoYvR>6|SEIp%w zr}si3_uLDwWQP8E@|@n>u()9zOLxl)6`nJgmc$nE)~PK6w}E(zFbh>oAyiqWum^%|2p$N{>MVETTT!dc zt+h*YTl%a+4MPX&NQ*rgzBj?61tgzb4=26r9rl7;n#y!)z{7bb@H@B7Y~q#*-}U4u zDnHE$>Z#Oy)6uC?&u-xei)n{G!asqLextmQyASYwO1FD9yN#GX{0|J{`l>uxPBNmP z@q54@>mdcbzr0pALzD^6{50#2te@!LVP%{xpMU&RuF28U;b#ecvD)#-Xp-cQfXFbe zQa65Ct#%w+^#?>1r2o0mVaRKG1rXx1Jf4r;lq#t|=A=!S|AgE8o_lPNx9?=ZrN|4D zfP#^8-=;FZeP7SYnV@!!y6HE&iO)yMZ1<8(W0{be^(fW{g`0lI+*HtrIXA$&ly8r3 z8Lw`fqO#1X%iA{b-epbABtvd%u@Gi%WecJxGePiMq0k*DV}N)6l=)@xWq;q7t8%*K z?Tb0@9*!Acbk=`u&?KOwtb|jJKjwVmJW760^vY>`OueZlTO2z5I%BMqZ3-osUv4J2 z_;}s=<)5WLDlZ}0=q17`?0I^jUU(+jxW4pmURYlCV2JcD;+UI5rlS2kCHEU;l|5xM~BDo(9? z_#sjPMvi?+p#l^V(NT|)jVdZQ@>=Jyg-SY~b+j?9#pU>T1{mvkVFX#lmY~uhc#zg+ zu*f$Ii&isY_K6l{OF8C-4|8VYsNn6Q%f8KX2#TjVT0Fk zugT$BzC*-nBfcv&Svu9-eoieWjS7nYyxdj3%Z59Aq(s8+HHopZF>rHAkZckvJdLFe zK8Ruu1<$gXiC|Da}-kD3XavIce(D|#5zFFIEl6W}auhDMHM};v` zkzi<6#$INi2d)TVMsP#c&%m*T!3A7)Wo;4!VB5pMzRKiHcx*1f?NOC0&Tu=1AA?#KyH_mglADB0{bf-)XY@ORjhtt^XA9sS`Jkldb)S8*{!V?QMY%iov z==6z;6S*0pL1rWWFZoEzL}3`&SUGO`gpxT}jEfdzHmB(lqGRJ>c%NO+I-?#lrD!AL zvYf96hk;Hf>hcblLlC2Yp+BUOCocsf$bTUTX6g=z# z%qWLP1O!nt!B?N0Wrdt8EsRiP7vL6Z-9i@Q5Q`k7W~8cLXDtMkBn}v?ga`vOl5k3= zCN~)XlL0C^2X06b3mAsF*g+7)wIJvIkD0^htcgO5V`Cwa0fG~lZ;IL#o#BL7#K+QD zO64L{@fwAED?t<&t}MzgN(S)3^7mDm@(Y@F&o<$5mRjY;KxcWsL|obUTOJj=Cj6Rv z-o1MjB>z_x2pVX?z{!BM(s#^cbz1A_sQ2U?cQ*Kd>g&qPW_r!){vYpa3;Em4giW7V zA7}vrFsFZ%r3G_gx>RWolnLg`lr^39Z7RT&DGLKsTDaW_7;e|$0AnIkm1}9lHCdrL z*toula*wrR$UI+L`Xb$8f1f*N9#t=lB*BYRV21#Kg)xev0GEqoH!-GKapCOXOCF+d zZ!(h{#IOLL6=67Q6!@u;Drpf=w)++F~jEclkba3Rtm20#Jy07eS^(Z$aMF;!h^ z;jQ_&Ng=BeKVC!{+jKH9$R$i?3M zqN{X%S@>pNSmd2hy^VV@j7n|)>kxJJ$$zTvT8}HbOD<#l;gI=q`RjmzXmP^58!ZpK zRqBl$Kbf|-)}H&~*4AB-5zI_n6tDlL2~}Ld1?LR-y4PWs2-0@vb$jjfRQzJu3306fukj>2e8EP`l4H{7>Ho$s>PJ<>k$YsN zCeW=H#W_0>NOvx*$d(J0W^FhjM0nlHAJsiLGoHmH4Q;6Kdrbd*mD1$8`{B%dxikm) z6HkPtuja~{PYe6OV$V~{HG4>KW|&j3a5Y=fsA=j}UPn@Ok5DR=I?(mZAP?3ZG9`ah zyQyt7Xo*xvJjr=y=|Gkz^?8s}c44@HZcdR;~|u0hlI_i8frhCz91diUk)9B7G#R?ldl9K zeZOkoT2})Ou9C7sgqKp3gD!sVeGz(z1PUyEFvhGhD%El_Kx}q z>ox{HCw7E|IFXY2^C8{P#Prys$QCz6?sE4ufArV&A{s5<_I6LTcvr3@Rb~{-T$Y8G zxdy)!kzKvOstz1pQ{;o=a&+F;TIuF%bKi3&ZAN74mg!8CC63CY9>27{`rf3je!uCo zem!hG`84+NjiZ>=aTl}lgNOUtI>7RbNBkx#6-{9=$tPK>}u+@ zIbNx}!aexH(JV*Raq7~GoH3f+zs~;5us-g5-$|SsIkr~8km^9u+t~7)K_d4e30mUF zBaEw7@L)}Z94Z(Iz~%nH#qex2CXpRZw0v|qker(2!_MH|NiQO{I%9BsTokihjSsBWZ!RLi1V;nOT zBbtQK@|PfgW8(8ZcL9EKLX z(NbMfA8)VZdT?d*8A(!3kyPMc=pq|q+1+f^U!P?@r674*F#S243~^28Tp+i&wnjE` z_Fnv)8GtAP;OR6yI+xP#5Dh$@zf)4q;?S~?9BV{Ep__G{myui#U1icxCkO#R=kq_8 z4Uk2ITv#A67@+L-4w-~&!_2#oWcndbO4MaIAk}+gfGzB&e+=^|*ye48(ZQVPwhBZm zLj1=eSBcF}1JWI7Azw{bcarE&Y!zQIe}^{haCiA|OI@f>@@n-FjWQo^SDAtv&xg+4P*Hg19Y zf{2~9Ak`3F{-UmC&$q`j5|JA(LN>lh#bTrexUa}cHE0g&>gtl-*6{_Hxu4bH+8Jp@ z>5L#6W7%GE#>|taEVwQ84AUB_H+L?qa5Fye0opJhkxKbA8{4T+v9NM@@4(TE4op>GIi$jz zDlEPmjRnh{qy{Q-^#fGm2hj&nrSnwen)R1*LnaT7U}ki|w8)~zd|W^tijGkyt~DJG zHZ3B-g)Yzx`>4LLwm4Sn`7?ja&I2iT!-}aLbhO(2Dsp!0UxzmtElXj!wK!pt21A5*jg()Y$vV zjoZs>QzHKoJEFOR%xC^PJ^D>iWT_TbfsLr4cNYLRw z=k@*}Q|90Y20>cpr1+093T?YyZI=@$u{L*#9M3x0?iUy>N<9zPBlOmL5yTtC2zNjJ zjfPCl*SO=`zBOQ2S-6xxEGw97V&=17n&@+Nb$)56<&u>yH&bCg^|)8uD7$N|a$p&R{4T*66_IopEbxnuO(CPjGp*ow|NbQIe?q#;ScWAy*eh@it@ynb#5W z?8Cu3s$}*#z&OD~BM)XGy+fys>|yyTmGS|V4+A`OV%UyV2usL%Mk-__OsPL0&fqa| zMuY{JPb1CWwbL+fbH_I`X6Fqu$4AD+8^Xfa06Ne9xenR%p(5m|3EjV2+{@N~aS*q- z@WpxKU0oPhkObrq+U`Vg85xjBqb~5wayDXy?+>G`d{ptTNAbVBR-CFr6W`Y|0}j|l zy3(5L=NyNsc1yXxlV3ddWJ#NCF{)~akjS&@H128X!ue4W}y?qRCp5C$r-R>DOB>V-=jtuO;MsFk~D_1(RNHfjDogUG;hzQK^l2@DKeRv^1T)U z8VKSh?Qz3&)Bwl6{hI;>z*H1KOX*yPk$HRWcLX%P3y^cvr_x{M_Gz((VHW7*MM8dV zXIjasX&N$e8; z060YjGIj;LPtG9dd9)$kBmgcxAmuF)`X)<9%I0(s&zNsw)NV@AHdO#izeaKpwd%ufWuz$R4 ze`(A!9?+9j`f=nvB&g*yfec|tyiSj|4@4I$tJY1ajT zBwvL=HM4DKb25c`%8vsqF#h$ly5;Na(NWByQ3g^kd$WHlN8dB#U#1c}vqsGn4j1^L zdVXW)BMsQ-CsvBAu4}OEO73wmTt0Xe21t4pB;}K<0Fl}U2feu)cGl2`H_>4O3cP$&;LiW{NZHj4 zfWIE4+PfT1$I7XkXy`D#+x&5(U35h^_s^jisUz0Z96x(&ly} zK=FZ27+4gzjAAy0<`xLy#>xu`102Avm1<%c{x>dA{|zXiSV6xY-n#!EDe^7gGD;2n z$<=W18Nvwlfu~Rj3Uaj$LeRjr)=aBC3iTvfMJTcg&Cw~}{*)IGC~oz%x{qQ7|Bs|A zfrn~+|IeAt%orMseQ5~U8$wd)SVL&6Nz~X1At}|>GRK;&8d;L$jx~EKRHB9uTCOam z^{1Woy6Lvx|LguwpE5IznfHCp^FGV>*%DoJ2fco@WU;1D=U#FE)i-EO*9xlo(}k*rd1WPM(a@KGUhiB^TyW# z+F0;RCu9G;Y8qki5MXEARIYmBlNa|3eITad4g?k!^!ksGpmo7W$}9rgumr0m*Z047 zFVG`~O0%>&J&wO}Wa%v4+r8lWGQ0&m9ug-QS&tPCqJ~dIBZipZRNF)D8?H04EEi3G!DgN)h{g&(tik%sGu$ zW#nc!DgEa*B`WSerFh>#ciX%fI`Up%(*w%n!kd&5^8Hk+THtD_@YYZD&dl<9mYQ-V-gSm<{mxV6}X|3})J##YxH zDT#yvdb{VFnl3X>H8(@wftFV18;}vmn>*$u?tYu+ezFf{gIJ{j@NJiyUF1$YdUy7i z@<=V^ycXA38K;5+!{BqW9^wPZJK@^(DmkT4$+m&{p(*vbda&t&kVnj9t>D3DfjXB?q|aBG zr}Dq^*d~TRMfpg&SV|#eehW+Q(IThhC3n5$M1uMS7krxSiRErBvlhfA-B8uUmU#aA zCQn?iInyGX^zM2Y(( z)=k0sT?oetWgtbAcAN>d?IZ?-X9Pb<{wAR%_=s$L5FS*x#TWV!Z$@?pbmwf zl~m`%OOB#V=5~-N-75^M|1fl$;)s&djJ-^gtC#IMmj#D&jZaJLPRk!B%i9SGrX(eX zc}rMsCA4hqoNcW>VH?l-ZyY?$|L4oDaY1vA)L$*uNmDl-K3{DLU)F3egrpKG48myt zsBIle?t;48OPiK}YbooOQfm-*@nGwQ7;iF-yWrwxfwL|M`6NQ&pn__`EUwBG87uU; zliNFvUA);|^Y0a8lvv)_X1ox=%twOKUi8(fDS}3!nmkXl2MJ_;^fD%hOUo67T#*+> z+$VvL44^@~fAmKks*B)T)*aiiL9Z;V(Ut8|XZ}sn`l;7Zhi$$4&^3P@HGXm#&{jyr zSLyvV<>~cA{}i+R;qqN~bo}PI#V0-=@0w9pJAP(f)VKXsD;XXgx86JZ5v}ZHcQHx& zJ-6F#1x8$>Av-c|rj>J8BQsQ3D#oIuAmBcus9Z47{v!E$DwZQ#AKKbWAtI^w%4R31 zF~Js?<_j(7U)ezt$+E`PgCydO?MPXK9`OjMuGJwI5SNv9p}mUszty#y(!McVWD4X@ z3l4W3A9R%t&V4ZM+v(f*zyx3%06D9~#+Y6T8C6 zHyY`@VjHqa;nO3;zG823`-zSugX-&d!R5#MF9%dS_2eEG70NWcybs{u{oS)3Fo|xTTD_?WX+y?%emXQJzrdba99GZ)C5@p75U0eAs4s)dpDW)aN~Wr zTqx-qZi`>kyp!1+@8D2kPQLTLM_%@+;hKK~W*a!)CgVJX6cl~GtG(#!iuG%DzS&yf z!k?7#y3!nOH_dWsY_nt1$K_32;zxX7Kw*2NC!<1O!hSa>IPMbn9mzn(vjRas3k z#Dym=zZLE6G5#Z8NU^Le_gz1@Qf1fmkuLRn2uCrw^ZDp`z1MLIw>Flba=yyni~1-ss>Mt-@`R(7HJ?fLL0 zmYcS}Hp!d!Bk|ZT>t7~67x?#WWWQRX^z9DEYba*H>s z6jq$GEcB_nJwEfVx3JOkWn#lIsNovpzyYfisE`#;*u>OIX{-Y464{rVFn;+yy$ zp`Tt;G(6CM?yvq^yqBFTZw`H)icVhf(&W^VDq+Mw(|(ydX8$?AwsQA(w>8!4C!*av zZ;!QXsK=S#A^Di1?ekvEG@M~{igfalUIKj0%G#@ll*NpBkc-={pXJe9~*i{12bbZLs5$Ehs2Y&b&y zV}9AOC8{!}wliL@FJ1@`o=l>&B}dU#? zD`@Yb1+xq4RF`}|3Y$B_XFmvM1_q3aJYm}&mGpo2pWC&zvAt+p^l`JzY6*_hiFVTd z|EvGfH_3bnkM6$>zY*vh6=S)>(!q1*MblZnOvK3NTMM(-O+8uqF2|)zNIlaNc)q03 zC}86J4f(u=c;DtLHv%{cj-zenU|`#rhyb4STnlTD*4t9y0@a0KNrfob+%<3V4in-;XK;2 zQ*0&^zB{-TqkKsX&Uytx;n52!*|L)ri!MAq_4+1}N~Qn#_+7f$>%q7woV2*BwMnDw zP8aKb=*xZfV`s@(FTYqUGMG;}f9JX)Wtd}AO5;&BFPGeM|Agv)-z6Q6&eZOdyW^7D zzoMmrq%hVRy!hDaErAD=P5a%ruXfCD-&vgNoR~4VTHZ8JX01~U@x4>HCP%$4e4?`N z=gr@3MqDEL??eyXj}fs}nk;j_t35|@1(=mygLQ7hb8u~TT@~@br=H{1+7)Rf?J(6& z^l9dRx|^?6%PPaFVm3*Jt*YDQPM_CAS|Capd3(M|&08Y5N0dyRG>U6DXXIJI9JC-f zilJ8QQfgr%{W;y>iSVV6+DH}Ib3ZbB{zn`9OFp%G{^(Sx7ItEmW_`19eZ-0N-#34i zzi`)@;s5GDestGKxu-i{G-NahAOYUOBXzTQ8B>fLqjyoTwRqZuWf_+nG!vePZRyQO zip}zNx$s$gt5=40wxV&h(zYG^rnq34yk|Zdaq-0^+tsRaorG{MQ7a(7>Ykgu_l@xN z;fJIi|6E^fs6##`@=lH<%(C<=(m!%nX>z4u(rtA`lmHtdMzknr80wJ5Y61hN2qRNv z;2Kca)b=apaYyr*F#L8=5@>qQO}e@c&oe53*b^ zU1RGC86goD^qH|VO7guC|^gP(C`R>Tkz^D1HXYSh@y*gFYHDZmtTcl`gEKmUpe%IjjCVLZlD^ZYS zG*IGq6H{B=rph`HJ2vHY9I{AAqUpan*e0Y%ugf@kFzenbl5PQ8<`#e25S(#2=PbQ1 z9ynbsvMvdqd=&D(nKQCSwoAp)m%c6C;^Q!u7|3eaaW7f=nqv}surMfTwOqQgMj?LS z*+`*d3ezRic#@01oi_;-aMCW4&&Zq&kai#R=hbpVCTeZ7zk^`zkE^$r;P zJ_)X)7%bJ7g##pIP^Y6Fw#dBNy(Ad9uCW^P2w#Y>r$e zjQ|5ft@FYUCpg~vg5_xbIN9i3==+n~lz&g|y%7k6ZIg*;4ULuW*m z+Bv|@m^o{ybg!kG@to*`95Hx5RcTP3(s^pWx4D1M>&3ulL7(3kp*eed(mK!W%gUp2 zuH@VFgE|ZKuQ1!IsUJb6mQd+OAPus=b^hsY`6`1C+F0A2CRnj`MVg|GE2Zh55O{-Dl`f_eA9ns0(4e{r|y!wzP%=FlDT(M z@O=yqY@|1n%6K|cIPXY$^l;h}`js&KoNkNCQeF`Wd0hSDiXR$>_6ADg^6riTsLmH> zRi3wLJ?f*{ZH^orU#9y*5?<|{Fq7Zg-~WDO_2j4U%cWJkeHXMWE=m(5_*!D`c}sDT zUs05N)Fq1tSA;yCmE*l7$I^9Jxm58#B*Bi@t9CEYHpP04ffo$b@3E%uVx9|!|F;O) zg;P^wW6+Bu&m-SxOojreD&x!<2h_ef@RmXXyUyz*LQKom;E=8wa`DlH`)fe;V_#HZ zT627^qGi$=l(2H?OSMZ~19*R17QVb!APoMX_vO5L&TY>FRi}1-O>0W8BhVM!cr~K& z`zy;{=cYRh+lngJ^1aaT5rG7eX1=dfCZjf*?;)?-diz$ zADYklIF2s=c1Q^#HKQt86vP=a$3-9Po~Na&l6llr2YSU##=hnh>mD02QQ}Vj7^&)b zY}rod?cO#?VKl;@g96Q$G!-ne@?Pkp+tVvsmoL1HZj(tq6VmTpJJY~xNXZYSdcamHh zv-JaX#38Yt*?7}N3&&BLzR)i6uQDV}MidV?E@GTD*zq_b36g5N$`_j-CK2khRqGCW&S6mvqp zTFv`T-^yaSq`wS5cwtWaH60fEJC5OG{}ElzuD>7cvm%f0im?8s1B)Fsw;w(^(-h}U zrisf_NI>^np?ji$9BUB^f(+mrxY~RkK?H%iU+Eaog`a33N~O@Il_^t}5>zD(4`Zez z392FjYmg-)6igMpghcNhpzT*IZAAmNNC+*Kw)=HgIaYd8tZY^578Inutx{GQuoxUDRr!v<@eW5l2 zUFFj^>3;h#R;Tr+z5d!XGbnui<|E)8Kia1pB@chj`_J{ulHcmi$}-?8EtIF=fsGZ* z)H@T+ldg9wJ(53lHa!eJ-Ev>!Oa@yZtUa-Wr2RW+-=QQG95 z(bEsI7LBwh#1MBu1>)BVH8;;8qpjf=fW1d0dkwy~iaI3^1lVa(s{5bN05dSbLVkxG z1kf>8#KgGS0yUvid*pF zKSC?#_(Nm9tH{PfAM&iGng-O!Pf{>-8l~*ca7KZ!$T&Svvo!eRLhoUXAduw2#>}4q z)3SdG-wyF@C#!MT_@{^g7nYp={0G(+6XZuVKzPG$_-H53_U`Ac+KyrtC!O36ur%L4 zc=zq9Esft#Sp0o_*g>5l}R}DFD zg&H=L`7A6i3zPIxSSRTwAOSX^qo3yoYr3Jd(&w5T)%nUr8tmBf+}twh5AzXf`gKE0 z#YFz;v?&0m)q+3j{l*Y3c5f8OU#HPQhKWv$-LDOPSycv^SF-L6zWv8?_4^iUpLpk! zgB1av99DiuTy2-k;G1(Zdbyxhhkdj6 zSS*JNO@NRN&U)Uq%6zhw`}nrNjOFhfmF(%VAgj$<76x5J`xFfm&L(9xkeGF4(BP+E z=Gt&N75~=MVC-q?^|r3)Xk+fz1FG}d>aeRj_jg}Bd|xwGU7#Z9YU$9N=Rpl7FUS{xa_yz|m|Di7ti_TaLQt?*f2YroKvD@(r1+>!o} zWKt@TvaI`Ud}f059e%Hlk2@SLIJ~KrR=w-Nt9;3=G9M4^;02%3vPRd@oRIxtv)!Gi zz92`6X80hwKW5N>gnNc!H6F+$qMUk`{EvT8H_hg${n8l= zd(|vC7f`#C z@QoY0Z>I*Gs~Ghk@dgDF*t3M^A=eS<1 z7>_^`clWQ>x~AqXiQT&0wPnT4oZMq)52eh+nXX&*DXl31V;lfT5MqiSX*R3Pwu|Rk zvji-KKY0e{kN6&9<9TE3gCv^^WWfeqzQ2`n@59D1(E3aIV-n2aW^mI>oeJ#5)g*50 z{X-MpXP>?iHPj#aoujs-e746J^`ve&Frc+-E5RCBowx+}2Usiqk^S6Rb}47Y9)!9{ zlT$E_bO%8CM}w)>3R)~Gs6ihR+phjfnq(Q=oG8cH43{}|$gWkCpnQ4@5)D7O8PlEn zaxV@EU-HuGKDMA7dvoqHERq}^%)a;gHTh@g2JZ!sH z&eN=VbkkSK4{iQBe`|WgoQ}ZqgqL^H)oK-pUrZult^AD_IB`Ygi>{=au`u0yAi_BS z2I>mm_PIV%f+E+%Y5RTJW`E>k57+v_2mS^4)4AZMDf+tdx(Y^i8B!D6`NIOMoHx67 zL{`XzyfHF2P5Xy~y}abOY1frY#CI>>X&IvH&A#R2)QY+oS4Ch(4hY#!6*(XI_I$l( z-%e#)lYzaB#I;kzX==bmium;DZD_8YG!rMQ*-=p}Z5v8eLZMWkblMVd86{;?{FSrgP<@Y#7;wBtS{j|}R#%YLq- zrWi#G)P?bV7uH|{tAQ6H-+W8;dJ4AKM8NtRQcJn6B@_j>BfPXbY_Yr^Auk~QL ziKKSTonG~)u<8Q-Rrtjl`w)S)tr{j<{@_Hp*WCSrgdf=(0BXb_Z)Gs|99~tzPNg_A z-7|+a7%%oqZP@c(WIYOREfl!1rNY>CZ`|7*F8=fF!BW|i!FYq-GZOQ`Y1aS=qjq2w zHt!DWVYk;@2;&YyVWXCbljc6K5Va)mi*%;`lb`FqCg198%Z37eMSew;r zDBRj~>dp22ySz*OtYZ8TgsUTt%v}^vGQg(wLQqP~f+!W7W+cKK7D>O(fvDL#B%JJa zwvwH(VgahZMOFa2^;5T^Bo=A-Whi^E1whR|V{V(os~*HttXvsXPewO)MKQv_?94*h zl+>1yqqX8vMMcRAjur;a?)a(uGFPOMl$|xWdd(ykj7RznkB*s+>)otm{MzXvYgI7Z zOx90Qa-KQ&cUI}ly!1pJ5+bJ^4E#?Bx=%dj@h?$`z{P`BW;`jS>pWs=j3KA7SZ`^V zPm#OnvcEd9@l90R~Ks+@gm0g>Ku zEHW{f1@X`Qhb+-!Y*Y^q|0vKmcD3W`{ z1CNQX#TbYbk%KkgM?HOg50}nVC~enoFOH9CpP41c2y0g+EdPGva8#>2NYo`uUSp|! z&vr-?pHOnt!MhqNJo{ED-s5xw6dN^XIBxLP>)BY_{%(HyZ95n?l>FoOp+r-Av#aSP z3W`mO(Wg53NQx3UKQzrkYoZ>U1TK6~N>$3qQp6&rGu&-Wfmeq7$7Br6 z7%hpEoNRYq?6KLT`Iyi$UiHJrn9h2Y?+o3RW502i%PYIpO#rmc$8aT-Gy5_8jUJ3% zUsZYcEQsgbhFXmN1@y~AZpb@Z=(eF*<#vsi@|dBKG`v#HnlJUS!er%x(r{A5nh#-} znW9jd{!BLDXrW;R6$eHu(F3&pd#|!l(rvImxXefM@8&N2`jkm;@FCgQy^#XxI2{X= zRj`4=a_%X&*acA|OhQY=UI#f@F;Rpyjo4srj=UmEkXYLwtqBl~XdrHoAkgIlN_z$H zrx4}?wB*kQI81ZU^I?54#cwuKg}b)Dl{#95rb=_D;`LMtwxLc@SeBhEcYMU^V_ddF zfs>hDNSE5GvE`hix`EG9nJ2qmvja6z*j@5n2`3nw+0`&$49}co#;ugDr)ZT3SbIqH z7ze2`-3xVLq_;nBy?)FS`)UOGWBk!M#=K-$$gDv!MjS2DrZ0Y z;}h}ea6?V$U0sf}U&Ao^EtJe_c#;Ch6A;UQE5crrJrgdJ=q~MWqf87;Ty*SSyfpVi+OaB=~ zx0PPmF*Pe&2j4F^jVf!Fe`u0`LP<$Hc}`UHzp)%=EF|Gx)Ijnx4untsf?9=i%vM)p zpvWyi<%*Yax8G5@OmB?eOyTI?bKf*MQy>~j(ZSE2ty+}+N@GV9f>kl01@Pla7NFzK z{jvavzE~E1z1{|CegsdL)4*ERi_&o}xNFBYZpe-O*vMbBC_&a5!?=2T3~ZNp2aPWL za8)5qTEgPCCx)>>Vq~-l{ieX!vIUKPMUQSLQn=)nIZ~smr=bbNF_GsC>&3xj8xIsJ zpGNw}fPM?3V7paAzrV>VYHW}O6*ZXQfFdFawZZFf?Wjk$o&22=R5CL; z6#Gr}FO>(uAveAX;BU|ktn}|p*@8Cl9&5seqe1p{i3hO9DWRktQwb`cjHDf%G~#y& zM^82=PqvYXGx`Ri+=QRI3P{5JGzG-|4AErVVkVSFzWo2C;t6R8F5AEn3A+EIMddGD z5V>V(WTkiYUH-f&|Fq$X{`bF=FFM{vc|P$^6(7rhwxkd`bM#wubbuhqa48NWo#*C7 z-I~-IRIxX=!uW-l^avy(qdQ8E0=R&Tw`)dl)r1JFn!8%m&`HslF9!k%&qN*|_>{~D zJM4)cplMFzNipr9GJ4Z2ZHj{sncqX6z5it0=GYsY$Q2K?jW#kuJ_oJOudY0R@x#BT z{<8C7Kmt_{UM|KIN^UY>SZ%U6>LAmDLR8wdR#4@4N+XF{m%)(TEMFkB86dWe?A2PG zqcOg3Uj%T~*(2pKN`V{1T>0u`v)#?ulUq|7$m&Dx5?)-qo}%+R?LR59`(c9|q<73$ z_Dk@vruw55zsr}i))su~xapJXA13UPH6&>Eo6XGqBk!khxnqzy(fAyb7{ALc(o_1{ z@H8LQ2)bG=5jqp`>cB+_6s-zYbN1#0iAb5A%Tz%*dnk?VupHQ13xX8|00*9;#6BR_ z_dA>*0&DEq8>Db}Mxz4ygKfAU;?Xn_q(G_PA^XghruO4R^(ou? zk%08vj{?Zl%qp!u?Xrp|2Mz5KVJ0On)Ju}Cke;EgZxgI5?Fdd(oobRBIV_dV-SZa( z7m+@Y@Eu*HoP?+6uB`*a_~6&KJC|fIyN(5Ia&s%iv;DAYp9^XelRjaMIU?J?Tr$m^ z2f}=8iZ}bMluOdMCGS{xCAF2}M{APzdAjGKw!zLPH^_an!*?GDlmBY5f`juJf{;#g z|3KtwNodn^*?^Gc>&yeoepGjet_j4XAI<4?sbqW`dQ0ZyZX|)>I}v^=)6JUyRvIy> z9pQ&5qv@=dCj36Hc*|*P=gju*X_l_N^7!JC{<7!kIOyB`c68aA)PzKWDOI&R>%g>Xr!I>JtwBOpXoT@J zMIDXJe1SN1H=Paqh-*)QNN98>zT(0EEf~DF(%n^#yY842kXGA!S+8|aR$(}CBHHzb zASp*qt7G}G?fD-JmJ9LLy{p}uFd{3pMhynD8?Vc>vZwOS_#FnKXqkv8CGA*2mY{nq zrwi$g=!{5cXpU|X2p~#VXYQMDl$Ivq(SV!gwF;R0cIw;;qii5bhKq*oWs(rv&d5j% zfQ_nW_uD+&T&X|!aO1%@aUF5YEk+^FlSs`91@q73ok6>T7n7h+ zCoG`|x=8raD&jkHojRZsbVg}XL|oCDV;Jln?@DUAlwzStwM%uohLeo#X)s`-E=oI( z15?NIDhWs;jCfWUDEa;k843uZO=B>j;Tj17{pJ=4atr;C{DX;GEO^pkFEc>*p028i z?v}i}8`54DXn$pjN^U)PFzofxwO46uE0NDSg;dONt6iuO`A6824LNnQJSD1<&4zZBI6y{5_!VJcq$7Oo1$lGU1Wr03Z*aE zgsfTgKCnjb!s4yc^|#IQgFifui0kg!B3JBJC$zCW8<6r-RKz#7|BC|WdqL!jQL=}x zN0PF-N%%Si%K(~{CXtPfvV?_|2o?!?8Qsb-=fmy6JRGvpb#0LhP>|X7Knu|LLUGaH zC+8y~jGN$!GO!wIok7S%qQ!NA8fljBY#YN-rTD*eGKSmv;u@|9&1wZI+d~(lddw}){F!ho9I0H>BR$nKm%xZN>#Py> z8o($_3euIr26>|5{TsGQa~`=v`*{BwWE9s$%#(F}S^ek?#=}osSE7>fW%8hA=1-D0 zR&doO%jWf_tDv-Jf88*~e`?nzG!JoxY7cTZ@x!Rl7~0U?C(gSr2O_P(AB3_U@|ypt zxOCD-KKu`ZVCEjCETY3hwVLBLYa-?XX11jI-uBLRoZN$#e<*o2dZB3)PQ@%L>+ z2?$99i^|$j_e@07<+(y&;Au2iQ5%Oe`W^~P^04Xv2oR&(-hRJJoh}1%`mQVz%$KyF zdrW*6AscP(a@ppuwwufj$Ux_B?h3Y&1wlg}fZ`~!q=A6lxzGqSLK_0DsdWu{$Q;@K zw`;!=s9p<8Qf-XPxa4K9VHb$wx_zXjPn!1xE###{bpN@rJ0icQnyiy!l z^zXI%`TOgCD!yHJY8xldZDrruM~A+w{&p_@!kw=NOWnKItudso%QSG}R=(IQkOe-c03*@*c6oLW*XiUH4T)n_jRkk*PiXfmNVB-a5naHbEbeet}!Oy z#-p1mv442U;|Oz0RB1t0Io{^vI~6F;1tI+^fh{^H4L)D04QU+6IKt&rzfG-FBr5abPgbe9`Bw#y|2?nxG;q7N z9jYAe8{X}|)acBls?|GDSol$E*^B4GGYqsG23Y6S?CIFH6kDyPDei5*Y@_6=g+XDi zi<@*g68CrKea{JxE1;U^$3Ne7GWRH`K5H6suN`@z9Ty&78S*;vT*N`%VBYw1=7ijY z@vg>H+V2q4N{**bcUz_3`k4;TYtv6{Z6SE`n%-L5^{N(cq(>GVsitCoJ8imOGm=wm zoS|cBES;94Qh8$Nfxoj+^~zqO(je;!eb1v!F|42vY$0|}$fVudrSR-fcV;aXa79$3 z?eHM!)`(M{(4h9@@ygnuh-cBKkUl^5$-8*B*r9h<0$;_8HaI*4tcgRP8ZI8X@#|-V zE1^U9@F_Z%7ONTEC~7!y_Q#FUj@UcczP4Y-E_ANFvvAW`u?Ih{BjC}P3h?TQcSr7y zeU4OBOvx9V7yh+R(vOenj{W`gSiQd{N7ihEq}5DDVCH_`=yRd>)UYnLfGwK=O3=03 z&AG8z2&WnI??p@WX1ds|(dR!F_y$7*$Oe!XmP)?hRi zRZ05b+~Au@m{E4Jc)y;zP`xT{$kpVXUr1~08MC}e6Oul4b*(E|pRf~pa z@0M>m<9Z-kU8+rTY=cs&d8Ci@W@bT=?&EPy4UOD~oIahmtt7EI%2S{fR+N&KqWrrx z+K;_uxYB~xel;Zo39Oj{IS%+?e9frjOgPKDRfqT6@+1sGPcSD6T>N@u74J3K_%da_9-z`V8kdEhS>8Tu>hGk2Vj!Y*BN`=Ix}*k!m!Ay(p>df4S50woC7o_3TF+ z9q<4=;NNm&s%KNJ5XzBt7S-Q9vZp+*tGSh4zJac&V)4^ZIU|lsftV{SR04*5c8M#u43pz-^0!2@V>om7M33;eD5`2+s2G3%!Iy)T} z6HLX`&h}mL=c(+1s6rifOowx-F-Zb8Y{3^Ncsyn3P3RLlf~o`3^7=nU&{%@jEbbIM zHlmSOU0d0B3!`&xgG3+mJo@3WR}Td)p>xhw22mgaUK$!%tSOGb`5XwR03M~0sg}m~ zD`9xu;*n9La;Z=l_B;ncy@-)^)(q_26=tQ7+jl{!tZQ}5%rQgG=gz?Mk2AjL04z7b z^x0ce_AQu+H`(4AA_-L>$`Ty(+j%{dJ($-tcS3EK$Ka+Mm-y}_hk&mN9%a^|$ukCc zJD1-5^a-i1QrKiCqufIg0db2ivdKwH1w;JtI!Al{0)2uc*yzLo9ILOT;TrNA<2zo_ z?oC)VNsAcS(3eN|^@eGOxUbs14lYFExDVT*-LP#28a&j1hNH;Jbe#_~=;{c7JRBoJ zldxC|hu9^Wb0la=KMmlclSYCaAPhiu!d#)49(tp(G;o`c#{_y)6(A4=L}RfS_caw6 z9P1bngzmMXxpa^pMM+JGohg|a+f4({Yk74pcAVHT_SGR4xn>&Vj~$eQYk{XK*);+@ z1!M&7=oJUqXxwa6*`(sybvJC?j;%)FmZJ~W0!QJQZR#^);Q_hH?xS~!xK%^X!7FTdqT=b?=^D9WL zV~&R~Vv`c~n>i4j9et>xKUO^`JAgOVeyzN=wr~1_%tWU0?HmkvatTK%sV?hKpoe_z z%=MnnqE)-B50@&qH!1yMkk z%SS$~8^VYx2;$IJp7JNmWfoP3qGL(%Xjc%@Hk#J!*%ko$Xt;2xWr;J*LPUDAUSNhBQ80aAyIR4O0VLpk+0u z!}t{O1<|tbl??C$L!Id`9}{k1DxJ~4f#*AQd$47Hxlca}8viC3h5JPC)WQkBUR4@20dP9!Ot(rzUo+8XXx)iBnoR-dtx_nkq zG_Z0NLSut{5%CZ}5kkS>Ad8xxcX9t({Vww?^GS~{n>sic!kv4p#? zMUA|J`_Sj5gZ#W!CV1Rr0_CGOaJNPtHM>cYppT++?a%>+;DZvvepDJ-7tMWslaaA7 z3~}wXRKf#FPG_%u zc{{}BGOnzTfz~9YKtL*TC-FC6;x&wext<8ydmb%itt&WgM{gp9_A=I&2vYBecPr=z zuMS@Gr{}Hly9>Mh5O|O5|3Ir-7b|>Rv7T+d3+55LD)YH@aDRUvs%*7<(_}D(jurpo z6E);Kq829XxYFxn0!2B*^4p)LrYSKf#?32FO%%zaLfzf50zsU7V%x=WtW%MG);opu zxx#2e@Ml%5xG(BxS|K?(&&F>On?|*Bcik1RshMuXnnE&+8apEygTCg2-`rP=!qC1s z8<8YJd9pw{e_;NcsN&)$waNIp3ncM;AjHZ@dGe8m>CXUl?2&5id8aSB`ffWKALx{Q zqmEp?>Es=;_So~E4zIK^XlaE$OXQ?;82CCV1+|4y@OhrhRBN0%?*w-Q)t?rW^imX- z*9})=zU-He3d;j(Y@)opSdeue(gQQp&Z-1eaJUUU#kdQ9D+Q$xV)J^{0)WrXdVhg7 zGLx~C3LK;{4t#7Qx%1Q0PuG3@@jfh4l8ov0@;R*zR>S_@)L{QxtFb~B_p09g35%VY zf}sdaZzf|^84afi9qsYgaK543c#URj?urUb#WJ|&6^W4P9#LLq0t?XA39dZ{(2=T} zqmJtWFDc;a%7UcD0y$rF)1Wz62)GZ+sp3`ABa?&wlL;gdsI?uc0nC?M4@TH;)lE&h zH=GolHXHR8Z6rL-9E&>g=E*6yvW?<{6cCosKiD!-oql=DA;TqVL!X%Xkbsm=t!$jY z5jx^hERZl_%iH(R3IY3 zJi-{`fXe#n!A)-!`UZf1Xi{CBs)Ta$7^h4PIg|)zX#yh_d7#5gpj*|1&Y=eqi8co9 zX#bPR=p`p9(D2)^4rn^qqq{XGdVe0$AH2CDcC@Ok2oqUvu_*EJg~vQd~; zkwTQMBjxDZUn1e=+0VmB!3sb)#*q$qLZV_6Bc@j+)>T3|RkS3ORB&^LS5C{vm7Ab# zG1#{oyf~6&^b7|7kY6mO%WmJPM@IMyF3J73qwC4hQy!=le|cjNfB{Y;MpZ8Pi|%!) zaS>^lS>al8fIml|!*Du#YBF@d(QsX(+_^<5t5q;!hMc2}(>Bph;JTes%7FKc7n3_c zVsr72sDVeS+ca7e7hk6l509h)zKI;?j8TS>M{&Q3B=EOJ`BzSJem!EK69vG={Rc>p zNxMREoKqe!I^%{SwiE)sF+sczaT_ue*aQ9!po5j)&9Ky8nNpwCvPZw7ZKhwcYftZo zfZ|t=qthE$E7^&OIRZNd0t!)hj#Pp-#*;*+Fm_VS{^L~S9S|~%-GWs7FN!vsBaB5+ zUWL7Cetgdo1B>kkYx?de9{JFz4Oj$V?LxQgzw_&X74mF8`Al zBhQ|qj1E*J7`9~z1r^Y7EQGEdwn?-UYF1rzyTp6?UMPf>4>Ok+HO7KDPgE#>nQt6rF6d zn@$cFMsr1tSD37tMzj6e(fd=h5RjU}5VkUy^8g8M?q=76ODdTNO18OJM&0BpQM(C} z9jQ1ohN+IO$l21-d1b7Bn_IxUvc@1JNkU37H?DHd4hT6w%815OVF`r-Cdb;iaJr zOTGK#RqGmZR~GOueI|`wy~*>adHrJj-k?IufAQKTxuFsYYDK`i3<<_)E(BP_RzLPtqDY1 zlO0#eTE1YVG46e|+hxl6V+;`KnqqAIik8dlNk z$pB*b@KvsYk+yEwjYy$W)Ug>^to^P?mAr`&&ViU0?)#!&fRgkI-Uphf9Fw@CaF#kG z^zvz-hm{Xy@CM$5-l;IX8@InG{ZqBdw$r@DdH34vE?#-DEO(>eiatn`C4Tx4(}?kR z1MyrDZk`fccuVZ&Nl7vxmPFB~r!&&Rn2RX_eKc-H-!m|jw5{#kRhRZ+q0!gFgUG)j zi5+;~&7|f*U}lLt49*E;{>~#}iGAyTrVuyjNm3PByS+1pd;BLIaNJS}!8(By43~S0 z=qI9Q#p+o7o=V(eijoD9f5p1!I)b?5g8U89Obpx9ACu@hrCPhBGbwIlt_JD>R=4UJ zJQRYNNSn-`XnzC(!YG!&gIcz9V`8Kp^buty;!qn)F%sKtD^9^wfCgF>x(+oSA}(QU zM`Q=uqSg(|L6muQt`E$k^UuGj?0H~)(C*^okJPcswf??04&9HhI%W2GKh}G4zH8%A zZ1Gyu=!01Ro6xv`>{k!-h46g~jF;06E*WOR3&D5fvQc`P7->wB2xVjL9j=a6@G>|i z?`>Lqm;sTDo~M}q$!2u>99U{Z-ls(<*9r`fJ<9kvNphV;mrvSCgYc z32SwDRoeFJispSGdP7+pykpe2m6^3FJrvbOwB{k8BggPR1ud9gckANYya?8c{8@Q8Q?FGVx6 z4cKY1U~an|7ynMpxjG<2mSG!IH=Nrn1>!9T6hcDb&O8{g13Fdw_SOQ3n?>eXHWvx% zd5v=gBIv-K04~{D9W^PKi$6}?mILBGiol-5U;)bIFE21=)nsV*zk1C1qtR(+&w+5~ z%Ihl6N?%H~Twfo#H`G)brpVlrm^EAXotZ5>*F&{l@}`^~S({jSl-OjEapkdsZCr1< zvwCS?&rq;}C5q$~q;t}n(jRyXb7Avr-N#uWvhBVShTF~XYz0o=4Yxd$S zE?8(OlXM=a#k~(J%AhTg0FO*_(#_VpX@BhViIvS-cgR}mC$A(}nYa#Z+AR31#{wC- zsT`xN6uZU zyHHVk45D)9)` zWoL{Ix~V$10X-!iKUgh~Ps~Mp>l}g|hecZIGEdmCtu+=Ppj<=#Zxn75TSnNIwAiSZ znrC@P{~t-$0T1>6|KFcm&N({!jC5q2eT1aa#|#-~k5p%s5h+n=+{YdvJG73>GeQ(v zM?@)Kn`mf#OG$l8+Vy|?{qOO}oloaJpL>1Y<29bo=j+@sccC9G!NUW z_c2wsts#>F{U7jdxw9L*BZ1H&5;%~00>R)Og9DBehND~d0M-Nx?DZRJu3sTo!3R3A zmh{q&Hi?iK{x(Dc8BF^^Bq#4piYOM>*$Rt6I~}9O3eN@_<+6-n{$Pb236N@Jvv9%6cwl-VhsVH7x2*C0-z8dE zxeDyz%FE$v=ej$j5xsiogMB<7jyMT4+unSVpORrwUXJpt;|;VJ%3Lu?Ri+x>(DDUVmt zsx8@d^U0ZNV{{=9fF+jdXjE4{BJ7GC19| z;e!fTw677w^}^=Rc)*$ykP|p}r4HA^A$WQHRng&qn>8ozz-``Jnhs>aJj}5E9)<2| z^Z1#WA;9p^Y;4T}R8+cX1;BxTVz@3#wM$@rEi3T{T&^zTAtu644iDLhJ2%EPskPf8 zlCdiC3UM=7TEr(t*Su71pTH_$kSx%lk>%@2An3H3l3lYhGOHTelqf1W)00Yo z>yHLC+@XgmY}9o@QKu@n9zc{VO|_vdiC4Ru9qTBAfbnDw+&iGNadT0V$DngzUsEv5 zt%7EOHM?FrXqK}_`Ot0Q!6Trf0+2N`gv1SY?KEleLgE#32lEDqT|#xFOsNT9GSIO* zm(Q+y-XI?WLKTQ49RA;SVo@!q4^4o@$T$f@T)5{ApLTB%DV}?PkR=)Q76y(68-c}y zg*;>0fwb%f`L6;p7 zn*$&exnad^&v1320~T%nr2Oz5*_^=b!@ ztc@20bELT<mXlwVmjvBaSRxg{n)|;)m_Fb>!Sd*VA6z)p7<{`gFHe^Q{e3BB&k5g4cvH@ z9pWX6!~PxiJb%_hG);RTRi~L_W6eak`bLaBdkM*}M!6K?&!y$@-FWz23*(Ntgi9yD z4Vjqn;vgWh1|aIGzGVSMr=sZ=knhXy5ePww2GO$$Pj1DhZ)1xhfR16+7vcOa;TwRD za4BLG)7*1qXLdp*_$S&?H*JS1sGbvs6%N6&kFrme+RL{_-K1-9`KhwDClNTUt_Vnp z){cPj4OiI`m2j9PxTDHc9A|)UTGK}5(bdhOwDDw%|A1n~wd|Mb?$p}#;|Oa4Uj--^ zm!4Y^HKiu9?UHe5R|OrcP?Fi}{xsAU3*PkggX<8wh?@F}8dxKh`dX>D^p%VQbbdtF zb-K~G?dfpYbi=5rxEq6+#b4v>@w65!AOSUkO&|Y~&cZ%+Z&5;`=Z~WgHH_x8v?oF^ zW%7eS(Cg4isuflJN#ddkW4|?{k}QB%PbLYA1k=w!7U)gK!*aYlav%_o;Dp%!le#k{ zzYygen79ng5ikJ5X3Pf%^@r2>RPeuwq4Uk&^OaH_!tS08#I2G+-V&s)Sg4k9qI}I= zRTy8Om+WCa1szVm267`f?wvjyG4*bFT0tq;eHq(9Jd?;z(o}SbSREbR%)DIgao_Ux zSz)YBT?!pA%v{TCOQd`~Spm|2WC-!3jPPjF!S`Exn&pwIX156yI;%<_z4AWmR*N&N|mP*w|?R}-CqwIs}<_cs`eVuz1>rZ3#0ltpI z`38>#g0PZ(*TluOddVsK7<1uFgI0z50KN44ra-fpc$t*#_2ltUmg> zg)(=9I%mz#J4~iyr1vnO03hIbq9{ylT;4v4JQ*BZ0XCl_7b$17IVQ_ z6pYhU`wt)=259RMf9(pT3mxfw1VCm&MMp_{z!RR5F-Fj;7maWVvO!psEHb{hmrMbI z1Dwm|p*ylM%>;+F_~stV#d;|Q6IGHD0%Xi>??X^4ttjAD7&a|JuQ+wmpQ%u#a5$xV z6yp2EVJ8O{aBK`vfvLHzKV-pz2|H^EQuEUPw)i}{9OitL!kZN(cR4}({EdWVIwikI zGEj%*)TYtXaj9Xo@p~*s{kJ@u7FuFx+KBtTu&0%ERgp=u>X=JC)E`R{gO738H;Y7W_GN%)NsTGX}>Tl zMNG*$Q6L(OnjTTNfZHNq@P9nAZMX;iVF2^PDu7rR8}XWsr}=E~g=w{s)wbT*2s9Zm zZ8++R07X$$8dc4xfd1c-9ya6uVJeCO0OY}D`OiPxWk`3+fE7gIvcIkp4OQD<5f>p zojjLksa)QG10`0BC!mvLvLu42;~4r(L8?S^>a3iwz&pXHG1_$R3~-@)s6DeYGNad*<=kk z^Dx+_$)CTbL=5{>6F=dfF0Lmks0{S@purr zvk0gnKubuSl_Z#+NaxaFr15kc97M3}Sb?)Eivmk~q0}Q3Of%~v0gM;lBVfP{E{;+h zt@CD{S!+8Uc|dED!?!LOK4k04FSvWkFk&$CZ5`9*u?XC_g$T6tLqz5^{r`At$Q@(% z0_a#|0xz7cc>9cKSInC~;g2F0KrO|8>SVgC{c#+VtA*KK8S&VJ`VEcPP;cCzJ93B;5x}f>RVVm{`B#bBvns>HRhvy#We0gW4nFP*; zHFBpEwCpTZd~U|Cx>Dba+z>`cFiA9EWLN(S&=~cRA`UD=0toZM)fPD=0d}pDG(&7H zBB*`_epCUu=J%mziI8Okn;=x~iQ4G>#WDVa<~{3;%`wdZWKPI$m5@zoRQnf>C%4v3 zB=aMLuRT+v3K^QJ;UMN|&zAFhrjBrX@82IfU6-FO(iVQu(x z)x(xL^L$DE`h3x{iNF&4)`o^+lY5KNq?JaHT_rCf8aQKPku#Olw2NIIblNLk{}|l1 z$Mr@bZaC(Fjg3&z?vVYz<#Lv8)HO6!*G|~>eQEy*+o%T5H^{|5+;B8)anl-KuBB;C zs=JH)HL|(Ayiv!C=2_BVqg>9NzV;pQ9@mZ{-2>29Ziah?t_mzGI_P`aP}IOnhVk zq(#8!Vd*60;;+Wf9L!U6M07w<$ydQKE-X5Zv+1BoPXmEQf;qC*)C4fKq4W;es)? zPLu&E>g(giAX1rV?Z)tYC#)VV1v0&jsDM^mBS@9@-#5eL7$KJ7OiO7@eAxSa;=BrN zsgee1^H%;W4C7SP0(8z$rnQ3L$=)`L{Bnh_I`>T)w?z9yw1bc19z>yCn zK=9RCwo#7V7QR;mkQeY`SVg?*6O`e$Sz@>rfbA=uRcx^ZnV@w;8&9DlH)o2f`#n^` z=+zD%XTIo#geEA@DXLri$*)mP6f7aC7LVf&q|A#k!huE56oTF)p?y``GQgMfoAI;DDb&;-M++)!Fu!0XsSE++(=ImiF-B?n-kc03HQ4 zc6ucW<~&=xZ^6`PtkD@92#=JvU0Ki2${J?YVCJ8P&E-rIp0s^*h75ePRWw<<=)ij9 zA3t3QePn=}qYCTuUtx8}Dm;udWc!lLV&ET6SddQ`IT}ti`EC$aNc<*=(ma64N4RV< z-i&xjRpIz!mnnDpjB_P9aA)oeuT`r+udb)#7?Jw4<8(01-;0Om=XE_+Pi_DVA_(?Ubv%NJx`Ppc`P<8D&f|Hs1liuK0w?~oaO49S`i!)igI?YI!S zfV&duPo^2clvUnJEl@Y19&I&Lv-eM;@YTAH$bK-i$>i#SU}0&)Hs02*lnOAumjF2Q zqy#Dyk4O01(ne^s!4zRo=%@+FlPb0-+u|~UV>tdblF!6}bY`Mu3|A@9_XTLuqTqIF?TPiYchAjt<=%@6e=xZX;cuO0E}hm+aI;u+zYvX0 zU;FW&y_gjzZnHO;pbd-E#}OkA3v}E=-2m>K%3keVT3wqh-LzgY-cu?euy6BBg>o{k z0f%mt8lLxnM&bfSdYTbPm)4$P!focy+b(Tkvy(LN^(th*h*>FR34O$1UlPb_`xr5z)wYoM4jc9Z~dn* zANAP4Lv`RN*=ajvDgFjWCG<}r9%0Zv0K1Y#CIJ>y`9)NbE8mIM^~;q3W5gQ4aPT_E z+{hC5oYc9VM@D~EM%<=mwG#BKFnh8)^;IBtcvwtT4kC)G@n?hRJ+C$i@~v6_B*Wx> zSpws{<$ot5zuG|iH#naPrzr8pFWj{-B*Q_=ub#IqsKTbIQect-1IpH}zoysLl=W%X z^7;J6Jt=~hG9i$b^?5uUlRn@T`FG9ZjAZ$-dj6#M0;lTgAW`sx63SsCC?_<0q<$RH zsp&!z$Ow4Le#Ig2E>q%(2Kl`C2L$WS&s)_?dZf6ir*Nw6Km6RR4J|MGAp{ZP&5Cf% zOv|&lC1Jq~O`ixjGEj@P40S(Aciz3%+Ykew|DFVu_DO-K@bVdn6C*7FE2SAxFps>3 zV-;!^X(6l&n<(vy8+F{pjsK>2N%Nj#k6r9&$g#2HVtQ6!5?eF1=ia_m%__PPj}HsD zUaEL~;1S@md(<|7yZcU5qm1j|!UFSIY+?NAC|9Wt13D*BC+sC&Ik`wxdLUlp8!1d| zGw^seFmTv?I`dxKwM&sR<^>1ewt1_4O|_mjs@*Y@p3?P8BVUY~6&;h3>C zHTO~J&UFL}CT`EgINuhZXRg}@Bej01B(-?+6J0F|5C{n0A)yz6S&WZtV&A>IX9scRt1HczSC4p49wV?R{Hu<%Ewbhh3Mx1gnS3z8`LL9QjkJ z5KXmye67af;*BSrZN8UocdKNLHrBqzMRZ;~yJy?$S@W-7B94FF<$0B|5qRwQ`Ehe> zhF;x2pK=eGwNR^GiB&)1Tl;9fIiS_q!&S|`HssS7@A{od%y$0dFTJ>H-ut%l=#*bs zxRx3~X5NT4NKK$I>OmjLVu@W9mY1{d1Tf}S0Y);G^*JO@iH%R7f8INzX`txR8R)5# z#x51HUawj|DIejVaZMqJVym{Be|K#eVokWTt;Wjy(_4IA+@I*575^-~UQ`Qi=ITYN zYYVpmAoG6B*^e#HH) zy@3~Yt1daKi%v$WmkQU(H;;W7rZ^06tY;EG{9QaHCZ9-@Qs9i6ev9Y!ZhH(wIkEni z67voJozSAE%-q2uJ7uo<$G$kSgFYPX>l7aseX3aQWk!ReE#$?BQI#Y<*WpJ(pt9 z`);a2`?J^q|GmD;XIqvGQtn$t?fOuYhLZ>5{Kg=L2y%%V2rFT!5-Mi3EvAk;3ncI& zU?43vGs64$Im==)1N-OFa|w{Rd-824yLFF{dLx?wi=Kji|K?nmCK%ko1>+M7`!Cth zh&++X=_!&O2_HG@^uvHv{}@+$eb_Rg9xhkCHITXFePf;P{%G`3PH~yhr*Cg zb*WT>{NT8s)vJ3pmT^scUU!s;st9Wg?k7&6U3!N3e5NRHV1GJi44b~%%KtU|r6rWz zW=DB@>>moAqpIX}rc<%H`P;kTnq7(*Uz)_lNRdfADQod{J|tx`{R6`oX7cD01iJZY(88OeCVD{Nd<@R(Qj6g+IIfznQ?$U!+vF(*tkFWNL5hxx$m+$|rR$4;yO<`rM z#yic}_J=w{LoCQ8O9*!h&Pfi{@Id*u(P)g>NMzl_B|>O zu56nh;gR0FCn0y<=)Z37DG%nJ?4~(rR<`-uXOA#4HXVP61l#sZlM_iSHW}1ax`w=3 zqN<9Qo^G!(P1p^l3%7{{k^y0TnTX7b+&^zXSkQA znLWwH|H$$Kzk$q;5FWu7c5tWHnop{Oj}Pv5XWeyB_LD5Ao^^;-sc3t)bj2|uZOUG8 z?mrIZ?aaRudScMHz*BDfw%vuH&OL=LTVP2_tJ=5~I8kqJmTo*8YqY29ot4ccwa4s& zx2O4m7aR`t3SOFXkzrn<<_?ckdCCJi)Or8pfH`n#YqR(}5Gau%KquYKEOM~eUzQLM0=*DySH!*t-Pd6$p;jA$ z%Lr9SXakv+8>LN46~<-JFi`n^BrMGJKz|G!Y~l_p+igF`0Ndry{1zhcG|jXNO;1A- zlC>}8-V3e4uCt1}=81CR(#cJel|Rqdt|MA#F%#9)e0iD^hL8D8CqsgY;T%(^=+!`#i#1NhH9PT61zti9BZui z>GHXeXw%O=-FFc&RnFp7rk}2j$8vkVY{`CW6gm6r^`=|(>wvZQlJ6!@KilV%nlqnJ zkKOdv^&zMJ**Rgdb?>uKDV4N(zDI%B=MC)#ez}#;w@R1FGQ~cFGMFgP=(hv%&Ns4P zJWWJz>jQM(ZM(HUm0V93MHHO$^<)lKTHA5^OJ10iD@iBz+8Rt~%jX&GGmF%FubV?I z>vtNJ+kEg&#mQwuhtSTtyy%&6Br-k1am0lH$doNkIz4SEu)aO5j)}G ze_rm$L7=!bjv@RAKPYrc6=7Iwc_fp*0`pCaf5<%+d3)=!NhhzBCaK%y>l%;EicKF6 z%Zk2TQ=;}gHE4rZU*M&7n72aQd&63^XW@xgQ8ROtbjcKa= z*~gLWzIpRW70`LAgD0{~jjme$vmuO?mF1(WlPn{2+SzWoBuQ{I`4;BHUs_(!ebo~e zxSRvl1Bd9OR4cjG3bNS{*m*nkRqMI;tu{|o<_>BJ)1a5XH&?5`?VRYGG@g6u0}ndw zXKok=jV{5E9>+$M_NEnC!5EH@tIT)S?xYFgd^T)uj;!e(h7s_B9-8lmHkd7iF z0{bDLgqGomRB4DvPJ@XojN?1NC{p4N;K4X zQ3hNgR!2(=?b8KA+{$jLJMPq=F-6Y1xe|r^wMm3CSB=!t{~M{}7#e##pEG&dv7TfT zze-bljT<1s=Esb>(zbzknBqh&BopfxF#FcpPyvg*hO?)qf_%l$kLwrPsbEwuuT|tF zH8@4<{@@$WfWz+QBe@0pDMb+-v05k9v)DrELGlj{APg?zLIzpwf&C>^MLbRcXymj< zM$f}ljQ(DHT4}g}f^u@iR$?o3ksuHA^z_aexD7P1??T=|WVJD`3lg$Fo|((Zm@PIa->U?5yPW?BPPH@q5}a~tijS7J=7kvhUwv!fGR3_ z%@w;cuiWDT(Al-n82zzu6j`l>cVRAKBaB-o!a(zv%lVcF6hkHufFv!aBTJj|s$62XjN3!|AH!V8{XiTYk8GSTkC-i!%F7BzG3Q3+BOT(O%M ze&=ZSnq7uA!zP`YAK&39D1FsW2UzT9W;mByl5ld66qoqmLj^PqT^IF0K%G0ca>v3W zmB&a9S;b=YO!Mj;(nwE03Y9Gg4lZrN5gHs3TE2yLG$9$!6aK`11OF1T=Gj2I;cfFv zk^La`ASV{wElMEhacy*wR0N5%6W%reI zcFsy=Bqi_mj`~H^57ASI5-Z!gtw8olBy0e*Jk)`V`OLYS3Oh~rcxb448Yn8>krXez z`ocROF!2m2%s?V{T%P=bf9{K&3-MA*e3(eP{_B|^uit&;7NzBnjXCsb{_d>?Y<1&3 zx`QHx;OUm#=wZfY{i}8C7=`W*neN{6T~_vC>RqEVNAI=PN7p)tV$~$zW;}LT_hB=E zv)R+Lm_!PPU{QcEY0bZt)5SHc0NxHu7Hv42?|EiW1Io|j!F868rsLZE+Xytcq7|27EN=P(hJ_1OxW`adZqak??5HA#m8_+E@2*_%^X-*J;HU$V{=IITKJ}>%g6( ziW*EBZ+Dl-6DOD4xJ2f$aK}qOMC_8yCJtygH?(~QOM_rW)7`Y`OoO{ARlNSW^~I#d zO4m&zrPAxm)7~Gs;eTVusTlUkdMnO_y|ij_^6uIIc^zA^qc++9s3n+v+23@YbJ=-v zg5hqIAo|`LpL+F)Chpn&>(f>oAne$@_u|k=k%8ndgXqITX((bfn!Qp3B|=`n+|{=NGc%BsK1 z|2_&DuYdI5xaLUkwWz$fD^KSI2g$NqH{-LnM8?2+=2=WZ+6 zJH(;CQ_**KZYZWR`(YD2d@!=1^BxJqRn12m@d%K0W}1A{}4{p8;>jLpYhjMpp3LsPuE909JvHQ9j~eL4ckLNunoy zp8H)U(7Zny%@?~bO0CNjhj)OexVS-CP7u(O4#S2Vpg#&@Q zVxdE$%$l$^dUtFn`@=fawFpQFyxFk7r5_xoiC>veCmq_RunQveZnL%Y-U;Q1Hqqy; z4~Q(wnMAp(b|MScR4P4}<=4I$BZy9D*qtZHMO`|LAKewWT<_9Fm51^&Z-x#G^vJ*7 zzvfA?x5@Dv+}lYLL-6Vw?mHyS0}ethcy^_}BB5wIod3B+(;HR;6UCoK2`Mn250cz6 zoYpykPfy?iI-@iNYJZ6^{@ILQl7XXRHNcd>V-skOtC9eCkKuq7L~CR3EIuPl2-=ZE zir?z)7NwJwOY4dn;yHHUr>Q_(e_#VBKywx<1~{y+v@w(gesRm zuhFRa`m@GB?9yk^UM#;IilLS`TK-$|`FN>;S`=*3~8RfJ9lzombEitEDq zFJ1~u+{nO2?TDT^umDDQS^R$e4YfNY1~NJ#TY#t5cPzW-<`770b88*C?w+dX4G~Iq zt4NM$muFa_u7fzNYa0oI6nVox39ZQf>w&~s6F6>@d+bbJyuFsq0F^t6C2sG+H+Kh) zf7S7;J~pC@k~r80ZVf$B*_!ioXzNS*NNJ;m7jPx|%Jutv^nm|+-4L5gejjum9R(^fWHb+LDen(vo&WGA>2^!z?q%=M>pQuI{L{Tw9cD#q zt@MEPd{x6w_js4$Sv=Zn2&9py8_}qO+NQYK4QKL77t~g5*yj1~h<{aEL-(Is6+ z^?3U6pTky%6D~3%OtNqZvz0B}ef!*l9tFI;Wn^-6^2E-Np1P$Q!-W8bn7bZ))u(85 ztX+LbPqEa;WA5bQx3Vhk>p}be8(;2DC7ds8*+clVZ*x6&{nDvck$1>NAw@kNG*lWW|akPh(W_hOTx%4f^M{cvW`&^=# z8KRb4hKRBQ7L+j4nK;z{0! zw$~Q#^sARtfHv6lG@Qw6ulpool&-WYfrl{ zY9EEu2b&(IDui5!m{(m!LX-WR=K4yD_!1HK9rOZ1DHEDhF&VR=O_bYRKHUqCb#Kf8 zQ?TiEhn{2=K0cvYUtppG9ON6HV@m-}Ahr>agJozWM&k#g$p zylm*199*hHwR>jfSqKZznJrFS7;O~4{!M70pmZ;2Zi%$Yyuw>`smWoZ`-pGo&y-!o z&I&f8nncg~>|^OO`rOB2T{-*?CE^l*5{)f~$Y9RH@d5p!GpcIz3jv`bo2&H>Ypu1s z4&)6gEFyCqRq#dinaLgL)Vv7cfk6}Qmb2Q93Nrc5RLzR;TDv@zt}B&QFRXqy%27K) z3q9l(&ri9;x^Nda?(Xo9i`6q)r#XK1<6Mi5xC+~klq|WP%TKxUIPQ{#^e9JQKhE~e zwQ0PjA73Oa73L;1K;I&;di230vVanD#v)q0#q_X_miEkWbsbyQ8oONG?ocIh!y$n& zx8BAqlE>IabSo(eJ1>4yJnZBvP1)v_?M)?*tln`pwT&j8qzkKSUwZq-Flocyz>)WP z!7uy}|5SH5z+H*i&;KsmU0^Le5?+1l+3spbcZQU$UqOAFa5`;FLt;6{Ku41o9w_ zI>N1MgXN7_QDIui{@c>gP$Hp_M3{(sRZ@7FD6GrvG){G9=f0ITnURXKh(D^q5v3ex zP#i440m#CTIc@YYvp6m#uZRFizr0p!j5pGtSI5W+aNlQ*b zesZNH=PZ-3ZeLzsrIVr@?;#h`0IOZsYE9uSNJgevj_>Z~IO&!P0bcWghc#%A1bJ^^ zW5boHfEb)09t)99CJ`$=G;G{WXe-*LfXx?TK2}1oE7Bl0+L#4I{{Y&u7L81nyVfdz zdjN}}mM-r$(X@~tg|RI?uL=SBoV%hhijH0chQHyyiQ^(lKO392=1Ku4zgu^U$eFn0 zs=KRH!V4TAhs^Y1 z<|Tk;fC>|}K@se^nu;lm2rPwJ=KIDg+vk)ywG}CpoaOz2>Wf?q~ru!A2TGoQH-#x~K0p|b<|G*bKEub4An?=@b# z@;{i3|LlsN&C>!5Ke?47W;=+vtb~<_ToI`6grD>fP59%`kVi!9!(vQDI@ zYF>V4aku{J-NK4cc5<~+#`R_xDzm2WwzEyR%Y)lI0k|(w5-ljPAKQlGY#uwE?;3Mxjk(-C@W9GsKn3#FP$WJ&H`MXU z`~6(EVkTNrxk|)AZ{KROXALUh!VAA*&6t($w(g;c6L>(1dl!fXqpvAqINmD~m60%s zq;GTiAZm6WLSh9t@^$!;af?y-ol$UjOyPPRV2rs2BxgWRTOc&N(-^(FGEq>aOu#q{ zs17a&3?xLq0hA4UaBl~tu>Ukvgr?}VRvTH^6<9ZIRjYZ*bjYk!HBuh0%3o6}?EsC& zxruKJx=sM&u|b>!UtB$h&YJMlc?9e17EaIXbmY&4T`##;K>|^-=$i-G_e$!VDY-Xt z6VBov)-0QY^XdM8{TNa-;bZPFEFD!D6F}F>tzghqxGK9ooP2Pf8k2`*R=E`6b%!2l z1`fN7Y|-Deajv>1-vYg)v?rsnYOjg^EhVq1wC2X09LAZ)ap&2lTX6y$A_^Gh&!U)z zcz7d#x%$8~NtKvU2{~w*=I}5&}W(Fe*a>&W2KM<1CJ9 z3~^4tNPeZg-4ESX8yj|NKtcPLV7DLHDr$Dr7^>n#!QE9JHC`ofs&H;@o@;wA&uhQl zgaE;HjRfKC^cSAwy(Ni$AwY8t&7s44XxnC68YUt+Alt26(rrdc$%puMG=JZU)-`$H z&X3b%cqy2VwiR?zxiDAAAmzRBT3xfe@CYLR4?ez@Xxm8$9*H?*@cx7$&VNQ$6h~TU z?<9!&Nro_@PBx_Th)p|0L2T%6(;m#f1&-z0g#Bbd;vuj^TzLeZgvsy4)jF?yfA+D* zyl`O{8$piQ;l7pJAS3b=iA|SXxdh5)pvpz@UF{Ukpa}}r0AxkxwYGYX^va;P`9rtM zCcW3|9vZyL(fO85H6ydFeLPtnd+Rp8>g5LUjqua%Ulo1CU>05iXx98gHH5XDlZet; z>KfPAgObFu9v>lV!OoVL9*vrVA+n-18a2ESFsgzZ$>jihZ zzl`m%X{Y=;xOI3XaDt_eyQG#u+0PY;I~6sQNZ zijjjSjP{N1gshQl*kY0OF|1gN$R*q|c;DvROU~WKW^W?eT{uaF*CU{5K)dJ1!Iy?- z_25q^M%1B2mV;wBF^YWg`NEy9MVm1K8u_0TLiRA&_FHn9$@+&r^v?6L_SI^t=mx>D zQUw1q0|KMt`{95H=4(WgFa(tay!uvT4jx%*AOV9-F#j|R&BPmny!m;l;YtwzevzVS zTSDOpI{>O02*6fhHu{B-Ti&h$-xn?{22*n8KhOD}8XlKW6LY#Wpu{}>JIBzbJxt2! zviLN3xL;{s(y*Q5v8Uc>y(xc)x=P>ys#>{} z*^&D@&xq8*Sv!7O{l>RuZ5$@VkVz(};T3R8Y(p!B(fUg4n{~l}y)(atKurs1 zdGCKUVg}!zaJ1a%Nc-Sfzw-~>TpAow&!&0XA()ooip9`NT3PT@K|m1>ouI?UiYo_c z1?OpVF#QaN7s$Ob54bCp1du0yI_WDpIJnsyg!yc=9wzEm-Vfy*HsJtO4)C^0Ge8Gr zW!3T#o+CpV!t!?~9zjBi__n+9^1IwqG$%z{hfmD6$eS(jJ?M30Ij0ec+t3_|g#oBm zrl3Ba+|sT|(ZoZ^CSi}*8?LIAmg=G?m!vya6-sVFjALW%2mte#$6dPMYj^SRC0EgP zQ|b*n5?YSkoSt#{oP6)Vzfo5`-tq50zV>OhFVJg)sNwM0O-Iy(S^I`sQd+vM3Hm~^ zw}o-^tABS)oRPf{q%21QBg1~fT2-?qz}LV4U^y{G6$rff{Ci(>Lo$M4nFQ7!K%Ij< zB-Bzl8~r^!?O-Morh?uRXQH;kR?jOY$U{k(oizL_FkFYLw1ds+!AmWVSY1iTN+}}P z*EHhTeAwyls4gNu08xd&$SM`aR>2`jg%`3#Ie+|aIq5M!4*AF2>kpq9qKx=Cj21Pv z`MsjZhP2^}61WdLsX7pn9C)JK?49zz9}YffO7ZvLC7-oa(f{YH@#NS1%BQgv=?z{| z8*iTqm$+ep=m5u817_1MyGUQfU}XBvpP*x8u)Nx!>Q2VtiA>HRKjm!_{^NN6g4=}@EM`dj+C6M=XHxET#MshNlwJcD_aC>$M2Ff&es}mmAJxC zymol|uOBZ1xUe^~wsd*ez#gAw}DN28L|O!!Mb)ZoNL17Z=o9 z{7UfnrP%uAT)HO3GejKybm-3?{?SdpWSmNe5A-)SiTQJNj=xoN;OrBPawuw+zngb- zPZgo_Pnb7idar`TzxdeZFBWVU{>A^!bu%@I-)B#p5BJ+;+a)c34Q{gPFYb|pAWO(r zcEg5WCyE9sqGYHD_cHoOuO$vnl!6mi)AH3s+9wl8kQ+6<_tEQ9wkf~EnY|<=xOKlm zv-`X@%l@UNNIGKxpM>)S(8r;`7C~_aXZ0L|h&*0!K4{9v@n&rMTXESisY&J+Z^w2vh z?$>N4MP;(;boKV>W=Q2NniHG&dyc~;)WFn;ugmAqvZj4^3wIplP&Zi}zveUkuR7V_ zVo{s7Td$n|4u$rR$?NLlLr#`kE}8+Opi}g!>Zk)fK6tV&MhghuD*WR=BEf-UFPpv0#ops+u zy`zqL+Ut3D9yDrs9q)V2#b$q9_*?$Yl67WJN4~zXUK}xfx?a=>9NYgQ=0Dl>e`IrJ zRHy-(*1D^o^lOS|JGjv2k4&`(1|FZ-G}5)R@p;*nFqPu-9(u|T50Mb0OWq{V(K$Ew zHW}hWnhRq{qHdKJEep0lZH_qGcU+~Jh_qhq+>Wgz*1sY=|Nbkvo7s&{eSACD3P*IX z=njp4=i!+|*ZhpyCkAy|-^(2g`i^SaZ4tw4VrIrwbH$EiPX@R6@`Eq07VUYzU0KOg zCt2BVG?A5jI7fxP)N!W+1Ut zJosv+h%F`IXrE} z_DKAPK8*;)T9$ZR6#Yt9-{C_SBrRvnL)mDe!?7*t8v+AZY{CI(gqsRcQ8^>QC{}h? zucK4bzCc(!+_7o0S%tf8%zZ&^PQ`brxB{6}7KA1-5@gn&>CR7oscNZ}i-d_}n_u@>|wYwwA7u{PE= z#b>}aHzJTO%sJk8zr7@D$Ap|w5^!Z^P>kLxA8#^(LK?a}?(W0)4)mz!JhBb%mrTWB zVmn+tGk6WA{Hn@PdsWnAz{fM3!F%>i)=ZGnx;I$@9Gk6Y0|z_}=p2Pc{J6^=Ni`q- zvs+86*=>yMjZ6twS{heL5`mes5a9y#rIr&qr$>iPK32m0jf?YCON$ZS?uFGZCxqXk z&TMz?r_hIjHybuBn})2L@!57hnoi(!vw)S1B`rMsRtNGXT%G-gO}+N)JWUJM}SwBYGD|c z*Iz>7__#LY4vw9?q2WlqLro;54c0#0nPtKS&r@!KtR=da6j9dS+%~d(Q5^wYk7_48 z4Wa-hjY5aDFGzW9GND|A0SK)X`~8Bf%m4#4d}DH;8fmjcstzE-B7h<9`VA@rb=~|O zqk;-}H zf6@90BeZS5YUr$tImaxNa5Y%+4nkKUx5$|oC@yFP|0^wh;TSba-NcXS!BgoxOSsx9 z;UK1A3mu1A@sh%5-RRB>uXOT?Px=s4&A)$I7%^j%^e|Y}9K(=TD7j03^IFZX2;V<` z`_n%UjiK{=Z^ABtJN23Y@}%!z8<+abQ+N3K3NUJ$1-sJlJbpvB77#GV5`>$D=};MZyO3ykswZvRqLvanbM z`4{8aCF0kxR)-3ny~O^*?8)s%g|gQ>Mu2dSu<6F{t3R*veBxK>R>kt$VllqNm>kh* z#DU-ku)e&0H6!`OFg29)#boV5}!qAn`b7c{_u@}TK(hiFD> z_nITL3426}=eGGbF4`2jv!DY0vwlHaP=_J_ARg93-b4;BLwDA)28y#(pM)+E5In&# z#DEBtn7`2>&&@|d9MJb4zZ@N)y9ifi#5{O;a^CF{nauLEpSmF4Ay|4CsiQPp6Dmoa zCec|t7zr+CK}kMdooYqcWPbSQxl3=$$Bf*!1zmqS&$HL6DCtq@ZwT{b!j2@U9NpGl zafcLO2o~6|Du{qS)D_KQTEMu|e>rlpL9y@Ccdk^4u+?Jt+w`kN>>>xJ*VA|8rcmR0 zqw7(_y#wO?(2*TxXc7ODg!LVP!_e=4{*o%41-JW2H(PBXeU-P}9Wmc)xl<+6+UC?!IcQ8_XwCYsJeTz zx$R?_)w)BT15!`@uPYd`Ig3Wz zH0XpcK737hx~&^dokRmk0NwHG_U!I3$mKhpj9AkEQPpr26~+Kd-x7TwF7| zYi1U*i>{ebTze$0P>2Xg8uw*pmYu9F*_#lRx}>aF#mR7-UI_HD+Cn`3cJe_O%|Wi03mOT@38iYL+ZfCL{UIZR!UA^UH|<@I%Xl3zSKS)eB#9|++r0J1(DHY0d6Sqy@8s}>;Sx82;jyr~b!wj9q;q312g7U*7(x4K^ZJHA4{2q>JtA zefNMAso!W&dL zE+8S`epDFC`%!PRF`0Ewwdr>1B#Cin1u+V$n*X)q!t#`=9uuIuQe81t{aw$au(yvD zP~OzoH09n>9BI0-Lw9fFH$KC%y_In!#?|)`0-}V+ap{YoJucwyJk2gJWNE2n*aBWD z^Hf&1vCQ)`cQ#2y>}no|#_+mteDi&VhcMjqp_jh{!Fi#d%MzhF6kfjP@6IX7_Su{9ex_(p!oSRDQS%Fwf*mh^ltVmCl*gc2Xz&w1O=A= zxUkq%HFDSSNomoi%L6aow|M>i^XrGvZG)~2-+RBi{wo#0(VkQco-I7|m$I!0VSWFY zqsFzR2XEeUPw??&6XV024Q2$Shoh!Zv(yeUYy!lOc;PE=KS9vx2wVGauT`BT#VWX>6Wpq##ugqyaIRE)?dmI z+00@@Gv-dz&7+9uWYS(|aD{DIwta^LZ^~;|C&5!qs(B3F{>mjM!b-ui^Od+=U$=)y zZL>_bI}+IVt=^@{*SnTyd-KVr(`j?kmk~Tiw1gV{qL3uZMBiF_r>Tvni1N(Y@S@u6 zf!d(Um>4jImdgoa4OH(mn$L{N;QzeFQ@x~sdFUcSd3|+MmVJ08t@G9P13_tk>VBZ> z&mf!0Rx*PQZ83r#>>nhw+*jY~Ow8l|Gjo~q5c^ZU0($Ko`QH<@jyJU1nlImOY4A8L zK!2+ro7zKRZE8&$4X}7gpMd9<>Te;btK+i)t`|LmU$u+Ps}hlk=1T4Vq{fku^>1oQSayq{t&tg6@!+)CA#EwQG7%bWG zxKW4+(74SGRwLdX7o$K=Q_K#Zxlt4+2s7kuzv48G(^{!pzsxSv2CR{^j{+uV)|2boggXnaC?%6De z5Jy8?pl!E@HT3FVs$ka^0v9xxV$91iTru*aO*m=*hs}(_XK-OI_=BiV65>@Yk$57z ztB*?hZoK}VVT(T#5&&TWPa~)r#?(jY4a4`dD6eaN(DUpX4xyiz)+E|Gai&^H1tTdeF68Ib}+&+`|rUu$SW_2N> z*ZIhkH^#x}k<}ZkReIz*BJdnhQ+eSpN9YPx+aeP_@n~NezeE6a^Yypr=yE_h#W`!F z06D0F_Ta(p(TntKv(tV$eG~;v%tvrxNcE>^j9Mu*J)m0qT`-yBi2q8>!&j*q0;gh> zIww9jr}SaB2_?&&9`?`3FZz*4C=AQH=vW zR?ZEZan_PS^~S`631dc;s4*hw1H4wA-Q+CB;s{j>p&oZd9fN}Zsk{=X=N^(Dr-Mz-=hc5@cDK60{ma!T4L+~fN0ixPX~ zbVYmo$IdX_i}5SD2V}o3>TLWqQKig&R%PXsvnh92a;lKo;-S=s?9z_uc{y6x* zF;Fu=*fg)4T7Sky7v`s$;{-ggYYZUit{TlPi4wHZu1*qHo=FF6%i=hAH)%i=X)$u+ zf0|_KVWlu?-I4R)QdPW?JyEJ!&3Vl&?uBSU;?m2uv$wmAbPt`1yJc_l_i`l8cs+Zo z@j<@YJ&D}9NrfP0^AVc66S(g5L21~i`j#H)b$M;Lldv0sj?r;<6@vtWHHP=yZzT?E z>WZDnB*Dz{0wrek)8R*Tl}1?RsdP|_VRjdvXG$+Td0F|X>Lv|=n^9j-FX$Q%J#?Ts z83sAf>zjBq6rLfPU-nAhUO9S0(0|(&d(2nO?bLfQr*mUj^^a1mZwFc1&!j^91A|Bg z9$paeCVfmSP|w!yRbOD}*RIsmRy*I(I8R86_KQTSLLPdPVp-USQYRe~fd7AAdWI_v zCT6c(x4+X!_cLGn!_!@R@b$rwGaQ#nf>sS?=ZZDHML+58qW!n_RkDAvYNacEw+?OC zY?U$%?yXu9UP(?|PbV_`J*pEHLa zWo8Y~JGmI%H$%e;M%}O2$p?#@w(s!D*tN>3h|X8lc*X3!-M@lXSj2K|yfVHt)|X-i zB1%&w|MZ#XC3ots97Yi2a?@T=s&pM)w1RKx*X0*hxN6N{oEqsmY?Dyspnmn~+}ri7 z7?rTRz^kOrdz-C~B}No3&x;5R_ZYrWmI}|B*u!XgCxX^I7*$EPZDmVE(E7y!4TrxU zD)Nt4a86;JcVsInGa~>!?RT_+_!O&YqsAC&3aAxgPH?x5dUfJ0Zfj8C{_MGpCOoy_ z=$;6nwhIF&&+Fk1)=zGO3LFq2bJ`C++&kr&g@G+1M-LFCH z#+GfH0_a@!KE>CUBWiLMLvyMPe*8Nr>#i%D)m*}*RjD=hm^dNjXPo2*%7fyBl3YaP zPn=tyxX>{lebDarV^!|LH+MD{_J7HJrdNEbGRr0KOu?;@Y}<)HM-8@3K0W<&UEur} zhvvIeP1p2Ct`->}k5XUi#rcmiw%!cSn~!5B)@@JEcf2V&_P1Mx8CXymwsM#8`hHUt z37Ay9m=>Fkww5q%NiOYg_w-v{I&k3cfyEAfR#jOT@ zjel%9X%hJ|N}`{^*!opz%+FhsayojkX@@nxKU2PO%-EpbKw&(`-Kpoy?{lP4Z6){y zNg=;(bhGVkuKPB~!;WE_S|2`lEnDf4q{-%eX^NTG_H~`@rOLiEJiHjEV$P^1Pv36$ zms>Z~ohmFo*L8E6X9Bmde9H7ZbN$Ml|MUVIMz+Rfu8#tS4iKNlzO)?PWL-$V@mya~ zlO&t_iGMDwJ^jDs=<~b3y(#cI-c+)-=ZcBx71_T9)ADrpZ8u#Qp?vWvI- zgYcb-I*t?h{Ifc2IfrFnAFLx4DX^~V;uK(?xBK~(dnctQWofx2BzpM84&yJ>FW zl3OVqJYHTJ3|#qPc4Z4a}&lc$}`lP%gTN_N$aguaO!3>ki4lCa~Wl=xZ8 zjq)Ii>C_J$Ss%Gx*VorM7fc?<65wx69U*#TPp!RO__SJ{YnsiuIu~v`WccXX#*@d< zGsl02B}6i2kdxz_SM99k-)T4a-*EY*eDcB>3@>tPy4=^+zl^QDO#ZaP!*6h(JE5zU zz1`GpW8&rfu6{>r$PHNUL@Ca55^vZr+=WeuCb|Zj#o>nLW21w@Zj3`udM*agOPc|zavHgTWg;eQ4jMwWr;6t zbd_*o=P%sRD2_9DG|hjhM{;AA0I>8C3>o=B(e0VV;6~3fo2tY2D(y^54)#AW{6<;r zTd)mS8H{H0FSfbpsi5lN;_XJ2SDO<&@^2|#x)0EDo!D)S<6P(@CxTd1I8S{Z!Xgx? ze~3(?!#o;Ppl4MYO_3uuCWBp6jN=S<9*1JI^0(Ya-R@c5HKE8W68Hr!a2#H{+B-U1 zfSa_ksXD&bK|!I?JMcaPyVuy|t{=13v*2sGA6t*F<6xh~u}V2gm4k6BHv`e^d;TVMVz`w?W@Nbd!9fxhhIO~g%I^6fmMw=ALlK*l_onK=bMFgqKU@Emp_`IDx3os3?h{~QGf zb_4toyI|vzzkE#N{yy2jhl?M5ZuMyH>m0tU9(ccQK#0~U91M=71u16H&9lyNT(@)< zgm~67T!_4;B~86TaGmV*IjCBlIC>}r%@R~d7JG@djVYFwXsW($zZ39PG^!nP-_xXCb#pKQ!1F8vnuDx;PoYdH4@AN{qJWJy%FU zG+7Kq_l90! z1;J2d325pF98Wp*B?>AilN%w-4uLo3xCS6Xv!S;)0qIal#_?@5|Feo8>GyhDU!2^ncjv#9nN;ZFm$ig&4FdEed*|Y8$CK zP1g$0(Pc0iu2=hP>g-N{A!mpiO3_{?!%{5;%cQi}!K(s}P9%W(q7jFnrBnb#q;T}# z3YXze0c6y}I>wpzAH2@=dh#K7CI!kty#WO@EdJ*ViD_`>LD4phXz#|8fg1rti9p_| zCu6I7T8@YrQ$Mf{p+idt)Tkrf?(8pnuczjGU}scMWjad3Duj8||aa zE>-v@vJr{@u8`WWSO!r(K)$X^u4xrbPVVcVmfGza)2Hif{NTB1HxXxITS3sIjw$6a z-ivOP=kr@Vku-aMP)nZ(rfPiIfh~RQPL%gQ9Cm3nc?+ds~M`3JtgV zd_rMgunD0NS$jXq7bRd?#bY}88V+-fWgWfK?z1o3MbC9!oQ(;uScbR8>=N*|K>#h) z8#0b#mGu1OY%)k}hpiOZyxPxCUyRzv&#>dyQF{=U!>IpOa4UR2o>@j_EuB2(pr7xQ zA^*Cge@T`mG>k(=k2sU{?9U4tz$x(lt>diY*=a$}I?sRf9w)&gEWk9%kCjw}ZClR! zN2_JgorL-{D#PFxK!g++y~h0@X!+$hY&`1B0-rHCRheG|t_*HyO{`4GSW^0aHf`IF1A@id~b~)iq>RPW_-nUA{gNFpD=eMxuVFjaRVc6ARP0@*S3@*3Jr*8ZUC}1|Dm>!-j5; z?|4zveQL-#rbr6E)UD2bMB~-C<@#!{y?cQ5bgR7|yLFzGf|E=V&glvC1V2wnw4Y%-rV7q=C=1e^wo9gH7MBay z=ZdujCJj^CJf}H+l;^S2%wAmfz}5lCVdB(w;HYILH4jMK_Kee4C_`fFgsC~(QjO3R zZ;ZU9<`#RiFPVk9w6eDml(K8DD>{>OPI&qItI1xnBxE;Moqn%F+-s51GyS??1q151lI)lFkttu^Ym?#X?i;U$NG(|u z!8E*#EOta?Dju^TppahZp{Cf0^a#jF9mpzr$6z291TX~hJXWKjrS!4W|;0ic-QV~qq$wkP>#m# zx{L3em5;eu!aw z-mz6IxiV>>x;k({8l=#LIVidT)wPcYMKQ4tQex*K&rzD$WPtH;I$8Zw=|bFhBUl{+ zeMAK#{UyGGN$cO+ptP>>-3u4ep^4>C*&}Zz}J3uXLmuQx&k7x8ZtP zbevstUF!Ur2IFEieLhMKN=)~@OuWmAw$tlB_HqAjmsxhi>B*f3qwLruF6W@2As_0!@#`|L-3@#ZJ1)=Qpnypty%h}||(>H7POm&GSCXA&gI zn!a0q`EgbJljnD~w-0IzdESoebzkNa4(rMjJbc~alCEDaHJ;p_e(@^JmaDb4zM%CZ zzeN2*=-~X*3V1Qp7oBC1HHFJKbv|#>dN{vFJmrnmOCMH-dW7< zR9mc{6Cp!nqU;L~R>)ZllQn^HLj2~L$@`&_ogjf z7QzFzWl*y9^%T1__5OkE`H=eK6c+11cHJM0h`QbaCiG{$>g>sOr5>ehSHZ#?#~)1x zN-|EFu?js*wv5DxkGH$XAAQTrA(1-Fs~bh7aX_b{p<2NJ!92_BQ2{6ID9y$(S1_DC zF_pBsg-#B^hq(g(+!EAE`zc8ct=dV} zbXfmYLJvs?yvU9v;M~1$%D{{w7T5qVgCKyz6U80$>Q=Ndl4VlU2OxXT}xEmvzZ z!zs=}`7KfzM)(l{ViNY4&_S->o)dC_oz6QaWdrhoTW`EF3!ptqFH$IADyh18Y8!3UKuRZOh$pg(@yQDpygBCm-u1DEtn%|iuq|e93F2f8D z$-4Cmm&iRylk8d#CWEq72Yh=SlSH%YX7EG#cer97EzGPZ2Y(+wkrjVaO@0tD;WkOW zC!g23X63hygxBi+rqFG?|GJxB@kq%eXRsSSuypl&$yhCe)A3&L!S~_jr;G=+vYwDT z<0Vgrm4_t?Trt$RI{)EJfxZYf;`mTcyI<}&wEGTUtFUR}N*4@Ee8$^GdQ@*=2GJA( zP_?ZP#zo&i_Rdh&%TokcvoF)q%f4cwAJMn#P!5?3lhgJ>?Mw$C*#!yIOaYda6o8ou zWWum2gXBofTqL(jDdRate_ar?+wjV0E0fL7RT3tnfL>t_3kn0uG4%%kxdYk^&lYA? z`n!}viNp@*Oq*=W%L1jC<_22;zJa^?swXa`9O+FI&7KHUcgQL0i5JaQCRA5H%S4|I zDG;~@h5mzNfir0N1Ua+YCXkGn%Z$_Oq1yFl(l^-=VZ9{gjr*ylxRhYtY!g~7~-|pbVr(#J@(LGlsLr07Lyl15R-a8^5elJ*CcgyAHM8~Xo zB zI`YZq(=OsWi-@(?!@?Qr!csv}P1@RXUyre7FiRJOoqmSWC(Ms_mM6yk{#^G*ImsH& zB77HAz$n1DMJdpeAtkS1g!f=WA-eZ5l77gItL`%xsX^T2P+qLQ~gi!E5~Il;r9 z?MwA~0@Ckrpf{ZUT1|k#9Lb)H_HwY!5>Y`AO3^^o)70K!P)rs~b`{F5OHq+?QZCgKa$aJJjYy$-xABD@88m zWXAcYUe?Di$KcS|*5`p`x0)G&eaO**6cz9iik7A4Bs?yp%-3!W~8#(G#IU%z^RcD^*D`FQ~fI!Hj- zY}1p=wuw{a{ypr6-rvK%_cM;$Ymh{2I+I z4d#v0EnhjssViaKv@@R`xIodEuY!l{PO{?6o=ZS|2tZV5v-HDk@nI8NWUfnUc= zou8`-T`4>tk08{IE-dZsr(Ee#4X(GxxX_D!l}i4@4h^|*7hX&4vD}U$LXK;^?r%UE{5Tyu3aFE zIa}pS-NFQxeB?P$bM9J&tS0(Qr{jmq=lC-=+duv{{>;bLjSJ`>*!FCJbmQ4`QMILb z1X%k70c?gaj{2gmn_vZsF$h}ggesv7&2Er;0?KaRMIM6C+BJ4%n|j3H7PR#O9uP2u z14%vEXdDlM@CBY+fEo>Jy;EH11Ony=GlB4_d_gb$NLnG#gmde%6MH3vp9H(*9(lHr zhf?J6(L;>+yzRK_=2dKB7{M#y!FVs*FIN8j&EZ3Ow6Sj&y0SbK17HeQ1$(= z{StrPBh?BDtsKvxKgNfE{6+;L?&8-K4~z~qSBJIiJx`r|dH*T!?U?{N)tXfey9Xc7 z+ix_CV7Z0+?-33br@4PW!o^Qo3^y%Bd=Yebxg2~Ak40Wo$~{qadffOFgh2%C{>60e zr2bg${Vhlv2ZKE{)GRUW>dJi`0u=+GHvl417{NKAVckdo72~q^fiZJO|IF0siZiW( zI)?*XXm@xfoHlMfPZ#a{Y8raCQ!LDl<=I(qM?L=uHFLN9HQY>H+RgqakM(ZWZKTc@ zO>m6@kH5EWtfdXk|CrUt{N+6xJP?6?Ey`Zq^|0!AzwS3oj`6k9#e%xDc?L$(<7V;k zU6;55U+SiX2Zy};8Z`gwi#B2N*D=ob!nxo#u2Z`Ci!|}+<(F|PEFmzv%MST!57^~O z16$(TjiMo#jK&QSf`H0l$}3)FGf~$rxNa<2L97}=q0z7s-3O1WAOav7Bcl+FMU!Q%8fQ06Z4uqkMlqjA$VioR_J(}e2UvH)9H}uM*fOya=BaItIz&iR?qkGDhMQ#gMmg&sva|d3)95Lmj02 z=dXNyw+>nVkK|Ei^>dM9KK_Fr@eIli@heOy*#}FCZcZ9{+lX`FNr*^qR8`3uR(20J zMPc}@+peQy+Gwn)s8tJ_4Hx>wD`NMK%>lg|+#D5Q!Yclc5^b=kz0IY^baaHJ1|I8W zmJT{eAvqVVPJM`OE>l#1f>uLEJ`5Nb!YI*T$r+$0@Su#N8S=m%u>+vZtz0Eltb_+Q z0CD=bGK~X6wTP|*Oqy~bj=&ol&Yl5@ z<<7vuvox2WqfBFhDv)(6EV*iUh)eGqVqRWPr3d|4Id{KifZvr@<#;}{Zj z8k_!}(s}f_%YTiAhpeJ&YvyuhjEk=9I-pK1b+WlmqL=bZg*8g<4dl55)!ZsBt&glb zI(T1gM@wi|F@?%5Q+{)~fz5~Vg#}Mn@5Rjw(tN``RydcJ&xtd%fVi8e{IigbvJj@% zyij4AF^6r4zJ#0>Nk9DA@>7D~#TK1~bn6@GYZD{K_9#~#ZR)uxb^&OCy$+`OfwdH| z{VqivSgwSeFGgNG21OkwXS;XnORTlM&d6Q4^e59`SZZO_j*-sz>GjtdlX=TLWGv2Y zzjj&Qz%R01CD&6m_x|CHPuH)isaQ#V8(lxV=_&WPMJTw65nbtcLn|mj#Rt(WC2{0d zu&ZIPLcSEW?G}?Rm}=>FV-|sx4l(1b7{N8%Vee5So)?7S_AKnkJn&y^{aKIECS6<+ zzU(2jw#A)qOXs7KsRAc2e>~7_O1L1R`O~t2&nc!&DZartmbHsc7GBVli;2~Ho2c0; zt3o?#8acrrB;KC?Z|4{O!e1tq#)4G7U1rSV*-JCvEAZS~QfZyh%Ow^l)3e+aeBJ)c z{rI_$=A7p9zB&e+npHB*ES`tH+c5M~9hO>tqLsOczU7XcwL31SzPiPhxID=*+;QXW z>EeS`Vg}I;*5|wH{cM5^FylfNDf>~pu)(CiYi46ILzw+8i%!esa-!^(R&%toy#WO0 zY*O^EcGD3~T@DJao(4{KNF7WX!Nh!{Uf(%YyJ)IlA@D*mw}gX$<5EF&<61JP>;FArZ#-DvhL)VzhRY(1!FI$qLez#;S*(rk6Q?DUIl5 zWY%F8mI01i)@W3UAWgvG$d`mk)KqeYOy~GOjvC;jbIN1L#F_T88`;JJlo@REkS2)^ z^+^_Wvj2t9+$+c+E?%Jaa3c+#2Px%zXAX^WF=3@0!El1Nv)4=Ky9rRJ!$}48k<1oL z1=uS9{U4P9WOkCrv2X%YPsYG60%DvMK%C)fK98rNu49`RqGSd?%Ebe9k)GqCllk3? zw9?2ZPS0flsiH9-1qbD>l=m{S6H_SFlb*Mt5laBI?Ds6$!?MHaJ(_fVHN$*GQcH#} z@6adXhB8B=vSqd%7H^)`-!LyIGQkgjP;2J^G=UyQ0Y9&=r@#(lRk?pp$i%<~nIr9v zkId+&qxFwCp;Rm(k+)pS;!rLil1wQn(PejGt;MzLh$2tw_*EuGVo32yvI!}^c9I=6 zSLQ+&5oT|gk5JNyDx`vM0FCW?c;sJ=+5^GqLtujJHi!Xmn+zGVHvxuni@cr408}WL zU4{f=0E}|q(Td@DjOp(Oxuh^v977Bh21~d9_gaIA1yTq+kC`G^*d-rMrSsav5TJ~D zBY#DhOVm#6z+{eRx)4U5Tao?MiJUR}6WT9FuqjL>({Vd)Qyp-#+Pf zVS!_&CM&T+^q==vJgsHiQWWs8PWl63Ukup^x(t(YaQSCSnp@oT0JWFkMrpu^P%sL& ztnFJw1r%Nc@={w7>WiV~2Totgs+EXfPZB^eOe_N_qHKt$0eYN@^B2U}D07<{s)FY* z)u!~rK_u1AH)}OD#7D$0!P9%@Vi`{(^*RahSMH(0NGphSOAL#@7#S3%?XLN{slR`r zYd2x?fTT39>`Z#c>F9J2rNPQF@_zkDi7zX0D=#xSU$~mCyI&)8S*X3{G4-5!Mlxf} zQADv!#5qm={#b z$Ln~yF(1NmEe{tpFKgxnn7nOB+b$>@K$!R=CsDzMKz(f)Hucp}Z#%#iNulCVWG)_a zYN~loNCCFniaM4^krO-&`dS&=hyk}B$grcIsr+KU^J6s6BlN!utAHX+0?yUoeY!wBCGZl4f!dqM5o@N`s85Cy z&IdeoYdyQBR@X0&!`%Z-gls~hEM?rjoOPN%Q&b&>*@ST$i-{CSqIJsqQBS3|o+7N8=6{~043r>OO^ z5n>9IcFat~RYt}zofajf81%y7L@U6k_5GU&OEXpyAV&^TH}HF__4zc!HsGyZ7#2a) z`Tq!%ZRT$o%!%NyvU?>|OBhP?_n;I0!wT26uVQ`Ql6UeU)${yy61x%ujuZ|h4Zr%1 zq-vEW)ztRCYr)1fmJE}y9ao(A%3NFV_^$DmLdHpbE|1i-%R@kK zDMA0e)Z~y&_LjI4wXZ$Ae9x0Xvx-zKmpKP05RAqTrni*L2ciiJ!K+(4!NqZ|gCV8t zK-g8 z&FZr#-mj%yERLI!`L7$#%&=@YvG;0L9XlNl(zr5dZPOpITyc0727Nbwt;4R*2}Ay7 zPVkVEf;1f=wZzhaP=)3Z4&oBC;bC*_x$VKj7n{{%1?x5r;j7{qqa!@+RMUZLojRRiaLc1X)-a z@%S$8KjtH z8km6)HLn{>*L)Dw0a62JI_s{cZe;X`d|lZ3@?%DIznsA1GM|BXuoSr`MDW{<>wkWz zb=*65g84=&GK|kf_YT{k!5zY)1Oc!PV8TG9wW$JD?u8@6A!}=4OXNYP6gB-_VSQqm z75SLWcE8c|<{`hXT8ntmdtY=0@@{I8>Tj>5&QXKvBpaq3x6h7WNjUEM^R>5aN_1=z zwShz_`uwW%+FH8Ct|@*N^^QC^$zaRtl04AwU_c=>M@McJT^H}P)Y#8XM}k;$_kY`F`sbYfp04D+x2%$p zAd@_EU!3c2#Ph}5=L2-Ty9z4$a3?u6)q|?yH*X%7O58kKY(y&bov3DFlQ(D9lN+)OOA1K%KU@*V1j4V0~MD>55XYq z{l(i;XQci<%`z!e`m0~p*byxplzyO+;87;^d+?_3?eksMntJwoC6?Q24=h;6ab

@t3Ml74p|X$7(Bb%-`1l1P|q2h=f;O0(N7kRiuF3jWey)q zY|4B4$1C#50)9f4u>J1l$B?CP&hD+nxZY3+GXX!eANR_JGVb{z6@#YVEyX54mtHnxC36=OT?}`H!kbpR9I#@_wF(0#-&?^WNtD zglY!QyB8XpLepw1t?ME?Lwv0(kNt7^Y@1TSg)HT9ZIzt52NLJ6-x%Q3oaukGZ?_D= zKQ%SA+0A28EXoc0?%zlr*4B+#VUOew?>;+c!oI}be!stu!uF99G^m2wgT_0y5g-G$2Ng<|c zT-0YyVMgl0H*V*R^Cr3<+POMYe=#rSdbytS~~SjbrIE26KuV&pMN#cQT4h~49a5QTbnsH z1=ud1q)puVS;Me> zbptGMeg6-dbCY%&6uo1Il~)*9y7^qMe0AFhmEK^IncFjStm@~DYvb>Dn4OeV3Onn> zO~xaFhgH|g10 zep#;;5Aen25U$|_))<<=KEmi?GN(WDNsCvpA$};fhah=@fUTI);JX^r`|DuOPKVQA zdGmQaVJCl2vIg@t^g{(I-?<+iSv!{0ws)UZ=zTQf<`rr#dLkagZo>*`ga4@78p^@| zcMfNA#3CHr(%Kyn)#mhnG<^v;l->XSd1f=lHuha(%^pJ5-mzwHFk>fsb`dRF=CPHe z8X}Tv2r-tBB}(s*gjDt{5v@q2UTu2o{hhx5>p$0J7_&XkdCvKq&vJk6ds?QRoVPpd zbc-U2*#PZ>XWmF_QJ9N=Yfj`A&pv)UfOD@Kz4+Eo3v#&GvLuzWruz~C(EQ6idM5mi z*>rfS4$gr}r@3CzqHb%|SJ%vgoUb@mOQakP6E03&c`WejuJM+te_mO587JsR?ednk zT`jv=t-d#9wj^2Oe!PLwy97r5h5T?%hyK)@`I_RdGeL^BrzV*Vo9u)P9Iy^34ezek z$nB=`l`gIE*(FOaU)`O!Vcny9@;zc7Vi5NDy6oMBdk>5J3EWK+vGsJ}9f11;5U~Bh z_&vr@CAUt+^Xbu}61b6@d~X`BC-C1V#3!EpveqJTUhCfy;apQ#&M5>6F#q*jJ|%4Q z8SryCO$=Y^xZPH{vlP97Zwo{9vg9UOxmxoKx?cf2zbflk^gJ*JMZ`hx3VY6f=$rp%X5Ew zr6eN1%$L0C?Om01j{chVarzuQ7Q^R8kzDkw@uUfWoi4Q|%xFutz^=Aqm zUx|L_!245ai&3@vWSIL*GpC%Xaeh@i&>`R$Q}3AVpLRF@3OlCNxuJ-Ar*gn>cVK{Kwlk3FvmyWS~r{4$T%IKGCo|~A6X>~qsar@ZH z?C@w*LMsxEWkA$_o)QiiyWHeZ3bs9e#!q+RcaLXl=ijw%j(8Z8_z3#KCV2Z-JeO^CiZ#e zzkyW;OV6jB6BYW1j&|6K=H7C5VFAz4XwUt5!_D)%{`Gm`zU9acV7s(jaQJSJ;yhFC z?diNe1B335B@MIWgJKT7qheM@Jb{lVM?7TaN2>jO`@4=i*MI*J`1k9A-6F=2d~i?N zT19iw;nid487qS?qK?*9t{+)~0XhW&VG5%YHS`XYxO zPx;mRlWSO_&F|Z99}auO*q3X$XHETNmU7y6BqcRiNIEyc^ru- zmqjF?*oe5TZ;{o|JC(YWg;<%s(zrHL_n1s^EzR7D+V=142Q(`&19F$)>WI)bvqom? z#Kj+RH8BkFa-<;@m>TA#hZM9zSP$(Tdb6ydm)AX~h1^fQ)wa#;AAk(CShNc9hb*&# z16^EToO8&K$RcJEsA&6J=8M%BPm>X}lE{2pjM{(kpl*5OvLtxl{#Hpx%KVo8nH@j2 zVSm~1UFE%bO`vr9?W@Ke%Z-^yRhm9R7gu$Q-kbch{O`A?vrUKP^n$7B<3Vq#Q-%KE zV*Z1+?m*JxY>C@MN~8aZhVQM;?#3Qn2ZvavyJW$eIO+GN0A>9}0L(uDb1$c}!styG zhNG7XF6P-zTcd8}%-hG5w+w~Hd42x(%1Z~An{1MuEtF$W-d+y!aa2u@R39?|D1$S4 zlhdT1|AG}q9ij1^=oCTGNVXVOkr4bu`wm%;H<+I^cVS-){kjGK_tOCz5!+RcmkMsZ z*4?h%L#T?Gkz`U;wY=$ehSwY_I~3%NQp- z#`mNXQ_tm{&6eI@JNPJS)Fid|IC}mc6<=GSzT*#=mH@36Z39g_*LGz_g(8LJXob;d7@+ovWKYuOl|irk#zKf(bsc{s=xwEqSq3!u4aaE)es%!=n5LOUx84 zW{Wtg7!1(M;42-@Ztn8TLxUO9D`L(=_enWnjD9z> z(xH1C>Dy!C;ENbj9ie<-qjmZ1q}? z+7}!fP(jC>L5PJB0ErT21*cS~mtL>*3kEOMuT|;+-Whkfj0SXA@@FMoR?vYLU;&1D z_E-Tt1ZwC~^q4W?PbJ?G{Xy9$8JZYZ z%1#hBk?csqSk@|I`u^E^`d^3OCwc;tV4snc*hoK*zdpbsUMs3D9oW-U_C8xfuM_2s zg5)4dVYuxdX4Rygms8d`eafH#7ynfu*2VOoh@wswme-TN&H;`a8Ru*mUn6z~8paa%rE>WE#-#|e2LSb>6p>yF^@!Wsr>BQf zt@b*$a0~$%bIa7wX&d?3?k$@)am@H*hIKy@oUT{`?14$~ER~#Bs^HVUJO5??)EJf2 zuHh&x>ZI_#lI5TOeFC#6Fz*99wthrk`60y z^UaGT@^`X}9n;H3luo!XXB*XQXZ&bDe&AWeP9e^u7)yJnc4qj!X$m=4E?YxcF? zyNbc=%2s-+B+|!Vi#uC3d^n)^`D6Asqt0VycV=U5?9lM2H1evI(=dAomsaD z&u_44W~?tR8H5uviHQ?&jESmP>YJVr`A7DFk$@C0!VB(SopZ*Lc6&%&rIg$Bj;J1R(2I`>@p0$JHZ2DozIdnG z@86NhvIfze@rHP$Vv%!DUng6lRF|`fg)TCvV1bUuWB!TmZIT;%3z< z#Kb4hfP)*@CWPKd&Gyl`hM-s{&!Pn-b=e!G27HfSUAa>(%to8W_+n8paQ7%L5n_WE z_^!-)1my%1RK)*?3{~y!q)4&Yk()%O#5m#j(XR^*urNiHejhw?{*jY$ok}Ce!9n(g z@&%JKMt0){CM>o4NVb|ym*c=A2bY2ZOt=dOb`1P=W(4c7PUKcm4`urjhNtCChNs{C zo_boxdDIgg_ue4pUUfiKQ7ec`jfxIcX9@Tl&D3e+%<8U0d>-Q!G+8wH>9N8Lr1(+| zfD<@L&XZEa0x}5%!Uh5&@RFq{#qZXj4M=^4mH~k+1UHZ2aFvcMYE(>#|XSA^8i!|AIdXUj{7ql%>a2v1>d^-)i%c_X%Cy5c2F9ft_1;2j%BydO`s6Q!bg zS$Lo{xWmwuJ|5kMkjB2YgZR*d;Wl6q0yv{OXrTLnlBfoKXr*K*Wc-#}|Ttr|G! z?81mytI9}jb)=vzlD4aU{t$jhcOQ8pwiB4(A*hvO43!bmi}Z+8fZ|t9X-Y9bjxz}U zhBnJ`i+B}(?Xq^Licj;}nosEzlrltv!K%9+D#pIQ7s?jt0gH&;m%{vZGiNTn{EY?1 zH@T&#p;2^<^((jVr(*A^wXdIebykcki7zMqg?v-cUdHGF!}!GCr?0f#xcuJ{BA6C* z(MwM>&ENRlvr#YAv9L{e{#LT0vb9%xPf7RRN@E}Gfj-O!w0a&`cb)m$?bOS2&*_Pk zzV1cbnUmiwtgN&8)EF-L? z?Z?!EE_t1&Q*8_T-KeL1IK4{f#{4|QfF7$-3fl>V^|Uy8yN$kvN<{obJRaY#bE%ZL z`t<3u?-~sr^K}QLvx>v(w_QK~fl*tj|0yF}WBHhOTYLv6W$iwn&Pyh+1oV{`3cst{ zgl@9_6Cx`(eWqh<{0~3KxGYem+TSu0A|h~_T`W>K)Rs{lU)NcoQs=wli^+fVy7=+2 zU8sOK;<4&_d?>YyfW$aCbuXNgp!yqt{|~sjp%83ZrUp!T2BT7PReU0_em|}#9iTUg zyW6S}(?!4l^Kj22P0AwvQ~p}GwiDI;YEjO_qYW2u#@a-}8(5%Fi$x_jCkJ)W!t9LC zbvJ%m>AK}iqPyk6$_2IGJoB7BH<_7RURUirdz7f){a0Bn2QrnAd^(HqvP)yX8-sQm ztG8EALDD%Xqxs?TldXR4vO-4_dkl?fxhM{IKgWl;b8DWhw=t>KO_U1Am0N3YRC2Z{ z0myNVyG8MWbYzkjkZn)i5Cp`Vcqs&RN4Q%6Yc)TEB<%Vn%1MJ-TV1DDcM&9+Q_Js9 z59SCNf?7Xo@BCIj+sSW(4Qz|G>q)6!Tjswi(8H!gsZV{<-KV3r0CSZ}3n8wjmGqXm_}797z8+?-%&(2hPxzRZ&$n-0 z6KwNz-4X9MtS@@p;(-JGzm`@6hs=_UtHdRhMyZ;Hj(FMUo7p^7E5fc@WB%2Aq41h6 znxyS);1$a$%r{WnqPqAV>Do~dcirY5ZIGjx`QOZrjdowH)DIoaVP5~{#iVHUtElMJ#IBv7`#aYbmPj{E@y8NE%#(b(>z@`o zV2*vZdSard*h})&E>K_Wp~~C`KGiwlSWxNX$|o#CHR!}B^J9b=o5{Q(%}*>Vlku8G zF{C2vZd%n?quk9wkF=93uQu-Y>JK2`Rqg4WpicsTs-~ci`~^}Xlwl^pw*u;O*J`Sx zv%#88{1JdX5ORXLU7<{ken5$wf$+h;+bcr_`WXZ(Vb_En&$Z4RHi$YJo*}Tv5t!C} zC<7|CABa;5R-#OQLi_Gaf#;rzjMSS>*L5oVd|5FuN1rKu8u`cC6Y`F5Zpn|u=>s-#WxjKPqYCX7y2k3_IR(}EYREOO(Az@&+V=#lHww4$G-CO@+v*f2w}ylwLRDW5^xGfjZL0h749=^ zKzQ`__Ly|)sqeA~<~Q7`zi>V`OQomw5i8@;UTMz2nXJeLqW)>xQg~;%=^!x!bHEDf ze>6!+J#u#2-TEdfI1~`y_L(HT4z_Af%RfxjdAgG2ctIAh1<8W7tu3BJG@88+ry|_i zL*6SR#uD~?{>YLRAb<|2@lw)5W>UPo;wkhk^rMpC4=bUB=|ZaAsSPi7nsAMHEvB~J zvBHbvnf({$PB6ks@V65u&x$+#ss8|}EX_;=Qf5bCsL!Qo!YI9nQwalCcP%A5q)9m_ z9ZHr(W7c7ow2dr+xr}={dw>kb;WyuvRXHW92P^hu=W~rV{!%v4Ay)aHN5;2=Gp5+g+)tq*x;%VGkoim%fp=-r|=^$%6|1$5ZK9O3x-dQ9Zq+s5PoUbPyn!jkaD7W zPp$kRey(9}wm7urWQ|x=e=w4Mb2$P-B`_Kb#iHGvsamZ8gNjo1KD^-K21kjUm1~QR zG;ADtkEhb35tx4}8uBRB1Sy<@ex7^1VcOF_{)P!X?@%?h2y2ti-W;QD5abA_V!h6u5;Il(V^srae%L8^X??|WWycoyMoj7uv zr%mO2rLVDT^#wnS8Q>4u^qGZVAmxp-Zp>~j~(Vy1q; zy9+CR;~Fde84eR0)0a|TePE7uw%r8= z-C||=iXA(smG5i(9peO#ofVFX0j9t=AN+p)i>dVbzrRI){DT-m;U$5Ypp}7ygKk$P3?9j<37@skrX-?-SCM;|!sf^nZX~idl&}~nYbj2er}PyHa_!6gTQ!o9&$_P+o_Lfz z#v|Ep*cbn~GrZuJ*W}vDB;1oAVt#_V&W%vEm3Laxuv7fOSZ=dXMkuH1#DMoer78A0+uCZj;D2~j_rNP8$g3HbMr zd~A?)YEg4FrP$BLcaOw;c0a~mSM-25&5G_O{S@$X_`GuwUjFxrq;!YdEsS#0{rGO% zckz7IR+T3JvoSGM{WpTT^(Hg|fpxmD1b=))VE8Tlu2B)u2FX))SgkFol26Otrv4OJ z1aK%j&!ytA>jHvHC&h9HuYRVz>5P+B&Q#TCPZB4vw6@DLvVz8zl}su zt}eh6DKDa?4(Im9-{`}Se>SgiX3iw(hM=eIZa#6q04s1ZIje*{aD5%o` zs9L4SdIDIK*YXDqf*>%H-dG9N-y2`1$?n7W`uHHdz8J0)Ai>Q%tyh-uZ6XMFKl6OR1ycTE@#w;x)(Cnek|c3`{K`bH#yBUnUJ{nmDJyrf6bnHtZ!S z7g!tZX40K^RDkJq;r;lAAp!1UISoyJ=tJcSNP+2wW@1WL9w&yUF zlmZ1+B0l#|s|oOqK)T!kZt^A;0I#EVSfH-ijl&HmT78qb=YdgC0cOECxzFiK+jGjd zalJ5*B|ugP+4;^W^<&uXI9E@GUsxBZI^m;@P@Ih?qfY+^FIZ0o=*@$1%wgYsHrztMQZ9eWiSgC@`<&&J5azq-%*m4~5lfJA1+H=*ym#?wo8bF+gqt@Qt z>diB|V9y0WkY8_&2^;p_bG#)$&8sdycOtjwj3!ndo-n^jv-lXY$e$HKE$1fd3Q*>~ z5CMzms7LqUlOaVU!s0kA-$3nk$T~(1d0`CPWdD-)l z+`crqOJt!FxtFlV9r{cwiIv^DPxsaG)J0#ubza|a5K!04J%CE82&KI>QXfYF09DDW z7VcyG+z>lv&pW{oR@(fwhk5*VY-f#tTchiAajXDPrFvwS<0p!yprDho^uQG zVAUK?B!m9jdJxbIVzA^WVL(CUss#jv3}t?R7^6w3?y`y@{+krjl7!sg0o;}xNJ`!q z86Y;L;cH9`Mr;M+0lUTLLXj#SgiFWSVZhrbm>eDtX46MeEK7&0-qRpqd_oa?06T|@ zzKaMjZTj4u<5g0eKdCB}35(mDgTL=T+NKs-TyaCzXT*2 z8*mTyTeGXlr)C};Z9K~RZG)^RXX3*TUNy>O{71$+ zb`Jk8*?EgdYMMiEvbXl1Sd8i-Uklu$&Vt$MACS4f>P?Q1bm@`?03t4W+{k)61=vvG* z4ID?vgJyQ@bqztCtc(W1_#;YgE2|6jxE$e$(es^RQ$@j$Rz-M2r7VuM{{rRsy8ORd zeRAa5gv3N7d(8I)a8y?zdu%hL5E^9m`78dbb#&*(<%=LtMylj#tl})sy7<5d4m}wD z>Kdu9%rf&ux0%FG!q z27UZXzI$|lCXQ_CL!MpMqXU75rPKMrbX_!efqJ?6uZ(lM*qsaSz4aTS9en(g5E3h4 zlC-vbg=mJ}qcG)Rl2T7jXZq^GZs#KmGCQyHs84_zpgh2f1c#ikLFr6hP_q{ry~e^T z3811LE^-s%%Q*~~e;fm-zV8hY_MSTeD4uddl8q3%;{Cz*AfkNA&O~e`<|YA5V2b;xHa9MVj+pMd2Q$&-3;B!U z>*dwQk9U9)g{UL{Vm^=YJX7Pox&@TUCC0HvBf0nzeBV?B^?@kh-*}dK0sy_&8-@F; zxdDXFCbCdNI!H+b#-|3-Lgn)`e`%euPx<3D9@y=!i4SHHPE-9Y zBQv+x@qp8Q`d?xy_Fs$!=FVPW%184hp>)H%^VqG2g!_@>`b5iC5IPmk0}0QB(#d_c3i zh>8HkA{8K($$W_=Q!^~mpMWjM*P7QqWFir~!X=9san)=F1^=p200zhnGb=6wxaY&t zFFbj;%}>fGbs1D|u6{aX;LCfh zJLL^}2@y`xaa4y^PHE6zA1MqE{G9V4Ht@>NC)K-|Dlv!gK2v$t>?k1dOEth?y8cF> zZ}6KTkS&S9wl76pim&orySrLC5!DdskbaVHK>!CBH@TWx*^pjgRE^k+BLnWs7E>$k zaRHR-5y6E!(F-yFace_PSg?tln3RE|pYkUH#=}39${{5gKRZPf#KGf{ImrZU^|}Hv zlHD9HlmJ0H0F^**o6HA`qKIczm*o*a5g=0cgRB~;CLafB8vX5y+2a?o&dqF?SNdlb1|`D!A}l)d$S4XxDK$03mxSDe3D zc5>Rqx@KGJ`W?5x2O>!6>itIMl)g;Qh08lnl@^TMVC|HZa5*7lDZ>oE zn97+QuhY)Lfpzv@h+fMXnJ^x?@bOVOxjKu@@Uw5;b&iHdOT2c$PzMs??+JBzKO`=? z_G4;TlxwESPDVq|nosZQvXkPoDHnt}D&Z(zLkc-Eiu1R(M7H_~*_wrTY0yJaq0pJH zd`vBfMz zi^QP`mqvS#^!9@n<~wv-&{F=F+F=^|3c@=X3`Ub_NEdJ0t=O6xgXYc;8WkfDWrhxo zY?o#b5`{g6e46hL+w5U-h^o_<7L|Tom)u$sU?MA6`~sVa@5SC@3Wth9W}*pJk6S~9 zbwksiDmbTh|CyMl=GG2rjUOHnfG9oJ);%A=4iqJan>xeptfsf5BF#9OKLN;IY#kEj zYccL@ShNEY7t)Y)*|E0^a_>ua0|i7&K5E=~gK z4*}Lus9FFprdsaILAp2%lAD;FI*kE}__)PBSMj(J%Bwp);=yl8jiff`Qx=Wn0(hAvhoB)|ksc|aGOu2{=nPn>IQpZFn zq}CLmCX)J+d6oNpN`eE4c!tL@qVIvjQ5&F8tr-VDJLG8?Z|ii zc!Iw76y1Ufga8MIaLk%q42tHRRVUgixi>I3T0g6bI1+&XNQU$P+w!FE)X*4CnIro% z1&bqVBsWjKbU?(+ejI0ynwguq8d)W1={O?}6?Rl(m6y#3dPQ*uV}u0Rn9+@5^pV_y zo|g2u_Ep%W#`d>_*9_DTN!)9%(4+<*M8H~bCl>HC>w`>|8GvoOO$0%#8dx#HZqHFb z4d``p{M+c_oE5Rikm( zN(}&rZAJHM7bAT`XR#aD9hgJ$z5CAMJ}mlVjV>)k>>u=cs9Qpk!GqvpaflH2#4}6J z{j#@m3yXZ5&9W-T-x12nBaIHJq9eO#RAJhLs|X$l-wF+{T?l!FvIMC$xjb*4efh@< z1Egf+M>HVI%RG?xh;P{ZS^t2LMIg$$?h>KLa8n90cRAJBV6(SGaIa!;AdEqyzM-#i~Fa;&Ek`*XT7|bYWW#UESXigt2Gsh4-|E; zs&?#ACk2~<)t_ZOKTRlTso#1PNxGqTep z>o0M4hNA8bB=?Jf;|O3<&&_NH5*AHhcJZOyzMcPu0Eg1^o`$Url@67aVQsEy5Yut@ zO<)!4ue(_4XbB(+T}EC6l+uFpara|aPznp*x)p)77(lyT^?9cr?B1u{+>ylt57g2O zusq=z!z^%?0*QEiXYTxuq}_+%a)k>v^GH1}cU_pkJaNhgP~U;aDtQo*1_<>4a3r4} zy#rLnwb#kRaHOD2#l{^&ptq;j5P&e`6E*|kelh@SI$W3Q(6Quf1+4TKAcv+j!Y`#- z^Fu~>1&oQrefAhO2iJi>{Z?#Fg)~%KmVa2F%|AF29x!pfV0OLaP2LBG6V*&xOD#w$ zPys^(xV3PJdh@eB*gi|tl-w^U1Hva*`%5a_wq6uFhbtEryKuh7XCc%2WU}m9anOpp%%X zyBJ~+d2U$p*YiYXxuh^4@h`?*dXkoW-vE$cB;laCSKROGS!}S~96q?B$Sb0YpBqQA zN|l{{_VL3OS+7-P!4ZD}Cl3y)m_GssvuU=$K&vi*0Xu#u;z#u;ONXR!xOD`qj|u=P zBRzwMmevUK!(KdqZRT2zxg)XfU=$QirN&bUG^VdFijjb3_Ib^oHLo;V1n6f|vH#n2R(} zJ-!cyu()Ji;B^Pie@N=-HG>k-LjrMhfTke07Aj1pp93{;BJ$DH|5%ovB`%lChRgbj zkk$NV35)jHTN~7*Y0C=Rqm`LHh?kdt4 zulia=$6fwrd-rbzZ*?r-+n2ldat5`-=Szn^YWxV{ znLRSa?>MZD8XTlo6oV{gu23zUM;r%^dNWo=(64wS^+|sizXf+fb`I?%G&^BTR~C#%2t-NFx~kl(BENsb=~k*>5SPN9EKK9Qd9X&hXS6DqvJ8YO`L%^=PDayL)o z-f(j+n+ChdNgZPDXMG}*PuSF{g!625e5|0)k_i`vIp)^{>M}wuwNz;Bark-&uz_eq zS-MiuP2wL}1sJP?KwDcVfZ>EggNs39m*OQUK@4t*aWEw2eDqs0s0{(-bVVvPPM|Sg z!^}5sX+8*ncKQBLb;`1|-a`yH<<$TO8^w^AFElm;W3t@{MI77+rGs}F6**WAA=^-# zS#y_wlr~@~Lyr?*{&~B+^OFxEASV{2!-_NyKy|rpa6zRYXlunxoGulm$OAMctsVU9 zA)}9m%z-p-bTq{!l2GKav#!ZJZaL=2Cdu-NFUskzmXJX>5uX@H#| zYx{0w5f)L=A(i3HoTAs85O9mE6;OxnT5ZmBX32g@~)0K;YbADc26lLwkb zo6`Ld>MCKbZdZ}ZH6!S{nz~5MVZkqP9{+1?f>gEU510RJw``eIECy=X9fF&TFT73+ zV*rwTUD^H!k-?}`hT%-zkQK<~j~k%j;dafX4Z^zv(uc5QsA{6J0w*kI2cu1=Q7gSW z@gBz2-I)D|3I5v-`f?#Y^S61zOF8EP(|Z|e-AhvsUa8!=G?VbTcUd1miEE&OYWN(; zTYGqR>B4y%3yh0L9x?y<4jFnj;o4adfW|@gPlc9&IDd8X`;WP`Sp&SXXYCzWZgI0h zd+y}B14RIhS|`1lQi=Few{7+2xDj@NHQP4^ObmrPous{Pn?|s+L3E5l%TNCkpkL{i zEz{Lz~D3tJ#twGzwSU08l_vTZTL6>NSO_ zEggnP=yd`<3z0&RQT}~4;>}Qxc%{7xf;Z;`^|Ej^kGV&!w^Al+oi!%*q=^Ct^lP@5r?^r<3S2an&il`^Z-DXNj~NkP|{x3q5G zKvqDx5I>akEud6WaqsTFqQ^ObU}2g{DuO^TCd zpA3Cc@hv1|+;mr-7u<`SxljSD(%SJ9%A^iJS7&e|UGthy zv=v$cz}C|pt%0uu*^Dq^YXaP*)DfDGh5+C~LQVrJV2QIp&VA@Z=P#(Jr^{IZ`%G7G zYj7O^3jxJH9&tm2SUP8TF5kATz$d9eM|O8Ovtgc8bMaqF!A;Dt+W*_4{9;Akp@D)f zLKte(lFrfHmv-<66K@>#cw8Z)U9QvITMI-1h!LVbOy^hc_y=w))p+p9l5#sm0{3PB zs2YKfbc+U0*vLD8qpVdpj#J(V2$qv54Y3E#Kk@5IP~D1nl}Lbb?C@>3aKIFrkO9uk zHhh2uYIx{1z3Ni9U@mpgQrFrSIu>6L_73P#cXBwrbXnGQD{io=iYtuXYZZ9;0mX{U zGZHXJfdfMQ1S0{5)H?X5KzRH-fn-ARX!xJBWR!uG%2!f2-60?fEt)`9nike3GR z!|-x3Bc)8-piV(LAEfF6x>#T#fh>?dG#AQ>Sia;nQoSDX(f_dUshC?uwHiN^YBWT1 z!|h%x$p3F659OTsx;CAOW7Q+=^XsA$I_Uy7)h;g(JFc$ixhKTX4CNDnVPMm9W!ir&V6%EQgutx|lNSm;Fa^1{JWywxCeaSBi~m9VHy3S2Zc zZE&jsR0RT{Ivfc^&i`-5$a%@be*&_XG#8s9nLqzDs!95j^FZA*)>|lm;%Oa&g9aPqKazc=HxNm%H>{AGLkH(?ND<&N9?B z;#?>b;Wj|~4X0kDo#I1{*TuJW39XTG-4q+jDSFr-&#+e-I>R{5gCoJ;Is;e^VfbExgqjsEfc~ zqB{U4I0E1}f}hLC1P&D~I)*yni-P3V)KyIMaA1*#f*hYQ>i@>)I~CCO>4LsvtdnMs z^$~Mw<;mdhL)?kNf2kYi&yNct;D1g|ST!jK1DGz|NhGji+7Oc45x_mO;0KBaX?ty4 z&tCFTv-&7;Os?M$mQ5OPKP_uR_nus|B;3jLTpOgaD4{tlK1aYJT zx02(?>Wc{4WHW|ZvVL4E*?LM(2?xw&54a{a^;ThkJDE7a-e6!-_Ojt3P>^OyACw18 z&%JzjQ7$}53r1%n^j>1);bh<{2g5tS@j#-zp?+HM{ax^%n(v(;e^rO1Y7O)O;O_rt zs!>$ZA=T~V4@GPh1d-n@4hFx;!DL}-Hi6o49(Kgivu=w6E&_)LqAro36>-CeYrOr3 zw&B_ehM6}ClU`Q@w(WSZ|CpsPRM?E_duV>q2PSghm+dPvIVr2x!MiWhv6)XzZ#VV! zgWzq1X_diCu2P}tyHCgN3U;&);{_BBG&e#cvwRC;@NkZQwzzv|=VRyUQKjT~RWd>47l`p@0AH?4|ZqQt%C10vohWIrESp79$0L zb|S6Cd%FW50Je*z)igY$#WlO@JirVV%!O~1R{O&`kF65?R6tf#0JM?%WtiOk^V4bx z%VB@geTHyybzS~5N>1?lQUdWc3IgDO8$um#z<}@KZ02}-wkB&G129Eb7=Rl4FCRd_ zcYzTcP)Du|7HLP;SL5y-F#{8Y0clkSz9`KyB<~&3t%&@Lb)S}WhHftOjeyj)cftwW zXKGvlwaYswF(8RI>cR9&7wkSMH@8rcOdrc{eB19O=JvyFtOH&?p7plmkMM1axAl)R z-#p0xf1EYee37mPsNQ`%1i+R?fO?GU?C-u(H%nEwq6|I|N&MZE{#YlTO?n#uBdp+5 zwudUTJuGDC72_;y3orwsI#%##04Nmb=BUB*tvSh#f^ih+gYg^r@)a1sJs843a_A2D znv5*yI4+M$K&3+_e7sNm6y?ubz5gsTR1<`rU`cr-L14|SZTY=CK z8Cwj90ZhkV=*LqZex&XK_GyreU4svkEV52EV91XC`zTf=-^@T>q#M4{wMC#1m#=7Rjjm5Hp62;&ao1Qo)=(4Xas;f&n*I+ zWV$JgrGRLal2LdV+YL7hH;j-7{ce!zq26dzs=-F5%57A zdk6qIM6uT8XYrz4y8Ud$y97plzqSeM_26uLUH0rZU^SWcm+QLtbQWHaCwy$DYePE` zscQ?Eb|2AC1U)seG~K3v1p%yDvhG2lK2!Fulkzs_w2?JuF~EG00f;SNvCB-Vw4DYx zFxxDzAPz7L0FLH0^NH8w@dOi0j~GLmW?CXZ`kyV~exh6{IaXR)Ie8y{$A-zq2XrI> z@)X(^wG{l~r1K7h$vrc5c*hiUX3_q}VF`Fo%pYxPYPyh3Y_I)>+dyxK1t`Y5P}`hp z=nPk=L%=lF2|KipVZI-Rog|xh>{IZ;I&oE8MCbmdWQ6{Vs{-QBgKij}hQGulq_a$? z5el#s;FI|U+bb&Gcr#>_>YkG~cX^!uX|c-D?c}GUa0JlxALEMrPYZ5Fzs1u2KgPUr zZa zW-aGQkl^zW4ry`_GKM0?@`jY*+>GKU`0s*#KR_A83N4G{97EHcC!Dr4pk}z~jz+Ur zPdZITsx6_xehhT*pzDL}2>dR+Vjpcg2*Ys`Kk6@3radNf|R%cHuqbXfV$z&EkYSxe?Nt0xujE5Pgjg7}1DW3&Q) z1EO`W^@*6O<2iI>r~0l|c1wXJ0j|x4&?xtH)j>Kn8ND~?H|Ou|93maO&I09>oESG!D6MhT-}ZWRZJ zekY*CgtyAjDaC{qL+%2NFO?H`w^2%mk_L z6u826R7$uO!^wxvC3@dlkE?x$f#uflgHc(b0wE5+D5BW&zP0aouIoeB>gvFwvjOSp zYTngNwsu1TF`h8oidJ_mn6Z37gup*)*rMKm{K%cS)mvPUn$+haDLPiY*GG52ZnDFI ztqM3-em(A&5T(%*1TU;C3QQzDwlT?9!BPNPTulU2P!2;376pF|*R;fyf~Yu#Lb_T8 zA_!{bx(jaYv?0>L-eHYAA?O1ir(LCKf$+(x=P#v0)*!>NW(s`j8Y8w%b5D(Y_@Qam ztTQS;@X$py91GU9LE>@9Psi(sfVAsXBqWLDegwucy79%YdE}~mKbDLEma|sBa4^aN zBS!C+X=Lt+T0j?rZyy<5pR^k0p2Bd@Fd-};Nz#S5hky#AxO2W!y}DrZ;!00EQHvFR z_V(+@_e0OQ{2$*(V;pwe99E=M&uZ~s;OQWy-3zUNL(0GP!3bQerE~ux4m^@`o+gF;rBx!6Wr!p z_|vRYCKL$o=4RsE`Bz}?dk6aLdmKRQu7e{H-V}I#=WA_RP#(u9CKOO>S`QnsMArC> z;Q;PZVI)Gq8l@eh0Ba$@Sn+{jlP36J3!HGX>CxFR3=0?m&+S5}@|@Z$7$jjjg0w@( zuqGWVhsd3TuX> zhj3F@xB~@3Iw`v9XW7;tzsnp7t*zN~4qDpnazIg!9`*Owuq?Jdr{TDjC=skC6-#3P zo@IXbt@QlvafF;aJ)S;!``SKQwhe@RH(mFuKp_~tGq-c(@34S6uA~*L6bl+bUrZXx=S}H0Rhy>r17qe z2zNjOZQsTF&Ww0LJ=;Af6s#++ro1ZzlCO%fJy_=Xr*}PC-+3@MfR6H6N&VDbsPI^f zILKv!Xi_Lt-GXrSm!J7fApkv-dMIzG{dFxiEPRI9K<6AB)aerth3F+LS;IF&cb?d4 z2LTuym>UJ1=b9`qCkuXZ6=Ayj04fN{BXBE6*F#1z@2Uvw&3Aj>{@gj4^RHH9FV5sj z{mO;sfo3&0@i5E8bO+xZ(VT=8qfd5*Cq~XTk{=06ZdU2i)48JoT~}aahee6tMA(?k zLDcHwxO|Nx7FZABxYjDBOM-M;T^uLE!uH}5-K<8<>dY#3pxVlI?b8W((KoIu@`2F>a#+%QBuqO>Z;QpysxOI8g>HV7;s2 z;aCemwWUDWEhKn;3vGak$p&fpLwKnVMqx@0Da8VL*g^T$gSzL2W~{y(5|4eh*F<=7 zoNit+?6@a214+*#PjmWr*G9=#QaXGl6;1DVC&}w5o*J%Ht1R*Vai>VN7H5$Q!GK~L zKM)63ulzi-W%%ad{O*bd3{qA@D?#WxcZY1Ch?;>mENgrQAwe_Uo{ zDIjFW()klktnJX_0Q#uo6QM1zd^=#L-Kv<6OAi(>Km2)fJwCuo6N$POQ+XY)vf)ry zTxj-@n+O7Sxr%=pdyiwoL2B}Fkp;NnNQMSIuHFwSP0oIoGCjD{wC6yk^DojM{qVl53)>zpt8Tq8EP)53d2cQe zRBO9sV>xC~etLThx1sR8U%+$ye;~hKi%|f*nUn+yP2m|Bmo94v(BVjIh-x@4*?0ig zS|)|E;5thvOodRQV4i7RVsssXZ`XC`nm9O2l|fC-rT_Ph1?w_D4=QwPtl_s|m!O0A z#CZ%zyN;yUVf2AIVz}C*JJnbkD>MJP*Q5Nq`>H~POa=8+=*t!N4>O;5=zRf}O8#@` z!(8^5{j~j!ixqc`(3+dWtQ5ywFjyrF=rGO&LXY_G-e?fM+y4Bh`@{9A9?Pcv=Ha4F zOPf6&gg%a)YCEcV@F_v^Y0!_zTLE>KB2&EWjiI^(?@#-L^dZs&4=HTVwTL%@;9b}U z*=vpOuv}l(pE&1cWo>8$moKsQhwZQf?{o=c6$28?k5B)%vgIwy=q(;=v|~b1@Q?4p z^tBKv>%;N!s#aQ%DrD!d8AZr7zy$_{u&9C>TYMv42OiEe*kgcs&8#HgUWe~yvIFAB z92#&f&yRw1gnn&7lqdr4i)&Ko0Gk>Ea9|5?1z-=%;-7+E+#cZl_WRc~x3^1wBI8*h z+9w;ES2m=GM)iF7r+d5Vk7xB;4%KfEUcBz9-d@{19Nu(vrlDHn>F(xZb_T06&$*+O zSU3#%{r!)=Q%^3A{tLDiz=)*w7Wt!B8#2Ot@Zb+YhB%Ds-bB%6Md-}$2 z74My*hR#Gv>BGi=nlC*I$DE8h1#bhP9jtDF2jTxvXLKZI3#0V}6Rll_XuhsDwPi2< zO_$RViENMyGp#9EdMdvKK|E#mj)!1#LqQc&^Atf{g(T1q;iHmTO|^M2{W6vG$b@|y zM;_XK{aGy2p(O*f?DIKjwSAjKy7h3q>C3gzXtB*pl~xz`Hte-(-gf(c`?q;_&9WqK z#G?|jhC@!3nSyDl^dbor6>Y&XnG6Od_td1#6&W^JsH~{vKs;TAJT2S{TR=B58*2r< zU6M*^mS-8VM$Zm>5f?fKaOgor9Ci}=^s;EjP^M_Y|i37n>dMvsS)AD>%%y;7Rv^$p-sw0&? zhdFHJs@B-$HR#^6&!4C+D>1A!{c7l%bFhU z5M9P0l(dca$##PNR`h;p?qN}7HGQK(OVDQ4$k;qCw22ce&?o{*8b(YoJM{qr`cL{4 zXfIk_^88m@;&z+6@Wo6Kz3Mq;M|YC;5>+Xg(&J^Grf`vHffQ~GV^l^D6NaG!61}|v zDKix(%h9^kSvZ|PQET17=} zv>YybJabr%c@Nw3#?Ce-CZm<{X+*u)SLKM!`S3iJO7rmsPZ7j)@xJ%(JxzyUYU_dE zac76UHKd-U({Cp-v~OM+*xZXl6f%XW z?&peP8t`sMT*_Og5Pj2os0tA57ZkFq$||X6k{dFSm^=|xjs z<$vsp?if$zt%NmyA28Wed)l&hWdj(}jQ+*{u5stBV!ho$}iA#n=V0I_W>%6HnA@#OmGj=DzY3Y-&WGM_>FM6?OT+U+`x(%?fJ)E!s0$#%R+YJu9F)LR$}GgT$uy=jtViPsHW$P z+C2y+dlO|R_P}!g50|&MQ4{7u zJ3kp7mfI26mgmw;E4P&ZcW{xeShl$;@#B{{OyxVr*Ak;=gFX3Ur;f3_{x+5EH?lZ{ zdMkvEc>Vj*bIWYK;hSL^VR*A;OLs)Tbq|LG3|S!lNwwsz9fdlUu@rv~Ko!4%59I=r zH{^Xa6V=MIhf_6>*gjbt0nGrR$5f3@vXfNqgqPD8n~6mu8JI!TFC! zphN6}c7x(oB$2}sq=2?bE>a&M0Cc!=91PK>JbFheXZ^bzV6asw*8FW{|7^H~m3Cn& zH`{(QmILy5^c_k-Ac8ykI@cDfg6-H_Df#Y~?~<%u-h~qHfGF)I;>9#B_jT3+SrdWTIY*O%Ko?a|E-@91$Bd@>{+pjFG=_Q> z07M@4z=M6Q-s%qJkNeeD2bT!=_Dfb+^_Y7JJ37S}fYyc|X}IHNi}M;$c!p#@M}9Hv z*fR<3tM16rw~t#E}DxZll;xZQnh{oZr0 z)idyveE+M7(jLNj1f`0VXLUaXh`7fRJ;H;org0~Iui`orYR`4yQnpER+QNu}1nb$$ zs(u>R62%IoW`%l(J(M`nVK$;qXb}-G_9v)e1t^S>VF_Na3v*S4goq6QhA29l-GAt$@yLQeo#&W}wTEz>`!70Hr&AuG6;e`pl)}|O& zKRr`ARta~Qts0k zGMLW9qq)3!Ig}|#F=L@n3NMoCp9(90YCFZ6jS+yKf+61tSQtc`!?c6PAcBrZ;Q&M_ zz_n0jf8G~ZgOXH zX(_qi#BVB5&1+l9sY36Yb)566Kt@O5%Yj!Tukp4HVljwI<-QF{+aB|604PXXmtde& z2pIt5{O^;MP2N`F4AC5v+>PAa$=tt}pUCv2mZqI8#@{0kyYpY*nA0(O$NC(aIF5Nq zup!*Lb4=FbjW0AM7ZtDUCP5iEk_x-34obwIyZ3&y8^k}>(j6A+>AvSuDFc_w;7z`H zi(;wuAuwzX$eZB?Fpao=&;tU?H~{84Ay##kf&MrAI}G?C&AM9?iOrke+U~YlS7kIO)t``fMbp2c11;1mW zRJius%TdB1q7$42iLLw%#$h{7swp>JeAb961GcrANqwb zOLh@vypkdO1!>&tIsY(!+;kK&L%dVAK4n~8YCe5A5!)VP&FVQg*Yh?)`a*%}>MdKW zIo>(0{`V>C-zNz$Y_vLj!%GH3q$?~(Dn6}mqc-DQOoSPC3QZOTN0EM<1Cfo@kKr>O zqBRiYVLc;T2UwdDIK$GA5S$R+qmvIIz&aFi)MOh80E>hrELbQ`ZY2P8?R5(LgkB2u z513I@FoV-|(%`OhJkZC}&j6GtK|>V7zp3qot3|A?RawEt<*4+`7v|S14SMdYlo+xJw_u;~1&^<$HT5{<%H$;ao7L zN?7i~JQ`=4;nqf%Sh&{7YQ_(GAe?(iH5893GZiBZcvCI?yo_wjaG&RyMc)t8(aMO3 z<%;#Q=;VoknFxgz`9VS`zNAa*pyPsQ>#aYBcRbv-8OzYy+y0zb4}eVZ1-Yf|uRl$T zO^+hRO&tN7T|mP>PU@72G7`+EZv*xb{yg0STnLGxQGivRo(m6(V8ZifLmuyQ;wwS8 zMP(pVq;G(c7r?MJg~w|`WL_w7!GKp^s|V1ud+;c7|0ysEgIjTk8lspHr)JSvrJ33$ zf3do3Hqh2qE2L1oSB!yegSjWH(nt5&&&np6_5jYPn#V!DQe<)Y-+_slK+&Dl z2P${<5#Ss9@buNUcKgZ-B8vVZN>@X`^E790jO^t z0^BcIz>gV5m5%nY8#-F5OZCi=pn?C9%41sghMsNIT)(q+w0dZ0Si1_Luz&wP-n4!@ z5Eig6lU|WCSs@W?yPvTw@bD?t=wZS0Z+2a;4gm3%Fkx8*&@L>LC(EnWxG!2$Gj2@ufs?W z(+DSG6#)$^qz)cWUOG2Ye2Ey~Ae}N@X1>%X*qF1$o)s>F6;D9mVBjA#JtF6gaM4`@ z)e_b@bnjVh^j57SUgrS+C*xga+o&X1b|6(t{yywNPkQn{(-Z8UG!Tyk^qlGz=u~Dm z7(d}%r&3kaG@_8_HG^nI9E>G^sW2#)@ULZtr`gS6S9pE!OKnr00e<$4GMbD{E z%V2&7W{UvYxmkcmt28G#Ki4TnrwJ@#4OKQpAKp2qTl5Oq5J`I|tY9$ZTE5l+#+u zbxeB3tbOq#WfRC+3*%Z_%;y0!lQlq)RXjWjra;|BeQ7Rar)_}kd6j13Bzq{~usxeg zhflVvz6EYA+x>A&>;k0~>PA+}JBoHVJU{&!B$hGEi#$CDGn?>R6j>|yv2zZTLueF0 z8Dt0!7`+w=z^Ut4Sb_lm6OPuUA-B@A_I`JG>Jo2ay`n=Yi3rax*d+CSOdB2^RxbGm z%_vEP)`6$3=1ajQ`yF%}2h0%;U$q>zMJoCZ3uCKQsy?BX7-qUtY1#ODR^7e}pr8=m z&n8MBDwr1AgylT$!N}0Lw|$Mj1_EmGM_+GvX&50?$%=9T_hW}WU~u~#?-R;QIcxx6 zIlcW~wN_0-;Ap*BM5yP$hdh~Hd1+)>hORw2c*Dc}$H{+xVuX{2;@9=rQ5@FqgA0Ou zJud`M4!x$MDAdIR@k9W-(HkW=OVr8oP7Bi7tbrjMJC)YYAKSRXu#h%SP}R#P>iTNdjBJ0%dHJ_W>E2f++Z}&SxbZM6s@FQuS)kdWPPMo!K0c z3M)^eMc$)nz*nWI!#KnV{{?%rp%m7o{FegeW;pCIG>3|&1F{$wlMk4} zxSx2eP8OX^#~jk*R}>e{7&U8m^XmP57GnYRfdjIDkiL-Kc9V8v@dctJAa27Y=-5RK5ZIdWGBmv+v0F^ALe=T^rnc;{A8_YLJ>MWiPq;Fp%1zf0u|r)UcG;&ZIq89C+(ZyXrv)W_ilkSfjK)sZ)|`XO2N58 zRvMm=+o8zB3BsLmmDLm!#oNNX1}9O0u-j8 z;5ZF+lEypHXoZuxD34%pG8q_+^#WRt-~pgZ{HH?)_`x*43Owe(#og#Z z1l&Nt-SEAT^Xg}x0SeSa-99vA_fVnf)yAfMT`E;}?wy|W@NKiAT;jXg@|qhLqtZe|o(e}obFTb75u zow2rlQ4?Sc=v#)I3qd=x-nGQO!lX{`0>T4J0PjkY2kvFd7hs7I)LNAj%DW*kU_Bia zfptlhMBeoj;YtDs#@KjhAsw}NztYiv4i+{7dY3OkLs;`eas4V+Musx<=J2&)Uskjn zGh01hxH^RWxk|4^Jm4x8$eN)10Oc~+VF_n4%ag^0$Q#;4gHJD{;vR?^eFCT2E(wyV zGd3sx4{FeILkesneCpU1cIbMsNwO($)`eY_$&63n+1uw6nSJ`Zs(AMR#c*f%XIPyJ z@gKLPhYD1>c$D*dGwd=i-&Ajk58~{j+H6#uy_7qYCKd>3ex%hrWtL?F@Kk@IEwu zir}3k548hwI+lk&A!#m||M#`KH{c=q5gHFEfa)Mnf-l=Z<9eUxIQLJH0FutR0vSY^2&jwRp_i=QthO-z(=Bvu1S!fkGLgygnHGeAPk{vFwCpSXgWPuGZ~*U zEP*4ASzvA5QfQ84+oU$MOAP75ljs=ZJm-z+)p_Xg>kj#B?JaC2s(su?Qb>MkD*y z{j_q6^syAc{J!RsIa$3fI=iWS$i+*A?UXA*@g?b(B_?{Qc&~o~^QI9Bb3uI%lb_c9rM5EJccjOIr-J_ik*f4M~zd#pg#ZT?b7x7QA|N(p1d=f=Gwnz3bi=n$Nz2jl zW=U@LmoS8HH8L$|iv*b){*CBWs;5bSRRe9n%|i%cVL;BPBaO+#bzSM$QYd)|IBX~kJfhqsynDgh#uk$>qn1ssxcH0UTQ7_jA0Zb(UNlT zS*DXg=YDy6Q52>@A5L%4$MX}z@A*r>*3iyu0h2hO%9=B6KiB%@e-Ap5;aF4sSe-ev zBvCO^TPwf;4LDlr zI2-B>5Z8g>9#!TMgAP}E!9`BIJy=)y|86%}YxeS>kx|2bc0vQ49)k=6D5M z#C2=UuA{Frm{M@sDa-2pwtmssi$&>Sd&Wi=X@X*mc?sqJ%D*WeKLp4R-&^ko5r}+o z@!icYy^i;p++n;5K2^Wfg6VppTsE-1)vGd@zzMbGknq6bVG4;0Ul?~8UYWv87&ZQy zo${rRMQYS$_V!m}sG9s-)cNrTV_O-9k_D*&vHli1I<@utR|X>O?G#Ewn&p5fCPCe% zXc1KzY$R<;(8RXCq>tp93<5*$=iC}L;*iiza^XEKEQ1@t3&G`BDr$DnUj(*6wko@M zkYOEC0el+9psq>|kTj4$EFOh~x%TF~-?cPI!mX?i1ROtM>8v2sq|ujPdC?gG7=DWN zQiMwg4C@BkgUj3hq?F`MU;UxpxouO$&VcHn4U>N7nUIbDfv54mGA8qxi)tlcy@19Y zh_6qzMQ*=&H`>(PNoS0P*n2SGl2!*(byE_NI?r;4x|Q<32j}We^NfbgS-1gA=Xy9w zdK2M_OxJ5qk!_SJjHR+t(Wy@19l{M5jxQfK&dE387{XZ}_M_-&;V9x%oGC-~BE8!s zwm$vCR!q3R{*<$?AWl?M>D=$V+NjF%kI*W^9`VUyMk5BV`3|pACj5;3{27m1HhUn&T@~W&IyByeVrC-vJZkD!hjUwJMy9dia#^k6BA; zq!Hi_XEWR|?z&SHo4PYXUf+9&QNi22dn+^bf?Vv^F^B{LFX6P%r-;EG#C^H;Lo)m+1Kbh zTbNJyqKI65ele%wY8@fP4T=1I(glgXZi=m@_$XA=ie(1Itm%Vb`d$YFKkCbusa@%j zP!4Y{`KPk5iI$B$2krywWVj)=8Nm#g&hpV5Z`!HXj1|c1nVj59xO~y~TTHRabC*hrHBZLkPiBf; z#0msspOeuS?r1M6Sv_<(LL+nYdZyvBvrLYwirE_uEnPEdNK#G$z=1vLm0-bT4I(YZ zHd%(~>O&rMKugqM{TYyMrU42S9;)P#k4PELSNF&!zZ8rOM-PLxwrzaG$d2B!Mv9ka2L`%B;f#n0yFKRyDCqq zFdvs8vM#EyO$P7pK9)-ugSP>?!YS2y|KXp7uq4A&4{9FnF_H8v9@zh-3O6{I{n^ne3ir?`C|@`6%mLoR!+JU>XMTyWQ>wEM zBo(^L75*54#$X-IHdOy%m$Vuo6P-hk@e~cy^K?J1T91N(r@rZzV$p3REhSF!ddKt zUodO|@79J>*DzUv5PESp83HXwmmnS)IDTeuTMPN&Q?{Kg?>eho4>gCA6icq%}#iTCZxA|VE5PN)O{x6Ab0SLAowXL`{3H;S|`b;JRcFh$zl$CpLV@?u69N)LPw`)lN78?o-nEH`I4fWiETu*9`U;((?U0t=_l|?3?W*h zvaQKgYzm?Kyza4CHxOttdsLDiaAvOH0o&g6KaJhjNbBb@6pSQY<{#&Y+f5j#f%M*Zcsv)hCCi1S>CyV*r1VgdP^CfPJyyORJf%Zl0^%BzVat@QTNczeRq; zK^S}1-lKUC3KEeX|8EwifL8Fr$+IO=5ZoDSIoc|gmYo?e34A^j8_5sJnERo-Xn9o!e5Gr!ucZZJ{2Pk4fM3*g@~+$@^V?V?kWP zZ(wXJsi(S``ryvxO?!JCD;LM_M7HeMj_z|iY0=C>IQ#4S0 zf{=+HLP*y!PtJy2eKU#u?u6n#X^d345}e;4yg|@;-;j%mgq0UJ<>dydNvrqw{XVy2 zMEKuG>kt>Jf89;pXNY0jHmkO$<6<38ah!a=PTdp<^>`3BAiZzL-+jhY|7?3V89}MY zFwtcl{+zU9HQ;Jm*w-NipEyBT^`}oet2>QCZ+G`cCZ!jpY$8{mD#y$&pVGf^m+%)T zt~J%^Cxy`yWpihu4yh(-($SK<4dJFZ6V15_yka^*E;{EpvZ#H|h%w~J=hmhCz2Sjm zCEwz7&C4T=M`)g)Y-!(RE7_Q-->g|_gujs`pTF!_Wy#rjx16}}kX&nhSu7@{^b*p4 z@;w~9cI{$YtVIGU%&>YO&PGY%v!LnTXqnlfXYGd=Q>EG<6_}3+)ass2sdpaFcQHZ* zC*@-4fVu2hn-Dp9?#deR(e6;RdoKKjnCPA-x@X;A zGWh!E(??@2D`7d~v!tem9|u``1}S+ZW|CDIkpbYQ;MU9x*#NhziOTOs90Qb0I^1?y zkAC>u{Oa?oH^I8Xd^O|WeQV9qjtK}&4mL{(_Y4 zHqP?MB@lX^f6!J?i*c#27p^G(ZUJa5{vAYmo#L(@{5N4HG3y#q%lfxZ72K^ihj{4o zQEX+2uSN+9Js#k`QdmA!D=jN->Dq}}B|JGgi$T|`tpHVvqBzLS#@0G=Q4qiZ{K(~! zZ`Fp|&!uu~^T(U=>mIt(8PzKRLKTGw#QF=0{5tVrzjv>-BO7ctU$FlWc`m4Mu9f1)dM3D)Z9>G&7mBReqgcJe1@x;ENppzI(l<$9?b3_^1{}n- za1@CEV2Jx^zsY?>kiR|bL>UI`hhaQmYbrX;av^acSjGtHKoD3fY6=jFQx+XMiF44* zQiTDY!vh%_Refd%L*ePDJo|DamIUOXA3#ACumH)1P%Rk|rwCA}7l1J0+ilQhusw_4 zT3_aUyyS?tREnuPG_%dYH@nrdZ_B9t`$B*ZkKY-!mayVv1x-xtAYAVjqHB@iNjyXJY_ z4>{Ws@_gwFsfjFF$EnuqfE!T5D|t0)`Vt1Z_w}?jRf1PIP&-AWEIx%@j!nvQiy;}- z#nHzYdN;JE6u14)F<|P%X$*ZQr{wY+28>^WE7+-@Dn`Q*InsjL^nfgyg+*i#!!CTp zaFMeFu2%iRq^bMXaU$ox5tS>mO__NrFIh0qiR;zcZm3wHw=1F3^-YH52ThD>Q%Hot z>EtI31=Iu~)cxR*RMUj(&V~Jwl3I#|WAD7=3G)vhWO`_oFhb4QZ@+q(A*_#GHGM%& z()7J~7BbAY;og&t8RCt`_X*tq3pDPbTNSWUTs_=2_fd>FQJ+GoD$@Af;+OBh(&#=X zC=6WVCDhr#kmDh<_SnLbh%L)NX)3VMt89xNZbf4K` zg1n`8!bL}i3FrY0*mO2zq87uBs!HYooaNRwQPcyOiaqJP4SBwq&i|b7Jr*gE1<67x z4tz49tDyk4Gkwhhe_lCEH}Cm9W_CU-@d{z9*GN$|Ad)JI);Q-m4?p z3LS3qmn~s?R`qV;SoF$!>8|kud|evyGc8Lt}ipRrZ}bxUs=Vg*BR+3Qz6)Ci8ElhPMpu z>p;VV^0B9fO%u9RelcQ;yJif|%8;nX0)PKWbf-m%P4mG8JI*iOeTZKTK0kKygMVOg zNO^%q)^^|D-WBQ^!P_J{rK_Fh#@u!}ejh#1b@kZ$sgSedmJRdsrvK|O2DW~?9&;R? zZs8c8y!_(&6GeX(HSta5V(&%M{SJhq+il9l&dmiJ9(q2bQ+}-UmTz^Hil$GTkJcX*{ zWu>-PN}Tui>8&$Mj^+|Zu}?o5E;c-nB_%st72X{6I^22k18bMd;n^3@X<+AzpOL2n z&rVh4ygKi?F2Xg9D{#Kv^}2cl_dU(Dr_=g+TAs@NjpUVJaY$O9;1G$RNV8Xr>r=a| zZ#MpKr0GJZfCl+)P4Ak4)gH&e?TgF=(cM>AzyNq3Xxx6TEmpE(7AJPr^yK@Lm2Yl* zU)%!XzU5ipc6MbgKNUD~Bzx1|I`Wr);{*oSch{Evmj!u^MdOoP3RJbFHgZfxe@UWG z2V|BuzaE+78!EKUpNu%q|Eic$uk*{zB|OM$pmlO4B_M)v$jc$}lsJ4p2a3dYP8GdQ zet5dcF~dHzZD-TKmOp#6BY1cU%v_Jzk711FgMBf5&PboYYlsz%XYbH1>`p3`pfE)gAA5fD#i|<9LtUb3GMdC z5{12UJv`4{tg`W1I{Nf+r=gSOo~%?p#k0TsX7gSvFowPn{Pb*dwsI;)54fC`5&Lrf z)!&M@t4~hCXb@|LU+tN9W)nluIW$jwY1w<*uH|esy4}zoC_~)+0G%t+vvzXLgw4Q3 z106PzbJcp)VNC%JEhu4raq3xic}h{W4u97EtB-Y=@x}663`KD-wJez%J0t#MKq`{R z)={;xkdl4>LI5;vcdzpT;u0gaj`5cn7i!k`o~_bhVPwd$dk2q$`>o$jo`3h`ckA+xr*=KbYzPc13Z~Xvw7+#$^1kRWndHh9G`+fQ>=m#&@C#`SM-(bwC5r?-apjQA0 zDG+%WmXKepu;`%aDD0n&rGviukGn?bFKuLFrt(#ByS8rxM}p6;jOPppI|etX$?SGc2D2z8LIf6t*i zthU<~PK|1|^uMZmv8Dq?3G(-4fuN_uS^y^w;sXg9O#4Z*U(+n1bA3D)R$UX=?1R=X zh(dS0D1Iw2RU`T(GqGS*q=d0+2TXQSEAwzL65x_e0Mf@c+}ZSjoxqy=P$4jSAmQ*g z6K2xE?|VjL%?Py^K$GT8E)_WX<^h9{iZf7c2oQU`801{72PK2g+(XDDHx_pWF2h0E zv~*WX1&zMT3f}hM)RQdRqw4E5&93!a{r5@Fn{w(n>dcmfUa$lsdS4DGDh~qWji9n7 zg9b$6j)qKZt7LuKe7ZrLJy-kCUsYfMmKmlgZ=KYBnp2S|>S~S9uSJ#>8jpOg+pCC;AwVIS*oa+R>Si{m!Bw-Y02!S~(>gQK6u5MfSaW}A%;MK}gOHn5J4YKp3=GY*+&4#jfirNvbUu$I zZkibINBh@w>wMc|d~&q*cn@{xUa?W3e21-}Y?sLhI^ov5Abo*+7ATgunwGI#9Bk<~ zjWf4kRZGAnwp)9uv0-C!`c6H~w&C2@m&cQbI*- zY9z{h$y^f+WhU1Yh#UtN{JoeomK5R`2{279n(SPJxgX(f9$!#vM3@cxgBx^r5sqTHPb~JG3a-{lQ`)b_Z}ixMlc2$9LTyKaiQ@)h>Mc`?F7CLhtIhJqmr|V7D&_ z@%jFl#L3OLR{hbb!(!l@@~5@sPZgEpVWTkT=pB&y`WK6K?dH$tZF@uWsj4UXIvXt% zjgQ{;s-og5<~3LAC3F7Gq@6OYE9*(wSU!HVzJ2u>|4;DC+A!#WBwt{ydYHn+!I$iXnF!mpyyzc>s>(c>+7G}l69=OA2Q{fiF=POGMx6xJ4HPSe#VSktPZ2a>0ukEvHuZ^wl{7){~qRRF|7{F6pxIQySXxW&xC0bzz z5=s%2O4{YxBQePzH1&&9I)(XB_(>Pno=QaS4Ptb#1dQNKy(<_pq0N;EmuDkb;HP;f zVEr#;XlgY&RBV1hFa{9mc9fcgjzkIM1~=ade~9p+^P+ zieolE)>5hLbi4j-1)qO6H4{8Qeah5Hu;4!GYv+TzbiId@*70{vZy$axh zmGTb`g#MszQslS2kosVv^G$IREr0#R%78W^SmirNx7~{8fI($*bPL_v{y5g9uVy&f zfORrDovQt+`eU8=~2mL$PPy#t$(ythuKyZFYK|f z&BI>37Fb3hp(g}G<6M7Oe~scBSs3|&P8@9O8xBD`Vbr4@Mo4SDEtoLOZuNMA4U_z=P+ie^sjzNkL1oPDbf*CfFI75_N|Fb$|pqC?)sm?man-x#rfsJH|0cN zC6W&S;K)&s@p_dT9S%196!}V9vYe`GD{p_1)3DdZr@L+t9R&oSHHov4{ z50<*yETY%O(mhE)Fjk87wzp3Hbmk(Fo)X_Q*#gK(bH>7@~BS z8U%>1kM7q#q{GrNIfNs2kHfBwsC%amAQt@!(K6KokFB69TxYBU;{-@2`f$;+3}@eW z@anx=yOrdm@%Ncy3xs7Q9Svxst**(V%H4cmv2?5J{sf;JAD{J<8Xbdq#1H_vK^3k) zpjIxc%dNrGx-317@lgTE+5{i^eqZ@&ts`&;Xcf)@K@s4cWeH;>z#K;TiCjLpBBGk} zHe%R>QGzQ-r&V6ZaE-wIJD~_TMWBNfaAxh&umKKhIH`E(|2R7HXsEyckKgxf#u$u! z*I2U~LMVO48bV`VLStV-5-Ke-*6i66(O8ltvV@2lMOj*8%bs>?D{1d{zrX%)P8{RB z=e*~>?|r_WkLR=Z^qyU0Cer?JE}Ix(sM}oH`)q$h-x*@lb=g$^3`W~byluYV{(eeB z+nblAuP*Q29teNo#5$Hfe>u&#&MiUy z;t2);OURj%Zp1|_VLXuJR8B&s2H{7-9L=t(*}=7)?qmg1EviH?>6TlTN8wZxg2u~L zM(4%p*5M~hJxY2NSh+$4W@Pf6)k&CY1T z=PO3%yDJn%R3)RdgY{%9LoGNZntu)TeP-?=uSuJ;`){b0M`(s3am=hTIj9cUQ2gPo9mDy4}LMegljOp3B` z+d!JQuSP))?RCX6CTmdhyJwB!f7vVzbLAgv&QYb5ljncT{yT2UKzI2E@;n--A9mJ~ zTFsCh8rq{0y1nn3qn4Y@zk+A3JU18>jd`-fafZdwTu zcI@L4Z8a{CC(bz!g5Bk9tfP{}cIB`m15jcbsmip_8)TV#&xlU#<0ljQT(BEC_SndIPRtoD%7%Oif*s7{1p40{*TABL_xtcY zDWT%lSY3tNOMZI~cd28_rkONr_F^{&lg(^@tpl9c=-kUq@@MpV3?9RR_TX}?R}E}5b(o@MnFZ^3SZ+_A6$fu%MjlX*keC-NG?` z1?Xv?=@>?ipR}-Eufg4{2B;?8AXO&3ucd!`)ySO^EAf%D-!=2+$?K8~3Tz%uI-=;R zEG*E8Sbp(x7U=z%ixX8CS@wK1K&X?gjw*3_YQ-?>Kbm;R^U!?~!=~iOHQLs$-(6Ap-)TjkZzxv8vDBT3654D#0`h4_=MiZjX`0@jW|h;dA-0-G zz56e02hln^T^~9-Xg3e}seDW1J4+G;1;UES!sAc_SM~5!hGlJNoJ@ z>y`lh7yV!_34bX5Q*B6}lKg%w@l8E7(TFBwbL7pCM=dV_0bC5YquG~TB}OCq*Gdij z(RlA2LD6xl&06$51S2r$Xf;2x(?|18jcHl54H*chwfHtR#&AZsm}m)&oH7_qAoAFC zMXm}hfB90_*)-?z{+3Dh6uA+zfaco$L*?>cQ+vGsAf|gtaSGtXP#4V~UYJ;Y;F;Mn z^H3T4RCRxId<7%aoR35+J0}7}Ne#`o=CNxR^a)UE?Ro^sDk~R*F%+O?Egr!M0;=pJ zg^2`jc3?xK1ex`An9={w^CLMc6Gf@QH-s_M?1TiT*|)<^K(=JDK7nfKiUv1rcVd}0 zRih;ofZFW^2iQOL6(IGt`$4S%U>YK9gfW3;e}hpLn-{=y(GnCaY2)&~SS98~TQ0R( zY=60N!s}^ZRc3;GTdh&oRU+KsrDi>09ZzlXb#adOc$CyszIr)*Y5GRRuX50{J;v?UX^_v{6g<+v0_d6w9XP4GaMdauvK0ZpY=IbY~UllU>N(&JE-~jE;LKqMH0`#l5Mo?QPHvi zcla#FWce$<%s39Om>f& z86AC0x7j;)nz*KR)8Vq)noVRD1Gk^2V;B2@aRY(y3v~S48gcVJWqBj(iH2;Gvelml zr!+dHi+w+=%f2dE+1U_K=6AsMnPB?xcxbqt+Ku8vFZOP)<&qQc+ihHz^b=~ZoaCGt z*-^GLQ1r`>qoLDEytk{Sj-R{qPR$~=Ky^_)si~Hyxk=z4QE-kN*F`Ni$^<%UY93|8j&w=cL{Yb)2y-~=iC z&97v%--iF(!acb&I8DmT;a}h5GG~U|%v{UkFVS+ zO{(z%nU=5FI5NJ3L+hrufW{8uem|fLQJ&d@4YilIqyIo>3YHwP`gXNbJo<)Wqr5?> znQPsNN6SlzQYCzH=J17m?r+v`zJGe_2Pmj;!MM!~GGbl}Dtw}pFeZ6^HX6iu*e$0N z?RfV6az{VxIk$O%+tXMdQD=AKb^BKzj0}GA(!*{)y<88BiKQ_vmpQg;@z@s5TVVdm zE~1-~4`zLCFvKjO`!^a0*2;X7Z?1&>^RgT6<&vgLm0>y=izK^5blk+l}V5|tP! z&OzWV&Sf$~NJ$n^c!eI{fV9n8wfY-ZR&!KpA5jf))>oabW`)*o&PCUE);X~pn25p?o{wqV6KKGD63gnUA^UAKe8EPXpNX?R$6z`UwWh`tUB?rZblLAd3u^w zIMk`DbFce#=@qE=U2?GNf_SBOz`r`994G!I&T`cF%_ZYDS1-*99xlXtuXj_>o_bV@ zn(f9X(KGYk-h`%#4o_G_ge|=VU?lZ%-0SEe?IZ>Vjz>r)J1ge)8;jC-z5@=C6l`sD zUVEP0{oK9Tps!5}etNJx~oYL4ZiELP|1 z`LT;n(}_-XWBTwZNeVWjr~s8o`HU8xIFoo{I^4RX!!219d=h7hG)T6wZ(#%w^I5|Z5wMB{N;;w}1E{j(LfEpCxh|>`&mRWwK)5dIZ9jurL*KqFgLtv>J27F zyGgudwpCMiHf>n<(ZVC_SboxJp10zcekuVb$Y~JbreDW}O6?9bVKk-Zukn-HLl1cu zv2>gBAR02a`OM8Pd*g6INfB6#Eh zP+8|@Hox*i?h7Z8OGK>zWeU6!hc@oZl6j1h50Tz_2_}BO%AnY@JCdV@pZ zThH9jKi;c13T1&(Ei*ep2_DoeZb0(yV(_7b+bJv6xpj*n4`Rn|3x$q!O$k1?R|IkFvA`tyNseb^CGlxUS*bpkvM^5Wv+n+kq|zY^XWPl;G921Uqcx7PNa zj~9swqQU94+(%3E&Pcsmd-?0>5Ld!J(X%?U@9^t=Xq!@mXbfcU?=0nZs}DQ2zw~nC zhv0|nK_QrI>GFc=-6;--7bPOMHe&;S;fei|ucG&)fGi?&X;N=4Wi{#2BTO_cbVh_D z>64+<<~sdPW`dxKz9F7TVxUL&{8D>RHxb$q-o9|Qy+V90{nR(iDF2-zA32hYi;fY3 zC#xGn5F`#+YBxbo%7JDKxSCMGjdUA9$;1c6iC)&hVkTFFsiWqg5e=H5dJXENfg}ev zvo0m6j|mf{ZUHJ-g1KF&2<&%md7#4y)9bvS1U+EtGp6agTec3pKhnloc~rF3YhCe< zmQ;lr4`t>5R|y59ca-4$x349J@3c|_^1h3@<22tw^alZWvbT4{u)-~$u06=9FqB4d z&tHApzqUKsuAB2FiXP(`eqke#qKY=9m$A9gqSRXSu8_C&GF?$O{V=U}Owtx{6w1l! zfmFuAF?;(WeAiFR-*~K-8sV3)aBuglfbruLtN#%2 zP3cmb@VAcu}T?Vnphg{X#d_&~@&CFSy zNB$j)4XR;x{&>*4;~hl}nCmgPdIt^kC&IkS{gcK+IxMTE&Xn(2n8GjIAjfjUO9Qjv z%*Vc*m&^^+kaQ1}H6IScPgM(kqzi&qq2ojo$Gn5kMouSf=-J4< zu;az>BJON~#W&$6I8C*{{R&t>HMX=ovhS$ancJoWkaO$S=+%pggKyLq);A09XlL!E zOr-m=Hab>h!{yLr$1FCRZanspt9SGwaY{01y;60PM%y!fACFygd5HWmKQYEk>B9b6 zk2@SQq5bty-%QZuQ|0e3oU;1*$LcgD!x}H46uhhkQFd_fYh{E*-z9GM&C{maWVC{{ zwU2u=!ne4Y#~LpR-%2&Fk5%nkk~e^E32PO=&Pn;Q%SNW_Sn%HCzwRukTfaMlzZCc3 z_OMH+Ir_;;X#?*GgUc4Bt&H&sZ3R=DAM3NVRH(mQ7jE&%&F&gC>5;mvTOWU2dRods zB9kU!9W*c0d3zSiWu7`M_3hV>Ex+$fv=h-PD0jgUC&=rxo45Ge%f{Cm8$u_FyO~~2 zB0}BZC>o$07{zFl>2UPn&9!*(fP)O-ud<^=N9?aN>KqC-_Z=_I zzV`FwXdWqTWSq;GJ%o%b8&!?v1&lS@=|R34laX($J)7@Xkg~QFxKJ@-lG|c1e}VIx zLEr7V_wU02onf@8K~D+u;H%wpVaJ^NQM{@8p)0qx_T*AbP4DA}Hl2DAr&li@ zOEe94<-xVu-pF0Hc|D=`?ML@_Y47~oh(3Fw7RCcIQ#lhX6*$mDzzaiD%>oA{xF`lPbgc>Hs!(Koiwpj8ikn{%{dj}F zjSSZgn4*q?3=0|d9XTPa^TOocfKCqv`{LDd5M&eVz)7dcHRo#sN1sMa8ZA;y#IbjK7jw&qw1Pl^TheYnUeH^xy7)_gSTawKhC@y7P{rno1Di@7TiCeH6!;DPwh(% zJC`CKt1VfjGIwU^{jqN$A1|d;6oxUa{Fl=x1!L6SQ1_2V?cX|~&j`1ch5~%NY@zjE zgv?&I{rMlY6n+gw z2w$l-|shiD7qEjPC_~-AmT}cD^sCL* zsVeuLZ9knImk(%BiY=!0b+5UL-m9`|3_tiXxhBT0`Gg^!^jwhIWB^bpPQ;U|wz|<~ zMVXJjmc0CNdBAg>Dy?05`B;2SGt+*2FJb`L)4@8u<_zYpow!gWSgC?qE^;s(LGJug zqSn;QPd1uhPuA10N1DISGc0t)Y0jHCDc>i|KH&_EnGf1ECO`g+XaRmwflR4#pKj*G zcZ%Bm4$VBuG3|uZqA)tZY~`)?$C6E>Zmw-e(UHNp-Mxj9bCrE!ptY&KKCu4SZR@tSD^F7k`2z-j@0o6!DL>0H z@HSdYQw(%1y;@Y6&R}>o9WI=cC44ZT=tZwQmf7B#v<7k;?D+(*ry)Mf^GS113P zy!6WIsP5G3Lm#_d%x>?G*eY&zwAF2&4e%cNF}WG@CwnWy4mQk3iIub0j`=`Kk#Ts(oz}9Gc>zk zm9kr&-i|7KFnWh@_?}g}tNL}lK2fnJv};yfU-(rsX0y{HTtgoC+a7l7t<=cO%Wfy6 z+Ek!+&luTMrAy>7U`};q-WN&pyJM;=*KQ|-#I8O6ZSyg5U(k5xk-s}94UY6imNfgG zH0fNoTC$l&eSJ6Z62y6VhrKpUa&KS#IsPPX&PYv&JA&)aj&cUoZIjp*JzZRoUN z^U>hjQP)@3Z}v$)zFcIRAu0nsVrFj>>tDS{`grNpKXkRpgm3=$-(C*cYZ_%yGS6Lf z{J-}PG(9={`8&hxf{x9|o`q1WNzRWi4(z-Dac8IZm5mJNuDJKN_PlmZ&q>pMdpE07 ztH-)yGN5#ff5;~*Q@QNE=AGefh0`Z)*59ns41awxO8}nFSJdVHIjBJvuw0zhUc~Ng^O&srQva@ZocNz2G@~Wc~Pxy1sFW){>R5 z1ctfLtP{oHpGKwo7a?q%8>Ye03Q1~~N=!K*nut3h(-7W@l9yf)>@q1ldwJCpbEtx{ zCnvTDeAttkM`~9{d#9bufwpu{cCz*w$8jf*`aQgrm#T#?WrXU?&;0z znGdZinxBr*e^v0|b}2co1vN#~hdvF|Eh9<5SOJTNr04YX(dD$$zonjT5r>&sM>aks ze(ism3c@m;Tgt52M2x-`&N)z#cF#0VE`a|X9-&p$-`5u2(fHHJ86y;Q&rJFI^zRJ? zqr{_GCF2eiVoa9x#P{WIJR;crt5KfEyiI%q5~$)w2+4}^W^96@l&D*aFiQv~Ha+oS zNX!a(wVR^{DiB^k2jFT32<$d@xPP6!dU`J=nFNsP7wN`*)AWJ7@B`#bx3K2)P?rWJ z`f6hEPc)p^-iRvsXbkXf;X-F)`X0HA1%rt!QM!cx%=91T6Vf#|rQBy%Pyj#CZ9c#^V)~IZfnZ!v?jppzVgLdJ~T6 zWca?@{j`3IezCbjeNc4>f^Jfhqgo%2ds6eze%F$GhlDsgo@DuZu!ZqJWxf9kb<-EE zW0s4M^AsT}a68q4i? zEraIaaUap|qyFO^!FH6o?6fjg5xOWhFEdKkmjv73ud4T|m?x3K3LKMI91)+Vy09L+ z2{jSLuos@a(xo!aEt{fR#y*T4JWe!t=vJgkeMGy#FR&)-^ym7Y7>v-|c>8`E!kyP= zGqdxvb&?t$MD<}gJd}z!DJaV_Hl0ht4HDYUH7~MO{23`g9wHo4$>6 z%*i$8UeS;sq}A1OiBmZn@~xW{osXl3m%T*UfG5%i?*Cn|WWeF$F)*x*CbzH898!wD z%w=|a-D}1HQNU8okHXV~prA^xk@!*w8S|5YP??9^0j7hE6Xm8;$=5k)@m<1zg~bDl10e3YP4TQdYP7zKGSwd1Mc2OXh&3Tp+pBqwzpgis-ucDOW3160Rn9B zCIG@%_h@CG%rx+kxK05Tyrj|&*uQFtP6FKi?r2N5Z%zHULpQ;sIpTQ(MrL%vI%y_V zLKDJ(Iip}XnhQFXmN`N5t19TuhqZECP-K!p!zdRgF_S{^nQ>4B@bDA@GXZ`X{p=7cs7svpx1HcQdiP>Cqd-C?+Wdvc#>0t}!%n-Z zESIfN#uJII^hJv9aT7^IX>NQzXk8%K?h?+jMopOhRqMgO%L=}@tF)FS*(Y>A=K5Ms zZNz{XLMd565OvA~|FloPuTrp}H6OQ}gZ?h`mE_Wr0K$`A{e7=M?CO|bI~#gp>r@gA z*Buhc4=yoyZc%T@hG>s+B+hUF!w@nN14fNGyGz?%jzXj7NwPRJYhbkG?%}C1oXj;L zK(2tQ!>k5~=7T7qBD9qOnDc!Gur@GYa#IO3ih@@-Q@Edo1-FX;&=oYmvOQwi$+g6h zqXG7UGjL5Lr(VRcbipV_oV~@sE&pmpxM6U_oq}DK!3k-%znzp=ERu8K_mbnS`*Y-i zYvUt%D{9B;l2G&W1zM_`4lG^0|TevT4S9( zerq+I%qFwmuqzc6M#vxrxuFNBk(Nj^)T=D_;sqP(4q(u*h08j^jR7X2>=g~3%=<+& zN{hWf?~R=fb%bL zafk+B+=3+t9D9Hd7Q$mH$v`LGy)OlJ-ow7+vkwfc@)TFY!ULvl&-{tl@<7edIGWlY zYPug5w0zfzrxq7mdMEzaeWjq&P(EPKp&|pDF`VL&C7S^LGZapwa_3z23)WXjd|k8u zM&4nHRIATn9_8Ke?^u;O2u6PSal_b@^@5SaKGyCM+?_Eh7kOXX#xgzS?)yG-`yssc z&?fGoS*b^d?U2t1mPH`c8uxY|@*WD$4*{ph*5}h3Yyx3v8ecTRO^Gs(yGG?;Lo+^{ zR0F1mjS0*x!UBrP0Q}!!gxW{~C2V+4+QD4>OnUGeb_R%v`V3G6PYLwpnBJdaT!HuYn9C z|Fq_L;=VUB3{qCOGyufTMhw8&s{0VBy2dBoW|pmkL?QW!yt3Q1Zm(ssGD>!T{L|uR zZ9V=lbtw1TZmJ-=$pSwbT()?;P<@4X_G8+l9STcz9tJu~V}Ui#RMu7n4A9Y)QY?g8 z2OE<}X)P?DXyC{10o_dsP|bxG7XlXvL085zGN9DMs+2+`RzroI2wK0Tjkt!w}m(Dy*)D?}gE8J^Tb&+VjYTwin@h6RE6-d3b+3 z89^B$ClDUJv1!;nA7>%WL zr(T5wD$$^8(He1L93?S(^I*vh9~AJMl!eJTiy$A8u~6wgkj$P+S%sP}tbYM3LTn_s zQ~{QkkVp9C@uMi<4GS|o>jbIYKu-s|qZQs8<*Q!9?%6!{wFg7$j5=T__Ind@Ubpnh z`}&1`&9)~_ri14k^O)toY~s)+0X0cddv3S9XEc+a7D&obDs0WcUV$n%&Hv1wtsif& zY1Z1BR?_*d{olM75eDGAuBiajb`@a z#-IS%*#}`OgaxZ|(MHw5NlqQMF>W;y&4K*=x$wHZzaq`EGkNxP!*=al6s=kqp53s| zXJ3nKrOH|jo1t7ziyvh)Kk&KIVXfcNA~C|5+4s#*g*Qo-`7(ps;OokYvJdQhr;4UZT)Av>oP*WAD0&QW6v?s)Pi96KE_oOwBFH=S**ylPyM4?iWTwx0 z=_x)cGy+ONAL?=oN$iwrkzbdMj)jT^C8p7tUaA%jaforBkcl`$6nJRCb#jE84lYku z2qC1O9Lxv-pff@MWgP_2i%^dSi23OD(qlb{- zg`GR}m>R*G{dvZM#d+ZkE?p7N5%EvS;v`09ba&`0CT8ith@;O5WkD8Qidk8t2Qtd- zLE>5K5i}=e9tUm`{J_#db~=h$FUYEoyMn=7;0JZ$9aKPuSs8R>=>rxDHY0+xSK^!6n@$B~E|KFT>Wt>4{yR78L4(|ips^AFo{Lqoole}FC6_+D#{EAZ1Y!IRZM^xUj zY$!;D&1X*U<%YatBEF#)?YpQsq!twYx}IcvuH%H;F~JkyZ^XUr^hcfZ19BQ#kf>V8 zFKSUaJ3rhqxmJf$=W`^InDZV5c6kfY9AzW!7e!x|dpOs-FcgrxVwLJZ{$)SDoJ= zjv)Nm;mvA#qdlZhLsndWhA-5rW?P)9v6H(Cjk={8z#?i2*g$b8GWBQ}f&=zxsGD*CNK`_tD@*)5YhW+7~)hsh3WBdl@|I zpk9mOV+KUEnI_Wp)li%#|4ZPZ(MikVl6FzIg*=YP5KE-@C~`@9YS$^IMhH=iktu6B z*83+{q=0;z)e3HXLWm=4G<00$GV+j}WV zRwXAl6gy()qC+$l`~+}|v-z48PNy-G3G(sZZbtVVw|=1icwLU_g33?a6)wvM9!85@ z$Wae8t4s=m9=g=kK$(xXF2;R!&*RWwlyNUeb1OyuspH5NezYAwp&QwBHF-)mhpR^A zQ2?MdoNu+nezphq^es8n4%M~&s*T|Oip(Bhl~I;ruxt-F435dfWUrMh!bkeObP#2g zAK)*fr0RW!&zi+cZmvcVw*;PgA|~c$?+I$Ey9EYeQ&*%sntBbhui~vNjYFp!YMR|*$WU~)lh174|C7T_iKkio<&!{9dLnJCkyeG4b=n#!C( z0iJjYKILOX{?=B-;Urrj=QnXkqtEenaZy2W90%&m5~i8}va7FIn9xf#MFlK%x6~3U zD(yL3fUtdKESAnLG1MvU=_C0#;8w36p%ms?F4g z_7GTx$3LyOAYfl8(jd<)cU2}7c;JAGhP6x*p}4tnOpsci8cMxt3PL$)Ri7lZEyk?U z2}--Ygu@b*ijZA)h=Ao1NaienJKc>D7y5Fjh^<50 z;Zjq9Td8&FpJZMT$lDYk3U*gS3r+ow9pwdsOJ#~yEA z3y`N>k`L{5Fv3u1?X4WC)IAA0OcF=Z@T9YOm`1n>6XEAG43m*@6k~9sDNLb6N=nK- zMGy}&#AP`7Ei)sDded%MQ!BLnRwYvvq?0BE2{rFg0UuE&V~3Pp{odU#dRvIwD(1Ro z|6rM&*K}V@kNX=PHbwrv;%rdc2d*Ql?~6D~wQqN8uyvyzE%TgZT?CU&+mzby3wdTLmQ#dxgFiSi{)2tZ?8e>X!bNGh*q8J_uS~9r z*P(||_3HPdT(bK7C%VH=3z0%kP#@Ez?+##Q*=7j?+@QY~$MBI8AH-vVm&r>%1tkWK z>5dBDx@O=+GYFdD!iUblGsr##^!y>_aE4`{o^p8&tDBWT7*V;jXUR2q^lYCs@l+lT zNkswSYc+w{IDS@#2X$+tz^T|4~st(3$hn+Wp<-^c{a>?uWOeR0yL`1O2kI)O3 zrUJ7SFWNB9H>uVA3Eh7uHF_UA8Uy~g?brdvcW^QLv&$4_Ka<67i{U@~*D4 zH8Q$q+SoaP7|rSmB{GqSTR}l!V$ZCGyuJfz0foIu_EanWan=8XoGoXcK=`^^7Iz(ckX zqX*!v@cj4KKMsV7Gv^ohCusnvHg$5mUx&TTUOM7$aI32iNHJp{P9NXt2x`sw2?Vi6 zx86I){b!mof0=RcSSvASMJL6ARuPR`chh+!4C-x=pJp7D`fzEQ;0}Z?f+jU_nB!Td zjbgQ8Xzc`G(}TcFOhGW|2rTna?5zlVf)f)%hJB1bVKwt0FZ{v+_{U_}B!?rxT^r^u zmkzF$pMIK&R2;%^SQvvJU@>hY@Ti&zL#qGgyC&|P4SXLO`-!FE9X;*2J4EYZHOIVM)n&6MB7DdnG^OrK^vng3Z< zXmE`_T=|ed)XyznP>CfEPymdwpFe=8TY{G=-5Yi|abJ{v%-LrgRMwM}@%!su|#<49x6fIfMa?u#I+FosTD@rAFtN%CiD_0b3J~P(=m=L-^qd44+<-`cx0MQr?dHFCQ#Xv9IeCL{Kms?pJ9!#nRu zfOVfD>m@r*(fL=@cA^mdI-JzSqyNQMlBQ?MG`z}md82oqF=RRRQAz-eOI@rA(Rg5* zjQ#1Nk`5nimVQiKxwq+9ob~ki`-6lSh@Qy9V_9pI=x0#jaebL+x1$9@m%M1DdrT6u z4_H{rzUzMEN-3M&5J#aoIDBxoJQNY8H$5-CAfazFR#2M~;;07*Se6J?aa(3rJ{&m+ zLj8w0KE3lsZCsSjhwmco58TWYFpH~?drsivu+6Dxf^R&m2=*166qT8gZ%}tB_P?V)Q`p^u3%bwLk-4p3fm)v#%GP zebe~&u*>msgs)+4<>AAFwW?oY)NSxxG1iRFNAF~{Cf>EVw2vSDf~2GBx#0t?E@!g- z`y1;ndxJS2LsKIkMss7T@f8US z;%_TPWVh>nbjL~=lDCu|=+6J2gh13;sgi|L@N(s!mzpgeXe$5Qb$2RVNKlY9zCGn` zq?J^X?&EJjNq%DGTHTW;7J@x0fz|`^Gu8i+0@m&`*xT2i3iIh4!xw7(uI{_Ch3Z|y zKEE+3Y3DCFTzD@h+Tzq~Oz2-#tF=)EXC`SWg( zfisVb%uF=Zvrafxe_Kf~GffsBhm22B_$jnj!8m`_%>xq;`p9e-HCJczO##*FP*~Bs z>SE9^arLjS$zF>I@Avm3RniHNmAb)F={REXygFv#Z)&T7?ToWm%+)wObLo>NQegVq z)|SdWt*U>oP&nrIv)ohttdrLnC-f8B-fOECisf3*HBHB@HI5&@;AEMKEHhPkne)M* zl0?)&JB^M4;;bMjITtQb9eXiY2e7!?iJ;Y&18fGd=vY+WQD$60ZuVmpP`_I`v)B8; zm6{v5!u23PSW3XGmzO?u=-iiNszg>O&Cm6d_o{y0&S|}+*?YeKF-S0ZpM#mD1wER2 z^&26j#{6{VLjSX{3vw5i*LoujUz2LE?lq}7Zs^fr3_NQWYHaE$LkH}5_zzd&=Q#%NsZ zkf-nCwbJ81_9=p4b>M}QJ+@+Qf2+^(O+~uP)_U%GR?b2Q7aMqkRQ_adJ?B>R!@ilP zqB%*|qtQJO1X#*f0Q=CW+9cT75e?K1E9IbIv!nae#XKmMo6wlookmZj;@>ykJQ+-7Eb_$LG>EX$qm4-a^K`#`eX**G^nGRrlNJ_}p&b`Ei%oqwtS~7khX|)rj#8ptX~w+7uEp zCw1!Z&Eq$EHtT66Zc*I^Gxx%)oIfd4U;2`XRd#w4g{P&pc41hQg(db1`y{eA9n|0!9SLu z;R<{312G}2pyyb<(K*4bk=e>8*{!4jvpL^!tfJ*R?UAe86Ez;r8i4pA?Td3;!_ub~NJ+AYJq zfDS1AxjkdB!Dm zfMa>hZy5a#YpDU8sQLs|s!8i{EUFvgy)(7Lc_zT-qJ5lvFxkH zX+AEk9M5p?xR*Y~@=Zhk5457*v31RS^PJElGQo51{`OmOu70*a=y}&a10>Fb*=uN# z;ykG%L4G$kg7s97hO%TqvuN6r=TlD2WUF?%x}`}NWtLZ^#CY!Pxd$$F8F#!5j;xxK z!C3E*Lmu;9$mRE;rgVOk=oBW+6HOu44)B4NiHKUXQfEGq{)qv^g$0Icfp}W4$m`@n zpcL8uOj3B`))eZz%CtzWN6#%|2d7?=HDC{IS0mJl&fS$<%;sTuk5|L+@jvaFE(Um0z!o?svDhKO z`j4^1*?xcaQ-@cA$^WkT@TJ09IV!?QF_=5WO%L6v18dnOv_(`+0W?@#e zA#Dwtgl?pPJ-w>f&{f)UgCWejay-m%!gUfuJ=`(qo?G`Ikeu^~T%yxX2&-0n!}k76 z18U61BvIz3a0ue&47a#r;e5<;RfNS2$6Ns!+FYSoULL z?2<1+YN(~{k=x%?*)*4oXLcFI!Dr-I{0hFOhe{WQK&1_wWo^d_QeWkT z7Mm|bwY1K1LdovyIt*PW00^(9`t7Y>K8V6PHP5l~{| z_-|oRI=n<3EEiI~)|+*aL|Tqu)EZ62-S`vyh3xz6bg1cs^o~Dl`C^EEfp}XjrhfQ; z0!T3~zC*iATgtJ^2S4$uO!Y|dE}iPJ2}zW2dc1N7-tKW4&_4pUNJ)NNAS@dhq6*iS zDFW~;3&kHMmM^by_GgKi8p<@NUztjmSy)sdyy@^BH;qOYFS3L$FycKpmVS=pjpoQM zc(ftGGtNw;xy6&ojW46afy6;M7{I?R2}D`>2czKZ|D+J08-eRR9Yhd*0SAx&@SQM3 zktgMtST+YtL4_g^`!j5ZzbDzoa7YudS z(D55_JUa6^ccOTxL{^w+VR0TROJp@%N44OCzM&}%3z#Y8Sa$MgCakF|E6li8bgy!^ zP$W+(H?@=?)0=|?M_+{W9NXW}kTHZZ1pSS*qOo9g)Y$-w!;n(=xGB`Ys{k;cp;zMb z^MwK4VJM)YKeub0SE;i4no7q4pk2lSv(_*)>fj_7Q_TZZZ=16@YFjZ>T~z|bDb+at z5gZjJHrC+^s&2un(5#{cCw&UPjn4W>V)_EUuJng=dKeJ%Gv)3`8X)P>Y zFwCWNLbAo_z}0Z$&pwxCx~4AGZ_y8hFNEp7?}p>f8!yH6v2E!^A{b%OSz)MgRJ^!i z_cmu&lZ%>?Jz!8pRd-EX=4)@g_9RkY=n0pIB4A^LGuev0anAm_pty}%!+(Q^ds#}H z-D2SFAR3lgw~i+R$$iQ#Lh{N?AwW$(sXr%5jpM?f4ni6iQ~Ve zb@Mlf{?=Ar`PY6%_z7YVpFQK&hM`AXGT)Ttc$V!f5^EREYGT(S^lj0h`A2UkR%KX{YGhAH;k47(!Y7k zni;B8=`pJ<>j=5!R&_NiHO)9~CxP@;OY@uL46B553b>RLh|I^m2JQ9x<*Mt1fAEKx zDl2t+)ehH;2*3JVu>sJrC>f?!KhkKyPwiB$4~gTSC~H+63?Mfh<6#^t)Fd(m1d>{b zf%|E-(&j1!;Ee2P91~8RLr+C{f%*gq{#fKY1c;igyk@So}C~D7D(2qO8-E zOnxkqW;7QdlDA?`786x0wRP$eP2(Hbu#GXB433r?kZ}X!Byd~keuM}qtWIU=&d!F8 zf<%wIO>ym$axrAa)rnxcH|ox8@L7D233SM18iLH1{8_t5u8rm>raRix$i8%xlUt|D zZlK&ck(*S5+yg3ylI^&Zj0pf?O|iypW%x&v$avHEHKEZBk;3p%Wy>~?U@2dKOzRtq zw$P+l+%#s#IC?oco}jZJP5cy3Obx9bT5 zHdt}-A;9vp$Lzn6>L!G7GDlLlg-8#o5hq?enUjbHUPunA`sJFe*$~mzq|PNhnh;%O z$%RiG1UR;Ha+KF_lOlR5q#_Q()WwhqVMJ6mA85d1J|#M{a+afKgDp8~dEjz9ATNlo zga!prQc07-z%1iPT{@$9sRqWmR}^}m`&yY37o82#!)1A-1mK*=Qlo-GRWVP_Q$P~9lt{L70`hTo|T*>$7l2~)x42c zd{0$JBB8#$&6}RvO7CxaZ&Lsxq#H88q%2jKk9Jsg>N^tqd-uiv7T0jt-dM|KhHR>P zB9eD0^BPx2*AN6oDRnzxcZV(v5%g?&+UxY!+IOF$(k~wqrb-VMR zK<|+y?Ao_EasE}qNHx4MrM%1M_J#0cbDO#dyTEZ;YKF64^<+}lbj?gIo5mtE%P9Kv z-}{vQC9q=f`$@cT^+y@b^?~%gKDwwSx3fiIk?N0=GKRCx!8k4-2};nGoX$NDc~N;^ zQ%?yEwKl);s@54u$-CIKf*=5ahkDfWa;vN(p6Bd{_4)=_!%5vEN;Q%fXQi~VAxSI8 zK(6f%O!KoQ2Lcz9Zc=&1U7PO?W?rZ;A7Hnel+|RDBA+%nT}^U2J=wlaD>GMLB58_T z(`YzALyrK5Q#m)D=H`C-r*)|*amYa8s*2j%6NL$anuZlJE2|xa;%h2?|NZ(&CO$t( z?(SuN$N~Y{L|^^hp{Vpm7X9jfIFYMI&Oh4`c=}#ZUse~_is?_Dd9aVK)N9DUL_9{+ z_w5q8_jfa4n_&9qaiD`|GcVSgY;5sRp=1+3%b9B6AM%R*yj|0Laj`|6c+gt5#X>My zF2xfUm+zslLBlhRsVV&H{*`k5^;ouIQPe!KEtN6P)6l|$j{6~%O&lDjX`(Qg;dtYmmmRv*y~99CZ->VAv{Vo{EcRmAg_}jo;m_K=+$FRV zX!;=9mP22%K8;8pi;gBJpmzvsXl>jwp0BWPkO?Qey_L6c63XGQv9atq84zqgZZ+re_lG3*2NzpO)8!~ zefJ0P*6lN{{W`%0Xa%76UVRI5{{499_a=%9C+m=zcyQfLk6~|1OV)f3sawE;wnUTa z(8$qR3v|3D_x5u-v|u{7hQYRO^35V%GstHPT@q_OR$yVg_G>|>e|y%5F|X_WoO76D z#F|a`mhCBL^qTd|Q<;jS)t4+VnEg`f%_hD#1euxzE zwt&Y6c)i8{kiond@!4f{JGINhX8Kr9PMr+jkUf{0 z3tD&2>N9Dwu)i(bZIYua7t@K7p?I#NTr1UPqw<&ACE|4)2d5Em944d*3kS*A`e-*; zOpN2@%=0$_M7f2Kts6*mhyYdsV$n`9Zeej3A29{au;=KEleOt>5oIyRVU}nu{^jWr z|75a!G-FaApJcy;SO64R0)j;XwMvz|>j_IAl{C7=M3_}W&vZVzNTS5yo5%fuWs|ay z$0j^_!CRet!ZypUL5R*h^1gywRORekS)|}2in>`W`O>?ZwQ@E>l6QvUYhSuD7;mzO zn7{U=h!h3u7`J+?FagJnPm||%#jx_k>YhRB#73VoShmbVmko^@!E&ug(my?=x@Jw? zI0!tDevk|oluQJac%4o#1!j}`8W+Pejpbj}3IRmpFw~}(6T}6F?h|EMU19wn;(Nxd zScJs$l%Eg=s}+GgijYp=7zxnw7;VS;!Qg~Fsu)OQoLbO;-^Y;ylEjd%kI?Lp5W)`e znE}LKM|=m)M44MA!s3a1*}$lY*c=~k-fE-r(N|zR&nRqY0;~Zr#Sx5DhKXgn`^{9!ZdZhus^;MEOtT0 z$xPMpV7zH6L@k8LdcSVV2f~QJQn+;YpyLN!lf1X(id8zVe!E*>hCy2vaFq`3$wrlt zDV=Wk6aj=iLjua8tnNWEdpY5Q2LdY=59v%#vRKP3?tHZuD{KA<${6CUDs!m-w;&xH z=fo>yRSvs(G6&8YJvRivJE=kRI@dZl4HpY$f))@^^GS4hw56*+;yjEI+AKQT%iKyg zuNCDVn@uX87JiS~v7)bI4Q#{R60e9)m+^a6Q#ct(5`Ws*%4I6U1 zb~pJCdZ{W<8AtVz0B+0yhggJ?)6g`jinIak6%LNnNRwFUQi2q9N}nNok`8{hRltEt z{^Ekg5U^lu8Wd+PLXZv+2F9=)1jhd$1O*4sLERF?Q>iGl@(&ZoH{jZt}Vnu`PYEO5u#;hy5^#Zp;9gDM-^@k8rAKB=CcstsYQoV3mDA-j6&X z=0c_*XmE%LyUoh$D=?VA#J502fM_%vwkpwd>keylq7a0Qn)G80#nD%E1;5JvODLec zY_O<S^=ma1-zLmsZ}lcd z2QRoWN2>hc+l^19!AfSw)eyVl@81RHUjXuKZh*n%p!}XLcGi)}qfRiGq?me8<(u7( zWxSq!-`hcrBlI-xL5v%Rd{HeIERmu!L+^C)Qszn-7p^IMA=WUp7CNCqMqog-jG{r> zBNJpbAE86j;|uq!!GjScz-(<0J>8koW#_^Mw1uvn1=BKc zLKy}P3A1HN7z~;pZjHh}g5Cui@#^3)1He0*&2P$68lqoOPB5YT?l-P?YxR1;keSYK6rvJZFkB{HRGv6B{+c>>Gr<}sA1x>vs_mV)w>cE$6 zzP+A);kngzmh(64e>6V5U?X(6KjYGPD39jv6pkRMhIdLeKK*u4WXytqLdxHu%ZdJ> zqkA~1$onSo1Rh5L5u|uzfuHz>zEKvaJ`i0-&xHt-`G+rn`?-G>LeL5CnW#ah!7Y!n zonCRc=uT4w{ADFp+zMV+%}0eBaG71jg@)}(07(Gz1d1hawqf*blRags6P$`A?8vwx z1Ov*>gKO1Llywl8z#u}E?T3&NF1xkQy$`cyA}LamDCH5Zd-Gxfs--&GZ^P+l;8y1K zUL5s3i`^%=*e>a^Lb>DH%vP zj$Gamf81*S=Ia;n`WvPD(i+m^wd`3Giqy0!=Tk;zJ!lQ3xDu7Xo)`9k1KHb@qxgjV znsO&+@?z6Z<)0Cq1ILb&L504puS8P?r(4}eZEv}nzwrLatOVFiq&$eHE!je6p9W-G zkx28ZX&r}~_6nbLG&=>AN%oQb4S8qgzGXlCQ@ ztBtpfBMT<@ACf*`4(uirK&GdBHLrCx+`7{6-Ob17hgs+w{)5KS#DZ{TjwbK z2I{1EJ;MYMYDcgEhv)bOG+X@a;Rwt1?I*oo7LT{!-=w3WO;iGsEuL>188KTo(-P*_ zLbo_53~N@Ulgo7E@Jb=?oXGp)l!_RYCyH4?T@BIMj)d6;YdSC+XHLyT?!T7~^gsv? zcMR#>e!eLU>=fll2?5)aUqWWjPO`gh5@FQTjurEZgB{ld^*!BfA%Sk5HMl==N5E4cxc&m$sQVaZJRjBQM`Az-!?hCRYY66?Ga$MP> ztz(vk!}m`Oy#4Nel}ZUPaUK))6px&}Wo!oQTdh@2-N z@5n^^gF(^MU0rQYs8`-R$7J`-&jm9=wI>^ocD_eT`BS5(&9DSe+Hi%dBQF)3`c?wXnBa+EgdZFszGHTP>~UGcvl1!&I0?7TPci57`SPt`jxSV z`s1{vAGdDVTYiRSS^yPxmvsl;b3z9%DQrsH*$Lve=rq^?j>yZE@ zyl?*B`VJ-ue&XL+#Zzbg4%llV`qv-Bxik!`LbirnNH;g(rmpvOP2~33x6--4B4MNB zjAPBnXquB;s)?rO2O`Qzb_(_GL?s$MwOp(%)G^d3JgMVxb7hiW%0;>n!Blq24z}I+ z8gjL-3t8`S7w-_9p$JVeHv<9iHd4B>$P-q;R(mNCv${ixY3+h(YUc<(3^xI#Y zBk9&CP{EUFmz^57^!@waB<$?07pvp`?pu%ZCyiJb?p9QM6Ajjd`NADO6 zOv;cM7E&}5C{_M|a)})wo+}0e_4ypotIM^98)$Ois^EC5T>W;~x{#~*1pGJb0P&Fn z4ZO>~o8DJl7_~4^_9etJVi!SpFcQWE-h*7M^E3|OYInN|bcT2(*-8|kuR+sAzWyI=leuh)oyw4LB8uMLYpLP0SLiqHr)(c%_<7qj! zg{eYmF!cJ3B5x?=)G%K0%}QXp?2Ar@kC$YZN9-hcysk z=P7;5YUp9=rC-6{sr>$;h|eC&O+Y+SsO+Ejr&i|~-tI?UAmNp-k$|ekkL~mw({v*hh{BHlANo(Ez0_S@oOHLhHtp|`_ z*#h6Xgt_riS0{a{r%~U?s6M7M9NRPFlVDV?G68hrIfUgT$CLvNQvQME01yG=&}OU(hr z|H@LaNA8MhrgQ$&zC%CkBr=hdBD2cx+XILt4lnZo9n{#U8zbH@_s%;~Rv=zE4$W_` z!wp18oCvFUb6b3wfcqm-ScCIPn{@7O^{nV%fWYgzbPckS7H|?+U7P{H@PUtgXBJN) zS<3^Pby$AmV(2SroWq3Drp-ImjxKM88yyp?(#fKsp*y z7Mp*TDN~2Z0*FLH`H_td4C39eMb_wd24XSXJgtx(h6SuFRwb#yxiy_MT|5(y@_AqV zStYS(@tldM&R;Y}INx4`oPKgP*ObaJn82q@`nt{7$NoH|?Tn#5 z-k~_}LZIY@yKPDFKN5&VRx+mCg5r`fO8hF=-l4d1*SlniLT!M&c@2q+b7gm>>N5!u zQ(*j4dNO28cKun*@Nw7pPm6}zm1MOHxG5^!ZXk${AIZt2=mw)UMNq`_t8EPB@D(WZ z1)&UA9YijBJlx#udK;EN@C1xyTp&oY{Gt2uwAt=5a6}EdF@p-*Tj=HPfi#g2}_$4nGQcnosU&@~P6M2l`WRe)Y)78(XhZ`o`=8asm}@ z$C>k+G_|xHD1vG1ph4aKVR$joXVs)$W>=>&mv-@!&F)~t%#CXgKkCmR2c7IcaD}7m9nXRc@vpMq?(&T{_`s_%jxS% z0fU20P$^Iz{QP(qP!lrSi6}&tA*n)T!H)!DnXGaa;dJ0LC}jwGt1%)3`4?jCf+b$y zFse|1zwFisbJk}JrX>S;g{$D_f=7yW*WF2+3ovhRL}sY!^|!E9?hd#rDa;g3Nb!j# zic_+utpD?<^n>tDz}u5FQd3cm8tm}3(H4NkiGYr>F8}a&TF|J{ymF>TNeVDKDX3rn z5-8cQdrhL6?=bW-mpn;P!m1e!o|3I=z7YL{#AKny{UUz&0u#G-z1Im;h0W1^;1w+g zY}g4<<*)*RN%5eL8SJ0|;o4(1!aoXASz861=`sx9Au2NV>_<9)gzOH0Tn``z08Ad| znl?NG9N`XlUCVsrAyj+Qd@O*_8@9Z&|-7Y(z@j(FYiwt-s-jDQP!4(qe7lIKVpepgeV*w<*MwonwJTRao zj523SW9xjxLKET?_lGlbWlYE-xeHPsDawzDHCRfsl_~c|iY3Fw=3BMfn|!@m6LsS- z3FV2b2?{UKW^Gmx1fn*BU7%Wrzcs)Y*ih^UmdI3MBD}J}Sg&9b&}199lC!^(W69-&z7Gj7gb%LV^m5xbXyNlG{%}%Y#lcd^z){c$qx}-fwq+|i=L1OeW zn5tzVq}-$z4**|))}G8UXFb+{IGg=EGHL+HL5MCKyDe<=lzBYVAc4UkSMy9!>`q;h zT9D0iclwnIhs^e+2Z@*&8;Mk%#ARz#13Wx%ia(~L!MpB^&p{Wc>*s~bvk}yhgJ)FL z9oxB~-Qye_p^n|P5}~9-=x3UYyWar@xTjU@L;{){38!wO0iOYXLL9UW{_`gCJ}d`J zU5>4y9hfwuV0Mc-O0NNIeNzVwXuKB9OK6%S2hsvHDVZ(kmAibKEs+pg!#H$c1RES= zirrRb-!RBw14mt*yws6kCgf5OJnlAK8KSWAAt0atMdije13;kJAWOFMufSu$dSrf9 zJ(K@{<-iC=XE391Y4moTp@Km>GkgbLl(MqL9q6i9#1_k9O&Z z4VA2!FH<7c8+~jMXjd$2pnW2VShH6xSHe1_i&qISel86XV;1Z76-?QDPMH;5~)qZqb(9f0? z3`@lZKk7{2{5j_UNah*MI!aQKX0EVZVss8gH{*YneSlhk_`4JEBq&an4kQ*u5oO)!#8yf{p?!qrA-&`8{@Q39a}C6AEcvus9%@Bo(3yJLb|9=2=1i0sqAjN%N#tXZ?duCN{c^G4pC%`GU{X1LZHARJeA(eJR8m zY4%n%x@{&?Lu^ubrq|gp*2^qKeX3uDQ!!Rb0!P2A_jO&qt~%{j`pd*{32D+3MQ#hh z=RlW%@S5>0Kf#~pwCfu&v03jG8Iu;a!R>E41w2HpU4QcFgzZCzN!V1jL_=Sg5Y(}13>n}B-%WIgW3(X`kBeM zqDI)of#0+tbB=y-LRoIu*cj*<6g z)2vXbrQwSLSjBbrXl<(K61{j3Pt=IBn?0aWXt@d80FKlQF2`G)?$9HeLw7TAVeQPw zHVc@jjWP%LFk&#hd=@ph2P3GU2y+K0b?z-aQVK_9r<%Py8z+Tu9~3+#%Ld`Ukge z3of9gLBL+D-qMTds9@`Vjq~hhhT0gZ0_~UCNGPh~`E)1x!tiP$&qSy7h?QJ0q@8;1 ziHPs}>~W0!`2sgjbZu{>+I z@B&f;D7y7)MVhNtsH`F6?-tm?AH3buvd$w&GHaxewx-ADk_H-iNAxduN=<7u&<<%y zK?a%~Bs1He!6KhdgMdw)z@k*9rELW}l@oQl4}a$vpPrRp6uRQj^WiJyRm5?!MUVPX zCZhy!e2?+%+iQFqdnj&t_6(0*dR>%>ZogNr_!7F< z2*CeQ&><3x#2A>myX(C?gL2qj<5ewV(>+E7Odk(V8|?Jazrm-n@(g z4Kl#)XC#HX1)eJ7sMq+3SN=iHPkkoGQA_H98wLzeVcz}7cL0K^2l6GsF4bvvh0I(# zCHEwQUt%`x!5GFzNpHLJii7gDNbVwIMy!XYwGb=tG3a9t5dPl0TFf<+J-Kv!@{{|b85aS4z+#~9b5$ojDX=WvJz4h zTZLtGXQ}m_oGJb4;EZfOOa@Vig9BdP7XXK~63c6JCJm&;!!lGDKlPSpk#kYwVQ3!^>>MBa-trmKN!{>SDQLaodNMqRb&cRD@$a{Jd-*%(b*iQWPQ;7V8U)M5DwenMIh>&5A?JP z(J(iJx6GxbsR*+HFl@(;v4YrYJdJlP0ov499y2(G2Cj<^1llZv2^YKkStGHsO**L5 zf!x}ygFY>v?#c}S!L5pS2d^}4IRyKSj$k^MBXb&*!(H*Q=9KSHG_Y%t<5OuWTbeuH zqo9rI++Kfld6-J|8%K@bkOr0-9KEAJ9J}D>;S+3XDy+{BGnnfgln`6I+i0p)-f8+P z;*~-2>=Su%bJ%;MBpNMHu97Fpx2Psvba}&LWp>`i-}yB!JNLgR&rDLw``4UCnEr{Z zOP8YM6YLi;trV}1fQeV4jC40Kb90B5haNGOI&;uAK%Fi{b92un+Pm;o%igRUH+BSN zT5Hnby?BrRqj1Yh-T%K|Gx>!uxwhQ%PxTqmlYo<&a*|RV+qPm(&TpVo5NK!_QM!L( zy2}qQ3;h=d7iP|{9aOxreW)&@$7YV+{$@&ywHWQa!ggZx9U&pV=$BJ_UVc~Bo~||Y z%rJgmDRo?NI#HaJN zKb$nlqJ_0KHz7gC`0d1dIqYeze}}U_*b6wvt!&dSjZDp(zo!)ou9-ZWv>OPZ%u#yh zDcTda-ak`2$M%m^9jal_Th3T1-YnGOYyY|8UkGf;pKBzXU;8?)R>hPhv5^-{3}Q7R~n+DK!53=T9q!P z#AcbXgkH@A=XpOV44Y;!eA%os#oopdvs@ z%NIs0uUq0wuUmytntAsC@6RXAs7ySEs?y>)j-4!x=0xTG^4j8j>IDLxh^~)f--27eWCGKz=oIMuX$2udR@A_`yo6F{{uTrpCT&YoQ z9w#2#h~VRtYjs|A<=7V-A;fKEDv+>f!gSIV14gE6jy(hRUG!*C7}YZ>MJE;yf?rxe zao}zx-aSrHk8D*@B$#KXQbV0QDs1lBEm0IrQqcw=7+*KfZmfB$wVk=EbB3GuSK{HB z3`y$*JhQz5T*wt6)Iv{}?Eu5}-=z6JpLn-G1%s|<^#K>Bl#3%TuAvWB`B8y_^-j*S3 zR@rsWq3PS?>71W#CHAzmd#Z0aIDF`7b=Por*iW(f`pSsbcS+mpB-dBeaxf>6?qnfe z2Z9rD@}gN?T{a^=fRl!SAqb8bq-r9AlO_`XpXkVXC=9>jx~gj4=kAmp zIPQl{^G4g+odX|^*m`m^e1sHX}JrjvAq0*gFBL#{xa#r!0!WM+3+Z^dTmbji;@r}0oR5#UN3B7T`fRPDp zpiNZJvd?*$qrP;-^y~nmYc>k`g8>Y;q3|7;xju)-C#7AO*zj>ozm*7gSJ^Y~0qph5 zkoJn*w^3Z9$emUd(4ZhOf~o}gweu(n;ajGWq0qBqux&J;Oo=ZJ8Wz9Y{D^UUo$fl<~-n^B-U=JdJBIzzT+D5KYS z!fn<_@Ab?71!v%EDM$O7wmGxTPHQ@|KoyS_#YdC`9~oa%862lA&Nw8BSu!5UfX|7x zMmh=o>{F5eu{v*_1l^r4f$J1R?}4IncnRR};~-j}}?5_oNCZOsYJcXlkh!l$1fD7WO*BREo-Dah9 zJ;R5wgBhI5cZ&yQEVHKvZ;6|o;ha7zkIKSP(lq`8?VK3p#4#(IRzg;Kj zhHSheu=}Ut$U?PT5D43Wc5GE|3vEb%9Kkq*_jTACPdIUUMwZr%Ke)vLWPsitQ`JMi z0o~qiI%*v|HQX>`>+rMILPN zDIhgt)+ai}%w>_+rSk06lBE+hu{Fl4(5q9*s3Uvr_}uKN;*L56n^=lp{QujpaeWOiHEX$ zeAWF9p|Y3+iH+rhrV`TutJD3QnsUi!-534pHv6vQSea?1>JM8NY*bn=3-dy4hmL#3 zCD&UzSHJfk7w6sKLH$*sT&B0nTa0mZY94(V25eW2JEK-0-$X&>KRctFkZId7 z@TB+;+Erl)Ok2^F?*k9Ea}(6((KkNbX)4*u@i_AYU21($#ba0wg+sxw-;Y>>OZpb> zv8#Ciotiv%e1DGSm~NcxIXn0G4EI*d-?^7Qh2EK~LFbjc=PWMvZ7Z&J)9)8man&x%JzENyLe+C|G4v+JJL91e)cVnCF^oF&w9C$_^FPy{|l9j^rSGHrx*mQ-=M&xv3f zPi^T!3HShXt^%Oa6sZ*S zy80lNDm?oEt*99tqg>_mrgS{V%DgvHVvvR;py%{Z_10#YHAOlxc;&&A-*D-S1&B>> zZWeAJkk6r^a+D#g0a$#Y2%$6Me@#)X$fXBRIn<|bZHGhhzJc~bK^u<(vT)N5VBgD~dQSPREiq@8jTQgARCJq=4$M4MsjLN~wm!w*|$>mM6rhC&&@ZjY92!zrR*~ z@#Gl4Nnwg$hLfMKmttmJ64rVMcksqbE*QqrnMx_@V z9^Q;0Iiv6+D{Oyss4r#J;x7#sxf|QG3nR1ouAjbfZ=?8EpWuebYLwAUg%Ybka@_&X zgHg)FTx9~jXUj(0Y?__44}UWV9K|?`I#9uA)S%h4dtlS-= zh^IwO4}RkHqfW8|Y6#lTb^EYKmz5Xz3Ik3asP>mSSjXlGrfvoz4)E*ZF}765i)9E$ zo)ONl2U0yO05@b73w$GOB+5=I;3zYUQ|usdjQ|s6_IOL!F^A#V&1R41R9mTltpuQ! zWHa`iaR7H3>Ml%u^j-Ym$wT{rQU=yLXBY;}Oy2r)e6nkQFegMzK|4xVP??u-?j$+z|7l?&ZCqtniX+z!6XHIq?kicPgd~LyhXZb({OM(#W4xW+Awvz7lI5O94(j6PihlHy?-IRQD;}JBhb| ziJzs9xY=quaVVJdxb(fWpT!A-AxX9ZM{^gB%ou3QgKGZzcN>-*!snppa<&kd1EskN ziOQXwjT@4MtP^vS)5#P)I2}1X<}quw%m0Sh_xqHrn)Z_)s(yhx(wISMSMwdu#VLmd zXUARg6KA?ny$NWiQ(VWo`b^SyX-@J$@~tzGM*w=D_>9RCYD4E8+qhiEvU_pJG((iw z=XAE7Usg$o!F21B8x?E)ouXpTLnvenF6_lwq|-HoNiWpgC&G? z8BnWvMCNAgOZ@w1BIL}U_pEl??>#L)POM;Ps5`MFWou%X`Dyz9yJhCw%CiH&Q1kn>zh8(+}r#iMFb~fkv}JSJp_!Q@u+N@WAn)%ca})SC92esIAfljD!92 zf^U?))!F8f&><{H7E;);O?gFEn1Q~V4`jR5dyD+{GyQYm#vkZJ#z8&*9jIuAUPkN{ z2-e?_B#E3RXg2U+4>#=CBub3mi~o|;+b#wO)A-OGau_yrB`_Hzt8pZy?vI_CH3q7=n_fP zLBBHupKtad*IDn`cKM2AP3ft=TuS9QzGa?l+oau@oDS7BN~R5vhCa%GFgPVVg2r&;=Gqzd{?XJ+J8t^NAv9A#JS5I7gLq5q-p9{^m4Fa$RLIk#CNv6D^({qu7o^(3Gu~D-N=+)SGsf@0Nep zt(I=kQ#k`X-@AGgl?*6Gbg$me7CI~P*j7D)@^D7u!oRAE$p(2?%|kAWldX{rQ&y)# z&{vK-@vNUg-|lhS=|zGWL)6fc=UmZv{t$XJwIuXzdgF=HX#@5WQg#v)zgqqvPDNrw zg&RnI5@M}1&m3ED-rHlQoGpug|4we{eWAG+{W*&XSNn@i!rf;hqp>O<*cj*OQMhVT z{rO%Cu9M=qr;~Ita3~mQ@eDKPpCA`IG&T{&hoEXd!p1rFH!D)9@lUYQMGi6OR_VdC z{=y`C>l)&E?$~c!RuZN0o-M1p_j_wIliI>A=)9Ig)VwG7nE^gsj^JyZx>* z!-k73lCRlk!sPZ8^bk=G_Zu8aL+IGf1sMjC9=0O7^Kic6gYB=-W?&PPGHNyFG3o$a zq5V@5=#%foD$j_yO6nb4k)>+#-88#cwyCRT!=bZXu`92TLQxFfHW%Zm?^{C7?L89K z)#!CkHhd-)R6H_%G0!baP*nC{v^N(uie6@8M0p9Z2`bK+Buq>@>)-b`qEk{-bP^3= zo34SeS4m*hAFEA%q8CU-j3l>~{@6abx-ao|+LV{EH-I9}Bw6vp&IS z#Iwmqd&iY<>%K*Qq%yt*&it$C4k1Q_2cPBzZx6k{K6XlB^!j=e)8*bQ#}Lu@GinXi z7S^noqksg3WF_VNns0oiOBvreWb7mYeOvF}?wQRoW~R7YYH8h9_S0jkZ)H`swAdFK z8fNCsh2wIg_2v|gjH)e1D(=f!qZE|}FmS*$nozZo<@OF2DQR{@9Qt|ZF?6)VvDXC9 ziNY0Iv4{njA!4GBr2KUg7nSZ;OBj@VaE1#Ay{OSOcRxOCXT?<|h4JjS>}ARZX{c9f zm*Xrb1Cl}@@U0Gmp7M3R^PC5bLSsaR$@Y%Bmy7l0`@OOm51`z$@*hql!tbrUh9m0f z^`a(rJmc%mHy7>d-;?e~Hd$<0yLH(1S;mM*S=_bVBw6bZlDB`Y{vZy0Z=65VoE$?K&u)<%P!bz2VO) zO;SeHzko?`XV%~hR#wKosnpSW%h^fG(K+pssL-3neHwEv?H`ZMfazrN(-|vmO=ZBp z@?hum;?|3W8`K1y@efR8Pbr;BJ-oY><~h%DIt-h`WS*?^Sh--ySN^6^>~5*=^h?T zueIVk!@~D8U9gN}N%x9z@4uXQJN-7qZ+5pZ!8X;ilhr1bi*n^3@5b{F@Av<= zH1Lo9%<1Ak6d`g^c9vEts5UZ>96ec=n)SctygotQGWJ3qdr=F(B5W5+JnzIEp;3*mfpMuJa2hqSi z>2LeV%ri`{LMKxDy0n}1uf!(aGobv6^Ny4+ORFbqxM=fGShcNqukbuRXHG?n_9q-7 zGX|b8Nl#=%IvXF%;d7W1twaumZXQ)x58sT8^o*+Fj7>cJF8EsUk8(-BX(3_>IG>aK zrR+<>Yl&e0OW@;x$Bw3xt z1n82-HO+I#w(RDLBwviYSw8#RSp;rS22p0Vj*KS~kL%8k4+cXwYQ+^S6fBHKe`#s0 zJSxh)ehxul?>VVmAkbzD%hB0Pg7eZvYXJfag2Hz$jVD5C%O<(V$G6M3F6t~SsU~M6 zaGXeG68iv3rJ84y>wq7j$@A;-QlTglkI9|FEEk9Xvp@2@{kGCzCrwg^Dh``>N8b-O z3|`9WPS|jrctTvNfg#)FPB_2@rl zQ>+>;#HDOnWq9tliVqU2iNOpoHxeOpf!>!1v5&khESB0iR&4VPRg9mHq9>C%6rx2}}siQ7o*|y&~ytjZx*e zLv`e=TFCK0id$I$v{V=7r#(!4y8qA>C)?Owz@g6baRyYxiezw|k6_eoZ4L+vs}9bD z^iU3)ASiAqSSCbM7IaFX;a#X*2DXYH$cz~qO5z|5Va4*xMcJv!_u&R0ZsvjWT{bKJepGAgYz-Xwzws9qU#$O95d4K1xxN%dBTmpGcF-F z`DhUHYpeUD%^cV1LZfU(+$)dySG#;70)d=Gy1Q~ODgUXN>BKCd&x4#9`nu>TUEbgO zNk*B@T0Fw%eEm#s`&@3zM+<|mpnN#uUC9UwbXLH>&moA)FwHs2`+9haAFk^2-tqWY zD!BG5JfNYdK^{Tu7gN2yI#m}wK^AnGWyJ;93qm!#Y*~2$=l=W2?YN+C_qik5c-zk( z7WJMKjUDaU%lP2pW|$<)LX0-j*wACa=T01ffNCJ&<>A31$>|+)tfr1cZVOc;bW$#B`0j!^^L9t*UBr&kB-fI@IAkD z^s}O=0P8A@5zp9{D67Eu_ss^~R34IK9+;A#9%%bT>)$z`%4P;yzIohBW-t)MPu3r5i(Dbm+(!D60AluKu+CBvGH@A_l|K7jqi**(|ep+m}^f z8rgeZr`L2et}VLH+eP{@&W;E6pHnzVCCtjTI_pm_W3@SrR3%O4^TgB%0@9NSk6#Ir zk}f>y-!=DjIO^wOR$|gcuKTpE?}tRglSSqlRFcd?0nRqWP+n+!1nz}Np6;PpQ&|>* z%-|S3%y8_snd2tM=H2PKW8qszXdGFK+5*cDiub_N;ko!E&0}#Ukr`Bzq}$uIL2+E| z4N1cY2+edP0E#A8l!C2=Of5-onPHgLTR33%*;kx;gtC0Dz$z~4Gyi4bG))*=TeN0j;hcZ>8DudQignQ7_z>ttA6}TTI`snXS;1jz0H9k1QkgUbr5zMp|<`_SS ztj3O^`y7xO+{7WyZls%{t+ z$6R9#+@}+;#V3#J+T1V^IA%acp^=*;A-U!f+9^UmwT^tAQ>uYMvdg-lhi(s6?TMzh zoqi2%4Qe5Ho?hKltmK*?B$=N&!`;dw-6F=xk#ikEhgi12Lq^75!7}~*H&)vrC0ZInhRd8pIJK-0u4-p2Z`MC>`rCs0fiIy6FikqCjx%c z$y1!SX96}vJL)p-iSTP{-r@b?c-qW~Sa$z^j0MG!xZCILT=)uuYq%4L?>CDo0f*`xzs9?V8uQ_y{<22x@SlCei#y@4LDwd^0fVBi86hyJ1wQ(iv^ZMETBF( ziJUtpI#(dnnaU1O%cRZ|~aNncib*h;L#<5gEx={fQ zCFN}pEjTzi0Hj9m55WhyK@l@qelv}FV9GdF0eKj6)D=b3pc1tioEfwvC_Db1$MYT& z_8}T!SNew6A)qz(>E$>!O^#VhYmo<;jrsuyyX5b{F#)Zx(5s;z*HF+vtCXBy9b35q z1_gL^yJN3OvA()elfV=-g~M8fJlZS#Z2Y;OK;s;QN54ZZ#D6)$DCXD#k;RGMdB_l_ zzlBr_SfnD+vZN#M@d7irD=jV9x7L!F+3a*5K2=qZNWr9d&+LF__1R^w0{EuF{O!p( z?fo`aRO7rtM2O>uZoCyopBHK48}0Th-EgSSbW~O8K_4EPOA2aZy4u{b&bVl;+7@Xs zR?By%#|hv#RO6GUVGo6W;(Umv#qsK7!$6uRRmq>pK@fIiu@WJP!f*va4#2d~Jad|> z0-1Fo`+EE{7CjyHFCF1~&X*s4)3BZU3N>J2v5)5~Eq;a?)~Th}kNlABDcAlJ--Woy z{&&ZSRP-hDl9ofPCW|S5h#)}e0 zvMx`Ysn6{4Z6z;%)YFUnJSl9+=sc4u3WL^lfswNfO>Hyxo!Q8`?g}DD)vh(YU3tNR zBW^h1R!RBY^;;Hqt=iS7@AmINF-c|L-UQt(k+(jaGJg{01vyt%UA-U0w@0N(I=fge zl}0%B)MypgxoA7zseLoDdCn?V4)GcJzWUy6!DCF-PYuYNjn2IhC z=tc&qbzeS~xdEw?5^h*{_yQR!T+-h}%6s41PxIP=Qpl9!u`U$3Q?-{I6rGxvO3DSu z;dSKuY!kDjGn_VX!`x~UaS34+uyS$r070K2Pwc8Dv#j%_>HP_ISin^q(P5e4q}P?L zfomg2zs#uH&*Q1n58>jm>n6w9*a!0hC!fBFVzBgjVRaw)hRHl%bfjvwlY???lJXYs z!|k|K|CeJupKkY`)fSqt?y-jB1Vq>~qnhNcc%<)6wDK_W+pZp8c)-snE^)j6owGd~ z&QwlyH-}PM-@Dzy00UjwDhX>-Z`OJSR#M70x1^cZmLJ8RMagdI#Sroa zQo9QWf-Ch`}XdOo^Be_ z3TdEU5p*jnP6|#Te{C5YQ!2?%qC374{}$$DBtwsL8Dfu#0pR=0a|<5?2_|u;44C*8 zIw>Uz%%+i1%(j6r{~efu;XV!yL{`_j(Da5eRiPkB9XKj(Mh7Tci-!?L75!9BOmm^WQxkRk{&@ zIVJC)(P58{a1yu-shVv?3hQH$#~H2=&9%DIS&f&Ly?oh}UzXuyE|-m9dJ<{mGCQw# z!#1Z_MSrcim-F^ijKLD}R~Ybt5)RooLuK&zY=_$&#vB|8IEXa^~( zKOs<&U6m;KFPXn6m^$CplNyJ_;BY7!!B!-Y`f66C zCvTf)AbnW^_0#BUqYI;Cu}He}AemMDvh@j`Ywupg-6&NU(^=Kj*P36}^${ybgc2oT z8+$o>IrYgRC^+(ohh8hK{pwdR=$pITTVK1XH6Hg-p2P}lO9AhDdrysw7Lq2Nkyc@E zZIw~QUxStJ^*@%f44FM)y#^?8IWPOCOvU zi2%;(lwRDhtcenzK9fITtV8yoL78fb3>8H~AfPNZ-dMu~c8UB8n1nlFIJEw%j}VHm zbmh-j((+Ehz2Vt5uGOIvlQMTU^0e6M*lk}Hi`;ZBU|*EiHx_t$q&VxB_1PGIsrr~h z&unco_HJx4v~2Z8Ws5%$UzW`RHz{Y#zUW&x`?>r{eRr*SEK0NX!IGBs{aPp|fqKtm zHG4eyA!>G+k4W0rKAy&IK_w0&E#mlb>ecjsgG!B|QU#M@>Sf<3W zGE?!~h~+vGAC?^?6zUpTu$^wO%T)#Zwl}V7C_#c*Pk3Y-$2vk@@K3ls z;>ZTL{Cbn(OJmYEAPah1kOP&m#;C1|H~zRAj|&U6k2PHDz>=;ybRxD2oRj4zL=X=k zv+&MWkyA})DO^uM^1X;8JgZnpATfC((N^OaXWcoYc`kq^og;E^i`j02hoa^0$9ai- z#&)>bqStYg$D9$LjO?VRmqoIe$j zd>v+Yj97DaTj4iXu-HiSNyR0_rk7dCT*W<${Zi5%T z-b7Ipk7b%F{hTIq*n%O?D|W}m{MdLLG@bt4e_S(^TEjTTf3^_CUK<~~c$)+QZPEb3 zzcZdzH$DB(-zsh^W^g1ekOTBKClsLBz<&BW9epw!M$uY~I26mr4wkgRK9ZB=$&+E*xKJa7r%D26}Ua%fa` z(gF^#gB7mQeqq*x{PP$ zY&ZH@rq`SBADfG?K85ceO-bHZ_NHQ3#th=z47|tKAODx;9ou|uT5J05NbB5Y6`9Ji z2pgN}Qh{}LNH%?6)Zjxh!k3ns5Go?bmO#1Av;_H%5u&Hp-~rR!X8J`F(O!?kr;H)r z3Q71CI4(SONpSYX#r7L>L^q^U=3u{QWhAS~uYn41MmA&J{o&Q1Kou&w?4KBF=}O~s zW?Sa$?>R(fNkP$yup?^`h>PAgSyXYk z1OUMb&}>UWsfkkb*Wn#_$n&Vy_%Z!=X>JQ}pt5fsW* zYhXQ;){iw;XGD%z-x)KuG(1}(KE9mImOa|wcgi!`o&}#wKLkjM8Sjk`UAI1-O#+-m z@9X~5X$uqj`FD;OS78S$72q|aV<~+OMXsbYcQ#64Av!+Kj3~`ACWfnUuds%>N`N_% zuoxyA^uj4=W8y3M2Kfvx{as)$co}(2R+X?#uk6Wu>6J8A?Wj>N|2V-lbezVuG-`)i zE7&(t|CD zhq>)6lltIHfiTv>gw&u~c@bcza07Es@gS70q!cd+fg3C=aW*gnDDhD3%9=jItgU2| zq{PG#MXg`>%ga$n82S&VV<0Z3$gZw>J?&5`Q@)DK4h#-G`Cf(4*P9QP7q65xKFqr0 z6)8%4A3|hDi}CznyjG{i$Fp+>A%zEdX5b`Mm~<_EYaICEDmX~UF!tbxk#;jwSET{x zppYgx1@+w72hLllV%w0j11PT!nSz*{`pXwb7_Jxt4dE|A`;G?e7mgPgyRe>ze*Z3OKL;c$%)xrC-}kH(>P*MW1;I%x9P0Xx2JoGDsQ@|N2+u(jA53HLoUY?##Si ztgP(obQDn$%W~I0tHt7c>{Oifi~P0Ba5@zVuPaL`@F)Wb02H2=wTZIChL>uN`B*hA zW%ki8CdSho3S<2pS;;cajuRj(77dUiMjGtXwk|;zPNsRw(HY$QsowVa;Ld9%#Sn!~ zTP@g3l+BkSW9nPUS{Kdm%S&2lvsHsQaZ)21@Ye9~e-DmFCYX*`Ee2$xlc`b48i4hP zFd-Kpeu5JUncKciQ$%&Esq`kw&4Tw`taSa1Ay#iMPF(VBsoqjdL=O0z*P)Ud3xq+S zjEovkXYel~?Hon(q$&Jk6Qe;>d{+Yi?&40i2SIYC+I7>s@~l91C3h?g94?v<*hXVcL-Z_Pi49Cr{UCN^l05TD&J`j|y68Cw6X(}uLQ zJ2J?-1|g@;MuW zRh&Vd#kXJ<-2OS6VD1*WK`m0(^;=Wn(^iOhLhFXR6~sS`XCk+%Z=w1)@zkDeJyvGz z)12ns&1bqQ)#)^sgAbbO4r_^e02=n1+9?nFrs*mPWe#J-H|{lwOfB`tpJF)>ibmoD3SJ!$t2?n+e0&2D16YX+Q-%l)B7QQf zP>hFoIL?azehPBOgbJ$j-w@BwDLTg5O(UTSxr8_%AH>bzF_5WIu&^NHC}(!Z`XC{Z zzi?YY$@4khCblA_BE0ahoNiQYt89Uy&U$gx}Zo5 z%GK#y_1FULI|U$|IFNNo|Jk&vThlEB&g@%sK;WYYEpOuv24!&lP~7Dw{SpS0JlhlP5VAgZ+_ zITkH2$Z6UaG2ywZCGp>D*XqHoKb~UGxGd1V=z`g|!gOJ<2g=POJhz3Uvc{%7J5?u! zm)tw?W=Z}x7NrlM?w*GXSc8^Mj84Px*XfG+%-dO>k^;n|-g{;&28&moqS0l^Ndfo0 z^0#8XyNDNs{l)JbH-ZMYm#4ZvP$l&_d)v%5=h!mT5xAba^(~knvq2r=KJF}@QhV>_ zztWawR*LGE<=lOHXJj*ppE16N+^FpB6W;u?vM){qvC@=;vSu%fjL{LYR)8st;rhDQ z@?uCL?7ve2c9mBnMKcn$puNEYCa+WLd2tNgJreY<$kT5$QtE^}<_OdU>^0${SYFJ( z_2v)8qUn7t>F8GlCTW;X44%$|_yMl6)hx?um18pL5AO|~6QEZO9_xktGS-B$R|W=v z$Msa-)AHbiS3hf}C)bEGf!%seR8sN-gCRxliSEpcoqTs)Wy%?ol}}m8e7!$Z&cR&$ zx42sw3h5Nn95`b+so~t|aQmkkzbGRp7Ii%us{g@`k~GG*aUO#(Fq}`%jXFF zaaln~jeZSr3lg_`JhJu0zv0@4K7G4QGmA;q`CJ2i2eauP|29 z{uZlLvpBV9H)@vpfcO2oN6;Z8(OK6K9d_#imLk)zap9NP6O~R~|D}+`U;upD%^Y}p z1PDlsK|B^ty*eQnSWkP`i&tR!q}1sc`hOBL)P@};p}r_--Q%QpiLx>dQjFHEYx2ar zj>5`MwW|EYB+Dtbc*F1V*_*$cjDdzh96pP4irDE4IUomR%?3E9Kh)-uE_sjLZu-RGz-|SM;gK>OB6$l1*{1n zrYs7h`H;$>v{^N@2Ho(;(0ofKT)Hm-z=jn1BQ78#8=xww0)2 zUMMDowY0K>Gwph;TH!edo&Wymn8Z~@LcnFY1aCKz$SNCLYLTg1BOFCl16R;yPP|N{ zCn|s>0O%kQI_XkrolpH4DW@jqO7i&v1B+oX4#p#1NoH(_ADE{e{gpiZ zZCD=ZduN3EP%Rr^trUfWxo>+(;Aph!N*$7bVq~OaCI=XEtq@Uo5UwY#$kGE*m__nz z(jblzd>y6|Dr2Zv>kDV-q`JL87)B8Fl>?BXv|3Eo3*%4JQ}6#t&h0Zmhi|><{WXp;s_qEOyyQbWRpQu1AP?YI&xpPSZ6!76>pyQ45-~2_WW0gbPGbx21 zsgV(RI@%q6>J;cX^fv6ltH(o+p-mf>B_dV(BN1cI} zAQzt#z;LMdvlT7O0@W3wgs}(+M*?C&eu%2414xNvYqMa5)3`y1C{2JsAio`@>JBto zeMR%YEU@9PmKZBR8oEuCAik8y4~aqUPAnm=v&W9(q!UUwJk5g@pE|Y?m5;?X->vFpv1AQ$&!>CA#lul<$(G!6mUHBsVyck5q? z3BL5K!^$$W4Yj8P86PFNk509POaE?B#RBcE&ydye2_k}ydJM>b~%Vkop4$px>NJyDNLKAY}RvKu>NdS zjv8%ZN#NIv!!X0*xcQ0v-hNJqCCPXi@K=_?nCVOV_}2KJW3bul zda4k=!9HpsJO}T+-Rcx+DSBUWM>jPZ@Q0WmHCQ*1lOnuE0NdGUejqy?$uZ`53((-X zowzFktazEU?44^1+xf*OKS0mb@+x{)c|$mTfi|)0aRH#QBA}~c4^Wm&X#Mv_2}<82;X$-U-#Bs*SS{vBgw~~iaGuo2p)@8-pI&2oj3TTyPamy zQcIM(&$UR}<|Pt{3alEK!+9@c(%S-%^mJNe%2sNtvIPlv+Z<(@&N`({>LN*V+JY@WV#8_<-|GRzevR27$U7uPopd&W9w?;7mUW#fLi!fn{U-_QDTRAH97R zCe3c($RUuuD1H4ZSd6_1Kw^vO!E$i%C8haX-#zblj#L)^i;*FZ$89+r>R3)nd`K9| zYf?(7OIh!oLW7)p1q8wpM6zW`x?un$wSA9%)s=aR0c+YDQSr584&TXha`Yh-1}Q0e zaqDhu@TuM<3%o+7nD!`4h(E zcF*@QgX`^OZSakp#bbw^7VmXt-|paS4rh+#eW2MXCzNCxh1A0^w_ji05b6-@hz>@- zv}$*^kQ<}62w`7-TTzT6LV(n!9>d8j@;?7pgqu2uP^YcmfB3j^Y2M%qb^a(T5?E-O zwjEBI@f~B*Lxf<251{=@24ra6Tu`EPtAf!0u;x7x00AUn7bh*effm%q*$A%*up}P` zdwy4fARhrgB|)ntd3S!)%n>h+EP>Cx3pDs*VW6w*uSd@(CCR>&pDJICYx;vRrg_lk zt$&9M|7SqcWv5=jQU9py_#jzWaNMtkeMLjt^pCCCI)~-Pld~}?Nl9w+Ln&)F=i9E9 z*PKQ=7`8S!`#FskaDs1#;}5g1+E;?Jmn71JWV7NQ$%Q>hcKK`!cD>-8XWO3G?KxIrYYUe7v z+ld1>{gMxO5l9UCU7~PMYANOnwz(6C4!%Pzq3;R&0S`BOwih@!vv;ekf{HeKRL<+7 zsEDgsGfCHjV!vrD9R|cRvU2Ot>|>49EDW69P@?uA7rr;~>)%1DoXC$7O)aS}$%*>` zaMqmp=O0lub=qGZLcOQz-aAJ6;DY{XpR^Utd9v^pbyWW&2|LE#WS?K}5o@mrbpO3l zUmegZw6*XNS3?Xt3CD2mA>@x=*_^4QBEo`I?{L4qP(z_rM{J1ZvLNm`o!(Al_UcA_ zZ~D3Le4)%_`>eA*;oO(YxZyG0ldVL{q1Pyor3{d?oPT5>wb}zOgqgdyVLJ^#>CeAF zG8@0>3L>6I)yEPwxZ;S|j{^9E+E)m4@C&Y}_dGxBwQqRD;Ev9(o;yM>e^Qg3>QYMH z9&8w>MzD22CvK;tKFXyvfP%*qqn0TQ~yEX^JA*?k>9YIF5t=3M>T5DIQyS$nSTyO?T=Le zG5N)1Best=TW@}yV<%ya`Dyx{9)rSm%hs^_R{Ke-T&)sL< zoXd*9!28nkS&du+;`h>#=UpWEO*gbkc>EvMODF9fj{f-FcI3w&E{@^udcqC*4lW#0yX&+MSG{w!-4c zqc5?Uv68co94wEdaCLBW^W>oVUZ4LzoH9#t5|!WxSfyViB7pQ+Nq`%xYDD151KIlf z3LNRtpwq#v?YWotE@U`4G%)zlNQ`rI3HoIWdk3Z8QE%LOPv~^UqMGyOS_$@9&O<=Tr@L+%CS03*z2w&iGCT>-H z__U?p0Q`89Hg!8DT*3OV;KkcoDySj*&3%V`m9B3wc0#PMYU|wd+toK)l1|56*dB-s z&WN>YU9h-y%&(;OO~WIp(f%;!MGK!l0&)L|OP!^Lr@7i^47azoC zsq)XQf>%UmYt4mA?VshPt&2py@Uvi*al^7DPwVN5AiNH;qpa}DMs<18=GzmBM|>Y7 z;vOq=DA)`*JIF`;$*HW8wbB13@AN>nT_x}iy;w~#_}N>m2J&7D+R*G^3*N;<5uMza z$M7BS$7aQD0H1r32Hn7qR=K2Sv4yLo;(5plw2q*Pw$u7wbeYz672jvdp zPyp}D?6~Xt|D^4sUu#%7Ns#{|wQ1?M{82bPYH>lDkqPdSG(U8#jW-fMVnSVztr<{o z#yHI#D(trwQyn)t6RfW~-=kMGS1I*I9^n}3zS;E1k&s^|_vOnAd9uAJHpNNakF38T zr~r%9+C}!>Zh+#kMt8RPU_nEhQ<#e*dx!dL>G$=rG~1e8QfD}81KQiK)lme8!A&(=fI)V@g=`hPQ+wK^+JR-q;Vs?rBz7HAwT{xWl-oC5{etCJ&Xh5h7gfeiqptVQrO}WN~O+aq_7rK-f|B#c0 zEf&oKUcAr@Rx6^Z7-M(Ko^(6ocAWLXktJ$f6pO#i8`+Ji_iwFyo~TW(Zi|zKjP%Y4 zkK->k=M53>qIa2@X?r%GuUc+3wwR`iP#0foEA>~J5LIo<%-uN>>21Te@~(ED=fU({ z8QxzD%Q*^s<7%;fjS6jJkGSqa8l0S=gzZcZ`0T4T#xfmD*5i0S+>s|@NIlf2j-eK^ zi^XbC@USO?lhySjO)F&7MQJ5)i8o#7W1)Nvf;MTx7K?J?f~3yii4{T7d9^r1^H)69 zm&HXAm(nCTiv`ze_<_+M2;9fAsIj~g>IaVOY(z{#-IzS+w`V7&FEwl222*ceXpk!{B;l_~LBn8yDOi#WgkGyj=yb|KCT z_9e2N&aX5%FZ1)3z!ziJ7axSbz#*m6`y+L=u?S7VowIJ8EIVjl67q9uW$j3vTvd82 zFXVFhURnq;tc)6%2hOxG7TZHP=OYG6u6UdxB3*t00C;o(;{9v+Lx|&t&q1xLhO_qfJX#}sugGNm_FfIs}+(4 z&LI?WhdfxM+=~3<%yiBCP@tNVW+t_mW+wx+oOGqile&%@ghFk!5aUjRw_UY)bEDy3 zcw9uY#1q@D$F2XN51-OOKCcomnQ3Hyus~q_`*`+f64K<#L&Bl2Pj|1G@UR+)^-F%_ z0~nYyb?n2UUdO5b9&pWb1H3|!GeU)1U@Dan;kYcHUn1Hp@Z!8wVUY3RS;O2aW%zDN zUe~0m`&I7cs8wHXsWs4yUnI`sF|S&!AJgDV||kRniAaWh>i z_~awL$V$YbU_hjqqQ=qh(Gv%s&KwLXyetlde=fbZ|J?NDRJtDpCTbqrOo-XOYon#|73t*@J9%m; zQxttG=;b!~tGm47vOrwTV0FQRG?6+NuuZZ{RYoxl&@SQ-VJ% z;eV*g?af!cx(br^RN6_nkl4+#Ha9D&uRX8#PVs|9S_00y8k4Odr(UdHY1$NzcDDl0 zDav)2L-~8uj*k=hVcnOax;I|CKclW}o~vRF^;61jX!&N|6lo@H{jqQJwfn4-BI1(% zjR!*6NLNs<6V6{9*3yII3)&)MQl)2|wXx#2GO?kAS~cqvhSVd-b# z=a{K}W>Ywj7A7triXto=O|HwgbC5nwd*96ItAix0uI!Jqt)xH0rtr|HZ>3Pm@fBRi z{pXlht8P+bZykM!9vv=qWYKIaZI!q8Q&DUgbW9xw-UIiBpcUa)vA<#cyyL=8p2vZM zCrL+-X{+F6giJoPt815fHkx6o=Ogcma!*a+rM0sr`S>_)x^x^ist*bOeN^IOQ!tk{ z5;;BypPLP5k4|jPM8#7%;(V~%t*7ic43@Bxc_Hs#@5 z6Xf7W@X#e=KPB{5?}4ezHb={o2D+qw^vKJ(NFgW1s*$iMy?05H91e-Vq@>yRS7o5ngW{26nZg6TN}SUC{qG2JZXG~-b` z+OC}P3~%&)&bTp>t5^Q^wXi@|xw<%4=y8dyGcn>3ijei6mFJO_4tV{AYay7|fMVt5 z_XtIx3ZBs7bvXhj+czuTo-g>_-$0uQ(D4LI8-v6Bym@cT)caxNpRBQhr*?Q-U2~tPLgG(w%4a0RLXVq zJuTdxz4*AyE8@oQgc))A$kAL+`Q#iwf91|c>78R7 z@9Z2VjFl-+ni5BzMjp1G3l0*_`jY_=Ez$>W{OX(M5pMs&6S7P!7|>>mKl@K#o*05C z1^BP%1P*1Ogs{-~-BG+Ei5M)oh-cydOay z^{BSZrZ2<>tj)rz+SbST+dPTYcyRZ;^seR2{v+K=|>g!cKqzn(juN)kQcbs&$KEcQj{CQj<5(BO#Tjr!bb zhLZrTiCgn|Qs}cj54tDO(*RZ3$fB)E2`%jAS={uIVw0gUe-CtXQjCuK5C%{~Mew zGW+deYA#Zqf)^eV)*>Ks*=vr$4Wcs0vpp7g9OQH1_Kz_o&R^qE;nf4nd_Bq z-@b&$9;Kexbfr}59q%{mszbbH$S)H=&lXJ6;Y#9>wi!F&r7sz+hajZ6Rz-`u(%07# z+?5)Q(oM}`c=nRrUu^xY#n_VV-gri~-MUU~zxMn_S~r&Jhys6|P~vnF>;4xoN$gO2 z^7msjg*qj6_}}p(PKd4DXHJTEfMlLH%D$;jIYSXjUe`0ai_&b zd`#y^79AGUmN?AC>hOEs5>u(HKJuMNNe7wl|1YaAnT{w`L`)V`m{f;b{t=$!T`1sb zC zd-vnw5T&=-<}q1jl4h+n6*OZ7jC1X9LRDUP$_R&KpWzLGFzoYQAabG?KbkFIm4wZJAJ(o~y(;&0hO1O#N>y!Yqooe-obJ0&tpW3= zpN1qqP2K{~PJ}z*?Sqad-ywOc7Pk`-L}}N1GQ-_UCFXGbrKZ&@K6&slp7!Mbnd_A= zk#&c{Wb}E^8uiJ-W&3#>in9(QN}z(A7EP%W!$F&#}V9i+6J8o?erFnbN5|utFx)PZ|_;8FVv| zKo)-EAhD%{>t`-HRM>6HzBG}o zmpQnlN}oG{qWYxztIx}==UB2ff*b)cDKpO(zT}Dk?srM^O;(j40DC9S90k|g2^KK_ z-6iom695ucia^Rrc?|zmmIX}I0~$BDd>*=qB=F~LBmEFWhZp5dAqU_5l1uRYiH)Hk zeIM{k;?iuO>^B6`pno;&%O+aIa$q5exy1gL!59}qR%?kzV%pyJHo}?mTD3!1K)Wzi zpJ4^+W-?HekGgrj=lG#NOn)lktJfVx-Tc6?RdEQct$p_;z)gVkPPho(e^4^zm*;Ld zT;T>ZCly&N+!bj)eAFgGn02-BVOm)I!9oFECR#2L{Xis^gF@F|XqR2x;@lYOH8SSu zz-!i42pvY#tTs?2S;`T5X95ILyb|pP;ZKuAzix51)#M6vO~t3NfQw)5)itO4Fj}QbepAHH z&mQfeIv9y9^8@DL01MEJ-0H|cnsaCokh#y--z!Qi4^Iznk=tgAM?-_1za9A>N9P?+ z<^R9&_kEV*7#-u->ew73o2-t#b*y9S*ds)tp+4uB*%^@(9s8IeBvB`otRka9Nokl( zQZ#<|_xHDlbMA58>-D;>=Oq9{@;EzE`Q6-Q&dof)k4R$~50TOtIS61PBONGPO1u_2 zaN>$?Ro+V%eS9%K7dBZB$+^Rq{-JJ&ery3uOvcrPf;6L zHXKy%mI;Xw%Ts!rlCr%iv!H`0TUc+cCpAO^WNWzKeF!A)9wrtxQ3R1-60l7PLhz3Y zZrKwU8g%hqZcruuT-zddRhnPBB4(mXDWxgUQbZr|2;-jz;`Nk3Fh29Bm^u!2W(U(8 zAXOk6@cHeFmzqEF=;N__$TrtW_z$9HJlPEXgbdwoB&{8d%z+4 z*|^!~*^T@sHm9FurqyVExtQW!H_R^O#S3bPyhl(saQuHS)Bj6QL%@LG0A+jh>FMXA zE(tM*822?P7uX|TUfC!x^$%EDV8(h(eB(I(+00kmO53HNl>YbW^#kGSk`XWGWEUyP zuD1CuFIufwDv0ByvUY!+f}J(HU+ql(cq0kJi2@ECS*q^{>xw(VZxoW)8emFlcC2lr z6=b>(KatC$I|n;c#N(;=#q6c&8NIv?P2L0;`Ug<_?j!U?+yrar>Lq9$H zSZ8g}Y-=MTnzPz!*FCPhVqw(R^(l2tJgM4D&e!}h&I#9TXZ92l4d$N=iUjCEvJ3*+K@bq z-BrqTfa<|l3z2wAfdFDB#!>fRJ2X-c)Ao4M_Ay}?@X_T@-^`F{cbNC7H=GapxM*7( z%Aex;8QEEMGly{x5*6d>&-?4O3;rt8)uMT%?@lu7gN1#U_?3zrInj}JZN~%})%a!4 zcniPg0CVilE031P--!f{fHW_a+PIH466N(MExA{5kFUGzt&$odt=``!`_ByRZ7ylO z)`@5gh0s(s8LJ(cpk-kyZU;&%&$x=AZ@o+5iw{7ifiB+eOfq+KsW(oLi%ib|1(>CK znH^@#DfbBq!1#Bn&1FAu{WnTJ+TbFhga?QsL+vv%_DGBru)fbkDwZqP3iFTRy0zV;MCcdb`BT<)7zEv z?tpS`eb57MOH5Qg(Ko~r-mp=(((f&HR6bGH)n-YWVBaaR!zSD=!vr4&+%DEVDS9`s zwFzX-@vmz}mNb`}?tS39+ac!S>M)xvcyL;KhI$@I*7QY0DTF~NoY!XM8ksbC{VMrD z_|}`I1`GpwLe5b+mqJaJ-B4>f-rDk_iIL}~P=Twn)IbGPOy8uUS{!^x^?p6y>A&*`~S)>KTQAd=>m2Gm>5;g8DoRlFs%061J^s2 zC=G-z{kda*QFQPfBzdv;*)%6GKwSyhELta?c>k6$3Q?XY9_glKKDh7e@X30W6nWW` z>y$}#NgEc2i4xu*+BnZ35ycJwh-oh}JGp7x-1)>vKnxd`<)ryRy>>bEBXM^lSJKJN zPF0=W+{~UX{6i5Nz>H6Ib#&nLcXyCqEl5f^#L0GJ@_%p{+a*TjLvGycrTK3mWm#1Qya4G`NL zzgXb7C-VS&!ww7cqRN*ztvPRH-CY{Es-b@Ut)g>MznF3DEi4K#LB~zfdGX!$`zl%n zMrP|t2v)DiilThtgYx?5`f&72km}p!;_1s~iRi-+#`~XP%&XL_as*b;y;ls=L8K0k z$yRhHUTd7~p4?UU8AM=sK!GOWEhhz3)peQ1`r2$!71S9eEh*I$#@v`@O|09k@o~+# z6)#K)$rObJ!?I=Ebe68^^vLX1Gaih7WTm=zVK~(X6*UedMh}df#C6d znJhJ=fpt6jOVLvW3ARM%XaUjISKnsvMu9tO?K$^(kHQRQ6P3#PBT?$9E|n)+@=)h4 zuJEsoGcTl`n|qV0s|oEpe*yw_lMll;6;D2UMDS?A5%1C~%ks*b#I*IJbLU=9qWSm) zj>&dhIHGr??;W=Y_jb>YuQNdoIqa2q8Llal^KlHRI_j|U^?QniP8Ibj&Wv!MUTr_O zmJ=Cr>8ck;yX)&?kY|#$AQy&&JwFODD3{jjfY(O_GobOahefCmCasV!4@<=sRV9NQ zV4u#UlUFTk*EdB{HHnN8bh|e$fD>D`fBUf=^P1CP37n~^I3A~sUqQIIcHo*5B&*>Qj+D-Sa_D--e z0lR-K(SMEz^$7|iiM2_y;~sXVM^%r+E2Tm<-6c%dXNLw#$1DVR*E{>v!nQqRK!z6| zZ~^brqi`p`YY!Aq-LyKm1QakLhw6Uu&M`U*1gU1sc0xu>*1X8#X_>Vq5}}iR4Du#! z;%q>-Y_GgEy!`^`Yp5nKXQ0la!J;SzH?tjeF(1^~#xET>!+l^J_QxzJSB}c87WiqD zbol(_@?TS39Zu#<6u6V-R*75b-I_N8$>$&LYYj&*G|2}IcUeLE)JQ5+ZZJiNCV7eP zmc7z`uM&w;VI^$#mkQDW_k*VG8p2)m0S|_2UXKCoB5gev7L;NIob%QL#T0LgpRl=z z2aMJL{#B7=lme4vbOu&&#&i|UhtM?oYFsg(T<+@1XJ?7w=>GR7e*b19 z8QVHCqQ_Z;w}B+x*qx?dP5E;v?BmE%m0ZgE?EeYE+i5I} zQ#6S29_`^%`PQX)7dt)-(e-dJ0v8~mzv7kiGM$;2qwSaBS3Pa~q(D5T-RFzQ*y>*P zv-f^{V6pKvhW*KYUzo$Ed#5Nt1tP}*-rnKQqRKOI&FQ?6s|T+Nx=s7Kx?B!@8xuCX zPmw}5&*IJB_D4H|=RbQ-qZl#yh5zkW4DOhJk{Lv>$G^Q|C(a3&yxgtk#uo<(&o?c~ z?uKsC32WsxFS{!WLG zVB%3UxS&xKh$wwh$<@xC%~4+F4wx@W-#rX;(Mk*cGiR?Ip*X{(V@G!yLp2l$E4HWT z{k|oA0n6t1XLC#y81^@jI-8{#KisM!%~auoph(LZ=t_Ir%98Ejn`Q}t@-j8DfNOfI z{jv75vTeT_!wCkW=_yj?JXiSngAM$mWTQRp$MVN{n6pX)t}dp7tL@dz!<|G+NLjFU zfrK7wQDI{kqcni01G{S^B{Bxo+9@$>f!hSi{9dXYV7S97NnZ|N(;5yzUB(2M^2_*u zWYZBq0o)HmI@7S)(Eq#TmUND3BH;|p<9C8yWXLdhx*tCD9s(vms^r097k^if?E9GQ zO4%cnb&3#@oc?O9(3~_visMMSqj6W=*F8al4(^?!K4k(=Df^`#87N2q#s1g<&#)~J zG1?L$+vIJZFVv^TsVQlx?C;j2RR)~M;B#fGg(v~Rcul!df9^ELGdfvrgw4sXq+-GF zSJ7fGto1fG`K+D70P51C?7w?y2P>gh4HmGXts62W!WYq0g8^xw?+JjLG1WxpS>32nzn_ezI~?S4lL)@PAa-&~MEz&S}`#?3g;1j|hs%dn^N3~bZ`jQSNS0sIFm%c;`s#!L)R zSrJ@VkOg=WfZdcza6U@ws_E>hwcejdMi`pLLpz)1v_1ANsu{T)R*0SIy7rb zkB%dOs1?F8r`PF;-q@}q+1yaW>hpJ=#ksPBN($A&cg@%l=TCVljjrjibkVB7?c=+D zvFW`)?i6d**6<&d73K8$usO zu&!Qxd+o=Qs)0R|+%qmIZ!`qXA7#ZE+g&%jH0S$xE9${a@KB>$gPqP8tLd571ovVXaj|51zs8fHgv=|(351g3`zj)aIjf0r4Tfbb zm<;6bu_e02PFQm3F_)XGy;#OQ{*e>IH!D}~F3SfD>o162A6czlIr42}bYjBUQKq8a zHM8DYq3E(c-2bu&*w-@-PaTCOk3%x(g62|hcLK!voE>hr1@x0#Q9n^|Fg@ca^w&<<7!S&Rcq*?b???|VMn@Kp1Nb0 zyG4UvET;zxj|3AqcIgr-i}bXey39}hgJO+L2+`HK=9CVCi&H9MW|+JNCb;D zkeT719}rVy4jn@%%T1hlb6L#Avy3uBnzv0(j#?BXkbra;eg_9^5(=AwEq@W%t>mim zl35n7*oC`DdgP0Pssr@-;p||thy(b72wsYq=C;z~KO8ZUJ1vvO{(a_cynH+gBqfa` zhfY`5Ln6*(c#pTR=J!EP{EF7(1y;$s(-#fo^d3iaR;xVA-SZ?cejN485K(aC7(XM# zA~iS6XHp`l{g}LM6CUxgYX6o%Uzp$@Q|g}})K z1IC``7<%|Go-atU(Y1}mIlfOf=#y&AXodleopO;A0WBM2h zGrY$Kjvp?*sU?7z$v2{29dYF}x?#h-SkQ3(q>zy(TV)Q2Vuvv&-7Q%+Y0DdSJlFK+ z){fG7{l_I#hzWJ|S#e&E?{(N1hgXfBI_4V{PuI4gl4mlnSf2;`NMu~2#|b4<0)rd- zm2WpQ>qE7??TQyzCd^H9KEYyq72J=g4UBGzv1w~y*x#8$smY`~g}5S-;?}aRiiRbL?qYa{8#q8xULvmDj6wh(aoCMj;e=p+{gw`hbiZck zCzQy|_^<8`V17g~?o2158RaL%7ysj_tuA#0F-Qk01XY`i)7j@!p?$*u_W_v9x4!50 zgOKY&Ly1Rxe9BXqQuC^31TIxK$gcIl{eL^r+@8@+&jNA{Oh-JmkwRc z@j?l*dXJ75xQTe{8aJuE-KDP`B2ZsGtQTeb<}S1(>x8K9`rBZhUk9BveTYV0F|gD24{Dcnt@;Ub6|rQ3AwW67Cq5<+?2;9GNfAuz!`ikzIFD=IJfE6 z1(%Pl3U>Z+Cv6~kKRI2C@d2bQI&`NRBKP-e)4XzP z+$F$Q&t%eMJP(Qki)Ub#!9w;{gp&!EIpSvM)ak9duw^u6*s*PBtY`aND`4my(BNwY z&*iN51qvM>W;B^$BZ>kJ-{)zJ)u!$H$oY_=YGC+2tSnqv-Ee${}tuv+$wqA@T9Iq z32pXU@({pH&DTh}Lh60SP20bD(BbF%TQ{wXz`;vtQU8LOw+@V{ri;A3%2uefpKY9ZrfO{Ad4`cGEFD%1x&49Dq zDdkj5_6x2kORK7peSrPw;?~+Gmhqbtv={T`EXzM^A$hoKrVw1RD$le9=OyPyrXDi} z-VZ|}OajlDyli~sxRvzJ{S{A%c$ zCcK6mcJhqQ3UnJf*5Mh}72SEu8T5MU&OUOHjdr*0j`VIVwHrRP{eVLk7=@f)wYuE( zvGmxD#~+QQvoyzl2cfMyB2p0pLcD zIQZDqYW7FR0h>8Z*KmCCLqic~{>X6Bv%Mh?9+%MM{1Yy&=(;;@vFx-@vub^pqMz+( zF1og%RDe;~YXhB6UP(t?ljm0@JgN6es3U3Wc0%sK$MiXKR9w;4tr~)X3bmF^#3XL8gy}{-+Fm`j-_*U2 zZr%QQwf~>dp6{TKvnS%S_~D%;V^**D{s+2Z4=q*4HV%|Wmj8u-#Q}{HDSWIH(z|b+ zWn6Nfx=lnr(x@6AaPYX&NWzkZA6JWeL z1T1*?*I38>hu#BPi6m@Nq_sx97zAKw%sQ~Pnyllc^hSS!_u%6v^YbhgeoIT^0Il&v z3%hh9|JGh+W&3LzhrM)AY=5zj$T$Rb@GW}Ns4{@^m5r_C~ zW6G;-e6=D7NA3uvV(J@5Y-Sux$fwj~Tm%2-YB^3`)GSTpEuG7crtupF6WH;b2|B{p ze%`A(KciAj5Q327C_qU8jPnE95E=Mc5NaLI%?1p-l&15i5b*_TK_m;OWB?qvltx_b zOmluFHx@D71#LxSh=S=~QN8RY-`U8>S8d7(RqX0hQgDX~$a;uCEewtV=STjI9b7zJ z-|Qj)5de}sf(YABd#K<1XqG56FrBp`gG|Bl`pf({whI?vGgt@~mQv+6>M#tq`WW=i zP7Y~+FB^sJzW*KV+Lk3RvLL&C3@1*gQE*mCKNkCv79L&#u$Dxi4;#gy+p8u29r|FZ zC(9ElUl-8Wz+E|06#)}G5hanKqL^GIQ~oa;0I2h1a)jC+=z#YGc%WJzbYrk9u443< zDaGqB>BK+~_aEL@>5-mHDMvcQyotCupPh^#!{N)n+&sYS?PeP)KvT3cAqE22yxTxX zMGJ{q`?wdHVi7@pP95uahLg#<6fTexb082mi{KQ0S7pEsH9-Pg%TA0j5znaN!d~!2 z^8gx}$kcpbBLdWgJU*+nCj;2XT5rdA>B@X6cwvT60L#_sg0x5x@_7WBJnhTD4FG<> zk0RWel<@ywDd;UwWMQ@aY-wj9P~-&X#WGORrf?XQ{70`&ZYYQX56m%mt%xg(~qcTyW%D7GT$w=5ttyPo$hwull4hGGh8v zi5_an(D$zCdg8BT)BD4IHs@oYr7Ou@+##|#~$UJbhz_>Z<9)zcly|+Unh<(c9wB}9-1r*&T033wC1t^m6|B=tY=jJ;& z5X=w(oRmkh z8GSlB5>^kWbzJ}EmQH>wGxb?ZF?%Nnj@kN@@SV_}MNsT82u76A_ZAe2tb>1*X(Il= zmxTjt{822B1~>_EnUmg+&iui>;p4-yA746m$sI^C-eGJZDNjqB2>!k;f{0SetU-av z2D(sVojjXDMvyP`6XEPK*%B?r3IJF5F=XzkmT*oe{TdLPABw{Q=6(2i)UHnAVB`Qc zx;7pD%CBZv9JyN(Fuc{!ij#mfB}5Ysk1v+ZCPV}nElH#is+t6ed*S9LxM`;MIHgC46>0 z??&@X(RI`Iz=b5P9|Q8KPg1>0yZt=u`Ez;Q-p9%{Tz$Ten=J7q+1z*=9zKaGGb}tI zC_jX^J+O`8)x3Li$G7kCrgNz~UtQ45Xjh7@ah8Of7&o zMQd)@fZuuT=;s}v8llue?!wP6UohF*IPe&#`q$xoDtV>E(>l)w(nf8xKfC{^PKfw-UruD$bOK@yTFk&$+Z0|TwLns`(9$ZU`KrJ z%ROv?RqtJJQVs%$#X&|C#IpOJ@@A2QqCtTCp5QOpqNoTwZ>rGo?a<@k%%corWH$;N z!^|fQnojmW0ubCgYB-WBK&r=eKcs!tsOTW2WouI%qu*5#IM2dXIriRx8($p|QSA;V z0!Gdv17-k)(KKLnaXnZzMSM@F$tNAo{CcT!UjpNY0aROXBPTah^?&Oo(ZCUIn1TD5 z4yHU-dpzjZdiNHmWZIBz{f_MMCf)3}L8y~OI0DT5A`w4+^(VDX=wlLZ2z%^5*Ol(7 zfB6*kT0xgCvG)mRDNxSs3cKQYD3x!L3U2Zu=F7&oE|mN1e^l1Lbv5kfD75x;8wn4g z?riO&!bAsT|1@CQdBIflr-87;TGmex>>}AAbcW;nJOn^Cyl67Ldf+Pqd#q0-uagO(!GneF9z;jF~yWvARfaesu!?zKr zQcHKT^Txd#1S5g~kP`HnZ55zapRCe8G73=3;($qopGNG~n`-z;Ff!a+AxC&YayzdJ z79sJ)Eb?=>ZM>lD-;i_}$5TVeD%bGr_xr2?6@EE%Y3_>#@@2t7!M_F}wtZ82W+czjk}7mtw6`N0a+E8cGk@Vn#yg>X(QW*vghs^NFID zo=C_>U3>A0@&)F!sq7TlEe3tAKoYQ7-ZFkfy~DnuE+-%_8cW3>aPwO}*MK^*aON2E$`Gx$tj7 zcVYj%XAVy+SC`q(taVs_&nTF4`r@IDHr7|WH} z{E(Yg04@F=`$-0Xrt(X?ujEXt89D9uzk~2^{(6HIE%v@4xp1dX3^9!mpU)77=;RVD zSdjn#(LxT%N`xDDNHS`C-CR+U0g1skzhJoVkOP0vOp9cDB>UFeggYhXrnzQ>$e}&% ztMw{UwkojrKE~!s@D(i%;qDQnx48{0CVQduxuXBRgRPog7~uj@+`##saXX*x;!U`Y$udwR6xA`^HkSI3_}c%4f_lz_s|UgjFHheC88kN z695jeaB-aX0RAM%-$a%u}N^C>P`F&HpbHoh$3 zH3b2vSQEnna^bm;2PN$iaJV#YRTN@155?V=4Xx%O>?n8W%mgm3PwhNWaGAY*6FQK| z0}w>yB>Ema3ZNebYD)s&ejQn~J{x(i`K`giXqBn#OSlFHXSF1@|3<;37tv_(GCMaZ zxE4(?7jDdXgiY0qg=X8ahj)Y2B>;+wos%MQNG6lcNue=6ICAriewqJV48XaAIiQ znXeQ@?z6W|mCRzGzZW=#9`-#4#ZJ;_koc z&;Jge6M_>keb=U4QjFIW>`uVIb<`hC@tEbTqM&A(0eciwh*-|gw&|Nh?u z-Sz#uJ4Vu{uWOz&P{~FZ!sYnA-Bs>up?;s9x+-r^cHs+1r+)M`{YyCB_WH2aP~DbG z4V=FhZ%Hf<6o1r8n!Rq;_pJD|pT~;!1wJ@?bGE?7?RcK@+V^*n84XexX@l32W~Wb^ zx!x4&Yx8<|>|^d~qVS)Z539wASuvNJ1ojI<TgMLmEQI=vIpHXDtWCmLTo-MF%K z3?r{>nUX>O-<-Bbi*VK#!gC(m9ZWiP-lTyFH){u|hF>4fft_xbE1)tkJj+jzGv+h?J z?*7q%5|UAS4_`9%@QIMWl4F?)cY_Ljbyy`qj7i$({IT(I-J2rn2Eru(2a`27y0vBU zIVWRxqm@c(ICRPP+?8#P(Y;f!Uu1$l%su@NemHn>LsFQ5B=l?1i1ENIFt5nU;@kLy z@T_+@e>19Tn>W1cv5~YOz&aop!_=DB1c~}EIe>Y~3plU ziof6%5sUG5S5nNAuAAZlr67Y?x|eANr%#hBy??0HMwJPw(tZBBY7q$YPL4&^bxNZF zgBz)=U|q<`IHwN;hi$3PiNk1E@-m>z#Yi9xc-d*IkB%b9-jMaxRExYwAm(P_AwaRw zX>}5i3a3Cq;!k+a`n=2%9rqn*l?U#k-dUS*IJOa1Yc*WR2t}?J9lm}3CXCpr=|V~#N{;3CGh6dEuerpjG>9>JT~LtkeDvl4=(J2c!W#E_>Gv-EC-r6M5EQx|$PS+z}8nG*+|drLtS z#)4f+k0sHgImQ};0>o|KLIfXWtOU4qD5Ms+B9h|)ufuckd~pdmRGP6iSON6CTy1r7 z0=&R6^loduDKaxQ=69^WfEh**`7^Ws?D0;Bl3WzOrz;tZ=)j`Z=*w@;8ztQ&{(J2#M1 z-}0*uXCo(?$W~NH$ZHxfsiF(0ToS@ED8G6-({PlQ^&?4LiYv5J2QosTO$j%s_Et3x zY&kI*Guhb{q9jsnU&WxmGPsi&b`9DHN(9{Og9t?J)UE14vU2i+MA!728}VoskrF`+ zUZfdOu#2XPLyO@BaTh``FkrJ3_hZ^OR~_(vbd8m0;8q0Mzu}I0uF1*in2Jxr#~D*K z>2q22B4dQ(H%ApEq)b;WmtOwvmup(h<8f#EzVH2{5f-Mo(0t-?{Ps|Bg#56>$J+Z9 z;1e|dk$|TvTZgWy+3elkCsb}P{^sUtd)ONiSvy@AWp<_ zqO|mAht4X6u8HF_SAngQ7D47VmO*ESjexAV-~PJ;gz~28!FROqnpmF2?%1X}1lOCyBh}uE z^`&Kal|4C9+8)u3%?<6P+0R}ZZSHVC*Ngl74ea3Z&y79BceZ^=&KT@0@y+*)sgqje z-`7}1zY4&bgbRn5?Ko`~YeTy4-a-l5){}v63Oy%2Rs_7TUY`8J_ISI! z0hv0`|8xZj2^M&9;Uj^;63-mixKddL(}4aeG{iN+Jb{Q+fq!gk%Vu@aP31*SY)2~F z7dfj`lC6I3m$w8lAxZDugUfnX0mJyn`@mlpP~|)ur41*-E?*ReyjH;`JKybHz0!q+ zmYng4!RgD;4NLTAupnNkW^LG4vm!xg4ei{mxc0Ei`JS6(NH_IceJ=k;;=KPgcRKGs z#a^yu!)E4~Ig`$o*Gmb&~kCg`vk605x#+jYK3-zONZSRT1$=|2`)K=_c zMxCzj=&)f6+HoIyJjFAckr&Ky4z#?SsS{0;Ml+~n0eo5jf&ox2-ldZ9QF06A4kDZ# zm|;=BMo3~ZskJ;i)eV^l5y(~aMrECdzw*3_;jd8&(M)8WN-$6JQ$!kc9Rr3L@u@CQ zpQ#dLS~em(zR5{RHk4APG3;#X!rNTbzXv19%U|vreeQ!w$DL^q8@UGdN|-!8f>DtD z?OLDslgngVt46@C3QjdtbvS=!EL`X6od9X_QLV^_{1`WP6$F^>qF=xq*9}94Ja}gE zZ#!u>jKKVt^xI{B)1FUlFC9{Mg6>#8@ik{;?(IIIUnh+xNf)Vlbkt zWJmahUCJj@c^p`3nE+{H#V2&B*!G?125!it<#E{!KOUg29iG!%aXcsWI9!Y`z9W^K zXN1oX;uZz~A#|IY-l@?Mt0=26<^Wc08WfwKHC8_;cD=mB8}))?QFC%K6#bAp9|p2X z=fC!NwH-5`DRdMG?kd2c72*Ka9`070_vsu8|Jm?Apiae8A6--ZpM`R;aq)7|8K3+; za2g+C(>X=U+EZ>s$%O#rmbqGygcNF8tbSkezcIb1vzo4FYkJecirU19HY~|ezxk?y z`m)CXV&A6zYP@xVp=ipJ(dOQ45a-0wL0(yNnrp7(XCTQ3hP}fG+AJO#C9vt~&Aenw zCD8(-O)<=xpd+q$$)*3Z7R10`>d)^tb=H-xTdi&~fY7st&T`q4Q5v1&wKvYXqn#TM zyH}(iqq7ot4S$NC5ueGi6SU#*k^=3~BO+{NAc!zTw$txd;ln{#usD{1m_)&GKnwGJ z`A0H{vcDVa5(}Cu&fDu&z03IQ=Ggk~>4c=uz}I)X)~g(uRuk)2-f4awtr*on(bQku z)zkHUOXH@GIv1ONr-SW$*$NZ?V2Q_BX!x`|mKH zftpVB%c;r^7q%{(8kl}6-^U>&-o?p-=fN;CG9k|{ZHflSi*hNX8FXD&$c$MZ3I*G` z4WB{<<1qz?Pe>9;v_hdfNuPa^_FhB!Q;3klG-LQ)ROl-8Huq-Ece2Uo)_)n}$qUzHncftob3PX96FQbcU<= zMA$v^VyDjPZ{FY9JW}&8blmAv_8U(s34CR=)8AQea9YjGzq-q^y5b}hONlkHJIA|(bkyf!{2VbT3lv$ z3^Rai^^?P92IU##zW1werT;j?Y+T9(=5AWHkJ1s!5+qx|^xmeXQ{3K~BLPE>OhkUc z79`uZXV}F`QEHlR@l19zmht0@l|9E30&-|1zs_30Yw@;w^d0`*=|CmA z&EW0Ry{)$o1KND|>DA6i3^Qv5F`jg*<;?8fhVkRlYx|4OI2i2H;$o~5fO4TD2jCn; zo5XG>xnqvwdgLT{F@dJnj+wvqnp@}mV7@&O{CJ>U)cT+P5|yJ?7*l}!f?&(4Y&h;) zvf#eoi4sw0Ms(=pf9u2b zB=rM+AV&7+)vkyev5abw$5>rxBOu?Wcz#2QN%-sPOLX`5ckYXy?%j~ zt5>Ce6T}R@lpf&rzzH%H_;~o8qqe?nJYJ|`TsgDmpYf|{IZls!LeE0%si5sWietbh zU(KN<*MH{^->6wm%esZ>d;aQT?r7@g&kqo7-@4}tRNbVvOtCQ01Ym4Q=y=!uWZgcRKU6pl*f_eN1cDVmLo1!M?+ z4g5rfD{{gbbdz1biR(8>)pyYU@Xs=?y*y=HzV_gMOW(1LFS>@wdLJr3-go01dpw?+ z>Saw9a)F^-_3P)R&71R6bXyBYl4hL+I`yjJzYf!%ou83Th`v#wET>%LH1g}W(y2Qv zK%S_3nqTs&&Pte5IbOjrK~q*iS?@_FG`D0;j|1NGC!Pa|-J^eryVneYORlD>@ zMux_Mt0z$vfJYOL9OXFy2W=f_c(wcDi`D5upBNr+5;I&zyq1M+-v{?u`ZYz~#;JVS z-$kb!lF^@?75|B5?C^u86*Le7-yDdadPTIN&;Z9UaWKX~nddfAc@81vXvrK9MBUjK z%Zn!*92>eS9T%-W+B)5HQ_-!|_O!uZ%G?snP@4|8HKkgKx$dN=`L-$WCJAKnUn)4Y zKKUTPwPRwxLxioH1NXxlE9Vc}&*+HKNtJB3k)RKb6FsUAN+DIP^8qRIy+5R$@mj!C zgtul{k|g|OydbEoFJ={c9^(Qnh(9n)UL*5uL$PK=upf)K!Si%(-}9q49&7!+az5$O;agqZ#KT9rMYx3{kjlVlse1qZ z74NT!FDuIPuz5DgY`vmU6XWesdhuV(^;7B=4w@(VJ8E8!%Im|QZn5$HO5&l@W2=J) z!Aa_(0mJZWbmW)O$lcGc=BtKmybnB1n7(bO_Skg03#(-0IngHGj^&Jmp3FBUpdxwjon9mov5HkN%4er{f|;*@I^- z>gC4f2Z#9DMTW;8VEPbnW`GbC?&Jru}9SqGO!Ih{{0k%A`N1VqX(7ed4qshkN zlFe|`EeCBAX^SIr1_6ZYtg3J<%OXzP^y&NG^p0U0*Uo)q+Yssx&!vS1>M*K@nI8cAChU{7_Med7w6C3-$?@Jl9rh`4mL9KL1i@bsw&%a^^&RfN znUcc#m`h*05(diTMODzL*Z#%6mOJZ~Q_IsEj4jV*kFb_m(`eUC%Xowqk0 z!;vydSCnQGI5aTWH?^P0&kG%piCh=#LK053=7sM3Iep@5Ysf-!#y=+xBlwuVzqs(@ zn)AC4$S%QZ5=1v#n6Y&3|5J0K;&1=|>YwoTK-8+UTC3@`*7wzD&n*|d!*-2M%{9?B zE)eWl>~*m#X{qr%TtT|GsLE z4*NWL)J#m2grFT#>4st(slD5cJKdtY(4)QW7MgbRLnB?u=Bd?R0Mwr2AdAtroMeQq zC1fFq5fz6VNJ4M3@y-?&mxu~yFDzWQd4FsyN1!?P_Oq61FUw-_&aw!;EpJz{c?utd zs1?LcRqQC#j0=p3-Lh~g)S5_1;q7$3cg1CY>UBBS*_;mWPP&uEk7ei(q0A>265Z7{ z9&gP$(RCg}7;O-Mi-mO{tuU|dfhHsNO`$3BKJe!5gha_esP-BKZR(?{tWXtXqqE^oLiat08dQUn&W+j}rTpjZa_HhnaG0eUAGkjszan>h2$Dal zsfdSHt-re)-!DCK{=tl4Nv{0q`8u9>fWD;IO^$wd7xf2xI}XV*6!~Kj2b8^wb%@`4jFcU;|5(k~ISBW=2KH z#1j%0t)L*M`ABQtfWiuz2WwGworofSA-Oc0HtVJurXw%9Jyt&_MO6o68JB1DSn3;G zfxu$D21C3Z+z66R?FTkAWI<$7QVp(()EJU~CdZFeku-0ICcEpkwgeE_E<|Pc-~vM7 zWP9P(?gPm9n1^@U;Tn&<-m!-Z6?f}-&2t2g=JO>U6?BIJmc5g-fap3{;PT%Qn7E$ANyM@t=iJq9)0&G6t4Td5<-}3a1w-EgcHh8`+cH zS&Jyc0D3Q?ULKIIz$nwV$s_jy+h7qfGxG9kh-LCMz=)KtKS0=^6y!e7@m_)}2CGCx zz$%N|x1G-=ij?Xmb{+G<=`fwaAgS37marHTZVmQukc)5{n3)LK=Ji$tZynt9XKQ;% zRk@E#+{%KxYao3IQQ#b5$frgF?NMLoLps2;GitCgno2SkfF@@~NmFc^z2;Zb(;>M9 z?CkT)sBmW&(A!jd>IhJ7fQaUpd?6{MsCUqw_a;f z5FP?tV=80=1iq|CKt_Mbq3L=xAUA~FQq+y@F5Ll4!cV~~J33AZ8@y&K)Q;rkEv z)E0qwo9hzIOq%VI #e5#e9CBl+8w^s6R3#xLe4wiKE`-yHsE%ED--)4E8$V z`uRSPnCug&tavd(GMCrsq*X)YJFGm2etGJBKEBy~g2UIJ<4UNYEuYD8f0IxL`5}^H6$SiAWqvfLT&v1faN08Lm+Is(@!;K8ZJ3S7)EG@anzisS-{W26h_n^LW{~ z3lRpjEj@x!yktOaz6&9QRv_`*9a5{F)A6)s32VuI)#&?ET#!pVBnmw( z4L`YJHL7MSBUJ!N9X)2`Eb?Lx%6THJ{dD*z|NL}bPz@g^<4wb<>))5cuBNq0glvrv zp#qrV%J|-|4+ib1yR+WzUYP(5F<0}~W9~oqbu|i8+7_V=!2cjwwij?tiG&;veMO-% z%jUfPBT{3D7PU&^_PP2t`K|8CfF=PrhabKH6yUGgol641A{{mHm&S1Nhl7+Zkwo%p z+oPmvNHbBgq=S?~cVUDDKv5LP^{=(u84OsA0dL4xaCg)4#!#F1@;DmkMu=JoE0&%u zz;!Xyk1;|33d>q(4G3kLnPULIx(g)cBe^jZenh~a#tN>Jv6exfk= zD8PXo%xS^^P1z_aZP`LxIJvB@J^4mwBLpav3k)frU+;U9HVZuI2`EA8aV~~iuAXC`#t+|L zKQ;tHQJH}kJj4JcT|dhPU_c7xB_v4horSSuknIWs3x`f{FDGf5i&C(Fh*EqV0r=V? z2ZYuQIQdN8Rlw+Zdo|5Lb0m7i~yODHswlgTBi4lhIw6ag%DXUXJ6YH3go5K zQE~iH5rQ<$iWlEol9JDSaw^IwM+cM)i|OrVHTW2>S(al5i}*mH;5j~IliZLDa(f@zA85YnEXdS)AQj z2kO%!=Xwy<|FB@{kPdjvOP$WWHG2~1@=Xak#X=@@yP@*s$qJGs_t!gJ0hK^WSD)TjA*<7(I7ZYY50>er4>@xz(I1c8#^V z&v>c(a+judC-X`2KsXpuSm?#_qn)0aRTFBg$ASt-nR908zN5w_|fcES5qj3mCD z*AJU!p`5s*N|5@rM4~6_6M56w4da@^Y3fcCpodl_s)A#(3{VB+{`i?hd{yPt7KG3rptQDN^eKg0jhVc3|X`;4Ct@+Qa1-P8sYaWQfYUmy|oT*{L z)VSosUgzMRm9)P^^kKT_H13u$*DHJR9S!AoW6pNoyVWYgd-dj8upXcnEhR}6iCeWi z(vGCIAR)^UJ!;t;FOT}}7gHqx_b$0hZ%ekUp(@0?vc)X6<_xq7Me0J7T8qa?*I=)H zP;lT5YopMMioGNknlsc;Yt|z=R?+u)h!{wMxc2LbE?_rSk%r`f zhsIt@EpCeTt+yUIihwx_{ujF>3{-5w0LQO1^VOi)hLMeyDoS=RQ@mEtU9Y21(NeWnZbV!2n~Px@WA7o z#95<4^T858;==uNnO4*5f;(yEMxzb1fC4_<_2LN48ke)_(iep;7Y4H)$M2s1dFmYi z23~G}duv=3S9}t1OhQo_Dsg zF5IHfG1Uyy5M=9F&QvSOK=cism5`OBI~tj;e)#+LdHSHAu|{8rurnH&uKCG( z?*qznAf*lR{Pni&;FSXyyF?6|K`Id-fw^#JVW7pNLSYZF=BaGt+~x9<|LD-lHHhF3 zEZzD(3b);>I@)6QO#XP^$emG1{+dYFTJtk5HMK}!Q`R{R1a=X8?B1uf{K3H_V@Sp8`;O>r%BV;m4{T}r2nba2rgKSH0MX{W~SmaF% zYlt#$bOQ1Lo-4SbB0Uf~_t z3U(U1C^8LG8mH~J19#m7R=V;r@dC`u?DsscQ6BED?WvtAaz2%1ei=G4R0M&IM`h!e zT@1*>rYGBc#aRVThiCUaJwW(`p3Wt@PQtxY-jOcXWvSKnd$HHG2+T*kL1BD| zWPRMsx!YkoE;{iPic$Sc;?eRIKC5JYF-@~9w9uhuJF?}yTB%ls~ z(*Gii8B>@L`s{3B7ZW?d-nTG^3j5@8KMs_*T1DA-7-WWHlua;Po)56tQ})Uw3YWY{ z=*g;|TfLB@P*TI&uC~=W(-c!3uQ-E?)oSTB8*A?m_&)>I z+f57H0H-|eOAM?|)9ws-UCJ-X6Evm{z8+|kw#%MvxWVLoHei^jw1sNvf2il*ZQC@g zF>-#0)4as%#Cxcv!2>T|VBxV=5lw$5pu7C7z6q(n6xZAg)L`2!_Ns<^{CiUw<-jHLU%7!kIpw{2W%^X@;mWNA$cbCEeiInpaqo%IDk z5@C-m|lRqi$k&@RMK{6mDHY{j>#Y~ewwZ^)Np$>n_H zTr0aiOSY+*isizI4`?%(7`D)w@Ol4?xmxAWSb4;Q{|3uijUMb(%_7=a;TWu{56ba# z9-;-jJ?9S61+eu3pjI>J*zD%T0k;F<1LwrqB-~BZb2o&`4^GySs4)eqvc9K&g zrdN<~26=t4d#@zEyRnn{a!mF~QAq7#yO4>54ZlfBjHUoy!#R;goi&vCY791@{_bl0 z8?W5zt~rGTFDT2$pf4BwnXp%v9}lyk~CB`q*Uim zPp97Jv+ZSl{&B)vrIY8fs^a6zaSIxjwpCY-U?_)BCzH{~p4j{+4$l-*5$hOcdJHB_ zl_ZHPaqtmwig&4^G|89FT;ecs>CKkNpja$}C6{IpGsMf7k=D#*=j)Gh{?mV*?UQYl z&OM^?n(#VY$Hl>cWkAA?3IuW!uhrkeU=D7+9;d-dSZHz?Isv zb^pu-#_Ho>V3KiiYuGR6pPW#;4Is|XF>oPmhwuUPWmw%jv2BMVQ)*8^MYd1U3!K}j z;#qHvKSo0f`OoB;6xV88C<)AayJ65e(>O5igW;%GKDdr=1M!2|-9G8mjFB8UeD~r$ zc)Hg=dZCs;sR;dt2>Z8c^B^d|eXN+Pu2`F`VA^a~pplu9ElKn+j!{xJu}f>eMQ`=L zZU#y9^w%1$OmGab4Q}b2S`ORx%Tpa4BrR`6)eDw2v0pgZswLxso=t-wL$;U{cdO4J z11TY$^*wavqQMd(8DpcMm8Z??rKOdL!Lt&R%EiQ8=h$NGJRv=5IL;0xb}2pTY`N%h ze}6ikuy)=b;BaH&l1kA5;)|#MZNNBW2V(xSlNF$9q6y~Xin-8*-&XZs=!Il za&OB?r)x(8cKjz_r2M?bXkcyqHP| z^wupB7kg}#E^fEM&8gMa`XK}Syu|GT0gGzX8@T|&q(DyU+3p1iL%xvfDe;He(=A0p z4{RnQSd3e^ne(?F@fzf%QVjaR5DjAo(-D>B$a=6?4L%}w%sH9_D%i^Z+d9$rN^bDo zBi_S}EpLSODh((kv#9}QfSDd=9qNp2QIrD4P*~`{YJcsU|1kb{LNoR9%*7GCD)Z;T zdVgeX1lra1&Aun^P953CZWipt(~9 z9!st?i&ZNOGKx4`l1t>_nhF>ws#9 zDuSZtv0(eM}z5 zNT3TB;+a2tvJ8=}dL-7gpV1sc2#@s!LVxE&P*~F_4>%t@f_f*a80o^+u2W+hi zOf^BL4^PXhfiP{i1J7}+;~u)OzW~aQT1W_h98FhySmlIGr6|82?X`or@-o=P$id^D z4!1@CR8Oa+$O=onK%&(K#@CaniHIxB6dwXU9>O4@mz;^@W&C$BrYaV+NBn!^;QfF$ z8$5`PKCFRh-j1_+NyQRbTLeR+Pkb2?)FbgDyZ?g%zmrZg#B2(gvK)mq{HMpcK@ELH7cQ5>ZCKm%|k0a%ys@=#HII4R$sUo>nY`+SEJo z^6i1#n;N5RHejMY3j*p8N8=sI-~qdc1B;qK9yb_r7zYe1f%-C)A5XKv7p0MThM!DM zr;#z3&I`44DGY;pd8bFy5{Rof_(>6w&Qt91!-FLUVQDHhC+dnM;Ig3Q1ma0CS4a8H zz2YgLIUmtmp%1}!(qar2EhkxkVFxOui77e=h#v@`+T)G|js{SrLKk9P(Fl%6Z4tom ze*|dqvoTa;MkCT3mvD7kEfwSOME?+0Kp8nR^*T%CQquCsh2Av8!Z}pYQ=w+@^SJ%*hHfVkn?iZ0v_Tw;rLAZIF$wa{Jpw|N6cVeVy@py0 z)j!o+00DWu9(!JO`YMt|I8X9B?nuMttsPaJvlGzb#{X3x-~<^b3db1IF1RbR74#iA-@MzI6l5F zEX*=+?SAFYU5kUh5CUeyQ)WKm=Lz6D)A!?^RXhkg#|uhi7;S|&&hsQjF^s%3HFmNU z^P3HNxp^O(3k4Le|Klu;pyB_FWs<g7ZbF6rqmK;z= zYel31FtKYJ7NkybS1?Cd$KU>Ff&kpsOMr+)c?f6e2<3nw_}&Ak8Wt3&-e`bgfM<~o zKWN71bzB5^sC84pnq6@rQA0dB@Ft$o&jD}q9(AQF&k&IdK>;BsJjNhp?DJ6?`Ov$ZYHM2H+-s$MM3669C(aD-Oq88 z#nK$;cpR1Lbo7X29IG(5xu1(9g+ z9SDf6q)+Cg>9_AHKalJ{W95MXoN9O@rK*?-Iv&tTw<=goMj9xjzfLhpZt-lvune{H z>d6?Ym~^&>2nMb3P6tSSiRBs-qKwuDokV&3Ei%$Oo0)H8wxAZ9boF@_CfzD9A50#kz)wdlnqnR1- z``$46FPu?I3{yHF%rK>hM1O~n%NDh8g!1g6|J$`4AkRq0&9Eqxo=&M6^2j++afnWT z@EsT6-sm!rgnR+ODt9{q3JG)?>`hl|c~VHDM9A_mGJT0iw3VB&AlnH6OJnXeP!^-a zlI}-p*27ARwKEa4tgqdT6w2U&93=w01Mb)QMlFHr&0%Qe%Q9O)u~tKX6H8adf-02N zs*NLn+8J?#HOntfA;ZS@4t3PQP}dovfK8nW9E&>`1Wncfo_?0IAcIcDc3_};eR8z& zZrJx$=W_wwo?@&v&*(iq7!Dh=++W2oQ}7VlL?CbWQss;HX`xdY{RyI}4}P8~e5F(6 zmk^m*`}KtQdUBl|@cj4lS1}MFG-(Q=Q_!^gl0W;^7+Vct_cj|77N7K4xr3IkV3aa< z{Ah}2t*>=Ti((29_-e_+DZoBL3$^$pcHL1lvo=MM`oukuL?P8S-e~s6FjLc<5G_>< zSmRLpkjmg2d(oZTCuw-ID;sNu$&6d|w|voaNW(68qnCFY=Vx*@5;)@U=I?5jp?G5u z{(2&=+H_10KAl;Hry?;f@M`{V#Ke|$j#P*Hx6 zS<$o*F|VCnOUaI&x_8`$sGK0Cn6Gn@Sj*%Coe70f(nm+okUSrSDX|yP;zchIhP3gV z-h+f1DBm;-sNuE83IzZcNzrucwbD2i%!%=n>k4oUYtJqW*BO_;%#VRz_#;=I?q0xF zUvFn?(l}{Qz6yYiG#p@Gr8qM{>OL_V4g|=i#ULV}P#y!jh1Y3z*5k|$xzOY{Sq^1? zLW0zr%kSi3e+ZjKVvS*|zD(Jh$Xne93zaK8u767q0U8RN zYH(74@7%u~E|IT6KkPV|ix&lnJLq`jT2a9#adDLFE;DCd@TAc+jgMRI-5bLd{UuWAAVrNNet_@m|B0uoTcL&Jzl8uaCV5 zI)!zlX1v6cJQ%EUNu%mK3>aj@P8w6U^`B^u5tv7_L@>XnTmVh6js&ook;+WYL#oy*NXZlI4sZ``=8pf*yuwwC zBdy4Jaci2IvAvA7wJ$2KPSsY7k%|aG)cR0O@12gc?M_xmf@pYe0!d9g9h=O>O7ZLH7J+tRrAb z?$CX601l%1iRk`S1k~9!^43v^lJCE_N2tpQSWW@M)lcwFN~sntoW%&xwht+^arlGe z-!6-jOz}HHitrpp2n7qVX6)6wZ?EFH?grE!neBZKc5ShPE!FCt4>ShLT!YOe7?@VkS$eSBE>5R5R-b$P2ywt}g`(`%9u7v~LcSQrghwGcg-sj44592A$nS3bs} zPi;LcDe7!Co9-R__#qJkh?PQW)~CKIXo~a$SsDyehZR)>L{fv+`yL)NyZr_5yB+Lavl>wjB`SC{WwiuP=DRsQ z(goY81s&{=VP+Q=KhO8rfbFi(7TJtI0K4Xf9)W5!S42h5Tn1v za&v?eglB0c?~QqM)jCul?1i?-6{pzhqNTgcI)Z|r*k1}+1M^O*@5&OB+{b#fd&hZD z90)wT?p93M-d7N?8*Ip~iS%;L6+UUE_t)oaW$?J(rbFB0GtWNN+a zRUfEoYhjO{Dt)}gZAW$aSBY_;32o%|{I)PU5WMx}r;Oav70PzbL5kkJh%U<=IOfz- zUWQfZubJ@@eKTz$l;ZbUiRnrGai*H*PU`B$vqGCeKncXp|92@<(mtjsC<1f#Si#t- zI|GFciE>vV_s!?+>hb?QxD~s(v-U#Lu6hg3E&i(uUrU0vYgJX+(`;^@c=w@DlLf4^H7LQrm5_3SoP8US8Rh1DKOg95A-rWCsi~} ztUdZ9<9vhOn@I0`HQo6RzODO8ZBz5X!moMZqmY@Ugqvzsr27~G8VbLI-pW~X_Y_hm3?kqfQLiOp>wu65esK4 zOal&R9<0)~gxm6!)EryAcFqvfIlJf;o9?{*huFA5QA5ZRRSMerg7ziLrXJ8rjMt}v zZdRF0GUh|isEcae`cI?XQ8RwU{v|I z9wN*>k4vpq*=5P5DHJpCt}hM0DJK&>0xnZcy*E4B+$#kz9cTIa$jnsoT`e3C@A4lc zN)lzm(FWgk&7xH)^|>v}4VJtiGldwSGcS_=kRZ0aLbxaZb}4OB`Dw!{s>u?xk1xfX zm?u8f&=`Fx*H^O0#ZWct8wUg~$E5{A3vhY<_iiK0qXG@$r5h>ZTnhG znFe-6{6`8+HcbJ=y;OfP3M>RDS?TO|QBM)1$b94?XvRb`TXgI?W^Djk07+cBqBLrYI+xDj2}!1fVtuF~B%L!i5uij#0sYxot#GGK z%Nt9;omio;b8H>E0?`vfTtYAkU8q3W&&c?pjCoZpX^3ge9&JpDJs#D1;9+yY~C#)ELxipSG_3AYl3l1SA8@ zZu%Lmv{nL#A3he<0`q%?XTi6RnAjZt8*ixKR6l~^RtzRk_# z^YVPGSV_P@h>Pk9xKwq?(>83T8x@y-0%u)eK&p-P=Wm5+-P&kZI?1jvLer)QizsG_ z7iZ;=J%J0dnnxX^VJV=P5{(sT!(@gtQiq~f%|u>+{aT0*{#Nq<7JL_?b$jV>dTxCd z(<9QPx%@|^ zTmudLqDYjf3wW(XS z#WI$j9(un0_aIN?9+gp&(b##@mIH&ZFDlZTZWAVao14%RspWiQ-0hGR%)XD0t(xmS$wF!_iw*!`@Kl#5i=s1>CbP*WB2c9DE;%&{2C#{VClu--(!X&c6B4GlO1<`c_+I| zo(3CsF3;Tp8N2N-z|@?ErgrrIYT+C4PL<6}t^ojUtE&R?uB z7+LFf>~o=JstAj*|J~{Q*3cMIwmc<;7?ml39;kdxUmAVh5R-0KJfi9=qW!*Uk3~~-0{)i-PdnURV4`)99n;?1SlBR z4mEpig+>Ib068Q{+rjmpN5hY72kBAGp)-Nv>TE_yZ3`ljXYF}me-;hw4RXWb4PTMWA6aa?Ket*CkHSo9W)4rskfR^JI^quwg z0#l6=)lV1;DZ%7Z&r2j259<0%a9`88oEq?XL%QSS2=ly0`=CH)r|{l5^+pl_kdfb{ zpvcG_;w2djN9Un;C0~2Hm$PQ`BkJ_K9e7)Ac!8|zQ16hDq8~-f$@ynkIy*5b`*$8Jg@cUQx`CAueiSq|j$mQKLW42t_JD z{k`DFw-36<8wlu0dJ$*?VJdfg?WaUu#(4${apU9f=)HMEyr!7+HR&5p4RHIqKM!{R z>ZB{ZnN&}4mR^O?8jYR|;z1E`*<`3Sg=Ko67tgXdM5=NSZm*b0A%?(4a56VUgEgiD z52D&^qMZWH{VmiV0ZOA={G{z>nM%|kEl?X6mHNftYBibzYIJvi{!rj^8-ED$6p`qI6xKo7$HW)6@{gR46vHF9G3F~aZH=3#+3YBJ ziSJxoozCc;UB)JvL>7X%8Nw32$||>-BimfN`cAom0|Z(}op$B|6z65CZeb_@=G7Co zj6i4}m>hVBG$$ewob0>dI0Tw$`K0S`DE!6jY#SQInms=Gy7`qJFvAfvA;ZfF!w?0D z5Z6Ryvu-j6i#=e6O|yVIYXzf@n6vS~)pR}tvvS%7<#qX3{MeOx+Z>aQso=95uLcn9 z<43mOjX4ClzrvW2S0Z=DXg%aAHtE}ok9X;8D_-z;ws4|OxC6w3AeVU;Ah%g=$H9|ZT?NVoSlK#BD-kGE!DP^MsK*_djw@^UANYpo#=wYa&6aJA< zivS{y!WOS_`G?L@M%_>r%M@U!oe)<*<&?h?pRO7Ls2>8JYM|8eWhtZ-=ROAIlPGX0 zEbEB?hKK+^FuyKuu#AB3&<#yb85JcVcS%8;1?S$JaLh0=Qn}&3yzOfpqOn}G6mg;}S?pws$x8C7N zS6#lAcm*L)#Ewa(;>B1*Vyd{>2wXRVYf@4aNx)>e#h>N_@PxfKa~fbJ7|m0aku+jj zcrx(;#Bo8Pt~-dDS`y$u&j0{gvJ$199)sh+pD7P8{PPq+h=LS3e?jbpSYXTx=y(DV zf|ef<;&_w{SBMmgOKR%zvM2&F$eAC3o36eIN-qoa?|6i(UiV}D^SM>3j9KcZ_1vi` zLeX|pn*#PAAcX*GiefPqDTzo)s`2>fKg0-G$_?k-%sctxHUf2%k7-{|O?i8z`gjiF zT?*l6qCQn745&Wx#!<;+oO^+qMDo`&Vv#c`G$b=bYCWOsLBFj*JP1yG|6EX<535(G zGIQptXl~u@=89THl)y|H_nQ_4wI9+JF^y6D0No||Jj@X6e`L|P1C8dD5Gjcw0oo~L zR|qB~12qw{NsWOY1LRin(P#~@{w4$+>)>Fi+lgT@cBQ&J z%K(Lk2$dCeg=hk<*%bnG&|2`JXygSzjfVase+5LN<&ZMyBjFlVtEC=q0m+roux5rZrS(?ukQY5_g1Q?bWGLXfp0+5tex^Wu1S9l5t0A`Q~kRkyJ zt2FyBh*n`CmNtEL^Q_jGpaM=vd5l}(D(KU>>{)uc-$m(7pmzhNu$8--0A87G5jE3+M9tR)j{z!3B^Zk%zNb^9(T)7Ty#E<1>pc3o;qv zH*tDaxPx!PZy8?U6Zwp|UJ@4w!;3F7iQ^=Y_O)k3`r1Qx@~J^7pnmGxZg6B5`2~)2 z1RiRPP{S?@*o}$9gXWTh8d|5i^$uA8MGUL$nL^Ya`NRnOq72uEohfD-iy@Sd;qTn%qo1|psRypXVsRhsmfD)pyh0@4wQqa2g z&0M$6wzigERbE=W09m&E49=Wz8otF=bp3ERrvJ07a;ob0Re^t z3r9hUSJI=_pI^~>{?UDc6y~J)pk!YZ5N~+UD>2y_^qGeV^t>)^cLcslvpu=M2?xTZ z1NsxVG*fXj!Hd!5M?C5uWu|AjuOcTCtk)hbC}(1qy=7tVZ59FWP?@u3Jp*4@_X;P}L23q;HUAdopVP^cx z+I1>(Kbsl*^$T5)i=A|f;pfGpjxicn(&%=V2~c=PB;gT`WBl-aDJ>doeTfIy`Q_$v zxNaD0!xqOsY=fXBpiSQTfq^o|0C1GE0igGOk_LkSbQQo`6JMVX1ywjVAWKdPSAtmL zn#o|YQCNu=3bCxh7jH;Fy6^%M%fjsdvWGwDU`;iW-pk#1YaVBYr&;0z>t>P@|_}{$_!~|#`(z>4-xaRVra`V!~xVQGMB?fi> zc$XelI#`oiX;5IGt{jmuJkcH|YjC#l7}Hk1*YdV=Z(1v6DOM=Cwew`u{5>W z_>J3@#tL%G;ybPK*efDvam8-8o0nUwWXHVkj=7j5tp_)ne6&tl&|&f649v7#Xfj1n zNYFtOW)^uDmX!ImdPr0Dxh$vCu~Q*2D+-LG)GNnaLjLv8it;ZlM6 z8`V9gVG4*ia$kX8VK|8Iz3^|{YbU4pm;^xVYioV@s~PSL0IjJL{**UR7Nnwps_cQ$ zu7}Gr4L&9XbYXnYw60*X06)A!abR*gd_3(_G6L@If(n`9V32@1;=zKEB{=Z+pQXTM zE(W6T2Fl3GLHd$u$M(kD8}k!2D@r8+j{mynb>7sQcvKYbaG2Xt0yp@uy=C_zGAF4d z5r7fAK?iZoPCLp9oP=`Tbs;_a>}-<{|2w=s`keV<>}u+CMMKWF)1z zD7%IY`R;JUgyZR#61w*pa96;*>|uRo0Ql}fv=@Ndbp{}hs=m(>6tXqve0isgB_lli zR?QnQhaN3An!r z@|AcWIhuxk^$Tj(3)1R-xcl{hOzTr zZ(S^7D5ryD9KUNyK%q*Z*hbTVW^D{Z+pl|7(}6BZ|NYQHwardppQR!SMCA&=5?P90 zK_s6Kgh2jHmzZ?3#r=(MB2-Y^c&xwzSkEAo{Ndr;;dp9wBYV(RdQn+V-2g=>xHU;C zK@Z^csWj9z@h6@oZoT8!xt+nsvFOubNe&=tZ`)$0392uRU)iD8<9}-nLY-biQz)hI zB?V9Nd|FQhjaYODm3G)Yh!aJAo9RXhF~w0#d%kbX)vrf%^2IXtpYvMbVNZzIX+ml( z5UI}L!xf(e#1OT$8}d}Ad-4V z+|`4))kmJWYfNZPR%~HWdnzAq5rJ`m+#vhlK8uVaxZ`1P(Oc7?oF!nuxuW~WB$C6Z zC?!W=5HJ|sR`5B%jz}em*&RhVKD(($0hJ10e!s2X0fno}K^BI;OIoz$b=ZI>0D`H2 z>Sf6fxFo1QyNhuD60~0ju6v++0+kn%&m5b^^IxRu<%zinIV3%b^ev#1W$s4{Zw_vp zE6oY=Pu6@EJ1Da^y=q<^MSee*5+PUT-YT95qGD*oB6Hr=|ca`#|c+SqL% zbkGo4iqO31Y1@isl2<>#Twoz49!`Y^(U4P2<}b_2T_R%YB#R3z<76X}=dZVySF$r8 zLtf04eZ};0?^F?YqL~5dfn-n1mec77N(im*ya$&%^@iuyI1Ak>Fx2sgjOwz;={|UI z^ko%?;71-CCfrtj_;)LiR$qX?>Rrv-6s=i! zQR_tjvj8Imc5__-B?{%QMNkh!nh&`vBmeHQteQneVol|iU0;o^*g06>lhE8p4;43) z;kfZunDQ3tCzu6eXI8FCOo?wdU#cai39p)z*&ToD?A)@WCMIUJ#Ov9xOo^go-WOFM zeUQ6k#!D^AWL71Y@Bpfa(_Uc!_R{`~KBnelM@&INQuj8;*2=A2EVJr$dbYQ*<(ibw z)WGKObfw3}&X@&KWQjSzk#ZJ}bYpAO4No>10lUOYYVQPy{Apmr+Di^4vsf;@n($k< z-3J6B;+R_x+VooVfhR!0V;FOhNhN@G2{J$Oa)ba1Q}w(F909PX^mikw^|W@LJBtDC z@d!A^2dJA8;4OA1D8o?efs7!u!;0J-%)E$U8%#O{_Xd=f>JXMWx|FRG{>7Aw5+BoF z-8%#)oikE-=*b;i|1FiZl@}YFx`MMW#OrIPN8gjGCyo!O4d^!574kDR^WMOA)IcEZ zZ~coTD_oWO8)pR|ca`>GqZbyYsIq(G;0Kb`To!z{nLM{Q)bJq16#XKgh)4mdX>RzXlxr!7(jrVLOO+HjZIiWn z)@zrAvGAG+&Q8Lh3DfJ})btdY!r<`!fc6|tFvis1)I@c6BP~mi0JZ&ZT6gHg!`&mu z6O539!Hb|L-z+XoCGaD@?_i0?!=!GoPB3USYp}laVRtu~5WB2B5~h0CGW4oKQC6$8 z9cN4K*8f3$Wg1^$%dCu^#RK)DOl-+M6E%ww<)PxM`(kZM4&}aiK9n(1^kuHH<3?OK3=?i|>PNK=td0G+worpW>TJ4cPUgGtwaG<`T;OTa#aH>`JzHmEf%aeFF>7BwxFboszC|;yLxyOrAgQa1 zQ-TTADG*@MeSf!dXm$+ovNzK79DvDNdtuP^h!Fofd+s}|%vAw23ImCaKJbB$R{`~o z81x81j=yCCXuF4%ZSGVDUw|)P)OwjhW}zOT`HCcLl`dr}5NVvKMV-ojey~>leC|X+ zqI%?ekw<)krY2e=1;lgEid5?U!lMQmiR}F$goQCBhG{a6dzmESc|Tk&CeS z{fJF$@pLAJCS3fgTyc;9+J3}^-qtab6ew{b;)&?KZHV13onBX)0H0!if~?!XFzGHJEjt3Rj`9ViI+kDkg=5N7rfLBX=o;@0ooeyCO452JHt3RNEzmT z;EYVv>zq(ac1eZ$!`c9OD$T6!^CmSJ-FyBFW4w)OzW{6 z*d#HWpy>OmEAyp64qY>3I*!8MM08(=|W) zXHILrEunYk<%KM%x)z_gjf*?5-7pW`!s)zz+q9I7Iw2{&*IVEk1VjCeELU)r*2i{* zA-h(fPKKMQbpUr9x@OoENym)w%(V5PwAq_Sho`-8v+lgVd^1(>rB`_0IJ7MhnU@%886 zJMhCu9W;^*&si*g=t;KYNJsxl50NoEr(Tuse9Oz}tnQI6!u&ISjw#(`l?zX;mM=k~9i;h3DxaT|3XnZ1;IONt zik)c~tbevKtY%8$R(AZywQYSgoD~MMQjOA76|*~_L7qkBC`1vQ~Q zM!*YUO=oU-ihxk|Y~>YFW^G4r0s-AlnGC&cwkvdfNu9zey3U{$6}y4#gc(sm0}KoIqS6A7<_NdAb>&Z%?$=fK7}UGeKC>1RhCKC;8C^d()|jBA?FqY@pB6mO zNb`1w>eNS0?ma53$?lR61tIhgcdImx0M_?gWJ_Y0Y0;6y*NLOER+Ge3ayF4yzdGv1 zs#02(#W3tszLhc@&p|`!4tE?}2`nn}ZCHF`fmF2dwP$%ERXAb-5}H`7nCxEl5|If` zY>4%Y7Z)cJDM!n`l|2>@#OCGTUt!X1FJ zxOkrf0D&Qcb}9lfx;czJ5c_KdQycCYBn~tm-i3JxC>6mZ(7eh-Jn* zz&i3n7k*E>d4R;fJQNx}d7Eg+#7)e?oz1(7 z+jm0Oz6&KwTdy@bYFYh`^Gb-4}QIC(Ln?d25cK@TS`J z7~b5mKy`H->LD?A9WJ=N7+Tu$?epTv57(wsoU$G_H@&`+86Z=6`cz%Ns%(76dd2cL z8eKqZOrkxfpoV?=-!q{{6TNxagdMO3o*X!K@7bBhotsF8>#z!C^SdJb=2KYf2-{mK ze5roy*^8c&@AZES{vS!_9niGew(%z|Ev4)!OD$6<8vzA{Q}#yo7TJ3*5yS=rWGWya z3MhM&J!ObiMYhPEf+#8*#{pDaZ_fAq1*J(y(`-`f|@|9(xuC)@D2nr}2z z{T2&&?MAelVv0hX;3;#5J+0JVk53V8ZQ0Ip4?+;KKkH3mYL_Ao6+EuRpjItMdZ_UO zl4pNV%Z0mi;(1dR6OEf@AH2P^Zc(1UXMvFgT0R&4eYaNH<`p#&fvk{^QF6ZSC!!lz zl`}?OOG|HWDPg^-EL!FHG4OoI~_iI~T8p%q^tZb^bYMZ%xq4VJc8yYrEs# z-t)$aq<0}V*2;KM)AMoexSZG}t4aMO>z+|coqq(Y8?v(2MX~CvJ_AD=b2I;XA2%T9)zm}- zQX@0iNQ?%k>Fp{coV#o`MB*}C2xuz>t37pgBHVl4tSNw!G8-xoE%Ql%vJmf+{m$bb zQ>pgu{Nxuo<4j0dMT3)PO9=;x*Ays`$sUT{rdRZ(pLNKbr9Es}$Na?0X6}#0w>g%u z3O%J^Bt07q>m{krS}k?F(jfCdWDa^*URs@>Aj{pF#hUDFvnsLD8oAwrju8EoY*f)sBAIu*cE}^8@E!}{ zGjzw;m=h>n1U;8eRxG>^MI)A-_^|Bj^R3m|70vQ`&m+qY@Lg#NgZ~bE;x~3?F$dl= zE{c^|NOgk)^>J9#h^j=esg_q#-~!TqluH4Zo2!urAlQHyiQ;eCko?K!!|r?1mWl!x z28!LjfmS^_e}qiYj^mXjCACm?1C~ZggH4TtvQ05sx$PH0?!Ns?6*}XY%Oc<)D!8y# z^j^vjdxJBK?krR+9CZnws2b>bjb8^shc#P)uYoZOjyBwcBp&M znGx3xN~$GJKUm|DkZ-m4L8ta3lYcYJlf`h4-tSwf%c6*;`1jXTT25FCF@ohm+4y8$ zAe*Fg>v!Y=&UD`WFs5x8Lx4ct*lUn)#Q9RDINNjF(!C_W6F&gOOz1J5EE$wR|WAQ%^?y z`sw^rRyVdb_v~{gtJC+-T;V4MxxvY(M8(qw=ecOP183zR4j=}d*go(W>%a){RbR*$ z@|%AlS8#unB4@)nm+zEilu1$i5AFe|0GZ_OI858QeNaR)s8)A6uZizjGsyhecVfaX@Y@l|mBWHv{rY5D3=?J~UkSv_#YI zzenX{Q8soxAlt}<$wctA)s~a>2qI`E9IlrYRa!ybPY*?wTGgBRLIm|vAcqSad_5gJ z;sb)gW&X@q0(k)P2PdHWixD*!j-3`i{?0O&H`Ar5xa1%t;y1*T)gI=VoSsfLG9F|yzM(ZH0vSwn{` z_W#A*v-Jk=?7%!ygDF=rhTxN!$XE2xYHOS-jWpCTlqmlpRJr7a^7RklLy4nz=Aunc z$a?JiAT}MnGS$iime0^ysE1q_0y0i)HWj9#=}6C9(6`?!k(kbQWIO8BE+i9X_gDVR zc~~4%nzksfC4moTJq4Jq;7Si1MzeGI&9P@H*5(bpPzVx4HS!ce2`~N zI0=6=ob*ho$*V%{H>b-I>jh0|mj(KG{_P9j z`F^HJ)f$kXK8Py)r(Jb==n*nXYh4sA(~C6BpRLS`8rWH&6L{LnuoH4#Zc{D_m9WFZ zv1zV;i-r8->q)Fgg?}@U21a()Rz7U8%DOcS0reNv`!xP>_!+U@zlV@P+_f~_lf6?C zPyO!B3%+@viMh=v3A8NO%x^uAq_evlzD=O2AH?(&UbAaoVG@!okxb&gl5?0s48{GO zDDw>8kT?s@JK%NnGrGf*3|a$9o#iVYnVl^7$DF*dG@3TEV*9G>;ZDn*QU`XXp^#GG z)>7Jt`=MQ5m2>waPz4HBnY#5Oxqa0*hCR&Qn@){$)A)Cu7hQXL0^h`Z2%R;&lOBB* zFHyXuZ6#j6VJ+19Elox*DE5i5uD&W3nM=Ga$7NAQ*5n6O$$9sL&rfG74)Tp0DyaMu z6GOh>&}Y;k+4|@Xab#b~_>4GZFYMOOUys`libQNmo!EYW=%We`$pO7!UcMWmWf!+% z%oVIpH-}JMezACHsaCb;vfJgAG{?T?I0@}1-wPioDRj>!3OAO{TAg~iR8%u5(;8{? zHPbD2ZF)iB%R=$~@9kaV#wT_mN<}WOTfr>(<_~SVWWqe*gE?p}HAr&VI^5?ymd=p1 z)m5;#l(XjAU#YGQEZNEH6hcZWkqa7hP1qO6bF`8A8C@e>YMpz}Lf<1%=pn z<0dV??_k|C8XUh;?*>Z^Q+0FX37?YrS^IBUpV3DITl*cKd zC=jemE0%0<>KTLOrUE2FLb@W49gzB;a7u^6vqC@v z?|05B1S5T^kia@7ptru*jzoTu?wM54r6V9@!A)Iuqzfeqo%ks=v2Ji1L0jpW*5Yej z8ecKuJH`}bD~~=T zl>9ekr6$p^(h=BBw*U7c^SXB~niX+R8ps=)Bb=z6RzYx%4%1=!wB#U`r8Je*6 zK7DEcR-w|!L9z^-e=ma;m^lWc7IoN$RA4Lg(L8SiZRl0&T)3U zl(=Y}3IjA^GxZOK+flDzq z3}>sh6q`txbl!yuUKCu>>di~wbjqIxB+-dZ64I^X;@4f>laz;D|JxMEdxB&POKl=U zzHM_U71CTOGiEfCERAbFJFXsjgR@W*4VHKw2Bn`;Pdp~-o|DtUvEcDH>nrb2AhUi}ujD~F^50>Q0wFuc zp{T6|YKD`fzWw}m^OXH>{ng0>lMB&}L6L9F9FCsJveHb9KRw*FgaaVQW z&W9JyKU&|{74jZQM28>*4YYUaO>PiuHG>4JKEeS)fof;VPp^2CH{-eVK1)?{i*+kV z_&;?RNEgiVwWPEl)so&W>LP+eMune^{crD1}ig#OPpkTVQari=e=<^RYk*L=VM;V z3B7%dWX*Gr9+o{vA-rn4VHW12@ESkKj>n1?nGYU{`o!9XFQ22-+wMMUn~}>4IR5Il zo^Gq)zIWMvc|qVz&xw^cTSzxXpAV%1&R<&0*WN#nl>Y+dxn#eLQ~j`{)q893Qczi~ zK6n3RV7yE2cI+vi@$L@TG`D`x()fJz*YP&9nrOVtU!cMl*`9ZYhU@MD3uCK`jp3Dw zL~RyFThi^u($Wqk-3s1{bcTt?swGG?KoF_ls2)mpim5cB9crdfk_vT=m@j*K_FSB4 zzZ3i9?!7tdzkR&h9!rOTbWTsrX-z2_oSR}YWvCAgm_KM4Wjxm)IXKLR(N(fxPE=Iw_9T3#%h`7M>IZG8>oN2%xk7&_zzl$AM zSZU(!SmEVhl6b~SF`Q%Wks`n`)9K4W)w+tJJD~SIk|%mq>mx|19YB6u9de^@NTiR4jKDgky=|Br+0z#ZuV0N z7NxlWX%$r3iW+sN8 z8*LzVJOhs_zQ;+2TpscxB5~HsdYn)u8IjAembK|ao}PmME_|GHg$L0eB!fQ^C_=Tz zA`!EAQsfgL-LNMD8dv~`Kqn-f`o+tFpCwkwE3O4b`6xQDCKyJ(dOn@w_yM?5RQojE z9YZeBoS@`1us`LtdmgH~=|cL>aVB?Ty2z+c zd4NpD)h2{L2!U(~KBA~frZh5a!?g-nF=X`|JXz3bsZ|^W7Vi^~aSBm~7qy-EtOptp z5pSMx0qVQBb2WhJ-f8e4cf}iY5(8QlB!H_2uy-CZ@}DPdqc{MA01{U1)USA*_;&JL znD`Yx-D?A34_X)p;$zh7-xH&`l6!RT-A=g>Unk`Uif@I=?6S$gVS)5Uv=-b-^r(F8EkM+(=s$zBrK!;viCX zq3zv*w%M{NL6G2K4@lmI$PgvSbcqpxrXXTgq#GF9hDSPwH*XS9L*^y> z-q4_UF>-Xd0Y(T(Zz>wecVuTS#3+`wzm?1QpmY86GxF1Ro%bqB*g@vB(RsFOD9|TO zWBU<AXy>LA(@=7QuN7T17LmYUpBW(aA7Cog zI{S#sP0PIz;WAkk;|pWaRE;YYra<+!SxqZQl1Pv9$*_U9nlO>-qAty&YT`8p7-{2@N}%B z&_s!P#>Pni%~7RnTJ$}d}$1K>%rDt{sRm+N0Lls%3258~d|tBWK2*)>PXuIM`kcO;L^ z(JDPx04Mib-n6J~SRvQV##G`bJK?c#-VAKnyzTZx#6}+xlK^x3Cc$qEFv=B|sE3Tx z5;#C*L)07KRj-T)rcSbl6-jckV*~JE3nD40r(2UsK>ur9u+j#o+gZ}GzeiazZ~LqG zIs9|=4m5&iAZ|9IZC`v9=jjG zp+cTMe?ll*p>A!puuyBxU}!YnOh@fD#VRA|K@Dyz)-sJQJU8-9+OpJg*o_vWf9+&hGEtqLD(^m{HQ631#nb_A6XyJ6OciPT9ox#(-mfS&H|w!ZWI ztK<#h8WTFkPRyd+&Z8%pzv%AzFG>a_x&f87n6~q6>Etcd8D^xz6C`su5xwG6am#HL z@;+UDUNtLo&prEJIuYuICjGa&;8Yws6gVC%n$s3-8Dp2Y|mUuFWhrbn2_zAB(R2ll~6c&rRt(`cDmhO z@oAmS^6r2Sy%QZ)Q8MITKYyr|T?mp=M&^B6nN|vwb@caQOwMMW&V1%s&KF}uk#{?= z*Nz$P_C7N9x=X3F_HI}t=ZS_MEQ)`sxcr8%c7+#lg;-u9-mdjAvT%*{8q3iz%$_~v zZ6F{yym#pJkB!97-RB>jyF&Db&(vF2Opd+D_9fcPhj}zqF0~m~xFQlM%K(|jF&0Y$ z4WuU8Vjlbz9lWIJ8)OFKZcwt!GriZL^DxnVfK#`kz%o{!?>)N|Ij^<%T+oyJ#?#1| z>O~w$+%U3=)EbzZPBv1$UcKeqTlNLNXwb#uyS(5bYFG8JJhXmyv)8z4cgXPemN9#3 z#SNLo2n>QcaC?aQ9^#zEc0o1T(N^5bS$CPmR2=T9G_jnO!?u3{x3$5?c^!R%h*L5E+e`WM)^q8*1{RrvI63W*iTU1C16J!Wv+;e~uqqZUs_VWj&6XOI@;^>Fk1If<}w=kVBsKW z1Z8KHnc85E*w(;BfXY2)2sL!rWnZrnhXadG#L$~6EuTQu=NyyoYsEh2N}gdDvL5$D zzb24j^GDSvbC^<93NV~VN_Wv#c7}?;J6c~Y-=}VON9t8-o?j*wWA_c)88q~g!*3bY z;SpnB(@rl>)t-K+rR0Oc(q)?AkmcN-n{rd#hu$y6<|7eAK`Sfi?EGlgz-OJYcwJjJmRz9%)KeVj}eU8e6H%POf)QA~*PZR=mZ&8bTNXz{aH*3t|F@C_DlK48C!uJ_YK>3Ba#6Ba zV2S}Oq?r~_>~o#5Asr%t>JG$u(kp>f&LBiAOYc-ERK_P5h?(Y&d9r=htL!F|ZVK=1 z8v?98d6$qjiNfJz|GPNGQ+{DB+1$po%JK0{yeUIwZbrYwigSH7^slOFZx_hR0B0=K zi=BocY`>=C#q|d?WN=j>l0ALAKcqrDmi!5^7(hyndA~o{xeyIflfJ zV82kpp^jR}9EKkd4XrT1a;l7#R7D3eC(96}yu=-26cS;KLj4OK|13Ik3|xjFU!&+J z|H^ySGU1Z_j806T8&cmh+N}`Pj>9Wn0sp*jvuqGl=2CafG`$d;;HIaO`f+~xi%hp& zH(7U1@hN?uYENsl4#{3Vfl2sQ-k;sE$s#QKVee&kvvYhntm$o^u7=YWoks$NQEB+s zDD-}IY4#9^i&0N~+AwN(vCntCu2kcpiZduy8RnqnhHbIDNLRSarn=7YMmDrTN@>VB zft%U##ghb0<(=SB-77u&Ku@xtkj6$%CPrP;fSfOJ04MRJ<2^3fV2?6jUQ0<&h&kjMMm7 z)wQsaF03D0zJ`r?F;1GOtPgxB)iGa^u*S`nNdrq@A?|+Re*wmnK0qXTUs7QlnQi50 z-gqlKZz?@d!ni7WT9|Vb4t`|rysN6>{ zn)&dm15i>!Sj>EZ0Wvyo^{_;RKhX|v(y{=1yMj}5fROg&=t}3ZJh7FC0f}FX41$CX1nd9HHA4E^(kVpc-U8p|)J9h33 z$00Vk)Ur})J`v->U*}V}eXKn3qg;?nM3@1mWv9v0F9$D;I1(7%w&0rL(w@;8oPHs& zDp`^(t?u~rd&}#>AP_(vD+71w=Owi+8ZWoj{Gl0LQ7@y*_r^jMaqRnGMdJRFeVAME z-TrFEuqSRsBdoL>)pxJrvP_uh+hm0Ax4!*}qLCfTc3ZW-VXG&1jKH!qa`}lAUgmJE z^0b-qG+=YBeG>b~Y3I+)m=mTir<5SP+Rzh?h2!t@X9hiX_VIws)vbc?9}k#{3MrQA zfB@!jCD)fcPm#_M6u@;csyZq-l+!d7!7o3J?`k>4Kn$zp93f^-7HE_A)m{atI9FHf z4JY>S==7A{^o_SP+gcNFDmt!x?@1b#H%jl31>S&NyJ42oo&Gst@L|c=xUi1WYmCIY zHM+)(!IpnWn+!V~@z8y?OOg9-{NbkHi!&!-#y^Nm^TbGwI#w{-*H_D}SMk6x69|#Z_YJKjDPGUBvx>jSOVayeUrWqPAF5vS)bukzaP907Q zx*s2iRnqt(EjSfBADWY_kvZG%>7C!h{ArIzlfzq_+;C|Uh36J19Q9o2F&%>7j%T(* zTVNxX0H_&0drO=~zD5C`N^!-zm3V4(WsmCz?hvhEEY(0{z1ec!BOAB&j3Tj!p!BN) zymGB?d9aIpWk4O|)X|gDsr~DsrPe0A+{L;EW}Z%s;IGwk2Oi$9UqC#xClLi0ruwfn z*?aB7#U}4f+ba+H_1f4DZD}%4+(-z6+S0C%qz)@ijHsZ$tTQzd2Vl`lG^LdcvLQBy zSi0}N#&3$&qONX%*BG4Exy@M7g0k*fJ^ocag?gvyc~=CiXmr?Xlmhg4U+un$8RjvS`FCSKh1 z{QvCjes1;-lwXn(23jKNxECZqnB?lO!! z8*)q0cn5teH9dPfgzU7q9&}z&~0SOweHpeH>6)VEoEex*x z5JTU+orOLJFX;`Qmguqc1H3|FS*bLNi5o*oVqint# zK5dWlcMMT1fUWf{!qQzCHuiJ~K~E*!LqgAcRLf}RvD5G)Y6l9yOYav@p)$?vd;)25 z${a(20NUcmUiLi{Mc*2x1A0p4r;Z{9o_tb8;jew#?`Xisy`zI}a4|luJwcvadRwV> zz~fJi21@2Qx;_sp-uq3m7cUAkttQRA|oO`f&xHXQ_cgStPwBanyzsNu$W=oIk_Qu%Bi6DJ&NlwbI*A zs$v;9rmx^}_pT=+H-W_Xwx*-!K4TJ&;`5!L;>nv;&baDnVp?)ZPj-ao)j;HAFYU(4qj$j%;XUSg8BUQG`w+isFn{1_;C-oFCK(IHhcxA z^vxA3O=dCqJHs(zT^T8kugBx4T^XK!xCX(Tj)g5F|LQNp&1TE|qkHwDi+ZJkyPRHz z{-jzigAnf5qU4Xd@B6SQmiSGaG%xmouh8H2Q&V5G-(@N>q0Sz$&N2T0PWLjR83T(! zM%k>WAsZGjo=IGIANZZAv;Z{k6wR@Wgw9lwaCx5$`g_WR3n+9GGhZu~*7GYK|6@bM zCrisqM*;Rgov-SjGSwsqSMzSC6*^o)bq1+#qtX&)iEjOWN zKH%)zts{9Z@!pVKaXLSPwkUfNl}|P6B?r+cNx$#U4^vlQFW#7@0&6+i!LImIR%3;uTTY)iLvnYboqMjA|Y zRQDWb>8)Ijx(|1?(Od;pH%62==H!rhnK;))7Ba?aoidc*h@ZDn7Tpe1)HI$|5R$K+ zZIeVN8u{GCg+5-6mi}ZDQ+OMV=4c+M8{w>cyUP9TU#D~2bJ7|{DC!GsI|ReVV0+^r zoRg#aMx%-v*tHR^RsrbBBo^vHkov3p_kvj{G`s)oX4!rdz(1DVYj#+0m)?9IUPg1w zfNX70BKd~l#9_$ZB!?{EAS~>I`#y@^j5Gv)>gQy`()AOcxLYF6+aI29)@NMxPJb|aryOmj@I-r^553>H+e+azY$sv0jRGA zJ~IE@{g?2Jm!uux$yU{!m^nK3yWDy}g6wvVwSUd2z+x!3B(9XzvdJ$w?sXiNu^G7P z6umR${^R;jAUgO>S~r`*Xr)Ay%F?=@ImL}Je^d1G`oSm7MrGD!7A##ztTLvjV&~-S zP*>kRB=mj&E;-Pz*5$($eGHG)OCLn}#lH$o5w4szUkW+?g&LHf#2Do>PO{H8CcC<# zn0WQr^pR%uW1ol}J#)<$*13yo6;@M1cliX9e0_Bhi*>i#8RXkGxTS5F*Q=55CR1eG`1D za`m_6>Wfy!t6To4OBTYkU-d(Y7i5Nd6n++dJCRUv49(KH{e+RxIU)U@Hx<%BFSMnE z$^#N)9Yx-&I70VA@Vz3e{EkB#CVa&vzD)Mt?%s%5;6(sQ}}?7G-a{l5)+y_fTTIdYvF zqo6a@_AY&33dfONDulJJlbsUHH_KXx^Ci&D3?8vGl;}REh~#eYcNj}T7dv`9=ig26 z=IYKy9Z6KNyjfd`$W_~|8=b&hq*W-nlyU5I@x@|;-?O4| z6tuRt)U^Bk$#FfGf;GAj1h95x+WBT)=MiY>W;+^ zIw}qk1_&=K>&~AfS6)V!sO~)`A0LpuZMk|7O+2G($Bs@l64-iqm-)e;trVvhGXMG^ z0li3y68~I}OP4^jt^0)Ek@CPI&rtjov8macHkS2iwsIW(66`-cgH=vk#;Xl*A^=v& z<$|0i>&P19_g!NqSzEmJ!=m>x%@U%AX4+yL$8KEsN4lYlta|fdE({cb&kBWKy20Nif>nY-*+DTMkD;aH3aSK zU8tz|6-eGS-^-xN{A;kOu+iaEP@OX8eo@qEQzyfBOp&7NQ1h*%YkE&)r7=P0E zW~98i`+E&1CS7OUG zAt7RCx2FH=xL+y=_~yUsIlt0vu6aowe1YG#v196a2z@$uh)Dat9GCb` z`M$#Xgq9$V_Cp^T6B*T zgI@9j6ldqm_E08Io}fT;!)~gjbWFTKO=cS#rKVi9$gW-RUiPw;=D@JWlyz6qCB&D5 z;5saQ8o#q|`Nq6>^0)q!QC7~Ut&D7ETSN16HGyZ0Ez%6kx35JbrQ{l|`9Y$Um1+(_ zZQ{veMji+$bsmODH?H-&Wr{1$z-@Vkg=B`}@U@A3P7_7ZlXn$o#I_IX`n1}8g`fKo z%IvFHy!V$qy_#8=Ev2okLOz)-ht_v~JDdy-`&Hd+d;DE{XW1sDI>FO8Y>mUuYFf)K zya;7E6`(7=)G^HFO>1!*p**IKwMgP7SPW{t0Zvzk;~mrF301yf<@Mr=_iGJ{G|0jh zLk3*oEGSpt%_}d8l-;0nc8xYR1%094P#S|iC>p|V6z%yS_26EAj^cCS8}V*NkF8@j ztapqe`F}iB(32@C7N=96*pJMU+MGbWd?fG8v30E<5^IzAo+hQYw~h^G#+ro)-BeSP zy%)zY4$uhLdv9&hF`1w!BKxtE+`n&g)ySgZZGzB1=kd#yLPw$|De-y>hoJyg@AB9A z)IQXFn{y~MQH$vDWuid1%@B$Hdlu&{&*Q9P$Qfh8x+ti`;&Q>P{*p#bBF94LwpIK7~f{w!=S!OI(1k#uaQLUDiS~v_xDmNn~LQ z+g(`6DJ!p=ZDlA5dMj27y=5L+g-e!G<1fdw%I`60&p9aoa_8tK0A@h`~>mJ8pQX6QHBm+dWkCLK$ z1_Kcb5*X}l3Y|x$?sxPOEmju4kBZePF@K3KhNW>x2M+>BnjKWO zdAPE@Jmw|M5-OCS=qu8@x*hIL&wk^cl;*U~3BUQAOr$F<+01?m(=X4H-xoZlK>hN* zTyR?F(cU;mZnFT>%fO&Owaa!jd^66CD3Ed2RPY$LG8g!4Qto-(?Bb)~n#6PZ#hUt& zj~>0;S;uA$jaV>(8NPSv_&N>DJlUQPWLjxgGmWcsS+SsKI?Xb?xtxu9m19NVB&!eM z!yK1Clb+5mGqhe}V6d5x4@GM-6O#}%c_a;t(M!p|03F(7^Ku-bDG$ztJ*d8%fJQKV z^%n~-fb)=;q!obca{z>Xlx%jjpeb~e1Da@1YA~}NdW!|HqIAf>R0O<65oE>88F>)1 zzj-D^k6Hy>NVh)rj^eTGtn)3H_P0{s?Qed3#u8%h<`~v+eC%oE1B3_ri{gawAwutoZWY`T zZ--MqXwZ_!ja9$QKd}bm4rNj@Kd#nT0MXBk(W=^P)k^3(_1>AVtE*~+8ZIOpg;lGJ zk7M$113C_H6rKw=jDw?5PUR((sQ?aUh4j%JOeQS>&xbe?E(jyG1Kc|RU*L}qPC>rz zto$fM3G)Px1l>52rfk$DAyAFZ-jWHJNaFW;A9o+r4c<3*}ek1Wfw*4)wVhK(@ zcQf(B2LR4-F=t0fYW>6-_9)xk?RZWtH$n+^&YrC?JbiX?accFDQY!j(nVen%T(PhW zAihI-6XsVq@Bqe@hKtQhj@f8NgqYpcH-L7o-1K;IZS?e*BwWKrC>Fc%!IwTsKG-+y zz7d1j3l{LYxcuD|9#&929e1(Fv-LQ_&>O^lhTASHRJLJ3FRS%kmD>exZIMrHtE`Gx z5`xs(WSw{rSLi7$!k>fpiC~5a+#%TrK;z<|S{fFGp-!aEM|#HrHaT#hF2M{fX0D2Y z+vXtCK@u810VrjF3%Hb`s2kvc=33kvMB@NC@u_Ve$6hlEbqH%17_j~9)bLVA<13*` zF-SGzynHrh?=vC?5Mg2oV`+1H<-*GCpXENx!AmaCCVU@EwP$Ik*NNB4o_8Th-nw-& zf(y7S5(KOfM5SrfYXm#crdNktx5<7)fJ?SN?P)!|;=l~2d8XJ1&jFSOx+xGddN7=l z!ms70iBeT)9vm0%nu}4)K3>_Ip*`n*Yu4V+#6bj53pZ3{mAGGx^*;?RJry&SzjB%^ zS#{@aU*y;oR=^_oZrGV*DVcf90h6#*N5C{W0+It@#WOl0qE#&2jEBOnGnb13skUst>m%BNEoP*xGpF&g?B8(b{HN~&*; z9MxA$eWk-(c%ey9h5n?MQ;XW}Kf|AIKI9=xElyW)79LMx3?7McSxXmiiw?A*${xOt zm_v+Ld%5?D)hid;zbC*&mtKiR%t7@YJo4;Ig4pgctUH&_=P0cOmX49fmf4ozjsotVy>n%~dFl#&OxUqV_C~?mB2b^C6Bj7XD2kN4&Tpmmku?8I z7eM8d-7GiPzAfcOp0_zVw>RI{MzE431K7n7yEg}Iu%mnd`QNAeQbE3qme068b&pX+%{jOAbaM5n&Es-P3G8(026_f`p zVW;t6aF~L^T!G+nE(jL+g*#he1k4jfcSzlkWhy7g>>wgnSLzvr9Knb1f45MhFf(H& zqAW@bp@V(9F{DKkG|UXb@i1Bl;yNmty6cCXWRCS8dG8p*c2xAcP7vf>^JR>rb(Yqc7@OV4wIam#X*SXW=MAuAZmkS^}r4F6*~FMj`TuwHu~0e|g@} z+x#G(EcVEW^AOyutvk_Jc_P9f<6v{7JvjRX_IK!JW>_Dj)+n;DK&3{4BIe71J$<%60}n5pDDDl4|8A1XMh5neWO%dY z9B3KF?=>{EjqRz}u+DTSad>=|`cM<9du38)qpHO``8pec8NM1kFOdzL85|*)W8@MS{(MsktpYkT7X#a4afoMH z5V;hRX@TW|W0sybew-e}okdIm#obWxgG`VIxq1ztoDs3Rq}R!x)8xq)f1jaA(Br!f5^av%fQGM}qP%WZnM; zSajOo%obHtEL!rhH;Pc(&glz%9xJdhhLZ-8n+}#+ikn432PY9%y-ASZ_vUtuovJT? zy!EEO*@tl6YM9hCr=kUK-glUecGQCE49=dRSnJvu>l4O|GCy zsp!|dI6))8?&p}?6B+CEl!eU)w!2g9v*EM79EZC2TbtHUC&yGVJS>NVYn&qwplI(-_W~F4-Ea1cyQ(Y-{=__nLS@ z9{I9Grn#|=MHI8RhD}OGnPoZZ%UIsqW`xKK!_QvwBcVI=K>TAg9=`G==}L|IqkWvr z&CLuIG_LSAo~9!+^Px>#>XqTEdeA;lBIe`Zv zsSs=a%YnQ&TeOxb6&Ri>l@A!nKC^@PEnJ+zV3vG!vAK9{8p~VV@H0s6Zz%cIGeHl1 zvl`1T_uk>$2gkm0F*RMbSWQW?Q;#md0wsiqV}*c9p=wUmS`x!O;62_dMZype=`D=I zpii$lqdy}d(N0J7p}$EjFQ-pj=(UJ(ZTN9ZKd^IG^l@C+I?0J}Nys*q|4+`i49%dr zu_yg8K^-drK<)5eSmcc)GqA@yT$K4v*?`~g@|6TMl*_&Cx zN$Qs7cK7W2Que_!H?eTTqRA(2F~MsHXIqR0E*!VYJdTM(>{;YIDUKXL!1_OuzC0eP z@BjbY*^IG`eb-oHPzcFVV_%{MW674atR2#CUtB@$7;78C}X`3tgyDBY}53LS$7zFeb@L zto|s!*vpfhQ6P-bgDzI^p4X)ve!phTuIrZRs%>U$FN8|Tc~e=@-;EvI_fnoAQ<4d7 z|9$;{{rT8rZ((v{eLWFyJ=kvYmlk+exkbHXwd-f|%q1tL?3VjS6_~9~x*-zfdeZcW z|GkpJ7>|7!1e%|iH{P|ohuR^Po}wsOA8a316^Ef#E^AhU!k3q>;yi5CCrp&y{Qmtl ziBMgpRdUsNZXcees(G@;K=^d)w-*Wg{IWK+_5Y11eBA#m;2Yt`0dE5WRNMDmUO9i= zV!Hi~R@sqoCTq{JKXE@Qvi|$sM92C_)ze(W9-g1Y=`XjP((_KUaqeMyza>b5x1eVh z(l0Jy1SV38gLg6&EH&HgE2}KFE;B@GI9L9h!zXV4dd^jDBC7A??BpbyDO$KbS^HI_ z2sbl1c|0WQO}TW~H!J0cf4fq)z&)8$R_1;pp_=daGC@C(cxITn?`p4GCR$tE>5Q&* z_Qai7$@}6Kn!7xq4N`jxCe6|(^6y0-3c1V3vH5Pg|Kb=;jOK<)?zSGZtFkTZ%Zw1p z|1KnZbN#sOrLHig?HiUdT2d`I7B9}^AU%GcO`MbV)j9>;3C}mTBNCpU?NHvA=-6c3a*OVCVSaeX!-_FW-aNyf9sgsZFCC9Gd!e?HHrG+)Ot4{eW7y1kS ztPp4RjOg(qw@EKkg7hkyk!?^a9`$#@BXP9b+GwFLsETnrHu;2FQM2;C$s9woTRNei zCH&u%y!?I2IHzEOAw^9VYKY(0-jgMG%>nzRVE^3Nx5(w4KNCy49C`w5Z8MS?rD*pB zH@7RBr>uxz*V^JAy;C!&~XqYK^@YIj&s&)ZRi@yz+2n(yc+vg=661 zxfZ0^7+gE+tU;?j@?YYTUXgb)*a$lJo#X4v+8_azMDm04|L7_9QAPu~{4n?bx^RmV znQcG)pXddG&!BWB;OtZ7;+49LkdltaYB>2eT@EkD};^P27!u_+A7eMAFYVFl8yXj^m?9n<|PN}QuEY)9f8Zp(U1@# zyF8>{ATv@xG(NPQ6bP2hd3!;m9CP%n0%cb17aBOu=^f4rJlDnxoN0l|Ft!5V+r+Dh%`g`FB} z-hqliPOAT^Wagi}f)8A3;WLdpeB`uYM)GuRkSXGg6_*lvh_4UjL}Zwp$$=+3eIgx| z*DrLCPU*;Hd7Hg|s+4|#v^o3CP4>nBU+8E4nYnLJ_=h(;@>U39HPcVIT=N{G7a3xN zX&c}4EaDUI2d9FM{rA@!AqT)T+T$|!;OSIB1&&uCvYVuZ0f{44S2}rIos@V0eQ04+ z8TzW~WVSxtvJ$(o^)Mlnn;>>GkF)`XTa%B5s^e`6&KgL|@- zl#nRjmqNf5=HdaBmLr^mp(3;O>>5i?Kig;u|0#CbX?@Wrl))f&S* z^?s#Zj z<9eb0?!D(yp&{p*KM#m}5xP%wCziFYH+{_2N+h$_R(`gm@vz??vAbo-em|qlMjBzo zrA%Uc(bvlKSyje~A@A7LwGPqGf~RTkq6-yp<(xti1i$8nJOv<@BmisB1%0%_Ae#(b z2SIIV0RoyEGH?P=1(mrrim-;O@0MrvnOZ|V2p~|n%Rk|5>LLY2K)E;?=}xb$p3}v# zV342=IEkjU8DU-%_gYmkBh-;6?K~ePFDTMnk+d2~(%^d&fW@7~2qr0hgho+9M_)em zb5BgUTk|2<%R*(3&`^Zs1D34o>{@AKb=P0lDYC(te~L~eq+zH);pnrKf9|GtcQyvQ zjEyRZQL$})!tQ?MCy03YSdnhFt0?8|!CeENO7+$MckL^uO#$ZD8%O44t~=2M?delT zopox+ASuAJM0B8m@D{onOTZL0Sl%zyb%>&|n8Tp@A2F#j^Y-0^;MzA=GZ z*ZKCDeZ|8;&ugAQVW^bnm9+BB>=sKWpI?uB^vByacq+SQ6OR?=i#v%C5}Yi?Qwfda zvE0dOd+W}%dW~Ws`>XO7RHu@+-FD~!1@|<4#fZeFXeMKNIjAr-J*l8Aca~C!O%qJ< z$($He63{p8tebE8E!ush;9|m!3dN^RxxWHppgpccKK?c1rr*}#Er)UcmZ6b}n|^A0 zyPAXQG=JcM)$|r2(Izi5fHzr8+GG87PUsSH_Nq$C>(od}Ziq$8%+<+;+GMx7g1WRc zi=t3ldnQ8&+)H~mw@45#S#8s6?t3|DQuQo*EVep#SY*wH2P(?CFexSgZ-hi2>Of+) zky*;v5O3;0bNR_Egstu+u8gGlN&wbXuO#R!8i>{C695znG=WC%ssVLsEk)HGUvGss z(if(cg;9(SL0OuQ#dj)1@5s@>pT?}pE0LpDj$;7hA~Xa}6p@2Ue^qPjZ$O`?Q^540 z38=-!fjZ20s3p!-!vXTN_EwE3juOrwhBJ^t^bM8+S(xkIc2mk0^HC|U*1r8K|6!;m zEw>3KCfyPgv67w4Ly{x`i~kbGL3fL(AVt1&Y}^hHr;r3U$6rsFyaI$xf@@ZwqjpSp zBS@tZiD?e^q!KVznW_0Tmo)J#`P>ZdRdqX0dzx^Tr|?6Gop}=i3NEO|nz_RGxUge> zu({KzwI`!bWY(c{(~%x-X_xPc;f9F_R@IGGttaR#u%R%7PXv`Hl=NBm@tWSPCk+Ka zOK(Q+*?rzjtT$72w*tZv-Ea38WG`SqAaqVQX28k*0)?keHVM=!8pj0)12aVz97x3| z55v-XfePwl0F4j)bc_RbvJVIuuQ{-qY#;z7qdiwb8vV8U@aEwl^lB81!o5$qxOzP zfT9Ib<;2={zy5Os4CF#P3wk2l3p}N-a@Ew%+Z8t0?CS-0F~Kt&!hOtJczRtx83wgg z^v9B^V3A4|q0mV}t`=p`q~3%^L<2AY&E)|E7>x>#;k0)?#zz+w=n9=PyzpNQ;U*W-2*E!MlfyVYntSXFuz z-$iGBHrYzRLll{Qa-K7=?UT27-298HhRqy~dgHxGvH~;oy}H`DX`I8kdw>N3K9=Q* zae>U!!ne}%gy~7Na?;L^9O_>jP-oIv*8~Ff_L}Uzq>9Lo6RCycr$2;hoOon&XDSY3 z_qr_&cw8{l(fjOtm-!9}Z~i>S!R7(2f=r;qc^Sg89H8A513%FJ`OZ5*@J$qu`()vk zgRbj<5){+Nfv!bDbfsJuV2u9vTLBOli(x|(v~WnChjLgqI5=csu%U+oXf>X-wSfb6 zSad2*jFnlo8^CQ7=8a2TPGm;}F8UpR^t9?;*q*9xV)Q9LUq4jo?qCfE_gNMXV@% z9u_8Aa`y#4=VZE1*jw-ZK6CIYSLfZQZRXMi9#6d!z{cG*J}+L-3?GP~xmYk%I@LV~ zY;7%*yp^3F;qFR|ms{`-KfB0qX`@g#GXV7L$ABYum0U27zrYY>3IH9-U&Y_#;L+{> zj!FRHn1FhfJmqTAWz>IayW{$Psd~b~{^!YK=pklM*dE1fOzod{U;Q}0PV+IFqDf%H z%?TP}!CL?%Cp^PvSL?VSw%POHS4LDIN{3jZ%1w;iUg-4aa6gFHEI7N{c4%NQrlAC1xQ_((rb@w~6*UQHSNd?aYKs_EkL<$E~6uSz4LNO)apdjn~mUBk_ zjC7*Tn#n-ZH@AZkFB&DM0wdb7#+Vlu{@-aJqg}rFN1*Pv%V`eV@iELr&8Vh92_DatYz&U|2M`hn2ceWJk}G^wVETeYSs zor-LVUrb7ZzJn`Q(tMq>z-x=)qN^%E`SgyYQVgYVJ&Il3FNX#GWAa7~$Lt1$JOki8R^G$W+Ib+Z zMFvh`d{_e??Uf|RPhA(|iJwH7C@9n{3lYLgH?)t9o z3e}vx-&b91RY|4}y9UzM%vpjL_b)tiawa%Ly}FMceNe}ZLAprQiXzXwfmltvd0KxI z&inpnQ9#o=D^07lRW$4V=G9!Z;t}mIoNcFKDo!I*JbCgu`C&|cbdOjDml3u{ZC#yd z>Nwe1^^mlEdAVMLFxVT>5;&W^hI361P05eKzbcxiEM1j%GLPcJDIwgAZFPxJWk=LU zWT!QBEiN&3T2=}8&&toSn;~|G5wfOSxU2$wp*RUJXI~H>aJ6c)z!aW z;bW*FgS;EXmC>G(Q#g4<5bjebjfoOpjBLqEr=j<-X9{~1h!CLkA>xmoVEtqsh3 zv#q+AAJkVBAD29`6e&rr8dWE0t5EGiqK@WkXmFL8AK*e{B%_UTpA&KD>Covb{Q|@| zj6>k>L7OB;`kH_IXWNv$dfw4*1inTPW+Hm{ZWN#FIJD$i7I4@ye&v+_GsuEmx$$%0 zE3b(G%e2)PNuK1kxv32E2;3NpOJvqV`f*{54Oen<`JVf*z9oRYk(0(-OOxQyw~U4+ z5nSTP#f^|!T%`~-=*(uMjl|Q)21}OgUH@G)S$!VxD4$MdgwT*gvwhe^LiF^*2bd&` zKrV3iRA=#^NOQ6v6V>4cQi)nLEMrlCjDKxoyY8V6GG-Mt0`y*Z2ty!2-WAljVQliD zP2_F;)HiM_aVmhoCk=@aSB}({yMjd@Q+{&y&I=r%IVrIN{IA$Mu|Dk)7?h26C?0Vf z<9a{z!Yf#!P$BS|P_WYJz@=lhMXkjGov2s@hsJSclb$lKOP#wK+OpbIK72pP)y~+qJ)b|xI*-PU^tPqrbL%FbnbQS~B*^{Z9CT!l&EMqO!ss@vy zem3hjP5F!cs2Q?Hj` z-rO_rka1obl72f(jxuw{Ipm&|& zXzB4LJeW@H%{q&>sxa2j)CywxWW%wTjBC&E94O7IV>0J?{;_ z%S>5H@Tv3pBp>?xOl{QU>NhcNBucE%J|U_*kr`t(5vL*+nIU1|?X2fJfv*J&DIxxGiG{>dx@U7_GqtOh8-SLWj z-*@H(nY&3*F6%5R|BX5|-l0haWgSlc zvc2@*J9V42+iH67?bh#dS*Fc)?qy23xoel-e)xnQd-W+XlbBE|QZ@bnQzu0}&{HdV zEAH5l`Lq1`*$?Y#-M1Bu!36R2fiBN8 zU3K7{T?R>r1B^Ba?V7IN;W3kw<`vGB_=2C4p1Wp+UI&#Q*N4Mz&|k->*kIEw;&w;j z9qL4}PF}W&3{jwHC0v^UMwsZET=`HO>p+Y+_zzqlMSprCOj>NlJ_=3^&>uk$&k1PGNtdzaNc-kS92{sZVueHAlT(!Vh zM6dKg+E!SSx)Uj{Op@&7KOdec_s+;Xuo*!I&FnKpV}b_68ZYkx#1UWI88W>#WJPUN z+HDUnL~AUBQ;?>p%vkFxoy|2sm%pPHaNS|1qVb#_B(^nBxy;6S)DpT#bq># zdV&Ns4c3UaDFmxaf9m`xTvsN=)aItA1$0k?S{7$lQ@ieGV~a*?L7`iG78K4fn@J9A@{*g zDwaaQ(!55KCy?f%gHM#+V%ATG*#j~wu>}){RC2uk6h&`<3Ps zkm!lk&%EY%6HCY5E6-hU*Yw^lgO$}M-`)0b^;Ae{mS9p?A4!?#u@A2SwoM|!)@u?l z6Dr@Cgwe;KxpZ_v3DX+|SoNSe5>|%JIACT&5z7{C$`EGn>Z-l?k@ge=sYp3ruL-^Ibf%?K`gw@H30N ze?U7C%ZrvY1Ls~1o^-bNYzEt3P-QhfjN-$^btKP%+bO6KH^5nCr%?-Xi~xEo9fP-p zw6I8ODz-1Nd{+MX9aR_Q2N_x=Mn*xLIBks#KDNDmLifbbM#WTFGUZMB%8I#i;`r%V z9y}_wTqk{M>a$1l+qwqZ)8U7haqn^HowT%QUS##-=3pD1dM^`S6jZ#rNq`e4mN$!M zF}%rFbQMQ*y@(O8tC16CK?WmCC1f0jx)BwmIIYmsZiTW--v zAP=Z36{6YWi3s{C6db~_pg>`fBhVY?>n(&<%fNWg{_o5u_%!sy=46IPeBEs^T0VK? z=C}i&<$hPvP5z(=Ey^`mGlezwz2Xk9c8pl;ZR5#|6*$Gq{cGXXd8K5{x`{@I-m>Pv za&tpejh6LY^Tso1|03CO*A;PqldTj@HQMG|7S%xoc9B zo(?2w<)DV^mN?aIEPq)J2D61(BKlUVL{(4 z|CPAt!@3s--|LboJMWOh>$Oz+KMpfrrSyn(yA7N;<%y*kDkYkzG+U9iP;zg-;70IN zdRy7EWc5#~D?-IdKYJwsKe@~KQjptluE{E%M19M6nVkPi zO?9`pA4p57;+(?zU3Y3u8@c#&I=#ewn;I4RpnR`xD8t!p-@Gn}w6q+DDfG;$Mq;RM ztmh~OqJ#Zz;lG9 z1RzOl4VyjFfm7RleL6b^td^Yx(>dGYe#rm5Om&`i$OEQ)ZUhGlQu-px?z7H#3 zuirX8s(F)xf)TuR+N!?$cx=6U-J!m;hb!@)&BXB0A;e-_k6Z3#M>FU>ui*3F$A-#{ zyGxW$pSo;M?U16A!g*cBg@3!n5q;$5&r<G}G4q)=V*r+~)cLe1YG~S1toH%paPG z%N|*`kVg*a@TTsZZAgoA;Op!Fk*MYE%c$&D@we_Qw_C{nzX#@s{N~+ADZd+)mnKt{ z!@cVqQ{LL-#tgW;>dlULdOv!WMjjnFC}c0-2md2Azh`!j7y~nBepH-nx}C^QHTI{5Gh;x>l^et&gJQ?AnfyTMXY z(wq2I7!kF8W#DmdIww`RBymezzr5)%w5tu+{l(Ag=}i4< z{%maR-8v2KlxKNX+JPc>)JmOyNpdxaHe8C{ju;Jfi@N^V*=ujuVU@auN;72-1a>r! zH`s}K4wn`k`2J_jZZJD}X*J!#ywYL)d|k$|jgn($c80t1FUeb12){o6Cs)|c-Fn-m zp8kP(d>_CqEtzDE82@v-fjHCpW>ZUbk3CUGy^gO<<9Vn{VM1B0)1R%5$)m9)o`V*T z4i}v1fBPot@pSV~f1cXrUit~TpZwA&){&8tK zU;2BOk)BDEwdbAN7J>fC0lD1&1iEmb9tTebgXl8>j>xX!zu~;Y3(JkpHk^Pw0~E>bwnc=urn9%k|4>9YXlK%)z_tEn`ub1uv@pOQgr99IS7n{tc3`-m!g(8s*k74 zveRg=Q8XxwJgJ~P5T^0aJQ21#KMm@T8bD?+!iu4SE|gStTmodtfHmtVhwep{NnK&VYqwrUsBQUjFyuw;!h-F#CoOucQ^UA? z2?G8Ve-Hg{q1QNca&C`tbGlK$nb_#oLG!0;oH700T@1b8FA3@IT~<=mKsknWR&3|4 zBDnJaor8QZSoF46-b9-O*rysJGEBI8{J>ZHK8frRKo4Q69o>h|92jv`Y4XJ_s$7!# zSO{K#jppUg_tan`_yz-EA)!WYV6CEt!4F~D23`p88wg-WBxx11LQrLk9>=3D`;Wjq zP6!;ygCGd^P7D+NiEuG!^eF~3<~tB}IVUI#AOW0m*gxiQyHka$*4KI*5fGgQn2-Nw zu7$~jR;jQDumjY0A;dmZu9=EDe#PS8VM73>q=kj4-&`t8Ch3enKc#vJi7z1B5(-wl ze#`ChW9JeZd$SN^w~Y<*>@Hl}N@I%fkAzdHbv5vN#e@-(}xoWG_3qJ@8wME2xB7uq( z18)9FiUSRlfAgmjw*(>%sSAoHgB%ubGB0``1GvAe#aK2QJ2_O0nuR!!1^Wr$@dLo( z0+MYdya3{>;H!ph=gZyZ^l)|BX`y=P!s=v1#HGSQ$$BL_B7 z1r|}RfT1qQPCg+Bs`LRFPaDIRlPfT+P%NV14Y05a8@79$!?6928lS)cBrqrLk@ytm=Gj8hwT_vEuGz;C3+sn<;9s}cqDf&U3F&W zQm;MN_zdI*^MtIfpxLeaEv+>t;Ne}(@8poX-E8X{&F$si)&q5HSB=XHsc$j|A7=F1 z)%Bmpc0GQPcZF+m7xbJAJFs4Hp#8j!*A|j0L~P_3kvmTgi?K@&eOT5P$GzfVj=y1i zxHIy-Q-{48O!j*9&)Hm=g7@%ZR}E&IIfzq_#E}Cw)SOXUve@H`riu!oUdxR z6eJH6xR=T&m1(q!g_*6-rJSnEbw0S|dQ|Jx;I6gslCjh|~iXnl75 zy=J){*Z>l$$NZkv^4I`7uYTXPJTMEx6T+_^h38)4O<4gyeXGlTA!Le3-g3RiO1-k& zo>a1Igy4&9VzE_S7@nTxwZGs^$70cL3Z>m%m0#1Cc)9#T$b7eB6?0;&;m_f3b*BgV zr96qU!>3Q$OWr?z|9D6lt&Qdri1Ly#14<(|^DMvXF}fVeV`OJE&*OY(uw;w(C?*4O zI=3H!eXJe2N=0&xuI2f-Ao1sezpV>PN}Y1rOIK8A4>}*#J9=R=NUI=P;tC2h9QET1 z;>r&5&w4g+on5-h3=A@3jY%Zy`bidr0j*?Z_lTox%o12I$XJ$XK#~dV@^@cp?--a= z=H>}LyzpAVT(VC2o`uPmzp`c5yGKemT!#x3Dm`S0#V=d`p*{>>;SR2}db&aK4vs=_AYy`os_xg*IO0^GYT!~*YGjixfmWg-bg0hD~mom7rJLxxZ&6tUQ&}FYv3Ohv!p`fI?Tiy?@Y^EdTIJ4 zuEw^x$_Cmz{|N_yK5cn$3xf+b?yHJeToRVswM%s7*`*0J?++*VTYM-hDD_AGgc5l&*95JzpU*G=ttbulGJWU&!WlLx` zpC$GZl_%te1f~hL#dyHCETc6huy#|W!$j@pw5mM(kz-qO)Ubn(K zUBe8uvbg7u^FAgXN@wS7MWc6< zK|Zu|H$0hjLkDSWiEWlS9b1u*S*@Jv3PA9gNpsOb#y%rI;rW9e>-8X);lbr{UWk=e z4TF3pcL<`DLB2FyTjU7f^2aIRocA*R)ejQPXg96bU?GbYY1H5OtdM+7ZSSM|awrWv zTWY_xzcG6YFL01}wv=*XRm_O0g@6-TPjG&jE@pbqiujG}VVLzG!{NZOYE7BPS(;pQ zunzXCc};~7j^m{86TAuiZzB{$)9Yt>x!WH+ve2+n>9#;?{ta``9vpsL2RZi`kGqa` z$GT+?b>}a4*Y_oKno9(5MJRh=riBu+w*O=hnBDgFqKZW0VG>uO$dYYjm-$3b_$l@Jfe5Q6TSR2eqQ)ZMwT-7*Iuf@Q)QljoB`5SSey4p(#-KN9`lxX z=X0!nE0Zy2-oqM8G8lglif*DCCeN@ZM|gTiz71Wu_3V|d`bWdIsFq-(Xwl%}I^8Qh z%uDY-=J}0}`MYiwg;8GV9M^w(LOdR)%!3pM5@^U8Sm2U*c(qN!yIYUi+qT?^@F!<_Bq^r}5Xm2zXC8jn~Rf&!zc11trRi&I)=; zVncFineS}n>A;(Mr%Rf6aRstfeQ z4x){|I(Im>_0!4mBS#M;s^3uc3RE@vMbE8vK~j3lHt>Fx@1s=PtJu0m!*@jNnMG3V z#3x~2xM%&bq!l0|Rr=Qb7RA=E?CUgF>7zY&xRh4BhFI-8I|l+j3ukkGI44oboqp)1 zIGZYRT38j6s+jhpxISo4pk5&H$mQ43Kg;fE$7rkwpmLOw1fc}%1fksQFz47FwiZ6{vBBK3JiD#^vsBr4p zJx@?!inRvk6Ciliit{lu^}o}`j48Wu;c_Z@Kh=`>u`h5-?|UxM%3S%Gxur|kyX%?5 zd~(1v0fWhvdcny*5>E0O-MmCk`stqbFtax&MJa>e51?e`muF2Zz0c$~le#(U_u)** zjRA@5TZJdhkIbIvEmAXKB))zU;y?2J@KYZ5D?4aMR&}r+>pbqj&sS5k;G>QtcBq!` zz^KF*P96Vm1U^(Gsm&O(-5*Ax#gWT{2D5WNMqUWZA$e& zHNR%Q9ZG0s>*`rtJYcrEcB*uWkl0N32w=YRj6z&ck$slR;~AZT%Cl3|A>)~)rKZCx z&OxXT&onYhvrl_F&yj$G6ZbFI{_0pQ%aPbw``F+3qj@38G=+oAGaF%dFLqw;d2x=% z`rAB@!?TU_Bo|>nCp_3_SMWV_Nl7$RgrmPU^-udBckTPx3c8GbuZx}`3Y%Hn4V$_) zKKXB{5hJn%o0$S2yrKIc%Pd)gNC4tO)insGiSaafpCA@QjQ#7p|L8)x&;20htV*sL z-ue1kqi;7?pS?0WOP zaIM2763Kjz_Q(%<={pA+zE44#D(=LuCB}dM;bHx%gr&h3D;Ep~7P?br50s|Nw~A#; z1o8C>2Y4uGGsy+a8*%BQ z7ScT<=b}Yuo-M1aO}YvA4LW}6tOy$aA$?Dn4d0f0yEk;%@&VrjFOZTx;5DtXWexj=C>G02PvXxzvk;e!1{;n#NQN z(xG5GyuVoF1*M!iIT|EvA7|)P`=~A;gsWZsGq=y`aI*xL502H$wVIqMbPSjp`bYw) zyDg0C6kZxUA4ttSsQKd`J7@B@u2Nd;ka--VMmcAqqeE=>~B?w`GNNT%KBgH2;y z14a#mzAH(;aAS*b%v1&#?jfVr80OuvBX+ayZyk)AMzXU7ckXEYd}V=Z6j6{0`Skwl z*c;%^m}sxS~CAaA>UVTiQO z0cvRA*ul25J0>1)*vSr2r^074Gay`7ggl2}zY)pggz*pN?{_xizmhJ6JMTT9GPtRCQ=RLK!D ztovEG`X4YAseC5owkz`9qg^rfj_v`w=7f&qouE2QI$mBVH@!+3Q=ea(p1Nx(_?dz1 z1^xj>ojrs41ygUI1XQagSCZ3ss$aNTJGjPr2S=S*)^nOvak?fSWDr*GW!ISMF{=A1 zVy&V{=zq+mL#J%z$bC$)a|#*3wvPYmTpkD@$BQNK1(53t{z8YzjvTKC#Xo-kI zu~%GP1s(}Fdb}OysxF=`Dbe#r1WUi;oQa{OIK+v7Ii+sxvpHq&UfwmBZzaZYzsLb5 z3?q>2i2MPiT+D?>ijZ_O&ua(^n)!eiSLq}v^NEam{O`^xC8;fAPMQiGK=QjEXkbzaZ#T=uy?<*#es-I8g! zd_y0VRYKz^m7U$|yBNE>HG_S*-AMWyZ)gmf@mzCq64SUVDp$3>HO46>3aWqXhXdTgfc&dS%qrEBw_#)NFeJf!Pz(YVOf@H67YluP@*c=ON=?zKdIN-tCpgw#&b zxWSOK8V3$DhRZ0!Wy@;!VQ^}+X=P^4?)q_l(csG@E^aTAX;dPVy>_Bnde?I@k{#!& z0Jx`JA8=#1B$DLXNsv1Unv-W1#lo&yQ{p;0kx5=LHYW3!!?|$vk$!u0jmD>} z-5g5>VjxR$#CFx{m4QOV_Y@loNKNJrM-a>LzJHbsZU-whw@;psy01&d{{~Z>Q}465 z&HApZl}DeQ5q_U%&-pROsXY3-An-1^=p1*XNIv$oTM9F|UJjs95`x;7dFt=Yh_4s% zVb|q)4_d#kR{8dw!{+{2->8?`{#P-0{Kei}3y&a|Bq~}(aqDVMT_HpqDwQzd;IiF+ zG1sHy38(O%=>cL?O5{O$nK;%#lb248mv@lRNOiEAYz%17uFvCXFP%&0=D`38ZA;7l zHHI%-g4vM2p|httoJ5qw1v=L8n$gMQ3yM(OEf!6n^V}xAE-|YkL{eV|;E|EZ#32LA z{C6)fUH~dl25;}7%P7A&g}-wpW=@NBW|f&d;%02hYcM?)!KnfmZ+Rl;*3NNF{)u%y z`FfhHLI(2h(%sMQI$mk6)R4$m@O}5+jrt!=PtUTrBi5)CzN@dwOirYO1&GEQ6T>o3}KM)jD?dsjLf@V(EF<&9ehj;uYDPB z&ir2h@rt6Q(_GcPxxYJPP^(^?_c30N{I0~Wj1u|qSHL~~F)P)$yVS{oD<=)wF=!tT zA^$D?oZSA(3r&{&rGmJ+DEKjxRQqk{kL;sGj#U)}HN6{lJ)!>SQ7hj!uFZa~p!Fr| z|MkJmR=5{Nl!_-fUSksrB5q&?J2Vv5jxWFeFncM|c}34Hq)tHXu=+&h47DPoM)^F< zIJ-4hCuG907uYVFU5g%dInD@sHuF>6AXUry&X4_nyxr^kHnY^`cp1FRu0y)d1)IvF z+R_|VnnLbh_(X_0=Pv%g&xCfJ>8N*q<%7M^j(xhg+zrRrI~o58I<=?2;x?I`hE%34 zxsDG!&dc{Ku$n+^=J*c-pf8%Vwx?}N>4ElPN$vt2KtmoYBAq}A7tegyf4JCrY3Vb=JpWPKX1r*C=|V^ zKZ4VQNs{#CzhjqQ?woiUYhFIU_|;}KH~(|Ewp6|B_#BU|RidM8iN}wBe%0tyK5`fP zmCbDkY>zJFl^A*+5++3{Kkr0cO24O+#aMX1u|B9>7+p3_j%k;!9H=)E z_-RW!j3X@wg%)HWOtxa#H9^HM6c|*zClRKxXkFg+KAN1 zT&vDe?ZR^Fy~3}qFqyn3clcZom`6T>pW@Xw2;$zjQi1%U&=_;IC_jOmKF5-x-xx6R zlDsQb(z@&xy{34@x24`UuE6Fou3gWv=Q#J3>C~?Zl1f4Q(}%8JYt>JsOCpAY#( z%X_V|iud@+pL|!oz3APSDANDQA<6B7MJKs~C!C6$;nL+ryLR2Q9#$#j;mw;6j?pM< zZIi74uc2cGGhgunfP%gK#vuCjrJO?k6R93~}KpKxPj6S-axj|~R;IMraU zdJGRbA&Xh6`Jt*GG`;WlDd)vteGY#%EGYb`UpBKjDWXu+##NKOE?oi0LiGdTigkKR zlCs>`7I`QE5tnj^&22NUB-G!x;E0ua&KPTS*Cqp!y8@IHtk{vJC( zZ*C7#8c_epspoKaxL=p&&6~%xMUmC3h!A!O^pG-6NXm+Zn{Iw=TVF1)#qT{)%kz@F z)|ACGPYw8{J3HEV;; zc!rL5kd<+R0GnBhAKrgGzA0=9YHZP=_o}+ zP%|{8OK%E>4xx&41p@*CHo8a?u~Kb_SG{__`B;k|{0OWWX6DSh&)&~IbWec%ucKCm z4EnNE5%2GVyh0M08tg_0=HdP6d~IP3Iie)Y`E; z-Mvnru>2-e)jg`MwPaVBZSc$HoOvQ;^r?8MjK7&chJ)Mhod%qy&_85OfWdW}-ro)T z=Tb5pJBUWBv=uwHIe{Px?X|s1bq)vC+IVDD>Q;--rd$GCJ3$~j#M)iuEs0{`WO64G@HUj&UELa1}#pzdyzJ^)D!_)Q6 z;WzUp(6iSTf;4Aq4r}jtOPe`#6%K~I^W+~#sFB}To~Z|<0``5ASL~WMOycP}`!+dO zAf3Ce{6~K`PUc9+T^xd9W7PLFgv=dD0cZ;*n=Y}LZ=zO@rQOl`nc_zjFqV~goVRTE z$MXf1TQj8xb=ck?jT-2`7H}Uk<>_fwYcj&0E(C$fAso{z&lPvxUv=llUuHt3!dKj| z`lTxytxxs|F`HQA1+q|>aeM-g{e{s1blkd>lJU-=-YRFKe>T(I^Z3-ru!i6(d?|i52btc z`eIr(?eE^zUT|e_Tf`d6+IyTr-KF+hPrqyXux{7iaER#8n3mvEXeC=&G$&vp#AR2d zR6=Vb^OHH5{Yrkg;Wj6<TGU%VjLintZ``WfAR^Dk-ag zDTkeZ9isQYZtVL!99V%Y_7QGb3$X7%^ zuT7tI6=tl~2IQ{azgeFbQl)vR4XOMyd&3mG;E?gx{~I((9rJ+}Lz8OTE|3d`I_A?{ z-%&eG3#a?F&&>Ea+t*!IUc1El*NT7o5L*?Y(j0tMSvoP%$?|>8H(rsc>I6T>V4Yj- zYjp3HG?)z$@+Ke7R*s8V5WL3D92bpJFCMlyA;_p|vJgIqEZ>XWp|?Xno|@z%UOTv> zjz;B<)&!2fPI%Grvebe6y7sMgvopV$bB3ppeN3!dxMQ$ep2LNhOj%X{GI%=#9=97k z9+>a6_6K~iRz4xhjy(3b<=Zc&U-LD&ElNvWo%GRjD&kGaz17}{_kK2Q=8QNQ2I>HB ze;$VRmQ^6rpO5-X6BSb@d*%9}jzT24INeiAwhfj~S;w zZEc$1Pw46mc<3^P&+4jD^~K93ah~@;I7v9PlbbW^}39*z>GBG;XT6& z6SjQZ6`l_*f+1%GbG&9h@;j+zdpTy&nnlm6SA?G;>5kYfMrD659DHg7YBT#-OF4IR zc+53S122%X(rp~5Jg~Lca*Ti23eG+%W67L!)-EBM>>)FpfPg;lnSpHKk z;Y+iq5mQldcXBT8mKC#=(E+Jg5-@q0Y68@9S}To%{Jrlq;;b@%O(^oc-22VK`}Lp0 z>s`%{HJ=%q*fTph<;Z`eVK(aaznxjmR-RgFm(4X_;^e*e6blH3kuKG)axj2+3$z7F z-J0G@lLg`VH(Po=f&Pw9`m$I;ALg_6R~_V`G{SJwttPoeg2%>$PY%xATF42Mvj!dR_=nU7Z z?WKY+zzzu7%LS)|-UWysF*N+DrxS|;Pfl^Rp_Mb)KIPnHx znuJO6gWL!eZb27vCWhuE8mTF^T3EXrq0&`Jjj_zsL&3(jLizNQI5JrX=tYcy5rS%g z|EP>*4~k*eJB4QBaB?PS)cGhyJWPm({fuUgcSO7rY{|%f|4CTBe4?^ZsBOs#70&ta z;Ei2(3Ej4YjkNmP2d17o?T_%|pDC%9_;9^WufycEUuzd|6e{>hLA6a6+zhx|wk3D@ z-M)iQRxmX1|28l8b$R`?B()-gg3auLt7p9mbr=<6*3%c>j*&7~j=QlD!lzJ&-OB42F zI4vxk(gwV}*B}6^KH?Aoa>1Qbx=J%0!S;mO4uf7B$nmi*v3$Wng~*jr2V9=(I?22r zX}pvctaR|3dZh5veaB7(pPx9z_1{8&6>B}$@3>*Yd*ReyPcYnj7Rn~s5CS~sa$gl! zl@#;#4p3-+J(TXFASG4KZDzB!SH_sZg+vwddwuWqT8=Lk-gR1(Yn0WwuC^4Ru03NH zPB|ItN;uS~U0lthL_|W*j*mvlVVF)RXs_Gje2NMIcion`d~~?EFqa;K}DAf0^6Y@ zl~Zbnv6>aR!c80la8l}B(2Du^0!2I`hykP|IWn-RflrX3E`Ra~X6@%T_HQ1tP76-R zu^y;!v$y@2SOo+A$|POv=ZQvtsv@W~5sTlW+oS}7Fa&BO75qUqZkKnvU#mTzbws`Ow$$KyN3|%`769{JkaSk* zt#Idl&i!&0a-2yQ1wmBa<9?^7qo?Wsl_>ETl{=;ig>58dTV(=#b}V6cEj`D8jkoZF zTSoh@rIkKhZn2k=U~MtZufL@QOXRQ~PuSFuhwccVa#~bINonth$iWZ6w&OfWek?9p zvJ)2Q94wMLgwj(vzM;31h=3dy@(kX;)OpaE>g{Q0IIb?8So@-}~wNGG4!2jLt? z#gO^;w9hzHt_($}I0`#*P<2!v-l;}PsC>bBBzzj_(vDOXaKoqXgblKjM21>#qWF__ z0P1=@Yk+J%DKTCy#zaxq+Em~Wx~h4Z)i8=WPCYfAJA3e@3N9M-kA37(qN%Bew)H}_ z>%vL7j`X}z z@{P8(c!TmC_4#V?^`@RzB+^WtUK%Qmqscw~>WkjXrw*qb0VWGY%=(a>(SSk@{FKUL z<4@pty?DIAkq1Af^|0^1(QityQfy8@`?e`7s2>QV5Hg^)+)tHm3n{(H0JY|>rp&Wm zd=j45`}O`TyH|j7D4ekj$X;6DKxL~=<{-)MT{Xi@_OL&JHQqh*{gCQ6ym;2<8oVSd2@homHApL{Uj_nAQ$}~lm*MGIZ}DF z|6ym{g2ex2fLX%6DpBXIJ1DhJLAfCbJUxk}EU-3G=d=u#UO*RK6#C`~RWN0OmNXILC2mE|{?y;)t=M9$06Wl%! z^uefh{bJt5w3NT0HN_{hHMnIyN1nN7dOC+Vc5BQfIB_*wY2B?z%h`MP5P%RF?-S42 zhvh%croQ4JmlN0}yqI2r$n}-WZvK=>6HBpTMt}?V$FS`NyRNW3IlPFMa_#%w_0-7& z>h+8mlr}e3#F+f>H34$mFbm@|eXy58Rf~LuZAR6_z0#FH)Y32MJ!t1%XN~B~dw?2Z zy@U=L_1^1CZjLX(IxG8o#tGh$Sx={&ZGDB&1P47B?oaQe?cs`k#|OtJ^;%>6Bl#Kj z$D;4u{bSSM?w!6icjV-U-%fU(vHMul*L3ccLi$LFPODK?)yDJVxA}-eMFRq{ih{$I zHxwhDc^d7TX)JWO?ja`f$Ra`7fRYfU(bl}MC3@;|{=o?+iGx7yh4QUaMoae#UhE<3 z$~=s77D%F=VTWxNd%O?1RX@>DZ@{Bd%W(0TwyHSxN%Z>B`8k!Dhy`v2&xr?Tk)g)y z!*q7^v%1sk=rqdI8t2@E`%S%fZ$zFNlr&Ux85soUwmILw9mx@3`a7|@$H2ixd0XpH z9wPr)drXTJ58NsH#77)+Dnftw`ZW8jTxE_^L{AAZN#~YuWn)MAx7!v;JO35Nn%XP_nhK0BqD9A&nB7*FoXx8^LZvFILTL6J_ZYy^LYuuP*%tK+f^xkuY^P<-BGN z=84zr$Kbtw@%H$&rvVQMUkd8|uQBEw$GISX;Gn>IZr7P_%fY zt>SaB-rOkOQ6CjOCnH@;Dg%E|$I=LqSU*mD88Hm~{$oL(!#mBLV_wNZ?NO^_YMx`6 zxTh7+Fui$w>ubxL=fa;7pxz+pa`ieV4V0Iwcxr4q$&}r^5LKXjZZMtG)-HW#q5BXm zO^~^>C@#m;6T)OcnI5u%uqQ(6V;7F+NhY8$ZFGC5#4a*fm_T6w@?#K%LNf(Q*`+-= zjEqYZz@%-`U7UbXW#LsF?kjgK<3!8q!f`o-$NyX|sJ9^Jwqnj=E2Vo`?tRnsDN)>? zce2$R)hAQ&_rNe8F<@`ntY!A+_b2dD4`G;od--(d%nuGm5|_rup@Uiv&=Vc3g2- zvYy4VO4K|usPbygNz~BKKq)otY%$rh?`n0VnwGYc@VF$5fhl;gbRfPW|_*ldRw^_3GI#w8@Dbucr zrCA^eKko>RvWBjbx1e%)Z^D4}f3lkR;P+p(V>m=BHl1nEXT>f9ZIRf>7-6jB2Wp#P zLEhD@;eNsMKCGG-%bwFx7jsw-&{KLR z3pQogm%hFoQ{T(B3AfcuwX{&Rf>4hVHTKn>&y%kr!6(NpC{HnAehcUp3vtDNMJGN@ zI5-wP%QVg!6M}>90+g^tvR|gdwuLQK1pSjCN0zVsq(R;5@B6tU$s(sgx9ruDVs5hT zwl1%JQHS5imvN*2URaS8jf%<9rx+B5jKrm+6=?CP!)OnU24&+)ACmCAPe zh>KaDN1)iXlXa+TNPZSbFQoqs%Bb`$;t-y{V!iAR?_^8%0OO&E-Q%cpnJ1O!X8a7Fo%nojC_OM!s(t6;IdJ zZQPfdds1e00MJSIkA$Ae)k{q9V_bWjpMLCnpFu86mRWDdy^fap{NdxFVDR?s5GKav z&<)hTFT1p;6$((R$3=E%Lgdq1)2-zeNu)n?z)SJnwe;a|w#sUJ_gt}6K9vqzqmkkI z>hF?O0ZsdSv!s7!GM-$kcPq{?5-T7;m_l)^Wn&9MM!Jr+iRzV3sKHy%oV*m;J7XHVZTsq#|= z+$jyQ!<8+Fym%R~VJVyoAZAl#04kU4k>>NUcJlx9GCA~PQ(?e;2Q6c2%9|XDR-%4` zpSVRDY<}CbH#>uYk}IhecHeI|QR$}4j`r*G(?t`%=%T~{ZkTK;7>9KfU&*<7z#7+- zlRUw7?#(%ajEQl7q@|mRe$n_)c|Vq3QMb)-<m_3h$JW;5Kzq=mVu zLa?888*&POQrk6U@Z=$K5K5%e3Lpw^Gfnx>eHndgaJx}C*0u5|4=^ZtO#wW7mU@>F zoD{*cToX%mIDP`jJ7y5*pVW@Up7Pt9fdT_}$HdSvcfwGsm$7VVYUSF*U1gK@t?vdf z0m4VZf+T*ipmz&-H5Dt3g7R_P~F?FdbaQ_*V`P? z)&hw9tlR6~WyQMpLAtl_DkQ)SEsKX-yCR)FBA)t-1EYBwvwln?#GPk`OfaWWK_!()88astMQQ-&$e zLRqK7$Xpi9N9gP@T`&kh&0Q{zBl+s^%LPPT-%!qOHn)%?zYOg)Bt5O}}{Qc9jGkDkjW6frLW#66FCI>LWB=O&1<$PqxW!j;wT${J!jx5J=3yEYE-D z7-J1{PFMkO_5b}t{DIG-;l2(H4#8(~xA^jv_spqa>W07H`Sd&RGhrMLpT@34EK2|} z<%4gIW%HcD_Xl41aj1kvfC*zXUxM8n@odBWxvz+L;L){{>~xMp0(m=0MPtBQvauBp zcwhcw{#T2Bq(q_rg^SicKs+MJNgaS8b-o+`LI8t2a2mMqTT_cAz{>XPnp^sNsvl+5 zqv-MavTTG+MMhz$F8T=EERP5IHbGcaSmx_sSLvHU%``lYx@Jp`0w|YVkc)yNDv^MC zt;tlmIKYsZc1kjs_MUgOi?oD@o)nY;9Goi%1Gr5Mek3v^$9l9BtMuRndx{6l-8eFd=^CJ(FGl*{A?13U~vv~^YUkf`joE= zUHUV$5Cw74#G)oFb$<{8PD11fGc9bDQHsha0ahZuz4G`_+=F~54>CnvpP@* zNY~e`Y{?MW0SLvuH#QI!u)qkdVcM7t=GmG`N>yrH)ID$mmGR3S!8^o3Xny=S9S1zn z0?^+v4ay3~e4c}-v>V=*RETUVjW{#I$VEUeT z6Fa^=n~v7Ksbcn7)hA{*%f-18%?vv%fdbX82vN-$39Sg4D5r@XFgQX+G0ChHP*$69 zdCAZh%^(J!wtRQ|Q;B*784jW;$m7NuU>7Is+;R7WZU95(a_L3gD4Uw-5<`$`l*} zpV=aSWNV3s(e>iGBsRcTN%--aU=tWx!Mb2v4gJHSfO*PUiOEIYL#|xFAaCgv#sV!= zD%%(a2iQ0PXnCyB{|4)>kW8dimTOGwui%hmt2g}9r-TzO-%H+~w02Gr0OXX+hwh^; zggl9*D0tmZxsYTAznN~6l$wp$8FChetx&|ffO`mJbtGtp1a*+E;gSBcLKOJN;ZRrg z83)M3Q2X$Yt$2MvziWORN}t^^s2E&c2tBet966istWFC8)_*2*qUL#@`p zL0}F6cUq8oAaD&W1;|Q{#VD`?&wGa^JvE^o|9i)b6bF(19zh&iX4?bfL1vkUjchqpxF z+86;Tq{HtCKXSFuy|m{iuPN^rA<;^SIhmwR_}kmKBPSK zY2$!hHvv9>QUNSnBhZxm&LnKk5zux#7?O8`1N_EZnwu>9 z)Que4UKAg5v>kF3parxSDA4seReFy(nqlvX))OD(J5h^+pQa6qv`O7~LTKP(>WSWd z+!X|;0u2G}R(amf9djC{lqg6(Q{C6`K*@^>99Q{(4W~j2H?txf z*>LS1EXF?I`!i$2w|9_Gzoa`Rdi2Q+zC|3;R`WWc=GEH9qp3*4mK~95ckQjg22sKI zv)w&E;%x0yZ%jTaZP`28C(TS{H{$Jq`Q5bhinbc8Lry8`CJWaKy_W zjcfmtmcJn7d@y2>5k1wOG5x?ZlLor|K2dyi6n|^8>9B>JIY)$uD*)CjPAGjNEXJ2QJ)9Q?ToLV~A>TaRQHG-l1fb>rR5676@O#dqcRkytC0T>QcREO_i#e z3V8LYvfjO!;k-Rr?es3R*tYYA9p9HrYh#`>ZD)}WoZ8?yd(pM=K%vyKhW*R(nreqH zZ|;_{pXe#r@8f#1>kTF^YWj!f^3bDd6#bUtVSY`NjDc z9?Ovje{~hR?C6HurWh3Jm43ZgKDtoXt7G#^>W}^290tP>n4J!*ah~Q`7XE&rZ_bNK z_I16x`D4cIy-#mXwEB@;ZOs>U?M_q&Ah*U%WkZ_Y$Ja`I?Ia*8KIWf zDy(FFVvg#_*S`{aA!~Wm!6a-)a;ESv1ia-m&khPirN4f0vjlekC7xiW?Q^mtOrVuB zl-DxfQr??ka-kmqQypl?^!(-fd`8Omciuzi6z;bp+?#IN9l4H~q^Q;@i0jb#{R29kA*!oTY(Ft70ko`41~(nx7223j*;`Sdf7426O^6J91t^+= z)5fABIFrZ97lvnaehaY`7iTIbNVE181vHZZAr3|ub^+4}zvdT*kK(nKs93B=4E|KL zjFtP7@cME)DXio4H>BG&4mER%KgnIltfBlk2Uz)eAI_}4 zDe^ue#y~uQL?kpta_vz+#ut?O!sY2btxmzriv1A-=+zW*!zq61#%QHa=tHa3$2^=$ zjLg;G>&LMYCp9a#zkRfaOJAPzf1#f2r~`%I2TeX|0&ZJ+d{&d|Zme0jwj4Hmy58nNX`J)KVf+|<-$c_hc6<9A zN3OjGyO>Y>0`>yI0+2+iP+Yqr?Q@q2+D7Q4p^#p{p@XSa=&N&60!KQ&Wn3&klFssvAS01n$B8P4zPoAP*?3O5sLVNqMIn7{{?j`I;L7Hs|A z;spA)7KJ#STtwhZM@G*YY6Y?$-6B(+zev%C)Jw*-1dc06>J5<$mO1<7%p|>BfuAmF zkI7&uWC>?# zl*@Ye*vngEW46q=moWoxx$|F0(6__o^UzYof`d35rMT3nrzqn_8IO_}pv7cSm(Kt^ z=jvcT-1?3}>lLOe!N#N&G_|;?nujRhYzqSvD=n3Wn^cd=kJUE1NuYxJJlF!O{y-i) zZiVp}{>}Y_*o-NkT|mFE%a2ahzUSEV`ZBgsiK`-GTd;!;R~f02EbxVwF$l^Bx+-z# z_hJySDM0~h_t^TU*8Y-AqH381b?ft;m$K9Y$PV6IOvFE$&tyDEnO^lKc}3CISNOZ7QBNXfUZF26n$rM~6VXM-Kwf z=I)?W==-j!S;58I=hGpA`zy^J1wFpNPhSePek}a?^!J!8ifVewBnYi-&T4}Kq*`K> zK_gAWxVWb*Rt`t4tL{|+j|moX8b~Cr1}T^&;onSg18U(o4pjOHA@>I(S&JL;@j+tc zhlGne1Bg!A$z-0-fIg$EH`1jCLRL;J{->nx92IM*OZcJ7MOERv$~?L z&@DMp?JfG9=_Ct*OLc# zQN3cPQu8Od*^AECFvRT^6o{0sISQID%=-Ec7yY)sC%cLqS`}U!w8je~1Plj9eQf}S zGa)nK8T=a*^14bk?*Wx=)Vj*O5O8`&wn27E8BVqk)8Pinfi<;;^m4-i(NHl{99B}5 zEAB(ZegJ^)SHxL%!S*M(!stQHh;A$0*46tVq6y)+@15hPP#>ayAral>-TZW13bVV# zW(mOs+|B!HhbgY~x2?Um6VL|64?e{wBlpDbLEJlbh0{q3H7EYn+Gm;zk#>Pe3`y!t zX4anDHawbUIshRAw;X)8KbI)m@932G1Z18bVomY@@+uKN)$AY7t=imbA`WN=1<=$p z)2Gaf1>mieQ-HawrOF9*X=nBo6#G7qo(wKVba?GxJ~DzjDFy)i330#f9hDOC0hc*W65a4q|8v2qE5G@FVp_K!*ZNE-%gpf;*{&K%7L7c-;zT6_I zh+n+f%WwDTi3cZ0hC{9#_exDI5r73`5E}H=-%A;dy&01yxNCop1V`QOQ77u;yUn)I z*QGB7?LfRv$d%x-k`0%5owMdmJ899RV$!&tG&D-vT+bAmW*jK<(>Ln7+=M(6IKg>* z7AJ^Gn=r+I+WIV@H`G}~n!-Y0F8oSw46rhG6doC0+YZlw-dG1;9|sFO?)f2fYqwO0 z_l<^Xp2lwQ6Pxd7+T$?+fIwD8%I_*Mjla>WaAM?{2tjs}0?hHb&4W#tX=`$Xw3oCw za~;kxP!99bOS+KcK`yxEnD}2zxx0bKUv@%SL(Bnh4l41NP>v&Ch}+aRA^XhX_!Fk- z%=39@&Pv)ia|QZ}WIX#Muk*lWvu-N(qoX07+fhax9n`pw4_u3nDGY?HdbN{iiil-W zZm#!vIqsaNOol@fo|#YAsi!HrOZ-$ya%FtMg+I6c&wtMzxRn6cd_@!wG@ez_anY|$ z0A`x_0CGi-cFR+Z?GoJF(Rl>DGeA0QsEC_G7q1PqkwTU7zB8U{dqY0eiQnVnkL((W z+CR)BdTEFS0>Jhax463csBOQ^IVbR0xb_j4D0%T6)Lpn}?#5}^KD*I$k-m>HYow$_ zDmuDQ{_VKiVE1gsL51H9{fGZ=Ww<+8m*}8YFWZDCcSKjHMP6oo z`&)j;L?qXW|M2{$v#rQL{*-|f8bqnObTl||fVTqnK0+96;^V(04bfDt^ALq&D3-fq zmTTqR%if~+^&au>=3bZDpCeR zFV8ff!6$oer-yr5S`8Z|X(SqJvUvC<;Fp|GGfy(fGqKeS?wsQXKS1g4UTgbHroTNN)jLn>_F&m^E$Pbc74j67BeZc_jMPZ!_KClNp1amEg{7P;22-mduRv z;n-y!yN|{0uC*xHief~6D{`v|)KEAnfo4)UStBe++xy)Zc?K+U&U^t*7q`P1Xx6K{ z1>=wQF`v(0&f-11*77lbG|#0UI}>jF%E0IhhVIQ7&0|2VE4M?)N>Fwj z)Y@WlER&qc6-RjgJRomf9gE^Jz7b+9sl>EfLM6Uq=c!&p_Mfhz2My^suJLbpJu0%R zP(f}3W`FW_4A?cO!{MDWWVGZPy7s3y9||I}UX@thZND!tXh-^Cp!5F)@MFC?HFH+y z*39(uwHxV&1gZ(hf$vizJx+(G*uhMmTJ_{cNus2BhFZYmp*wE>N$+O)Gnp5|d21dW z0ZePas9l&sSwLS&KKDi}h64?ErJ3{NuUvd;niDZ>YO>tNa;hTN=7M2M&#$w~lv^G} z^FK6#$7J)GjZCji>PxF>N|8UHxT*Wob2O>fkF1SGps`@g$~}=Pq{$;3FX?^eW+13b zc)bFjXcn<*?^UMeO<@6QQ$-lB1QCsZ1>-wS2{x;oBtYPPIb?7e>4u=w@lix5rELeV zR2v5XEy0M)zG?xc?Dq!n(z2+z1*)X9C5lp| zFJ&V|QQHm#CDu`GMy)A;Csh}KMW>2TVnYLJoQuUps6>#XQx>MM3wC7!uuL|b?0_9$ zW}^ILkQ$n7rEP(@Sn_4mZO9dS$Vc@H_`9)GqwlOhwKQHR6wh4zbpM$y)rYJsZ*k0K zEqG_*KjMJ7h7nIoOTlKuplY&)(>oUZSjqv{FsX`7#;SrzvtgbC1e$naEI7U;|KpCTV>xmo515VVSlZn?+5{??q zG5=@R`on-!L8U>T_Q`Uh0hx@|7F6eUw8%<0`tNBulOGeAV^%!Wuaz@j>YC&nu_FSJ zF$}HVi$I3G2%Exho+w~$gFhXkI&bmAoZhT&|1pKRU!wmx{^QPQiwYP^Suv3=ef!-1 zbOwO9A;id3I$vsAGLk7WZ5`ep=oXfkBRHn(7+|&RZEhgkaCH@3+N95rVe`b$mhmJm zL$Ne;!s4VEL1uXOz0_8*-9=2aRA&$);_^#wM?hEDM};txQdwzyR3mEq!;#0*i&jHo z7h%V1w#;~$-VH7*uAK&*oK#OAWv%POqia>0CJU`0woiEI?B{(C{i#nHK{t<)HvkTLclN$#OtE$)LNpAV7w(Ozq#`U=}Yg zqX@!e9Ps8OUb|L3PQWTWh2y zCB0F!;Z!^1=YRb6{CUTN)fM+cNSywbdGlEZl)Xv{>XHSK_0Od%i$V%^iwd9jc76Ah z3af&1XZGYeZIxh<5^qe>dy~({bignKJ~#-Epvq71LX2c}J|u%$8bg%>aZvcfzNV?Pr$eZY}OetyOH^<=!rt*chTYDAINdq{Hf z-B(@8D2^KK0HQMV0E$CG9E76qAkqW^+1fMmW?k+QfJ3VmwZj9kB&HDN6u=0wN8L-@Q&~Gbu-;CRN9u!UxOaXrQ$`F6wZrzOWFWJt zXe&9>Vh(#{-ie^g+EPgno6QZ=8)JXZJ=>BW%|(6vdc*X4X}rcKw%>noxPz!Q$tR}~ zQM|Chw>s}cp3PgUBE8R^ZxcDri#2`E@dxxiqfX7cv=~owuBIl=0Lje9Gj*+D;-*YA zl`ozk>8!)eMp20nnPGwO8O?L!zt%o_s$7M(BIr_C2dv0cp;}iln8n(ygRjx*o~59y z1iJtpBvyk)q{2#Q4}ptI&5?ktBynA}+(^DeG6?U2#jt!i*&JMeKomlv?S#@*S9h(H z1f|4c%eAPTd-B9%einB2NQtb|^VqBJ6#=_7clik8)^&AdR)x3<@C^Ku;CHN8lqr9V z{-mWJS`yxK&y<=V)L&~J?0QCc)s>0GDk&md(yQ(uzko==oj1?zF~a>Ar_H*U=rq#4 zcd>bzNI3dzndJg+zzdgdy%yyQZaX-AG(5sCm$x35$W^Hu9UFqiA!`FFiky@UT zit{>6_!gipAQB_D5AO-&62|*2dgVAjs>3|&6e8z8n2%dLaC5(0Q=is%;)tC|gl#TTMM$57I8SKdPk!{o_&Ox)uxjAv&?*a69Us|*7s0=iKDiCI1=#Xhro~u zND2rhqgRG%G`jQ`O22s=o%?)8ulZ%+`6WP9XB6lbBE#ilo@e>2>aGb)cYEsqO_XQ6 z4{!ZspCmQim_vMANJ_;PIEyp&q0KG}JfN)j@%}}|i;PYPgHud_n2w+-W(EW$;=m*X zuWNH6+ih()9L*(B4$OU_C^HcTbp)`Dm=wX=8KJ2E;*xlQ5aJnz`oxY0GdiIv>jNa8 z5=UFZTaq`s3}Yj!C9>Os3v4B>u7w?Ta?1Q3V={0?>$NBVT)zj8+=q^oxN}obN$vVB zP2lgZsh$rZ3x2vgw;pd01j316*j53Ak%I{$u)rkdL!UPRB+2du;b9b@UHaL0DCRExM3C)XzK`7KAC|Y^!mp8OWBLQm zN`^BL&nepSpdo^>btt)aRJFxKDf;{37Nkfzd*%k=U-XTs9hXa7zJEoF}0S?b`X5#?_Xx){A z4BnO@Xn!nqrwc_MCxF3365_w7A*3L-7&r|)Y=ix%F5?yI^&yYb<-ha7x) zKh{W9+~_%~dW&aM!5P-Oca-z#lhEn8Hs+Nn-GB1sqCWNB`1qZnvpmasA4PxgZkVh8 zN9D~~rO)45ukOy7^Ta~cg;gH{8NM8_y!M;-agy2F>IZ<#eqSFef>K+CYKtPl^qXf9 zb;D>XUd6upz;1Wc;*TN6_04YMN0{?gzF?p#nj{gI(>IeEZovaG0cR+Rxq})PsXKMg zon_^C&Qz|vDT(1BtVx10^BhtLcEUhS0x#pl1b0jzvgKpb1rh~;$%_LrsKtOU1fcD; zf)MX5X0c3@sKSS(hz#9k8%%OO7ks4l)8__+-#+){|hNNb~&9V?? z{)H=bdod)<{7eN(KL+1#@MB+pd37bEf$-&{f1Ydg*P}Ng(D!aQzLT{$k2pW&&OD%{<+M86k*eK_KK&AB;Mu9Mh=G z{10$9zOKQP>LHqdjiD3@#O^bN#sgNYjJ!JCE^3(MMDarCV9)Z=>IGgyQ%h zgE^n52ypbILR^Q2j(j|wvlyMA-BW4L$k$CQ9!0!hFX+u_J-u*b+p&d)3vKGxWh^r+ zP4OlnG3}#=v`n1mO`z>TZ5@~M`PXEeFP+Nvbk)n{rT4b!cyu}4!vTf4wPAv7F0FB0pR4D=O z$b&d|ogWFWuuLJu|I#81s1b!&w!lgQwQQhT)$TNlHj${@0AVO=wB}BvBOGyn%Hn?$c=eL^m3i6Vo7CHQKD%4ek zukTT*Q*2V<=&E;su<5X36lG&tQe0tm3j$09AYo0lj0Xd|s3m${sWMa&$uQJ_S(eT-rYfUeaf2q`NVMShJ5_!x=!UsjRi zdz3m@G@ybIG!ZbT0CNpOiZ9C%mDd-kpIsND+LrL5TFSAo2%x~i9H8ek88FV16xmF8 z83P~=o>~+SQlNYFY51kn0?K7U_V$LF$WN*AOm7paORGY_-p*k4`^J2>HJVa$TXT18 ze@e%nn9q3cEu2(UH_;YY9$Vb6M(y_t&)+qq%Zu;fmiaOb)pZ<0MOQm!SfXnWfNWLa zG9qO%{;4f(*q!Wg;IRrrMd294w9R&G1=W7V?i9x_|E^|p`Y8WctZ%yB%gYQ%ECWfB zXcD+TX#s%sxeZAgP4#)gCSA=KUdR4Z&-06nJphrna)XePP(&#PcdUiw?40^CEl?`Y zg~6RT6M;WCdOqJI0BKT9<6za!52{5?w<6glhYpBR%Mb>GtwKN;i3Gx*>tMueg_I)H zf)-gJKSB^y%KZVb{xYV<45@bY1{D$U8hd$m_@V>Ee&m4y_my zM#4~*wYICr%uOQoR<3HKwW-bsXa*>8d2_NJZcc#sw8fo7=~ik#KC;v$%}E>Q2{d*#;}q}Cp$xa696)f3Zj*h zOk#vBj2i*fQ5{l>uE*0~I-nR#XNb%L*_E|w@^WiKOgF0F(I~JPh4jdZshkExkhBj~ zZoq@=9ynC-1aT!D0DAxkR1`cWj6tzm1b}X+Y83@G$W3&B(nRay?InEtA-g0WG({<*k$VZ0i#q({ z81LTY=?w`V2Ys7Qh9^y7!dnri??Aq}vt(#O$BO<5| zEL&rKEH_aF_0&*MecSh{-NufoZ@cl56A8kSpvLDdEr!Z>dgRM6U;|Z%#W>tHeFD%F zd_PcY#Bp-i4>OqC09iOdir`W~yg!(Al7-{TN+aOiX5b>G?n9WvHAc0u?G_P&H znwD4W>K|nv`|sJK_tRPH-VxgKP4~DLq3+P#)zTKjU3*OSN%nq!TEv_v?2Mzb)~3VP z?u}R<&qX*Szy}knWo@udc-6Z>q3K?J4%IQw45K6BOO4y}<-;tiJSk+lDDBRsH2F%t zrltZMqBh$(J6L3Kn*bFsE00`6Vw&C#$%!QJK(CSRg+du>JUmjt+vhj{6wRn`c)30S=MGpwjU)a& zL#w;Mx-yJt1B(4lUD5T|PNOAdVq3Q!p9Yw>gDPR;dr z%g`NyocqVWg}32})*)-Tf|4ix$VV886}e;IotIBzPTgI9bp4jqCxh<06qnfA{tO1$ z(hl0ncAP6^FU<>6h{}_Prrvd(bKW&2kAj=Bl@f}zXLc~+35!QS#V)*#sF{#;Fp8xe z#=@Te%uFEwAdprOAhmUOa*N4vUWM-l{F0z-a94z4+6r(nY2;RV)LuhCj32hHGrj^> zy$7M%={!3~Bz}O8x(!xTVi1uK22Kw(6IM|Jtp@=8st7Ni^)whO!2agBES zUAaBx;?{F;tuCQ@c-0{(QzUBr`(nZNgERF(s;oO^(W@1gwPLnXc5Lm_8FjyE^`P#x z@inKTXHrVtXf(ApmJynw(nt4WZUc26TBvm< ze-dofQQ%Qn2Q&-`;CdEaE0YIMHL|boF^kOR^G2vR)3PR>3{Y_}q6J`STV4jNI5BGXXPl+0k!wyk!z95o_8Lv z0hsW6;Jm6VcW0HG+7s3lT1NJtrGx-uLq{>AJFAT(HbEbk_L*U=Wv|i4WeZd_&x~#Q ztEy7s{m1Xty!JoS@#e|#AiYwHkY~2)C!;RfT=tJxE(d0Sy(9=O@NN6rV)PE1U63}~ z8u=+^YSrZj55vlj=Tscr=z8eNxZ|JuUT6PNzAs_&C90BZJM3WU*zhU_k}FfBiSYo; zt;~Q&I!$ML7a#lVW8URo`!bkVc>7}I`8?xWVbzT`wT-ThdEyfxi7!Xaz*KBk$t!L# zyS9-JZhb`BdFx2+cb%Tub9Zm|Q9Zruvj-@02kZCdmQ;Rf1#Ol%-&xn}7!X>CbLNl_ z6^>Im{4e@k0vXlNEcE}zY{Pp*tYW70+R`%$@RC*~?*4Q?le|U=C6}CRS&007DlZO0 z5cxp6?-yoHqxVXNZVq2)k6RWtuoE?h+>;rA!M>96J!duORHPvp{Z?7(1?f+$H=LL! z&~)pKf@V^}Kw3s}Pw2sO$0Y2XYL*3jCtz`gyLZ47H1~vq;QtzXwvN^9NEK7>=a@+`^awwYr`CNRoBWq z=*S48>G;aXG7si6qg^l~9&0wPm-n&ch;MH0xt{bm^HVHndPg}wPvEe?m^PM-h`8R+ zY9YqCLs`8Kq@K$seNWk2HlewIEVK#pX>DbqTPgE2_8`^==w-nfa@{E_Q<}6b>7`Re zlikpJh5(I4Pp$$)yvS0WzrcvlVD@^oCO?;%Lf7aHdBg9&K7yG)glZc7AW7d0<;a0t zD2e_DqYH?d9u5iQYz&brfCAG#aXv}G@KiZUD11r)hD2MydoBjXvSMXLE6%d$EJ60~ zXYn)Nc?VTvZ&c0I7yEaf2TzDLgEmbst)-r?doHixyb4lHKhlvsX9wd0nFnqH@!q0v zZ7u5FMy20PBsaz3XlF+?Ev*u{IKt3*3?!CiK{}n$%;!cNNM!)(-QP{GT|PczO0f14 z7?0FJ@~ZnC4{vm#dvZzD4~@U)e2&iYH&CELVFRDkqmqa1kx zlM8#tsi}xuO&WDpVkmGGov8;jcO5BRZ#(X^Q5GmSXCp`~1sDPJHJYsdKSJfmG-i?r zD+L>5WA!D?#E~MBNx~)IfmH6!Yb-3!Jyu4}+&wiFHrVLt2MI|2fz8#;mY2A>m#Do>G7iube4sxol`{_Q)jzcO>M;uJ0Yz zXNPT`s%(Uj!Cr0LpI%8XSpQAS(5<3m2|wDpXNEm10%T8EHeYJGgmx7+4L~E^AZ!M+@o|MlYc5AQ?ZQGn_b@zU|=gw{14@<7B(xaCG z*BTt9YzFKX$SBvha804)^{Q>oC2e5_7cSK=$+thcCDVM=`AUpr!pMT|jf?*YEfe;Z zsJ;47{%QV($==LI7932%4i>#N5RC#2gz}dVv)VB_1TWH=ZZLH6s?q|!L zG5J6Wt5&c@26r!H(|l?RX9q4ZaFd6OqQ+D-r^oagOkMQ2I#XdLr#thMY;0@rdY=yK z_iXh+WLBZ8y_%kGorp=VO`X3}v{XG&FN|WRnOvju5F$COT@c~klJ1u0DX(L-HSo5f z8jFd3o?GXo?4C!Mya_{ou^r)RS+6ZdTaV4u-3s-R&s@zeu&MD#N}^yZB{)p#Y77_- zsHc&aTe?w0FS4kiRf8rji`>kH054z z$_c_FUVa#SKPQ@Ejn-gz691f*Pg!I3F{EFr?w9Oy8>NJv;@KyAK0vk$p2NXkH6Gp6 z#8d7Vhc+JxmQ!MeRA-n}c^_En{rk|%;VRRZt9vhRAzU;GH`B7)y!BeUZ@|&s4Q+4^loKeA`SuB|YvH10QdO?s&-`#fQYK zJ?(m?jB&tLc$1lv>}8~#nv6LWS0ob1EvbJ%n6_GSOhHN_@lDrM1Mg<9ay*k~&^dL2 zfdp3kr^(8{6=-EFzHDqn5zIHqc9u)_0o*{8=aAYA4sE0gL3a&}&UF?hqukUXoVXy+ zwvlFYcMr>&CR{CxZUm-pajQgp1g?fkPz6y)1s@14FJ?nuSYwgne1wKrOfQc<3A6nYT_{DSf5{;dFa19MK9WcAT5{b+drmm`CW9=sOs4W^6yBDQOMEf zn9XchnFd)p-d5J=fq9UB>4m|3wmRSb`J!SgH;2k}_!2B7wA4W8+DR4Q9$e}sF(5kw zvCv1Q0O-t5Nv*)lW0<4xn9efgh6>)E55vY5HK-`vt&;1NMbef!~KbMmoJJe3v zJ?#CcbjCn;&POR|IJmj$*4*Mj@mNR12$P9fnNy?F=@C2es1y6V4U>hZr*U55PW>0_ z=C6v2cDC%9@C!VDcTx3+R}I-@g^*Q8J1AWkX#W$h;6)x%3ZYLO;A6o$AIYF~EjI%t zneOpwIQxh(@)keZT0B?ua_o~4B8_gjgkxD6Ym08H0So*~kPM40Wvls#@Lu0<$UAN7Lbc-b9s*vZK z0-N{s-+H$*MG-r{neWgHL3Pm(leL;ZPe40JsIMQNHG-rMd4eHpg!fbuR7-%Obhs0C zkwgSO?BWwnpTq#^QwWY_eh!Di*Fyu&K+JkXOGNNc0gqXDT$C!r1ImB6hClR{m(q=P ze=|I`zrne=BJ4i5B@2SB^Oulo&o=<(+Fxx|CVJ9Dvc37a!c(jyy&Edw{xv;QUpF-O z_Zjy@#1^z{)I=lw`J2NLwk?8Eqi*u_w>&YTSw@S<-YF9(MSH^5Ez*>2Gf4-HJ8 zJLaT)%m0DokmkK}B^?3^B!#aN(n=4lFEUJQY`-dvw7H%;AM;6=$(u+C!%0cWoE!Kv zWhCINFV4!s@GrIfUcMb#=ey;mWAowPYhUSYY+W3+9#07wu$GoN8R6|!QrByT4fApm zqmt!IAHS5(fk;@OQ4o4Apxh!lxwkIws;N#uDl!n4t0|LD`5a5`&AZPI$w}MP7CH()Ax$ zCJrI#NV`hzrrMnxF8q&LI#edV<-umg&)PDZRY4!b(kZYHHT?a7hfX6mre%k?KusX> zQuFgMJH2v4VC)Y9RE(aheNa2|=`_RPgv~^6G#k2UXyJciV(|;lO?;Ao14Bf@to|i^ za@E=Uhq1#t`FEhqqac69V6pR{PWUPtDjg@> z`u$_VrbUIMCV77?A6lbj-qTI$d6^Q5fBQ{On|(TadB+0zPjM%B*H5raFpd29YZsx= zv!qL|t-JI<@3_;t$7_QM-4n8)Uq>hWbi$RQHtr*nJ7AxAm4@nw*&@C7Ouxs(kM^Xc z`@avKUb@+_H5HH9=~X$b^=&mgXd^0*quQ`sQ;V93W^4zfI1&NMiYg0bVu z$x8div%^T~8*7+o|AsoyWmrAi35uNhB^})(XQ2VpzrI9c|bNq<8iT`3gVib#F27>QHV49g>fg^mNV3?}M9y(g;hQ7GYDv2i8 zXxv77`jXrT9AM2eqF9Og0uB4y#b$Ba}<%bAmTP-*c)6s0{d; z4+4(&c{OnbMULHBsLCXZjv+|XOQJmABg_U3hkU@iI55Kj{WTjQrR%1OM)?4vRV*a) zFW6^8-rR|>#5MC{y%7D6ssvyy2EOaV8v%lVj`DbTnn)tJ^I(NybRO_ADA*&9QRPC; z-{jbS%yT=2o%S>>YW*3Gk6pm5yi~8yv*{%iJwz|Sf0R0HyH-pF6m&tuSvQ9I-J5(*jv zc!25*2wVXPFrS)gy*up8-8L|`J9s5sdmZkM$>^^kdu_nEew_&7&b)d1dNvMcrlOyg zv?cQA0F8<#hy6b8RC+FotN;RWfGS23G3dO-RoNki79TCmV!ldPeFQu7@tKOm-n;onTQrOXKS~ zkO{`-LWwO9S+p%tTuNSgt7^Kl9Erp+9D8Ll6I24b{mHxdtS)@Q-jdPpk_HqT~C zh4PSjsFq(%A8IB8Gp@D`0DbC!la3KNLpMbP1ZDxh5D}5UA8{Hok76=$1SUFiPyy7- zQb3zHGs0|E0OE1cScf`bft6Hj!B7}T2k}s1yx8t^d+P2$)82ZO5^|F14)y&k@J*uYOFc#VCEN;IvTsZuGCMj9ltBF5C`o+<(L1Xx#IN z^StPKW2wCLJfvzDL*o=G&zsXwTDwwk5Ot z#IxK`5fSH>xu62Bzuo`UWYuGzIwTAnXfjkuML1V+v#C9OcW~15lu$oks5EKA^W)D! zDQk;YI|YC>FuAcDi3Z@i7kKIf)@dV>s3aJ!nievghL@%2R&}uS9*6T|fEzg8UVsbM zjsScr#4*Tw9-6Nr@y?qUNphuQ&&Sc=6?#Ue!TguLqim$u)goVw)PJ2mIu$%@q~*53 zE(G!(&6D$af5J3%$1B?3c~_I$T;@uZO}!S<5)y<~>%5DM@^hc*#ZB~k?le!4C+yJFl8?r?r}}+kuy2X}XmfKd?SUSk?YUrn zI`zfofS9AamI*&QY`Blw)}k%;*O~6Z3Hzq-;rxPo-5dUCUoqaOVQzxa2e>_&8cWoj z=PSmlmoFaw*S6p!@$PMH;gYNLC!HX^vAjl7$*D%FTE^Ar@PfNr*FI~y5P!b=n}z(lB|G2cF&#;j{;rE8`{5Wb!O}Rl78@Y9`-tBP$+q;$ zKz{yWlNcCiw=0CXTG9&Hl{n9dPnqpi7kxnQe9g^?1e8h|~ zY}j>_MY7!Oy(tewJVI|zb$C)VE;=YhL#(IWJb+C6|b=tp&>grh_+{gngyltj7*Lv5xu!c$8%NMu}Bp6PAFM+%Q~ zl*IJ`pSW&3RixDxo1&0g`{gBcjAF)F z9^L(QIBtKPLr6s0OiU4J+?di%|B++$x6)ItjPSnqz!B%+qkniPYv zCN|Rwi9>x_O>-^--g^$7bAo z-W8;_@oQHsFW}R50^so0ApgLlL@AMcl~w9#cWstuPOZ^@&!|=9D&$jwaYWrl=5N=y z{uYrDjuR)<1~PLkpzaS94X1cA0eg^&wOOhQP`IDR6Q=z*YzYEWb?ul6iPQ0~r3F$KOi z;a;f@gv$yT8*U;SO$mox-I^IjBNB9IffPf2Yp*%I6t9I76OZcM`LS*7a*a~ti1gUe zBYPt+{cT|1e|tXcLTeJawQ|#Arl;*9?$Y~l&m_&991M*1lu+P&x4~#?u&A|!GuDsQ zGB;H)ah62~UYqM{N&$VVlT0yptnvm$I_O$*l3LAOY0?Wnk+Syys(scy$ux(wP+-AO z^3mB?-z!A=O>{WdEQgL?o?zpzMy)42PEA`v zAKi~ZW0jEi4i6dCRM$ExGe`mmmC&wLQQ}bVIn{{1?hggbaD<@l;ziJx7se#fan)Qe zC>jO(04o}W`?UmcJ)MHCMMNlqQ=EmQarxHR&rMf7Zr7&iM)gkZKi4ssP|-Kol2v+F zx9Z_-$N^2xm$jCe>=Qp9ayfsi=&GhX_EJ%eK`H(X4it#azKM4i^+@P>0+l>%BR6VN7+u*U-+!YdEd1#<(bZxvobTOe(ep zJtUAh<+hFn*r|w>UlJ2TF;2Du<5qh1U1dT2wq?o58%0O)956}NxdY^J-YatWnbjZ? zI;VV_X;Z)sh3-tMzzM5K*Ooy2V}Sk#h^iziLdoNh3|HCY$)Z)4ET1F^4ZK+2m4Gx*!ub~chA*y*+Qq9sCbTGSRwS7d^3Uk(|v?OobZklBtnw%2l&;@4`8w|J$ zqyR@%uUx1(W*oZm;7|fZF@r>^++>pMRC5Ibjl@?;$q3&YL;B|**+O_rkBft-cECEd z7r_$trfGt>G7v~&V&X-JHXL=hfsSCs8Tdn(aezPuqy{+uR3s{aIax5O2}UHQK%+Mc z#fmif08Ks|0aKJMelEZ0=-!ytD%BwJ$+;gV1~YRw`*FB zZA%r4L&eq`;RK<9sl5}U969?{Xf&Bxk}D0H#aPj^e7k2-+=?tGK^IBU%JS!2lJhI6 zF)xAt(QZ|A`2EA@nqAg!%vV>9JMC}sm-k68=6UfDWn!RFbj-2IJB(kOr5bnTN$uso z9w^EhQ;fI;MCf(>Go;qUvdN3u_-Ht>t&jw2kzM#!WWI^OqzHi3NEL>ekOV+lPy&1) z7<}c;MbHsIk^t}JXnfBWBom9i?@(flE8$k2fglY{uyT(Dv=M;u#^AOyd_gYMTWx*} zL*69HUpsGPYf<56FqUy=p$%bGkkgE#H1<{I@6r%JZOPER#|8thQqWP!zE^KK`N~Ju zcF5m}jB@Re1Kk)FvH;zNtp`*#aL*my>#yafu9jz@Tqy{ftQR@xqZL;_IYtgaVVG8d z6P87U%%^j%gEoz7{v}#VIs(+Vp9&uDAZ`5N$Cr2sBDbWFlbM;5nUn}-AOMugRz;AOCU6U^m&o63 z0M#V-MghRG#eqoBM(1adh`^y zWLDt_OKz;-ddjrXR>XaSY_)EblSMIv?dT`qZ5qv)tkSK@J;lY@Db2nch;LELZ+|-B zJlABG`kZ=nXQcekId)hSG9(A^?6bLAl?wWO4V5r2KrOj*`A=pPtw0rI9~lKNEC4&x z@-e1M5E56_01@^w%uc-qs(t&yn*B>vu?Fj&55*o6`q1FV2ptMWHO5xd}O~j z?pCDaQt2$$*BuDL#enxA30qHoBS4=Lm;W^!zjF6dkXnEE<6fc{L&aDvz~ zs1QNij9DCo;ON2zK3X0lg~B6gBbMMdjFWaC#Us$JDT)Cbk$Lw+;!1H)=?d$Ymd`g| z3*j}oZwkUcve<%jRt-hp5lp|d=DIhHI93vhS0H0?_EKo*-@T}~b+C4MowkH3PtJJH ztFwa}=c0L@_lt9W^D9A#EZ?p}0zi+?Df+}x{`8Wuv;aF_;KndyVy|D{MT=lM2z8a( zaq4p936kWeIECZfz;vYZMU=lgX_k^G9AmM@k;tL zku$bU?+}k)TY4-6*N32M{@(RKpb4O!4;bo!${0l87POrb2kmsvSpdBu0}l{JH-fGO z0IfZYbmA-`2-T$>t67Jr-lS+CVg}N2U}744RN(6&#JzFfo7P!;562Y1tqH~c4PsyO zX75I>wS&_BoT)r$+I)AFp>Et~9A$4|qoF`_N2)Kt@4Z&cSDUv8x%oD{-DVg?e`G{oHsHZ75%+XHp2@ply4&+$)m|##L`fu(+kD z$e&#^i1N4N1qevjo+LoYl_LPbJ|)FQ2;ePZm`j=PYo(rsR+`0J0b{F}YoYH1rC2j% z0DA|Y&k@YFPE2HmZ!K7iRa7AN}`(zs1)*E_%feG${#*4^WACn>tSC@sRk1`wE+ zqIX#;*t}tH_wwTQOr~i`6Y+UQMtHSQ4!*Q+^Ew`mX%`a>m|5hg+q?mhJaBkzxOCQA z#>?xn8hrn4aeUzw*c|*vlZg9!Z-!q6OvRbecm)U|Jm+Q60nl4T!i3r49RV{9in62# zeDBBaBqTni%c9?9$2PAwiqZ(# zUfbZh?7nhv8!#9UsSW$>xoJBxI#(j4YcozRQ|QjSyD2ixYkOvH%pNg)h!^j?@lJQ) znr!;qdviU}<|Rj)aL$4D(x21m`@I{0vK^Io??}~^Yt2pnMa=0g0I0882&nKW=8jl= zwEqEY3hKi#5`H@K9m1qy<;x3-37RMRp7WD#eYS1#*th>*{V3;O>3*cGFdZzpf>bt= zN~-yRjIckl>E9j8=&w>#8}192ylnC;ydY=xKjDVIEJYr9urh+*JiTq;u(aY%$g8L{m1v7xQmMn`P*1xSRrBEK!Nm8yYL9JPwd=zzD_vMQaX8ZYn;}J zk&T;xZ5n7pqK9GFq|Oeg4x;Mp5C`9JAkH|9O88o#WF^bGm4!jQ0fDG31^`3=Z*goi zln|5~aSd4cfHc^~pnS?|DjtW1WAK$23Lab}{8ynC(ZrMf}UUAQ%lW(7Q4Z=@##Cm1SUaCOLyaovEt*Jl|s2p+?KyEHa4k1MrpKL8kq$XK?bL6 z^)pXh%M2uO&GU6Q=BBy` z1()93sqXY-<;05)`lshF6~!p?J^6^I&Hn6#gN~=iOP*TAgvEtwgj?~&Sh-?Bke$AS zP>oumkJe&2)`}*WL{t5W=>-F2gmBZmPL+CDEsomU5+lw}tYG5?`8T-ABDLgp$L zc9(W3QQwapTn3DImNeSb11Na6#MsntMbb1*-pbft>%st=gOX&$1XAN zc~^AQTb|?{i7t^?P~%Q`foqb9q^${-v`1Kat|s7ThMr%Fh~tc3-yKtfvsCJz{2Z|H zjFr+P>dh|P1RZHzi{zY)(u$kaQmDeRV{3+ku6DFKAJs_Ph_pP0wTEMKm3+I)wV&oN zE$&5|nY)jMuO@S{{x;;G`En49wykfK2dT#QF=>dj43~(dI+OS~X4K>%33QPF2yx0N zb8Q{sjpade&7c_nzYjg9Ny3FDKIR2I*dQ5T3nfAQLm-p7o+Ijco67DICtVJ~x{HA| zNXLR~f+?yv7ADtFPx19kT#()03e-}J6$YcCUYQv{*B*3ug5;;KBksfp>I{WxBfZ=$ zawbKNPL)rjGNsYLWRDLK<2!B4NrJg?cye1J#`cGy?snX}q1&bONy+o?#+mDDJf$-< z0_#RRzx|s$*6f*eT5`bm{{HIevU8k@-@7_uQm^YbOkK@&U{o3namGrFn`O7Q`{h9# zh?QJK5&?ZG==DuWqcXh;M_hNcb5DvS>XdWQU>s9N57PDl!!Z(kHU?esk;8~W1Oq@) zjHT^OLw$$koV;qx{;In9%Q$q2!rTsC4ug>ZFrBfAj)9^H9GtnJCLYbpf$J`~+lpsm z-a%$XFbkKvQZ)H81xOnHr4>i;H+4fVuzJeOfdOk5H`$ijva6O>r>pgft?9`#X!Y;* zx|sdpBBg|q-`MOiZlMRr;m?k-`&Ggrq`bS~(U$xsYHHXlRpy&{>BNBkgRA9I6*Z=z z_nfrmI-fTw-r1@P4QlVrZtLx77&+m6(Y&U<&|u)T*N<WglJP_6W)o5D{! z4daDB6|b(3Z ziQcj<+PK?QarL{CD;NTDK>qc|STU{a{~0~5t@V}`uZ`X>rd4*`xb)x1`jX!`aHPz` zDSSVdF%*{F)9-&+^=ht=5%F;H(xz5&s+4E0vbJL8<{QaXfBsCLxOGxyZKK2X!!y6N zCD*ztDJ#xgeYa3=lbV%fcW^=Hhd~PGf#iXD&t%SzQK!~A^sQs|SK7K7u=~qbrRU1_ zjSe|Z9%DD1_T=^nqQ6-AzhNo$27#(kxj4QWjth7;`$K?!ZWvi=;ag>;4YN@b1at*S zH?Rl*qIXYCIArvs6_Fj;NN!U`MgovoMP?-nN2fr1C_O9O37^)OO=D|mGh|Vq5$$iP z@_?T{S4r8(Q)H~`tflhdC_{d8=@;qL+6TSIR=8gzj-NYV*6PduvfcIgKkIzB+5YnN zOEopEs;L_4)R^#p9a_@?4YWCM@b|79_4Nl(=$Rp3J6L8QchDUkQrw zPLRmHq?UCG42N85_J5{d#=hQU2V@LGG4vOk@CI~J!yY= zuIoTZ-<^iyNJ;{41C|c4>4sOv#-$%Ga}bx^w>Pq{4pn z{YejvO+a91(Tl?jPn-X#gva=nS<+gMbsxHH_*F4ucg^u8?U=5vlck@6U9Spj2f0ym z_tJC!y?5eGG42ykoGPqceRkb3u2ryyCw4@kXm=ZMV~J&!?-+z!l}P@G23>tm0RL=$ zcE*9-jf@jCRnH5p?j@5FNwG~GtRX) z<~Q{)2k-t9v|$b9K~Uh#sD@6=0NffypB+#}H>q3?QJtLezHb!!`sZ@wpnz+q+JbVhDSvckq zafCRQm5+(3@t9#BEX0W2gI2I9k>y>jk z{Bv~Gv^0_a)7IU7s+V$wAMb4611b~6n$G|_P&Qm2ogNE(^O@`Qhi3T*oksD{-0xQx z)qUKLdrTP-r4hCr2pY;=EkKw=8&IUg?H@-Y$ZXvo1o{tWD(4W4biLt2K(*=oW0xYG z5ixICDB18xTn!Nem<$qsIVc5PnFdhx@DG8`MsZZW60-t^9(ZG!3*wNvL4y)FfHQB| zzT660beYd2vv-iF_h`)Lq*#&Y9IR=$(dBwv>4lw5{ia8ycNa{rayMNi9o6sBjnY`P zI|ik|9*+K}v0abCH84b?af8kq2QU_G+;GNllS})y(39h2W`W((Y^wt@^c}S57;@lW zM{4X=FE9J(sdVS?llxni>z=ac;WsZ)O$hc3P&*}f&Bh$iQJ0kihn~=g3j6e&pzzl? zU3G(k1e&XDe}>C3p5n=B(qp>h`9Wk5ZynLS>7kqDzn&D7kby_|Zw6{<8RhcI-hTFm zK>iknN{Gir;9IKSr3j;%1n8<_(yA717H=LeN3 zg1(ltYTBe>f2%nCod1V4Juh^s-k|)f{C$^(1E2i%sPe(-%!G>cbBEWTNhCJpfm5@mg0#@dpdzxAc<$DxnR5jdATxKwOY+x%qc9y7U>)UqH>qVcQl86NT$|H(ad|xy9tav(Vj?iR&6fwxeu1xo@9mCUhtBr~DN^0Do;O z9elb5CN^D6bVy#msT0pth61u}GqcN2H+{{T`1PVu@ph>FIws-vMAG)FXL(li^PtW| zt@V87{>Wb+Ro32t?6r>HzNP=U-Mo?T>2Sih?o%t9@ghQk-nHu&zOZv;?1eDPTIfWzjg>h=F4oF@77_OmEgUsJ9o(MH~)10y+$rE)VBSOy4t!`pK> z$GT(2J>ZnKnkw!qXYe|WYk#wtSFoH3R42sU+m80H-ST0`hXj9knfML!$ZR&q90W$u zn7b^yeg8?+6sIV1|HvLHt?csZ?{10RDWT{OV2$$LbMOBYJ~jH?JN$4@bJ(0w65cb! zZLNZqym3P1u-DcKC0{}Q7t^g*rc(Z=(LLTTVP5ZJ)LlNg z;$Ty?sb=hJyNlUg)n5XU=nRbAZOcr2bz8Mj2L{KZwI&lh6^ML$u}>A)B6S6EU`bQE z*Ghhz5rFrq^zbFIDi~f3?pt3?XhbZ&P%IAuVZXxYD=(!S$U{#G;jG?`j(W|h_ z`JIM4^3^w!3;DIW2ZH0`TG(@M8M9S-eSwV3ybMV{mBC{Xv@+$Tlxf@W?A4A;>{Swj z#^vuu^@+eG!GqtlOU}rrX+VCJO{OP$z?h|KSfmgEGKqjxQRW;?6s#M@oB%~6@r$lx zqC5%EugW2StaBEj$75v^-APV>uyD+cPCcn#-KpcuFOAm*(l|*eURb+YdekB2S{U)9 zkGktXgk``H%#Zc7u${hOG`TAn)|eBXPQw7YS|c+L1JILHuvZC{M=(qoI`&|RxJY^q zR#2C}*;KOCM0L*J(?dD9C?;P?v9)!t>w@m#ks~=cV=K4BQ-5j|D}Iv zRH>_a1)WjbF!b%n2fEjR_K`Siv6qZXQ&DgqPKr6Qe|t>IQ^He*-RiWFbqS$NeO1e58z-)dvW=ADi6#@F{~+&Y|% zWdXMN1{Up~JBy^sG@<#7E11BK*tE|u=#NH}|FM)mxvUvT+DiHE(~)W_KjG8S{ioq+ z=cZ&uEVUGHKLjUV2LD6kv45j%w*`OIN{v@m3_M3W{V4q8Edxz=#C0F$$p^>5r!_J0 z5BA@~N_xnx_sCv&J6r9qD<0`|V9v!-pWQonO*@9bmQdM>yO@ZpY*52({kS5Z0K0=~jLwRS#tYd_CrRIg#ccCqrWtHR#EiCT0Wfl!#N6b?r3o15 z56F?MA+LF3kcnFs1%*qKgC`8I$+xpT0+$-YBu#!{0Co1Q$_2DzEYU68|M^P}=>(5+ zD}wEE;-5xOD1_WHiC#6kMhBU*Z8Mcb*j}QpvEIyTSBgWWV*ZvJ1`a97t@E6Ly1i+J z7?MW7NjrQPx|wDNnDn`ITs0dl`TV_NLzhheXjo&21Fl95bu4jV)eaRIykH!o1@u8R z1xq80Y;KevDkvDRaXSshml%&E4$ytQo1O3<9w!TP;H66duxIKB6RPP{p}W{J5k}{B zgU1?}10ZuV03xU|s9}wW0W3MHlZlF7gK%y)5?9Ct%xPpG&Q2cCEik}{Nyu#ShsrW} zAoheJ4&6SnFG^ix&QVHVrz8cX5IHHOBla87nH56M^1ti{&)>?dW#)SH24GHvN2%&d z*b_4t*r}HKt38d6-kxmQ#h@f;?N(3irdOitWqzBl0UK1B)&sg#mGEzPiRMBxFM?}D z0&l5cc53#^)_8P^^@0fG6K6G9vL*R83-P4ggDcQX(bB30DN?2^p+EUj@ERkkadMZx z?tO8vs0dWy^EK}^&<~oDbQm*!q^M~vW2u8l=YTnJj0nRihNB0%nT+b^6^CHZ2E3v_ zKA9&5Zb3(nwc;&Gm_9cT5fNa?3D^vi36phDMUgj{KdylP5J@vK1gso=CZG}_@d7Oz zge1c-W#?`kP|q_Vba@b4Ub?8^tLCD=1QM3o;+Au7)m@-P2APD ze5bi`VdgD!&7u^$PqEMB(ZzKH>NwBaZG9Dd;x)}DVE>ae1}gU&b*L;xjTH|;2f~BA zJ5+c&?5(iPZQlaItV=+mX0kEy51Uz2-mOS(aKjNIdD8IN!SFB!nNOJn67_8biik3W zQ3ODI5*IVx=E3i@(5LM=o$VIDy4n~fPorZsOX&AOST;<&?w!8P8H?JB`GlUN0DcG> z0*QN!FX-nr{2x!>9Zu!{|NpwravbZBy*gHzB_Wi$t!y28OR}>^gX$bJgv^rUbIdqK zb~5USjH2urZ$)LKN%LLr->dH*KiB2Da5(P!dB2|f`FuRSVJI^OR1=*=GV1_r|2@Kk zsxz2T6pcn{3Jx4(2tGK7V>M=!;BG`d98i_)%qV?Z2Z~Njunt{;yqVx5_`^~B)|IfA zb7WeyO5%O|z`8@`K4k-Qe4xy=%UP-9_I0)*$Pp|q{H4-F`ML}vc{9t~u`kHGd(!B! zu_eE5z(;}7eB#$3{U)#IkBsFbVT(J5MPR3zB18M?)Xc!XY;fVufn5Py%}hOZu+#bq z;W1?7loYR>^DK&;n-Qf~Fc2@^1GLgjfesxqQ~K{g>#ss&MgpkSBgF?g zAXk^nq?j8I{*y#r9Mio|xS)daC-p7XoxYR^Nx-~-wSOJ!k<^D{I02#```{93o7Rus zG3t11Uf8bKporR9xd{n;YfIz>$R~K-Lsm4!PEQ)d*=CsRYd_%^c`E&nWkRIo&}jm; z`Fuv{<>1nUqXjnzr#b7>UfT=CH@KQlQcdgha-z!lR4ay5GoKE;$r%zTh^k}At{~gR zn=_7Qc!Z~^1|3%?5#>!jUhHTojj45TNP|~17X9fa?8at|8otp@Ku*uSf0XK@bRCd%2O9SvP z%j?$ur`b3dMKbQ)+xKs8!W#_~&<~A%QeAe#hAI5Id?n--(TstY8=#4AF_=Jj)S~4U ztKa!ORH}wR6rwJ%5Ws&#im63X; zf=?kxo_y6(C6A~$%~P0eIwBC@OAlkxV}^$8v-Yft8>^IsWoc>#ZPpNOe>9QuXSoz5 zkaHX}0BcRk1C{G0jaCPh+wH=qww+~M;LV9+`w8d2QU!dT9mn0hCCI4s-u3iJ z5PtO4&(pY@siL{pCYt9SF#g*RYwfOR;g} z7KHh=v!(ada-H&v;;m&V@8~1U?$;fc)8ZOUD=KLPsUE1gi$jvbW~u9!Hm}FR8bEzv zbiBEI!_xn2?HyvadY;;^n&I8))}pnOV=fC{&n{f0W=Th-YSyGpca~iI?Kh~+cP;gW z8nAF)H8HlI6j}OdTFF1Y^WPZTl{@BL0TaRY20YdZtyikg+vt_r6DW%*|?%n};PHd{7W@*I8{( z&RHF@FuPY$W%sv5KbI3Y9a-l*qT_3*gfS(?m9<^mU31;3VN5iuapYx@)xzD5*k4x~ z$42|?Ih26%SiM(brr$l8uFMIC`>~HWr`CHv((a_r>dk(XGzyB z4h{Vl8)x#qWOfTtUP)gNWuNYQ_1LSsH5PDfmcM4X`wBSe315+z|C7yZD>qgN+(_Vl z^wvC03!;*`KaZ=ask1BcYZY-QbmJ`haDUE;o5;+%Ins0}`{vooL)AIV+VsmeN6Z4s zoN013*ESzqziak4nfL1r>8N&NioHjKb8MJ^5WAi>GsEvF&eSh+*xRf=0xLC^cRXYr zJKntUE>jjwvidVh`U!rn+oK%9KwSTx_$Gp<_rf-oPgopBhL3ELiR5yi{XT^uDN>|} ztOlFhq{Invs4s?SO*(}YUjHe5 z!G_ST!qus_pi7o+=f$EUm}m7p^RRFKPAsc?@>=PCm7`Bd^y}? z3xkS!jBng{+zITLoX5wz@K5Y9+y2no9-X1NS_9IesnW zeM>x|A$LuZLyzN*uHU_~%r_zy^F@)SoHqkCNIi35#*aT{C~&90N=XrsQ?=)H%Qg1U zpPxDwaq>{kz6uOYW!>XuWmE(ytCY=|A2b9SAnYA%UrovaD4t|aMhT#9ny3O*!zoO? z<5hLHa%|LT)Zj4LhF*6wvVof^raG||6$Bu2i5rFFdPUzz4(Qsh;S8(Ngg6NGqMf={GO+`gx^408e)N+A8)9M*8nrZD+4NcDf^)v+2uQf3k1#%++N&wC*LYA zr0C<6v^{;8bfBp#8b_=?@y0*iSz#ljvm?f zMMM!Gfrhk!0Br+p|1vaVUFFmZaoM@fjEt%rKhEo%lOWf`6!+A$a5k%un>#Rim}F?) z$=&ne?s>GDN8;$Ip#9Y)JF;5JoI;i@1jBWd2%LJ8o#<5|wTk}8H0>j!%7D}ExeuhD zQCEh5T5P1WbRfdgE6CLM$4w>oWN`~pMEDCm=p@;)7A0v)Bajz=>xR0qS8emDC-}r; zAUwJ)M5iPJB02?!S(w3;e5Mr#qaLxlqk;s);^N)#aAh7D6%}UfXwsb!VbB^=2W)Bp zD+v5yr!fjgBU^1O@@Zx)6ca3FWB!^`m{PV-21)`XERkvFO$ zon1rj?He$pby$;4xo1ei-;Dc0uAO(zubu$u(}5%QB!~}Choj`zhzL0_#kuDb?0t+* zv1&5g+w#|>^WAH9aj`LP5(H5)u&SR|T&4vs`s3svBFO&u7PzazYdH$&6o}!*BZnD{ zs&N+NDk6~$@#oRcDPCLWccdF&{>0ep1p?is=zSzA1=TTB8bpk3v$k;!HF$QA&e1+y z#t2xw(q4ygbazCk65xmEMB4pRy%JUOYiBX?Ggy?wvfqW-hqcFk6nXIPG1 zWFv46)q+Z|9kRkON@*FV0cGAXt*%fKP!C8@uq39%L6Fzy8_xp5)cp4QX#`k2SPt`X zBKT(-4yUYTu>*`4(S%ZC8L5TC(#r^I&=oEdh4<1SZ9GE}&#(<9S=6orLHZJSlJ5g& zy%AO%q`&^5N0HH1O(Xq&VWVZ<cLg)GJ|~Ep-Dsod&}s#NS{f&K0k#t{_*et%DGw5GbOhz~blW)R5(1E*YLklt0E>R1DaAO`U#$$LUNBFWC^Xt5{Ap~>{d1vN=iNxE2|nPl@ep*rbG zZYG75x|bE;di-^yXGUdy?lhN_VfZ$uSb|=T7q^UqK`*T>dQYg1j)0o~M$V%4)7hsF zCFovzHcOLX%|j$Vg%j{icmpb$JE4QYef}6n$Jj-XII{%2s-HHUgG1dE-E5Z-pgW~l z-N(*yC^_sLIBmL`qkC0t~j|WI1#H+WC`oG0#rC+bl?12m^ zMmD^irwNgy=o}p#GsOW6 zAy@S(cK-Mdi_<(kBA%>w>>i|L^^0m}QSq1$7eA@aUYX`Z8vrN28rTMx1M~mhXlRwh zkJ_dvb|1Z`-+ZKW*F?jPS1;p|!Jlt6?*s;A z8gDC2<=Rmn|2nVRMwvy^bw9gR&Pnv8sw>M%0^lG+_&gXQirW4f8UgQ)3 zZd@;T(LS{L>Zl%c;c|N#ug7&Me5wg?236BMNheeGU(S2R8aluUBx>yu6az}=n9Qk2 zi*2D~~y`PO0*^EM!`Dlx8~mstH{ z6d}y=2hup7ADE=WdBe4i zd-xX@-4;^6@R*|9ux5sV?uo>(tEqr2Vq`%_516KU&jwFP*54 zX!}jux!dZq``d%o(v8V$2b+WI@SR`VZTVFvuc(7le8EZFZ-P{vbsfZI|KVSlRm$U%=L_r~J$1H&_W5AYQ! zqo&WV^C}rT(2ZZTh&YV~FNSig|9NV$D-CuQ#pi4f|6`Y}`>F7UE;x_J+(KS_-uXal zBHZS4iqP)!n`h2tuYcMYxGNN*)&q;q$}v@P7+|(E%W2+ zE-Egz@#|Tx83EnC`}oz40@=CWr_mdmU#%akNklKn94sAj5PR=v)tp~&$FI!I@8&DH zdY_wex-o6Hnf%>b9H!%WE`+6`db`Vo<8sOnbmNHas*|$ySD$d#)|(kAh860CwCVY- z$muQryJz{6q|Gh!D>Sb#Cmkc|m=6U$4}ZIQE@=EtUIYea{xjci*Srxu8xdaSa{PEf zT;A)$0kkX1RukLr&Fjrx29HHq2jrL>vat+(weR(MSN#6^OAc=y4#Enwm-YrzgheIdb{BKaaj7RSJD9`RDTw^4G4En~{+)Rez~*%B?9Q_Wj~ri{f%U?9Gjf zE5CjRx_@cv@Hn&}JXMy7F-|kjzq@-+-GG!d(}?TC{#|#D0NDxp!_CZ%oRBq|iqe!c z@4jlK!sP;wGKae!9WKFT-_y#zcjPMEZ@ct!-rUjB^znm}9v&XPt7E6SDsID}<^TVo z4J#tI1gpQLI~uM2W}{Sk&+Kh@qbpWw@sJf}*lzZq{N$q0$%_ZbW9|O2-3{-)ovGyf zn$%4*W^?`9B40lowM2`3cF*G5QP!i{bA%V#V>6?p$D(Uxe z6BP;jf#G__@#s*Uf25c{_oKCT$oYM7D&5>?Jr-2VH4k^1Ki$5NMEswma^dZwYpN-S z!=Vd*UB@(V%)k0)D*On|yiUN&8=)HSsoviyelFGhSj@YmSIXVhXIt&>1?`MRt477k7ZN2a0razQv@$VODe3j)nzdIgw*jj zp9KVKq-YSwN8O#4VE1K5BOvAkom*eK5_xuySTijr8lF%fD4US@-tc%?2{~Gq$P6lz z&VnVPBP;)kjJ@4_ZZXC)isGN`YVUe~&^oZfTHVavkE@Z1=+M*+uU^b@mFH=EET{<| z{+!gUtH#bJ#q4NZ^`auYqRA!?KluNuYA0fd0TZW*1;nGgE{6`Sne$W+svV(1#Kx5_ z(Wr@;8xJ;~-Mww0R-v3|I#B6l7*{?>O~{jyN-cI}GIJ9{zdby7^z!HDzurZb+v5%a zw^Q50Yoy4VQV(cv6@x`0)GDGr+_-IPGdb1aS0mf4YwljXM_?^mM?c?k$6Da&A&DBh zi;iD}Ad10})3nOu|J5I}b=;)AwUj4%W2H(p-jfuZZ27ZVxVm*aYCKh>3bSG^Wl#Um zRMVUtAIsJ=9Rt6Bi=uC<6Ji@y^2tK<_|PMJtY<<6HNBW7iqZIk0k{v2U4;Dgn@G&U zp~YHDt$wCkIdQty;eZlnVf=xaO~(&=2cE=D8S$#PxtbbsG?fJ|7XIYSycq0z^V`zdNJfl?HRVQHsCPYHX-zB?;NoEr^i7-`|l&t|RrvQI4-pGf?VIuqd zYSi5=t^k?=3B(aN{n0`5g%*3uiO8n{@*%eRdPy7nWZ8gQc4$ZHk*INGVF?xX16fiQ zxgQ1fJ$oLU1k{F`0-9IbLXc+D?6(G}GUvl2wPJq!)h>Y=fF9?@q2zfW?3CiNDcJ18 z532zX?bQoVPT$Wknp@m9QU1ztzlEOd0qE)DgBW5pk-&wOudTmEr-7;b31C;|Zq&of zQS@YV0I#{0YI=*aH3ICk`RTeAvp3lNCsY-IIY~Z%Y?qUNO)3#_ITVCFiBLw-VDh|@ z%QgB&a2eQ^qPmEjSBk=Fl_$RHm>ZOBKnTc^nB+pvn2us5sa2+PxjOxIKS3>+S?L=g zCrHV?#I`C%JK%bv8~jv>3mPbH%Z+QR_HJepqw~VMKdk60APZ233gd3>QWXN#2PDqexH2k|_qkBcx$ z+uLYmcC6WEogdI&@{7I+{AVKuqumVo8K1w|eqWt+d~r(uBH#o8T48#RHbm(ybVMJ~ zV@nomh~Klgi42y)^$ufUscKrIzXx3d?Panxp%_7WU46Y~r8O{fs(pVF9e9cb4USD2 zLH}a2@&hoG##yi%@Sqa`HS|)?6HR!1NEigvIzgnk9&R)s)|K+uHE%4uDvjl1mRxN5Wg!rc(W?VG+n#*KofF_b1u!1@-Eeb zo{KSU3akO4eF2QlN}z(;H#ZscF3%-jMT!Ji!VI2U zZho0fQWruH3}~Ks5W(@fSC|}s60yVR(*^no%{97k> znRn0>0o_)VvD%NlZxRI-rD7dH)XGYMw zI7+u*BRi|79u1sXbH}2HpoUap8Wn!BfCmZ`2xxdE4~lX7vFA z?I(|&{FtTG`J<--lKh{N?kxT;_|c)Bo51%WG*_4uo;R^G!OM_;SFrC&GSWDoGAya* z>2)J3pVPUT5b(y5lMZeBWwDUoa~@{iaoQzcoeqbr7iUPfX1{slv-R;h^5ZWOtDoKq zCSmrB_z8r)#*MdJ5$Kn8?_W`~;b0G?`DtLi`*7&CbyErzo9>;YO2);=@tKS6TzbFo z6LT#!Wl{rGr*^09j*y*T(>F;R;n`olZHFKuwZwJxcwlBF#X{xO>VDy>HeQapd>1jvrt7=pE}onBnYHSiW%E@8XFc^U7Z%V+$*Oc=^y7h+1C|e9n>_ zRy#+7r4)xX0C48J!)v<@J3h`gSDHLJ>vYi+-ST?^ zO?%px^UMzwVwOqEB{@iup>$6@rk+$p8RG?K?{b)&us^|dBk0|GWKz=)E@vMg^ovAp zjjoXTmFEb?YAqV?1m7gTjTjO(w2Tm4 zxNY2-de5P>_ebICg%&@i?AqQAmW$7A(ZnKZy_WzGHg!1|@vbVQJX9+CctXMPb00DI z?-a>+^CS1QjSFeNA070FH*-0H21z&?A94`SIP~DGmEZBuqO$NkkbrJnzta%N))Rr8 zDu@!F)Jf3m)^&Ct)aIE4SS9M9OG@aQT?R9ivv8vz3VX_Y!_&R`Mm@JZ9Z#;~S{@W^ zlM7R%+VRCTKCTNnAPQE)QgOg2^cyW8=-jOn&pNQ9G@pRfi6rK0h(~kyJAu-^`1v=# zeWGgP9wIt7E0Sp=M}m_WOTXMJT{X=ZN@9W6?k!b#sF@rWG;WM^6T8n9EY*4|w;9JV{q>d0*?O6@lIFNTM@s^rMk@7cUicPc(2o@^IuDRE1zc8N za#UP-Pk?!Twf(|PM@wIUD+s;!)2VakN<~U6RY_Q6=|=MxW8ldy3kF;-;%d=z_q{Oha&q*%1=gkKUYGN74Ya4zHwTUYHb9P zM|?K5>UWaw-)QY?k#dau;`q?QkoY}oS?ZrGN@O#i;r#lT(o7QHDDNj~c}>_inbvli z-R!tVWs-pt_6Sjq>1W5I=>DJAfs5t)0KjuwEgDHS)r{Ft56%WkWZF7XpXr_O+3YYo zD2=7ig(-pKz8yCXa7Q^qT)*{HVgI{(+DoLl){X2uYTi3QZ0=)#qNRxetTY@PISRx= zC_v9*pSH4F6;vjI3R4HcMGh7%lzt%^lenv}W?_8{N9U*8O`J7H=5f?@K{^*KqXIaC zSNuz+%#)!ZK9$_M1UYr>^z`Bjhr}kN&24PC@7j{)EJtKVpU-*OQ)jtG^CDMO0#xj!>LMOLYNY@ zVjv-&66~L(e<^FcD0P)ztj6v_{ZuPUd+N;4n~*Ez_y>EH?YSGG88051L-Zwt4 zd!-}(MMArb;Q%f*%(Hpx%L58p9fB_)GNqLCjc^lJvihg+dSZ-|9Dx3si348FiB4I| zv5fhA3WMpl3*cxD$Zu{ibyf-VA@oXP4pafyPq}h!#obOe;HO_41B~VWqg|JL+S*l_ z*k52H9(bjB#bN)}j&wwCUg3PU>uSSaFtih$B0_=b?sGjao1(+mFv}*-WBf&Te(d|_ zd;sv*MErm0fu@1HcU38q7T;}892Q}k=N0^m)>zYuzeg${YyVUR`22741(%vop37nc zmx;kE`$^WuBAimRA6&6d;EJlE@@fvL?>JZqF(zD`?_i>8 zd=SynYfL<_yx}toR$9*iu*?hNIA=>lF~U+02HpZk;go4ezWy>3P=l|LMB%oszxzYl z%Roas0Gaci6nWSKVsHqz29a2!gmpVmo-3$VvW2G{LqVbgt3(V!DA^JjWvWj0jG#o1-K^ziH#+#hn6FG+!reaBlxFD7zF z$FZ(aeyFre#6~PgU$;3haZhy52vif5mfz+ z!W{-B>gUn*CB-DnkG#BOKrd>wfpf7Yo+9)lji%}#gg*ABSqCqL8q%yQq7FYM^E1|~ z$w%3qyvGEDO92XMBRZONJN^!M4u)AIepD0#fMfq?!~Ott0znlC)U~JRAcD5gF&G?j zd9&`l`?ymaW}x*{(7lQ?_w5n0#Q8z{<5%&>3vRcMKi=y#OC*d<2QR0y*-5QvE5s;tr>h*y84fl7~uKwaW39`zm9z{Ifoy4NoNMTtp zkb(yC1Useb86OzuM@I2nVe}0gstt!YP4abcWTp60lZq{ZD2+gVS_xKdaA8z7PEG_8 z4*v@NBN8v?kFY_1xHRO>VW&P>No?&M*uWNi6m2?IZ@qxYu$?}odiHj$MZyr{qont1 zG7arbIoEaV(A0q!mAj?(6c8qjeo3gSTLd+|Khutic~@X&UQ}0Tq&>;{P)KobOToB3{@~!tl zp4I&o4GvC~TKylu?qQ@Rvh6<)?gx9@OThe7^JpC2oLxnJL{J$$pADgZEZi&sfNlc4 z1R@M-^6i0atsHV+1Y zEBRYLJ*ee+fpS)@*$eOU_FW=cb4sD5zMrMk9@`l<2!++njH=gNtk0m)FVAx*3&-j> z-xNh(jnztnrqt&W{F(dp7tvQ$n;Ux*guEO({uS!K`~jz*j2{1b)O26;koJexbLFG0 zY*SQ~nDKS29MDI58}cmJz}38oLq6x?#I#*n#r-|^J$J?uIwGaxmz;Q>YR`FL_4u#t zk}n!?m$)$;DFNIr_y^NKRpmj*oF;t$(0Nd5bQc$;w+iH0rI4z+wXq)^AXYfKVeJZoSis5%(cI84>M3YCw}+1-R|+I_N}aw>imErqLcV4iTpZ!^#s$a zpjbM6MMb`ZuenveUJ=3ram>oYihY)v-B3qVHZI@?rq?E(8zlQom6d!O?cpkIR0Pau zR=zMzmCvvd@g<{P6=&gn2=4*ja5}kxX*~wlX)t+Fj`h%S5O81=T&w_-u>B_QR)Gi6 za6Whz4EFi4SB=B|G(W)DgT>2v00aUd(_P^IVx#jg_JS$T zGa!o&M3Dy^#XoDh)>8Co%GATdT+g4DbuAUtXJIFgOO_@T`i#SM%%1@~-Q2U?Y4jfT zFvX!c-#T%0oS}OvL}ssxkLl6)>|Mk&4UVg?T?RG49Io2;*i$^?@pVx^Rv-d)!%J-s z+s|Kk`;@66bw@b+{V4yfG&{3fYvOdGry%v_6JB;K-TC^_e<`}OF&!;~Aa!jH*OK)a z0oBnG8yBB7`Ewkf6Z+oyn`4($1O-fnAIMZtn$SUT{I)M(kK722Cz z9T@fVpp}|sZl7BpP3D<%gQ)(?l-hAOdKFlW7q(%KAb_=-CYRRiu6pbyGac86o_LC{ z0%>pYesg;A(9W29*@$aP45uN;1%gi>1cN}4g}x)Q7UA;j=n&J33Br(n35*yF$f9C^ zp@Mq+3Us@GL?1s0+VlG18VLeO?103H6pIzFC^@6->1uc8Pj8(|zveYT9UZKO;aDz@ zOWs6w3S#kEKr8vEE8A)+wkPxJQrYX%r0h6%C5*{M{^!T10%WomO zUBa&<%0)=zk0RT`2ABpQ-KIzc|tx_)jY`VJ+$J-CB6bg47BOaF}WY z0791FM+3}A6f-bJ;|1!FbQgp=%BX@Oz(rA-2l^d&U=P=EJaLH-#*yjJhDVjaWYZOp zMTU#4X62|J8-JAmiN!Xl25C_d0jMq>PsI9v;*;E%wudJ(x0Ap9@NkPR-5td~(E9R9 zdP?aY>=~eVH#@@E?PGmn`22_ycDOim>_zTJloshy1JcWebdNfJxCYTD9x**eoT??e zH0f=JwBAnUA7S)-NX7tX2~6+(sy(&wir241n?HQKp2UZ*gJUD{9ufKGo3*!P=(zPy z0bditYS+5ig2?H)cNke2^3>~J+p8-apX+>i6m*@FenUC3M95PTLVCl=jjSv!z=)Bh z0s0C*9)wYX@BHoB>$*ac4=}m_ai%%YG61-fNr1fG0{F+yLyeIKqoX*$Vt)mf!ELdO ziL+S9Q4aYn&mh3_z9PHjUrLN3Jt-xy+zW!R|0kH@f!H=SuTicl-8X4BJ{3Mqayhp4 zynrBo9cU=}#!*KK}Pi@~)7D66LlOiKbdJPPHMsihPIm zF*Zc@ar7GNNgL<(P>I_o-O2?cPrtizX=Lrbq~d9f*H3^q4Lr~F{`RgalGTG=c>&f! z?Dxh1Dx|$>;)F??A`X0%1Tf|RxO`|X%|SVd6$-ZD*>J3dhsLm?3hJ5oe)u{bGQLpF zg#o?qxB+%~7h3Xzu4D{IvUjylqA9e_Hd zaz5nwD`|2DH+Sm*&se3+Ui=ww%i|8G!S3BU*s=_^9=zc8(uD8R_oUO6f7OU_;>SN4 z?q3dgVkc1l zv`g1LEtAgZf`T`fx-5M9lK0R)M;*}+H)x36thPV=rdB|cH3I0W7$EG+Zrf6aK`U$3 zDkZ=w6CV6TdkW+;QGmhxd59v!5yix#`@!xw=`|Lh1lo&$X+@BRLC9o3Sh=4#2q3T& z8NpJS#&|jwWW}E%f{*NUv%LTZ4^q82mZFTHooaZRFddQ=1)k=4Mh`#JxZLWm9SdQDj@&s zS+hC(YKo&eb^5UR4a2CsY~BFf{u(&}c&P<7B*wma=IN92)u=KG2BrK&t z5`f{{B=}^zNop)8j920qI&hPNqfij%6UdJMAgt(!jDCf%?7$w<4U}R`ruYE)ID8eY z0(Q?abSQ`bj3uyqt_V)T{V%x&XjP=(-}7n7Qx*l$JV_uq3`CFzN=JWkG;Tet9OV(8 zl8o$$?eq(x#?|LhV?RsDM0{00#pyYql-O;v)2lXiV&S?NSxD8QDY#i%?q%71C5)%^ ztM3KD`JuaNj8*uBmW)f~oyoVpUC_Anf+U+)bsZU$mJ$KL^eoK`N90SCf0Q2=Ieg(| z(^9M(q6PteIJr66!MKzxP<7u8JOS{p1@!GUxR7O!!+`UrfL#S70XT1sFxFwE#53g;Ty(^+jsd%c z00h=wV4DZ35+&}K|6e*?DtI(|UId`gAjPT`RKaz~&K%&v24!hB@E0HXI-nAP7!=M@ z=DGHuhvOPg#}(hquc&-qb2O)075cgxSex~`iT%hD3Af?s7oYto8g$stg6-Wdo_O1R z^dm|=`Vw*0FXLFUcQGlNYoc;ANAqW21FAfwoXtL0N3yFte?5*NU$^KaWU|bR1oqwvgvNAxZCQ)%un7{weT2k|=JvTp z`9GF*(@uzd-m+As&ou~8Wx(ip--l?{+@JUw|k2+|WkVC?-I zz`2%)9w7lH2bj4<0G9W_Xs{Si=l14s}~D`T4L=kfk}-KDf|XNQauT>hDCt*eXv^xf!ibA*{{JlYWO z56$R-GC)ID^dg?xQK&s#HFURMAMBe04g z!{uSBvLQ5z3Q)T|o%q3M6#p(%N;c(E24TtZu!IQ15!K>P%#y#(^-J!sJ7o_>nK4#& z12p9ph_O_z5~A+t`>nj1b!eG}`*$r5HjE!l8?JLvFS7WF^5}*r%H!xs_dc$)g5x#Wx<1g3u{oA+OW~y4YQa!dT zWZlyD?D2qO3UnJaGyYPHQE*tloS=bJa+-N?Gd3@uoTW^OikYMDyeq%H^~40I&U(!j z?V^>x^@_&4kAG5@F@iBnxR{^@fI6=#@XXAob0y9KAZs$b0~pYz(gUG40)#6ZoIv?j zG4MeCV+Vv~4~M_p%Ya3K$B8*12p$6JUC@R%jX_xPyIB}O39E2I4kJJzjuY6$xgrb_ za4<|tmH^xWZv4vwEE;bc+<)c$E015; z{axaKF~CD@+nNb*i(CG+39pu^p ztWU5HWrt7};aM;c`|ExHS>P2J)L|GCut`~?4v}*K_yk{-hwbU{W)ftxpW&j>Ga=Nj z0Nh|0-{M83x?#%LV1|RkwGh+$|GYGZ#Po?nlRo-e;euV)&uDV3U!CWv(!D&C=l52Q zALJC6eG=U!+U^#O8*B3`5>p--d*z#(cx_@8&}aM~RhlM6cFjVtj@={aPV!~Hx39-o zK(jlF4Fzxe0){Wws?iP!ytS@A$4uz{%pYjBCJzpOIp4}_%>fvWH!-ZWb4mcBYLHUl zWv!l8+DM9by)$N|Ee2R!nqi>B5sZ2%)M4Q?<`@h_D7EFBfT73Di)wo2-T7eHf^D`g-(sZ z2O63d0C@yl24O(%uQYz{4Vt;~NG5Kv&*h`X?#EhEm&P9|_nJn)bCOeNi{Qa2=AHA< zOfEgsyCz0>jVTaQj=k2s_a)+Ss2OM^G}2h2I~sW{nexn&UEDEP|Kk`M@LpT&8o{$< zMxD>bf5&)~!MJO-2nLvs8!+)5P9coz0Uw&`YLzfW^0G21ID;pT_#DfHQVbAboQ^IB z{r1mdx9I&fB}f9+ARwwLTJ(2EA&{3%W2_PY%nj+183-x{0(}6`g5LtI?hP{lM{ofP zX7~UH>S@Xdxf`i+a#w*x82DQ?5Sx1&`fA2>H=Zso1VynAyt)E^=*4FOMs+};q%N|I zcyicrfDuv>JX2I3C^x8o0EHeu8HPGSP*9Kp@xmPKXZhw+wd+aKuUG262OVlZO6w?% zO^ja9Vy}BTpfqPpr084Tq;(MtC-1sG(u&L~n#E_mjZe}X6<02j-K#Bx4!g#GI@bk)Q|%aQ*l5q67^rpmM^@4NBguZYTDsKU!j1`)i;g!G$+Z zC21ZewDblqUHcDXqEA46sR%$+`8h2|zhrHS9vr2HUh3m#(BOmtG%Hk}6VP-jfh_pe zRW1WCM6*s71zkcQf(rz}RJf`LxN)Ekb_mrSS=K?SibwcBD<7DF#}lv`pm;Zm#jO)7lrSTkL9B81|Gr@`~?q@@e%~ZLeYpVwXsDk94kBV)3`Y&dutDEDgJqc z(mp*7;A58bUu3cSLs_jUeA#v0V_%w!6w)FgKG_6dl&ADG3pcSRB;-d5UoFm}-> zhCh*i76xlnCk5eho&eBJ^Jvw^1>WsaL=S$R%CCH3c?VlBihxm=2W<<&$bTDpSmAw* z5P}+)dK#V_^aubB&<{;u!J$NGPv~r??cqE&y|xxG)-fQZZW;r=^8v^@3)LKqio)2A zC@v&`!jQO`gF>hxKm#1JZ3or>qr(zQze|f_6Km(p!b4|wS?uU0SN~V3^&o{w$ukd) zJNA4a8{Jc{i<@7$!5@BBnio&^W|}<^hiqN1(1>|4)lkqC-@U*J$yuGf1+k7>GN1XR z6Xi>b`Q%UQx0FCiDJr0f)ZNATmqXotQUyih!7nQ-9LE0q)(w|&XZ;WnKYHoVF^kAO-487B{T8KnM!x)0g3)a=HKM>}A62nq$F-heD61mE%3irWWcan6EJ0m*;QO~2Ua<Q-4H`(X4jsH+wpO_oo4;wUNCT5IiL z|2c_H7iKQVvO&nPIRpmRjT^%J(316=!4@dp1U^v>fTJ8A=2hEN=$L(GSt2tRt?tAf zj8p`6PsLv&q?8d^s!HdD!6+lwW>uYZmI}TZ;w4l;ekVdVG?RekTLGZ11W=L~3}&2+ zY7s#0?LG$x= z{rnqOs|>!SCvnsp7h6N4XVe##3v%V&#SSd z>8iqeRb=$y&u?1Wkz;kA=WtpQvLG`((h~Sx9~O}$j(xiCO)fJb0P;W3XZ6Xz*$4D- zDFrY#;Kfp-;eFyxQ_{|V+ZU@u-?5HWK3R2uBPGx(vGILU(FsKmGFw#xZqZJ=KW-8Y z_Pb4J=?Sa})e2$`xU4M~``Z9;PC=*|Thg*9w3Pznj;LIpqor0PYow&j5f z78bR)?>b;8F2LzJlwV)8V89Z#LQwYm>3o0f!G8`{y)E%|9yz-pE&O(flkoG(S%_1L)R~znIqZU(+KKe3~+? z*+iDhQt`{)ssG(~z{RT!ncT5`xzw#hw}$`QUzIaStErf3Dth+Es?&a1cdq4j4l_O9 zvSuwsx9d(vAEfA)#9Rk<2lW*ib^&5l@*~7~n+Br|1z(&Ppxi4s6$Owdy>}J>C_9Wa z)J6bKQBgpx($TDh_Uq~)01osfK^YJ4tRTQdf`0rt#*_1`C}76wLdAOi|48~0c&OL! z|MQv67~9x)#+tP#gyMcIWh+q#QIjp%(n2E52a%+bB54~!_9RM+nxc}nNt8%e+N6}a z>Q?u5zyIU+zpq!i#xy?9^PJ^<&Uv5n(1hjDgkQS_^i5#$sWE{Ai6C4>b0%#EPOXD9 z+_}dFa7Cs_8LO=6c1$vzMy9KP;1DfaW~Z!`c>*Zo#St%twH?}Y$7l8Htm}-wX#6?9 zB2}hh=#^^p>-Pz+%q)I&y5?8g;-)|U_dC*Kfkae>+t{(k`?LoS8s52a0ff@N3r}}< zy|L8(;aT|K_A_g2*62-^oH2i461e$IiW%zm0y-4zdrafJi}b0AZa?O=s76rvrc-tF zwKQ*&#EtMuv?1x&pV>ES2b06xiR7o!r=rTYa`eU9L0&Ffit$~hOiJy+VAdUPRykfn7aX{* z$+!51$9-Bs?H#u+zs6=8J^N>#zs?B`8P{SfpdFBLybTxF1$4X(SITLqVEs zVLC#yS`He_nPJS+cnc3fHWlKU1MFb@JA)ht&xiQUCMC>&HW1>F^N=s$A)Pu_OmbuMMXqxw*5sbj&{d8o4iXu1@#*FHif{qk}^u->UEJ=?RmQ zy4~KTYceA$_>Zp8it8>V#zt-~dS0Zq?(@6}XQJj`X?gOBoZ}$N^^*#ew@har7rax# zbR5*qUy09Y?tbyN+KuYEu|@foG?x_?y+O*KJK;=&^rqWQThj;`SlY6Q zGcFTbq*ctNSbVdmiwNFJZyFAtp9SM*@S>R%2}nMZ{>BqGz&RUL>`_)dP@j4+d39q5 zO*#UCe4NCM^hsQQuPG^3gs%}yc>j!cUxM;JPt08Ld|E~oiy@wGpRkXl;B4LyUE$I7oe56|4 z@zI8F@=q0#CVOVU3}cZb&m=DYB>w(?x^q-ccS5S{9SCb19*Z36xpP2t6UB^-=DR5@4ba?!4Vv9)G-T`xFYqt&-x`gitTJS{55c)lS^n zM-}bO)D3nB$$Mfj}9J30#8yAvD^u4Kr6N zD&E40KazM?vk04}%%!MW+UR4bJ&!EibhJZb6$G?}BTa24D{SYt>n$Fh(yC`TX&*|O zAwS#3iAM48A$hY+p#D7py9j&fQC-+V4ANxL#GIHoKHaXRihGmWo_+R7o}li}N8v{& z4SzMQ-k4$%*(7t##Njw|kurR`WPVe#$UkGh{>Hb2`@-?fw`9uBDOgN(9z8hqGAV)~ z-qPf?nXyeJ)>u^{$P2^7=n4ea7)*f#Wc8V$Eh#TE0c?XF zM{?7@X?zJ5FdlV)&`}#IS3pOAfNwsfEK->nz&7mkSiAL?%LSF4@gAWU8m`(XX^tP} z=MPQ!M7@0`uk;w~QbN;Ys>*)uS5`aiG`UR#If#B=$Gl8wQPO$rca zAbp!vTXGkdys)SY|7lBa7L5i0o!)rFXp5`H5Y##3m&&4Pyuii}l`$tM<-HPs_w7I` z?vb#bM!i!e$Zz;tYeHdE46$2q+kQ&iE3{}T(56jKCa9!ydq8d06TJT+U>4IV zz>~mxf7k&Ru%03h{AB#BTm~2B$`L1qM(&@#Lv#6asn$p1<|MgJiFM+Eh=o+#t~G7$ zZ(wW*ZD)Bt6V5gBg2iyMJ4ux9oM>}Z!1 zQ^dvu2xxT2k25As)(Aq_bB=G3+$-~J(Vfa^M*l+d+`NI3FrONH=+mE7A|!w->vNB- z)k4E-z<;rC;>vp00#B`7pAN~D_~MP39`C9AI{;}bY!Sbk<6FRc26qIgV<`O*hti>8 z!po~bnLcApX99y}U3h;Us2nqMjQ=TFs$K_bH9;d8whZCWeTXxHfcX$Z5D<>`t1gd6 z^>R>t#7bH~$P*`e!(VI1{xRO1*D})WpLqD`T-!>!5oK<@(~cgMb`Ng5X!OuDC)0LTCtsZkjq-uGrq1hb~v{=llq5r$+>IZ7L@1(w4e%;S& zmrtBt&kdHTRoqaSLMf`=tnT-a$al7;;AOokRd6s{!+jo@9N39${MzSe19z9)VN*kR z#WA`65l#4A0gn5WV2qR1dlt7KyadA;k7N0`@B_VQcK^mSK_H6GNDUO}K+BQ_5Nv5~ z2H>BSfhG-dc=jr=Ab3teG?6BCl|gAz9gwdH>n~YCd6E47qTpBP>imqrc)-~C4%n9D1Ptt54#~yx+lYwb=}hvk#`~U-*d59!Xc-yNzJiR_&v*xZZ0P5e#wi?+QYM zQBRa_FAHLKvnmNP$IPq>ZzcI=4dU;fPzz$g=SNK37=$C#8*{w%D4KxUD7?{DS~NgV zI|v~@F-(2J+Q~WGI(=NXb1hz~XQPcY5h+VT9Dw=pRH^@~Wf-04lgiBd^+@ZE=0%lzrazX*es(J5he?aq&&sk zM#l#y_fO8I9O30u$Oo=4Z--!o%u1gtX##?CV9i~oy>NJO)^!)?KCu|e(!bNdZ<6~M zpW2my@@IkiBO2hMThm-D0hIjM7`oj`EVRQ7GdhY@dayEvNF`=8+#DtxXMwpmNQzp{ zTm@}T3?QqxK)yqb`Hj#I@nO+y2ry_v60qkF;xPMAXL56{eP@hu;ht;-0hnt?{(h^k-#HqlNfHDaHSl zlO|KN;>^L=;qS*ZTQ&zTvAZ3cbmYnP0LD~|!@qURj-VxT#V=(CeH!HhzJ%v#wMp*8 zqXb=mo2LF$r`$(n+n_z%*5x0~gEF$_M$pv^w_g#kL1DpG_d~MWW3>t}U@=PsZ7E|& znvI@WHt&L&D~jGWtOJ1?&R>A4YBaO@8&RLCucK`}h97^GiQF&nWK!dnP`{1|AvoEy zk|wNIg%Te*Oix*L;kJ-C5|iV;Hi)OAj2fs9)C7*-^Tc3CaGFM*lERb(-qeB93lC8; zvc!Mo;jirK<`u+xn>TAWuU^?{ck8}Yz>2u_O+WMujwOhjX-8j>Q}0s@4kTWF*v+84 zlB_;j)688&Jda$N!WypVcE>8|zRV&)M6|@tLk^L%?i{_z-`+Fw?n~MnE{by3ECP66 z6$t28A_Ra-bJth)rRS<~+@x$wrZlo?Y&tLWl?8;3+hu}T$+|9_*-|HuaQrn|)CZ>w z5ZAn3J-|6E+v4?*0KbjMdw`q<4F80)5ZDPP2pDZEz>)~rtdEj&@C1SvIu+*#o+xwS zP-Fzncy$_)uLzTI5(2;sO8`ibj)7n}LL(ia#g*uxv0}J~N?^(aIN?1wr|?CA)0mN) zb$({{(961%FCGVXRn+;Ae)G09svPCt##HK%18?Z@3(6t#68-*t)&yI`<+` z?=kyz(IwDBYOrE$3R6*Z1U4I`6-z;}+m)Cy6jwpJf-7s0n(g>t`o?MrdpozF(*IaF z6Xt=9v*ApvHn)Ggzrhs~19_aYvW@ z6m1A~V`3v(Nq%(!3x+0;emxsRZs!qp2@#5>`>5q40&?)WpM8^Z~cP|2XxDrUiEGAyR zh%Zsj35Wo3QVl{F6cEf<3g8C5GD@d{C80eO`XBE>bL`6o${0qoMozJ?mh>c94`u1` z49pSE!Bh^7ydpD$-vWYYMXaq-Wc!FL))^4>2uWLQf{}}*xEXsgVR=~Fy2{okB;I3j z`>Em5qY)E_o?bd1Z?LAa+C-&xM2`|Kll((KK*XdLW3xq@s_4Pm77wBC(W%}OBuVL3 zp3qH8nQ%(m!kPy!4{3tO|Sby6V4P z<6+tI_=8AdSub#w*`U5&XbZ>LMe z=1|dWX=APpQaqHiK4}2MQINX?lPT^hAguVJggz(&fgE==YD1nZ(o*ri5}a=g0qVEZ zV0=133Y=iH9jtbSqfPbW;>8b{EaCJ=g7RQO_H+ei$;|+VoKZ=@?IfkaAFb1N2Kf0{ z!X+cn?BIYlq>r=aNs;L_R1FpC4@(7lG`y3HI1%df>P4Zezn?H@Vf&|;4cr+0t&(xZ zD~G#E6}TZwGO%zHOhDfiQ4AX1078sFM!|pyl$+rrcZDTG!O z_JKCqYYSDYpcZ9if+h@FfXA?pAlEx0!ohk#Lli<5I$nGXDReQ5rvzydR25BhmzM8K zh+&i^ATK%5gaQzoidZL(N`tHvaUyQymQxOwYf~%ZcIMoRRRK$0Up>NTe|fmTRv z-lZ9UJ7YN=nWB{_MPc$lVcqr%O4ba%qcG#m81(@g!O}SpCketFDs;^VwsE~`9_Yc2FU(i#lDasu}iDshM7iLAEenW-)<1%3X*HiPTsDQTttO_2`} zfAvPpsQ;gfP+__LOzOoQtJY19H+g2QTJl$H2s6DNrG)9`l^`@T9zZTaN1QT+QHoW| z0?cgt?x({dR}`B&@>>DMAGsUg$`rI2l(!s~I#3nsN+9jVYV{c)Hl9eQV$}Hyut^%{ zb0@Q@RCT~Cw_v#?T!9DhR0;xAVY-$kraa*VZex~tB(Iq<`j~1G)#9`#O)lYFF!Hk+a=$0yA_uIT%k@As3O;EzXN2{C{W8eSqAEtrMJ$fzTrg60xZv;EQb4HV07yZ7E0 zN*u7vH%&drLltbcACk3!Z~yQ}DDqCrK^XRF9on~#)}822?_#eyh~Cs%nhh6sFZ-E!g`F4k*69WN%=uA)835dh%xLWno}Lbt(H%a!tx!97}ytm8hCe_BZ(&J~)!|vTcEmv09d+gTs*54r~#)p6Ps6^P0Y3 zS4hY3ULSguabV<-=C;p%9|9L8=nlQt!ACymj~>VBvN6Q+)%LO5X;jtT{M8khXe47pi(7a0B>?7xQOg{P3Wzx3~vFb z!Z@vn84!)1n2$k&d*FK(Fv;pk2BNrtIg~LMID~VY)4$an+?_SeMBL34A70LJu^JDu z?^n8Je|PRa!;PeZ=NrQvG${OjY_34!mKGy1(e9|l2HzvH@?_+(5xeMVtzC=VGL8gI zE9HZ+JVI6~4Oh@8kqO=j^7Pvqo!&bw*fMMIFdNX;D*0mwVL( z2a5eeK(IQ(*lPCmpPY&R_hZ% zns>eDddJR_{^7)|@H0Kyp}w+fHUX)8xBL1;433c$#iu^u*+5m0H?QS-0UArcAwLAB zsYXSP(03VoCoX!R>f|h7qW!sOh??=5ZwM)gcsI7r+KU7{#B!hSS^{qxq>Y9`CAw9i z)nY<;iJDLSkii+9_>+1As7DtwiHBdCWqcH`pyta`YHI#Z;ZT+li9@^@^nYKy!TRH~6Pq7ssYHGpnz5Nd7G&k?T=x$L ze{K6Jw(kqwd#tcP@3!437FCOKonmSXoIcHn*(-;Rtolhj@%WOx`Ubf7>$UAt=5@{G zL48Q$7N{wB^hB?UUfXElNJ^+B9pQ-KUVYvvgy>#45)acC+Bm%a*K9Pn(Q*Qe;#yF+ z#NIQ(J$FH{@=T1XNA&li!!?HSAP@&Y%OU((Acyc~0ZiDhq>-DMa2I%{ zC=Lq=drfMK6lhyg2;`H|j|j2jth}0%5Ydv5=@KhTtWI~jSFLqCKlra3{!LZ=moA^X z7v3Xy-LT5O-@AFbSnmMi;Wr5+=J@)kWyppevzBr5GKuI8QqJ63>9RZIo!Y`Es_^MIfB6=CN_|{l-vcRV(mN8Edmj4RS}k4a?Q^;H z;^l!hm`jj=Qg%@4r~kq0;7 zdJYwZA0-rW=pv(;%>Q8;LluO;z#Zug7mPd$Q`R@_H2T); zFwH$iWa*;mTwOmhQvICeF2B;gf3a)(o&`tm@}xI1ZC_c=J%FIRbe@Fe_h)j!eCy!U zBU%YfId9k^abNw&`8jH)yFWmF9Ios2qPzgK&RagXm}FvT|tWh zHgYJ7QV`FkQ(S6C3F}7}reL*!5cIY}xrAe4HQ1!nu@gj@N~2@S&WzN}m-rW)LlJU3 zw?DNz{zhF5s?0x$Tv{XXuKZ49<*uD&Q(m+s|GT@J!MIhH^BQs2qT%OuyO5)7M)OQn z3vJgiyHipW&?X;ur0>vy3N6J~wpn*J_slW|SaafoPZW)!F$(+9{(!O@lNwulO)a;9 zzOv$Ng~C67ap0cCQ!|+&!4@=T8d^`Jk)YImLmPMt(LIX)YDUP>(@PWeeT_oZQE^9Y zHz_v3#jdhu!= z&QRpb~;F)I#1f>*lB4|sE*o3G?M&z7U&zD zx3#16dnoWwWg_y_;lW)jXDXs_P)2S5qls9Z3!8^K5E57kqbHq+*bIaQ-MOeqSc1WK z@HQ#oZ@NP0B2khCz2EQv!ti%f4fsbW5Ff7&Qnyg6K!qg=mx;Y0+ z8uh7C@&5N$f@((j-(rlaLSuV=wTG@HlFNxAf61?nyYYC`u$2w1m*7CJJoBbT_O=f- z3m6u+Ue><)X(9J=0zx^Yh}Ld)7~h%A(OxbCp|)FZqyCTNpmEUAv&Jp#_eF2Nu(*VK{vWtpF#7ZNDg2@AA#9&5FKDZkt!iX*V)b>1%0Qm zZZFCZ5{F@67}LxQG3ER*S`qq8!LXBLNk1o*u>pN`oYV6rtvxQCt&2KpsuUO8_1Ub) z&a(CS5MX{W*X}4>7|2`7APdhzoMQfK<6f0>&1HfWHPfv4?3j0HlapSS*A`xAew((G5)mdLj;yVVIO{x)b%h*=3O ztx{l9udaz%^W(`3paxP@v47MMYm-1uD8PgJ z8MGdU;0L+HI@xUh`GU=4$b&uLFZeh7t0Z|cp( zbwFM3Mn9@1x6%=cK3GCFPFe;nT@)6xK+E}Pe`_~!W*GJ2a6Pa&P8-eBMzp}rs|S4F zCVXIfoUJ+xW=_hY1R?9ZC{Kp$WQ;$-(k<1*g{khln58e|!58{GQWw-s2!gnp-g)>O z)-1#9h*~>~_SJna3X5HAi=O1^E?KN388=V#wG}yOZK}Z^9jvSc64$keEU#8c#aRx` zt}w9a%B%WCWpiSg!Pb%w27E5W(5<}j01q$M8%1wlcnRaO^tqvUy6MN*P~=*b%knMT zzW#%Pq1!o|M;AkwMUjsdD&HJn@>rrf*_$;tDj@A4C>oVzK(Q_e(pcK#)GHcYv>i)m zr*ESP5MXr;*eelVP{UZD<^7IA6*IL$wkwq`3vt_Uhh>-RK`jX;?X4Ut6l+iPTGTOQ zNiPGPFt*SUJ2EK7+>e^n55mNpkQ@aM7JP#j>76&@li3zsufrA;$93LHELO<(@!wP{ zqdPZ*yuFQHs{8Nv1y&0t1=73UEiZU0&>T&%kO5soQH12|Dg29a$lm6q-#uZ05d($DKbxQ6am!L zg3KzPO}V@?%+o_H{ps_DV+;;>X6{V6{JbLO-^%=jhJ9Z0aOd0P`59i>11*7ts#>9g z)tF14uY{@&o6%#eimizD*Ep(9(?JC>Ro@ooJ|{Y4K}0V+jKFgH#32r8h63>(Nkzh( zLFHJ_LMx?q-$gzu>k9H0drS?z&+DLnZ2B|&V&KM~WRMogX`0~<8qL`w@to*sHbk+1 zKX8vWbV3`dF5^WR0y>pqh<0N93r1@U^0Eeq_MtFg!dSqvG;kIVXt3PZ_ z5C87(U%dR>e8KwjwD+`?VQZxFhkCjU1)8H~KN!54m^eD)`_-(JTk9iVCrRim6t%Uo z$s7Oji(m3=gnQ2CRq=!=IMQS7wol_L%KalRbUKlF*&TD_IZA{OqCUA3TFu9Hvijp% zHW7XmHNE02S@N&s=#x?sCr*L}x$0_fEFz_y-|!5Dr7bTAcp}#cwU6i^_^5*Dz_E*o zR_)){DRf~7?sD4S@(TFQU{^FchYhf~F^GmiHcAd9te*vaVdnT2cQw4g0VdKx*ye$< zQristMW^8hqsI=3y~jZ;2l8IAxZCT&uT$igmBzqi2MZ8Oq-T~Uo=ai;bcu^IIz1@3 z{HL8N?ftmU#^Yw~FC#D9X8BEOa{tLbIN9y|j< zNQipPK&LsK7|n%gbGo}Fozz2Xfi>xLDXg1V@>Q_!B$o4ZhVy*}spB+CcW|RvX^cUw z!PyQK7=lzlvYJK_%jDmg9q9H+W`A{LOSc;cst4j1_BI(#R3XOne&N1cCfn%^MqOp} z7}?UZuLyOy?9_xM#bt+ZGKKFG%6cp{U4lGGJ#bJi1k&miLcyKS#&bB<7$vzJ=K@@} zW%`*|-B7Oo8K`8R#z2hT|sn?}~z$)A` ztRdf-wLp?*u5*d7n*EdmCJt9{1J+=L9UF}Jf2+V)0YrMn3X#kL?HJ)Df>eTfgO;p$d$CXOC+KAS_MFAr zQS?vFipds1`>%QrmY3(26``kxdLoUv{Q94g&~lH+c*1W{V70xnkyvPDUnpM(qtVZ< ze%g7eVEv}C@8RcoG_MG|z#1E3aK7k;As=9H9|2*UReiGL&rdLa{LK3Y~`}cVSa+I7J9dI`MG6SYb3!n<~#_g%M)xkopdyBl74H z0vA2TqAD~7&yb_`A;|VSV}~!laK>no@|A#TE+!k0W$B+wz%^ySy9yCAnGex`2|M?K znUB&vw&i2IaZ=%`O~*!#4fB69hhHK!_m#x2ik=EPbPR%{iMtJDe&uaW#CFZiO#8S0 zG9dUZagQ!-WpQ6ouGs&mJD=g{rQ!;WQYyPNRd=#p3N)(&OafM{_!aLHwGrk&S{q}s zXgTmb0x{=$5v$6iaq}Vsfd;dfynH*Q?&$u=H$k(Rp&xj0^UM5Yq?JlK_KJi9ePL(he=pTkOA3WjXvM^Pfq#7#cUQ zx%JhCJ_EHe_eX!*^yU?3+tf$z5UZ++lF&7_>|eeDTj%DOaf%S_Sc$PLSK`R_TV};d z3Ep7x{i^~6^ICVzVZ-|~7Lv`}PQIVm6gd?Fs9(4hW8}M~xYGQkYHCpHh>0rGFY9sj zU1$xgN}Yg*pMP5tCiiGVY$;H?aHlB=;c^~Y04rGT1hc5tx!5wo6iHx&m33Yfu<2Kg za?1Jx(pfxuEqzMz@@0I3C3s&DJz30Bnu}U6BM3ehO$F>Rg9^WS4oxrmo+U8+72`z+ z7tcP6;qW8=WLrIc_&6)`El=&Awxe?PcUe~I*ln|I$a0TuzJG(7Lw+_}eTvgEsqXwz3C@1_+Op1zu}s@0!C2~H7+C|m+%p}`dQb*v2afeesB;6;q0X?&7O zC%r-3l!r`72-E;xAS`AI17})wm4QLE-B&1Mki=&C|7UcCJestGK9dSqTCuYR(a{b> zM?QJk<+mIKLc2|&ows~gMm9gamoFGtqI1rvj;8pJ2JhN`?Fy%kv#F2{5#QkpPyMp# zI%{J(PS&-JPCIHY+fbYk>+T)5yl&C(U%f3M;v38U_h2p!E4aJS8x`HOLDw^WYoFPu ztNNTBe^o)-UEhy6<~Tq`_18*s!YVIZv7ZqB?X*p>1ef)3iWYmK8KoUP8CB>u-DJ2V?69GDP{pN?XVJf$o%VzlJXybT-yBbezoIuA~Qn56+toOIp}6Gs!PK^Y6rq{`og9ZLD`{4$|Eykju8Qs!07&w*FLh zS>FQU{`{@7^m9L8>|?ZS*tVhfqI*ld&eG7_tn)biVR<8Ko2T2MM_tE0Z?AQ}UA&=O zZ|l!blVM{HUvmp-yh9iyP*WdvdM_?Iyx_8%ghpSo`g}gjExJ>mBnP;dA`jGbQG2|L z1W;?=DbEF~KLv@%N4bfc6@Wm|zIFyQp21D1$7QZrwXK^41OH&%^zbbFz7*f(vUbsa z4id*(3>CpX0L%W6kKhS?;2Ii5!m*buKW$QqtCb*R#=fA^jQ%#WWdO2_5yrum*x(&MooO=&G9AbYx$q9ZCvg_ttiKvC_@6A!?)Oj~KM9Zbf zjJQYj{%X&@xMVS_=Ds;{S!V0lm;BWKy*{>!WRYFtI`}L&{4MPvz}$@WY~fmKix1Bh zf=Op@aiyj;JHP`BSKo1%sVx{g54hm90@qexdUT;x8zO~Yzg{?^{y)a0alLM>!ia86D4Ho})vZR3v=532CPap1Fg2#+2Mw0cXaa>C5}TR|X^2SKX!$)@ z!VAnFv1)3xNN^rGwstQTyqGBLahX4)aQVC2UxqDMSpDK(ql=`{M$4hn6^XCo1ntil zE`9O4mx0#oWOa&jcRS^@&f&C!LlIHvV7e1-Zc`d736ER;?%BH$%GLPr`;o()j!ov; zYp+=Nc`s%^+PhP_r~_p+HbYUUvN(?>qXtUq5PW@KIA&2P0 zeJozpx-6N;B=G|%7C7o0f+?6sUSl9NByNTPuQ$q zt`Trja}&{DZX0rAskz+;!&BN;IU~(9eE!-dtT--TfUT{VHTG2UpZNPFtp#;nbR-pQ+Ifa<%PXgRUTG;^~$>E5>{NHsQS~kK?dl&x96Ejx84V=9Ng1q0b z)P#l&vV`!dUqdFzY&1KFdGJ8PEad)2q2G(j4pgy%(WdT1fT5OuJ~N=_3Jol00g zqsnyWM((Htd5J&<0~zEfF7zK_jl+r1%u-9^J-Wg3aah#A#Jtt6B=-!f{dU7%9nGS_ zfWtk=PM&_envY=CTEZpK*KAfmF7zL7YVTaUW%YYOv9w&9tVjC=aX9qKQfX|XB?q#w zR~?odQ3fhFhb_+U@F}jc|1MtE&Tc&L^Zp(wO+T}{w0}6BH^J<=)daLqB0UnBuF=&oy}A;L(+EjnES$utTpNLYVi(O!tu z{G@dGSXq?z%fip&((6U%M>*y4NrYxz+$&*XJ}LFo9%t@e4gEc}4kyV-#C7#g7$oJ8 z+yp5cuorVwrsc{CeUm+N_zschABOzuH(n`g$}qWQ|Kw=uJywd!HXIIJF4SK*Y#)47 zVTpOVbzTnVxJJixNxYzjB_rK#55lV&JVvZYD)~iy zE6)6B&fCFHw129zqHftW8CuqkQNIOO$|uhnk^F)*2M}#~%MZ!DzG>+F7L(hXEEq(K z;gPP*vZ0N!A0H|cdpw^EE}xd6LQnu}PvS%LA7j%-c?y00(P@LPc4Y~ckLGkmjBI_P z#E$P!f+jmQ7f}l7m9YtB-YpN}aPYnz8ex9&!>k_+(H;3GECewq>0}9lvzD3OWPbPl zT`+EkjzCsH4!^$qikTt8Z${jm$^A6)(jphWavHZ*#FCz3#Y)Gl%F~5VV&BphLP~MOoYGUX&yi#?-osUITrT&Iso0t2o_^S|R3*RaDyP3-gOYqSb?mDm2+>+)9GiDs z)?wv?Kx%Mdw{f+8M+GR|r$=GdjAgb*6x3fI7j|*AUXr2`cWbBCmD?KF1u&_elI3!_ zRW3|}r%eNP@lo`u(A}irC!mAbr=7AaholYZ$m^6*m1bHA-vRm8hefbt8KyZFxM%o1;ceSKFO3Fn zuo>lgp8a{d$k#Wa6yp^COBZ_`6>HVFNqXF7*6B#?hk zsT|BF2=VTHX#psq_>cXnw*Zt)D#HK4&}1YfLCc!GLD2W=f(o?c(J={r7n13n<}{O7 z0tGEO?MjT=`i4-Aqg5B6%9KF)aX2aLy~=<5IJ zhSC^5Lkm`G`{>^%&|f6^91AvI~{h z<`US5N~|gDsUKt|nP6Uba)dEhz#>Jv!ll(*l#{shaky^?5(ydfQI{MROrQ||p3VS5 zB5qgRgCMZ69xM!&(l-YMu9zNi zP|K@iv1**(X&F|mEq@&sU-R1$`77OA=vcf#zq9m7ZB9kQbnigL*5L5l@mV6(Ps6~Y zlZ{K+ki7K`jYoa7MuG(y3+r_;=qy{L(dIj?t?4LjwAr z;NS1@c4tVhfm~f`bu$Pp$j!W#NS2r>ikcU2+i#FH7i!fa#wE6EEO7N%IDW%|HGeTg z-2b+K4QhC^N9gZ<3BI7{gZ0NI?R~x{|I4?|Cr1jxunzI;HOKQk#*!b~KC}$3lP$jQ z+e9>Dbuujbud7S@t?YNClY$6RYw4k$lf1`p%K)uuGd?~w5v(+|*wD+bVOLYE;}X}s zj{S?2!)=9bZgnp|OzeH|DSMt8Lrd3)t_^Vm3@bIx?e8||dhVijdaPN2fAym2sU7d; z0n)9-m?gu3YiO4o8)Cf>b7hDSa`6#o`GAn11hVjwL$FAONgSW0fMb&afgYA89n4|- zK^8lkOmbyQ7i(;RHXGS>cGc2RlJP8ZG9NB?e5N~d zc(K*Dct-cSZ@TnOCtUW~RBeU!hzEhnG{)_cx6>wsMQ&u!n9-Z-=W`COoVkC`GY-AU zp#UXnv5btLu9}H?kh`bQW#PcN1V5Yir8$Rj6qOCHsH9VZGick$!dl2mOVmh@C_0E- z2GILj>7lyDb>o6MvGBse)!um3i|=SVeFu^|XCmm=4FkBdm?+rdLp&$1t)YaDE--VK zL!qydfTd-ow6JK8Y=qV5@jZK$x7%voUpg3Q;a=pV_p zwc7iZfBsUukT>4UYVT@Tx`6`iu>iKP`Ieo^G5HnW zIimR*2m-2bHG6JYB)hvu0TWFax#M`+93h0y~cR% zoy`Q*GKBE}HSW*kv(gnSxgl*F-gby9aCpoXEnZ(u*YxJ8MA9AD&*7FJPmiz8;puTV z_vJ>wGm8ERR-+G!XYCS&R{3e>`F>7Xl|*y7T7KTTeJs+hj3bS;##={n_N1sC+gu;G zmfKDzFSH7)(*LKARh?qeJ$%v=6L*((-#68tzKvkz~5s|BzdT9}}XnBuSz@}}gye`Dg)v zp#*-Tg|4Nk0cBasMch?JdD(YZJ$w*chc}?(omrK5ZezadwTe`Gv(CfwB6&2QgX%c< zy*y~HGG3+Q^>Z=x@Uykl-HTc6w;kF;-qZ)nla=oem^hT?=q>!_O};N!|7cxiY|U17 zO@Lh}SU7uZ?uJ|e(TGPgNnAEWNZhvrTO!UQiHa9!t*Vz!) zzSeVda+T5+FPWvQuWqtkuV#MaCMgd16&x_5Vq)*@_#0cPy#LV45gJp$KuQ%K#n?a; zrn(9}(8mrKUAqXsbzEeQW(SOxcoL9|sT{$O89Z=Pg&m*K;ZO(V5Uf)Z1BcLuUza3c zJ0LyLo(bW?m)Ms`FXdp?S{#Sj+rRUP(d*lYg8T zhyNThf6?uJ4J&*r9lDs>VcI#Km~%>U;`OPWKL zwGJ2u1u`mPz7s`y-x7R#nD_hZ^Ai4&yf>@vP^U6|!B0FlUZ0-Y+Nn-)R$i^Lx&6nx zOdbt_h3)U&Afz~piU`6JwY1S~&m_qIt(b#kxbJ>O7^fkX)SU_BEpG^Zqy#S_d@%c= zy@1L8_6{QqLFO8D&=BFpRBW6Ow&fv_E9=Km8juqDBc)D@&nsAOT;t^3Z4$(O7km9( zvs`(_S&jJFpKZ!37=xGTHg@n1*V_3(%J6?nacV%p(Y~gRQhP_SYOV4$_c?o*|Bi}@ z;$zZZG$bd&PLK}sTfW<`Q>NXouP>7#VxJDL_7nUwJyuU6!~OqW@XXSNmALqqa;M1w z-2P4}oZXXv?3Ondf8MfJvT^r+Zqs6sY)cR$&Ba(-_Xg-M9iI)T@MA)WLpWz^2EGwB?&svz80-4pFRl97 zXfpeghoo@+SpJq291tU(xqt6rTy;y1tHE(*@GBNKy7 z!@s3yNa;(ibgM{x?e-)pX|#r&FY_7l(}!CgUKH^^S8tlV(kPHhciU+b-; zu66ktrSQ4bfsbliBSLN*^N&Z4(2B+2+hjt~((oYCSEy`n#i32Y*0RyDx~*#s_<~0k zQc-)CiHaNQS6JDA{`-0`Z^nF@iIKA%8s2;~QR4$OxUOh|PhuYSg#Aal2KCGKXYNks*@|{Cra3u1(;=YM;yV+HQGXHwF*)Xwx^Bv~NDkom6G!Y=1Og z$Q;db0$#u+?aUmV{v$8^NS_mDRvnAeAKr5*^-4v=zVaeTDC^3UgHdBo^XKzTV67w@U zD5$49HsX||e^Z$(&|QY0pKg`yW=i?xux5)M9U2 zPraz0P8s~v?;6s+8T7S9VS#}Ro}$qIRKU&pXOmbHByR=IL0E)uZ?1-MYPYVE5>OR~Sup7tvMlr5SE+*rEm9H*@{ORXp2Hpc(Co4(c3GrJ zY>aQ`<61b_apEgiwy})O$?wS0m0;2FLpw3ha?s)d!DB|o6TI${v{bB1#f^P;8nLIpG>ob$P zUW;uF71F>9y0|dBh)J$Dc!0QJ+ROlTSqV82Z?TPZo)5%=sCUIo7VX>mNEUhOIMd~^k^SjH$A)AMXx8`+P&#@&OwuTF4Z*8 zYxuBhkDc?_4oSSF&+5%?74Z6pGdkv)3?>*c1E)=7f@aAyNbotaTxpqKM;OpAg^>L? z`uoMrf(n!K0ld7hN%d*?nE323^+Da9b``K$jVsJIi{Q$DFbJK;65BCc9=|6u9$(LP zQn!Jkzop=7zZ6xDcwz;VJw!&#$3|RzH-Yi088exlc!85X zmwud>Fr^g|{Vpl~e`=oC?juML5$b`i@%b!ejL=`0cAiU2X8e-0eHAl(g)Bnf@|wU1v~c2pRJcUw|^N8P5;S*(lpYg z)*%EN`{L}E`vf)5JEPWvN`Vl6Lc(CB)@SH0kD98&)$d@In^)StJ z1z+w%BuJ?q25|!PU&x3<(A0+-%D<_@fPsr6ItY|!XEcTfB2zlIXO4l(BbSoJ~EIvXGH6)rRLmw{$(?BMcR zfi|k?zw!*4aetofy%;n32`z=5OaoEVVeOcA_mWs`>mp@$2L`ew7ssy&KKq(i6j8jl z?vn3589jeJUfg}}=xp;uI$qqt;PM9cJtZjPsR=_G0S8Jh zaY2}zh7kXdJ&;shNj`AHWI$k!*#^-US!(S=q?5JSl+SpVq(&?rd}pKfTS?Q^+*cCz zqf9D%DV!m!%O+cGei7`85AzH`ySU*nPv{!?w-zm{wCQ80@rBLrJX`kb6&(PM2s6Vd zxtA;xy7wDzT^jdv=)i;VE-iv)Q~TG{eY>Na?9B#iX7OSKb2{k1OGT@9-CRG1WG6Ro zx@kuJHI|%YD5WOfUwOw+X6sj-==FH6Xn;^NF}Lt=j~`2uKJuKL_43NX;NX2{S6X_^ zVaGn$!<^k}V1m3lccopZ4E5r;;$9#0nQ5;Bndgpx5|Y=MF; z*h&{}ZC8X$Iy3z+DWZ!Gi@<7Ej4=4xoNdVofA2o}K4Px1`?6T6GPVD>kN+P@-yKi& z`~Lqr!?6yIy>-m&y-OW4gpP4+vbVBjb&fqk_LgHLdncpbA%qY`*(tIz8ls^-zq{}6 zpB{-G5BIt5`?{ak^Lk#-oBaGFEU${%t_dYD^M#t74ndDS5=evS*Z-}xgjxBQVBMcN zt_$<@3YF~b87x#Gu9{PucXB0p2E8x9knBQhkhn}k+sj4Qb0!u90zcK%bE4nn!MOO! z@V=Rt0$a_Xp)BvsFn?WWC-kvAIBC&efo9k8`EK064GS)CxX{K(a3Ll3f#$XqqaFxV zc0Oo&&on-N4u|&p;G`SpAmC|5)d7&7@J<(W>lWChI`-hxt0Tx!LBkTHP6QT8jjo69RA! zTrr?)OByf>u;AW}UOQ9PW@Pe}Gilzeylg}vxAhT%JnxaXIbNs*XQilF5?FDr^L9eU zP-7d>f}&bLsnXz1gpV+cq!jQvj%5rYg`NZQ5#lf{_#N#a9;QkxpW&rl74Kbqt(fjH}% zfi2C)FYBaTkp){rt;aiJ)^Gl=Nkz6oYB(z;SfuuVgUiH_ybygNokNs+r1oJiRL@^g z1MXu9`LgWczy-A&x zU9v1DR+GDeq-+hCG)&GF&Kn&|vUKt6=L{_nO0rG)v%(FLr6W}-D$^Yh&RbgJpQjcs z!0aN4ISKs2+C);jfcTSHk z?pn$M;eX15V59ClK*S}b?}f9|-ByZ{pX zOC9r^*6;YaPPUf6+qa*JS1?4R7hd90SfL94=6|pc_}sQ@6|0iqT@%g*7XpPS;cIW4 zwK3ChV{v8D^!+_)Weksc$$+J8G22DR?F)oMfhPb6kf7w=d7ltaqm&`>DA|k$Ll;#= z5!XNpt$M{(QVEjpdz;!G5fiK2*0spDq-_Qz5<~;NJ(B3Wp zjs*-9Bwqr}3j5yCuhr8RV?|Vj!P3!|)K89+3fW!!?cEF8ZlO7AkR!@c+R!glYBe|aW zb~*$cdGueWeDSz7kz1MT3L8JO@b6Nna~S4CLT^C-Q9mj5SEKP#^}=)aMmtV*uOOYr zVib&;H|2USULEs~01c|e-{~i9mhL$XG+AYtE%91U+C`p)ON*t5()WxL&m$DU3onlZ z2UBahf19t_QU_YN*|dd{+9uGrWuKWkHZlUT2OUdj-S#DX;6C6=aYpmI9MBU0U!lQ4 zaQH~f)eyALE&~PR!$`WozUSm$X+HM>Ao@0LaN#TymO+nvfEzcriCQ*;;|#7EFD=Q> zZSCF2l%@yxPs7P&W!mClYVHX&vYuf%dPRyq&Pwg*{V129SJO9`9~%7cHO?mwd^`QK zY-`+o*i98~T)O#1@{!@328;O$4(_BtjQa7zcB^|A|@<#{drI) zH6cx8p;OH;QZ3Dc|6He@aeUCc9H-=aR&L(EJQIv;2^1A)f2<%07ILS}4fOjA^#}EW?lLf4L z!jTu4F!{nsXl;NbBtY=bNd!QkaSP#~9Y=~Xvv)Yk9=N)#jFu=tuAr}9A;Clm!w}5? z>HM!iRMl$Te81%fZ*pp)%$*}1o4me$|6V18KZh!@tH56thI|L{{fhqO?}rW4pWu3! zGrc`^-6cN|IifSQsqJP%BhSJft8$`*8-AM?yL#`Eixhx_tXeb1$7|%#Dm~XCY|4|g zr@ZfyVi>5^SLr$%KMXmy3y{g?kslSI0N&kGcv^c!Bpi47UmNjbARBn^<^B&3pyshR z1kMA$zXr*}aC(7oNM8ned>&i5j*r8EhM*G`5Tgqcx?I0Fm(vx}t40ao_O7RP!nFMVZ1HY zg}?oC1W}>uEydB7&fVtTNXT#|*4EzQmZ*)UTmQI8z26xgwT0#1Y-mUuljm&FRhkqL zRC%Yz%UCz+a}C5v>8>18dK$c9?TsLyaQ~5t*MqIpo{vfVV^QA0=d76vDLtf{> zDs>9fogf_b9Mp3O4vp3AMZ$(-Kdu3pHyT>V2f=ef&Oo2jWD!J&qu@LM6)B=VV}^c+_vR zsw9D|)z~n4Xb}bj+xF+b1NNAmK-IUC=(f2kL7&NaGv?!9jH@&Ib?Z z=35nq9DS~Xp5mZ+i!`(j9xx&+67^ZU=Qb@=uNYlCl?`B(xcCj@>Rg7k`jz|12Yuxj z!)j1HeJ<(xACCt4t#0!>p~F^>D0f{@L$BPSw-C=B^!I1<4+U+(AjZDlnkPykr8A}P zJj@foku5Rx9Z{JmvdEb$Y=zC;BRIWe50I8kDHrqrtIiJHH^w)47HN}+HC}D=k$S1N zU_l%r5OzM$5g)+eM74y`J9hMUe7H0d(@qJd*8mX4y1CQhoO^)Q5C@WOqv5|DF^*(| zzOR7Z0-zlRELy-u-2~s9X}l;6e%=~fKqP0dml5-$a8g_HOoQsIJQd!q1ceZwnc3r= z#SN$tPfB0Vei?XDI}_Q%Z)^Q}{EvTnfn_@WJ1}+hPU}-+p=*BF-aU;X@j!_Ef2-~D z@4$Y*cYVhw<(lj~^UGz;DV=*XFL&i(j!d?(TP!|TEViah;5NYH!LU&=PkJWS#s(VA z*7G8+^X@ixVVZ&2&Lw`ZJPL3rQgq6|i4dusKoN(<>L}jZCZovlb zUN(474KH9I`)Mp4o(u!j_D_(Mb7KJ$4C&NT^#;1&{w;Etk-B@m}O3X!`FnO941StX&0B`*5+k*gcA~45TzM}aBrO5 zaaj~D5$fRn&q}5Rahw2~ANR!x0U>J|OaS*H)VMzb(8Dz`YB~s;<_gvc{FEX8xBLTm z8tg#{m?d<8iGX4fF}p(8J+DAOGp5(BCKQDN30+wf_%T~HvUV%zTr1LmirqoE^| z+K5N1u?9VunyKD{^3L61%1HdL_sthx8xZ?>{RZAc|CfJD6056$%26m#0^<3)4)g+3~4 zP|fV!BUC}6q)c(>O}Ybv#A$*CaX38?8Ppd)_z!KnmKn0V#6i`6^y z`yOP5fM=Xsx0O>qq;0+_+;kdD6%;X#4vBoA-;35`7^>Cm)2g6{4Y&bF2!dG(@-IzV z*PNkp1w({h`HU=?= zH$wTnAQoyMQ0!OFf;q|bt%KPZ2)ZMWLyXmo+=mmfKfw;hSfr~!!`JlVY2g2Dl~2XF zEW=~bJd^hkg^ zw!l3`g3|$z|8Jc^SI{i}f<7aY+uCKCjL0dDhaV_y3gFJhh}WlF1FN2}jg^6=`~JSf zkKnQy7+bMvt5S+KO0<8_fZn~Xq~M+^WYLTUEhBJKeB-z~l*spNO?l?21Eqb|S_>Q< zDGMM0)r;8V zW~f7+%|9p3+%sgBDY-DH$c5Lv*Zz%**+B*RlmTns$=0IW31?Ql^lY(cH73!39z!Pm zqs|tie_ho}_R6VgE-D$X{kGN3$yIHT)-B*;xaQ_1rc--TTmhN~8l{XCxFG-pEfcqD z+uyluxRg=hV1AEj33zwlZZPJs+U zN%Co>h6qid`2xI~AiUwwM>r((IR#`VOc}r$-vyvsz&6hTfs^`8;pFCh!UjQl_RTP_ z3@_x)llpif#VWQo%lyWFVfv(^B73br0mU425xR)?5nhK5p`J=~LbOHN>_h?;Rd?T* zh@0K8`h|D}EFHov02HcxOJ^aTc$B7`iLrslH~zb1bdE<6S8lRH#QB94tJs9r-c$66 zT5fxHesV*DxK8FzHP6x#<@dR~kF>IED`B?W>NolI-hEPyUq&Xei9a6#75Oa(sC(wf z2I6nv0IJZeCI(QzkbwS`4#EXK$b${wsQ(!+Km-a1H3Fd}L7*{@U;{IiXlI1$zxKaV z)HOWRpbZUVrD(}kACUBRE`a%ud}C2I@OayuefigvH|Pzn6?Hq%_vkJ5Z!V3^^rwuL z^GZp~sxJC^TU4mV&IY{4Y+u^4F$f8VSqam)Q34{L_;)e7^lA>X2-94VoAS{wruS5H za3x`tCBOgR_{U3aWwTe7ll}oE^lw5{ysNT5Tf`Q#N-p%}PsgC%T}poRN1W}v*hfp@ zT6<2)aR@QOd0; z=x;`=zIDOc22gD-+LbWe>)HuR3fvWlioC>+g5t5GP|vzgNuk5fAJ}V10Ui7W?@s)2 zzjv;jf^|jm_<7;^805&D66=<5Kf?6NCOLU1sr>gNiGo^ecQEP1zTxcwlk6r5rVRL` zzl&$`SAsaqQ$~s&)w*^5l=aME;v$yJ%@tjAOYtWagu{7ccv8DH$}hD~fb^@mRZ7WQ znuTmUZn1Ao<4@6zc}4reTNXBRqnY?0%#8{gp^cbnbBHNLT!Qx!N&zJp{GFO&!CNp7 zgs~n((kuIiIt1VOGR_r(4~evcW>k&9kZX*&^HL`GW*s-^bV|4r!5#b|6v6?E6fj=f z|)0yw*_koiq}E`WwwwOjUT6; zW!F<};RIA@_Qi-)V2-bk0g8^zNEz&yyD+qs<}(f;kV$A3P&bS3>)`z1+818C6)IRbx4rp962^3-(CJqd8i~R) zV=gq%El#j`uS7xjOr-;VYatv?-n8$hKhX>7tV%K#!Ve^fqmY?Nt7I7L7+U*z7GSq& zc{W@tx+FDcC|}7ClgNMjmq@7plbl!|K?ZH{!4WVly?@db0iVZ@G^F9SlkOT5Z_Gqi zB_^7V02^aNg5=-MY<=KuD~zSenK8Zdm31N!Xg8G5UIP%%(Rn0Ev)>xFP!~o`vRI-3 z4C?b4NPS)Qiys(wYNQ5*+=>xo?*(8#G?@eLBXK0eG*<6*2$h?-{`3a_uynWz%wK4H z?%#%GnZWedtSq}_iT=WD@=ly+mnAthV;|b&PV4Unp6VQ#eOfx&N<}DJ@9uEAH|lve zb_zc&7TaG&1$`;2*1D6|V>BH~g1RC2;lD7aU(xg2D+rpAelWV(@pI0h5Y&{m_9B$m&8g?~W5`hl&n*9jMQEZ76}CeW!tT~*d7G=wI@fl@+|*_#oWf09Tgwc--VtKjnBp(Q-ANA+zX zrk#`6y86<>P-E2{>Ts&ndS0Y4w|>_1zD{k-nwM;Q)b---7FsB_fKk!ov|Pu9kG}_^ zdk@_kk1pxdH_U0)*R8LYtM_yK&dHgOBtq~p+FGB8K@|OINtivnU)T*8m_1J|+w2m; z*#kz6^ak-1(Pup{Dn7g2wfQI~@{+^Bg;t^+^h@@aFECks?z;UNRv3TWjm17mgw<)h z-JOBRAZgiP%>M~4nh1s^GDSb+KQ!?mU7#RTWb`6>@Grt?nM8>0-8 zX_0wEaY^$_)KK=0kgxaM4N`W^)+DexumhZT{L%mLkKl@q;c-oOG z-LYgT$}Rrol=PG`JCr%}L|PFVC<9KQYp~`#I2Z29p%uOIez_BX7bH-~;l#6RaD#-G zEV!-PL`EmU2#+PjtgE1OzonR3>F;^PdjJ~vmVxm5`0J)GC==htu79s&*&!_i#>kay z*WLAgn;&1Jo+&_K8mic=(PN@|^^&sG@cDf<(WNcY_c!uRCAz}W={n`jI&yr{JzrN8 zq_mVDA5@b2V`+iFef%sSssp>nrub~G$Vk3|7~)U$2B)BxF{a%$lJ8{a$UnGx?xyxd z>LqS#VV`30#s+bKC}e!Ac?{~%KW)<_aE2u%w|wJn8Zmif)!G|Zz>#`)K{FhzY)p)r zgGDtANoo)MAlkt;Rcw>u_}fAkd_73ZxH!fpYK!Z3$ADfHTc9bomNl4$_FbcThSl;Y!f9W?c&!z z$!*^K{@bXP&*6Jmt@oY7pUHmbLXzoB#O0ET+1ws#2DpKD9@iGn^q0{YWAP!SaQp1;aAggd+4ww44Xf1m$A&&|m8^i*`kgHQy_9F22Pdn)kog>B)a8 z4;pPzE}K?M*GhS47Jdm%rReDe?fy$rrGjr#RgvBrpxlN0t`=AYv#43!Wpe8%FsTQnz`^I1Q{5 zAly(&0ILNSYmgprL;_cs=lq@_|FA|{coVHc;zKcWn5@`>=PJr^ZzHS4n2-4 zQb5MI+qcS>w-{64aa_4FTg|EZV#8=^s-U#5N;tT<*ou6z*pr(uU27@S4*dQEHoFeQ$H$yWaYfUg&D}ke`9z!AcZLS^_~mn~9P?k7n_%my7UQ8)l4?)1mXxxil8$fph`?@D+rchBli z0tA`peps+-P47}L3cS5<{Q7ufSbrz(mZV0M88qV4xYZ^oo6Jh25Q0>U;2co@DI5Z1 z3r?n{5X$Q7j)h3~IH;lLN`5_xIW}ZHb_+T)OU^g)%AJ6t zI}K&y6z_Ro{5R@OkIU21pi_6Pe&Hqcw|QeFUu^sjdsghPUjJT|5p3yJzW93;_SVe! zjDO^bL!P;d15wscFv|f|q75jR+v8`LD*;HMIF|yHZ;(5#AsMWv3CzPL3s0!Tf;YusC_gvi2YM$B-?K+i%5>XA(&Sy z$0|F_FIoykb|RNJgWQ|`My?+AL`DS)j66Ak;wOm%tPq}gjmy^w&%*}IU@#-vZV;06 zyH|C2VOfq(5T%nmWVliAA;~CQF^A2;GrN_g9xL!kRZ7PF-rTWc|Gm3GQNhOkGZ`zT zxKE>S{@Nv`*9lyUp>stZUSoHQng^ZVQ2Xhlml?5FVDBNv#k0KN4wpWWQMYui+$&r0 z2gHwcI`6W&Uew7&2pZ*S8vLGo0fS7Mru%OYl}<4h$zTIdu96NRo0pc<_}*M`Jb zPLI44>cK;w`S*}w0q1>wGzBg8kXa0N!sV(0vA%vxvQ?F3iG0gjH7z~8;Dxn-xJj&} zyD1f77nhGh!di(Dv45hnZ>yGAYE*X6W)Dz>HI)T#Uks6pr}|^e?||H{BIMtmwbK<< zPX0a48`MORR{jb%H?6Bo`i&n@g+72y8~sV6K1Eg7-9XC1Tz))yPbmZ@$IdgKa#1JE zxa~bF&g8MrvlKZlQ~nXKZD}-HOfCdFn)Qo4c&bO?g(68zUFaNfDe9_qJMS)`arkeGDh zD5vfGRtKJKL6csWYq3-}?ar8B@h|GU>@A{_Y#vrdhCJ$_ekhWFe~j_$`1bf&GK>88 zP&gE*O;jvi~f{F0Y-&%pTDTO?igN(2AOgZG{<>^2v^@m_n=FZ!pdlIqYadhswnj-}kU;!ZX~ zgQy(R{_EE+_uTw&iW1$QeOb2vI(fhbk4N7T7NcUO@JY*@9#*+2eN+&*F51_Z4i(<|0EX6=|nt@c1Y}PCS zWlatSH;AnCOJ?2mfS1#_WHU7DJSVX;Q>WmXkHo^`ix<2el0;;owIstg9UowM z5H!GlVAGb=ed3Y|BL;sKkeg8l)7Pud@%U4CFbj(vfJ}T6P_734FvxP z{T+MUsZcN2jpeNJh<00BWPCk7mqoUW9_#)=i|ccy$K3gjiYHbk0RruK*)&o`vSu`E zJ|^s`L?DdThbyvo*YDwdGnUqRp|=}A-4JzOXle$k!@{}roJ<%&ou!(Dq9Jk9gZVZm zo1g%w39R^)mASVm<4p*+k6TZu- zLOuEAZ(*_*f|HdkxeV?AzFR!t-m%sb(^Zk&{AwaebTR5;^yodQ**NlL8wv8l{dY%0 zi`YNXB4XH3;O_t?Uct5L-P&{9?4$1;59RM{cKjhn zPfxlbJ8NG< zwHcSnPxM~;cf#5)sATVXS(aOT=Bjg+eLA)}ewp#5Ystqso)i65T9<2cc9dL%9T9sT zs~V4LX8+iX5BdejH|@lizf;mo)RPbORW^g|2~{R5lsraX0xrE$`;aI#YsE`+7CyEr z2zJw3pQP$vOS(nMK=6QD_YzwSiGYQshq_p%ir5B@;2xtkq@lE~>VO4Yo;2MvVd`EPG>i z1&n6eMb0RE?g4RJWciE17@wBTb&ZyS!kX>CS65RLXwTbQ!7c@>-zM>=zVKtQ|46zUq2@8l2ncH#8AQRUSkR5+&k5ky+{|^@(JYB|jH&jwQ-o_3?gg39mj8uz=f>=F%JPFpNtrxQuYT|0(3_h*`yS`*_c7WBrGGCa zn`$q#aM)E4?Fd3qjHk$L?X2CCs5MtQf!m+zUpH(8ljOk7^0((~6zpA4bq4($DbP=O z4D&JKQ(i>A;>O;bmezVPhRSdFicbd$85TH;TIQUv zyHmX{qx!3RU!x=gn`?MIQqfq_VsnrFL*awwMZvBxs-3yF%Hz2H$tx=_na@|V`k}{& zftnPiaW|6UUr10{lu0qmYJq`;V=ak<^*i5M$rc2k{A>k-?y?2(Dl;w_4FEM3 zh-kKyB8(uXlcB%y^-hNWUXxdYOO@VcJYS%G+)^0HxHTR(I(`&i(BWD86%b^s=lUbO zCpEN8%-=;RlZ%xHT2JIF_=pa>*NL)C>EY4qTn9v>lPHrBm$6=D*z-LPZ?ZSkL77 zy(sZY!kG7anQsKRIi~Gp>=6Wc&(`|Gum)8gUJDrF>%TR#nR_82rIE3ZD%{$xI1*QO za#$%v!CTF^igyt)VLCq9)rC9%9D~9U8H+OAJ}a~)=F_m zD)DXz@kWFrC90M(7~?s3!c791l7!-Y!ydiwUJGtz6<8+u;|k~&RJF8*a2zD5pDPide2;gW@fX-W&cga_oc`1YicI@;yVo2IrOsLtE#ebqTc5alnK7tp zN3`WdKeNw&9R5}f;pdbKSQN0AUCedl;BhQIh9ZUUg6QwS#z~+L=XjSw`7!+SR;v{z zLs(%1Af+^%6?=%MZF`BL0XlJFK-O6AGH=*ay4;ND;Zsp-XSv&gwrIKmbCgr8ofiLt zuX8l7*W|W$5k#k>Q^_Dyf^{pjlf`5}tsvyvZ^x^!D%ejkqVdQ;e}(s1C;?8vJ7^n^ zYugcNL{enlyt8Li!kM5nbFW$9!CJ-PdjHid`!QMK>Riif{`#6lle}1 zEzP}}T5xuyMvI&jk*q#O|Bco0FsutfLZ;_h%>|S;F5mPz&bBDY2Xk-Yw|4(mW=8AD zwVP($RnnALuXnY<_$lWf&4mXR*6oz`0V|(UHJ4t^bLh=1L_Ql=Yr9tHb+L=2L@L2n z6l{?aHi*4XonA?E@iA+$O)7_Y%E$>$@pI*`%ut=`d2DCbRR10EiscMHk2F52AUKv- z)BXG&I&DQ5R_3+ZSN-;&EIAkMnpmKbHA#i<@2pr{bo{ikw>PwsrA0N0kT(tZdT;~F zU_0k(sNnEe)(YyQhKD^erNknDZmH*t$y^jAMEt*;Jgydk5&|Xo7$3LO8;Zj_ezNj+ z?Ei5@Wt>;4C)pnktObeJSD{8kB;`Y!l$jKoER4R;aJzMg6XfkiP|#Ze2#M=~lSI33 z7v@$gd+Pbp%-o=NzFK(1ox46b`P_a#EUiYOUix{6SY_R$J2u}j*Hiq-fROd0a$*bH zriIBoPfowvZ29h_dYtAjCHE=qaE-o>_ZM7*zuH;ds<3xVlA@htwYWTj*89;`mDs7h zy1sJFg)97NuxgTZ|MvaFs6_AJDZfoGI1Bf%!o}bo-IqEMKDdDuPTMhkYUtZPI3a)4 z3tfv;63KmWQ{lW4$~g8PJap40VzZ5yWhkMsH3dO1R^31|7~$og=f?PKb5wUYJT@u2 z)?+LLD#41TUQI6Yo%7dwgUMU)oew6_;Vh{jW!Y>l2L5*(r-tL*_PT#F zSMQuYaBSsc)LPfJe>BPSd;6&c|?(fPwq>lIZgJ=U6pV+pZGa{;ww{ zRK0#T3s8hq#PTCy1+54@YDI{(Hl^$_lW`gct=^FP8_g8KjM<1aJcLnV!Eo(w8n#`x zUuJSWHyTw)hexoYw~;RvRd(AQI4@P$J4_t=TR(%Zs_Eu;thCr1*@V83w(M4Q__FgW zPb>@ewn40FGIp2(&w7pT@flNvp>TwWsBSBh5Js<=c=0JQ?54#;1*2B7iK1u=Z^QSX z7yTDdCx2PrsY)yMu9_Gc6&w3<(SG_P?vnnh1Ie&GFwR<**I$mH!l-H~0EZ%Ql3hu& zSuA+hoSri`R|8jOp#*?9o)5$=d_m3JUgnQ_6_V7^0mc^E&PE=b^2(Jv{BJz^ovbmY z#vqv3Uy{eH?x5S{TNdT+MB377w11$9(8Jh4UNG>+iU>uMBbE7<&N5rzdrY)^^|&7N z(1QzlRd-aL=VR1H&|+sD zZa}Q-z}P(tTLS1XlPhGOj5Qh9myVy*OO)amcW*D(yC+#!X8jqevV!wuy9Qbksota= zTkQB<1A{YZij3Y(CL}!?niNKPL60rj8E-i$2|-0ESvGC=iv(8FBym#eq;6F{I~99= zy_}aT^_T7}(Mq9yfm!B*sJE9L-)H<)es+8K8yClI$Ll{Z-_Eml0an#O7yDc=mt5)8TUui-hUTg{pjW3+t z#0zo`Ruw!kFttWW`@9(r;8HRsY9REqg_Vj|QVCCq7%9odJk&Zb zCK4V`*EK3tL0xS9iayvgQoYhx8$E4XyQ@g_xUp8X4np z83r3)pBay<6F2nJ61lQvW*ff=P=f=a!S4|EPs)D{=QXH! z-!^_SzDCcHqR*!mrVsO#&d^fo|OoluBItP3vdH5SMQmxEeWFb83o(V=nk?VfmKxUQ$E~~$>z*i!@ft(ghN!j{(KWmjzoOPnXGudye z<<}R^@82zBnr&S4UNZQ-Qu6nC{P>BrI;vL6|!0_!mHFPH>JOT>8Yg*1v z(v*kne~VK!@^X_)9S>4((p750%UT8w>n;UgpGw38Y7_3he^|;r!)3U5=r@2I@Vtoz zG%*NpfmAKEa@x>bilp>Y_iN&#nx;A#!1{@mNty=cgaddiIvuLR0_+ZG2}OCcC9& zn(b*MO0Mi(DE9SucrCcok6l40kAH?-z6 zfiX#TI)j>ceVMN%*Ex3K_H#}+GA3$2F&rMYLuD|!mAzq2Rvn0oe_kvW8RSi{yJ7Rj z%KJTbYs!k?4C03{EP^NyaJ<9B-iv<`k*~ZSsN0on9sv#nezpdh`#n#4S@k?pw zU!2!9*o1HECkV-}eY?fy#$S{upPt~bQKu)JGUgJP?C|na^nCtsNI>g`mv3fu>cG)+*ldDk2)(KCeCDIyX8a|U1oeojibGbi)iEXRC z?IacMW_xRv;p4P8<2)`&h#|wjATE3I2fqmQl{*&MhV@NVeO^B=Gn!sg%kEyP4{Vg! z72NhB?6I1ET;mG;qsxk=+GEnC3Qe0I4m?rX(*0^p88+#Ep)WYF&~c43h*s_#oFm>1 z*ja+85@AZB2%5Pf9_go=bb}Z77CHJ)B;Br-s_AI{ zKSQL>fUe2A+B@P}(tp=__Fyek?&Gyc=$35LR2(UqPkK!Acr!1m!e42+{jg$nzbdXi zpw7UppjKhD#YpgX5!-~VPGj<+VM2hV$*4Bby}2q`=(U&&-pC?QsQ*2uEVh?zGLJ+s z-?r@j=52d`yTtx*VwB`ZA$hE=c}dKL(=k!*aiQX->xqL3u~+3B|GeCmi{!0fa!6*1 zoTEQ&|52v%(`~of$pGGZ^%?($p5s-t?j38A<-jbEn}P$2F#MN_(=uLMuA;zX5kW)1 zkCuDgguQ3_{De^n2rog`%XiMxvaoNyD*3g|m`)lu)2-Q?b=A+6D&tVw&mf`uOfr&5 z;6)LAjVCDEXw$kWv|STI zD3b8VPmm+XO;W0{Wa~OcHtDAUGJ&syPGrgNB;F{Knif*TkrVFwdzC)6FKBea@8y#&9bYZ>>A0 zuxrZM6tP&xdsgX`>5kaHo%7vi_dB#aDavXuPBZ*@F>_8JnW4i~X>;PR?;)p)vGGM@ z3Wb#MaO$^DPm^Qs^OX~c-#2vC|GsQWGt0A0OaDmc-E3F$+2-2W{jW;Z!Bn+MO&r8& zGOusry?s5oyPP}eJul&xE3Q!p_;VlpP^-mc(rH79bR;l#1@NH(jbXHpihjh(mhhqu^|6zasI7c+m!>uI_1UkM$tY}jrZ?Zs-<0~Ce8(x zxOtpVnw*;e=2lj}Nc~559-kr6J80YjdI0~5@68SU-lt)RZ%%Ydmv$d<_71d0DLrRC z7w^_K6Suc^DZGlv#$aky7JZfLfp_J1!IAK$f^rEy_+(}bo4~T$;%y~QjjqVISq?1o zBC*iVJ1^)7xvcKM@DU^``$rs@EOM=C&l!ae1ZuprbE7`1e4^vO2aY{c^*qdagPIz| zk*CG-T*IakcNB3AHRB>j=RMVvOK8}}pEj<<+H3L~r4V5VC@dda!(&kW`5;hYsf6&d zGbtc+tHjx`TO>{{SN;_9i0h)}gu;6_;|s9f^(v$Yr;bqV9nLb$Gl$*18fS7>_d~bu zd|zXu@AZFkG`JXz{``I{X7jD|4Z0EU(ma>@ddlMO66Su#o0U?EN2x}-^sBWFG!!}h z&*tgdcQd_2!DG2V`Cl0F>#Eue^?tH68)75tO+Bl8fOZxcD9gbR5{N8?4+bfUS74JS z#xfycTyyDG%M5dn!CFqcn_h9MjW#&5I=O!p9`Y+FdR2=^MQEB<>L{IXn3KF)2CL_9 zxiEI2kj!$$ia=)P%mi5v%)!LT4P)2KP}a*Pr<2zV})(a6P-pZ+)qbBFZ^Qv{L;Z(vUv{5jUb?Gfmkp zdn>)2o!X674*B_Fb#2o}i(YSSNn#UCiOFYLHG<2B0*;hoM~{J|v7Kpqip?vjPgJ6c zOr>xJa5af>RC(pZlL^A-2WJ&44J28ODSI$`C^4je$^P!9_T^(V%ADKl4dUYdRE$bM zO|y4ctjTlzE`{AI#?tr3Gqe)4dZ!P&Rhpc*lBq5y;O{*=y(+s7dbHf95D`R|7Gz|Y zj}B8I(c2&y{LP3@VF3z%?vVWGg6Ye9scQdjpRCF3;EjaMS2f&3N2Kg$`oTX!KW$O0 zE~L-x$8TXRDY!&t7@M1AOFBtcIraM6RK+*_5p@?2=IpO;IX{%%>`-ko{Ur8F@u5~< z-3>}rn}&&pid!5vGu4TqC3oEVxOLwcO?jp3N$_KBvz{fm{y&ng!Y}IX=`OG!-CfcR z0!uBSbazThcgLb2E*(p!u!Q7FcZUz%-K}(EfT)DNUw-eOFrRzx+&O3FoMCo!wCqIj zaxrl?LdZ<(UQ&3B5NtMsUGe5BDz3aD4cvU z_xWPTkD}SUt;S8cP)Pk4pf&i^em~%9K|`lzZ$nX)usaT<{-=fIYhP`M~9 zXjr+HBd?A7+E-4C`?Cm3>4oNX(V zKoR)#Cg}Cy@1ur_r&3iK(+^#4Mx584VF97Uh?`SPSZ>!2KS`g22MDbf4Y2S8$_)J! zY%W~`X^X!_?4gP0i^lcmZQz>FRR9DT#>j0Z1G(lS+yasgv~ zZg#QVRV{=q1yTLBvjW%n$u~h1Ge|}#RS;5@8kyZR{mf}#K|_S@>CZvqERk8G4nZaJ z&hp^?OWYu3n_J508~se({RBC_3$;|!!h!Jk_XTZVvJ8+F30jUi`RymI&YN(J zE8;truOx&q@PYZ)6%js)INdSrX@%wl%D?uah-KP4X@z#TbPSABVKB$ zdaC6U_=G6CzQT52H$O7rYAkmkxr(k73er9Q-{}sEgsBz+Xm9sNGCc+{nVJ~@c=^Dq z4TLb$K{Z6kx$<%P5VBc6r!`-P2#rh%!1R4 zU20oCf2v7Z>ub{GX49u^-0+1Xxv)mv zbphT6VAN;Yz_9=g2Y~wjP$(vR@^X?l&Z+3W6I(endIm!lfaR{-TUV|EYX!GxGfERR zJc|93-CTIkIZ7__oOWi!a{}5o^N=r2T#H0?9=`CyJxS62vf+^2r=sB-0MH zI$CcWr21nz3O~ICT!F~+5$|1Mv7tz(C@C$tVfOLtdiNpxQyu!w1U454K|Kr_YSts2 zfqN2FMa7MU>_6K+Z&0|VFB>-^>>4J$s2U?;j@hnNJG6AolpC6B;e+|UJcN6(S?mh% zzo2N4mEN=ER1b$<9{BJ&A(xmGW+yQvbc@2!zdsTfGb@oyvH60yU&}A`{A(TCz-z~IGNl7w0gx=qi%bsap7)3`x zV-_ztbPo=t|AoG-kZ6N%;)qi_O$P11bkJm_lW0n@Pd}|du8QM9%Zp;d)h%dd3WtL9 z7pM)43SaZFv%Z(k(rHk~990&F3_|pkrVAuW?7YYOTTbxX%{(mWw`A>8h^g2+^JnA>`NX)#Ag0l-9WyIR#0izc^Hg~Gyzp}AJ2BCO(xApM9_BBE`U6PT7XILLl%y;y*Jsr`PX4VxGPSfM_2;I%SOA*AcQf*{J3m(~1?DPliQ<6!jIA-W3V zW1o&M^JIU>vnV9}PQddF|3$7Roy7`)ZDsUMW#}uubl7wU^?)t8gF-E3{$i(as+y>X zKLnQ>OTC^_7%ritMv7Nvg3K1t$|nu%pR;pjDJRcC(HQfGA{wbn)EB@a>G|`wjN+{9 z>Bi_%q=uGkA}&<%G#<6Y8Q~vl*)N{|Q>s+?yjiyQRbR326G_qo?0Gv$@zo;AT1p$6 zm+ob+2X&6fw!C2U&gax!qlDgiY)p4T(~@bM&8&-0Sa6O|E;JC(-+c_XrJV&mjm33% z@Zgo{JSO^ModqccrT9t?j`HPjj}!szp+DJcIc0K*_Ej+PV6;-Z>N%Lc>&$e5$lu^U za7Vr%)(B4W8dc;FM(Gv@4WIj$inz(uO}t*EFO^_PrZ8P-v=Yf!v#7Ryj@`4f#oNdt zK{%&jo6_{W*$94`7V6osbG*BzQJ3msmFkZITFK0d01EliLcbm<4&B5&9al!*RK&8% zCqMCt_vIKtj*O8)S$)L8hWsxkhGj-_L5<)zbQ)Wos{ zOiBbMVz+F-Qtx-BaHc5iq=FTNMfV5?;rBHoT*Ph6a#{`Ee^`U*2Ni)aI2#q*dON2K zHK5?HL_7m45u=0!+$IIlmmvs$R zPgjO?M~Ftsp5Vw}RD4MP#wQro*s}a-^#r;FF)erK{Ib}c!wH^XK(Z~3ct)Uqdqln^ z!SvY9|ND}J`1_ej5u`15C0?Dom0_WcUA$N& zT$G$yG}}M&HN|Y+4wuGo3V8}Qa~~n$J28J%!9f1o^tDWP1fO95i5Y|DFs68f1$$+* z6(3W~WVfT5S0lxU7HeZMWraK0nx(9Xd|ahO+el`*&kntQa}zfjJeqckaWBmINQ?W) zo&^cLjqIxOefDNVsvbVId2+v+X=mk}gBSDjz<0~r(kac)z6N=0s(ZM9JQgJ|ffH6q ze#tU_ezA|a8Z@evPhe(QY|1-vA?8Lt1ZBe5dqhc_i8#arXs#Ub6H@_N7(lHx6m!EA zx|%AI?_XJj=%|EaCq%45lU}+LxEqwB>n9*H4;R2WPd$ECGCU-6qSTwKZVZ|4U^$Dc$v-`}-xW4GZwg&@A6>%_W@P2~z~FvGbQ)fkg6xaw zs3)I=T~JYRQ|E%tJAa^<;i2fX7?D%#(O3CNBjP3HZ4_FZ~`Wd}hJ|G+RH{rlg@*vBdtz!YQZHxTrSKe28h>Nl{wIz`!0*|72l zF)!dDeR!>#)`A1^To^7u6vbKx#Sg!VJvgZqTU=kL(>L1FFWHdjdW8$}MAA1>0sFsc z)P1HiXxIDL@LF`01fA{b42{JCJ2;FomUNprstfp%Et@+BOVy{)@tJYjLZuZf4X*X0 z%GMc|$E35k#J=gfPvdyl2imS-ui@S>G)w3iwy0l6f z6s~#ckM+qQ)R|!+?3eDbXISPh?PR!5)Twd>C3@fWAH#sS|MJnPg+YKVZ#&R2pp6Yj z7X|*F|4{b89T45~sL7@VN(-0F#~}MAg?Bv?4KoGB5r;^@Vza98^vcnyf{;xA>HE0{ zzvW3Q#*Zy3xe?ykHl@tMZh<-&8VZgbE%dD^(c~kgTqOxDEUM1Tx#RGJ77gnTQf{tA z!%cE()z^))Y(F{z8R{|-_=bv*ai;pJqV6Yx`>FIcu`wMuBU5QPV*F&4U(UkEM@I@2|$5ZenDglPOjU? zbA&nxSgXdEn-`UA2~m9Cw!(?PAORDLq3H2c$qWSK9I};g^esyY$<6&2JYCc5&7xki z65Yx5kdgZ<%#a211mS9_>AlZiPy&lK>+7<~X{Bme7|VTCf`h-5%Dxs7qAr<};j!vm zy}EqgYIA+v^KaoFnQHU5iuyV%6T+x0o!d{2&x`vky&iUdmWW^eEhe8P)EHC!CYtUb z#BsHfye1N3TD;mN+3Le)A=O6>Yi(%-(csena^J@|pJf%sh8AmTefR#evLrz~`}jDS zIbn{2VnYj~QhRGw=dk?U*+F$uFg-|0OoP*-t)dfr>!g=Xu9QF>$?FN z1_*fuemzh(6|~>exkWN*;+G3SE&d{8mWZ|VCKnOOYeHnil?*fv`soCRz~B%VM@6r3 zBNU#=k$<0Im|1OjLvE^h*UFl>FZ}u6Uo=-&$vnGaz^K07{w?WCko&kSskpf4E~%&K zlnm>JFtHPfs7-)TV6mCe0(M@eY38CNh?_nTBaCK~KjvrlUw!jZoDY9BX(*t-DJ?P6 zq>UX*3C+6HvrioZQl0tSSwI`tO8z5@&PMQRwrV2GP7nPLKQAj@i4)8C#OTUUo9bT? zI6qDBC+Np@bcR(?X$fXY6=y=%mF3ZMQp;(@C*2mj?0rCl_}?C%>a*qY&_Y-2rG&VN zDFY2EfR%IX_NdNY%^4eY2h`3+isiP;MWY;*^;ZV2Q%o#!4qK4VmgZvg0&7J>fBIU2x`27I*VN73}qch!@C89yNEsEC1 zs8Q&Knz>)rvL9{IS;UzTl-rH=c%?VHTO(Pqa2J7)|LLm(O&Q?jt`C4qePNCq3{liT ze-FXb`sH3T$`;A$Yqp$;_M{$Vrkooo3MJ+ zQN18-kacZ|;V*g0tmSKM`PXamt+7nxGoEA*W$(tt^Tj5{o`wRtF2z-l?C*pR3jcYU ze7BhKtgUEza#wX_47Y3iVv%Z_9gP2T`c+K+?dwZk41}p{J$r> zEW(5X#2XL9t7Y)$QL$$SI{;f_F*wX)@|wsSF@s(7<#qCm_$veufQi>+wx7>-{QJgV z?xj8Y@s=gW+FJp6crQyy21{23bd_F#jo8nd?>2ehcFXh?Mu*k&^K8@O5|^GdEBG33 zR5552wDprtbzh9Ioop^qn98{4(&-)8PUaP;fm3N(vbI2DzfE2BQ+WdZG*#ks-DCEA zvinb+3_|VIui*R&SO{*IzHjw@{lDyowq@lmVYic02Id;{1pG*f@HGwvGq!~Jd@1~f zKhy|1c;$sNe^+_4oe$!hvOlVEwKVyD^V#!6b?IRx=83^GG<%-Y1FF4M*;3CpBxu$Su;J zblE-ks(gdsj%};@G}*QG`u@*nAu^AxgB9eFybN@4Ky~AZFeV9K{I?vf>GML+F&vf7((+P@-3!@w91N#D1j`zv8prEjF(! zzVXEUo-pJ@qm7jS;)+L)QQH_Mb2`~JQemR^#Fpu3k#+y10EW#PN~NXVG;iM#R3Kve z40CxFWxX4CCis+*`Xv^IFWd}WRVF8e1vw-_i~LUR>*5?LxlpOsKay^h2NNmE z9U|BGgD9U%tMAcsXCF91Q&>Tv^33=zN>3ascP33{9te&sxbmo(g{3(Kt_W*F$j3c$ z>szrB-s9w^G_oL%ve?C^&Ha z3nf`vP8QQyIPMKOVlY(Ltbe~#V>HL+Dyh9&E@}@52i5v2otX&Gf4Z|58xvf$BVegm zg%!NKWLwL&tal3V7RRq=zj7>pr&Ym~pXt1kZ0*Hvwr+q1qLgCayi3V~%{0stfE|3j zm2?Ch+MH(Is8GriN>WWy%5)L6HEzY9xlVpcVC;7h%@;V1kH4|&(DR>4DoC&lL-PiM zem!RAx<&F7bS1$S+g;x)vjsVI1riT{qwwyLFS z%{eX{E;tQ+1Sr9m|7K`SvvAOUs)0KAFo5qNX!RlglOXGS>0$9s4SVXS%}>)8l>;tm zU*{>VN&4LXRV}K9#dJR5*^`u@3X~kFb!EVs_u&w9%w5Kjcs~}32Jo%GVdtu=GvOea zT!;G(bk1`KQ!{3PZYMr|?>U#oyrIHl*CYk*EoiUh-|OD&bL<`-F2^sTCtB)jr$kc$ zOB~9!DA}Hr)Q$)L&5+4JS=pE^&TAR_Lmw9T% zbC=Ly%BqA|V;73#X=CC;os8CJIVO_g+wY*P7Wzw9T(9ps1m@hg`2G?8E*=H7reXqQ zRsW?JnZN)pRv3FP=GXMmOakIk-oybC*jyw7DdC2NxJ>uIP@3BIedOKX+ET3*O^lw* zv8+P*B_nA&*AN<7FA!@%`@KPsIx`X_Ta(>>Z|>H~LJKVIYr7z^v(LyO8MYNDs$?mr zcN|zo<>h7sD=Z}_SR|H~low4cr4X{%v8MjY(EMSG}VrdF6ac@!5t6DVu3 z-q7YkTYQRZAz^8skAHXyfkISgn33aU?Ap4F#!s##GMiM>9`?vw@*q;Gx@nZr&8op7 z*YgxkAFWEh)~N4A9ol_Cs2h@+SSEPu9M`o?DIoU(j-KGn`H1ckJu9GxKbPh3lNyRA z#sU^tuAC{(eqi{S%#ix`Zau-Vm6`mlNHC{uBguf%ZiK{U^m8n+{{i{B#mGo7S9k>t z(ffZ{S)NS7%-mgWLmPy{NkKQ7;S<1xmUG|!6uVQXoL=!uIjWG7c-ZKdwac8#>)2j9 zTPy20q`!ID*fy%VH5JYZPAT0eB=((7f_=IbP1vcSy^U*`b3yLvQKSsUxp z+Bvzq@)L0XSC@v*9M@er6_W^PHZ%zG)wxi#LrRMZW^qPZ;&f+vd55~uCZG(j^0pUL zs>?{LFSL!4ZUsG(IpG7k3S@gxbb?H_YSxO_e{MEOs?tB4M>eayAjE(3f$=p(O-=C7 zj@guUe3!c4g(B(s=DM|xPxkT89r+#@3|Ifb0$UmG@PwasqC=B6BT-cNH21JVuF)+N z%^Kt6v4=os4n$gLjBoKS6KcTB1zhQ599!AO+@wY)wyH`CBk*!Zx>-F5yJ_|f1q*dC zDWsx{Sri71m;h~NyY!cb7@4~b(!BXFUF@M!N++#}RbYXYRe%~Wl@&>HEb=OAr`0oo zr;%s)$J=6;@P*~*i<#sUdqQF}VdKueddxf#`gPpLw1Q;sMPv!>FGU$Rz*T>$I0?pLtGqRKFtr7XcV z<$I6w-btS8x(9o!hPlUH#ml!%RzM&W4#5Ti4U@lZ_ZM!Iz$ff@Z~j++9}_SEp!jT` z!>{H&KCS7R!3^lXa8sW_ERosH>{HtYEHddLK6^340e=7l=sBk(5)@dhdEUJTqu=xq3~ zQBfYDCr2TeZW-91bW^Yw^ykOlyrz-7fhEb?i{gDlaZnjf)d(j(*SMuMKQVo&9@X(n7ySA<+CZ|lSu_6s*6 zYR53qv^I#m&>V5;Apc9|(ytnWbho&~x%lh_)WwiIuJ%0N`3LLGT3(>U3lRiAw_Xz_ zSqK-oN1VTU*kLYm$WqVCEhhW}R)=RNalnhEUS<4xw6BlB?zyQmbKAs<>Olwv{-M%9 z#YJ*cuXFpT;W=t5W2TRtA%h!sNQLz}e?p*0dOw=WNkeI6TTuA>*7K{spQJuG@uVy* zpD+$3(TFb2>N)Bx+tfxOEsRQN%6yN5#!VVOM59!RbnR_|ZZDnJ!(C%CzwlVe@R!Ll zM}~=2M;e?p%4+vust+_bnOYohBb{wVMXXK`bMl>V_EKjTXg{U_8IE~N+1r;X-<52f z-~HCB?RWk}8#q$aIl@J2U-vK|@G{l!STRr||2M7fv!}4r%W=`aE_EAkm=z2DE~Q4t z5?0{szbp4ATYW)|G5bhVwF4KLHU*^Q>^kt@fsXqLA&H)0IfWN1wN(0a>@dKz@`OjO zspi6&$|IuuRpO|l*o^{0tH`XXTHEBxEsGfB@}+P6?~**+mjuyY>Mmp|@lYei6^*%{ z@R&)bN7Gv&3R-z-)P5{DVSF|!lpw}rMTzDQhPsYM`Qj@jHVtE7CgQOuFtf-gVe0&& zCU95e;g4;Ke8ceKMYWXBO#4>vprb%YSc|B{^PXa(rQ*x< zsl?R#MNeEbDi9{Hr?CB=0mxEf#jH@&P@wNGS-XqOJ%6_z77#nT5w*ue1o5>zmI01>%| z+1mc>#^9Q)um(3Ln%>wKNj*)C-q+4f1st&)nMii%CUmI&rI^=(ifQGfEt#0?0@g7C zFTGbi%LXLmD;}HZ%DiS5(dtgpXdSj9j5OgOGUQycwn!FHA#@0AjFKGwlyYAHVME8b7A)z~+ON0W>c_U7 zVW5U<-Xe+%+fCJ|g-1!AqWle3szs7=^yF{Bkhz&2Z_mqlcsC-Po379@PX32Gry(y= z2qWAzV*xGW__V)idPllS=&AaE6{#anOvSkIbP6lDS~QzP(16TH#q-I^nOk30(tl=y zgIIK7sdYS2(o#+1$}=7Fv~XzcQr$>NMrKS0duK|_8}x@-hCOV{f3*#PA)Kq*W3}zi zs{I68VyhJA;TX9X)1%sw_-Ob?pzXH%I2kQjQYA9ga>sM?zdSMos^I`w`Yt4gPwi+A zlPq?4EH&(}l-dRc{hL+yG)Z*R!5<16DuA&qvm|7G{+(XD50^~!ozh_r&KG<|xx^*w z6kB1{az1)@hdGw8X>hAc|Kf>Eu%V-v!z7)8jW3)c-W=tp=s4umz^5(u+&~5=&Np;2 zwhUVb`^dzKR{s?`ISD^=S3CRmTW$M_wsJyuJ~|u>-ijwLN6EMdN*sH+)tjr=c^9fo zm6u_2`BHHQzV3!)XI$pi%%qX(Xsc43Qk$4c9+Z(Ae&#FUl!W;8Lb8CrC=ls)ehubA zS@=|Y+dYrn|LTml=hm{;Dmi)_VUI$v!b|CI-Rpz(Ikr`~?0C^kB}$9K+nqwvk;Dx- zzLx=x&mMTq_Mi7<6S^1@&*qu9T{aDgh$wDNFcBp3G9O1`4iww^DxDTHIZ?YHKlXqK zu65IEZnrmr4+*IgSWLvG)@L&@$Nk~x3OHHgjMmYYVP#9p`-_(tg+ta6YgzG%0loP_ z#nab@TlP1x%N=&&%C0w2M+MV?3U7J;y4@Kn7dK|v!BnJrL>^KC$sV+;YIAcEokTs( zR1Fjar)tClbxYCC@d5QU@Mg_Dqh#GBD!H));2*P8WMw1FzBk09t+F@SbHKxZzXy$d zEAfd&gnD{oO)eJ~HB5@KEjxb56ird1cEPY%QD?JZ{DF_m2W2x~?Pw4V?rjNGD9$}W z5P(FHJo+sM1UPQmLm1N98t4?o{*wT(ZCMJX=6CebMpGm_OXq;l!h5g#in)e|Ui zh&?GVEIE~QqZ-4-BS=(rg{#+1h%vF+Q2IGv)rykly^1$7UKm~k0(aF_9eUhgN7mU1n~W8yB7<& z4Fxjt?)DFUCD)EcURK5OH zS!7H%!g$61o%D?V!2Gm?P~h(G*X+;CPB%I}{HtYr>=iC7BBfF?0k(3Sg8V|r@VA|N z(Q~t8diZ;%O;5g!Ax$f6FpmqzBA9Kf5!^mj(sU+X&@yJ_1?UtdW?8rmLub|?B*g7& zer;K`U|BmQcAe)5Jp40}os3D7RKhgXPkpkhCFW0G|0cMfliGCVNaPU}IkeO%6KOU&pAE}meS=lhN?_%K%kP@yFU`Eae zySO8=kB#@#I+l+stN~ettE%xV6{@F567f2}#;|rXpbi<*>c zj;J|{LEcOTzegmxphBMMix5-u*^7>jPnTz|nV%;{ePR`sxIMjfW5eQT~OA`ms z7Yz3vz=g`pvAN{SDV_#pgC|Gz(`ciB7N5K>yJ%v8E?Eg>>XDHfI>Kf(70rhV*v&qf z`5?1mhuZbs=uHgeF=ar}A?ucaR4`x-sj6XT;jQW>H@0XhAYeItv? zVmVF``jOYV&?5Ggb@>yd*5@-aZ+}r^cq+r*t~E79giHcl6taEuBo^I_YTAWnTQjN` zyW5r?is`A`&W@a&adl?CKfsu)BJis?+?wg7f z{4)M|rw^`7_VrOts>piu7xgNkD|*G(~Wc-$C6W@&|?0x+SCu1aR9;>Fsy9-FA8f<~q_ESKLm zAw!BE(4`+^FUM~_o>RA1Q}JiLKsIfrrQD6b{vNC2DCmg@F5kLs)E zwXB2wxUOFMrMPP)NJVVO8jhX1hs04AEhbXg+dtv{^piw4-tLnax z&X^Gw>WC2U0mGiY}m?lI~7w>&B0}qAJ@kwV<0)`f)i_XG%vuQZ~ zrz&298BXICRp2;kspc(j%PkB4sxI%IyO83m6?%?R>Gq1>>Dop1xyknS?;tfs$F}8t zXuxOq$n)_q2n$_i$gR8a@5LL8{hzpXD*lWtzI9}hp<1Zt)<~| z`L3Y)^Alt1gk1I(b_8kSXxIwANvu3qj*oU*u9W=iBKsCd0lQ~rqi=V46JGE7bv6FW zKPXN*4j=cy>-|MxN=+Qn$agXu6Y)G9M2-({tiLM62|2?*8zL$WBAPux|rz;e2EM!pw9{1VF3eVs56Xid=UYk_>aAe932aIt6Q1r ztmBjAazN!o5iWbEl80C$H}BJF768rf*?GfRJpy!=D*W~0&)<2d5LGV2)<}wNL?T|+ z4~rT*B{D&De#vidK$}lUE^8f@edE+BcU^{Bx+H^(ELf!%;xm@HPx|9(CzmFCE5lw+ zb_)5)4(xOD*VVA>pJeB0GL8Kf|9Dp=BRo=^hIpl>Zuq*kQlIC0mU+Rz-p?w(B{&q` zZVuxkz1hwBUY2D#pz)ubJP|awD6-RdI^R<1hPSImYjKvyqerdwbK{uliTqg1b(DAJ3I2S`8Zolu#&Okd;DiN-R6iex!Qii!23`1_e#I z{VPZRs^znxbIWIkzOTbF*?Udl=?i=qj+`E%Jfh!{3p7Q^+U}6-o}Ho=rCc|BY%TKq z{X9Ac)5r|Ym`kfpoL6b@dOLkmsW`>|X`C&bv>SaB4x#;3uT4mqE*QGdg7WRGpa79Z zU)pFv|G;ju=#w06yz3WaGy_@YoJFJ;4c?#o{ruHK#>|%e`t?^bWg@>9@N`)z%HyTg zX?u$gR=&Q}UD=5(gd#Q7D~k*i7Ecnu^=RmiyCWVGlpBnx$d;?v7+`3)`SF0^R=Vv; z#2A2l=7Cl{g?!-^4(oJcx#eKz$LUZU*9Imm-h3XTC&lew%w(n7-n9H0st}3;Id&tp z=LI)cG=HVk&%BGVf}7K*x+6ZBS_m=V+Gk&KoCcPkuZ5Frfv3@p8(v(I6$Vo%j#(?r zVk8DmFD`adq~@zpDhRmI8uDwVn{J6}VncNOj2kk3Gue`ShF+{q54CAapUTV7Bfcua z=z8r4Ih`m>s53s44F@!LV9~jr{6@wXxo|qi>x~qICeFf+;orWcT(yzjPJ1|lz{kKp zyV+eT5>*}4#Qf$=ll$tQeP;H!*OGyX_Dz;7*N+8J! zK;TbTmADO)~+U=d3eOy!jgqAMa@%$Wn|feyME8REw6uAG5@v3 z>Wg&-Uobycx)f)qx5nw^(sm~hGPJ!>u(#qq;Owz7E+#of6&shodCerVZ-^g;#$u=N z{jLAV=BU?_ZeSmoY>O`H)>il|ISh8j(bh`G&(I}RGKn@6!7xN5L_lMWf%fz9mD17i zy~AZIC%DUk>qm^~M6g7fedmZ7%U?@J+SbAWmre8m+lmod!4@H@=PokfFj6%Y9*mKj z!5t8LwT?}06VlaV>q75Lyn+3+z=mZd_T9(j9A2{O%Xh+6mFa?a=*4+rGFblJpIEmY zr>-0d3@LPewLch7mdAQxt|5+HPh_=C)}bNtl_^EV$;$M@!7AW<9rcuYVk1~C+BV$y zXS0@rFvV`O-TD1lk0i9jo!!rA^TQ7-%iF)-b3CoMqb{GnQpQyMd!r?=_*9Q9CiTm> zeezJv!+PhpnuBVb$ez!0??@?ZHwc%vo9k>ADd_8gRiA*AvF$$B6&HA=kQ;u0aN}mS zmYw=Nj3_E)(oUG1)XoITV-j?RUARZ0GYU!>Xh&j5GbO)XBW`+PNM@IuFv< zek460LPadW;G(XD;@J|KL%P)T=;Q|aACohE%c*j06nn;&WY_tvzK}4#Qo}%og;gtw zgJtWq_?dID+|v8CUlY(%d=!OqxqaFg%|?#-Yur1rE+_40(pdAgEF6Drw&2t9!|&O^ z;lJ%1`fY^$?Y5w|70dbosUb%}H9uFRT%^+4k2SqZu;QSt1K~D&FYg5NEK^{CorXAb z?z+t@svG1#KumOimJztl7jA@)w|Ub1?_d@N7|6???OnMe$vI)H!TK)jz`|AV)F|)l z`M9_D)MzPDl`N_BJtdqL7b75VtgPPim*;X_Rtq$tXXg3CcEgcg$>7z00&AQk&!X-% z6KDu}$kh(~KP_#F`O)^=b?4I>_pM7|YZCd7)J`)xZc=Kx$ia*aJtl(|QdFXARx-XK z1FZI*e|NNvqsdWjVp;aetcv+}EBVX($Ix0G%X?*N{OD2t^B?i>F4uuymbIby@Y-Cn z75Gm|+B(MQ1Yo;I_3`sNAr;DKE9c9v)cDq~qU@S3-eIE_VMjC07?|V$CSU||RTek} zT?@O#_OtI*8mTN6AQz(Xy5&8Xwn{_sX88dVR4E;a*=~BGk$sr`v=S*~1_p`G+h6fh zl<2#g$cT@cCcz6tGs&?Gr}3)MpH|E$BqgC5*58Y?-O$HRp7_ijF>n;j2Pg%{up-CE z{fS04`spX`{DnCxmJ84hQ>)T*+R;Xx+Xv_8EMOGT`1;67+Qb0EfTcaHT1^KXR>U8W zksLdR&V|8(R~ez^mk&omZ!#FW*k-ED=!f~==1Aj;T2tf-iy~TwvY?sHQZ~Rb8A}O2vSaRu{FDrPU)t z0#6#N12WDvt_vVsdEF-Wq&c3RAivV{Wv3)%`ZjEEzyP= zzXOp!AFA9zh?bXZ7JpDV6E|i(>*DF4j%Fc1eld2x9xbhfgog8V%l7{n4o$ zQ+mO?`|@4>vzel${MxSkq!XXHxpD@=ee7rqIE-T{@I}A})S`HfH7u#){=(v9PeK&Z z*G#jD+dTu4S^yk%x7+S5C8cixP!JtF@v3ZKUqwzY*6h2Z@o2u9lRmpqW|cf~cFeMa z8fD&M^B?R$CiFNb`{o!ocN4GXzQ&55jm|-CZXstJN5zZ@IQik_h}hnR2{CCLpRQQxJ?@G zUS8H@kYqi!50}E2&|y(j+@}_npG22{6HYy;p(*|SQ)sIFeKiQ3>wkrnfm>E68?`R) zH2;ebx2H_jvNf-pA~th!Xt<96{-U>8o1Z0Vl@@u-VBM=%?Bb)#*}f_RDV1;+IiQz^ zY%JXRo5ndoDoBlf{zm5>StC}6!av~2Q=3Mg3ytTQE26+?KL$&iO=$dgau27?b``O8 zE#G1yP7<|uT4r(1qq$;E;a!YiJDzj> z)$C6vvZBHVAJBj&sQht~3f^{aWX8jUMZ1UynRroy!T=!tP_8L=;KyL{IdC5U{a6GE zZE==eG(Qpq1)O4%Gv}yEwjY4m4dU{$)WiyPN)!Tog@@bMmfJ#Zyj=;QM`tHha%{X3 z4*nH;&Gw~dw##yv{>8L9H{q78KRfQ;q50Z$!x}Sqf+dwm%CueJNL(v748~^t1zHud zE+en*NcK8K*Ff$V@REj-Rm;317N9@B|=HiWHyf6vN7dxoUGewl(bb*^}6x1ni zChueKI@En&;sVb>9*oEJicy&!wwjU?6{x^M+SoSzm6No;eQ+ zri*0Cbd!16ie@%5L!8X2B%mFZI=N_<_XxiiTKmtV;560D4Gi9VkVML{9bcl#$mYvm z569Po$@1$^D;^n}FI3zI?PYEsmG?f+B&7PylvZR7=YMA%gm@oC4DgRU7ie`8$U(ch zNQIH6K#QBw<~W$#`_ZUQ)rpxfE*?K&b9JP=m`FLrT~=-zsc6dFEZBf|`y98UNl;iF zI9)h`X_k8fxx`_+oVYxg&BS%mklEYww_~fkHA-6tL)d>h^R)IOt&Ai0&pweLpleX2VOgvn z|DUPO?;qL6%^y-rC#tHU93m|{0|^<#=hKs=^U^!!eELSUoZkS>uV%x1}tO;JcX1J|udNfknC|e0fr*5%v2SI^)dd$J03dLi`-AD9 z)f7m|SSvq0(H@#gqO6>JO9~HJtXYwI;tLhnHcP^!e983bH~ABftZ|E1UM0_`N@42L zja!=*-|tn}8rF@kl;aCe5gbp=-2{bf(W7Jg>*-_}0NL(#+h%u$|06p$)OiqCvj7I9 zGlc*9htG3Tjf@T|iK+eK63_LYavC^Bijt5}m`Urpo=72fiwxjgIab*dbEDJHrS{U# zW47XM+QtSokv@8mkS-Y+H@@WFg5rqtB9-!);0XZ%<&k&UZ6jkRA1_G6=v^0&T-2d) zxu=D67P037qyhcilR0#by2-)X0Ual&7?ToGX`_A}Mmi6l!!?)7Q!07BmvsO7F8Pt+ z-`N|SX4TtKhxH8jSzMqL)NXpW#`1Q0ApO`>nMI6!qv=IkO+5(BPpMa3d{9ib~B zSJvR3lj=FHP+MJLz)0a8fPU3ck)dcUwp%|wW@s`!E(@2tHXLOs4fhRlFkQhi62IlV)%40UVO_Ivo7nj*8cf2^^I%u)hjn{Gh_eI}Mz!2#$*&*Z?xj z|3aTL;34O6gc}k`ujlCKD-VF*P^gDMv6k&>Zh{&^46*F(4|SSjoabj3(BE8(CDudEE#@lr?{ z*<+eUU#=BRYsoUJAh(m}rvAj@e;W9TPDc5}L)dj$DC^9(L;tXTyM)>LOqbbC2phsL z@-eAm#l+ZuHGs=-s=aatEAUzvZl9Qp{J3%x1QnkhI4vc!su z5@zd+7OfybfY9ugNpMoi1bktwUf;cA`M(V^J{cU@y-OCKPrey!#FVED4N-2b;6a${Oe+rrKq{thrTwZ^yx zF}B@*%kRE|JONa1UK2X6jtu0*G|OqcWG_pb*p_rVqJg?Yg1VJm#5$l^kAkm!t;H3e zyFDiP*;A8*6q9)4XPBJ)i3|Uo2l>*N=2g&2O6|1sx^_}!hl>Xx&^fdZn`eZKxT1Iu z4XN88>E&wOhwZopHW~hKWy^ED(*m9^E|<9#ga$Ix{U^94x??i6m6PGbb0#qJu?&O~)0M5_XSHi!5k4+WHojpWRxh$A?( zqtC6VSIqWKisAa19XW?;eM<+mdJaU8DHqpuGc|`BPyIKD7R|qc1F1o=&t1*S=xBx%h&mg)8hneApJh%y`$*K z&#r^%-ETTm7l`aVZz}V*FRJsSXS%KvZ#kyQL6vl*|Ev(TGez5HMCt2wqZuzg+w$proLQPS+gLA zUH8q3kiP+Kk}V2umR?moHYEpYMg~pG{MHp=Sbro*Ah|R<22Jrs*ka6c#zJT>>URcE z4VJ@bhaljbxmeeBp8PM?ugf1xh`|E@hJZV&LK~eFKRynmfV@Pp^q&L_+4u1nkFYqV z&ibDei}&!_ZA~LaezqqcB;VD|jBJWUzwH1#y0rR+Ya#=8!6yx6BFDhhuDU zOM3ciJXacVl{n6_>7#VoZzq z`*zjQ*V;ZQ zS?_?UEzDFN3WVTY-`Yt@I>o;q>&I@wrky|M867*jvfr~29y;(K%Nm&@ z2DL|NUlTsf_y26#9r{t}P$ah-Hz1yQ!h|y)M~0VOJ;bE#%%|PV(o*yPi24esD!wn= zxuhVa(v2u6(%m2>-QC?G-OL396p<9^?(RHUQ&Z^e#=t2A%5c9e;Vy9t!+HyZrkwRW#ls|L|_nL`XySi-~2C*p1XC`3r_p z?WkJAlu`3|a;rsnN^{KI{e4(@gjgk;JE!44vUBYnvza;qtC4UCA*8Zj>j}5RwU2W@ z*d7k;L(z_q7ioudnyXSyWQb$}^Eq$(%i`)6pw}TwQH_a3$&9tu`wvo#Ep8eIy$LMe zUQoqPyQLNn_3sXl7qT_d#pseF(SLo3mGFLQuZjQpu+sTVh9wlSVwU}S-9>pU?S5%F zt!IfRDPA|WdsH;q*h_sOm^aErsOoY}P6a7sM7ryHqL-ybixXd&d3UnY-m=7e}pG0`7k-V|HtXx8LtlU)cv0I`bqqk0mc-ZIE~#} zH@sWY?Pl&lDz15A_Bb;KgnxX7TAy2y+OHJMvH6&zKbR&Y2k&ex71@?Cni}|^Lf!xJ zs#EUxc`g^P?~}dKszQC=^7=)#g)E&eIASS2- z6#QvEYggD^Gk$Zq0uZf3xMb|j%_W|3K*64L@aYPN+1yD27o9GwiYMwEmOK0X#YC!Y z(t6p-5y9L(l&wV^r`9D8SAW=EgBpx7N|T?74`D8vb1J0Csu*D?6IJc=G4Zz5Y&0db zw70Goi;+yCD0-R`F}fu$x9RX3mE?Bv4iLMeJM#ZoazCk6ksG6jj zB9qyacg#`bqKq!%2XgPRiD6@7qs*e1l>~ZiwrVxRWwz#8QKF_D`H#21T+Zi{#`c7EHb7=8j^zPl+9}P z4DY@8XI9*>>(qNQ`^LE5WApHYy^*TJFcaAZ3<3eNmPLi+mjGEVXK3_mLZKC~Q6+PJ zB;#F_e4A(^_~JZ(T`QYJ`07Ba=SBVQ$d=vtpr~3vmRr^6@)_?4&%!6YSQS~`O6xUiDbF+4)^5oh{A$a?jQ8_i`i9hDB|nTVtY3Zo;vU-G58#Z2!fX zo$_ij@uT+IPpa|`r4@|{y{-r;*9&8`c_I;-yznb;2c(9o5kn`a+B@mk<|GP;04%E` z=-cb(1Dz~Zhbxn^KDbDzc2jAn1yTN8I7_I<`N}3K;&ajygi?y{ zm1PHEyn|d(_617M3H1xmgaM@OfBUgC8LtqC7>e`X9Piw)K@?yQwvDY^Ha4s7f0=N6 zDtMV*;!l~OHN+~TqAI$M<7P%7DdQq9s2pM%x@~C{|6oJu!tqU>wz=b#QfB|eAp4`LB zT8lLk#rxx;?$4QfO1;UVlQH#@%%5L{0hu&&!E< zit}r7{~~$PFVD03M)Q>ss-G$f1ul)>s8$sdHdvXDhT6rgG@kVkMk&aJKgV&UL-U)f zu`qs4)L!gXd?YU+AS6bUbzf^mJhrIvg*KB|6My80G1_gf46EuQhy zp7;cN=g(DBZYd^N^A-1Y+t!cKyd-@H=n(c(dl!o7b{d64GE%cTcd|>e`-5T(a)@&Y z7+0OqOUXgHOB|^J{D!e5tG%_+W6B~d3{fKDI5WpMlf?(Mc~*CQh6HZUFTD8tQfEku z_LbP?pM7}2hLIxsoqC!7-14_xNbtyWaZwJUi!AwUqQI68@d_Zb8jcnxdB?Kk{VdS-VZ*?`XgjaE5L;`>}r5+r#f&R$h!g znU?0vZ0^O3nGpV>{L&~+2bZ=U_rhOE=9=X)ngi@_K86U&g7zUVjlLo>nqk$ORFfC4eW~3#0om(&u9>=q(rc_a^7b=`t7~+9;r&MyZ$h&B^NT5_d!cb zcGUk+JR5PW`WiERq{Oen+LgEu(6z=j~~W%>rlz@`~S`?psW2FrcLEWr>>k;iRR5+>|1 z)CQMLX7*40>yD={4nxAO1tXGCCkU02O?m$EDjaly!1aCtTOwKkrg?#qJm#bDKgq&qIt>U&f}hBq{v5WKW2nzqGL^I*y@A-8$LtCT_r+ zSDF4hc!%j_mN7O#hCRcF_9we6nro}Zf0ID=*5Dfx32jQO7?Y-we22Tyr%P+`f!esk zu|GTUdF|?BmO^5DetaSvcwL@k<7Y}H|61iq*9)X4>A*d-Ip2N6bh}0*o(#4cjLhQLv9&N!ColF$keW-}JzC4}2hYU5-)hD@d$*fu?wqrP=IfEm zy1Ix4aQV_s{wSv9@=;zmZ%HG#(=?5kufVlSfdM<8=B^Ggm$h_17nNT;Mim2gHNyZSU+r155Vw8{goRdo&rD~QewIWZ6oIm5;IL`X^5~R4)X?rvp z@jEBeD)IeT&E`tW6XS!4Ofn;H-XCJ#Hsz3#kTa>mo9epFI%%ZMrN=fm=0bsDSyEN+ zc&Xp?0kejG@cyvsE2-E7b0m4C$5!xA!sVus-Gw+vh;Va%Z z>sN%hu1|3qYFU~&RlEx82P4%J^a<6Gfu3j2hgOUl_Q#2Xw4VrlarCNpPf9;-rS3Uw zZ|4+oE)^upN|`f!Db@B2hHCl|axg=dSvMA!5Lzg_fN1cC!U_u)1@b=zj0~e>txIB} zOP3mlsv3Ofy52xdGk4#I_H%S#p>@{RTw;kO#!1G5=>>-|Eg@~Nfoa{_ZYZRJS?FNq z=N|XHvvjWA>&Y>9zBBD%uZL`+aHNzg#*zGvcQ>6EE(ePXyJ9?vwipHbMQ$Oo7eg*T z4{eEJwzE!t6V&Ynz~T#%zqGhjuoa=XxrwnTaafJ7G2ZtFG}r&ak3O*tIgNcFo<8LY zIeQs6(o|o?Jsr0XCjUfv2_Qa6AF?=aEA`bM@i}OL(Rh8_PI1?#;5!QpUQ~yDM&yK& zm$yP_0VWm&S|TtRY&011ZWuG0-V#CS-7-dl+o&vWbYxLsD4=>F<~;(%k&=tu+g7VV2p8`_{GLUFqyy?r_!ey@qpbu#u3Y07#)|mU4K8e<>~cYqCNg} zGEbsOO+eIHvZbkXVxOCFB%^bF&=`ezHsYIIn|s-u*0cVy-9vtb;{MIh`QbXVrs|G2 zDOa&UGXCn|lD*)Ze@}S|kBUa|qaT zn;G=;IIa<5;!D^bE+@bB8)-Op6_DuZ)yXj`*#jGU`qMAEBRBnKNab>tqz+#RqFT2Q zX}Gq`UJIvr#%~7D#)S|^Y+$)@eTI_G;|ka076q%XjA{6qOB;mbN;RGa3fQ{h^OWXM z_IrD{p@?`I3EY1TIh(89Kt}B8>-cdM9TwEB=4>KY#rG#tq;3IahN^n3Lv>n@I^fU6 z@;11XU&47DR_A{>7L>L+AJl&kXYcV@^?FiBA~2z97=;P0193H1gQ#X0U2tDR zTbkMv%5yVOIf72}ss6~%O5c`cu(OUTi)+)1o7v;7&pBxq);l{7N*)_~uZ`0jt97Fb z8<<>qF8fn&1Fgb(A^&U6*+a$!QDX8vV-j(_VZ2p0NB(FQM^`SUUGMNT^Q*Ewrb{hj zvaE_m7TvLhrFG)Z=qN(OcO)MsxBHu0T2M|e_jm;pOwLUHSkpf5!kg=l6V$imA$g3) zUl^sPrD83#kCyi;{)+eYubas0ZXzaA?cvqN>^Dd1+2x-MlZywzNV#Mk)j-#>9CWoO zz{Ni)&&SKXgAQKZHJe3Tnm2)_+K{PwqnTxDPJ{igzam99+F9Z(2l#Gl2xEHS*1hjupRj{L8U*EX}I)@%g9IG z)|{|B?vj0X&}(}+MWC9MO&W2#v6Taxah}wL{ltT1*M7h zkr4bpVepu4nCnNl%h1vxCw?ud2?nByo8LZ-wnoJ-(L1jJgZ^aq(d?M<@$*G?8c8?Tb`fFrr5{lRdEKqClYWhg1wW1n(3 z`E^>YL*Dv5SDHYANHk&*vbf3FQAFY{!4NU`N&4Z;&dV0>-Cw{Nag>=TZ?@{U2x(8h zw1^dVd~ENuf`guxf{=5fgaKVTUUWE}f}s8jAxRmvWXMf@Nqsa99=4#}e@Wg)q4hAkVb4aV#cNeeX1w!hu zzhpV)hg9xPHPvxhyvk8~ftru5G1`QQ<@?qg?p^t~+Gf!{+$vnCss;FGd-bOxuJT`l z>q-SpZ{xK4$;-Dv>~@n z5Kgq6a~6@|?EVl+Hg41(0pCx6k}=j=OeE>{NA`(bfifm=U;cni*&>1E2D{AKx6Vt; zA{q5tt=^bY$8dXNmE&P@arc~+{Z_ISIY&xLLIZ}nDu4Z-uwQr5*z2Ao&xvi!K|Fu};Owbet#S|Ed?o$69Q;U_=$;F-=$ONqwIFnVej_Y%FgNk+;M z*3(|zqO8&Pj|JC%wwI%8aC}^i0yb-y?4fUE)qXXqEU9$ zszcmw8J3D`%ezU#D@Iusn?5j__w>T@ZbiYwTdWT?rrMhY2P!eI-&2W#lUt2%Xpz`W zO)D9jp&da&qJ(rFU0D~ zy*r%1A{+b4rUE&(G|!Qzd%f-}{L!V6DA zJCh=H@^c%n?xwxBW%K%wdug4|D#-H5pG;X2_m5AfozLk+8Iv0l#Jb%-5r^P@TX;nh zfQCGT6-@P^{cNGZ5o@)YLzoMy2wUrOhH`~XSUVYPHmG5v2+eWLT9P6P67AVg7%Qa3 z@NhkAe-f&qH-Xxn`8n(&Ou{bZz0CP?WgCv6g_MPvj9wO;O>THUM~e3bio*s5B$iyt zRHMe(^M>38QnYk7`1T6u4GUzo`&(B>qAnD}GESfEC9_6w{j6Ut+ZuIZpW|7c=U`9H z&!ydc8~hd}eLM0JcObD2bB~tR=7hXZtz0f4)t(M%a|~SHC)`&Z3NISg!@Bgbg8Pp1 zOqPnxyRG;S@h@~6e|k#R^u+9hfSP%F$!({~{;k_9Bm(hE0S67&FOF~s^M4Gj>wa z>V6u51(Vx-acX$MgPFt-1>Y3KLGr9vLQN;8Kk49r3a0&0EEQNBUQC?~y+U>?>_ z>^F*hcafPmuV|klNtn}c{G)h2fopLViI;n!#5`mAed}>7*>V2zG}+O-X|%StS@i?{ zR}kFR9IA+MIpR}a{)5hQrby(1{X1cKGT(Z#|A;5%j1WstDR8G(qjtCCXe=?KhFnRl z1rWvD3*O2cW|fTj9#@LF*EX|yUBTv>TZH=A!htY~If%$yTQ|GVujtP+CeoImobcpk z!kSlsEX@JS_)mxK3og7D!aM$C_p{pAJAs+w#;kDvny&Ns+{+W&hSs-zm>a&$p~xpA zQZl5tV2GSEF)?I)Kh!kG1t+X!wd2Uz5!U*IktIi<{bNdX%_k6ucK z#MI-inibPO_f=ADm{xLD57d6wcb53&_k-^?RyxnUt@WOC;zl?0irtg3#{2mRcu4&t z#go%>V*p94`%c4HcXB?i$^b@iV(P#@7Fg){8|B0!zto?+kp^th-F__X;FUe+qZbx^ zZ93}6anwA7f!N|M#B4k^ICh+tPrVdtQInH7W>Kf{O3mh;X!?A8eNjLxv==GN2Tk~i zW|K;to*gIhHeSfH(zP2@w7^_bFgfZW(e4Pn)oDrA7B`c|4*%PQPN!D5onZSaWO^>w zEKU>gLfX3Is;0RXWmO0k48esYT|GNW8Eh|~KxJ1l>HABZl?AfG|GLnYsHC3_^p7i+ zcHGxOnHY{r7QoryJX7cgy0jIaA29CR|z;(j{yt{sKl47fn0$ z+8GrcQcOO$lA%O3z<@ciuXQl`4M}*3wWh?!QxSI~LJe(-R6c@|Y4*EA%3{TxBxA|% zzsZ`UHe^BR`_Cu`3q9Zojr&yf{dHBkg(UiINvX*i zO>7l?pu$P-^a*YEhflImk{-)>crO0bf&JR& zZA431TjK4X-N7U_uidkv=9aRXGsQX7W|zk6@BQ<0fdm7~AY<;Xy*=Hn!|1WI(6n6> zHcBLN)hLW^P0GSR?8%mmc8F1q@^He4wO6o(1>c7cMT)5Rt;i!6hc{N0%)?6v996WW zO>QGOTsQXn8*8v)`U+Emk)`#IwTvO64efn;mYGwWTe6>ZuxV|>oEs~eejeyzP}XW0 zd|Ysm`rW@J42}?fk7p+q2aq>_)|%!YSU(5hXf?(&C(|Dk^|7jnYSw~YbGey+SA{xU zh)}&8G%5bAr*MDiO@Wb2m3QN#K-)#wJ1*}VWe5ScWFzmKrA~3gT9_SiEvypbRJ(e* zwt~TPW*AlQ#mQZrCAE{UdS#^5KZ+3Dd>J8GR4auK^wB{x?dWo1?P8Z>5#XP5c9wXe zA6H%>VP&#hhVz&@NGh{#OoK?nGs#y$KG<|1;%bH$^0w1huzFX%ML>1Io=?lcJyw%z zbHTx}_>CR6D?Kxra00e|jsho9PG>nOXYH@+pI4uq{g(>203zZykf8~Q@;S7o3qGi1 zs4s%r%i2LBy`P}{3Db6;T--$riajoT0(TZQCPuAFUE5gGN(t~PtBhs2^}O7fxh-&; zDG^oKE8uLsy7j)dO>+Xvt7e?(`IC2922m&O{nCg;)s~8zXD(i)sOpE*bFH+Qhq~Q= zAJ>y|Bbv2pYATa>s{?KrEqcpME0YvT#e>--Z#+c>ieHSsoyv8--NfPR9Tc(!zv|=t z)HqDtT;SO-OI_SF>@VHe?Y3z!j3*CXdVLKT+&s!PsHfi3?uJ>@U*xPiO-@v}p zIL-Imi+rm&Z~Gki-kLTM)BX1JOCgCU_{|{TLLWEfrB`hl5biF9C;oarW;}-JMpi=? z0*>%9h)mcGs@~Eu6|N$t^YOargY)_ykWI7t2dai|M+kWkz?VW(VrCFImMqiUX`edRM}a-R$Y#=qjD@=$rqs5ZhdXv_A0Ke((!#-FWn{fWfA1E!cbmD~zHn}s z$ty_BvENSalu`I`B!OX=`%{fSfuV#OblxPQe5y2j8Xc>LXpo3UJbkuOfqBtNrp?RK z1Fu^}AoNlm0_m=MylZ7rYL6FBh8Z(cZo(xIn0w4Kb_ypPL&zT$J>JepIe-*Uwpruu zDM=I<>yOg!s7YQcc^}|v`A}k6xseC8i!^J3=EE_LnDcT@!n^bYCMPlGF$@3`0ou2r z?$teeyX;Vwc8Hy~d?Q5uc*=Yh*SRT3VV~A>Zs0>)D+HV%sBI7F;MC)zH-3&sUVng4k zT}#C(IV*E+AHHwmdU}UdcDq&eIOTV~|Vj_DDq}`ztwST1L#>;Qoqz>s(BBWbC zH-3LVokD%B3G&ocp=@8@y?3@5y*a)g3K4J^Alg3fZ5Gl~&Qlv}r85)@mk)IWGcVY{x`k>qpp0Q#vbG8^kxiLL2UEQo7 zm1y|1*-8RFNei{!(Tp_bFq~k6Fk|yGnX|?08x+gSe=^O)rndMG2%J2r9Rj!@Fu?;c z^ML5rGc`0wt0Uo9Nvpq`e5X^vlvu@@6BzUI|(BB@^prk$){3_U|Lw~Q;MQD2O%bt3ykHQ<^4L~!Ei~+E>$UgVkG+Ll zZ~ez$AX!_`H@jkjtdX6&0U-KiZ=CnL zd$$+2HD`!M9go;tWB6Vw>8d228<13Hm3LEmD@;!@#a&a zUuEtQhhXNPl8MRWqU*XAgZbMX2ie4gRCCauIXy+yBBT6AD0rd3ED@NmEgk7wGj=%Su#y*h45V z$nR0(!^qZB4Y0-RH^YHd(pI!`xEn@HEzOJ z)rmE$`0kK1hFBc(d8j>uo6@lw=BU<4bNh@^m|TQE3L1PfhybDJ?$e0dUhw+QS+9YE z!MYs_jn_}(l1hVxyv_N0x8pqb!`ubgLk>0f6Y-I$v{&GlD~nNKGz+s?)X&G`2I+~;976Fw4Oh4Cf~% zT}N*!>geMSMn6qX;#?T=F!viA9W;hnc9dRItN(paeVa^E*lO`3{bqha7~QK4V613h4|H>!eZ2NG9o_ zcD=Js^l^!G))QlCv)St(sb+t0eK!B;mO;VU&rlPx9hp^F$tk5#cQRoBxKAE5iP zWTj9Tq~DZa_$NOFH~hjTxMj`SnR*yEg#^FxX3WfltB5Ig0<(S$;FO2r7nW=8xCz{h zQNex|8r64x3_^8m*!yryj&6bJExU8gE{PXy;oZ| zg7=(X*UxR76P8C+c@Y@NOoSo@`kR8&d*yYE&+$2nY+JsPKP zExGlaw`^M_V?J7B4tpz4Z7}cb95?T3gS5tuZEfcHiAl-*xMytj7U+NQHT;yn9BR_b z@$n=-mO7EVl{8Ni%%*7lvnDX3)2kg$5L$t@wAy~1MxRgdBwDMy&Wf7BknW-BVkE%S z>*Rv$6Wqk)C5@|FeHa_88|C-EscjtMFGoyOWc%08r`WBC%Ze(b0$H-w*}>rRLUfq0 zal_~HwN2HC;+38TL5jTFm4(jw`^T+A$ECK-8V7~Zog$G2i?!Pco8drMUQQXU@>`)h+sJ(W=c-~W3(0BX_MLhse9HD ze8Y5A##K7s{K9tLcT$HbPyigSGx4;qJQmBmNJb2K`kwOZU}gCVON={XV(pQ45(n_a zR2cO4K9_CyGCELwYm7{L(b2quFr_!%7*Y}jXa{r_z)+X|^>Ln&|1;S~D1oH5pT0V| z59*>KTX-sapf6V@B^?lg4<9rvuKaLa;4$d^O&NNmh zEV2B?0}jfgcz8UU8=O)$Kgn;M~_Dr|NvPSjOBQyyEk=pQ`j~ zYR#>(%Y7rTnd<-EBB}2B`ofv8u8!>-`|^6_`EX(x;jQebt?$Y?^FFpB6kn&Ou>YH) zxzx?QmGBL*M0SHEICxmK|4uCYcVrJuMH}gYHCdB`FZI@*_2e%S+>AJJuIWnC}*&K%gk!Q;zQ*z!9v zzYuUC&n1w4)t!LZ7+zuoejlLgyM*WN4&5(lchMsLSC> z&Rs3qbJWF2JCzMthOU1;zHevsFiyz=8)Ac%|7rk4z=fYCwI|zTO;R7{Y$;nhu)F5nB~i_O&09srml5X0x;Cr6$4@ z)u`~Ofb`4{q?gH$*OP)<8)Ast_i_=7h^Ee2;LXzQ9)FYLh3>be_~rRg?|dsag@e9nmcCQ|;o39vm~wm$TKL>MwEQXjZsswQ6K~ded<1eo+++8) zJ+5A9@P*x4hd6>YCjYhndo!ITWPX3UKHVl{|G!K4VB7!wls)pT|9RwWeO$PDa9FSUzC|#F1lUaH-JLSN$A8BI;JTzQ z=$DyJ*X~)F{<~-#PF9}CGQ1o8|Ch5L7hmfv+dRJh@6wma+uE1;@ALoO(TQl(#i-Fnsav!*H;WbfEJCJrLv#0eN9iLx370)R3Tt3^f#} zp+fBm)X<=Y4z;IH!>9v!G2eTEg21Z@DjgG17fWV`q$iym_SY_cUD3{9LW{-GR9vgy zqwdJVgX`wh+^MMp*gPL0t^D{R|DxelbfJOW{)z%3KY%fX*3oRl`<|(ohx@?fvP5XJa*koj@wS6c%{8oQe1SA+WO91K7?5e`T3|-gc*H|Hh$sbo* z>d@~#gdWPijWlRL6PUO}P!3p#C7#N4%?bF$8tdOMgF+hneJ%!%F4$;MpvL5xp|e&> zhoFmFd@Lclm;@&K*MKKr{3oQR&$ja4l+W}_O1~KsLk`GHDL3cLnf$hgl|aNHgPD=8 z6)K@k2NO0Ml4V?q&99{^l3IRYJN`jkLbRd?JNxnO{5H#qT5z_Eaq;4Upv`q*)bx1u zbywe1wUM@=0v=9`CVu)XyvuK=|3KsV(9=TPfZt;_hB_^SteGYXbS~9+ZIi+i?bsO@ zxKxAp6t?`d)G>?-gRD=Cz5o6PYftnJjQGe3R#r5114D=}VKb~1`(`8)`N`Vyb7aya z&754Djk%01%RZ!qI{B+2d(PP%kB zH>u?A?=)X&;pB(XIe`hAxx=*kDg>$=@`t(;(F_EHCG|U#Rox6lRXPKvIyWCJMi_z^ zjRPRl99>@XGFh4~c4Zzx5`j|q3K=LaK0l)nf}y(ey7Mo$g4VmU5XpZ{0|BWAh}Sdm z7eUln!88Q&MOz{&9$_3XeVGd@TiG1968!E!D~OcTT`?psMi`-%r(XQ=W-Fr;_^KOlmC>O`Vlb=~_8EyRAE?_soLfdnsUeI=;23n?jA z9I>Kd{E?vexlj2P!l#M=gmie}UG57tTt#93DEk3nJYk~eT(;eq>V5lY_Lm@cBw%@Yj}@jkIK6zzONRds+U3gh)6 zp(<7hv`VMt6|Iv%nc2ntk@~5*I_}i^D}V;0xdP1<$HTPUXh`1od%s4Ghn0UEQa}KR zgt>3B0AiAI82m4ptPF^c^D}Mq6D9&8(C%CZ6d-hGoKc990D#>m6$)BR;FfEUoESj+ z9xQ`53jl<7D;)qUOkd~1)mAq9q>(v!K7ja_rjxA7=P~jkTW*8N&x<#&#|L4+v@9Hq z6CPGWXvP5AiEaCdBh62d+Luw_2fV-&?&MEjlI3^kh@a3_U*#<4rS9e9E9A+re8&R- zYhEjKcqB||RU0oKf%vy75CkCCx1_lLwD|r+`2KtZxiOv&K!<;B6)!_pL>5N!Wo1MX zh6$$&*}+5MSVX$?#!O{r?`S9IHbBLsYsu}PX_U87EIHG5Ord(eOM;9hkmwfZfX}lZ z|9loM7lotekLBYuYP_NJN_tJeIwre2C@9B@qi_8Q%2a=cK@tEkAi!Hm5CK!*lg4B3 zJ4!=DLO^km1bUXd)j$M*Cuh6g0!)GS6^aTN09d9EFAKpaW#DB$*niD#|sd=WLqhuM+_OiuU*UMgz7CJPrnU zptWx{z^b%-V8E##Mmr5G%t#b5o^t$cSyBFb8gbS&)w0s6tP#5qdg{^|zNY{s>_ZU% z!-a>sH^mgwn*!({92K~8PW+varXlR6h&-=al%qb4qfRvM6@*2J~kxw%zw0# zS>N2sipx=^5dHRdn&wj+BA|=$_jy-~JHqeR>GX#Uh{Zo$;dA>aK6dN;D24$qn1c;v zIlrJi>i`d%lX0-GB^l;_o0JvL-BkXj z1L&U}dG7X?7IqaoOA&xE_2%3zbC!6N&-q7vDqa-ElsWBKSzfmfLuiVqx5w!4ZuJRN z#c4p;va&R%;c2Bc0X46FSGL$jG-@Bp8#Dc5@UQiiGB7K>3k^38@M`$>r-2X?*}r=@ z&McFq%lV)T4EPNc-?u~rMZJc#qX4#l2+%2`*~?ZQ?H5oC>B+wrzFH9ieVze0(MNXo zmzyhe0PyN`I(L=`0Ll;kQu}V^S>OZ0NeG>psKhY8rV?o6Vp}353P0CKG1P%IJc;A_ zSw70=1z()M^|vJaKF{#_iGlWe4f#hLz-91i>_gTOm9B_n{YwrO$NFzJ>!z7TtQIwV z<8f2?PgE80;+%%GkjMkpVAWPl)5w`06MkRLC7NiLe^s?Gl&onrN;}ZxDr0s~n8f9L z5$;a#2%pd_1Q)(7WiXsQr zj>!*$kOkXO>dtEPl4-%e4^}7h=jNlVhb}FwCI_Oc%G6GJZ*%b8zWAIk;C%xFe7{?S zqg5YYyff^&C^gwbnnR&E^8|puz*twHiFx63IM9AQ*Pns_XnZR|ha~XH%g^YUDpG4> zI(25x+f|VQXTG5T?6m`Qd%1}9h{CCK;+1^>?s0DsEe`Oa)zeBO!&JFxk0||@3OxBi z10Y=9WNV_>MoNZWg%#FHemkl*ZwLrOPZu!}Q zF@e23jrWtcbp^Q48iJU{0Qc`{8o1GJl@KuimjWzT2+^Qd-~b{9ODwkHaBe7{Ng3*A zL~)oP$q%P8gP^RK-~q(66>*c|nX8uNXNP8L${M%r5ILZf#k1l$w4fm+F$U}P3+D#M zOt5@qk*eik&b3e88yo!92Y$c5yhQ}6i`rRel0SA(LKVFY5Di5}^?-IGq?pDZ*)J@3 z@^dlp=~)2bR(L0-!|Mo+uMQ&(``hqGVH65?2i)`%q>bN;ssKR2a8MkJ0Q|m1hh(B~ zK_(=?3;68$Z3+M+*8izD0LTY9w$`J70Q!wz!VYqhzJj?Z`1hq4&-H+@ZD)5q_5hcbqTE2sY5DX^>F}t z?gpEo|MQm+0LbrKu%SDc@WW9(7Yu-Y0sy{305txi8usJR!{1(C0AOxof^JjM0WO$6 zpPN&X#;5gh?NYzrO~mj&{#NwdJz1LLDGyZNcN}=T&)YY;8DRk2!Hrtg?p^|nzDZ1@*^THdoneZX{Au)fioQfkj@r|0>HmGlP@6wl$U8vs&ItD z*9&aW&H(_C-$?HgFRgV9c?%M1Xmz9nFa3;@5SHPgl|KoUTB6ks?m6NLut?p7Z#WB}kde$elAELr;!hZmIb3*?e5J3=b^Niy~Vg`103g8&!Nc;dV%nhBUyH;WR(AztA zpmPelPGV#7>5!e86Bt34tav@e??zLTyYWFDIuSXDgG&4s>IYcB-(+OqEfzhlQFOY$ z+5!xB4v3dSkZ5||PE{nV5kRP};feGck4BtXHp}@d+I(&8@-_;vSsbWcvypS)`Nc<` zXq!=AS}7>|FSNvgyaE4+tcwlb|zyk)?V2WyN55}}>un0Igp#~j1?>E#( z)pPJ#6ad6FjHF&?TyKtR>85z|e(T&TsgH!UMWfi_+`ZKwF29r??_`IS zi$=p#4_B_&dT)}QN8Yo(jTD)hqA3119KDD3{(Oii%!cox0pP5QvVx^aGC!>ZA=ojA zu-rz8QlAJwNCDf_6${(d%>hIJRihPrJ;$qi*^~(M3P9mBFPDK2fa=0`QBZA}k=TvN z!vMug2Bo`YW@Dq4v8SeLA*N8lszjrvy^H997DE)f$3W_`rcl~)FxIKn|vvHi0=x8Ayv@Fl<(!uE|VX#J~Hqz#!aOp1kOJ{?JocmHy3|Y zc^lLYW-IIC$6ff|t4`+hzJo!3Z6>Fwuo}O6i`eBtUzW39U!gX%y)}?{?p1a{e(oaV zkTTIwGJE#aSBBU_<>Psq_u(VR@^~Pi(8KT^&^76J7v|U6FmXYi8{QPMKh>d zV@TipJ>dhPUPNeNuOf$rPm3&KFB1|9ij6As(=1IaZ)36 z45xsTJ6|*)UV*)Vmqk9Ucv=JH-I-ucb@18oN|3T!O={ycTqi=kr0 z6T@VAr*%aHh62+jMrlW)Oc%kLoO|t$IP|m6ipKv@>Zd^Y8`52XF`3zu%&H5s6T+2)%;tNyZhY@3z z_>L~b77^9GUA(f*gbyXmHeT6@sQHxMVN-6ZZ6bUGO;LTK$ThN~U91fIc;3Gj?R{f) z#Yz{Ob>T)dcl1A?@-wr$QHjLQ_g|?|23p;y3#%Mrxx{^KX$2!+MMbQx8E>z8I*@Oe zIXWuQHlL&;=AQ36B5f3p=0!fq=9P1Nux3sP@n-9m-8D_OvOrw0lpqs`ms&jx zpduKV<-ix;US1&o>C_Vg%$Yvl9(Szwl4SnoTf1FnzIx`a7BzJi9YQZ%`8rY@XW=K-oM?wfV6hYA-nN@a|XZUmZ#uzlunTd65rv zMSoWMyUVUZkR8VK*uYQ&`|Ygx8E10{#mFe7P!@*(Y>Xi>G-B5Dd-%t^E+U}p&C>9;BUn5Bco0R}{l zW@XhMcrQS}M>1cd^rOR>If(p@eoEwyw?cO!zZOGu-1w{&;6NQiW|NWGMZ zl=QdXpL@>EIdh(wd*`{odMd6(pL%?uqMn{Gid5YkH&b!(y)TywDSCCOn4wv(d@kj; zDo@;BO{0PRFlgKR?Y%5m?RXE!nZdBe;0lk`NB8#d_bd31ZtvriqTr z>?+LY%0?H>c@KVwrSJZCz3-i~z;;!ArnF37wIFM4{azsMm>JojR+Z|cs_4Y1QM5Nl z2knH&fuJiu;i3{VRnSM+wq)CKYl@J!?OV0rrFT0Ewwtl|TkrH`-fYvmYk!HA1_VDcFNa6y3;YR|t#K{ezoE9Xl{?BX=! zwq&t6>37SYk|BBU&JAc`luPLdv@27Ia{NmfJ=YI=D{8rs&!l^C)HKf&YC7K6ttV|M z^Lj936e<(N5F3|aFyyMaLF`8C|8*J2%P8&r`k~D;)YVZpZ5~&Q$Jd(cx4}>}ot$a4 zw3&J-1uZ`I#eeO9U#KmnXfn^uww!mZ3qUS0XDvNQEt0n=C8f>rC&Gw_ z&RapE^`LJ+!SyRW&$oa3qq~;>c_qY)@4xY_4>`_QJADc4CqG~5HU`596q-7*=(C#)>jnrc@j3RjZ3+#Y6ErC^n5`uJY(wlBwOouZ@V(H{1z z->;6F%iAS;u1R~>;$$Q9D`z`%M7Us?=GOjg8xn@aa_XzTQtX=Fb-em2t1hHi|AjoH z;jOB6Id0-|v@|)YS7UaENbShwbBb}5|GnZ9tA%jRF`;87(U<@EHLFo}wAOH?;Bh@w z=RUgcGM#+K``PPf-G6^752N0~ZkDiPVET$Fwe*&TjO?;@Hwil#XG>&`!g{pjiIax; z02B#Y|1RhO6L}eoTWFZ=V)8x7N@G)kmtk33n~r4-8GLL@sK8wD7J-wjuxqwyXMI1O z9@DAxC+?OgXK$lYL$Y;@~W&og5D}lc6Fqg5l)!NF8~9)aiqC z-L0KybB;?&RPT|7I4emyEtv)+AK&BOJ$v~zitAq8vrBuwvXg?sMYq7aGPUN$lQ-eT zsWOt~2$|jsE&Y&;5I&zNG8D;d-7h{9F*;FNT_<$L4}tzj4x`=*H}j28N;yRY()2DJpj15Vj5B~5Ad7Q{bx7i zH`JG}kB}i|&I$|K-p>fJAp{MRP)_G^ztN2gUQjVY(U)nK_@-k6KNM7ai~xz}vT&$O z3R)+p90HxT@j^w%r2pu@v!2I5b`0rz$q}QdS$5YeID%X|-lzgaB-=8wK0)shzkkYq z(b#?|bZ&bh0SDxz_UPN2><0|@IORMoDEtY>CzPB~T&0@@EcZ7RL4_ZBWrpV$aO=Yf zwHEl)@Sp%W2Pru`^Dz@f3E)*-Whz>(6Z7-}{Uu;t-4hcmZZ}@riee;2A#p$1lhxXm z?!~)=kND)MAMYSQt8ZTk=4*}rtbnJW=GLZ4!E&W?Y(5@Ame2YLMm_@Z#8&1Gst*8g zDIMBTT(XkBT+uU+MKmcT>V5}0>}_#pZFk@?8eV2hFu<2rWPxlF(rIUfOdVFtBxT#rZA+om%wi)xzats^ISc@r}U4m{28d zW0&ai$THfWzoRU&n6u+Sb^tSf6B#|jEk6vFhVj!=8Gv7{XT#I^^AtFK6hWNzs7b=A zOhIkZrq5<;=*e)!^quq)xPJ)`f??>G9$yHKp$d(mkRB^$9Y*>Ofw4S!!V3OQK)w)h7m@Pz zm+l%ulzaya^zOVwp@-T8FBRK~2QRT%=po4VGm%su*gQo-3E%=OcJ^Lg(@jg!C>o(` znJ%_3uM7k#eiCb1KK$!a)=}m%=vw$I&_99r-Q)F%<41~-WaYb>RJTwQP8Cb z4;R_%)fprP{#qRt^2aEW0glZW15y!p#<@-=LV@NdKH{QasB?t``?$ZSao{ANH%$Zs z09RvMq;+q~2cWo3jQ8}Eo2$^M&Y$-XHj(iG^IvO+Ke427+)(rNN`KsOgTY{sDW1=7 z7!y2UY?kQ#y%>^3+x7`>fx`BamowOk$UM5)jv*ggIkj{|bvbngwWXKf+0sPO^&8y}d~ecq)TPA&S{cil9nFfu_-pqZGA=r!sJVWTmcnouNy7H^6neFQ zBMaBjF|cZW6MEf$_i2)p6}>-eRNEa$RZlBX27T6}O7s7yN&8<@vG>8{Ec@j+QV1hm zN0*m4ma6pNS> z`QeZXV?1||(`s7&5pM{5A{Hz_E;vHvZ2qI@d=iNsjCPY}r8Awd*5I^iuwe6AM`;uPk+W&ujiMb0*;a&Ns_|-1 z>SXr{pV&2ewYfNcAdt|RxEIZiiq^V1Kef`Z<9VU1BpCmF=s6W5gnXOShZRfr-Ig6i z$#gw=+HA9iQ`c2fUzsDX|LB7X0DvoHv45;j%8%>?8?+nJvtMI<@o~z6{CtOF1;zld zKvK7{Hn9#Kd2qFT_Qiil{_;;T`KoFodh3x9_+a~wy7z)Pc^xGK^|y9gLAW7_*68p~ z8CC`VFsF~44?=OraeVJP!Wm9%4z56YQ3WLUqrW>!V$^VgR_WGt^vrHHjIi^11NCgY zC9JPJL8xJ$$=l`=>j2FVRa~*pxSPiPEl-T|{4dm>+PatY`cg_Fg;sL@iMU;!{>mwJ zR_0DqfJk@UmGx12I!p%#yX`DzNndsmko;ch`*BXR?$3ef(MrZffv7^>GLqs9%)DSU z$DrIic;ReRl;O+xFU+ksKQ533F4Lq4&OJ5gAZ1>Sw;+9E`Rm11pU1S8Q*krq2<0C$ zC?`-4RtE4vfgIJyhnRw+h z80kTsitn4)JTQ`5Tzqz)wf(zwPBG^@kvp7&TaK+ReE$t?VwU&K@o(Ou0&z5C&&gVA zHe3U2cn<=tno5o?=u|7Irf+ZWfUE&8HcMdGSw8^^FuX*h8$Rk^@tOmO)!^LhPkIR>V_j*e|pPeCR_Iiul9BlY=QLgnXAC zwk#^`gMO{`X%ogl-d}zYC03YuZ_~RZ>-GI32lD+C9vlRQ8I~t#)l$QI{Ha-?H_>~} z=)pNIgqXLd-&(9elb0b-s*0D$N{@vN4LeC;%aIbj!C`U$ z8#ulscVMKIi?Tv#*ckdk_2=nDF_`2%+$zb+`9Ra(a9m;G0~^^8g*`rQUJRs} zvlSY^+h$}T@wG9}{YgqPZw|7+g&OjRlIcYOa0nJ?9arcmAz`o>Tf=f1SACzP(t|ZP zK2Kp=%QgVFX+!-ee6saY_@r1fMB7yUD`+=HqC3T&AkZO1hK_;DrJM49{NL9+PRI zs5%~;pG+*)zZ+KD>C$2*`h9`N=q_GRDdV(~Y6b!N2f=Zsptp_`jn6)9zDHKlL8~?o zuKs&XW%i0H0Iz4n7p$teOd8jEN;l@Nw)<+Q<+E8T%qSm&0eAo&ZUq0r274)=IIxtN zTQ*CxFIvi0{bS@xOM&-Zl6+eLACCy(d>@ul2HqMbc_Pp`#Ft0vhZt>50_kB>;SRqm zw(~+SB`05bEb$TrgioC0QX$g?vrPJVC{r*LVMml|Cqd4d`p>iGzKu0fbO~yKpk9({ z3v$k7X>w!|O#@(_bPD$Dh2#--|;S1~}&Qb{M|6hyv|5ninb{9Z*#U z^Fha(zP>g?<@}#?i}8gFET>2%)>`mdlkrzDg4s_&dqG%ziQ|a8mtPPaIleES_?U8q z@ZtboB@L9A!~hbE8*y-L>*~N%Fki2Jw9~oL!L%YhGNvNV>qk*eb$^h$;&h_HG0|&? ze-yl4q0JSLD5jt!TIE2yq6xwDC_7%xEQXo8D4q;`#a(T%qXHa4M)exjZLwp5ZW}-7 zl&yYm7sTyFEW`oH$AV?a(!)>=)$SroG+3{DocII^Lh~P|+|%}3z4}nj+pb{1Mjraa z?FC%KjtKQLvE68F{&G0?hAqF{Z6Q4v!Yj*rU!9%_C!ANbjr< z`?HMRh|+IO65wc{9`p<}zx44xY!TKk`SWR^e$UrjwAjN0GGKAW{0|_Y5?NVwCE!Ov zv>qHGTa`4K_Qd=|bcW8b{;PlZQ8^=q78Nlae0p(fad7QR+Rb2TYG7MSY`_aiIxVLF zeht85MCRoYEep#)v_Vu#SWeE_k)fyg1u5I%;79dJ*9B@I;5~`bma5>TP>dHjI__hZ zrfjur4?L;i2&8POt4V`U$TP89JzIQu6@<#JqPxW?)f0e?oKIC$p_vu2aFd2xAt)aJ zZ+Ob0Kk<~=Kn*|{22_Fp)Fhasw;NrtpQlr)%CDZlOOxK>p(~hhRpX2R5m92*IRmZu zwQiu&*$Jd+c|kb%yIu;*1}-OmlZaDy6p{xx0jooNj&F!V{FQ%L z3}wB=z?;(9ilCgl#&$s}R%oY(;CvU;$F;^c`s4&wATB_4XC?G>%9o7zPxEo2T>I(e z#()2nSLD_q1t;V%>m)A?@_WKx&!m^4BVypq25424)A2Lqt(prEo%^1oF5-uFG`4tl zk^8Zoqne;6WaiGzIJ+{S@x{HeRv9^>r#~CK7)WS!Pek4N;5maY2FPu-rX#ieLcY7d z8?>e+vCwq?8hifXU|QeU)Yoje7OJLxtE!a$*lL2Tk&B!tvfZ}K(q^;lHBR&d=yff) zvc5mZapxbzZP6J&LcZzZ`HQdaQcXozu0ck$=<6-PxL@pJsFw&)Pcim&z+nO{#qJbs zp~=o#&N40oRugB9S*f#Uk7oZ^~E(T_+D*reg= zNC7sJ4RkhJGG&C(#3A>g+f1)!Leh0lMc3@s>~Vv_j0AD;MawLq;NOiVSy|L$EY7;> zza62)OBtv%U}c2SaP4LN>h71RglH0*YJBa=Rl9=PhZ}=zo942NmVl=ImRIw8tKCTE zraN6F|GDal3|nV*ZU3{s!wETLse!;}kD~n9mk(Se!^+pf1^2*$`Ef*{D_zv^hUE*WO z&F_v?o0vTIlflF?+V=U`QERgK21r|XzVav=CROZk z{_Z=j)#JFx*ZTr=>czM-OOn!R6io`YWEDS!@`Q?aPbDsJ-4E8^^92xw`Btl{VbpV` zP?~}5y6f=!>nru^rpndbx!s-ZZ5z&bWhS~D_sIMw9PtJ`xsF0q$StN+Ico^GhI98=z34@{B`R2O%q1`n96bP&t>{gYv(~x($!8XM=+g zrDi{$z%8+V?1a@O!?Y~^tsr|^eE9%}rdER2q8;q~6^EkAgM&GiHaSgmKl*a4|D#o# z-En))xg+0wYHTFSXHRA~29{yRk%0MrtDwH*Ip=qxRgbx-3^4Hi9-gLvV<7a5w{?A??fd5=M-Wp2rhauZrAX&_Lm@JvuIo&|0xbUI zMw|3>Z*SmIG?lXF|2}ga`JFhXqbApZ%kZPwBTqjOgBl z!BG6?N~{iDOa=uUD}pN4Nqb$r^l?38{(R4=EFlBUED6-62;|ewM4pRMUiY;>*$${D zGdQoRH<`9Bvv!-}z04GITfY;#6V@D@aOdu%_}?2Yx_$Rs=?Zk(oZg9>AN-G?de8Ix z1&()xrB52f}XJ3N{Ri7u+YlUt#=cd@BP>8G4vii z1XLeza(le~vzchRk%=LtQPcDe64tpN{51&Tjt8QTy6D%lS0Q~_DAkEg%~1!NHAj+o zQ4YsGmGXMAS2qld|M$X$Xds>5j!KD8iWw(D2Z0~4_JVfn@Xbert13x$;6JB#!xfY^ z!|cn0o(FGS|Jwh@v9w4l_z@05?eD`KQ{%)B$PPG_Bl+TFga2E=wJR&3{$3rPlUj2iScvv0z9&z10m!b!+7${+2*9mHUu{otZ6Smnz)hX5IJ#DA$QH3}Ci6ok_I@AYeO|l-A1&3K>>R zr!2~0$k1^4AM>UV4uETXX`a| z@i370!ZBp9G}Ga~jv8SLkVd_q+1lYM2mN>wmznVCr4_553?kWU!vkwzGV#W5ug!k$ zq9|WFpvG0HfiReGlC4Np*+n7!y&Q^A(^800RzD^C2bCTzU%|T8U zRy`!<#)(eD+2imR%k2`MFha(|sldwuD}vbr&R{v_VJBHJr9!;&pGbflBqjR1kAx#Z zT1MMwmQqyS{1chHJ+&X>)V2z52xC0P*7f0#n``>dK75*9k4y}AMZ4{w1>LV{7L?_2 zbCZ2r=aD)Oj4Dq6oDp?p)m64+ z%SNPOj|n)Gkour}k*8=W5_J{4uWi63B^OGB|KsQrmYc%wBO8Px-UoZxOIFsevl{$S zdSM{9-TEG*9R8vyMoS*^$@#NdF{;lj34vlzfKoa*>AMOWe;ZjF=Mybf9w-pmrT4OS ziRNvP7XZLbodN7Tv@jS7@aXGxKL-(5+5&hOsBYLMIT(3LAp^D3O9fz*M6+ARzz1;b zCG~LSm5neDIVUJZWM`_=IwwKyg)}!Dr?rk)d3Z<4As7WA5kMav1a3xJ-Y8rI6Ek5r z2jT);=B-L_Vi5me*K;7ZIbnvpJSA21|n~0_h;YpaKAhU29H(SeuY{T>o#WJWn3Uhiikv&vu@2kf49N-Js>L zLb>aB3~0rf%f=%Y0|?OQk&0CCY}FIAE;Fm)!3KH-Aw({20AL<~#fE}l*Misq<^`Ob zt^%<>ejj5V0;S%H>bM1`YO$0^u@OCs_IAxzb5%D1AWn-W_Vrhuufjr)d*2b>0onlc0fJT!dDuVp>3~N)=yKif!X{dv z{2k}BvS4fLd8#_GIo2$S*)+prqmn`Vob`G3t9DI-*QfY-c8hJ!TmCyVdD5)yYvY(rej>J-aL<{m$1!H{BQMOj5mU?EI}S$v z7J{cLWA}d^T)2vIGX8`q76u+0)JxrJ@x8g507(FxnhpemAhm*ZFH95#!;hrD5m$^l z6D6-4U#F;7S5{fFEH~?iYs7RKw)dZ87mVHc=l;q`y%-n!VOQkX7QAhMH`_%p$v+m-hD{MxXsUPJ3-M7g0{_zTm~V-tv1i@j&X1 zd7`D!^WuQc<0i7m%61Z?seAsiq1wRUM68gHO_r2_`Nw)Qpflg)pJ3%`0aaoVZ@yB{ zY5kPJOT}ntl)EaHG@sWhK~n6Lg@@A%sC{!6!I`1Aqv5Sbwpa60yIM9~Wwne6@K5q! z0*wt*XLANkH7|}@O_cg>_3+JKtS);?b-$}z&9o@03XgeUnVWHcXcm*PIGlBP{-~8% zZSc_TU{Boaj zwXIh}S$zjHJDj#%4*p#80bi~veZ`;S7*ti@$u!|w0KEaV378+j?-Sqi9ah%cYUX`O zp+0g*BJ;60^K=-!tesjXA{C5j@3rJ_V;YgeFgS}Z;5jpWUGwNpbgCKV(w*a;8dwA?&K8h5Q%QD5u} z1HlYqh@?dj?PRiv4SYFY9sf`RF z)i)%G>5D(~y4^cFiK9P;4=X0$N%A9Eur;&|SLkMFXYHSSvnaOlAbSq)@x&&Nq}|4WO=)OytZKrgdF=1Q_t86RTrQ z$|4T7V*NMS(UvPq0I&iPo#Fw8ZwV8T)jXBkxb|c_x`W@%e4IN2k9@jCDxWI@m|2_6 zS+B(^daXF5CC|~uoV1?+Wve!oEL1s+D}lv_m$`9zpR~4gH$;sIM;?i3$M zzs7qd41~1&uTfVr#pCfNnzD;e-m$or zqymYJLY?d?fOZXI5KS4AoroH+iz-qKPVtCSjSR)slKDnN6v)XvXgTwm|EZ(`uO9ni zoYtcr@AsjxpB(3eb&8F_B+vdG~| z16Ee^)Sciy;VY~<`-jH2+&1vg3v`j}@xx;~EHml_DT)X!kE=lfz2LZ*skfyvcguFZeyAU<>2nm^Y;O6Q)Lzxs{fM3aOBXs4RgA!TL0 zvOD`x1>LycUZY$hFB{A6zfK+W;wSh*vKH$b2nv`G2+fFq%Oz&@3xk&y zmHbSmBJVo&pCO54c{pYNxzAXSe-Wg>;a8ri3qxQs$c~E-KB1CzY?E1S&&2U=g~XLD zyu+s%fhcwk)7_Y1ftocvMZRH62I6)vuD_J v7z;{&L| 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 z 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⩔Q{@i7CC`Q5E7ekhn<2xwX}a%v)YgkcO%WFJ15@R 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 z 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 C6OaMq=&Pp)r5i|i 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

  • oep>)1LoJQ&*>VQPBM-Utz_pEDJt%G`B#U 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 delta 1551 zcmZY73rtg27zgmv7Dh!Kx6ndc1xld;QWd=IK*7F%KBTRsEyXEFUFHDC9B$J&vP{Ah zaKjn)CDT0=ro_3JExKk_#c7T45hS`8%$Dek&doTdW6td1G|T>%88q%DzxLekJFk1r z*FX5TIQGRZvDWXh+e=jQnY}Wkv3r6VDP!y%=mEDY5Ny@=YNw4w6COlZ9Ahq9AmA?d z2GL}~2nvhkdtbjSk-ve64_YKvjq>pv@K6OBL5laT$-iOoD=CrEGABYk4xV^~OhG{fSkrvOC%y{zmf1W>@ z>LS~ek++sulbPO4QU(%Tjd2YVumn*t0g9)m$7Z&^Wb$B12)zeK3=(e&b_x_RYL-PFMiR!wJ ztAn>WK;UGh0EwYAa|>wn5$^ z=n-uCz$fk-g_TAaKakj<(Fk6X=+wAg5o?SpQ8I3j`~I=!SorPz%gy4LDn{s*cGS&9#Q()_MLo zM%%1D`MaNNi}o4goW0l6ww}J8laRJ__7yVOd}TvTH;y#kde*bCxp8ijlz%%Vyngun zI?Mh&Klj--DfQn~^<7-FkeitM?e1#Ui1i)R;GQGl2i8YEbl;7a@Y}Mf zDqzjc!*b;if>zi7yWkj%z$mD27ums&xK(Q!`H~`IL(|OHnp+z}MHH%WP^?BHVqI&` zNnrvc!bF$^li^870uE%53@IRwu05x)wsnPvr$RbpKqhD)3$&08IiQ1SkPCT`57VIl z^e_WvM#ICiV%+A~X~h#=o%ai&2xbEh1~9@?Pz)t72j)U4l)*eOff+1d1sjw@1yq6^ p9N+{O%!ev)g9p5@0DMpleh5GiY9Iu)(a!q|+v=j>o%NPK{{>V19}55g diff --git a/Assets/Audio/SFX.bank b/Assets/Audio/SFX.bank index d1c9cf588ede9eb7ccc7fbf0d292ec4259cc4185..acf5260a89bc80b0899082c08b91d9b561cc8585 100644 GIT binary patch delta 451428 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%0AZBDA@ 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 z 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∋P)t6P<*3KECSEwUtX9@%7$Vz)k>4~M@o9O2 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%0D3S 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

    j46k<$sXm3njb|^ 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 VDai7rqwoAf&5r28G^V$C@;|gfPGSH6 diff --git a/Assets/Materials/UI/UIMat_Black.shmat b/Assets/Materials/UI/UIMat_Black.shmat index 183b5f26..8451828f 100644 --- a/Assets/Materials/UI/UIMat_Black.shmat +++ b/Assets/Materials/UI/UIMat_Black.shmat @@ -1,6 +1,6 @@ - VertexShader: 46580970 FragmentShader: 50110174 - SubPass: UI + SubPass: UI Translucent Properties: data.color: {x: 0, y: 0, z: 0, w: 1} data.textureIndex: 0 diff --git a/Assets/Scenes/Level2.shade b/Assets/Scenes/Level2.shade index 0c3fc9cd..3989fa4a 100644 --- a/Assets/Scenes/Level2.shade +++ b/Assets/Scenes/Level2.shade @@ -78,12 +78,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -132,12 +129,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -186,12 +180,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -240,12 +231,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -294,12 +282,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -348,12 +333,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -402,12 +384,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -456,12 +435,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -514,12 +490,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -558,12 +531,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -602,12 +572,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -646,12 +613,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -690,12 +654,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -744,12 +705,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -798,12 +756,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -852,12 +807,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -906,12 +858,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -960,12 +909,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -1014,12 +960,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -1068,12 +1011,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -1122,12 +1062,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -1176,12 +1113,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -1230,12 +1164,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -1284,12 +1215,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -1338,12 +1266,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -1392,12 +1317,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -1446,12 +1368,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -1500,12 +1419,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -1554,12 +1470,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -1608,12 +1521,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -1662,12 +1572,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -1716,12 +1623,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -1774,12 +1678,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -1828,12 +1729,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -1882,12 +1780,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -1936,12 +1831,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -1990,12 +1882,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -2044,12 +1933,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -2098,12 +1984,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -2152,12 +2035,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: false Freeze Position X: false @@ -2210,12 +2090,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: true Sleeping Enabled: false Freeze Position X: false @@ -2264,12 +2141,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -2318,12 +2192,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -2372,12 +2243,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -2426,12 +2294,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -2480,12 +2345,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -2538,12 +2400,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -2592,12 +2451,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -2646,12 +2502,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -2700,12 +2553,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -2754,12 +2604,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -2808,12 +2655,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -2866,12 +2710,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -2910,12 +2751,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -2954,12 +2792,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -2998,12 +2833,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -3042,12 +2874,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -3100,12 +2929,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -3144,12 +2970,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -3188,12 +3011,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -3232,12 +3052,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -3276,12 +3093,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -3334,12 +3148,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -3378,12 +3189,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -3422,12 +3230,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -3466,12 +3271,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -3512,12 +3314,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: true Sleeping Enabled: true Freeze Position X: false @@ -3577,12 +3376,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: true Sleeping Enabled: true Freeze Position X: false @@ -3681,7 +3477,6 @@ Text: My name is Brandon. Font: 174412429 Color: {x: 1, y: 1, z: 1, w: 1} - Text Size: {x: 1, y: 1, z: 1} IsActive: true UI Component: Canvas ID: 199 @@ -3723,7 +3518,6 @@ Text: My name is Brandon. Font: 176667660 Color: {x: 1, y: 1, z: 1, w: 1} - Text Size: {x: 1, y: 1, z: 1} IsActive: true UI Component: Canvas ID: 199 @@ -3745,7 +3539,6 @@ Text: X2 Font: 174412429 Color: {x: 1, y: 1, z: 1, w: 1} - Text Size: {x: 1, y: 1, z: 1} IsActive: true UI Component: Canvas ID: 199 @@ -3800,12 +3593,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: false - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -3852,8 +3642,6 @@ delayTimer: 1 aimingLength: 1 throwItem: false - silhouettePlayer: 51000 - silhouetteBag: 51000 rayDistance: 0.75 rayHeight: 0.100000001 aimingFOV: 50 @@ -3986,12 +3774,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -4034,12 +3819,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -4078,12 +3860,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -4122,12 +3901,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -4166,12 +3942,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -4210,12 +3983,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -4258,12 +4028,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -4302,12 +4069,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -4346,12 +4110,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -4390,12 +4151,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -4434,12 +4192,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -4482,12 +4237,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -4526,12 +4278,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -4570,12 +4319,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -4614,12 +4360,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -4658,12 +4401,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -4706,12 +4446,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -4750,12 +4487,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -4794,12 +4528,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -4838,12 +4569,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -4882,12 +4610,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -4930,12 +4655,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -4974,12 +4696,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -5018,12 +4737,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -5062,12 +4778,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -5106,12 +4819,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -5154,12 +4864,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -5198,12 +4905,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -5242,12 +4946,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -5286,12 +4987,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -5330,12 +5028,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -5378,12 +5073,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -5422,12 +5114,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -5466,12 +5155,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -5510,12 +5196,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -5554,12 +5237,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -5602,12 +5282,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -5646,12 +5323,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -5690,12 +5364,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -5734,12 +5405,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -5778,12 +5446,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -5826,12 +5491,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -5870,12 +5532,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -5914,12 +5573,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -5958,12 +5614,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -6002,12 +5655,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -6050,12 +5700,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -6094,12 +5741,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -6138,12 +5782,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -6182,12 +5823,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -6309,12 +5947,9 @@ IsActive: true RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: true Sleeping Enabled: true Freeze Position X: false @@ -6364,12 +5999,9 @@ IsActive: false RigidBody Component: Type: Dynamic - Auto Mass: false - Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true - Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -6551,7 +6183,6 @@ Text: Game Pause Font: 176667660 Color: {x: 1, y: 1, z: 1, w: 1} - Text Size: {x: 1, y: 1, z: 1} IsActive: false UI Component: Canvas ID: 10 diff --git a/Assets/Scenes/PhysicsTest.shade b/Assets/Scenes/PhysicsTest.shade index 20903809..442ff096 100644 --- a/Assets/Scenes/PhysicsTest.shade +++ b/Assets/Scenes/PhysicsTest.shade @@ -10,9 +10,12 @@ IsActive: true RigidBody Component: Type: Dynamic + Auto Mass: false + Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true + Gravity Scale: 1 Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -75,10 +78,10 @@ Yaw: 0 Roll: 0 Width: 1920 - Height: 1080 Near: 0.00999999978 Far: 10000 Perspective: true + FOV: 90 IsActive: true Scripts: ~ - EID: 65539 @@ -185,9 +188,12 @@ IsActive: true RigidBody Component: Type: Dynamic + Auto Mass: false + Mass: 1 Drag: 0.00999999978 Angular Drag: 0.100000001 Use Gravity: true + Gravity Scale: 1 Interpolate: true Sleeping Enabled: true Freeze Position X: false diff --git a/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafChase.cs b/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafChase.cs index 2a3647b3..d82d399a 100644 --- a/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafChase.cs +++ b/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafChase.cs @@ -1,4 +1,4 @@ -/********************************************************************* +/********************************************************************* * \file LeafChase.cs * \author Ryan Wang Nian Jing * \brief Leaf node implementation for AI chasing the player @@ -113,7 +113,8 @@ public partial class LeafChase : BehaviourTreeNode if (GetNodeData("isAlert") != null && (bool)GetNodeData("isAlert") == true) { //AudioHandler.audioClipHandlers["BGMAdpative"].SetParameter("Detected", 0.0f); - Audio.SetParameter("Detected", 0.0f); + //Audio.SetParameter("Detected", 0.0f); + Audio.SetParameterWithLabel("PlayerDetection", "Undetected"); AudioHandler.audioClipHandlers["SFXHumming"].Play(); } SetNodeData("isAlert", false); diff --git a/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafPatrol.cs b/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafPatrol.cs index ba061972..14c95fc6 100644 --- a/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafPatrol.cs +++ b/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafPatrol.cs @@ -1,4 +1,4 @@ -/********************************************************************* +/********************************************************************* * \file LeafPatrol.cs * \author Ryan Wang Nian Jing * \brief Leaf node implementation for patrolling AI @@ -245,7 +245,8 @@ public partial class LeafPatrol : BehaviourTreeNode AudioHandler.audioClipHandlers["SFXHumming"].Play(); //AudioHandler.audioClipHandlers["BGMUnalert"].Play(); //AudioHandler.audioClipHandlers["BGMAdaptive"].SetParameter("Detected", 0.0f); - Audio.SetParameter("Detected", 0.0f); + //Audio.SetParameter("Detected", 0.0f); + Audio.SetParameterWithLabel("PlayerDetection", "Undetected"); } SetNodeData("isAlert", false); } diff --git a/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafSearch.cs b/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafSearch.cs index b2760e4a..6a69cbc4 100644 --- a/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafSearch.cs +++ b/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafSearch.cs @@ -1,4 +1,4 @@ -/********************************************************************* +/********************************************************************* * \file LeafSearch.cs * \author Ryan Wang Nian Jing * \brief Leaf node implementation for AI searching for player @@ -26,6 +26,7 @@ public partial class LeafSearch : BehaviourTreeNode private Vector3 eyeOffset; private float sightDistance; private GameObject? player; //To be searched for and marked + private bool screamOnce; } //FUNCTIONS HERE @@ -67,7 +68,8 @@ public partial class LeafSearch : BehaviourTreeNode if (GetNodeData("isAlert") != null && (bool)GetNodeData("isAlert") == true) { //AudioHandler.audioClipHandlers["BGMAdaptive"].SetParameter("Detected", 0.0f); - Audio.SetParameter("Detected", 0.0f); + //Audio.SetParameter("Detected", 0.0f); + Audio.SetParameterWithLabel("PlayerDetection", "Undetected"); AudioHandler.audioClipHandlers["SFXHumming"].Play(); reevaluateWaypoint(); } @@ -97,6 +99,7 @@ public partial class LeafSearch : BehaviourTreeNode //Search for player player = GameObject.Find("Player"); + screamOnce = false; //Automatically fail if no player is found if (player == null) @@ -188,31 +191,41 @@ public partial class LeafSearch : BehaviourTreeNode if (GetNodeData("isAlert") == null) { SetNodeData("isAlert", true); + screamOnce = true; //Audio.StopAllSounds(); - AudioHandler.audioClipHandlers["SFXDetectAh"].Play(); + //AudioHandler.audioClipHandlers["SFXDetectAh"].Play(); AudioHandler.audioClipHandlers["SFXDetectSting"].Play(); //AudioHandler.audioClipHandlers["BGMAlert"].Play(); AudioHandler.audioClipHandlers["SFXHumming"].Stop(false); //AudioHandler.audioClipHandlers["BGMUnalert"].Stop(true); //AudioHandler.audioClipHandlers["BGMAdaptive"].SetParameter("Detected", 1.0f); - Audio.SetParameter("Detected", 1.0f); + //Audio.SetParameter("Detected", 1.0f); + Audio.SetParameterWithLabel("PlayerDetection", "Detected"); } else { if (GetNodeData("isAlert") != null && (bool)GetNodeData("isAlert") == false) { //Audio.StopAllSounds(); - AudioHandler.audioClipHandlers["SFXDetectAh"].Play(); + screamOnce = true; + //AudioHandler.audioClipHandlers["SFXDetectAh"].Play(); AudioHandler.audioClipHandlers["SFXDetectSting"].Play(); //AudioHandler.audioClipHandlers["BGMAlert"].Play(); AudioHandler.audioClipHandlers["SFXHumming"].Stop(false); //AudioHandler.audioClipHandlers["BGMUnalert"].Stop(true); //AudioHandler.audioClipHandlers["BGMAdaptive"].SetParameter("Detected", 1.0f); - Audio.SetParameter("Detected", 1.0f); + //Audio.SetParameter("Detected", 1.0f); + Audio.SetParameterWithLabel("PlayerDetection", "Detected"); } SetNodeData("isAlert", true); } + if (screamOnce) + { + screamOnce = false; + AudioHandler.audioClipHandlers["SFXDetectAh"].Play(); + } + status = BehaviourTreeNodeStatus.SUCCESS; onExit(BehaviourTreeNodeStatus.SUCCESS); return status; diff --git a/Assets/Scripts/Gameplay/SC_GameManager.cs b/Assets/Scripts/Gameplay/SC_GameManager.cs index ee974787..d1cb8685 100644 --- a/Assets/Scripts/Gameplay/SC_GameManager.cs +++ b/Assets/Scripts/Gameplay/SC_GameManager.cs @@ -83,10 +83,10 @@ public class GameManager : Script protected override void start() { - AudioHandler.audioClipHandlers["BGMAdaptive"] = Audio.CreateAudioClip("event:/Music/bgm_adaptive"); + AudioHandler.audioClipHandlers["BGMAdaptive"] = Audio.CreateAudioClip("event:/Music/bgm_adaptive_new"); AudioHandler.audioClipHandlers["BGMAdaptive"].Play(); - Audio.SetParameter("Detected", 0.0f); + Audio.SetParameterWithLabel("PlayerDetection", "Undetected"); AudioHandler.audioClipHandlers["KitchenAmbience"] = Audio.CreateAudioClip("event:/Ambience/roomtone_kitchen"); AudioHandler.audioClipHandlers["KitchenAmbience"].Play(); @@ -95,18 +95,24 @@ public class GameManager : Script AudioHandler.audioClipHandlers["SFXHumming"].SetVolume(0.15f); AudioHandler.audioClipHandlers["SFXHumming"].Play(); - SceneFadeInOut.Instance.CallFadeOut(); + if (SceneFadeInOut.Instance != null) + SceneFadeInOut.Instance.CallFadeOut(); + Application.IsCursorVisible = false; } protected override void update() { if (GamePause || !stealFoodPopUpDone) { + Input.SetMouseCentering(false); + //Application.IsCursorVisible = true; return; } if (currGameState == GameState.START) { + Input.SetMouseCentering(true); + timer -= Time.DeltaTimeF; if(scoreText) scoreText.GetComponent().Text = $"{Score}"; @@ -138,7 +144,8 @@ public class GameManager : Script AudioHandler.StopAllSounds(false); AudioHandler.audioClipHandlers["BGMWin"].Play(); goingToWin = true; - SceneFadeInOut.Instance.CallFadeIn(); + if (SceneFadeInOut.Instance != null) + SceneFadeInOut.Instance.CallFadeIn(); } else if(!goingToWin && (timer < 0 || Input.GetKeyDown(Input.KeyCode.F2))) { @@ -146,12 +153,27 @@ public class GameManager : Script AudioHandler.StopAllSounds(false); AudioHandler.audioClipHandlers["BGMLose"].Play(); goingToLose = true; - SceneFadeInOut.Instance.CallFadeIn(); + if (SceneFadeInOut.Instance != null) + SceneFadeInOut.Instance.CallFadeIn(); } } //Handling transitions - if (SceneFadeInOut.Instance.FadeInFinished()) + if (SceneFadeInOut.Instance != null) + { + if (SceneFadeInOut.Instance.FadeInFinished()) + { + if (goingToWin) + { + SceneManager.ChangeScene(winScene); + } + if (goingToLose) + { + SceneManager.ChangeScene(loseScene); + } + } + } + else { if (goingToWin) { diff --git a/Assets/Scripts/Tests/PhysicsTestObj.cs b/Assets/Scripts/Tests/PhysicsTestObj.cs index e9c5c310..f4c6415e 100644 --- a/Assets/Scripts/Tests/PhysicsTestObj.cs +++ b/Assets/Scripts/Tests/PhysicsTestObj.cs @@ -1,4 +1,4 @@ -using SHADE; +using SHADE; using System; using System.Collections.Generic; using static Item; @@ -65,37 +65,8 @@ public class PhysicsTestObj : Script }; public float forceAmount = 50.0f; - public float torqueAmount = 25.0f; + public float torqueAmount = 500.0f; - protected override void onTriggerEnter(CollisionInfo info) - { - Debug.Log("Trigger Enter"); - } - - protected override void onTriggerStay(CollisionInfo info) - { - Debug.Log("Trigger Stay"); - } - - protected override void onTriggerExit(CollisionInfo info) - { - Debug.Log("Trigger Exit"); - } - - protected override void onCollisionEnter(CollisionInfo info) - { - Debug.Log("Collision Enter"); - } - - protected override void onCollisionStay(CollisionInfo info) - { - Debug.Log("Collision Stay"); - } - - protected override void onCollisionExit(CollisionInfo info) - { - Debug.Log("Collision Exit"); - } protected override void awake() { tf = GetComponent(); diff --git a/Assets/Scripts/UI/SC_ChangeSceneButton.cs b/Assets/Scripts/UI/SC_ChangeSceneButton.cs index 6a51716b..c1ab681b 100644 --- a/Assets/Scripts/UI/SC_ChangeSceneButton.cs +++ b/Assets/Scripts/UI/SC_ChangeSceneButton.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Reflection.Metadata.Ecma335; using SHADE; using SHADE_Scripting.UI; @@ -22,22 +22,19 @@ public class ChangeSceneButton : Script { ui.OnRelease.RegisterAction(() => { - if (sceneID != 0) { - Audio.PlaySFXOnce2D("event:/UI/success"); - - Audio.StopAllSounds(); - + Audio.PlaySFXOnce2D("event:/UI/success"); + Audio.StopAllSounds(); + if (SceneFadeInOut.Instance != null) SceneFadeInOut.Instance.CallFadeIn(); - clickedFlag = true; + clickedFlag = true; } }); } else { Debug.LogError("Failed to register button action for ChangeSceneButton."); - } } protected override void update() diff --git a/Assets/Scripts/UI/SC_EndScene.cs b/Assets/Scripts/UI/SC_EndScene.cs index 2117b24a..9e8de4c5 100644 --- a/Assets/Scripts/UI/SC_EndScene.cs +++ b/Assets/Scripts/UI/SC_EndScene.cs @@ -1,6 +1,7 @@ -using System; +using System; using SHADE; using SHADE_Scripting.Audio; +using SHADE_Scripting.UI; public class EndScene : Script { @@ -12,6 +13,15 @@ public class EndScene : Script AudioHandler.audioClipHandlers["SFXMouseDownElement"] = Audio.CreateAudioClip("event:/UI/mouse_down_element"); AudioHandler.audioClipHandlers["SFXUISuccess"] = Audio.CreateAudioClip("event:/UI/success"); } + + protected override void start() + { + Input.SetMouseCentering(false); + Debug.Log("EndScene::Start():"); + Application.IsCursorVisible = true; + SceneFadeInOut.Instance.CallFadeOut(); + } + protected override void update() { if (Input.GetKeyDown(Input.KeyCode.R)) diff --git a/Assets/Scripts/UI/SC_MainMenu.cs b/Assets/Scripts/UI/SC_MainMenu.cs index 59b6594e..0e1aa957 100644 --- a/Assets/Scripts/UI/SC_MainMenu.cs +++ b/Assets/Scripts/UI/SC_MainMenu.cs @@ -1,6 +1,7 @@ -using System; +using System; using SHADE; using SHADE_Scripting.Audio; +using SHADE_Scripting.UI; public class MainMenu : Script { @@ -23,6 +24,9 @@ public class MainMenu : Script protected override void start() { + Input.SetMouseCentering(false); + Application.IsCursorVisible = true; + SceneFadeInOut.Instance.CallFadeOut(); } protected override void update() { diff --git a/Assets/Scripts/UI/SC_PauseMenu.cs b/Assets/Scripts/UI/SC_PauseMenu.cs index 8e9ec42c..822c416c 100644 --- a/Assets/Scripts/UI/SC_PauseMenu.cs +++ b/Assets/Scripts/UI/SC_PauseMenu.cs @@ -13,7 +13,8 @@ public class PauseMenu : Script protected override void awake() { - GameManager.Instance.GamePause = false; + if (GameManager.Instance != null) + GameManager.Instance.GamePause = false; if (canvas) { @@ -41,6 +42,8 @@ public class PauseMenu : Script if (GameManager.Instance.GamePause) { GameManager.Instance.GamePause = false; + Input.SetMouseCentering(true); + Application.IsCursorVisible = false; AudioHandler.PauseAllSounds(false); if (gamePauseText) gamePauseText.Enabled = false; @@ -91,6 +94,8 @@ public class PauseMenu : Script if (Input.GetKeyDown(Input.KeyCode.Escape) && !GameManager.Instance.GamePause && GameManager.Instance.stealFoodPopUpDone) { GameManager.Instance.GamePause = true; + Input.SetMouseCentering(false); + Application.IsCursorVisible = true; AudioHandler.PauseAllSounds(true); if (gamePauseText) gamePauseText.Enabled = true; diff --git a/Assets/Scripts/UI/SC_SceneFadeInOut.cs b/Assets/Scripts/UI/SC_SceneFadeInOut.cs index f4469591..81710f2d 100644 --- a/Assets/Scripts/UI/SC_SceneFadeInOut.cs +++ b/Assets/Scripts/UI/SC_SceneFadeInOut.cs @@ -43,7 +43,6 @@ namespace SHADE_Scripting.UI protected override void start() { - } protected override void update() @@ -56,7 +55,6 @@ namespace SHADE_Scripting.UI if (fadeInTime == 0.0f) { alphaValue = 1.0f; - } else { @@ -64,7 +62,8 @@ namespace SHADE_Scripting.UI } if (alphaValue >= 1.0f) { - alphaValue = 1.0f; + alphaValue = 1.0f; + //GameObject.Parent.SetActive(false); } } @@ -82,8 +81,10 @@ namespace SHADE_Scripting.UI } if (alphaValue <= 0.0f) { - alphaValue = 0.0f; - GameObject.Parent.SetActive(false); + alphaValue = 0.0f; + //This line is to be added so that (because the fade in and out item is usually the front-most UI element) + //the fade in and out UI element does not block functionality of other UI elements + GameObject.Parent.SetActive(false); } } diff --git a/SHADE_Engine/src/AudioSystem/SHAudioSystem.cpp b/SHADE_Engine/src/AudioSystem/SHAudioSystem.cpp index e02eac50..60b709c2 100644 --- a/SHADE_Engine/src/AudioSystem/SHAudioSystem.cpp +++ b/SHADE_Engine/src/AudioSystem/SHAudioSystem.cpp @@ -656,6 +656,15 @@ namespace SHADE } } + void SHAudioSystem::SetParameterWithLabel(const char* path, const char* label) + { + result = fmodStudioSystem->setParameterByNameWithLabel(path, label); + if (result != FMOD_OK) + { + ErrorCheck(); + } + } + void AudioClip::Play() { if(!instance) @@ -734,12 +743,16 @@ namespace SHADE } } - //void AudioClip::SetParameterLabel(const char* paramName, const char* label) - //{ - // if (!instance) - // return; - // instance->setParameterByNameWithLabel(paramName, label); - //} + void AudioClip::SetParameterWithLabel(const char* paramName, const char* label) + { + if (!instance) + return; + FMOD_RESULT result = instance->setParameterByNameWithLabel(paramName, label); + if (result != FMOD_OK) + { + SHLOG_ERROR("Audio system error: {}", FMOD_ErrorString(result)) + } + } float AudioClip::GetParameterValue(const char* paramName) { diff --git a/SHADE_Engine/src/AudioSystem/SHAudioSystem.h b/SHADE_Engine/src/AudioSystem/SHAudioSystem.h index 68942a8e..99ff7953 100644 --- a/SHADE_Engine/src/AudioSystem/SHAudioSystem.h +++ b/SHADE_Engine/src/AudioSystem/SHAudioSystem.h @@ -33,7 +33,7 @@ namespace SHADE void SetPause(bool pause); bool IsPaused(); void SetParameter(const char* paramName, float value); - //void SetParameterLabel(const char* paramName, const char* label); + void SetParameterWithLabel(const char* paramName, const char* label); float GetParameterValue(const char* paramName); float GetVolume(); void SetVolume(float volume); @@ -94,6 +94,7 @@ namespace SHADE float GetParameterValue(const char* path); void SetParameter(const char* path, float value); + void SetParameterWithLabel(const char* path, const char* label); private: FMOD::Studio::System* fmodStudioSystem; diff --git a/SHADE_Engine/src/Editor/EditorWindow/AssetBrowser/SHAssetBrowser.cpp b/SHADE_Engine/src/Editor/EditorWindow/AssetBrowser/SHAssetBrowser.cpp index a0aaf0fa..a6e506b5 100644 --- a/SHADE_Engine/src/Editor/EditorWindow/AssetBrowser/SHAssetBrowser.cpp +++ b/SHADE_Engine/src/Editor/EditorWindow/AssetBrowser/SHAssetBrowser.cpp @@ -376,7 +376,9 @@ namespace SHADE { if(editor->LoadScene(asset->id)) { +#ifdef SHEDITOR editor->editorConfig->workingSceneID = asset->id; +#endif } } break; diff --git a/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorComponentView.hpp b/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorComponentView.hpp index f6a78bc5..fbc93efd 100644 --- a/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorComponentView.hpp +++ b/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorComponentView.hpp @@ -787,4 +787,4 @@ namespace SHADE ImGui::PopID(); } -} +} \ No newline at end of file diff --git a/SHADE_Engine/src/Editor/SHEditor.cpp b/SHADE_Engine/src/Editor/SHEditor.cpp index 346bfbed..6d71f98d 100644 --- a/SHADE_Engine/src/Editor/SHEditor.cpp +++ b/SHADE_Engine/src/Editor/SHEditor.cpp @@ -592,8 +592,10 @@ namespace SHADE { //Load the scene sceneToLoad = 0; +#ifdef SHEDITOR editorConfig->workingSceneID = assetID; SHConfigurationManager::SaveEditorConfig(); +#endif SHSceneManager::RestartScene(assetID); return true; } diff --git a/SHADE_Engine/src/Graphics/Windowing/SHWindow.cpp b/SHADE_Engine/src/Graphics/Windowing/SHWindow.cpp index 078d9fc8..84df5f88 100644 --- a/SHADE_Engine/src/Graphics/Windowing/SHWindow.cpp +++ b/SHADE_Engine/src/Graphics/Windowing/SHWindow.cpp @@ -198,7 +198,8 @@ namespace SHADE void SHWindow::SetMouseVisible(bool show) { - ShowCursor(show); + while(GetMouseVisible() != show) + ShowCursor(show); } void SHWindow::SetMousePosition(int x, int y) diff --git a/SHADE_Engine/src/Math/SHRay.cpp b/SHADE_Engine/src/Math/SHRay.cpp index b4c66c09..c6268851 100644 --- a/SHADE_Engine/src/Math/SHRay.cpp +++ b/SHADE_Engine/src/Math/SHRay.cpp @@ -10,6 +10,8 @@ #include +#include + // Primary Header #include "SHRay.h" diff --git a/SHADE_Engine/src/Math/SHRay.h b/SHADE_Engine/src/Math/SHRay.h index 56599018..c4d8c9a5 100644 --- a/SHADE_Engine/src/Math/SHRay.h +++ b/SHADE_Engine/src/Math/SHRay.h @@ -13,8 +13,13 @@ // Project Headers #include "Vector/SHVec3.h" +/*-------------------------------------------------------------------------------------*/ +/* Forward Declarations */ +/*-------------------------------------------------------------------------------------*/ + namespace SHADE { + /*-----------------------------------------------------------------------------------*/ /* Type Definitions */ /*-----------------------------------------------------------------------------------*/ diff --git a/SHADE_Engine/src/Physics/Collision/Contacts/SHCollisionKey.h~HEAD b/SHADE_Engine/src/Physics/Collision/Contacts/SHCollisionKey.h~HEAD new file mode 100644 index 00000000..811f8375 --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/Contacts/SHCollisionKey.h~HEAD @@ -0,0 +1,117 @@ +/**************************************************************************************** + * \file SHCollisionID.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for Collision Information for Collision & Triggers. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +// Project Headers +#include "Physics/Interface/SHColliderComponent.h" +#include "Physics/Interface/SHRigidBodyComponent.h" + + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Forward Declarations */ + /*-----------------------------------------------------------------------------------*/ + + struct SHCollisionKeyHash; + + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + + /** + * @brief + * Encapsulates the information when two collision shapes intersect. + */ + class SH_API SHCollisionKey + { + private: + /*---------------------------------------------------------------------------------*/ + /* Friends */ + /*---------------------------------------------------------------------------------*/ + + friend struct SHCollisionKeyHash; + + public: + /*---------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*---------------------------------------------------------------------------------*/ + + SHCollisionKey () noexcept; + SHCollisionKey (const SHCollisionKey& rhs) noexcept; + SHCollisionKey (SHCollisionKey&& rhs) noexcept; + + ~SHCollisionKey () noexcept = default; + + /*---------------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*---------------------------------------------------------------------------------*/ + + SHCollisionKey& operator= (const SHCollisionKey& rhs) noexcept; + SHCollisionKey& operator= (SHCollisionKey&& rhs) noexcept; + + bool operator==(const SHCollisionKey& rhs) const; + + /*---------------------------------------------------------------------------------*/ + /* Getter Functions */ + /*---------------------------------------------------------------------------------*/ + + [[nodiscard]] EntityID GetEntityA () const noexcept; + [[nodiscard]] EntityID GetEntityB () const noexcept; + [[nodiscard]] uint32_t GetShapeIndexA () const noexcept; + [[nodiscard]] uint32_t GetShapeIndexB () const noexcept; + [[nodiscard]] const SHRigidBodyComponent* GetRigidBodyA () const noexcept; + [[nodiscard]] const SHRigidBodyComponent* GetRigidBodyB () const noexcept; + [[nodiscard]] const SHCollisionShape* GetCollisionShapeA () const noexcept; + [[nodiscard]] const SHCollisionShape* GetCollisionShapeB () const noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Setter Functions */ + /*---------------------------------------------------------------------------------*/ + + void SetEntityA (EntityID entityID) noexcept; + void SetEntityB (EntityID entityID) noexcept; + void SetCollisionShapeA (uint32_t shapeIndexA) noexcept; + void SetCollisionShapeB (uint32_t shapeIndexB) noexcept; + + private: + + static constexpr uint32_t ENTITY_A = 0; + static constexpr uint32_t SHAPE_INDEX_A = 1; + static constexpr uint32_t ENTITY_B = 2; + static constexpr uint32_t SHAPE_INDEX_B = 3; + + /*---------------------------------------------------------------------------------*/ + /* Data Members */ + /*---------------------------------------------------------------------------------*/ + + union + { + uint64_t value[2]; // EntityValue, ShapeIndexValue + uint32_t ids [4]; // EntityA, EntityB, ShapeIndexA, ShapeIndexB + }; + }; + + /** + * @brief + * Encapsulates a functor to hash a CollisionKey + */ + struct SHCollisionKeyHash + { + public: + /*---------------------------------------------------------------------------------*/ + /* Member Functions */ + /*---------------------------------------------------------------------------------*/ + + std::size_t operator()(const SHCollisionKey& id) const; + }; + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/Narrowphase/SHCollisionUtils.cpp~HEAD b/SHADE_Engine/src/Physics/Collision/Narrowphase/SHCollisionUtils.cpp~HEAD new file mode 100644 index 00000000..c4267ca8 --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/Narrowphase/SHCollisionUtils.cpp~HEAD @@ -0,0 +1,38 @@ +/**************************************************************************************** + * \file SHCollisionUtils.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for some objects to assist with collision detection + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "SHCollisionUtils.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Operator Overload Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHVec3 SHCollisionUtils::ShapeTransform::operator*(const SHVec3& rhs) const noexcept + { + return SHVec3::Rotate(rhs, orientation) + position; + } + + /*-----------------------------------------------------------------------------------*/ + /* Public Member Functions Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHCollisionUtils::ShapeTransform SHCollisionUtils::ShapeTransform::GetInverse() const noexcept + { + const SHQuaternion INV_ORIENTATION = SHQuaternion::Inverse(orientation); + return ShapeTransform { SHVec3::Rotate(-position, INV_ORIENTATION), INV_ORIENTATION }; + } + + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Interface/SHColliderComponent.cpp b/SHADE_Engine/src/Physics/Interface/SHColliderComponent.cpp index a36fb730..2924acf8 100644 --- a/SHADE_Engine/src/Physics/Interface/SHColliderComponent.cpp +++ b/SHADE_Engine/src/Physics/Interface/SHColliderComponent.cpp @@ -9,6 +9,7 @@ ****************************************************************************************/ #include +#include // Primary Header #include "SHColliderComponent.h" diff --git a/SHADE_Engine/src/Physics/Interface/SHColliderComponent.h b/SHADE_Engine/src/Physics/Interface/SHColliderComponent.h index 39552949..fb7ae0b0 100644 --- a/SHADE_Engine/src/Physics/Interface/SHColliderComponent.h +++ b/SHADE_Engine/src/Physics/Interface/SHColliderComponent.h @@ -10,6 +10,8 @@ #pragma once +#include + #include // Project Headers @@ -29,6 +31,7 @@ namespace SHADE /* Friends */ /*---------------------------------------------------------------------------------*/ + friend class SHCollisionShape; friend class SHPhysicsSystem; friend struct SHPhysicsObject; diff --git a/SHADE_Engine/src/Physics/Interface/SHRigidBodyComponent.h b/SHADE_Engine/src/Physics/Interface/SHRigidBodyComponent.h index 1173c1d5..cac515b0 100644 --- a/SHADE_Engine/src/Physics/Interface/SHRigidBodyComponent.h +++ b/SHADE_Engine/src/Physics/Interface/SHRigidBodyComponent.h @@ -17,6 +17,15 @@ #include "Math/Vector/SHVec3.h" #include "Physics/Dynamics/SHRigidBody.h" +/*-------------------------------------------------------------------------------------*/ +/* Forward Declarations */ +/*-------------------------------------------------------------------------------------*/ + +namespace reactphysics3d +{ + class RigidBody; +} + namespace SHADE { /*-----------------------------------------------------------------------------------*/ @@ -141,6 +150,22 @@ namespace SHADE void ClearForces () const noexcept; private: + /*---------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*---------------------------------------------------------------------------------*/ + + enum class Flags : uint8_t + { + GRAVITY = 0x1 + , SLEEPING = 0x2 + , LINEAR_X = 0x4 + , LINEAR_Y = 0x8 + , LINEAR_Z = 0x10 + , ANGULAR_X = 0x20 + , ANGULAR_Y = 0x40 + , ANGULAR_Z = 0x80 + }; + /*---------------------------------------------------------------------------------*/ /* Data Members */ /*---------------------------------------------------------------------------------*/ diff --git a/SHADE_Engine/src/Physics/System/SHPhysicsDebugDrawSystem.h b/SHADE_Engine/src/Physics/System/SHPhysicsDebugDrawSystem.h index 83f96377..211a7829 100644 --- a/SHADE_Engine/src/Physics/System/SHPhysicsDebugDrawSystem.h +++ b/SHADE_Engine/src/Physics/System/SHPhysicsDebugDrawSystem.h @@ -151,4 +151,4 @@ namespace SHADE }; -} // namespace SHADE +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/System/SHPhysicsSystem.h b/SHADE_Engine/src/Physics/System/SHPhysicsSystem.h index 712727ec..b4a6b62e 100644 --- a/SHADE_Engine/src/Physics/System/SHPhysicsSystem.h +++ b/SHADE_Engine/src/Physics/System/SHPhysicsSystem.h @@ -39,8 +39,12 @@ namespace SHADE /*---------------------------------------------------------------------------------*/ friend class SHPhysicsDebugDrawSystem; + friend class SHCollisionListener; + friend class SHRaycaster; public: + + /*---------------------------------------------------------------------------------*/ /* Constructors & Destructor */ /*---------------------------------------------------------------------------------*/ diff --git a/SHADE_Engine/src/Physics/System/SHPhysicsSystemInterface.h b/SHADE_Engine/src/Physics/System/SHPhysicsSystemInterface.h index 8a1f6be8..a9542352 100644 --- a/SHADE_Engine/src/Physics/System/SHPhysicsSystemInterface.h +++ b/SHADE_Engine/src/Physics/System/SHPhysicsSystemInterface.h @@ -17,7 +17,6 @@ of DigiPen Institute of Technology is prohibited. #include "Physics/Collision/SHCollisionSpace.h" #include "Physics/Collision/Contacts/SHCollisionEvents.h" - namespace SHADE { /*-----------------------------------------------------------------------------------*/ @@ -29,7 +28,6 @@ namespace SHADE struct SHPhysicsRaycastResult; struct SHCollisionSpace::RaycastInfo; - /*-----------------------------------------------------------------------------------*/ /* Type Definitions */ /*-----------------------------------------------------------------------------------*/ @@ -39,7 +37,49 @@ namespace SHADE ///

    wd668n`y++S0HHCM5TjiD?DL~-wffdZ!2fI?-Yt;I9x>|Y zq&_`vDs*)Ezrst-j(1}qz`4RXd64ug0v&R+L4ZPDKp>q-sPjgeW2g+dlN^jVAt9zl z@s`czycVp_|Ej;NQtD==#*K8r+G3wx1Lv?|Gc(G;jv?qVRp$ryyT)Itzq5F(Ek4 z+kmq5_T@xV3Fq8`^M|N|GcP)j+hZIqMQos)*8#R|)d(Fm?4MQj@j{KkWnq_1X@u5r znM{C!z^BgX+hf`^N$*0~5NOFrp|IyoPlQG_W_q-G3Z4@J>d*g!E+zK+1CU$Tv5N@+vQEn5&l{1u* zxO{BW0{+~}f6j&IvHL3WAQ^VaAl1g&`8o)Qp!ZI(>Evy;TigTV2#~e}28;}34 zg+OqBlIBIFRhnH8#VM){zXk)%dqljl-6W}y*SBQnc`W_j3p z4CXxaHJew_A@bbh+Z*l)So`YvIJ@noa({XOFAPlR09!RB?Rg!Z;t?}<#vF8)6`tD6 zP(4LwpX$GE(HFY9qR2K}H>=!JsPrVi{(q%tHD{Aq08I|Qx{Ab2++H@lv1Lp>6EamE zP(%zy(bLt?acBcOBuiM`Z{qo#>BZXfmA1C^TlNueyIPuwv^`%=0cx`zEGTZzEal*{ zlv%>)=jH#p?8HDr7^=S2szi3rw!4V@E->)Ezv-!KQy!d znpCJ>VB@5w(6=+4V;{=w`^BmKMUAUy4PH=~>_DgLTMky>4cnBFyUmqgiM0re|1Ua` zt;m<*bY8HBbJVMC1XKk8w~<4aL~I}cBj2BQk6HNhCpuL=HCNdT)ZpMO#Y&fgvPz^4 zK2-Jj&5rM#7q%ccR@vfAy*ycNGr?40auZ&QXJ~m;Jfdbc+J5HrbQxR~OLCq0i%xU= zZ+ay+va$f3Hk>(ZA$jgmHL7aO59>t*AQ1@3@Yix#YEr`UlL4`57v^`11yx&rW50-M zwyx_DFVz2q+LyEEnD)oAje>@)qH71|q~F}!x-_iW`ee8X_2U!|*W;SDBv)_kJ@C3= zG4HDb->9=fkdvy3loAC{4jtUqmpL{uATWHIcN)7FGBH*-ysi&n#>U_hy4h>RkPaUy z=>f8unqHBo_6Oo(@$Ke?Eu`c~*&3NKpLbs+01R;d)l)e(&F`#==YAE!Z+l z9>z6}u<7*tBP|j@xY9H>kPOfe3Y)Ao*JpD&eZ;t)NZmTAa74N);uu0bIdO(Ub*@CS zJ8mHlV@GK9ufsSjD2rdC7jPoNl`Zt7o}Q(8ro!H%{IkW$WGvyDPH@EK0qJ_v8~J2J z=2s<=V+2BuL;bOduh&a4lM_3Ic+!<4yP>^$fr-a+e1+=oXPEm6pNOXA*K7v$AhOZjYYFEk z!kHzD9CoOreLf!Y75~tcUdGoL)v?dB=UZ{U_)?DhXl%s>rYR-p8t|+>h@ZuMr>fXg z>f^|J`B{SSeQV~ox2^gjL5Q6bZ$DE{x7B>zxD^8hxF>)Wk!4tDtx98kRvagalxFS_ zDb!Kl)zfCdy>Dvg9YHnC9wDWIKCVTzI0uL@R~V*^HGpB9#_Hl^j3rK&z;*>iC?w+> zlWjABt@fqxmRlBg3mPP#oSKt_lj?L~cxFk4R)}^kM}ooCD_cCbubMqENZ;Y!FFdBv zU;CxL);L@6N{pgWt99TalL}z24U!YVzzAq*J$!+&7P&QRY5X3W+(d zo1hYM$eO_aeLP5#+e{9mSAI0Td?&t zc*;M!O3vUk6)b24k)%7=5WA4OwiM(2lw(i)WHPvCLb^0aCNE%I3a=jRPkQCzhue4w z152UpSQx$y8P#o|BQw)Q(S3iK>EPhfPglT5Ezg!3q|sh|;8c6}rP)J0W0w;Ccw0lX z(*ORw=7CvL*u`@~DKKsF#l;T~CX4b;xA?j-y3}dZCc)4RJt+2nmdmY6)e$e@`Swrj znzo!3H=RQ*AJ%eO)~?k!M%CvQ_4Hug_vYV!3SPXH1L5En*$~B)muJW$2jtKoro@sV z`DpT+!zC$$!pQRK65Hftu^D9r90kWp%Go-XAOU&vJRqtht!kmFklVJ$qd2}>C1oE@ z)xNRUDA|z-8E_!$O#dF65HWpH$q`0L#ZFG|_qo#L_-*aXgWP7`;bAW9*`u*v9;C2h|FCNTy@x@0?v>WD3+KPZZLMEA z?QA*Ch*bWvFL#56M=h%9!zxk}+fbnhy-hli#kVUpfi7M;R5q$R*Z|O z(-T{oyCp260WO$tX~IR|1`gDTE<+C64x*8NW+X((Kf@YDQ$l1pHKMnXeOhx!cl4{0 z?-$vIMd$FGsLK!~#I#ALpMHa<%x#)KM(uZk+aE%O$Yxwd==8|G3s&!A)jsa$Gyl>7 zR*+Gz<+;*p1JQ4G&ITM%BtN-8cw~67`kzF2ikdj%Lb2tC0nTv%LY@Cd{c8znPFaVU zWO-Z5X8r#WPrO*>@et%lk;ct+kc32wX9?>Wx?1LU^v$WRf?hv_zMjndd^B&S@8Se~ zqAlwvOprBYpS=~Odg|FlgDh_zIE1U2BVGdK5^KT7&jZl#C&S_;UL#U_64i&A**v#< zLH|7{QVcC^m{bw$k}cR*89CNjBG~zWe#Y8CuZr7xVDc$#zJHnPO4LdtX(fa-B>C)Y ztH7>A_qOjwXm@|Ei@1jDAJO^qyR#E*GmjsC`Gq^V*c)4KHzyUYxO}bdOwPfv_!2b?384 z8x8gd*MQDo&(|`LR`;4*>bphMwr}M%J}|=J5jZEi#ojB?)0+bRg#*)#Y?(vS|K-J z_vSR;uN3t!wAYBePde2%%{!Bi9V^t$6Cj$puJJBH{z<5l>#0Twv3|F#HJk%28}e9D z)vDu4LdmA5Nh7*SM})aO2N%dqEZm$Y2xhu#glS4op);90T*}rOk@;vV9WjKMlK2x7 zIce2PkggS;f?)WSZvG-!p#mhcWtnA*Pe?ab=NQ4vclmIs%yYn*5*G8^l_`e}(X^{Y zNHwp@0{9JTfO6o@4mZWdb~!NOQDb6$?{zzZQViqqpT;A}9OY3Te#}=;b%~v`SI`I1 zv09EM%;=>tyNUYBz1@-1(SJr8F^$S55{MJRp->$VAGFd+W*QwHS75)gQC$PsbY=~d z@^0kB8AJ*P;-%_Z^?Q2LJ)G2)WpUoDU8 zfpR5H{KRrdpMETZbydcjiO({7v(|F4CEtFU_nThs z&TpZ&y)NdDFj}D(WiH=(!Q^hc)BWnSQb92jbIm+v>X>DiQ z${X)SDf>T>`jMWY2j-Z%w-MmFhiJ)WMyV5H4mNUONLTC1)eKLBGmj#(RcFHu2TH@H z@#Qfs3GxNFnicQM3JE>hrg}0Kwq&aRH%8#PRqZ6B=sT?W1f;Lov~CEV8ji)6Sofga z!a2`_HXT2H8>-K>ELJSM(2?qHyEl1dvypBKIngkJKwA8)ItKY%RS_s5miks%2U)T% zBH^Fg82+1A+6VOG@a^gO1T_{fOvQq&I+)5Y%3&-*scjAX`~wevu2r|Dq8)>ufZJek zI$WlFXsE*+X4k_4r+qk&R1uSD4n7^jR2ilY^0kb(*BZJsHMOkTLdXDXQQ+ws{r%W0 zS|`IcB!LKHZD!i%idjzK{9(d)ATg`A&#RT5dik+3Uo)%$5#c!I`(@qr-SP$ZU*?$E zu@ITod}o;$%#{>q?-jIT!ei%Ve?R#1^DwLACvEzi=MJ7{9x=N}3ippZD*YazI`pSA zaPCe-uyr#vmJc-A1#{sHnzYj>Yj16_!avIUvh4^LHlp9Kp0 zLCO-J;i8{(1n3~sI5Jf;(Q!MfaCmt-c7vzb#F}o(9zhgfBM+Um+2JDM*a2!MwJ=~JuR^-aw+yd?dE`sKinEy zC<*dd)vXfef*E7V{MY@HiQ!sq)kdPKX3^0cucTpL7C!z7IG?Rf`BUta1ow;ibJs;9 zrn^`~Xc*4{il()VeYR_+1{j~=i4t;h@%yDP|5&5!ZbDb=QsY8>-g+!B1bP0?HJFBu zrgjhdHR+&Cl`J)~u=G77Ho4$ya12?X21m$>@2F5kV5?6<=q4@AgVmBTcq$66YkO_4 zwF^tv+7`m%6mlwrTEex$%lOkx3Hg4Wr`liEv&*aFN2bri_~RO~ z(S`3hLeB9l@bVA87JCVn2UH2N^XK<6r>myQz?Hmib<5iqCV7^3<;dO<@yiE8m&S|k z7ma#>H2RYCDlsih2_-FAtyv4KN!)me>MAyqUP@SOBh=bQMY>Ry$G(S`Qq!#&=TOI< z{QbHJlm9828f;^uf{ZLm5qmlL`H7>&-Oa!&rZ%q{@+^|bHrOJyGjYZFbC{&KV;6Jo zrFUEs60;0{9`>!;hXTA}F$MJxAnd5t{ z|2A_EI)c_>k`R%M*93p%{ElrQs1+s_mzWw`dW*`|knzt=rcFYsW#AguG13LEK>2f{ zZwyZ_-TXAEakR?sGcd|OmmiYMq%HVlx>8`Y!QN2qUOZoTV~U&tM3Z8zCX<|Kfl|v; zBd72$w{Zo$x^HFw^Fs~0jd6Z_rAvmett5$3M*5yqeqrZ{y;D=ylE61@=)~Rg0uY!7 znmXhfc=eg%rhLfhs6yN!efz}kRp#mMLacL&=WQs`%f#{;`=G1bQokZ(zvQwB`6LDp zzitag?`4&l8tv=d`IA`sQQLvzLGf*k(wJ^So~STRk>7t3yq+GlN%&DrdIWD;r?9w5 zFZ25A%HTi4xH_v@Al{&A5ui%l8exjC-o!V3dB-d^(NtFZ*|Ff!%C^e$`f0%E`;UcCDh=8Y zU_Zrrzqi3JjIBElW%R-%Ce`Nw-E(aGDW)7>@oZBdl5A-lmrR!pn9w+y6>R%|MG;24 z*-SRneMsJD!dushICLOrm1kq=B4bFj>~qA)3EQBNALfXzdV-80eB{Aej7Sq!*cgQ% z;$)Mcy7AO;!61X=udozGp0vr75$i6}q$tQSX02+Sap$Q~9;t1;G<)#j7VFEA1)CX- zNqZIus0;YMnrl)QtCMle;R2|}GaRn?JIIUk&gU6X&5!w3riN-j=fjUdZA|&w83%{Q z6N1Z7Ucu*7k=J;CCB4?_<6wnp999R*p+{{?Jvge`N1~@k#hgz_XDr2QC9|)G*fhd+ zALc<`K`Mnd7hT{Vp@<+XjnpJVO1=%Hx{5IWMUVCVtq5I}lW zx_}fFFrgEgbm`KiORtJ_L=@>&lq!OtqJoNo-+tb2=A3uVnc)Xn|JJOv?{$}}#A(m_ zb#jGJsS`%34C`iFeS4Ycg>7aU%I72PL^CX6!G8YFd2o06C6)wr3KRfMD!5%XH01yXX5b{$yF~na#5CI_j|Ga~H zvUB+7*D2Cy=MH7K@!ty%qsXIFI*l;wvQASjy?-|dY{6N`4ty4ppH-)8R&ti|N#v~} z(!*F%$fL1}XiR+MmAu_b-5<`J9*tEE`hqnYEE?3tSoJ75*&NNMj*nZud}gm(IPDV6 z_1MVxED}G@(!?H1g|lMxE$CqK?U~m~=ZX(g-W`#e5Ie}nb=B)HU8`~|GBlL)P)O#M zr9_zdy7?c%-mFW#oZOwzd*dea}$4?enYtxa6d z8TspH+EzZU#d-2jqy1j%aH76(=Y!f$psRfcH|E-pOVpP&%|-3Zzy0@X_$t%I zxGKx8(e1e6rIh7JfhFuiVx2Vsq9s+|!QZ^@l%!{XEVr&mU?p$f87J#IgG>_7wzh_@ zwx0dF)H&6}_^KVvDKRKafDp7&rOfJEdDGTVgdl+Xe3QsnK6_?4-fi|?fTSPd#Bcjj zZV=^8wC_td64v*;2L0AQQ%XC}1?xQK;y$mgi~JQKQ>=Qg-Zhno0&Y6FB6u4(V^afi zU1Qjowe4BsTiPJ{fqz?GrJBr zkKmdoMd=gYMl!j4!V`7!Wj&Jo3bN+*8Y!3ea&(HB;k|8VIs{t=L8HI~P zFp0%l4wa5=u=cyUQbFHHCczCv`M3xtclGZ3P3Vs_+|HUMA5Sq_YBFv&Z8UwZE#AYz zRm@!7s@J^j{GdpSl;{pkhDv$>^h*QxGAUQNK^%$lG;9DfpF(f_p(OZhzRh@w`#r9B zu@8~hhZD_sRwfu@^Y!|Wy1fKOc2_1|1{U5lKCL0Voew|%CITulU*##AZzQbp1=^>R z3UKGMpha`1KAPx0o#XqAdIlx7sqqR~)d>aHSwCN(I(rGD+|L8Q(Y)X$B|_-`vK1sY=J^^nHG z+k|E$DRIL|>d>-o<-l3iB3uJbLqSJ$PGF{|Q?Evp3e;4Tt$IY&h3j7z%Sh-dZpzOv z^u_}Q{dMf$8d*ePrja<0bp9**M<3tl?=`wiJW%5I{;dSF<0D>|n@14#yqNPH;Xlk% z&hBI$Yz6nM1zX(cO-`(xiM;(*P<&cC%|4!WNj*b$0Gqh4d2Om{dj|gkmLX0o@iu?+ z-Qvkgewif`DciiYj*R}=s?1uJvNmA@CnQFigrpG@B85KO z9w9Z6Pym0WP3>%ledU4X9U`WIIqUO|`@E$0&3p|Wz8Us_$D4!f`vfngtS_O|YqtY# z2mQfSSnRb4=ZcUt&{OEn6y~DpvJn|f-edf%e7vO8BZYG|4@I{Z1Co0Er4^Ks*Cwm- zaGFaSe}^GH9Tfj%qOS(a6P{hE*C}LMv>9KPrhR}p`PRf4U}NVkKvX!87O}niLdv!~ z5&Uw{3@C<>q0N$<7%6bLnqauT^aI_WZF6E^TMPE*=Pd|=+4?0>v8f#mG}nwkR>HcMAXhis)3+=(8Gp3K`+1C6Gdl^3VK$Lq`R{aw>$eh3^H7p;;D)^Dr$UaZlwtnLY z(a!8kym+DQVZVOL|1|pO=H%`R?q$eU=Y@+?1gE^$>*1&O!rsD(xX)$jm`^fqC4vu* zHncX8vD{h?E60 zsOCd{`s?$xZ(uDaHTY>*(6CY{-ztu4$6%%)!1Z)(orZM3T`arAtQNiIvd5Y?1+gq( zFc_17OY`R@Xnx3Dcx&ADPq|5F{1xrPnZOy78}s2YXY6%>Hx^PwAkS@M4Nu&oD5PaU zzh-bsN$lY7XPl)^>MYYp(Ob#@ZW>sL6)RPnxCY8kP%y&Dgl>>AnTr-L-E?6|F^)mY zGbY4MOVUx7X_cvi2sM3cQ^<6P{u`4Fvn!4LQQ>1t2Amf~{$PqOLu(jI>1RT0U@_{b zm>38nGKLz+D4|r>cbJvTf$O}0pg0hchy~)RCMhRxi(#@%s$fj{|S~2A2IRNd2s%nTv zL6sj*J}&d|mV&Ngs}*~BUNkjXs5~e|Dd=mngQj!mxseGt;g-sgG99G;3}F_t#2^7G z1{Xe#v=tF|+ywtqySl6Ta(9v4!!u{K6RiDb&{BPhw)hW|u9^wK zrU>S=C!5mP4(BhG4s4s#D%u{{eWIlEw8i)>Ly0V9mGzl-whzA;j8Kk!y!+*)9~V>V zAD!_jU>)qxSG4&QY~?mKt{5F_@q6om;wgfX_U$W1^ICqW%uKOcEnO4MU=v$?pq61t zylm6y0k$^5b&w`C&Xi^N#dHiAo2)>CQAfXf(%>8wY}e9P$u9oqaH>zBkGQd7%rxI2 zVEA~}^YoZQ*qfws?;*S11$(csJGb6#HI%1S?TMB94k63XX#kSwTf{fN@m{B?XvKDH zfBjWn+WpKUdgCVG+t=*~otJ*YgrP+-;$N=Dv!my!I~2XlRw^e8&ELLK7#uFW|EPEP z^%MTk+VU@o6M?Ljm!w`y)jK5)u2_e@L%DDq6#z*<@tAl*8IyyPU~m!g;n@ z2d^=&(b9~^9R}Gdbq?< zQ!NN>Tx>=h!a;^?o>ggFzR2_YXjfATj(7|G6{CV6l`uR6(D&>i8tN%zMM3WrNei>i zIpq;3sXn-CO*oE!js0Y=Rq^Yw?2FU1hig@#`sxr|Pl|1+nC2cXc*?55Bj8wczw%~T zNUz_iw4?Fd&GH9nIqk*ndb35HsKn6H+a3&V4<8r4i?IZ4*C;^jfBTOXSSi|`{B%CS zPW+h=1nz0LZJY9fNYCXdO-_@!J_%awiU0}au4|?~sW+HCkp965nPi@qX^}RnoJ@yW z@TYhFMJZ+(mQJ<6QV|F@It0@-U#;jAfY}<_?qmI?hd;bdr7G8$Ljc?s;LVn(O zPiy!TeXtIMvv4l{Eof(?$b9W#b9hgPrn*QXh}Ki#>g*Y@R;PtRD5hxbNLJpB;m3Pg z+PLL!goX#rgvn;gmPeZEjnx|zfiDtEAzaenFu9#Y>kWb9+U=jS4u0OCbbFLXx5!OT zqvwZ#pnbjOj~jy5<+~`E#Xf*{krzN3B$Ye2)@nxKWf#=7Mx9alXbFk9rD0~9C^Qqt z`#jmI$IilY@(V!& zAO_6bi-Pyf5N?Tbqb-k?4>f9p`a9k@Qp(V{71C}U*sB~||EJVaEA^+7IR@go!~Z_L zRB`Krrqo2w=decH@Z|38uIQTw`6+=0>cg@W02dL=gg(yi{kX8N-pKoFvdGNv@Mx-T zcJI<$w4LVHB9+Sgl`Sr$dc#Vx6BWF`Dhfz!> z^CfE`TtrZMiaDUrUH)8dU)xV_ypD0;;X9jc@n*mG&)>f#)^x1qpyztywj>*!K3+{c zCobL}DptI``6BKbGFG-oC;NHCPOo6m2>z!;0c?+@GRb2n2nJDeZsk@#}FD_Fpgk{rBT)$Itt_21|z3VnaI; zzb>2;PcN;8J--byL=}*&(zq;fTuyPT?F--5YT}@_e^`mnS>vO&(CHA%DzGUMWR+FriRG>Xc zI+nc^^f#$chqg8BzwRtY9j!(v7&ALgDRT1ahdfqE%8u`y!o_NhGkBGCEAQIB(Is+^ zMeJDL>@|<(p#O@aJf(p-QGjDR&#GB-9LeeVgWoyd8pcY^!k)^`?g^uDP4CCTul-&S zHK|c8en)qJWbrO(+2TC2^fG>j;Y0mN8L%lCdBYF35-VJydb3_>G;a_pyVE; z1|etzqMncBrD|kB`43!gmucQ7{@|mVJ=^0D=UXT-qP|#tCHS2|e*61&yDnDTI*S6wi z1Z~fmW60F>luQt7Y#~G8%4h{bvm%EzMXJNc%?vB$CPv9i4cI-FOV={Y+G<@>|5&JX z?}+z;Zgn{8701kYrXFG*Tg%S#pK4|uf}2UdJ3>mI**Wy2(7vCJmA<9? z`md$d_rX;JsswpL?Epsvy$p)mC>$96&)9Fv5J!ss`QYaxo_C7#pjzjRr_>1lujff$ zuBto@sO9N{K(EhjzXWiVRh;XF0SVW^OuQZsS_n1Kt&$gngrt+sefuxUBbW^_Wx9R7yLzM9s^MM}CPtcXO0|9u-J zxSn0W8c^m4dHD64;lr7=8`i?HA1hK)X6%PA_}Oqu%$uym2F?Cdp9-od>Isv(@slxi zlw#X>J)#_lqa<>bK<2@HgdFpt*Zc485dXFRau~ebKri#AN(}~6^mq9Eo+#dDTY2}; zhHH}Qt1>^3-Q$jq7EbFI8?(O7st%aUTFl+BG2k|=Qx?)0iAqS|d;;LH*|o~kxv-%g z69S{B=?CQFAiYHXpeSGUdT1m%pcLU6?c)?I#L|Q&nhr}>u$W;Q&{ucf34PLaF>_`Y zh)hn0I{G8#mOm=1-!?bAXJO6g3-OQ~0!x+bUA zy`Ihe6^ADkj4#99_cBfZI*<-f7Q2spawziaLgAZlXPg^FgY6+*|KA1To%^8Q&Ycl? zDN)N*Rx*g`t_AwVnUpy%F+VKMUD9G2&h!wrHq{Zd&e!uZf^^l{ zS*OjZo%^aX8%r!W4Ii`-x@|)9f@FMu(q1>gwB5JM#-uZ_!jFQ(#%h&N?S7fQiJ=px zoKEL1a^erNKlsc|zm6qlKKqWE0$F-zlHF&%ioe1&Keg+dku=2jg7~s^D0g*(-BsvF z5W4@-!#R^cqnG}e|2yY*q-}S(xpLe~!a030{`phzw@o$c8+{6rkf@x&-LaRHidLeQ zFbHV0Ic;cwdawGU|Qn7 z>6!>el7^1WpJbS6EI_NWdFn%)pAxzFM`9Ke(V?}wE*L(2;l7!+M{n#Lqs3)ip$5f? z_t`Pa_@1Hb2^4a@CxB+VFzud&NUR_2Q2B>0%XsSLo63!{uT0$>IbsVT+F&1{k8A`U zOSJu?(|^QX%%{>!6v24y{d^^OdADNwVCo2+25EB$3n~Ud^M=~&T_cI z40$=932;gP8NtghJ`2-)(QtMg-CAByYCZH@4B+Q1F_lHo(1SSC;=4x281(x3ciVr( zQD3A@MQ;?FKSLlCfBju}{&>CDU@lR?TIelkOW+{2+Ao$wXw(4dAwp5kLv6MP0FEf^ zZ0EAc+ODB(8jcjLtYt(anQoh}el^4Cgalh{88G1p#%A?ukriGUg;9Rm!F3vqx^+bt z110}}DmQ{KPc5`s?A!rmj3Tz$@96`)GZmiTJ7S*cfu-`(qxudaPEkRqPKpF50={1!sKy@aCkLH-9WBeR_e{EB-2h6}Y4(6CH+zzVOc<<$%%Abj9(%+xW+vkAr}DqI~wnX^-^b z7^w&X*W+xz^dkpdbfr<`4@)y3%qm`q-SLM5+s%}WZyhq0wV7IND>D}Ew|i3AR47_* zw8lQGjO|-Kd&65R6sfh)*;>_E99^BY-n`3^pu@7f?Xngm28&4sD1kokMID{J21e?C zPmV=jFJ{igJ-l({8SLKx@!#TU_J>b;UPD|yVU}z_MT-$ff8h?8!Hw8yg9nAcE^(W- z+sZ9OB|wrmT`)0N`DSYr{gop^g(qK`h0ctpYf|seQLYPZ{tMG%38ct7{w5Ee{~hL? z`r{>m?WSp=q8Q<}yUSDh##x6`Lo>8^ue0wNNL2O=-Cg77?`$KIa(QLhWi8^2um8*E z6EYSyEPd#Z>1wMKx+eFgoqC>57f6Q8;vj>7!%}6iXw=Z#?Rysr;UUZvy^_9X7j9>M zQuSwBGJNW+VAp>FWfr@jbff!!@)=2=8)X~HybLbTMi;5(>j#@c&ipwE%qhcYDqg%r zWoCuPr>{W}L*kWtBLim)OIlzgVfrNlEN30h0OyLhk}n1W2EY@#o#@K9dhc|sLL zFRlRL)rdxFLQIkIkdgla@)iL{Lhn8~7ii#?sy8CGj~TXIx(tQFl&&6M_S|6`+ILgf zfM|if-~h1xa%2-*SIZp*9z;T}i-_fr#Zc55&Y&QglhP9I4xMVt-^Y5^daA%hq)TEQ zqLBEYf{pltB%~?4_Ap1}yV0f0{j+`Z&jOX-`zG@mAtUu-V+)D(>)J=PXn(uC~e`2Dr8_jjyc+TkpPjOn8of?7Q zR!cw)>sq7lhF_@;9{qjJX{1kg+3P{+zU+G#4CeFX^m%?N%3;Z{OWnsPMt?yR!cto} z&SF9;5UWdM{f{+N^GeB3-bIAcTeBsK2p}(|V3Vm0@IK+Ph%%{kMOW^ZG}J&=|Ew-` zkPv~jQukhmyUKOsdb0vS=Z!HE36WZ$n9;}QK0@}xq`!Kw@3}{?Vq%_~3XlWm3G*nm z(PQ6uYU(JDqJpX>ba1@w-(ZHLFf9X9e4zRF6}uA=89o?m|YZ%$Wkw=@!;x1+WX zwm7FGIgtOkHjz`oK#c4^-41;qtQHovHfR)7&kp%`div`mce7OxylIdIa+7Wqt5-$NrG>K#^pAmKa)=h5C?s!zqTWn%(=dql zHM~iO+?ieTkGlRM8ln9BncQU8+pkJD*nI-e2Gv5S_FY`f&=l1Wa@HfeyM=;E}u<4sZ!Q2X;b+|s~=Aet_#@^ zCM&Ng=sv;+ycj&%*p8347UTAdTi+N8p-gc5ZWNOg{yE(<@8Niu9mm*a zvyaV))Og=B;?wq#_;)C>(Qg;1pnFY=@g=b>?#R}mfo&Jg@b+f$c*sre!|*OQ#~Mg39>w=<953Gd6YqE(lrh_fH8)Z{;7feXal-LsnR z;L>=;_OX{O0SXWg#j9V8UpLUICfBIGL*Lw*W&pK}x>0o^acJH-UZJe`F36_g1!mh6^X1{9eo=TI1AZovtf-}uK>nf*&#<<6i;CeK^5{ss zH7-FS?C|4^xyXE5WCyb=2Zx*P2ah+&b7^QOFWp9z29iXC)3}q1rC87mWe%JilIT{& z01bSe&Abw^z3*gdP;sx44H^1BMQdWO)n1t#=V!vp(iK zv9`BtKAzQItk8zY#@!xJI>9pDzR1}+K1v0$q)JnGIFUk_Q8rR5eG{gd z7h_af!I7&-OOcMIOw)uLg&GLNdn!*M&@+fSVjpW9m#JxD>et`uGJfuyhgl3lful+j zcNn$kv@j~SC%1V*vh29mR8n$dRsPVOZRtNMYWI7kR#y=8yWE4aV@Q#UN}pm5aA=<^ z6TG~kCBQCq<*6K&a83N)Hzp&CK*pgVTi3uSN(&5NpdOu9^G;M$4|qfCkmQ)J`}t2 zC`uB+OP`{ph5Ys`oi|xC7Bvj@%c>R764XZ&7bt&aP9gG$mt z*8CsB`v#x2`A8*f`+Ft81=ot>vNq5VqWh)W@kTAkYi-`iUMM!a67_&nJ_tidEfG2} z1Od#&?P3k7-Xe{r-BG`${ENM{T5>Aq?;DONi&!BqaZcV&c>xa@;^snEl(g`gD~;CH zVvsBW!%fTe7)pc_I{`9P<*5QzX7lB}^}(I-E>SVoTH;$KirgVU6dXGIIi6^j!|_!$ z9k}r%BgUYDOBm=*u7E5jUk-rOlSq^R%XcBpOZ4;rDSei^=R;hd+L({qqvfKGNXuPS z3r%Y7_p;{>{=uU0w|__Wy{@d)jcs_n9I3pE{UigMlKB0qM%-NtcdbMJ>Z0unu6R(o z=6<_R&jAoE!mFk0H)clImp@ z9MC*GbPQ>VWN$7Dh#azB6#!XM*EyFsE%k zQUf;iucAo{4|Qty`^3tStf_;vfh)q0p2-2>uB#o?JP##-G@=h*`u*vDDIJqsqYIZL zHG;n#4p^yE-)k!#pI;6-UYxd`|5TK{U`<7FY1qha^WN&+FZXkAzOQiYiO5{-41QO7 z!RbW^JykN&?h!cjF7DvA?cR0Y$J+A_w)a-?`zo~uy&0M_?9zzwUd+#s(I0;0b|chFayv%q>&5VP? z($~>3*zYO$uNpBFI40H=N@X>|cV07Yya%4;D-#U0iiRr!5!E7uO1|`3Y(~{=g{f(z zGo5allUa5`c&uv(M^@Lt6dNhW_j$td;XyJ5M7o#$AJIpW^VK|s;g5lry!s}b(!<03 z-VFWrS`cpW#{-nO|5BpGAm0vncklV6j^p-Y{@4|~<81pf+xF*E6|RW%M;R<$d+FJc|}4CJ}k*7A_+SmoXP~FDR(DL6(Az)&(>BNf2~c>wJ&}5BRFRjYZyxSsl}wND9+R#!f|H_LS5%v4#m^u-}jo% zJ?pP&$P(5>a^N;fgVtO%oa|EeC>us!hbLnRf1(4t|Il%8wN^MN3jLcBE742hS+KAj z2x)%0e1q#yvt){{-x36AJKSYE6hY(GcX!u>iB-S&W7h^>wt83%T>ACdj$0#nT}BnmPP^b zRn6x<)}|yzv^I3+$4B0O+I%!IDd{OQuE&b(H7OfC3s)OBCmQCLDGin1VKtkuVvE&8 zrr-Cs6bs#EI@w&d*FuH5_hk$^lkLV;df;m-weyJePWs&Ts|aj}g~4jUi@uH+GyGuJ z)o@Lx+c8qKoIW@YJ}4L^-gTdB3IC!fdVXq8uN!*d-jd;g-Jc_tzmb!U5l`aE!zfij z=}_DUEo87h(9%*^3K}MYFBo7VIY)HqBzrQ#T?yK%q)~k0D8Ij(N$F6o(7ZB#a9O95_u=8Y>FTjiV85zTznAkXC2!0 zbIQzqNN%`+$HjRYm_69EmR3f%jg+2>fw!A3fI(F^HskEswf4jS0+(WeAI6B!0 z-cSxy5>0bvRxeTK11-=l)~0S*;?U?%=3g#${<79Ql(OI%Yarop3ye)<7zsQf?(e!oV&6;0h+(9KmPpM05BLCLz`asX~Q^ofD6Fday2s96?+OwYQ z;j$n4F|GwGpYfax`FZHxE&h1JfG6Oo1_N@5TmBCQI2}^Us`+Anzwbw+O7?3RzNT@M zhfoy+1i{oao?(7LYOKN?6l+|64EhZ|?m0bx`y1P-4I!)V4BrD`5m+;P6Fq5pH z2#mFq=mg=_f8A`Pq?9%vyeWZ^mBj)_uwd;k(0AE%iAJj2lJ8WQ8YEsZ%GGA+%g)icjxp4{3e`6#9A`HKReUKg=S^Yi>PJmEW@T(uW&|SE^QD4Tlrc!2x!*KphVb(>~qlT_^+-ag5}Sd_mj1y zCQ#jL3@ENSIebZsxPQg5Yvi$nsmd#Z-jI#wYFCRdzuh!{2qvvg@`BKLPRKe3tEE{$ zCV^En3at4=qec=pY#6n)lbcJ>&a9>eP$dWTr(4NH)|;EvmVLln%5MM1O$T z*zwa0lCsnUjP7Vr9?=S|Lxg+Bzc8~4m$E;|_Hh#fTvTMEBV0Y*A@e$BjVm2of@z{&#EnM!#;8-UO2*)k`YnY^Q`ji_Upf-W zX{8i6+CDtfUyaYTdl|Humo%eGAJjDO5vOLE|8&hWOtSLdwUJN36gf&=zjewyf9#pA zGETpCo8r@FmHjC{E$<9DM)R~U+ZVqiaGZJ|apY(aHvcY9VowBkdhqD;E=8z*cu3xg z^9|)w(f5RZL02zznQyiZ%`xoK<|0^vVYqqO~9VmU#?^5e*UB5Jk36U}ch>YI# z1c(VMBeS`BQvx4ghGL?xGrHo88jf>rOGLQAYt`>}K%m!_oY*@c36NyT2)(-6kc0~h zgKb?&bXYvxJm{B8ByFpV75jOA+n=?+KciSw^~-_?1=UCqs&WeIhrQ)fe~ncJR+rQ}-$0kPH5!bT9~HQiq^1`% zz31|lkD^VQ8_hn=I|wX?K*6y{A35iU7a$+cYpM9IeLo-a8^qd-_5%EqR?LTO!EgRt z02Om2mBxOM@>+;2LR|gzG~@qyL{WOR*V@lDk|I|OduuS&Lt11l^6(2rCYUR4q0Eiy7nh@cA@B^(31ES=17YM zSie8F88T66SL6c*2DU#?^rIL6yiAH%`G66vLD-R**t8MtI|-z z&D*bt0cwduD8RPur&s(hzH5|{s05#a87C$)QKxHyw4xo608B#Ip7#54wxFJZ*v`-^ zLCgeSH#2@fFs0O0`O+;ieTnM)6VBzS@uolS!NVL)N_}#R)JX0MMJB%<)a?PZhC~Yp zs02TDa%zAmPZ?7msoG#tM3%=Y%Po6cRh_< z01RG_u!O*I9ika`P<6vGWW{7tA6W|&`>her)#CYDi-KBgo=0y3Iab*(F!xR}q#sIm zHpOG5st9R*NCsX~+(b)CKy3lYQJ}is2kBt(g*z`%i}* z^@+{o0V?h^jwKS6`UAPT*tfSWKdvJ^l~OtaHqi)_lO}kn?%zGx(gyA*5zl_}=!S>H ztZeNpKLF2S=kM`uDEHAaBRJVz`Ut0Yn`?j;3dgfn0j-6imfBDNaH@XoV#C8@g4B{^ zgC&rMq@0sChj3H{R%J-P$aqq!wvh06GhB=24K`e zZ&N=XA2=x-QQ9y*FkA;@>RCiBvqiy>D?+(MC(sC#>4nrq^O%rRz!@XIC3zSg!f*J% zoiNK+sYEtx8~Z8lh$1tsuYI>*HN_rPt76QYRaV>Pe8%}L@$d1}18Orn15_0ijhnxC!|oGW#n@HoAdeDQ=q#1gFe z@IulzhB*LP6;4GkSQV4y_pku>;+wOY_k< zMt}(yj!ue>nOmEcB?-mA2Eh*>(GXcuVx}b#W$6ebbYzwmqlveTNDQV4iAL8#W)3R^ zrppk(ptOU);G?`!_|+oFKc@Q@ko8eLhqNXD_GJIl#*?2@?>8qWcI}J(pV#`Oi_kQ* z8r;zmKpt4yYNwPjFJo0!BsOV|==o$Vp>8%yv@2Q94F5^g%b#O_ zS8o=N$xEBFhpq}zGxck+R~?Cqf-XtMoe$QAWf)7Ut)MqW<5;uZu7f*K2TA}PITsv6 z@@P7337rf&=kl1!|w`_C(bJ)OqV$hF+KYmz_AkY+kD7?>H z#|5-86!8k{SXX?Ssot>!jS^9`NmfO^CP&+i!;ku#A^oKr?**Ua#qgDU)^1L2DI>&t7BfA;4CBG-hv z`3$@}sCTtad=!gTFPwcUDQ=nyP%60$=X&}2UKs9ao5Q^9Kx_+waHQDw_FMQ7QH zK}-Z&#d2e%B-MFe2|I~`d|x;Y{wzgU)IK{OWtl`RKRZ1Q7Lje9b;_)!tSePu4YFJv zr#r@GFTSSw#{RNf0_)2b_|jG;VuGY5Chm9U@F#&7$TvKhTykmuR1~=ME%JGBl6LT+ zwHXBLVP^;Jv7Kd!$BVr01ekMP`}y5z#?E(XCFW4uau)&lZ-VG#ro&3_oHzx%iW%g@ z-#ffn#i6n~uvQ~9b#o#lrGb%(R1LTKvdH2@+l(82euZ$tYl&oaWT2ZZOzot)#&sY@dh?;{Sp4V9?-L ze&K8|C^_ncfbK*6tL^H8Q;??rXxacL=Q$o}1rZTpi`BZr>+U?YGh5r zn7d@p6BzpTjFS#Yldnss6X@&X=BT$Szyjc3s8FsKq|GKR$6)r$0>z(PFmLZGeb2a< zX2i_P6SM#_n>#pSgoM&ek*|or{RNAu{0Y@N=UA&+4kJs}TpAwldYjx1j z>XdgSs+6PLp!?$_sBT~~>{tEzhUt)3ry$*cI!csjG%-Mba-?KUrhzjgTj`3YX(`+&RmGRLpzE;d0|&EFOS@u;hu69+bz>JmNS z9hXU>4qlX<6yioO193pn1mqpv_mqzi1)jeB*LZ7~?b4iD2(!fNs#|c zSH}D{@?0?+VmGC37FeefYiURbl5=7?9053K+8Ka?l1Zb2$vWlDyy_mhuC6@FYHBns zjHYnR@Wff=RYBFVH=_I>OkeELhf^n{%9;@jFud%aXdgXy%1M<`D;zvsI`4?aH|pd^ zWX&I1G7+@e?=f|aL@auHKZ@-7F?6R?r6R)Cu=KfQ4XeN5X+Q#zPU>MAt=j#nmrK)E zk4p7uEhsqi1$_E%LAY1J{43;$1&IH?$jop4^ZrNY&L)||P2K?OCciX;wV$Q&YlF-e z4%u?u!g3GL-L>4p03}Tsn@?4FDFDDm1EdnkDWh1Xa+q^H-w<5gXSjB+!f-VtGi&A5 z)~RUlW5>>jCx*m5S!$EYw~S93b9ARoByDkeogyUxAi53EqR1UNuY8YQcRKaro~Bp}}yxGD}i6nwu_hrFF0 z&uVTv)M1cO>B-s|Hb>XEPT%<-U5w5sD*@&BF&p^LH)(=+5dat zPP99QRBaA_HAlJIMc%2kg9E@YOLJr`bppmE8I`0TZf6&6;B)0DKnvfwiD7FQwDy_k zZl4r-|7xl2Dgsfj6%9k<{O1GyxXk>Z)kbIgrBN^nMrNa%Xes`V(>$ihLir$#T=eYX;wz-`hZ(FduUzX^d zS8ij+j8mTkD6aDYEuL8zkWvK}WWE!`<@*!g6-Ep`H*UqR4NnGnv7aZM*cLw*z7ZJ8 zbM*jQTmoS{c7xIi*2NUI5^Do105mDV%d9*BN;*VsGV>cCFR^ox$=D|UE9$6dzg3V( z)w41KeBE*``|ag@h4uiHjd#b1vGMlQi+@Gh?bX|Sg4NfECQzy&)BNg*uG3B? z?iJFbmSYYLG%X2=7yycY9iL;+XxzUaZ;Z9S)5=lw#*!VsfU|1o595D-Eo7gY$TZpB zp->%jYA)OX2^IvfAtOsy;3P*EkJd+F{SAEV5W}M}0nHFRFX)Ahk3vstX=t-X>3M<< zt&9{xln}Pd#NgQK)T$)kwi%XhH3_y1k)PZc`QhTS57eHVOq&pnGm06peM6WV>-WMm z{%&0Sa&XtqI1h*NR~A7bwlV;dV04&jA4J>*UF=G2Opgm_0^yyAcl7mlj;w)f@3w+VPE zdnkKaL}lfZwI0n+YbJkI93V+PeT+=)YtjrxAho}S6`XysDLs9sdzB)+BK-bi?4z^T z%;}$|o(OtWYVWh}l$<$GFxJ(C%o1?8ufJ{Y=VzvV7MB1=qekrojZh*q>dpIavj;&z zx1>TFRg1~e`wjF!)Xkc}WP(&39+<2C5A_V>;`tHG!|+n(CoEcg)R<;S1}l0b*4e^R zh@ykr$(d%NWY!f*C*&ONB)JYL1Nswj^e7eti&#ifgU^cP{kL}~7BuhQ(hl|7%(_sf z{AOc(emlT@OSwdp_-_JW=Jxjdgk&CB@=&#I{@9&S?t z1&IIdJ^xpDL0LLQfTaZT3hbUOfWU$%n@jJVt8A0m7FV`z*en*TQw2u+rIT56(X#V? zpb*y%3a#2xGeKXvy=uu7{g4O(Sw!|dI_p+i?GwPt6mCv5&}PK*V}z@0tOSP{3i}xX zN)S#>{q8P}nxMUJvR5?|pEyx7H`$nGTUlJaQW+jeTBT4?%oiT6<$1WIxKWvua6{Hn zeZ8(j6#qPYl(3P}lJe+07Onp{9#e?2Nr>-HlzLR9Em8LOtHPB2ZV2o;-7lDNb?fmv zmTNHcS9gfpX%Kx*0M-r0Zolt@ua~~Y6XBgG%h1CnnY9mf>sQw={G&m^yB=sA}vg>-Ok zud>4ZR75NJmA(*kMWSB`h$G63^Ksq*srubdR-7>VJMjWeQLFC{9->18=5-s{L22xY^e_iGtus0w-aqTPD$0t9& zC~k;Lu;22%^Z#Fon(R5Ag8)}5krkFZB359&Q*UTVgaI%JfHoPtGZIfG>mZ^`q*5u5 zKsLopkccdyy8eQ%H4pi!exGgTUiDzI* zMz-ZAycWChEwaL;SdAyWI*t%Kcd1t+zuwAR3W$VF%BHv%^`#m=$CUNWunbTHpyE+Z zw}?O|D3$1UhDG-e93>K?e+y1(&#~~0HGo(mMMa0BTay2VyA$#^BSFNy5y5(SJCLmg z0R^hr{)0!c#Wg!?2xdsu!ql@Q)5t=_VB;^SI#-W2g$55S{SGpcq8CzQT-A^+L1ndQ z?Ws@?xCsR$28MWFPW&m2(2Khld`hIFNSYTC)-I^xau{!mQQs|4T9H|XyI#)j@GQCX z!RN-HKgVBG%xT=?r}(8<_vU4l3@vS_yB|r@|34t7PWBB^#eqV{e`+g%Z%s59?YJ6E zE8o!=N$&23we573#$dYSpQgJ+4GN0}!vTMHDR`kp<9|Yre9O}!5sP*XMBQXo6DquvO&r=01v0(|+9g_M7` zVRH0ov6g&+t^%R}u#|8spTQ|v3H05t==YHIX%yBQdI1IaXKO76QB(|^5Ng(FLtR7@ zlS1w_Fb~Di?wDE*{Xn3QQcKWE`zzE?lOR>IU>+RME@|`ZA~D!59uUIu;iO;S5l}%j z#w{jkX_&QQEblwU9DQxi6(iH(rBBm|Uj6tmr6TO`MF=wd$XFX^j6$+Q206y6!BXTUGtSg{pDv$dVun)8I!w@S==ORyoJj}@3YBbn z36Mr`-dbb2FMi${+d|$TiU|+Yj|a!^p(SD-vIV}$XR}jW2^HiQa-z8J_d?>cL{CJ( zmYZgSGE=PxrnzHTgVIJqUXC<{Sb~#YQ!ar$gRDLkQdjMp&dg{bXqdM_ZO%+671HYX zEF=)AEqN-r^qPCK1~Ic>7dC_k+g$%9WsHz!AZ7T*G66|IKSP=vk0CWbf{RiDOyOt* zEnVG&C}8?N)EcyJjo)@WJ2Kwu1G@O^rIJ3pb&uKlZ4)6;K|{`)-oxCx3oz z?NZbTePRVCir;UWObaEkF@ifYk96f)S(ck9^+K$Rg2Ykqgz6`x&%(N%@Rx*xvJo~f zEk+4>J4$b@kR})B^o_#9AURGFu-J8O89mh%r%2j)MfK zVkMG!lD!}L>Y57InmHy;NuAX})`T_LmLdgWi1>E1p)f5MugSW5`>a)Fq0BSBD}S80 z(vr2}wif(m(mJV%dD9Ck=m6-M2;pS%c5-hs@oLwK7$s1zb7HI^=xT?NzK^l^?Kq45KNBto*P(36r`GrZ#PdmxaObNXO zEcC;`lcS4~lGJ4y@h-;q2B^)fD2dkhZ)_hn&cBSnGvA{ts2>71hM|z5PiD5UQbf4WURUR1pM2=+#g{M<5hK6{+?F2oQ>N z5NXndPz0nGrHd5l(nO>R3MdxD{?7Ne)_d{4JeRX(&Y69l{p{zXlmR5nGo<0t?nXM( zD95xwvmjRehXGnmYsW=@bne~gVQVp|=h16p3Y<7YD!clW<#%cieU%SAsm3w+Nw^ES zIQhAfaEhbntK4tW*IH5;wg)3I!oX&j9O&u*+c_X$H1Ws6N$t62U)%jxK%_lnk%(>)wb)+l2&( z_eODoGd%n}7z~1_N!m(C3(N0Q2Oe**0Z5GL*t>fX)Ts&z46+beFOhHM1UtWEsAa7_^*fNPfY;wR)^s=O)s9 z9JR}WCo1^_@TlXI@Cyg$R|eV(MI*fEgqFZ!$0tx$DS~!Pa(aBeD%FCbPC=OE(XJfO7t^v36@`ZL?HJfLAXF3b}zE0L~vKC=v9Q+DI z%{I`h1ikmGo*I;gVW_~-Hx`8T2jd6UESeeH#n;Zi)sJEYvpN$ZKK#AJsMUY&a;4eo zPY~6+EcZ)MWFNkE{eePw7>KrZkQYCuoyOf7X(D-%y+Iun{80fm2IfY>2X;y#`+j-R z_}T~~BUv(lnud8GIANm9+@(QaYUtZ;SL5n(O{V#(7OuqR!uLzqL^d(GL76Rs5e7LA z$=|mn7M|WbVs{_Xw2>yPO7Sv3*9^=Fa?-E1zA&ucl}F4EOTeBRm=%fS%j(^h{KOK==o$O!ag!1=n5&`V8@IWA z_Dt=O8!7|6@UYKtk{IbppNh~KhuOD=>)Ok7qkmVKZUhg zeQ17b7$e{Jm5;y1GFrHXEZ^p5iu<4RgQKR*^l9cl z-&2_?=6>bfmVEOK%E*Q^{!UlH=gt=2`B3ZqYj(|##9QhCQf4pvZ@Gi9-*0?cdXG62 zBLnRhm63j_fp#nbXO2P^B4Xv~N{_F{m`q5Aa@kM?LQ|B=X;=W$L-JsbNQz+-vrAvR zPKdc4Pf2fIG+qA6IwOHs6hfA!pR_x8cvAK&`t7Nzso)7A%S-i>*?VAG4P3Cy9~uhT zJrl+K{4&BVF-_<05QjD=h{|RFDla?bGMWE2;x?$-;=8(SUmSJgj9%=UJMgeP%MX!Z zNl8F| z(NPUKx$a5nP!~DOXz#!7PajM_DO;I->|&!Pa$gI6|7jPA=binAGG4102C_lKUv|T4XBv|NmBrkCnF(UScOvFcb-2sgpfn! z#QKM%7`Oq*2*g3i7LbCE2s9fDf8AT1tFzM%@rFQpiJ-;zZ;Myu{Pk|LPGz@& z>Z5ro>9+iXYPHiJGwR0|!u)Qlq0U9byvTL{Hp|N-lg{^pAv-u6W6}h=7NnRFl-P73 zh-~Dbl2Xa+%x3gqJDQUr#qa>BLv{KTk}!4weZ^qp=mH^EbgCz17ojzH2eVXS1w=u) zrr=Ca{aZ^D73SByfKQ7QIj9vmwys<{9UzfQ^D*<4KWE)+e(1|iLD~5Jt+~DB-M#EB zlFHS~X|Baq`Zs_~rlV@mLB=L;*=s)|k5S`WOU!BiI^Gnpq}S$__8&~Wrm!x8C9c=g z`d`PU3p2_EPOEAXj%GU_mao=)M#&FU&%4@mdsKLTN<05R>Fj?4GSI1Z19?JH2dPw? z%4Tt)iUKxOjH^!2C~g5bHhRSUjwpGkRv8FPE%Gg;##m#|tpfXRrkk9rFL6pNMgi#8 zIonSwzgV$iqf@-lfKM-+(Hme1fWx9pQC*XL|$x@a+y+6u$6hXPCTj8f&wL%!CEMD}Zz?lUH~%SEnq*#(JG zi^T%qOxER=uWwjqyJvcr%iH}yckjpXw22zlT8qRspAfNq{>(6bZ*;+sa6f{A=h0`q zruqcT>SM#ch~Q@*X2-wfTnnos%B-q3>1j&f$vDIrAteC##M(C|fglB>VUU3Sx;R3a z(!@2$^jQPG<7J1MPVkwG~p;&%c@?djyB)vtB#gk<1rY%Y~a*hBOk=Wsov2 zUlJlcd6TM5#l>w;ZE~=qB*mfW?MSNuFVKbtKN2yyEvfdrL-U(~h1?HGx&nFh%(ZOum)&F|?s^^Qo^KQv^jH!Ox`>jI6 zxHuiugig0*wVZV}`H}X@Yrd&P?3$V5t)}d(Q@(6=^3GbH1&gbsi(lu)LjuS{F3AWx zJT3`Ia_}5<$ZS1`@U?9ToWz>DfL?kg!bUU((_%2AN?Q(^f4lbR<@Z~n*4Gbu3+A4x zBc+*DBj8H~_E(XPHJ&bm)tz_qwa1e#o}i!aJ?3Ze{E zr1T+cz-6hpYpWA_2V++XB_osX@URR`eKgat-F{-3sa1Y_z05+t%RR@3ea8aqjKu=L zy_U++=0!fH=O%eF*ns_p_0s97X=Le@$**v2&SgIl6oib@RXrN?l!pL@&H6|&tQM*D z)O5XE60D6s^67{I)*q=TVcd%hC^t4th5QLnN6L!!BZCAkiOw#LHv9v;{ornn^k>}9-!^h2k&#p3|g`F3k>RFw*tcK(sJm(j3`$aj> zf}CuAbQAjbb78oS26gyk6w#mrLN`cns&lqaKJ>l%rDkY4OlvLo&ikCV1LuMq{P6$+fM6&T-B{yX^tArIF{+V0J1w`NvtRYY@y)WD zunHO1it;H#KU^8~nV~!@dwuH_9t>W>#8l8#T=EKoCx=d3c0eiQrxYX83`yp*f7N{_ z)6cG##uK{_+($_a&xDOzrwj~J7~iAva?@m-pU@2YkBW8s;C+SFT`IB~47 zsw33p+NJmMPM-r-Js_g3g ziDjeKufFm4;J+VSjCxcoK!5E&slS@{TiW8O*4V34TfClapF-u|OM6^g72aU zAHklR4eR{|YbbbP0ono}=s_4B&}Y5sz(xb;^-gg|TGan9-stMl)ZOzXn3fRuA3dFCMPpa#SuEDY#2OPi7kp-JM z=Ug7XOYU+zb9R_h3tg)9>bMUA0!2D(7q#W??Ca_J7bSSS6pjKTfQufy+DXIly}Er*{t>q|=#ljg zHLhaue>$9F!(0s_uy5{=-*7+ia)6TLYG?!nFy+MEMpy*HQ9}jDxr9q;QYop$NUDA` zj!ADr)DYW`*-!`ItT~AtQiei>9z)Nf-8cJniuC3hAuPaF z7KRcu+f5+^^H`OD#pzMO79I4VKLIJjb2~f#lcfk>-s>xO2ltBu1YrrJ2SAjCo^l6S zGtIAk{D!HMB4=$8lYQ-|DSzdtQ*!CtqkwS!6vwdjkTNC);B z%9pFPpF$wgHNPrYAVBwvtu${(@V*FoGOJKjhg-?e;$pb?X%oay6T!381JjR&Z^|+l zXXwtD$?|Y(8x+v;NrW3S{*<&=&9fz_bg96#ZA)sG*Qz`dG~LQK%8Ck^eOHsq9U6J# zMiV?e_tfC1x#o|jC!9_l1tx78ZF@IoY_Ix>v>`Ht_8-S+-O9K{%H)dP^f%p;yC=13 znxk1zD9H1nt1cp6;iW>ot7O(0OEzBc(7T)9b0h;K|9Sk`l+^0_DQ1;orkZ3Aao;Cp z+czCVpV^nx=?wseO>4ZMz{}AlNDkQB1PA6-PiMN5TBADK>wmc>Rh^6*xFs=+zEbjQL6^7xG1OVW zTr_nMon>t*c%#J<^G5%5RUcz7&87v{Vdov4x%(~ zixTV2*??a4^Y7%IgAtg3uz8CUTR1MSN^S7|o;<<=BmZK1X9S%X6wyR(UJw65^2aH*t^ViG#5}6om8xnbp5euCT<4 zq>%(N^#D3>!z8>4l=awe*syQ+{xNs@+;rttiC0nEvag$NgT6*|&O8(O(hCJ=(19%j z8XBpta&SU;b2S{ODqT!Bj;3gApw;0#qP0!XLECx&9xK2SAWXLC{j9@!>8!``?Au_C zWQ0Tb`y=eCaB~fJ6^j(j46dt3P6J5vO-7m`ZFi}6hrk|&f=O1jzOQU}Pld9`R{z5T zhMPro8CMyRTYve31@+HWrh|KwA-Sya2_*Yxv3>Hu>mHpFxxZRVq)^Y~z!VRMadIel zScA{9*T444ZT-n^xr>v{t#SPiVe3~vT!lY0(Au5>1BKWI6=W@}=z#a)nIuQvC;!nW zK=k{ZDp##xg98r+rcc4VI59RSMoa11P7|Z~H@MZL8bn|exF`$}Zl7NhTR}`h$}(`B zkzhy*)bO$w?`kCfT(6v)aLIkh%W@ln6PXNs^h;izjYB1Xt8LZGHFA)R!_WNdV5DhT zV0_=u`kK?&KuF#GpYc9Y_@FnO+a)-K_5I+2p+;wm0{_#<$2r|ArUEMhX_F?r^zt5b z!(d;wavSAw(6D@E`qjJPAVS51`6NoqfZsy{=Z8XF30E;#-g&}fAE3Jl%nktI2B4ra zhosHiw3|}^q{z#9dIqJ9B~&p^D&<;9!o5*WCH6#|Z^?3z94Ue~V}N#T9BwkJ9wuSY z(!9|$%aok)&C#;4S$S#d3rE9DVP<0PITdb+t6m+(?>@XjZ8DvqT$$coO2Is)PjOqP zzXWAJ5#kl6rW}f3(18p2s;oLp>EQ}t+F#R^T=A5%0?~WHIlRHICh(}iSN&C z7`E34Npkg1C1rb`zbui=EOOuFR(D@*0)QM_&W4en^mY4Y)?jI13)9I~>EL>o z3@QtV##3vhfMO(;5RFtyxyMqbD`(YjoE(EpJkapyXK1<7ZLcb{pXnNV|4!YZX9BDj z08(@%2D#jdRbhW=p?SgSl{6cD`?Ar|DT;2Zwj)W`9xp^Qu}*nj@+7BAY*l;9bPH=Z zuWHG#Du{W8i&>a6drqNzPA>eI+!}o@mrcnj>rgP$s_{Hy>$~YGwh`d8$*aI$?|PXR zu8;NGaG|ent`ax%B{lPYJ6hNFat=qh8&;-%GLLBv3WocNdzOGg2q2E; z5G6R}pNlGU25;)j2_ip?t3rR2GE^7{>TR#UV^=pG9`#wUQbKWE9(n z+@hB^9U*}G9(TXoSjhhlfnpfYtE5{X7R8lnhM-Jq5K#Kj#KA^u7b2k)@)k#yflyQh zdnTGW%x^!^T$23+E#WZ4Y6z`z&(jjEE9L_$@QX+R1epCl^u4jElsK=H$wmz^=y~f| zqsN1T@}YJiS21pf*|Z+l6{YliI0!osmMsaqzf|`mX3Y2x%P)tD zK^}eo?EGMtOLB3YFHJsa>kbzjQP_~ojG!r~NUHMB?U@+YQL6Lr`MJ|vL(LB_-E_aN zydnM9Z=WRjI<1FW6`13a$f-bxCY|REbp-j_Ky6%1j0Uqht1bkvQbG-1^C%$npYY4J zhQPIN?Uo;uSj@`6R#EbVYQ`HfOe*Y7^w8})Io^LySJwtluXvQD!K2a~h0JDtePo{1 z%^7UdxWNCTwf$DdFSlv)&C`(y`k~KC+YzLJLQ;4NhK1?g8)C|v=+NZ z;+Z`l2Eb$<5D`Ly@eBZ^Uq5DWlWTBLLpJ~sm#C3U z;o&xt6OG{aLvq@tF=HQ{r7Q6KUgUyKS2#*sWcT8BqRd|lqdl1L6rsA1bXlSaPG7mF zMiVstJ}!YsSsalD$L_PRNE+RW;ARsg-endxg4$MIVY}aG+I2NLb|7pdW4EXW$5-Mx z@bm&hKVG2c+`d-nrStilQP`M5E6`&9w?+7+$kA+eo@j2B(jO=GcPS@(%o7Onx!gAm z`5ou4I4Xd5gjy&y3Lp5ML{u^d(e8-;6LJ;p7Mw0-&XbWqcgjF2cmc*a^T=#>!QScD z>7Ruk&i#9(?@~LM^8FDRC6v?&>}$7wI}9q#ja;)>!CTl{Kqm#4tU8{OzfrYxTxeQ{ zu8~#|4e^#`oS}M82(68wyY2>AKdUNNH-hi`-e{ zb#K3Op%*Ogh;f^Ft4xgjtf*hwPEp5I?71%L?IK!iTc1>T?s(%;S7eV+t}A5OF4fe7 zPqCP?w>UT`aldKRZ{|CYPyIaRSgF4DxUxJjfvC9be44a<|A~3vQ#XqjY;_jdp^}Wb z*Jd#WP-8p?AZ2$8>(!!_=Rr*{+}Py7*UH3)XN|{RXv`(yulB|DFFNnn|0eAQT#vB31$cBhu4mdYlrqB*Ap7HT_67=FV z45O2C8I4pnUv6q^@Hi_mEkT&fz#RVlRIU%}ZKXzBz!~gEo2X>vzn-1r24u?!Mzg$~w3FLd`^x_gYE-sg8Vh(XMVMUW| z@c_3d1hB3l@@Vf!mVh3#@({#*BrWXz>S>x0X(dc+)vr@pDx^fVl}-S74Hd(+6X=oA zL1kCXGHHiK=_nbc`&cq>tsl)dQ9(lb_|1l$PzDs5&S8I@H!ZLvBWNb9)1s}q)u>IH zUeq0}`bPj2m})(5n=tzJH@AfOxvkYw5h(}3mMaFyTykO^w~Xl@{e6uYK)aRk-1lW7 z>B8d}BnRRu>ED9=X0MO{Ki|h36B1f#e_O=t&BXkKT)SGM)M}1vL~hXGUfGIys+@J* zrEcZQX4J^gkdA{{vUULo!+wlDYGm4-h(K+aYZwnsFXCi)42<#ir?Z)a5Lw(@EHQ9a zvfX+m8&q+GpLu~roQP4)!SbWYjie|k7rWR*<|l?bnS5T7!*31MoB9$VuqO0+?=R7H z|L4tSfth|?^I_qF7DheG;_nZH`3iW-%etC?f}lSj&EtWf+D zFtN;Lt59;eBI476c@WYw!#hQDLb=WX+*rkSjl~hNc2+eKRCjJJhX}-(VOdT-uK#%1 zvAV@qquT%F_eYRBtw!0{1$jh^Inoc%-25;qr!{|6(m0Pof|;5L^s*f{GB_p+wa%%g z4y9Me4P#uEB3=i=rRKr>HBQ|E;m*BAR00gD(XjB+C9(hQvy)qLJk$eC&t*pww)AuBSV^B;9U>2eSUV)f~a!K`f+}pEv*`BYR z*e#?tNrX2pT}szENUbisdb=j{1sm5LEhR0fw^4~aVjztfHaktqDi;q&g=F#fk0OQ{ zN13@3toYB|yQlf!(Dr6-X|rn6x$wG7q@)d}JBD+ygu{%ijdFWTZL@y)@w6Twg1RL$ zPpb;5fzu4mp0&!z|Fo`rqw_5esX1(y$4|b#8aS(Jnw~LJr)n`vffALu$;=h6&a1VRZq3}Y^Sr6obuQ0loZvW401tM0eT)3{x5PG-oed1k z{4J)I-QpKkUKF1x^VJkxzgv><8qi3-m&(RL_WFH?Li+OT_;5H$9J@QqR5!!9`A;wD zs{F&uqfd_th51b2N7$H=%daax+2tYjd?XJ80P*JI??oPKw`qH;u^%nq>dqy-4a;nL z0+pbMb@-T9N1K(te^IkpL+Q{$o-3(G7X7pG_SV6Ilj9~-uO!Eh3mC9N(t$4h8@xX0 zxU&n3q|%X_RoWdFRGt`DW%>tLd1=q36#QYXs?HK1KjHU$8S+0l!4nUr#E^w4*V3-{ zQ&Pl@&5O}TL@DXS1QUdeB&Qe@G7>0JXp6`4V4yMGGVa75OP~7thOl2lcdeZg^z1Sh zny!sGH9lVXwHLp4f%A{jk)%h@{_T{@_f|V$BYTxA}v>ZnS3)|+Yd+Gcw znB?niQ(ji*os(xoP{(csoEYjsl(+sB*Y_zn1%Z(5r-qHkc7XB@sALUqr?p4aH*u&g zY~Y0M)?Yg>{&HwuJ#mMoF&B5rK{m=_odIxnqXQiCC0>wS8f6SY8{|*}Kb2rLKtk75 z8U%;oSfIsFBqt7lN$?M8339QOT7#(eWzmWmu=jq2wHOWq7zl6dD;ix@{>YT9sN+jy zpmG3@yyeJAcshZ+040Z~Ez5;2U>j7me6FQ8q+})4CX_x54$OVvjCgJF zl*bGT(}R-jd+pP?)f?sAs~l;GnGQ6iRhuSCA*QVjc(Q|H>53Ht%x{w+0#R_}poVwa zCB*Lcs(<=Jr+fZv+(|9I>{?M~TvO_2skpp;(R}jEE4jeY_25Th-&Yym5x0T^Zu~i0 z#Yv=8`h3^2eWE*kg%o-|OsPx0s6|y_XqCpd;-%aG0dtNY*>lUC;)g3YyMHyaYpc%s_w>`ZR|eZ?G->AB~zu&^u^_T?^wjXNjxkk7G)k2W5(A z6xCyS-^rT?618C>JzSzE{qM~|5MZl9a_T_=pYK)FlFY&xcDirD^>Jb75JBg#-tFCT zkq(En@S>T+I5)IAQPyqdCjRd22QEp$+)Ae3j`hx-tlKYfYNW=YHI=B*Q8>tO*he8> zBD-Ggn8JjC`1_ly$Y(IQr-lJ@vNi^p!6=K`6j;Yw+?_A;&1rl z{-Ub2ZS%awj=_OUe#0GI{dVT>>1I6(i_(D0y!x|IPZGhs8CTc1@l@QNt2j{yL!=2EghF*D)u8%zJo9dN!u zn8E^QX^R2+I*|Z|3oaWVctaPN+;>mA@ydD>k0Y6lY>Tq5Fir$t^j_skdj^Hln!6K! z*RUOHs^DDpaKYdF7L!oeIa1i-ch$ZCrbJsABceH7Rj-j`Cp32dRsV6o3!jK271wW_ z``;`DXO838K!&~DMEd=ne|8dil>za~!F73JinspNnW~yEvA3+VeGLi8AU0j-T}s3o z;~`|)gcZ*~gC_q`qIj}l0u!|q7Ez$bVUUtu#_{XCSGO-6`v%vrA*q3tl`u8-sfxkV z0hGwzf(gIxmpA3wR7cJA478`GjkD@!IGr7OsJ7br<$6eygn&J&UHA7UTidmlXWkz9 zL^4a58sK}>xx?7Celub-{o21Zi_pi3d}cH2^2W|dm<=JmF69z8>0RP3=T8OR3>^jN zKXwj&EJDOEujCEn4ZT;rlJBjMlcuD#PIj^VPalDgQ04jD*T~t+ zOuV3_<@}B?s4aneVGBLC_*NHFNH3(Nnsr$@iENWU$~g5HVh z=9Ln{a+{tz;@?3s3xFVU*mJ!LbwFr)3H^rm9{0$c>`&5Xme6FX#r2~iKJUS?Z2uaK z3-UeMFF($@u3i?gR(^Z%x#Tcm_aGuk?P8g@zN#_ewxqJ+2X!`;My~zwOZl$QKdq4$ z*BsiqyaP4azABc!)Wecn)aL{+pqz2HWhpvnsLJRU;X|;^>pJ5OQO?vjONdW^V{TPiz|EWs?)Vm*IBZN|5-|5$_zi6{| zB%es#QT^ooQ)mssI3$v&MCI`pasKk3%kOE6xPdL~>}F(jw@9F?m}-#xc@Ca=!teU5 zw#_;TVs}Zlr+HkVk5KLtWhT%hjN?cenx4*)@^c`d8Y5JPqu7|PwZ$tG8h5(l53ESG z67$)95F`$Zf#w3<)Ajn)YznU!jXx9etNR)T{T6r`l3sz+ zw*Cj#5LSKslD=!~#=mClc#HHyE>g{)0Kd9E1T0Bf$D>^L7V+j>b5@=q|9_z;0_MK; zm-mG*JB(+@fzTxxc;&=&iovypL_HVrWaC6w6gBk{|Jt$n%wDs^d~1boGrr;=M-q=v z6j$|F5IV>I}nsdF@xn+ElKNq>tz(L$L|R-#gux(v_x^`W~sUe>#^3p;8=p z->#iykNehY)w(muhoqZ}rker&N=c4=dwdG7Vv#9Sa=c|VUXf4vYpph?+QH#>X=j?@ zSWuGlWm7KLD{LguWP+QwB^w>B)y!??gP_O_smdYn9Mm%pK#3nBajKkLhB5}h$wujsQkAt?XetI`MbqyGKbKhG-CF!a^UY+#F>al=GTNfg@`|`kotaIf zk$3sGC0maNo|CdHg|XizA0u#Nah^- zsqclE;snR$4#-*S~f4e|K08ho%vdQX%&tJ0uR`Yn|qnzFn+aU z-?ExT`f5MTszj}@C%(QqI8F0SSKIGDW4h}EDNX{$itKf6rtQf&2(y8P)2 z&TqZV_gC$|)UbT|*g?Sm+2f}H{|%>g=8*QX92j{s13FCn;!6S^SSExwz+U9!8y034J&bGGHiItaB6FaS3&h)9}fkRdatU61A;qUTg@v=ldfWHaCFdeg3|c$R2f z0RUm65;n3(bpI{F%+OX8k|ReKiO9H~dQZ>85ngfU!`zaE8gI>1R-@O*q`rL{iFwcC zo#u9S=(fQ#+sM?*B}IiwA>nbPkB?`T+x6qpBiXzx-gQ34VCd6VP6?e9vwVKQTPMOi zHT7kBNfAgi&Nm!9|0tjT!yQTei%AGkovUegQzkJCpa|8GvzMiDDhJ|RpRv6D&Z*L7 zSc{JAL=*F69T0G_zykdpA}pekJ~6Sr#R%0fnQ3FpH(93i?06Mnq_{!9EZ z0i_&5w?1h?f!$<5u0olT=^VFN%pA`K+Pg&SVqT?9DbW3JGPNlbwl(G8{g$Jqm5%K+ zAHC(1b0#+n6`g-PZ}SZpvYxxL${sg6>SB zvup7MkB{eFB)x2mf3FW1P*(TJ`>eyDzV5U0`+1+AZsWF()vaW4mC(PN?k&ZOAy2Bn zs3YY(SvKT{IeAXr=pnm$X1yV12%xVdyuT>SCJP`5Ffl~FajiU57N?qlw$@GqMGBk5 zO4Eh&X!2Ll68?ugiX0zcCD$!*P?x)mn49p2RINP@&Rt_T0$+J$x?Z zg@w83ONMqZMi7vytXAh>Y}9bV=o*+a&L*Pt>nM^`7TI`Rxvxaq$=1A}wmfoa4b4}^ z*3fLjI~DODtRknp*f^YMlTbqwD;?_4J9v~kf=SRf_0>=GB#7fOt`J{Jl=#vkl+Lu- zt?G!c+U;eLOv?vxLDN6o**`|r=Le0||C0-_HwzNQy>c@WA*(nX41r844S% z9V^K5kz-Fhrxy7$YQ2m=;Lly&iO*(_&&sNbJDygPyfQ8K?CZ@YtX{^pl~~9?>%x}m zmPHEPf0hUXGJ((++^`}?IBR~v6l2R=YMr%6Y2+ut2~6C&%Ka;x{0%&rz*5|MbyGNo zll`_5$6dOk3G3k(L^o&$feI=+>MX%1R=ehKHGnC12I2c3F^16vQVrKUUJ zQRg6#)&d&RPq{1i+JO`>aQnP}S}8#W$lP3po?PMPP{JmUC~G-dM_otVBi!sP?SRHf zob}BRr|(=TL4j*3XRM7TRtC<7Un$Vn)84qQ;TpcxbA9EcFw;ZO6bjPmt(sN_ac(FA2T(2HH zuHr9m zjv{`kryRPlgj!awSI%dFH(p9fZKL>Y6ljK^@isb|4^F2{Ov4zp2ug#{;x~eL?qc7Y zpnU9i%g)Lae^ZsYRJf2Q`;kz!!dY)>Muusb(KBcb_W8-cy->@=o~r`lmnx>)o~2af zT%^8jstmo?b!w7Nami3!-Oichil50c#Xk}}fA8a^j5Q7Av~*0A#T8tMFeZA18@BZK zOi8ANnwC<%f5a09A;!xc$gPytiZb0;;^pk;SdQ9cGTkfix~P6P2gipOP_k*dJ69A| zdGDdbUa5>&1qylJet~HM?zafV!C@LYiI&;c6_PxN>+8Ey zY3*JIVO^JN@wvAjWI*MkRs$HTi{GPisP88)sZ|m%Z18f0Gp|^V@<|_;p$zqE{93-;D}VmBDntC*X>I@r$Mqd?NsmqYNx&-ycLEOJRc?A89pJ zQd)6nP9Bcu5)ANC=$2{zdjVzu^X+k4zikqLCQD6_4tPbKx?Cx~A6-rHLi*v$JADC; zjRmhth05hC^8A;pvMgh{k0zU6kKDIwm7!Etoz|X}pk@1&*c?d5CRkT30j&=ZBpbUVuuqvx;MR0%$b{}WT0(tgt) zm<9z6QqJGB;6sOPW}{cB%bq??KlS=MJhNqm9WR2mgQ?{mu&RJ-#X2xMWPs!_uoEoB zu!x_7NznzXN-EeXCE9ZviTT|O>nto1(dM4lU!T;0041h2J*B|b#!b2=%DzL6Y+($y zylp2=#5f&J21Esn;}9BMwPIWs?L99~tB?}Dlgr`ebLtNW*=uT-BQ4d$Qn zYo4?cUW+FmIS#0gC+^LrKp07??9Q%7*Cb~I`zYe5AWsRoo`?}*J9YUhbONkndBg9I zl=`iO$C<~h4jL-Sc2VSLpIxtvs4iOE?$xIPnVGrX!(c}k&%+`Lg54eFd@OoP)y)h=DvekLcCGC-yllOu%)n&{hFr6ZomQvob(12yoVJBLNla?h(Bo0e)w`%W9*a&fJum7^pSON5O5OT;N|SSyAK zlQaE?y``hgyf$QM5n2_E`8IZIG{>uZN?&RfYc1Z%O$tPQPRKWda(~%)FV4fk6zNmr zKm0&U;pDBQRj(YjI^(XR+*DZh&l~z*f3DhR4>f(&Vbip6 zo^Q$Gx66~T^xbo{*D4m@CxLmRy*mz$7UF>W0}};j5Oxo49)3wb6?t`AygmSdlw(!R zSs@-Imw>m%#{HHu^Co&Ui%He!M5#RX7U`dRjNP%ouX8SSZZZmbQXHdk=a*2TVR)YT zq(GiaT7?Wb?s5~^*JKl|eJD8JB*}EiPM%JI@I&}?(!2As-HNYV`(K|5dT`d{TVFdu zDX}$%W0Ix$Zx1fI>7|xk@1(pw?}^R&SdeceN%f~AM2Q(3@_LZtE87_1@I|dsxbnFD z|Ex{`p`{ol#_>@aK<*VkggKwL!}EagsdDawT=fA$IBvjChF>EwiYiqp4dqu)!UH%2 z$2?L}Aq}O$$p8@*Sbw@|7h zd_6KfIEFd!AJBZw=&{SD&sF~VrQbr`p@+5fm`^0hNBeOT%U1B|Yadz`Q!0Gt&M}y; z-i|6~jO|XX$g6c5Y)HaQOKN$T4huGC4Qd=UH8WwT}W z>v3+VwaXii>UQPx145OtDIYO+2{Wg*d2c@Sk;r5W3;M0vNC;`r-5*W-AdFI&MP8HZ z@SY??27oth^N0O4-xs`Z$DBF3WG%EGSkXoLwEHJqVC}8!U+@BW4#A-cjG6}anh%#Z zg*3|8!2t44{hA?y3c4g%;WDKdRD%+xZ$+t z1_3%Or>B^H=A7=1kRKHjjo|2dl1?~tb@LnwpF7_r6uwyJ^O^S`?LrajHeNG?Lp zoC9=%H0B#3xb8LTtxO}W2t=Ci3@OYe`?PN!4R?v5yX~bJ?Fu&Si@fL%Rat+NFZ7Fk z`d@ypSa*yqfU*oZO;-eEqlCDdS!BTqGi0TrD2J1UycsuRDBH@9>VN40>bKSZIMSO9 z2;2z8Z-`!b9G>8{^G5xK%_!UYg)mcgRM(I9aT5N=+T4M0kN88oyRz9B0Mc1Kunu_I zLTRY@bNPUvwUKIaZ{!tcf6no(mZSsfMM-cXh`My$oo*AYGT5E~24G<*;*Cyo4T*wP zU<|kn0ZoWV`nC@a{pP9%AdE`b0d+p+>0>7xO8X!fSLd% zAz?8_h2Cnzq*zA^E3|i*1O#%4b4p@iqZrXwJw8i|=Y$efuP2&Nj=!Mh1Jx{qVov}7 zOOKqo2Zafa^K&|hU1f~=Dak*R*e5c5n`dSDJ0d*5lU)UzCyLh9nl@j~@dQ{Q>Y!^E zjQnr^IA3vR$*yJ!T?MF zJF|ND`NAule|*YcAlTr33o0rn?M0N$&^n5 zDY;@P!*0WB&rbH0}wo<0@A^Xbp(gK=TS4+zIunYm< zKZt>9r=nz=nUJ^1>ELFYiR=HZbDB>H?J@svy%l$F-jdVATN+9no6^NX3ZUD;jQn?5Lax{}t1wM#>irh5T01grTyX)-3_v}uVUoJBs$0m82r z1DI2FzmkokEN6J69nal({Rf5eZR@Azt5VuHV4B1+l*!5yi%eV28h@f#MZh!r4GE-@ zxEkbfyqHh1aMCGCvacEf-B@J#%!uusH&1Qw_QlJo|7u z4c>ubkrJBXqT_60wUdGCMnOouIj@`Hv7E+03?~8tjp9gyV=wlcjTl!;x9ro7)Rw89 zVZzp3LK4gVHaupRbN^F)J~K*Fhuujp-e@72TD=`Nb1lemWGG7CYVg}w55D_@E_`r@+_C1ert|x{)t7Gx_s4++UnY7zJ++x#4+OG zL|m`ZSMq{^=JBVmZ1;W!8)aKrp)4yaz3QrGzOARol$Giin1d!BoY13Q8ZCsQ z%2&mz;Q@O@7l+Vr{4_CO&V#z?=_`nzKi-#QrXAQd(?^GqZmKTZ*-F29;M6QQRq0kU zEd*S>&-+Q|KFnkNj$w}??@?jxQj1%&V#~FEC!&MJ^W$D?ffcj1&NO)(UbPU1Z~qr- z+4L@gD%4s+By#Hc&TQ~ow-D2+GyeT)6xCbQmAW(;N*|!p`dsZFx44PfX3=SG+%xCQg;Ph=0u``FIE8)sx*3r%i*e7Y9^TQ4u zpezJ1Q4^U#fE!X0E6#bJe*=|rs!X(mD$bcOC_#llW#O!%9(&D!E!@b)RJ)77eszWY$Dr_+*fS6mL2Y`Qi>+Ic4OV{N4=t3W7w{_*xGgIA&`Gi;x4 z%;tkZrgyN=@xCnZcYM2|Q~~{)dfwD-H5SL_$(m5Vt2`$E!1Tq6{G4?daKvzFG{oCP{Kkr@)%;B^jERPiLG z6gBYv14r7`tOmmX@pPg&p?`32SiCAF8b?7@F83a#qc!IS;|$e*5K)i|o*>BjdY^l- zqmnwX*i3~|MBl7*tM|I@wi|yl#(a9y(!86(aquK{ILPf=bsVbIx<=0Mjj{W;4_9Pw zE=Y#ed$(mX5P^a|4Z=@|bM=f8Y3oIVxgujryDa}ByOkcpUwWZ$?^u5TMsc59tSVsco3OO ztS<2>X`-tNx8(sVQC&9O;IKK47gk*MuA-8`F1G{3u?Ej$Ipj=qNH`Mm-PiWzc1ThH3aA8^z2vib-&>zFWx%uYu0>5@Ig$GbCpXrvsRng za&rTn0PGEL*_Zb)>v|A4|0k;%VqdLomlvxgap7ETE00JAzFJ$ScbGNzKi@?06ju4c z6N{Ap4e8H&$vTA8JB!4Qs+#j8H$%c24Kkm8u* zc=iL;H}UY;s&v>RM(x#7d(^01qqL~t z_59~^{>pLA`HcI%uJ=Wq8j8LuLQ~cETTl2hv)zx^#gNQy(OPlg3)}-67#m?w_uKn+ zd&O^f%6*h!3eRGzd+_DGW)ydBJN4pK|Y^1)`kw*hNGH-9kI&(9v*6PyAfDsed9oV|; z;|&f~7zcBb(}PkkEN1I2^4(Ipj1qS4tOl*^$~WcNY+L~?3vuRxl}aak0}`nA9F&U& zQ6HQ({rvbQnxu~jWnSdL>Qbi7G|ZM9EIAtnC$K4fKEr^XvHHM25QVxGe-JhE@O&Eo z%g@9im6N-3NO2aft^lzk2c%`IjhXZ#^$`yi%>kYFxfmVWOqy!S~0Xs z5^V_Q#_UcfVjltO&7p2#MbY7*8?O{QLN2xPr0NWwH*l(*f%fv3nd1VXLf~D20amYG z{QjnY-=Cj7J}}d4DL3)*x0gR-3ca+BE7YYw(;a~K<+#IYRwT?Mj$hm__9nP^XQeP} zU;tETN(}(=V+yiCM&l+jIxQW;lSIcHo+O=PvuyxuPmMaDwB&l z#UF5e3ou|^M)cJhOF$5P(*Lk}w4Q#;n&V+2$+>d)ng-vmtBprSxV?5fzNXxB`)d6H zUnp%|MAVg;UmyJiX08%CMjQ|?uDQ?O?N&-EWOa^LV|E#Jd;u}|dhhc9Z#5$gC=&p6 znJQ7AwYD|;XJaeWk&YIX^NkPR&0QpweW3)SH;9(j=L|FOSj@dFnLZ6;uy=umXQ-J? zS8$;5ij-1jQNbiwlC53-rf{Z%Yhd?YH1EAIHJrUT?y{#gn6t=Ai)5KbrZvd}fouNs zt@JAXJR>ZxeUc+QlSu_OSw^&p5IZiHrE2K+$CIXu zP}9<1Og1(EVHpfnKb8vHjQQzJ*+V+**OdqFS-cqf_;nmUPv5xUJPz_jYO_7>+!^$o zBVxCy%!p->MNl@?>S_s~eE5lmNQP8J)|po`=%J2qEJ++A!o`3YK+$D5BxE;zZ+$L) zYtr93vK9yb{hQNa%MeH*pQE0(3<&qi=FG_S-6g;{WSmXt={$vGTjLbF=w&OY^A0yP z7W2!*J6+xWxWKK{7jbJw9j0wsGh)DZ*2u9nW@R)j5?aZFDc`%1aATQ%W(Atx^4PX7 zOnC8Ps{U26OY@T&1)-i2LZDfoEyE@3I_Z;cdone*&Tql{^BL@ut%4ert{i`LAzPIT z7=oY;9wHlj3*r>w$32+thTwWxd zv*G#BGCeM6hzgEel|;*;NA80URD@swEG35)ilS}w#%L%K)v+0w5zsA|LilZrzqFBF z5DSDlXFJOfeWtRtpi_`-^tbxKT|hsj-e>1lG@rQm zZM!hB(i)p1Az4*&yP}2J$QF;DL3TBi#LEB{2Z4+M zw8|{z2FX?h&KhVQNiEDWxtXXVGn25o_3K3n@7Gf(mm%rm-6OD)_r{7gRO=Rz^X)Wj zm`C}FHAoS zDkwDox3+7~T?(9qXN8|jgQpK9nzhL4fIV=;f?tpjs|1{{uq640G!CNZ z%nDzPfpWRHIQ|QM(n42T*TH`S73OVIWMi`!JumV28K3)!_d9FaPU7ATBlt4FpP>qU z@Zf}TwBv7j{qUbW!gEx{VMf3Ai?L-<^Y`S0xU>Y#Fw{J-p=I*t`E{Nu$$pd->4{6z|LI7}cq=Pz$^cqQ8rGbq5=|u}l-B@e%Sgf)&X>4} zq;PW5C(%V$*B&tep4ntJ?T_r4STiNBrP)V6by{iYnae(Yw55ghweEeZ(Lf)cciE5) z?VwUIJYIHT!!V|f%Kqi>2?m3pc*2wH;*!0c10SIg@-2P(fm6TFBk8Zujagm7$FJ)s zz52DkWFd0HM>sCoOStH4d!muzo7Er#@P&*r)3In}<;}3bj3_}x8Sqdlh5`Gr%9ZC2$Sn!&k0_|-*F6Qj>VUeoL^N! z;XABs^j-F^Eh5%bHhHGf=6lsqn$==7o|NB>LGcBf?<3u!O=%(EgmFDBCH`kkY8|if z&8>%*4nJ_Q{Um&~=Wte}NRN7KufERA$;g8c>x{S@Vg#X$|Ll51s$%mU-VDiF9vpyP zB;jeKB)Qnqa2XQPI8&-=;SmxaDlfT?GseSj==Yzu!^&4Q{IIxHTt2TV)tarRoIUUF zczzagS{Y_8EjTi4g0UF22e&IFhD@u{>s!@TUnB{uSjR|vgX6cql4hPoK`2E;o5$kv&{>G%Oc}=U`no=sYWjpKbNk{-R*_pE%joxEzeQ-P75bP zzggV5wZCiB&%pI&`0{INwt`&tN{u@W55W^5|Ju4O`CZGmxt+t=*w9qSQ?SB`%X_yJ z9qp`UpOxxjwrr1Ya9vyRo3+#y4U*QhG*LSx3mp?Gm;ld^(7vHCa#49xkGJ>=W z&51Fk1{U4FXHs!^E6JN(8vs}_rD>A;Ij@ikiG>wf>Dpsw6d&hyu2!qyB7skZwAmdtpISK z&s!>##vpDg2df5Y@$8D`)%&&MY?<3YBD5 zt~qA^FlL+cZYf2X#a8W%J2xI?l!LG`UpWnLM!|c>;rmBhB0S$;?-5Fqf1Vp1Py=g#g{eu8{ zZV@gSed$dU^fDm?CMHgGGRvtZV#~1=I-y$->`j;<5mubdPXusOdvWOVQ@k87PbV%z zV6sL?NE~I-Tmn;Xtu`qyqVyaWVcY^-LMzWFfPNBO1`ZQbwxxPd`Lod;zsFHGsCDM< zrJ*JhTxop^EMWE5H+FOGjPhhbyb-&bfTrJt_tSp}(ib9p{3S+Jv|RFMo6W|ygO$_A8`p~ zNKe@LBCK%6A~@_C1dBjfO2{578&NZWyT`ld$%mOw<%Y}2H-R6F+^km?uy$k>F;Y@N z5P9!|fMRz@Ti10B&tFR?B$0P(??3vl8l!8ayLZSe=$8hGy(tZe3_^nceg86=6laq@ z$(o7Iv@DQ)6@5ZLaOKG@Nse9TAPgZaiFfMhBrnMC`&Wc!<~Jkxko&??(5w;7TlF^P z9i~(5rc#TlR5Ph%eS{2dK6P0iui~CYJlEXLJ+?zVP~FKu|0^T3JlLVe?_ zQZtz%*B?k~KhMLiT%!J1_+(xz^yuX1rsUght}cPeBk8F(k_8zeAbp+FbF&%@9GNGr z$V_ljJFu_vF=wDLe%_!Q2mEn_U|1 zQh+{$nIAng0~mvODs*Qh7%8v;NLN40t=PxsCeFq%u58RC$tco7tngK_8djXixz?x5 zihan5Udk{}Av%==n~*NfA3;WMWjjra?YOsQrnq*2LT-e3M-qpC|9z zZ=)Q_UYfEfE@%$X5^N)3-7Iff&(C~)yy1W}Pb&|ND$Hkob^qC~-w%I&(MiU3$5)}h z^>4U5P%!lGlO@pVrAs!leeY3V;|Erh8}1*EX^H>dD20T(C^x*l7$rPI&YOAY!ildj ze^^faeTy1aNVv073D(Y%h%*i5 zUUk%rbC$x=l7?!mNX(|NbdnR784Nr^YO5u{(BuPirbrgR5gk&RHj<*jRiH6#`e5e# zg&-{JwGN}rhwa*u2aNz+rdm6we&)RX+pm{=5+XtXVs_TT(Ih-hzI-*vVs39X;qe8& z)@QhSLVxF%j!fSabddP?A3l-3Z|{2_M!(bI9T{qWwsUr**jV_bQ1{6MjPUDQLf<#B z0Y+s{na#LxSI8ombTYkAg+8wkqm%M-bRpyRj%7S^`7o)<=X<>6RE$Pl+Nz5ru;qF3 zN&ze|0V8DPAg~+=pdxa1J+&k=(rPraMVJr-B|&LH3rP?n=99@2!CzXRFI{6z9q4S& zJbh4S+H`GXWJ7Z2R!Cx|5!#>_OT^TE<`nxWItlYSE%|s>MKd$fPzt|Ts)(F5l8QIh zp%=Lr{Hjf@`7mkzN0g{igpsaToKDeeF}mKSOpi?G2PcJXZ3$W?0wRLVXPZ-7^H-z^ z*9)$HdZz3U$yOWW+#P5|WSa%|ee9K0=pdW$HHv=yLQ2WI@D1OD1)Ff)T>ak*DTgV> zpe$Cjc}n_rEd>uWa{XdXHa;9Vktgs-4(ZDT4ErZE0$#~g{iZrWTtprkG zW(me;IT@yd%CVj0Y=Ys^2|2QCundwDs02|H$4;K|Be}1ndXYa z(YSXtr+^U6It6eQ1|L??h}FC(E4Uhy$~*-fioB7;)g&H>&Enzl?$-e7n$=C}Eo)?9 zC8f#$^=9JbWsC+*L)?O8gpM4ZuBP$=mZks(*%;UO+E~rS2{0r)ynB&C4bo+@U5wQ* z?hA|%(2_kNgtujJ&9PkxV~2t7Y%t?NBI9U5SD4ZPL;XsZ%zC7eQb+ME*P|4M-RJb7 zt^+TY91Fu)X*Z|&Kx_Fz(X6p_CSNx}n(%aWx8z<}S%5=P5x3mC-lTS)3#VkI+>hC5wKW$Vfi zfXB+Cop!>L)dgU}*jt$vNgxUqzwUC~vIB-)UiI;*lJC7#&yV2e<6#c59I-PsX(vZt zlpm95{%r2?7fL)GL5ZpVXgtGdq#e@2UziNx%DHSv3WxGPe}BZC^^~9%3>kX& z9A5f!n#mo1XORZ}Z=Zg3ddP~8tSiZSC4}AM;^Bu+chicLU>q3B|BgR0=r(zA0_ZV$ z`L_y=4HO=LDDBzgRF@@(kO#P|_+d$O38kQRR+3JDE0ZBVmdLEwy)Mo77zQMS|E!K> zB7&8D=xgHVQ)o`Y{cDSou=0Y)qS6o2SPuxDl^7>&&_Vv)i{BD3Ija@!38#DRT*C6jOHg_T81vhKT^m3i&O zSk?9$(i3$w{0Pt-d;PXZmKb%|T{Q!!f!N1sQAwD%+_w;zjriHCh4WTK_IQtqUheIj(Uil(A5r@e6g}GA*+;Gcl+e|Y zX{bt8o;HS-lQqgv?wJ50t%di<1 z+9g=2paAjC&AStz5Q!O5T^$;Ze?qU!1hzX=<$AlJ$UsdJ-I z3kzg7Pv847zN8ktp-awYV4^^!mnYBAY(vUaI552Lsmz9f=&a|1%jM;DxA&}$@hF#g zXv8dnivlDFKTT2}HPv;50W?MXw+RV488CH6_0OIN&!cZ&qF$^rz-Z~3t&R8_3|#jI z@}HKQj*A3z$2Il8fz{_dilw!Bpq~l_zs&XorQFiA_6zfYZ|cvPa??N(7__XfOqUpk zU%mNF)IUv&$BIu;a170d?uaFaN&blq^cz#nlj_eFl5goz z&GsS#@Yvd;sW5ll9m0d`l9lUp+0f%E=x^DN0Q%=y52)dVm2u)qco_N~W#`H%<^A3Z z=A|*G3|33tWz30t$-hm#-pycx1`QnN+u!^sFS(!J{{6CHgGGheN^bDYlxr>{o6nfK zl=7tcU;;u*h~_Y003D8*aL&3_E5~JQ)3mCX6|I~LN9R`K(S&U4XVy_vwu(a0G>*HG z{K+V3a~U+Ib=`V`HU~z8aQ_U-Rw=KD6X~L2?akWEc>01+GJt*;GMSw=ok1YD_`u%K z9ArCm*^MM97?JteU3Uu|=03^=vAs^;9*%oIh7;0f`IxnA-jq22L`D?Mxw@i&G&h{B}~ZR`|IS^GWl9XH}S|OVu<2 zSt;2)A_O;0dOF<71EyZLqLU+KB<&fQw_|Po&+%p%E=e}32!bihs?O(x5k2EIsel9!|0xo=kFHO??3MF|{ z{}k({wXF_l=?gGy$Dn|k#nHf*75=P^QQWAv(n7LmiA~K6CW&kasPto4hkuxfF6aC` zuPstoXP`;1*D4Z-A?Q>UNoyJ&ShKq|3b*_d`q9%x3{lcwBTNRe5v9i{{YHW?Op463 z31{%)M-DkQBQC7rnYpOhxQg!eFrKc}ABFW^J|T*T1YfQ_nLrEK2wVL%LSVRFut9Q^ z+Iy|$;OJ{VYb!piU9{V(PygV6YtXP8`#~UuAJG)t=l~eF1($XC$BvSgO%!P2M8rp5 zePYq?YFdJ=znvChWr4IG5()f=EF3OEV}P?U6CulA`(N45d84y8kZxds(?vWczOMrP>z{vm`oCloM50Qd(*E^|G<^MEff5_ovKtYQ4fo1YVmG(;Jm$cUud0 zf)LNeuS=a0{950O1t=t{U1&$HTn$xbKPWL;I4J$Q(VGBhS8{UJ(iixIXTU}3PnW1h51lu3 z>w(ymSYf%tFE@?{8qSCm=087Gf0dX84Kt#80O>?vx250}+`EXHO=Si!##XFt0%Vce zz_w~FfKcjWV+%{R#9M?h*A*b{2Vhw_;dd6InT$91A3tOhfr=r-r*bpRFq}WH@g)>hP{V-?~e4 zdLXT(s@hG3DxCbSM@|ZM^w8lYI^E>4^~2DGLjsq*`d_EpnI-$mq4pIJFqRN}TKZwl z=;h>($7Q=~`KvirUp_?K{PKPv=7*fXd7z=l2H*j3B8kIb z&DnqlK;_NL%fv5}>xPWD9AR80VERMi_ZhDc7qtv6X%mvGWVDh9GNHV*f!NOtAX=el z1cLZbz~O-3hZYK4JrOktY%=-e@Dmife&e#qgr9l%gRft6_OmYV%i#GBg8A!)`x390 zTGD~&>Cc5di4#3#j{N(A^45le(gm+isQV(T&a<}iwx^P&Uh4nFf5t?PoeHf@0sv;3 zMNr`kzJK)IJ|k( zi?pf?!0~j(ADz-91qrr8St-gnPI%4G*xlKd(4wGj9xlNNmI1GK=eXY;uGE<0a&DEz zW(KL2yciq90Km03jbU4na$isD6FScRTE>bYX_3Npr8*cA)g(506_=MwDbEv+GrW+h zec|GHqRCrN9KLS|;&XwwyH!a^To>sbK1ZY6#m|x;kYg~+L?||CN`T)Ll5OCiE74}p z^Ub7=U#sKvJi*S|>-KeYukH5RleIOf&L z0cf67Y1;Yoat4+-0A|TF7{tKNqr(cf2$2M{M(}aiZuoFQ>p7AA)BO~Bq7)aSg8YzY zp9;JHMlfpVGhW&mG+TCa9zj!^C&m5W@BbN|$Sl%^`?1AyDw;9w)*_=-Sy&Pi58pVw zO#eMy{#4{{E!X=Zp{qXJRXN2&pKjz=a1WCNjW^e-A#$XYK2jY|_ zo?#--;N?wbWh(_^VQLl`NCjvL>*X(qjFc??5b_>7!#9;COv$AANIn#36YxsH{*fuf43) zl#ptSIW5<{5y)sa@!5^e=Z%P<;8X&7yK^YP24G0 zx$>#u<`==v{%iwa2PB?P_Sf3k-Fhvwmg{p?{<-;PzIF`$DMckN*!9xEss6THO`?Li zx*u!IX*JFqH|>cWBpy&-A`esgQ(hH(CleyjrA)#G^X47%E%tfl6;?R8a-qj?VPX#C z4IPuNp?WAq5DIZnxFFMrgf(YC0*j*C?BsBz=@{YBflI#PPYqU=b)EcuA?SxL^fUKo zZ{D_>#KzX!>NJl1vO{vX4DFeufqguCV)%v2I|FAtU_h7q5rpX4W*r3?9U6|GNfN(_yVq9lb zAM>Bl{|q!HvOUMN7f{A41NQpvE?v~ztSa@eckqh02YzbBhA z78X<2>Zt@Sb3VI)_s=6NzeG3vjcTt!pPFl@q+QnU64jK9{JJ__-)5mM394kotY#Ok z(`a+ocQ|>t)Y&5HIWR*Lei$Kr+j3FUu2~b#Q81c%@`A-d7nz?LnEU_!yp%Yz+H5s_ ziR-fVTPM6YFf@y{Om}A;P0Hf%;btH-H4&Rg2tnyaMZ-0iRYz*23w71RW6d{no~)8> zvU);m*DZ)ww89PEVMU3|ml>Xe&b?ngRrb4P7BfmBTnP+~IoF8X0K?%X|A(sLMr!$W!uF_nGYn1jsMhku-1S9STLGyJ=m1CrU8%T z99Homx5O^va${ew_m%u!R*g6rS_4Q0ZayM7oJ=gixLp2sorl;c6Md= z4|ck}l0%__d)WD=xno zHGeTJwtJfTsXG3p?WKZl@1F-;?_>K>TxZJZkdg*;V^m^E9s%-7Q-|fZHH`5YEVVfT8iw<=h&Tdo{`nMLhPddwfy_%Gzha)^HdaQWafzl&Z zBEi0RB(2Hc1!e~8@H;@Jl_$izKp&!uNT~PfqBK`k0ft)=-NbIxXoQp$70by~Obm*o zh8EiV8ogCaDkLZ7OtU&GWZKYsnV86Zf*x%PGOR4^pq zpxosaT~$E>?lRL7C%hIrSTo@)NI`<=z@Tl`|wV^G4wq=LumZf|;2^L(*JYL(x$2 z2(~`0_S~-y9Y(LW8=H`#oJ#+O>Cg7cyiy#P;%PJflUl=d3h#&CxB2?s^D2Fj{Ahfc{G zSjj;Q-IeA?m!Bw_QEL?ghVBGE*3{>PE~epD4Tn@~MwBn8R-hdC?_Lk5eg9_6)vbl? zZci9~0kMmH7qw3j7T<;8e?8veO0riIb59~j5Cj+`hSj4+E2A)(XYVB%u{S(6_{>f< zDNlUG8KAZ=GX~CQlSC=+i}ER+l^V_MlO*-cFuoMelIS-IZ27}?{pzW8ROVuo#>i|^ zKUB~QWohXov5(CVmIFyMX+vvt`G!y%&uqi89CBEe1CP{>iiQe8M1`wq6KQ>Mh9FTK zY5Hor>E%dVO~B-!%L*)Y#!Z!{_s%c7qaO42Odow~cgD zryjO;+LN{)DlGKTdai+6CX zE(euG$Ifc7i&~=G9O!fsW(q|%%NusJosKOQx>h=i>-eRpwre}VL2JZ<`8yv?L6|$q zI#Utd^vb73w8Lrmf#nJ9!k!g@60zdvPN|WgCS}E$L`w z;%Vl}oH<`S>q_K}F^k3y@tM^6lEXy0+uvUCawHz{2Sz?&2u6~|JAr=4C@9}f8WPB| zIZxT_kfkc0xEOA-n#!EEntf{yT8oY?H?2Qpr-LS4JY=EKt7WBLqbPA?L>k(}>A+uv z;2N>8Q$vmAWIJtF_z*mL4nBQPvY?}OnHvj5m8t-qj3wFltFc7-5kr4vU2~k6qZ;ii zjDZXpSPeu}2)_1eqAhK`JvL{KIroCZJXJr6t@Bct7kyOJ_a@4(d-+D5{gcn#XLST0 zE~|xK5H$aL;MQR{GKRqnWwV++NThMpT4(#Y9wsBsqDDtU^PB)a63cF$+g4~u5T-ld z_Sw@vN`CklbZ*%y6KiizcLIN~!x?f=h6Vn@ulm>xN!f_65cktJfkeMnIVa<40fBnYMv5gP1x%Q4 z&D@_@W<%qMlm^^&>RRTLah7DqfiD6)&9E%y425LRaV{-yhW02#sqOmS5%tF8QMMc* zR3cU967V_3^R)f;gCGkht%5UWFH>Xh|7g)tiYosQQe{@2(olWTiL4_tzK`ZKiRF0);>*3``+Ni`o7OgO)hoheQtbDhj8$f zxc7mb^HDh_v5vw0vopCgW&;}62_gl5-y{Vnx|qP2HB-9kQu$c|Xfgq`3m|^CrmpnL zY4klSSVv>1*ra)sTXtTs1dCPN{6uz`SKa&;f8pl1?v844r?R!7(y&{GA!Ukim- zwj9At{*nd-QaSEejcm&qhrM8D4*>UZy-9@2%I55@MxmZ zHxI{)!&iU&yY`VG*nxo@)YB%_s8!&r@>byj9*+gUW~e$!asL$+Nvh_tZDLl=FEhXl zvEr-ukE{=DarMt7L4w_CS^2^PR`FEA=|7jCO0 z8HgY4!Zdd(TgSTQ2z8vLFRKD(gbL(B4fTu91Yu1Es$uV%px0XK@`C8bf7Off{K-D# zPT^JJ{p%-zyJy>Y|OrK=7pn z5#)N>pj1_Bt-79qccLIyUBk;#N#DqsoT_WZC`U9z- zcZ7x-xfcs*0p)PI|)V zr@6F(wvOs|*ykJCY9xE2C&+FC^SZD4PuPE8{P}nPPgQ5fy|T*af~%Ea#y#WD-}@&I zyZ&<}#(@F7RC76>=J6@cj3Nr2M;yqY8UwR0IGDjWsH8Nrf@q_%Z|% zBQ!XbQV7ay1=AjRsG*U?wi`nf82q1$>gv~ds}Evv`d>~)uCW`{7Z9#y{m+G=YfNAr zf_Bdj0x;a(7S?ngzFP|-R)7O4uL46fJ-{PurdK$Fk(0TPlk~=wBMpkxRaYs}eM#uV z5H~X^x-%{i%6=qEnKH3F_&I)rJ&LlkOji5MG&OJC;Dj=b7c((P%=MXVW2hmeIYv}k zneW}9mJ>1$T$>k3O%%nrH$%Rc11$-vbI^y-xc7@8f0(-SaLMdbXREuqOENrEtFj*R zPe0wQ6;YbDqBT#*$-!Gi3Q(09e$z zPXHf?5t``v&GGLy-niR4g)YjU52{j$K>yLhKkpU4D^01lZC=#|(5MMBX5~9RytPiC zE(a(r1kn6i8m!!z=PcbaxQUws0bqJ{hC!7%+Pr+moTcSH9AVCB2+h-=F)irSH|#x3 z@nG)e$r(94IOQ4)|H6ZbqRkz$Nth-8c+#2v*EN!KD^#`q#`im`eqXT2-=RnkC}L|= z?bfH|xJq#@OZ%BD+~uG0Ff)rZffGHn&%9KYDexaYOgI`b*yh%0-|CM~%M+*win14NB7sz9P6OJ92`g z3_vEhUhpG>0o;}cX3J$SYhu2OMVOXx>OinHR10?|U4_nf6|{7I5YKCGKE)Jc%nR@1 zLk)h)F>_=yjPAAdf0<(+jqSSjFvYAO|FnZ!TB{&_-P-n}!!&Wa=%k^D93(IcTOAk? z8J{{-z6~4um7QE&5*gWfnxMq@rloUEgLSsW?|DJ8!~&yD<6LiCA$?)hYD z=HV7RJaIYXNw0f-W&wz`CE{VF@XfJSJpxTWPn``^9(q3n!vcU= zpJK&6Pn;>IjH2Dg?8;VaLi_nut*V7S*~JzI=4gu8T}D}{ALlVh77p<+PaRG&K1pSm zcky_E@#$lK#Q$Qhn#AxfX27>}!!1=36zvaGj*uTHmn{@i9@Z%@9k)l^; zEw4TN!PVQjltIvho#Zj0aX~?}fM-y3`{3{}W89(>Jpi*M zXI3URbD8*fE7B-Q7&i2!C<(yp9gx!dvui|SsDRHMhe6KNz$T&>BUUWK&*&AeRQd8g zK;OSWJr+DBNq#M&(z^AcFG}g9>;Iy?<5XvpqODy^Vi; zBfnR$x1r5@XJr!n`7zEbQ!z@f~F<)vv&C zv~R6g9x^}2LZ>;MU8kAdQyxxJjb{;j_Zxmn{yl#2F6;KCDEJ^_K=g%gT`N}znNZzo zQ6-QP;~SJsv3vV%Cskm3fQ`Fy zo3HH-X9a(GKyK67Geawm)d>%)sPm!J^6C_`^|>g4&$+YLmrpeh#&KVMS9FmCv%P$o z@%G!>as$Tnx8*|ZyLkt4|1|U53x#xHZ!@nq&|ZY9NhPZOt99(=ZQ%)YjO!oLg)S;D zRG$%z-HzeuH_-gGIbzQmv>^JH6Rr1~?!_ArvhFtYKD|GJNw{>xN(c>i{iQ6N#whCsht#m(fBfZZ>V z6ic|)aa5H6%Y-3^njV>Z-cik_uci^w06IY#t~L0LFwUPpN!^pzx3-r*UpW5>_N%|u z@sHOJ%8mI2issC-G@B|0Kz@|U?~}&@g35sEw7^2%x1Gkygwhc~dINFb6xj@x21St7 zl^yg_5Kx-NhV`G9t|wEmW*uzJ*MD9-icA(9G-`!kN&v3Y%=j#K5&Pk8?$7CT=PEaX zTXzt>#xG8VHOf_f(HJj?qqF>=3&SzhwU2C**H%LK<~2gY?`x}FQg>4q-*Empm}O3J}_m(G62-0RaauPz9v6M2Y8nelWEeQ~fxan>=DjE!Ei6Za4=-`PiNh%=xM zUB*a>KLm^E4|KK#QcUFuxmOt!+`WBX+E0y=9m4?wZ+pX z>CA0rVPM#Td(XMkKb29nCPvR1?=3)7fX5)zKKfAUJ0$es7m=y2yjvVWgOjbnSNb^u zuDQPtXz$=B*a+QE8!O$A1FGDZhj`NQ#xObnK`I8BnFR&Vv=JRbu4l~a@10u1Ba~`d zawcYz%;qEF2?(xV+n&~hvTBjfskH{C9Bn>Pjy~ms!f?yb0`K@)BzEjySf}6BN~^i| z(n_5aq(i>lThqh+tZD;lA;WX$*4Hwx%9s2g=A*NBqP|;#{H^3TEOhsR@((=qVZb$~ zQ}Gx0!vMNoaDF9x{UZ0Bw%sxQ8>Q;#k=_Ek>TIt&J)!Rp_5JzJ3-PyE+Q6y8jEj^q zro#icIWyxLE;YGkA~))H@N5Ktk4_wo;+cpta_S-P2v#CWF0z zk2M!{NQ_On#2-UfMZS&|KU}kXzyVj)>a)*~nmIqZQ4scMC^-`;BVYsWH|}4xK0*TS z#}9rcOX%wsuKMg~-$@5r56?d1%ldv0074WC#)}hH>%ctraHWanyFPd&uy+q|@-!Jv zQHWAxf(syNU~|Sl={!qn^^wiTecQR9FBypQ*GQHOv7ytl$_s=mIr+s>^GBfp*UlEsW8R0&C;W7#~w2zWSL`Xh%x6MtWhKmB5} z#i!|IsgE-kW%0fF$4@#1ls^C zjkixJr_pY|mTh_(D_)_*ht<>H(O2tkO0V2+WM1V&&->b#a{0_%M|-;uF+C?I4Dke> znNmjUVZC1SEP0OunA!Z+=I#6Wri@p9IotHz8|^+%bHs_q2y`N{T z^`j?4`FnsDI+5#NV3P%N=Qp^X8s!JJT1FE0n2U=B|MxhU>VjX0de0Ka|1Tq6P)Rh%kjTU7YUOvU3G&h<4^F)yKJ!X!1?75=1H^@~zo5UFVcdn{&R>K;598FOcizMS)MlK?J*5Zx; zV?G3fVwUMl)Hcx5jDtyutE8|FF#pP_jdZ^C%AaD?9vW$4?!PR_>c@7W#x%!Yo1vgo zwtO^dRT)v}p-sLIC`hnxK&PMD?CT_EyS4wc4{Ggd#N1iVedR2uS{Dj;gwKI>OPSWM z1@R{f!V!HgITeuaBpa^fpX2>M_7S*^XJgakPDq%6XO_GRbRK126a%`12-^8jB0=6B z!YF^>US1ABio=kMf@o#|(ZS0g@C}h4hzR|y8ky zln#WL2p3|ULY?&Rnjb>gJp&%0>4W*#aWVErKmnuc$2EQh1(9ZI6YSKORJ*iBEKL_Z zAj1NWp`I0yVW)oMZRLo>gmYYgl>p(P9;1BHcM>-_bc)E-z=6+G6CNSYDqoP(1}9>| z0J4m<9aNIfib+Zi^xooegM>e*qWYv#zdg?lr31*z`o#npu!DC9cxzk#B6Fgh+!kZ4(KevsQjH%5?kN{Atr|o z7i_4iot%7C3PS1TkUy?d;3H zb3cWnkOh`X?XTZN%R;gz>jq?+o|Dp`cu2bA~xB@Q&OSDOy7rZ6|w&Y zLx(gu_ME-;ZTUoDv{Ih3KMUX^2`DU(jFdvgoc}gTZGxv%d&LVk*TZ-UE&{&m0)4OY zH@oN@ssRk(nd{;G)A6W-k-yIOrz7b%ZWT%_Ir*-ke-!~w=HKsX^ihpig84gIyPO|> zOjv|)hvdDT4wanY+57dyq`Lq)?k_fWl*uyXrnyh)`6T)IBiR)&W8-F9}&G|mKYQT-RmI@p}dhcuG|E@6$ zZ#ozv7vC?vWlhqLXW2(u=y~w)aTfFY|Ekrhz4;pc0S4>CT4A_W>Yri5TO|M{R0}kF zhGFL;EJmppF~HB8X2%018SiYjxg{&pC=P+;u_t%r+&DGK%v(Q&Gb=hi6o3rQQ9u1k zIMg4t#?o!LqRzq;$bRLbawzW@dQfKMUnUexiP6Yck<$b)+0Mj(08VaHcDel~`$HQ| zvE=1vOC@egPdLS?CDmU(HHm1I(wiKtSPBa()N^I?RGRTTTTSYVtgswvpX&0N`{ZpC zDR3v)lP&b=F=FI_3u>bA>#KVy!2T`1aG+B2lSWRWhs&v37na?-P5-mcegY&}Y3!BO zr-z5A7vE2JV5%#Z&fNN04RMUZnV!4D#Qcv~F?%2abS{&QzxN={RL8CK7&mz>t!*)H zePB2zu3^L35lK3q8JiEeS^>daf88Jx586{emK0QV-E}RFnwnKc$5c>34DR3%Uf!$M zmtJsS(Vl3VS2|M)tsmAHgglN9F`mHpV*2y|?In5E4!*kMmvdS{jWp&IZK@vB*qNl} zZ@yisVamB5qS25u8b9vLyhHgM22Kn!7Vm6sZVr3jBfS*z|HS9LdY^3Q%A>y?2jzL$ zLV6eAGvd0?@~2Y%DmTkbYjz+ebOhKCfFM8;UDoVoRi1_uz~VOrbl8|SHpBW%#U^+bEX5LF zs_KiR#+^Xb>O&d2kp~|KxOqkLc-h2K6>vHLXe~9HxPK+;l?EkO!npso#P%n_37a%I z6rdka{HIm6B&K zq)h4j+U>>Gp0j(Er+RWT)`074K(mWI8v2U#?+CG#=KYNLlONMxcBS9TPGT|Lyk{)z z;C2_sQw{JExriVN_~>|EgE3?t?3Hoa^gx)+tr=^15iriwR5u+XH{r^oN@KsV!8Sle z-}?<2WkMf|Y7{>zy8!Q4u${KdErhTEQE-I-x|z`MLzWg;7Rv@l%%XkRLx+d0q+i*= z=b_aB{Enp$EX__e@H>ih<*sw=Z{WS*PfXk0em}eAAgALrkjtM+#XRpwj0|53oEzim zS-I^44No<^yNhMGA%H-#gK2RuVgq-;J5J^0kIy~&NpCcIyf!2jOX7he``^27 zXpIf-o$__WS|Ow23?W1LnjA`WBxGhdU8>UpVAU@I7C$&SdpSC?OZkdc<6;P=Rj9Cf z%YJJUUrD1YE2WE#)cg0e=;IMcj+NkJZtE^G1fdfTNvG z=+faLEyIjy?s3j2m{QfV;i`oT|i*NbKdQPTU;0cM> zp3d6Nvc|p!>;S;gBG3UoM@~QtDlZ?WJ3$eMEho51YwL!kl}ec1Due>-iIHs7HaD!5 zW9A`4tCnikl8MQ&N>+va(t0JyiJ?RAk$FpxL{|M`)QW2X&iLtLj-N*&@Y$>Y(%$@_eCu`mWr)B!=$%>3 zlG{Nek#!+kmr_Ol-o_u)o8Oou9MM|V{?hd|`}9|5TIdZ}#Vi{|e-Ls2q! z33p+<`a?XrRSVK%1iCv$M3t80gp-l;_P@*+^OPr}ja8Z-?N+s{e8&G3VwAk_D(i^9 zoDE-sKY+0!P)v^*$I@XDI+uMe6&>I4%fN)#bhlPdoHG?47efHzz##biXU+b3O_INP za?@q8V$=L~T~6|UW-fp;N(X7*rrGx;a_InI{T2GXOy#RK5eQiZJb?4|xU(n1G{a!A z5%g$r5fK8Xh0uqqCPswjYfB-^XX$7%PP^0$7cdK~YZpEs(K z$q6>-%r^P^K)?Ch7yf+-4Wg$Qri`2Jb%W_3r2bzfI|(q!I?bly(vnr~?KY*x;HzlD z+*>?3DVi>c=#vZKjE2hfMyXb#|ANdBN=5+|V~Ju^QAMI*ZnON2!wUYb ztgN_uAib7OBnhn{W-rR{);q;@FICg8X@^9qB&4Axi{07@`tVmDCb@}KmAD~F;6z(r z0BVJz7hk%4HlpU8UyMlTE}pc~q#E(7T{f@0nLHmTKh`@FKtob&0O z(r)a~JhyvG@yU!DS7(8jPp;{4`6JB$D#d=VV&c51z0q1{)5m&=KNQ3>)bX56jiRp9 z7C3&!I&TzA=DKVTWnJCYtu^Hfkr}OV z6Z!Ur2`2EK>X&-HZ6~E)Kg$17dSI2kYm$nBGZh1v!Ls)=)Jmt>oo4mPPDp6)`d>X9 zAN;N&)9n*#k;UfXCr->3kDf;0&S`LIIyimwzP}du+1c6nj&y{r!0R_l0~l+S94tT0 z6#TBF@JXF=1eMSs+%SN|4?Z{FN<5_tTI)L}vxHcG*tgUjU0$-p`SgA=a0$V0$FD@t zCg+dgfuRu5tgFs4@&7Ig1VG@cEwwx-#FiMrUc8`Te<7IyF>RtuM8N1cP_uT32qeVe zLLNkl?N0aEa@j{+ z$y8U#NX$sQr1H^&(wql|sXssUV(#~i!Fmo)XBd*NNwzOAKf9I{N*u)TH6|_L_AX15 zL3OA~ojy#cEm*ngYG5EBD6)+D)31>{_k_%iGQJA+L$}b2e|^jNL`%Pw-*X z@+_OX_;L2I>$c`C;2lFn2*(TeVVfP|*I6}f8wXO(+o~ZM<=;8%1@(S+upP1E$b;{v zqdYPRzQ0i^qRCpK{8$Jm?QC`WlN?+x`ZMy{y&s!# z*GMMj2slWC2UM^+N}nXb6@Wm*_rK>6Ff=udiAPw+MyJ60=IKP3H|pyk2sKGS4?@kQ zNQw&XmI6#>p5YfuaRqzSuwOvI0B_#bcxV&eHIDP@p#0n(=e>{TPC~BTu*o*2Gc|tN z`P2Mz0=ciki*~!$QyDt`QPL$D7-v#J?#nN#^2u{U@*Zuv%IDv|E4s&gXC4Y&-{Jzh z9jhv*BSuG5vzHDDe(_-%1%dM_NmGO)64k86lgf?RNR94k=A~E@E+smkl4hjBS8n7V zf)(Lm5CZ|Q+LbP4Mb}b)+0cxL<_k4vpKQSzcBhB1CeuSi{BjZ%3ouRQjX?PZ6pS@YmsI?Bfw~0Sm z>q2o}>y@t9E^L9Ef8lSPk=M}0lX3h-O;q_yXFEkaR?puAbXLCMi>utaM2VO zF;3cL;v*O!$n7+jM+~CGCM@1inj-*u4?BT4j9Et4>C`jM2)0+~SV;2cvRq%R(V#9} zO6bUq7JG)hi%IvTQ&~jI}u)ocH8f{pcR@bw$?jL_OvmD!0Kf-b*tmmTJ+MeIM-Ly*+|Ht)fQER+PrSOES z1Wb@Gh}v$mPmqoXzWE=(2R2Xd-VyzJTV=!iqy70~M8e>~*H1c!YuR;lnoid(kpzLd3pRp`T6ohzR{mIYOssYaENPCFffl@*Ay5hM7rZ=EDNdml9Z!*XYPe+W(fPZt==x-6N}(vh_vTBEOv5v z(M!0EOy!LA-o9Xaee3>P8lgAi^(Lwc*7<)Geic6ut6E|7?0Co#Y&iO+k5vEi#kD6_ zwIG2Fqf>cGU!3y-xicB*L3{RKr0-8BJ0{VK{n4u*n{vJlMuz-+%&^4rezp=bXc-luXfhLJunV{d7G^o>n!QTKb`}>Qc zJt;Dy?=I4>=o*ux?H^rXC5Kw`;2$2g_oOQetLGL4a1mk(q&2v&C#hh#{C)@CxM*_a zY;UB{xrIoh`|Qr#kKJ%aJM&(P%74W6e*{8gnWBhPvbuSUhV%hH?%rvYJ8V*X6vQ1q zmC=o421O>TTNYtTr`AkG#>WMm?)`FQY%=vz?mW%k#_5|#8%&D_f-n|is9%jh)OC=T zkx7i1*;psGs3hy%n`Xs9-?c_)o=g{ePFjLVJ4|k9&xcQpmZG08_YlLZiTm5zto~+R z;T}@>svd?*^U!q~dChs90-b?GC)nkj1vp=RHK9s73sd-5qvvN1Z$yc$`puj!a}nD+ z*5#S|+&4(8b}arRR;==Ms;=uH2nVNNJSwR9g%gNxZ5|8@Na zphu*Ff_S>-v{@-;!MK#>$-?oDqL2=fC)Wn+#5GSTucTRE%oEP3q4{La zR$ijsk9zLxe^ncEQHmyCHP7POir6OKPsf)R+>(Qnxw;*Z#r%}h)MVv>vUih+UT z9vWBLH9({3i=pBY{hoEC)3#S=K(*EI^yIl&59w+L&WwT%PD+QZIQKY19h}gC)aVcsc^WN=1geFCWXC0_=u)Ww z*)+C+^IBuBLLYM&5-ymmXUlAselA@NrEd4Ce zIH1Ua8p!%Cfzg~q(@+5ZuSInF?#m(1m&z^m?NT1=^7J(IJNH$({O zXiD|Vyr8M*B>x`#?G6=&7f!%pWA&HiS#=A+c>k!lKKwh^dp)is@Hk)>E<(rlXg)@Z z-w76qXKRtrfi~&^cz4{ZKfix&HnxW3(;()NO7-_5j$ZA~kX^I!p_D`A*R4%@$yd(C z#uwLqSUgieEAYDf@c#X)fOjrVGDQNW*QXXZm?nifv>3+E(IG|exy&OJ51#Gdr) zt_}Z>YEl2a>2UY+q-#$nHR6`Ue(RMQ&;+2@|7ir>GJXqx3vVN>tjXt23+7d*+h#kx zWcWjTa`S5tW6*BWlM3}G`7;$#>_E57GlK>h%QiF&@H&L&gVgCEm15syjIyQ(J%@^2 zx)}f_t`{vmGw@d}pck-_5U0{G5)*rgc1l5vJ2J$=+qy~X2*ylbPY)N7-rDBCDzEG&r?$i`Lcxd5J zSLpbzD&iUQ?!Eh8R{wn4D7ebw=pX~+Qkj5_Rj^jDDTVCnK2T%Zk?Ly-od2&esVOix zoRb~gF&N1VDp$sB(St{AB+(Dkl}`^)n0sA|DR_|>WODeft19?LDy_g9RMNRpXt8?5 z5$@ljE?{a=JNnQD5pKERR@#UlETa;zk;4GHLR|Y>kN^I~(#A2zIBA1+M1*O=vgwHs zXZ{XOSnP>!8;eME^Xj6KKI!N8W~_|F*g7AHv+IY~YMbt!n*&!P*HI3a=9{|0(%5Com-Lwci}G+Kh82-3xH$PflRFdEw{fra{^m&MxrG z_6<#CZEYvxQg3ewCMl5TfB&F|a!0xKw& zj}ec`znAp3a>xtTU_+Tpywxi9$58x3G!4&KTF?J{Al`^WvW;mE#WwCP9WssY+=eDQ z(P3%4v0xqNPa7!-)E|U;tYwX%-b{Z#KYT;&*Y&{=&R^K(kE70MF1x>S-qi>`0k6ps zL4sTiSPDG5o=#wel2H&Ww#uCr3zC+}Y<+zwIlZ*;lsVRq+^k9q5DryZuYPifw0QU{t4XOERKJx{<0fy4ahz_ff~P>Y7!hO^qwFJ?@>>b^PxKluZR%&&13+Tt{9i z!||X;Tipp2O7a(Lqb6lys@8e(%I%&bQdGv(7PPk_fB@AjfAo~!OChoAztjIdQ`gq3 z{`NoPl)ulOYwLMp9x7tM(vx&$g9o7>wDOW??5(@pTe3^TV`Iv}Iw6J-hf$sdv+XBN zU8Tfj#+sbj05M|bWtHF({}AOB*jVGhp78qdpTF2f74jgf8nB&9>aI8rR0d8`=~-&u zZMfyD?%DY)xtXJr4Q|kWy(6*z-ec;X&&yW<%pZPvlo>2MPx9UpNlnDTj)E4`=nD%k zc2J%7UI_ohHn_2p`#1Mh0eI7>Ix(chOU0@ohf^y1nlXIt@QB4{U}m5r4Lcg*^$e0V;{@?;s}+>!{#o2K6#^w&H8GXfv}v_ zYqXUd49V47qulLPe~rIdNlICq3bn4sBgPm528gFQgk+R1L5tIzKBTJ@ShVXarT4tw zvBL!+6_rR24Rp&SF~mro5kzkmk}JO?8U9r9aqh2kF2w;1aOtaB&$cf1+wpu!;o`J3Aj@GX9g@3zSMP<|*F z02Ht-)lR|4rNA86!jAB0fj;m5aa&b**w$RstXYxtAc!_3erwIYIOZ7`jkzCNxS9I#IpD zPlj^LsMG-11bPluR=!%ISOOLpLkkm@O_XV{g7jn)wv2FATxl3BcPCyn+_EFee3gyV znI3bN?6FDVd0v|<8||mqtNS@>GW`jz-6=bIU#sy}uGpg-M&-rmlDou7{JjZ&F%BAW zgnefBP=+4fn|AkuY%&uI@DAMXaCig)0;W%|z>XI!iH8oLbUZfX}# z5{e^Ca7<8(J~0~CLTd$Unl3Dij38#~vm=w4CZU-bG82Fe%$b^>Rh5x{pP25!sN=ic zKe9K_b0RN&0-O52Gjly&BGHR=Po!p~$?1XW;)H*I{FKLxTKk;O$A_eg^;pN>@_7N7 zv)iJ)_`SWM9M>h5=H@qXLcR*tPn9RDv(mjj{+YV9#G_+D3~TcY%o!8q3&1x2Zw z;aJUVCzeFZ!Y&DRQfe^kD>kmGAz^R4vXhmqridv%7!gaa$HSQ4x+Z}I*5j{lV0fGF zeti+T-ah>$kY{Waa~eCX?&>GM_v~dU=INJcRh8(0o$2fvO0g5$)f{YhZf_goPY=$_ zC)2!=V_EMNc#=MBMh6EJNA{-i= z)3BjY?~99^4Fwkzqc;~TW>#|n?mmG$`Az7Her)m~PraaTIm3%EYvuj6&~R%8(ziN0 zmr)S7?)*TyKxO{VDlx7wdvUWkYoIz}gE)82pcF-+ZW`oIW(QLvg@)}jjH6_%2yNiY zw$$ysQLl$V4x2w zDkFd7z(a%Ha>}I2*a7?=wKODviV8s935XhvW2;D__(LI;a(4S)>tqj2f`6*THY04F z3jVUl*}8h)*gYpQ)Q4`L%G9?@o`bslQ*B-PrO1mkYBU}16c4DSqrxSYf*OyTHmJZ1 z=k~ypWP9dWA$e`nOM&cKbEQJ0yTk+5bK-G7>OlxJ*5VvR8UVb3N2CU@r)}LI2R3h6 zjl$nC1N0PvA|HP&!uc(}knkv`i-#dnUN6);8Q@FoMlp38ul9{6zFo{4W2e+Snp0TufQv{>Krh>|Eo7FZz;L= zrL$J;{KvrajUox|Br4~9%K&1bk`3mo4Gz`!YEtFW#qm}hO3*=pr3oE8l9?7V$muu) zmQnsx%>GU@QLFkS!n5(z;y~g7CE$|yG;?JqJnEYyp(B!4J3qN~BokGrhn27Xhk<56 zpmq`9s08wPZui5XWIH4pbg7ehbkS-t3>;z(6cZk%9x+%C^swpI7(vMDls(uWdXq2I zWEDu=bOP!otz!*s#khgdp;IVVLl21>;@P*E)P0eG^+xujr&&rPc(2aO5a%H@ihps>g6lWofs0RKX3t0K2gsi>_HV^90|N$)Sz(6 zRxC|RH~Ng_!FWM^Pp__FemNDJsy7+Op>2jN2E=U6h3klBK013pfLZAejmK4Au~j&+ zT{2xqWhGy*E4e^sq@hcINuW*R@r{@~uiG6d2n)FmaaA)@`+QgQ-v}jsp8Ppubh{IC z2f?f0Z=nlPDTz12XEcaYFII`76CLm+P))Sp2Kk1IW@bXO;4uZC4wU zE=Wuzl@Ok_%f6n{tiDvLd%0Z-bSE6fD*h&lS2r^nAqCx8N$Q=drJFYkC?m2^D8oX& zn9b>SM%)of=Le6Np0;IqtI=OT++3%O>IJp|IwJm$9xj zM}5I=n4vC_aO<@QYsQ^Bj<^GrGG^CwGZIs%o2?wv?^`cxsOAKQMyPK<3%aFmM+D0_ zu7plbtXt?|gP7~ux>ojj6q4s;E-pn~Q7%i)zm~)g@PWySO`}IGHnjnQ6PC~$R{CIA z{jIFGx0N*ZR0}I$?KP=piNpMQVKym#Na!;UHYqSKoB%;M)XmyxS|A9JzD65i5>6yg zQP{4E8RM=Z-H-|%w8fDtWEnqco%PxQ`+ z=MTLqdjgVRSzCf`OzP65iAX;U5%Hz6V>Wz9)OWTP=LS1oB5;!#4;ukST_2NpBmmT` zZ?miDAz(=ZgW9Hw{>;z|eEQ|qh0Gj~OCnXNg4WE8aJA!xZRIOsA3^^$wjlcudDNuE z8^U1^G4@|PxyLC~Oig5lWNEI7#gZn<|UO`~=Q5OF(_8J){Ox?{vOlku=tpKZef*xzV z8a?=i>PFLxP9SJ?=r?dDRguaw?m5kC&!%=cbWGfE*%K8MdK5mF;R~FVRpx94wHaAz z_eJdyTY5ty>rQ5uUUMJu&ki$PO7PiVM|-<(Vkd8`=ybd!&CS+upPdiO5~=%Hf2!TOGvwd>6f-B$~Bkmz^2JFgQ_zh>~QkPwlJni8?@`n^3riz3aT# zZm>86Lh8H>uPrL!jizkP9en?L)ay0x*p1f{ZjQZB3?4m9`xW~ky%W30q~GTc-MFItqg`lZ~i)1 zT%yk_F6ONq%@C_#>aK`IoU7Y!{%jK`Re}Y2#^1c~8qn%@>k~Sk?+Y^(SJqIVPLRUj z14$;vY~$(i%Ka>zrRexT8xmCLJ@XRYcl7e2;ObY*=G$c_??gv683^WIy77L~rG{c9 z@+Vf@^P0_Sd8uosi)Rh8sZeKxf9%F6&ntbMDT^82CAvZ zOrpH@0?_BEG#Mn#hP!1W9Q0p%Hkx^+mHSVM87Rt3NfN&%y(=*nqEtLvxBCzU9TNxT4ePjuA>ZTsO!LL6KKnf zL-Kjd3(Axh$ud*I(DYoDsIaiO`ToZI4Xj66F#GyE(qvr^?cZZvR%qI#evf7UYlmV8 z6BInLW@W0Z(|Z(SxhlH_d^sF2WF{Y;R}oM;gG3|J4Y3%ShS_imI+#XC3cFsr;!j6r z35PX%-!g`fk@Viuz<%!sCROw76kTy8;cXh2{uyUMmk5%1G^gYF~>dLLh(QN{##PYEVse&yT0&)%TV?zZ-p)} z|1T2B$_nZ7$4p94zr(N@ZR6o=tP|h{-F+#ky5ZHg@}iwD+Y_;9R+|Wj7{E`rVCO2T z?XyM{1UO)tNGZ*=K`-&N{%IOYYH~3$d0gbQ$?kE)5V!Dt!4}J0|IY&%Dth4rKP+~s zNkULtlio;-PfQ!s!0W_Gz=5YNUrCw$PnD0LccpRsYfKzbn_V?Hq3&1K4xgBY_in_0 zx8g~na=Hb)XJ8`BfvBmgT%ZVW_xs)-dM)FSKCg}9tKZ`B>UD>;n0Ljxpan7(Ksb3W zI9`<*$*H3FazaF7LIJWo4G>)rtFvi(-F^ew57I8c=wqN?MMF6TF(gbXK&&*=1Ch-` z5``XGy)J%#X)b)^9$FPSzl!J$a$Zx3(cV&tnR%^N0Z&Z*`lH(R?4(rb71^0)as4S_ zqvB`Zm%jy6#(a>iS}Ol}-iQ45cGWVic%}d_x@sLEY%$l1&WM*hPYdxgOP6oH^ymFU z%asogRkzg~oY*1vz-ZQ0Qd@>o`gjoKJH5Fj=$`sulX3Df+WkdOT6*beFqOO}6<``9 zPM4q0E=X&gK5T}Plj66TX1o~ zX0rO}yMdI3n;)2O*7mYY`pKD}|C!MDqv=gu*AwhG6VvqD`BtuiHVH`SuE z$s`ag!DD@&v!;;`hKV)@Ne>O9^hL_2;5oo_?H>PVUj%m|9V0G~M}?CNN#N9XwfSD; z1`6Env>3lZ7pE9hgvY?7&hW_E&OsUWo=nupis$L|ANeI`7n ze55ZoU@_8a1i>ACN9(o3wk1>= zT2r+Q87lSpJ#&YBKkB86+;EXgm<1bkyJo%!46WGpI4Z258n5A^I0?;r54$lxFCmm2 zefgc5oQjLN>JB4G{j2|sOeKS|#f>tjTqrXz4>kp6kAHoo;_r2t(7UtlvCs9OCg9@V z-(3SoR~5~KRKiz!`~(4Ds9{yGw>T2apWUJW`R?5PTvS*lR!&X=z(@}=J@|drF(6c? zC7OkPzOA0stOH|H<+~v_~=m&`b5ast7qIF&fg{-P-d$a*2qTRK$ykvG<(6Fm6W*(42u! zS5VXLHpD;mTF2h*yl=MOE+;G~K7CN){SNveO`%-WW#=2103$?EK2E+DX#G~ZPW_^C z)8Kd$DYoOCUtLc;@oun(`$HEIAR=VfBBKoQI<1m|22d0Ljba75@SNPK`LFu$VXm-2 zDGJhG(M)^YBu;!R!}Ej@AcSU_XrcI%s#k#t!6H=XOAZ2;n6L>I&3Ohal6p2dfA{0z z($bo7oW)Gw^^XhF+3c6s`>jd8TkEI!JV+*h507eIi0E6D=Dg&0zi;gCpD+Y}_`S6N zD0%pw;p8M*B|iJ{7c~~AtzV&B*H#V_GcYfbN^Ejc$~%~XnD6gS*`eV zzC!uW{~ZNWJ)Z?-YvnDk%n(R0SJ4bC=z^Mco+$KuT|7M-{)mXtA*J-e>=4}6@^P{8 zQE|eB<(nL;*bRWEw!_9EjKeAvkvT7UCm3HO4GMS5BU?GB3tglh*M`&HTmPI#C7afm z?r*?(TFBpR@R?3VJJMa1FwrBF{K59)Q$O)-%&AB`CFETW^BAK**a4s2=4s2>>k1d& zc^j9_I0RL)H=OIUCFK&`2D5AH z`fuui!92>6P^|bKQ&JAZcmr@Iw4uQRmpi3DE_|jC>|c|ui<;wHIq3?A3UIV`h%*u~ z18RKnz1RqAYOME%3Uj09EfI)S>OyHW+bb*G&4J0jJRE7F!V7(G9k6VeKF}*IOf#0k zo1c$J(rAfJN&36z%1LoEbruO1z9i*Ygu5}ZE^Kkj^erv-JXuhWF$WPL*QH}374t^x zY5Dt%-tIJ3^Q$iNbCB4=^@!5{#1H&VRtc*5WT13XS^p}K{oI?Xx%rpCDiU=qv1kzz-;e72LjAoDPb&n0$gkD-mUuZ8eVwun0(KFG>@!-bMPux>4!6HCClSh8NEj zs1nS6yIV-^+OBZrzhsqqflS4ZNLuusy$rI_x9?QpSRd|gZiXHy5M1^8Rj;s&e`wDg z-5Sp;U%Y%U_Z)ib2I?;DiK@2Z+1<#;Zhny^o*94?@Ie9C1TqF3 ze=N7Q-JciH&LrK{HX7zL&-C;0Q@d6i<5ycQ^_>pD&@N`1>P2_^CV?Vp1W;(>NRFY; z7vZ9Xr25;KC))0g^}e9+DcSY#NJ0%13z2;6%oZ$Kk=@BEJxE66cBuhI+5CM5czTbPaK@X{(2RRpmm9qc{-s7raABMu;%-A0_&9cqGUO`{E!H?KG(B z5`KcBZMi&K$Otq5lPX^;rKrr_${@WpeL>S{yP8ie{LDT?E6~YoQ04lU`9o{MFjI|6 zoO~VArS7G;cVoO%iun)}&}V!mWQSKKP~z+4v-$S&Ya&{dI8%ga$#@OC{V^^zqBdtxkusL|tO z_32AP-P4s^7l6jsHO3X!YXbrU47Nf@9f41Ud7c?;uM_9{IHvG|o-`TO4#Pf{rNY}a zsFIDqH>JfY&m~c>lelL9Ss-onFwgAh)@A3f#!}y!T51x+G(l`3FK2kBSIq7=y1qzY zaLr6GPx)i4-8lda{;9>6jk!yzxBgE09?H6lhvMBEV&V*1;HJH}7ThE%`w2-ua`Hm% z=W+1fsCr#+!|i+W%!Nj2*)t6_y!VJ24<)~a50Qn1z<8o^kjzSm?-e01% zeR)+HM8-0?GZvOsydpR@l@zO5RVPoHE2;DAiP_HQxi1zAXxe!dO$qX^0yfQz-Ct&= zhr7ivDUoFD$rYLC4FOaH=#`8y7V$UlWxaekv{Xw>_JNj{B(lJwPjH15mKqa* zC5LY-XurHEMbOumY7iPo=d!cIB-Rqcfz{R#s;OE{RokcGo5mcFiujtxhoj{$1+9u3 z?#Ip~eP7a85S*(1 zB8j!kMdMX4@=Kch_BLvR8=79n3NAoH75LOcFYEH92>u>kBXO{2nrrGh>TDsG=`U&8gzC zsNmTp+u6vLTUQZn#^%3~dHNAi%1}Y^Y72hWnG~3TX7nP_LY$J<$RT zyA#x;tG;-%^uQ0b_?=3Y>*?b(Ko2ZJwjOH5;HlI<>atdSRZsEbf!vh|af*e(be!LT zN1&^}N{JMaAeO4PGWunX3$<4;gP)uD(un&l+vC3yQr&WJ z48o33$85lK^xu^dnl60)@HADdEVk5XvSf#*7=Lk1!Y}B6G)lsxGN+@y56AxaKf)4umMJjKX zqy0PI%EZrFdA5)gn^0_s2}?Luo}bU+U_C`!yxy%A~J*LV`P^iG96seN=fa-G<#qYp*V8Y23WsbJRE zkjbyeAf9NoS>WBR*0ZS8tnAe0E#%GK`q@oWg1k00+>evTav)3kZsk6N)Xl?tt7ty}(IRGnp1 zRA1Qk&m==S4B?OtLr6=f;?P4WH8e;&q%+E&*z3=1nV{L4T-!)nn=)G) z3)NK$vC6jWil9QYcL3W+5RsI3uBcjC5i6U_5_FNPYTNE)ISXQUGY2Ty_{=!?5ISKdVM_PY4P$t ziaM^hzO$7i+g-=EBp0Zy_RQ{Ts~SHxnJIAoAAj~GZCT*J<#?)h9)C{brqSFh+WQ_$ zvAVf}m$D4+hCsk8yA6y&z!h+m^WNm=osFQ~6s0j3hFk{vIGm-ehtDL7kTmxrN&0W1 zs$<00#N5?}rgoFrDXSW_?gs-T$y3@#D*~glCe%$RsYJpyQS;!HA7|5}FAVsA1uBfo8-w)(h%%zcTOtlG>kbP{fsG_mm`+eo9A)%k?S2d zcu)SHg{RR=LxFep5Ay|q>zY?_H*&7|k1^T6{l^B3hulFKr7)Q2P`&)Vyi0$;RfgG_ zBgv*De0l}?!D$?}+{;@K*jk|a;4_u-FX<4iD>(O|)TqMiX_8z}vxIsTEtZbSoZ{ft zqUmuLUaqH=W}Q{enH$JB2H>V& z_Spgn;HvCqGtN7^-1vqPf%kaIp&7u0-aUK7R(YqH;FU#fP-G*eG&k+qRP0qA|SMR^*o>F3ORh#3E%Qd4~miB3LUn+q81L6sHw#T<@kt&bLiMs?yc$jHp zZ@L-&nzDY}F|vV_7!|vCWmxvTOE+EG-MytS>8URIWHZ;TTQ{XeJaCCE)78`d-?m;5 zRliooN*lCtUyN56t1Oav)<_X$R3A(HSTlV(i9`9uC&T*(9gKWDnRMTxj-dqKQ2*&q zMBcst6#4?SraFA zhNX`e2DZxPc|F@~rPWD8Q9Q^NThX)>GZobO+IqQOXP)qgG2Y`kR7QtdK*s%y%6$LL zbe5;Wnk6Z!IknF;WGn4~*D*IcE(vP>ZC)KzUt0KG8dI$Bw}(ZPr0%CLpB@@pTG*0K z2b?$kA_S#kz0EFWQBFE>`~o_2!j;FlKoq>N>-QNI%X!`iGWu&D6Pvm-OBUTG-In>e zCsJbwS^qLWQ+Hg0pac?sJJYV3oYni~W7auGtCXv7o4J)4Qqs9v9^6GC)$2$YF4)>T-*6;9iJ- z2i2yTT1>%R2mWRKsZ<;5``vSrlh2h4uHk&)#6Me6)_%T$_xJ>_`U34Gdd7REd7?6# z2jfK|>9U(!*3AcV7ITW-C7|`N`q-382(wpt7Pnm*Y_I`Esnup9IJjqVQze?I=ewZ~HgMw2M(PC6@D4g&X4R@Ez84#DiLNTc?QYxM3 z+m*8hRgL9E5@)oE`e5i4rI(3cknEdD?qt>7Pl0;ZGX&;UnX7|bY|iQtqOl-ybNSPffY_z#>0 z3^Z+UEvo!6JPL2O=$hUCx<}cXR+GlyLS9Q>sNYV&(*cF~OxQd9xU`?Yw!+NaQ5hXx z#q5|XbDEB0YTt?;oT>#O|u>1;8^zZvSj@re9a*E(G(+2=XV- zG4JNfZ}ygrwa;aoc2@~_ypih@3TyjE%rFGiDv!~M7gZZ~XV;NWC`Plk77FIQ!)pq9 z*RR*0L=3#F`scOhLX{-sQ{N&j|)}LR%T2l1Hvci^|;XcgX!%_pR{gtZQjLk zxsGJN&My;_9;e~bLD}DDQj!0fHfbLKqA`!0Z;Rcc>O2gZ{iC#|DiLa6F^Ect<1CQ=C-?&U`YG2 zU~^&hFj@io7)2{x&cAzR#UDd=&ixMRJwC;L4_2HjSTLqoRZXW<_5_&_S$Iw)z)*4o zwN&6zPFHKflXnfo-biMB;p?|Q>t%}=oO?u)c<1*>!CA~6Q~atanmKWwn?%hVx@Un^ zE92MumY|mOt}mTA@bh06Hoce6<`<@hG?gRfa-jbmBxaz$jj~ct*dxHb__x+K==Rbv z(lxo!cfYPvhC4>js|NHkqH0EDG}Th3Dv!i9Gf0_2~Xe#~t}! zECa~5|C-}p@QP85tt1P_)EclMSv@Q7@zU0(ZeiOrtL6~<+RMF<4Inf^XOl@(4y+|* zla6<%FI$B&)~MTLWq=1%gP>LS?2MUkGf_ROosvN|tLKcTZAA@|@!X|Ei_hdTT_}}F z0ba(ufi5*jD+68t^L8%-6PG6WkDg3SuL|Y)H#XUu5vgL8_h3L>hZ>G}8KG}tqoQIz zbE^Mq!Gy~Z4xS$@jS$Ooi8#SQc?$oS2IG0l%1(5RP;J;Jcoi&Ua+P`BZ;tR7|B%}> z-D3uw{*Zjy#>G!nPiLeOTMAhM1uncdevZC1Jw6?>4|HTbZQq(a%VFO`OA1V09%J7# zZ&WGme8oa_WiGYw(iOq`~I_E0*Up$y32u?3D&@A|y5e;p@zb8c{* zQPC>9Rbi8>Vrk_ld%vYs>PYR+Y;&^iw~P<{<=9ruxnqWv(fzSJOCS~2&5`#Yb4g<1 z0j=nVzzk*CtICm~@9Av2ju%)vPYk#P22M`+XPFFan8K`V@*&MR*zit1OVThn#7U|l zH`C(~_0{oU8oM@tJ@AwR#5nTfYv7RSF-dD(AYp&kl$E0yVFK&qxUP%0FXwVt zPHNQgJsm+c1`fOxcZfd6IcB?Y83?O!zj*F#X1M-A0VkqDgjQLh7TN!?MpIKuGvc03qwAjf>&tpRrbM(m z>gEDl5@25Zu^`@{FG}TN?6}H2)pT1Rmdbls9-1=-08viv4hmTJ&5yTu&oU6yIo%wY zJm`s2nWz_o&Deo40_tXBTm=4#<&V--jvbpVD{b$LX(p!A|2>%+-sIh)CBalw@4LKC zWI46<@|jdZq~1!jpN&68kHK?`;!zYrURJ;FvRC(+)vP@GVu1Do4`*LwOZmPP}manmIMeGgN>qMxxG|q zB2Hkyd@5&$gTDQ&6y3&8z_hBk-2zdnbtdv^er^tGBOk&<71bLJ&!yP1Am*jWg;xY! zCudjQvhGN)*2;a+*H(>&1I>aAhr2P6r=MKay!N+{wQ|25ZcD#S>zR88%@a7}5jQgl zJU85q7gs^BH}|c2;$*v;+m%mgi*r;$a}DmgU7lfUwn-5h9^e-QJCRe0N6+3my)STm zAJV%A!`jMma3sZACQ8@y6m9aK5fHftecc}mD=t57(|rq=e@nJ-l?1c8BA9wMZQ z5T`JLM5IvQXNpZl%tLOAl@V8R zLHv~|pCJJG74AG>V040|8ggQ9(-Waa@E3Byxc%x8A8?ck_PqDocCo(fwyd41Sc)!G zg#X2u+j{p@T7;=3m=+(?`E~qK%*7L;{-MTqIswXiiHm0Ue!q)8R4nI>X6#!-o>>H! zUhK(W`{an>Zg$AN$)K~KQl+AbE1te9Ej93L!$YZp0_mha%gQ%ob3?|swzODFEC4L$BRn`}xI;X^G?u{DPZfNAj^l_L>1+Dhlny5={s&{S==l-p2nC}>8ue;x! z%ASyi;xGY2w7}e@x$<$llR|Rr92!sx&B>FW85qpEJe;7{x;|KEO5!=wv#k~yX@Ba? zT35O~Guz1WUnc2kd9m7a>ZS9&vwp4m0mJQ(cpHT`0|k6OLTOYaECm|oJ@lTSI&T%U zLRwzwhRXO=T9{t08$bdg$8kXk(R23H(D+;)LfhsZ+1v|1$34V|d z1;cwa()OUOxMgX62M5rpRZ9#;4?TgiT$kViH&7AdkNo!52&Iphp7Ox1p_e0;K!u5FQK zU+qXMZ4^0rW=(d@tIisUl3Z)koHv(#M@Ou^txJc`X$Zx&g?!phVnj>Cx?le(ssYuf zeMwgG?YMPteqF7jJ?Fm+#D6=KzoQQEsAdq5c{hdkZ>B;N{o!z~`Mv^|+?q(4Fui*? zQxB{f2>Jffh17>iwD4!Jgq(uXwOG<7NV=n9Df5-touPUyp30UT#YUdyz~|D@8DO3m zhja4u_E!~|jxyttDr5Qm!y^Hb2A}9q;_l?caoJZa-nkkq*L`0x+&F*p7+h|<+_r0`)FLN>-@*p?^ZK^r;Z048NG$fZ@-#st<6G}8Ke8E&vI%%0=^K_?sit&$pgIHwC^SKD`bZ@d%YyA}l!~QnlIY=s`M4B6fCNb5 zfuz(FC=hR8QrB8E&+);w94 zeMk~rf~rrzzfxz|#ANAe+WZ)}7%G)HbH%&qujPi^Guk=To;(_Z)0)<8bT}cKV%u}= z{Y&}DP&qNa28&hyXxO|G`<6`a$0ea~6+e%QpT$V0!zn-8Or)O;-6>XH(WFe$PE}}x z%z_V??|Zx1f*$@jGl+98BZ6M_LOd{M$3?;08QvlKfDz=_$9{vNNfCVp-Ep*RB zsz;kvjh}m0jT3tZ6dT`S1Od1q+zdFdv7~^Jw&nr-5SR*(2Cfv9aBhW;hDSKmpO@my zx8SXbh_mG}Dd;@=@iQe6xAM9{GS0=`YYuETSF9#3>$(ijPyN0TbNQ6*1(Ts*Rb%w> z-ItD%B^QzqepBvoE%d7_Q31@i~AmWd9709T5FH3_@qPNGzH)R4!Pf^pCd`rhc zfp8+obgl-UXf_yTiven=^pq676tDFZqtNSQM@td4g;3pk3rREEj)q2415g<Av;Vnv@SeuALtWRf)dC3a+ktWaQ?%1g3!UF~M_YzSpg}lWTDf7PSY_sk38Ze`Ep_CUL z_hX63*6J-lUr|vJ=V2*hmNQko@#E+YAPdZUaq;a;5M9txB1FUE2}13%dV#q1hxpim z%+xxx^gvAz6EVL`pxH;R;6U(W$s{S;PEZL0 z8T_tpwC*(Tn?1VsuU_5znp=-x(U(_h+pjw&5#}!lh8eRpJ|h=z2J?L$fy{wEU*F)P z@9_;FV%NK# z5u=TarUIg)j8VzESWo;IE}J6UBgY9~vYG{J`ALAuc2dI85aslbR(qT|O3eWC^q5v* zo8J}pSBYgjJ;rgjnL~b>8C0HLFvfq_ U#(!mNk6dhLOvg*Vs5oB5ys)uiWz(7R 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 delta 67354 zcmZ^~1y~hN-#&?x)eNg_n|{Tq(MMH1mPS~Qh`H<(s3y15<~=~ltw}j z11SMf5JkoR{_f}hJn!?~_xtX3eP(xOW@qP{J2U&8^+K=yMKfMAT`etzI!2(SX^GY{ z#G=Uo0QVuJKrqlX$8uax=M_LxKzC&SHzyJafUcUkxq-S77P%&y4?6)c%i(jPwLF10P|Zj<>~!!5YRG4Ru6KQ_K3l`$Yrw zt7VI64bh^+UXEyy;NpWbl0rmiT4Mj-eaBy5Y`KdzgA+0@47Z^9@4^Ts7Z+MS3v$B< zclcRgjD!oqnhZg30I&u||NBV-ofs1#O<04#DxyIs7I{KQ6G4@|7ljc7#3kq^ptl>E zX#Y=r1i@WgT96OQ<;Mx*rd_R!(!O7u9MEt%BLV;L{J#(URRBiR2-)Hubl>TqCMmnytsZRE8oxTOUFO*=S;?g2~c@9BXzdF;Rq9FyR3*iC4 zO7;JFT(~7l>nfrpN$(q?Mcdc`PVh4uYk^}05$Jz!YzFN00SiaH+?UxELrqSngmoD- zA;j8`@a77KI2F`W7=(W(0|pQP1@Mo2oSUD;s#V1H{d_3gYDmE7Gq%WCe?_!>wa

  • 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ë(ZqAH!0e%l@57dP!AbQGFQU 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

    class SH_API SHPhysicsSystemInterface final { + public: + + struct RaycastInfo + { + private: + /*-------------------------------------------------------------------------------*/ + /* Friends */ + /*-------------------------------------------------------------------------------*/ + + friend class SHPhysicsSystemInterface; + public: + /*-------------------------------------------------------------------------------*/ + /* Data Members */ + /*-------------------------------------------------------------------------------*/ + + bool continuous = false; + uint16_t layers = static_cast(SHCollisionTag::Layer::ALL); + float distance = std::numeric_limits::infinity(); + SHRay ray; + + /*-------------------------------------------------------------------------------*/ + /* Setter Functions */ + /*-------------------------------------------------------------------------------*/ + + /** + * @brief + * Sets the collider ID for the raycast. Setting this specifies that the ray + * should ignore this collider. + * @param eid + * The entity ID of the collider. + */ + void SetColliderID(EntityID eid) noexcept { colliderEntityID = eid; } + + private: + /*-------------------------------------------------------------------------------*/ + /* Data Members */ + /*-------------------------------------------------------------------------------*/ + + std::optional colliderEntityID; + }; + + /*---------------------------------------------------------------------------------*/ /* Constructor */ /*---------------------------------------------------------------------------------*/ diff --git a/SHADE_Managed/src/Audio/Audio.cxx b/SHADE_Managed/src/Audio/Audio.cxx index c3994cd4..33cfdd83 100644 --- a/SHADE_Managed/src/Audio/Audio.cxx +++ b/SHADE_Managed/src/Audio/Audio.cxx @@ -124,6 +124,12 @@ namespace SHADE audioSys->SetParameter(Convert::ToNative(path).data(), value); } + void Audio::SetParameterWithLabel(System::String^ path, System::String^ label) + { + auto audioSys = SHSystemManager::GetSystem(); + audioSys->SetParameterWithLabel(Convert::ToNative(path).data(), Convert::ToNative(label).data()); + } + AudioClipHandler Audio::CreateAudioClip(System::String^ path) { auto audioSys = SHSystemManager::GetSystem(); diff --git a/SHADE_Managed/src/Audio/Audio.hxx b/SHADE_Managed/src/Audio/Audio.hxx index 179a3eb7..fa1e97de 100644 --- a/SHADE_Managed/src/Audio/Audio.hxx +++ b/SHADE_Managed/src/Audio/Audio.hxx @@ -105,6 +105,7 @@ namespace SHADE static void SetVCAVolume(System::String^ path, float volume); static float GetParameterValue(System::String^ path); static void SetParameter(System::String^ path, float value); + static void SetParameterWithLabel(System::String^ path, System::String^ label); //to comment ltr static AudioClipHandler CreateAudioClip(System::String^ path); diff --git a/SHADE_Managed/src/Audio/AudioClip.cxx b/SHADE_Managed/src/Audio/AudioClip.cxx index 7ed58714..062b543e 100644 --- a/SHADE_Managed/src/Audio/AudioClip.cxx +++ b/SHADE_Managed/src/Audio/AudioClip.cxx @@ -79,6 +79,11 @@ namespace SHADE NativeObject->SetParameter(Convert::ToNative(paramName).data(), value); } + void AudioClipHandler::SetParameterWithLabel(System::String^ paramName, System::String^ label) + { + NativeObject->SetParameterWithLabel(Convert::ToNative(paramName).data(), Convert::ToNative(label).data()); + } + float AudioClipHandler::GetParameterValue(System::String^ paramName) { return NativeObject->GetParameterValue(Convert::ToNative(paramName).data()); diff --git a/SHADE_Managed/src/Audio/AudioClip.hxx b/SHADE_Managed/src/Audio/AudioClip.hxx index 34e9b4a5..317c5bad 100644 --- a/SHADE_Managed/src/Audio/AudioClip.hxx +++ b/SHADE_Managed/src/Audio/AudioClip.hxx @@ -71,6 +71,7 @@ namespace SHADE void SetPause(bool pause); bool IsPaused(); void SetParameter(System::String^ paramName, float value); + void SetParameterWithLabel(System::String^ paramName, System::String^ label); float GetParameterValue(System::String^ paramName); float GetVolume(); void SetVolume(float volume); diff --git a/SHADE_Managed/src/Components/Collider.cxx b/SHADE_Managed/src/Components/Collider.cxx index f4b4f09d..b6501951 100644 --- a/SHADE_Managed/src/Components/Collider.cxx +++ b/SHADE_Managed/src/Components/Collider.cxx @@ -4,7 +4,6 @@ \par email: kahwei.tng\@digipen.edu \date Oct 20, 2022 \brief Contains the definition of the functions of the managed Collider class. - Note: This file is written in C++17/CLI. Copyright (C) 2022 DigiPen Institute of Technology. @@ -15,6 +14,9 @@ of DigiPen Institute of Technology is prohibited. #include "SHpch.h" // Primary Header #include "Collider.hxx" + +#include "Physics/Collision/Shapes/SHBox.h" +#include "Physics/Collision/Shapes/SHSphere.h" #include "Utility/Debug.hxx" namespace SHADE @@ -120,7 +122,7 @@ namespace SHADE /* BoxCollider - Constructors */ /*---------------------------------------------------------------------------------*/ BoxCollider::BoxCollider(int arrayIdx, Entity attachedEntity) - : CollisionShape { arrayIndex, attachedEntity } + : CollisionShape { arrayIdx, attachedEntity } {} /*---------------------------------------------------------------------------------*/ @@ -166,11 +168,11 @@ namespace SHADE } float SphereCollider::Radius::get() { - return getNativeCollisionShape().GetWorldRadius(); + return getNativeCollisionShape().GetWorldRadius(); } void SphereCollider::Radius::set(float value) { - getNativeCollisionShape().SetWorldRadius(value); + getNativeCollisionShape().SetWorldRadius(value); } /*---------------------------------------------------------------------------------*/ @@ -307,9 +309,9 @@ namespace SHADE case SHCollisionShape::Type::SPHERE: bound = gcnew SphereCollider(i, Owner.GetEntity()); break; - case SHCollisionShape::Type::CAPSULE: - // TODO - break; + //case SHCollisionShape::Type::CAPSULE: + // // TODO + // break; default: Debug::LogWarning("[Collider] An invalid Collider Type was detected. Skipping."); break; @@ -320,4 +322,4 @@ namespace SHADE subColliderList->Add(bound); } } -} +} \ No newline at end of file diff --git a/SHADE_Managed/src/Components/Collider.hxx b/SHADE_Managed/src/Components/Collider.hxx index 19235571..3c7b060e 100644 --- a/SHADE_Managed/src/Components/Collider.hxx +++ b/SHADE_Managed/src/Components/Collider.hxx @@ -1,7 +1,9 @@ /************************************************************************************//*! \file Collider.hxx \author Tng Kah Wei, kahwei.tng, 390009620 + Diren D Bharwani, diren.dbharwani, 390002520 \par email: kahwei.tng\@digipen.edu + email: diren.dbharwani\@digipen.edu \date Oct 20, 2022 \brief Contains the definition of the managed Collider class with the declaration of functions for working with it. From 5c38244ce47f3ffa321bbc732195d7c622204ac7 Mon Sep 17 00:00:00 2001 From: Diren D Bharwani Date: Fri, 3 Mar 2023 21:16:18 +0800 Subject: [PATCH 4/8] Changed casts --- .../Inspector/SHEditorComponentView.hpp | 4 +- .../Collision/Contacts/SHCollisionKey.h~HEAD | 117 ------------------ .../Narrowphase/SHCollisionUtils.cpp~HEAD | 38 ------ 3 files changed, 2 insertions(+), 157 deletions(-) delete mode 100644 SHADE_Engine/src/Physics/Collision/Contacts/SHCollisionKey.h~HEAD delete mode 100644 SHADE_Engine/src/Physics/Collision/Narrowphase/SHCollisionUtils.cpp~HEAD diff --git a/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorComponentView.hpp b/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorComponentView.hpp index fbc93efd..253457e1 100644 --- a/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorComponentView.hpp +++ b/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorComponentView.hpp @@ -436,12 +436,12 @@ namespace SHADE if (ImGui::Selectable("Box Collider")) { - auto* compositeCollider = dynamic_cast(component->GetCollider()); + auto* compositeCollider = reinterpret_cast(component->GetCollider()); compositeCollider->AddBoxCollisionShape(SHVec3::One); } if (ImGui::Selectable("Sphere Collider")) { - auto* compositeCollider = dynamic_cast(component->GetCollider()); + auto* compositeCollider = reinterpret_cast(component->GetCollider()); compositeCollider->AddSphereCollisionShape(1.0f); } diff --git a/SHADE_Engine/src/Physics/Collision/Contacts/SHCollisionKey.h~HEAD b/SHADE_Engine/src/Physics/Collision/Contacts/SHCollisionKey.h~HEAD deleted file mode 100644 index 811f8375..00000000 --- a/SHADE_Engine/src/Physics/Collision/Contacts/SHCollisionKey.h~HEAD +++ /dev/null @@ -1,117 +0,0 @@ -/**************************************************************************************** - * \file SHCollisionID.h - * \author Diren D Bharwani, diren.dbharwani, 390002520 - * \brief Interface for Collision Information for Collision & Triggers. - * - * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or - * disclosure of this file or its contents without the prior written consent - * of DigiPen Institute of Technology is prohibited. -****************************************************************************************/ - -#pragma once - -// Project Headers -#include "Physics/Interface/SHColliderComponent.h" -#include "Physics/Interface/SHRigidBodyComponent.h" - - -namespace SHADE -{ - /*-----------------------------------------------------------------------------------*/ - /* Forward Declarations */ - /*-----------------------------------------------------------------------------------*/ - - struct SHCollisionKeyHash; - - /*-----------------------------------------------------------------------------------*/ - /* Type Definitions */ - /*-----------------------------------------------------------------------------------*/ - - /** - * @brief - * Encapsulates the information when two collision shapes intersect. - */ - class SH_API SHCollisionKey - { - private: - /*---------------------------------------------------------------------------------*/ - /* Friends */ - /*---------------------------------------------------------------------------------*/ - - friend struct SHCollisionKeyHash; - - public: - /*---------------------------------------------------------------------------------*/ - /* Constructors & Destructor */ - /*---------------------------------------------------------------------------------*/ - - SHCollisionKey () noexcept; - SHCollisionKey (const SHCollisionKey& rhs) noexcept; - SHCollisionKey (SHCollisionKey&& rhs) noexcept; - - ~SHCollisionKey () noexcept = default; - - /*---------------------------------------------------------------------------------*/ - /* Operator Overloads */ - /*---------------------------------------------------------------------------------*/ - - SHCollisionKey& operator= (const SHCollisionKey& rhs) noexcept; - SHCollisionKey& operator= (SHCollisionKey&& rhs) noexcept; - - bool operator==(const SHCollisionKey& rhs) const; - - /*---------------------------------------------------------------------------------*/ - /* Getter Functions */ - /*---------------------------------------------------------------------------------*/ - - [[nodiscard]] EntityID GetEntityA () const noexcept; - [[nodiscard]] EntityID GetEntityB () const noexcept; - [[nodiscard]] uint32_t GetShapeIndexA () const noexcept; - [[nodiscard]] uint32_t GetShapeIndexB () const noexcept; - [[nodiscard]] const SHRigidBodyComponent* GetRigidBodyA () const noexcept; - [[nodiscard]] const SHRigidBodyComponent* GetRigidBodyB () const noexcept; - [[nodiscard]] const SHCollisionShape* GetCollisionShapeA () const noexcept; - [[nodiscard]] const SHCollisionShape* GetCollisionShapeB () const noexcept; - - /*---------------------------------------------------------------------------------*/ - /* Setter Functions */ - /*---------------------------------------------------------------------------------*/ - - void SetEntityA (EntityID entityID) noexcept; - void SetEntityB (EntityID entityID) noexcept; - void SetCollisionShapeA (uint32_t shapeIndexA) noexcept; - void SetCollisionShapeB (uint32_t shapeIndexB) noexcept; - - private: - - static constexpr uint32_t ENTITY_A = 0; - static constexpr uint32_t SHAPE_INDEX_A = 1; - static constexpr uint32_t ENTITY_B = 2; - static constexpr uint32_t SHAPE_INDEX_B = 3; - - /*---------------------------------------------------------------------------------*/ - /* Data Members */ - /*---------------------------------------------------------------------------------*/ - - union - { - uint64_t value[2]; // EntityValue, ShapeIndexValue - uint32_t ids [4]; // EntityA, EntityB, ShapeIndexA, ShapeIndexB - }; - }; - - /** - * @brief - * Encapsulates a functor to hash a CollisionKey - */ - struct SHCollisionKeyHash - { - public: - /*---------------------------------------------------------------------------------*/ - /* Member Functions */ - /*---------------------------------------------------------------------------------*/ - - std::size_t operator()(const SHCollisionKey& id) const; - }; - -} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/Narrowphase/SHCollisionUtils.cpp~HEAD b/SHADE_Engine/src/Physics/Collision/Narrowphase/SHCollisionUtils.cpp~HEAD deleted file mode 100644 index c4267ca8..00000000 --- a/SHADE_Engine/src/Physics/Collision/Narrowphase/SHCollisionUtils.cpp~HEAD +++ /dev/null @@ -1,38 +0,0 @@ -/**************************************************************************************** - * \file SHCollisionUtils.cpp - * \author Diren D Bharwani, diren.dbharwani, 390002520 - * \brief Implementation for some objects to assist with collision detection - * - * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or - * disclosure of this file or its contents without the prior written consent - * of DigiPen Institute of Technology is prohibited. -****************************************************************************************/ - -#include - -// Primary Header -#include "SHCollisionUtils.h" - -namespace SHADE -{ - /*-----------------------------------------------------------------------------------*/ - /* Operator Overload Definitions */ - /*-----------------------------------------------------------------------------------*/ - - SHVec3 SHCollisionUtils::ShapeTransform::operator*(const SHVec3& rhs) const noexcept - { - return SHVec3::Rotate(rhs, orientation) + position; - } - - /*-----------------------------------------------------------------------------------*/ - /* Public Member Functions Definitions */ - /*-----------------------------------------------------------------------------------*/ - - SHCollisionUtils::ShapeTransform SHCollisionUtils::ShapeTransform::GetInverse() const noexcept - { - const SHQuaternion INV_ORIENTATION = SHQuaternion::Inverse(orientation); - return ShapeTransform { SHVec3::Rotate(-position, INV_ORIENTATION), INV_ORIENTATION }; - } - - -} // namespace SHADE \ No newline at end of file From 5cb4c547571144e94955cc89e9b7bbc30200b91b Mon Sep 17 00:00:00 2001 From: Diren D Bharwani Date: Fri, 3 Mar 2023 21:16:44 +0800 Subject: [PATCH 5/8] I didn't commit the change oop --- .../Physics/Collision/Narrowphase/SHConvexVsConvex.cpp | 8 ++++---- .../Physics/Collision/Narrowphase/SHSphereVsConvex.cpp | 8 ++++---- .../Physics/Collision/Narrowphase/SHSphereVsSphere.cpp | 8 ++++---- SHADE_Engine/src/Physics/Collision/SHCollider.cpp | 4 ++-- SHADE_Engine/src/Physics/Collision/SHCollisionSpace.cpp | 4 ++-- SHADE_Managed/src/Components/Collider.h++ | 2 +- 6 files changed, 17 insertions(+), 17 deletions(-) diff --git a/SHADE_Engine/src/Physics/Collision/Narrowphase/SHConvexVsConvex.cpp b/SHADE_Engine/src/Physics/Collision/Narrowphase/SHConvexVsConvex.cpp index 4d12b716..8c7ffc5e 100644 --- a/SHADE_Engine/src/Physics/Collision/Narrowphase/SHConvexVsConvex.cpp +++ b/SHADE_Engine/src/Physics/Collision/Narrowphase/SHConvexVsConvex.cpp @@ -47,8 +47,8 @@ namespace SHADE bool SHCollision::ConvexVsConvex(const SHCollisionShape& A, const SHCollisionShape& B) noexcept { - const SHConvexPolyhedron& POLY_A = dynamic_cast(A); - const SHConvexPolyhedron& POLY_B = dynamic_cast(B); + const SHConvexPolyhedron& POLY_A = reinterpret_cast(A); + const SHConvexPolyhedron& POLY_B = reinterpret_cast(B); const SHCollisionUtils::SHCollisionUtils::FaceQuery FACE_QUERY_A = queryFaceDirections(POLY_A, POLY_B); if (FACE_QUERY_A.bestDistance > 0.0f) @@ -70,8 +70,8 @@ namespace SHADE static constexpr float ABSOLUTE_TOLERANCE = 0.01f; static constexpr float RELATIVE_TOLERANCE = 0.95f; - const SHConvexPolyhedron& POLY_A = dynamic_cast(A); - const SHConvexPolyhedron& POLY_B = dynamic_cast(B); + const SHConvexPolyhedron& POLY_A = reinterpret_cast(A); + const SHConvexPolyhedron& POLY_B = reinterpret_cast(B); const SHCollisionUtils::ShapeTransform TF_A { POLY_A.GetWorldCentroid(), POLY_A.GetWorldOrientation() }; const SHCollisionUtils::ShapeTransform TF_B { POLY_B.GetWorldCentroid(), POLY_B.GetWorldOrientation() }; diff --git a/SHADE_Engine/src/Physics/Collision/Narrowphase/SHSphereVsConvex.cpp b/SHADE_Engine/src/Physics/Collision/Narrowphase/SHSphereVsConvex.cpp index 68217d8b..cb6e4a37 100644 --- a/SHADE_Engine/src/Physics/Collision/Narrowphase/SHSphereVsConvex.cpp +++ b/SHADE_Engine/src/Physics/Collision/Narrowphase/SHSphereVsConvex.cpp @@ -42,8 +42,8 @@ namespace SHADE bool SHCollision::SphereVsConvex(const SHCollisionShape& A, const SHCollisionShape& B) noexcept { - const SHSphere& SPHERE = dynamic_cast(A); - const SHConvexPolyhedron& POLYHEDRON = dynamic_cast(B); + const SHSphere& SPHERE = reinterpret_cast(A); + const SHConvexPolyhedron& POLYHEDRON = reinterpret_cast(B); const SHVec3 CENTER = SPHERE.Center; const float RADIUS = SPHERE.GetWorldRadius(); @@ -90,8 +90,8 @@ namespace SHADE { // Convert to underlying types // For the convex, we only need the convex polyhedron shape since the get vertex is pure virtual. - const SHSphere& SPHERE = dynamic_cast(A); - const SHConvexPolyhedron& POLY = dynamic_cast(B); + const SHSphere& SPHERE = reinterpret_cast(A); + const SHConvexPolyhedron& POLY = reinterpret_cast(B); const SHVec3 CENTER = SPHERE.Center; const float RADIUS = SPHERE.GetWorldRadius(); diff --git a/SHADE_Engine/src/Physics/Collision/Narrowphase/SHSphereVsSphere.cpp b/SHADE_Engine/src/Physics/Collision/Narrowphase/SHSphereVsSphere.cpp index caf974dc..cfd2bf16 100644 --- a/SHADE_Engine/src/Physics/Collision/Narrowphase/SHSphereVsSphere.cpp +++ b/SHADE_Engine/src/Physics/Collision/Narrowphase/SHSphereVsSphere.cpp @@ -26,8 +26,8 @@ namespace SHADE bool SHCollision::SphereVsSphere(const SHCollisionShape& A, const SHCollisionShape& B) noexcept { - const SHSphere& SPHERE_A = dynamic_cast(A); - const SHSphere& SPHERE_B = dynamic_cast(B); + const SHSphere& SPHERE_A = reinterpret_cast(A); + const SHSphere& SPHERE_B = reinterpret_cast(B); const SHVec3 CENTER_A = SPHERE_A.Center; const float RADIUS_A = SPHERE_A.Radius; @@ -48,8 +48,8 @@ namespace SHADE bool SHCollision::SphereVsSphere(SHManifold& manifold, const SHCollisionShape& A, const SHCollisionShape& B) noexcept { // Convert to underlying types - const SHSphere& SPHERE_A = dynamic_cast(A); - const SHSphere& SPHERE_B = dynamic_cast(B); + const SHSphere& SPHERE_A = reinterpret_cast(A); + const SHSphere& SPHERE_B = reinterpret_cast(B); const SHVec3 CENTER_A = SPHERE_A.Center; const float RADIUS_A = SPHERE_A.Radius; diff --git a/SHADE_Engine/src/Physics/Collision/SHCollider.cpp b/SHADE_Engine/src/Physics/Collision/SHCollider.cpp index 2e7cc3c6..994a61ed 100644 --- a/SHADE_Engine/src/Physics/Collision/SHCollider.cpp +++ b/SHADE_Engine/src/Physics/Collision/SHCollider.cpp @@ -338,7 +338,7 @@ namespace SHADE { case SHCollisionShape::Type::BOX: { - const SHBox* RHS_BOX = dynamic_cast(shape); + const SHBox* RHS_BOX = reinterpret_cast(shape); const SHBoxCreateInfo BOX_CREATE_INFO { @@ -361,7 +361,7 @@ namespace SHADE } case SHCollisionShape::Type::SPHERE: { - const SHSphere* RHS_SPHERE = dynamic_cast(shape); + const SHSphere* RHS_SPHERE = reinterpret_cast(shape); const SHSphereCreateInfo SPHERE_CREATE_INFO { diff --git a/SHADE_Engine/src/Physics/Collision/SHCollisionSpace.cpp b/SHADE_Engine/src/Physics/Collision/SHCollisionSpace.cpp index c643e05e..8be6786c 100644 --- a/SHADE_Engine/src/Physics/Collision/SHCollisionSpace.cpp +++ b/SHADE_Engine/src/Physics/Collision/SHCollisionSpace.cpp @@ -209,12 +209,12 @@ namespace SHADE { case SHCollisionShape::Type::SPHERE: { - baseResult = dynamic_cast(SHAPE)->Raycast(info.ray); + baseResult = reinterpret_cast(SHAPE)->Raycast(info.ray); break; } case SHCollisionShape::Type::BOX: { - baseResult = dynamic_cast(SHAPE)->Raycast(info.ray); + baseResult = reinterpret_cast(SHAPE)->Raycast(info.ray); break; } case SHCollisionShape::Type::CAPSULE: diff --git a/SHADE_Managed/src/Components/Collider.h++ b/SHADE_Managed/src/Components/Collider.h++ index c2e732f4..7d9fdca1 100644 --- a/SHADE_Managed/src/Components/Collider.h++ +++ b/SHADE_Managed/src/Components/Collider.h++ @@ -31,7 +31,7 @@ namespace SHADE if (!shape || shape->GetType() == SHCollisionShape::Type::INVALID) throw gcnew System::InvalidOperationException("Attempted to retrieve invalid CollisionShape."); - return dynamic_cast(*shape); + return reinterpret_cast(*shape); } catch (std::invalid_argument&) { From 337ec82dbf6b9cfba282004d4645e558e9a5440e Mon Sep 17 00:00:00 2001 From: Diren D Bharwani Date: Fri, 3 Mar 2023 21:19:49 +0800 Subject: [PATCH 6/8] Removed random commented code --- .../EditorWindow/Inspector/SHEditorComponentView.hpp | 9 --------- 1 file changed, 9 deletions(-) diff --git a/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorComponentView.hpp b/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorComponentView.hpp index 253457e1..ae6e79eb 100644 --- a/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorComponentView.hpp +++ b/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorComponentView.hpp @@ -445,15 +445,6 @@ namespace SHADE compositeCollider->AddSphereCollisionShape(1.0f); } - //No idea why this doesn't work - //if (newColl > 0) - //{ - // auto newCollisionShape = component->GetCollisionShape(newColl); - // auto prevCollisionShapeInSeq = component->GetCollisionShape(newColl - 1); - // newCollisionShape.SetCollisionTag(SHCollisionTagMatrix::GetTag(prevCollisionShapeInSeq.GetCollisionTag().GetName())); - - //} - ImGui::EndMenu(); } } From 446db133d2091fcf7d6a4b0cf9f2ba8a32e0c5b3 Mon Sep 17 00:00:00 2001 From: Diren D Bharwani Date: Fri, 3 Mar 2023 21:39:59 +0800 Subject: [PATCH 7/8] Fixed errors with publish build in physics debug draw --- .../src/Physics/System/Routines/SHPhysicsDebugDrawRoutine.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/SHADE_Engine/src/Physics/System/Routines/SHPhysicsDebugDrawRoutine.cpp b/SHADE_Engine/src/Physics/System/Routines/SHPhysicsDebugDrawRoutine.cpp index efb412f7..b263df71 100644 --- a/SHADE_Engine/src/Physics/System/Routines/SHPhysicsDebugDrawRoutine.cpp +++ b/SHADE_Engine/src/Physics/System/Routines/SHPhysicsDebugDrawRoutine.cpp @@ -36,6 +36,7 @@ namespace SHADE void SHPhysicsDebugDrawSystem::PhysicsDebugDraw::Execute(double) noexcept { +#ifdef SHEDITOR auto* physicsDebugDrawSystem = reinterpret_cast(GetSystem()); if (!physicsDebugDrawSystem->IsDebugDrawActive()) @@ -109,6 +110,7 @@ namespace SHADE debugDrawSystem->DrawWireCube(TRS, AABB_COLOUR); } } +#endif } } // namespace SHADE From 6200e3f5336194db7b09c8ca80fdb3cbe69e765e Mon Sep 17 00:00:00 2001 From: Diren D Bharwani Date: Fri, 3 Mar 2023 23:47:39 +0800 Subject: [PATCH 8/8] Fixed bug where collision & trigger state were called more than once --- Assets/Scenes/PhysicsTest.shade | 44 --------------- .../src/Physics/Dynamics/SHContactManager.cpp | 54 ++++++++++++------- .../src/Physics/Dynamics/SHContactManager.h | 6 +++ .../src/Physics/Dynamics/SHPhysicsWorld.cpp | 7 ++- .../Routines/SHPhysicsDebugDrawRoutine.cpp | 26 +++++---- .../Routines/SHPhysicsPostUpdateRoutine.cpp | 6 +-- .../Routines/SHPhysicsUpdateRoutine.cpp | 13 +++-- .../src/Physics/System/SHPhysicsSystem.cpp | 5 ++ 8 files changed, 77 insertions(+), 84 deletions(-) diff --git a/Assets/Scenes/PhysicsTest.shade b/Assets/Scenes/PhysicsTest.shade index 442ff096..7966307c 100644 --- a/Assets/Scenes/PhysicsTest.shade +++ b/Assets/Scenes/PhysicsTest.shade @@ -38,10 +38,6 @@ Rotation Offset: {x: 0, y: 0, z: 0} IsActive: true Scripts: - - Type: PhysicsTestObj - Enabled: true - forceAmount: 50 - torqueAmount: 500 - Type: CollisionTest Enabled: true - EID: 1 @@ -176,46 +172,6 @@ Rotation Offset: {x: 0, y: 0, z: 0} IsActive: true Scripts: ~ -- EID: 7 - Name: Default - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: 0, y: 0, z: 3} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 1, y: 1, z: 1} - IsActive: true - RigidBody Component: - Type: Dynamic - Auto Mass: false - Mass: 1 - Drag: 0.00999999978 - Angular Drag: 0.100000001 - Use Gravity: true - Gravity Scale: 1 - Interpolate: true - Sleeping Enabled: true - Freeze Position X: false - Freeze Position Y: false - Freeze Position Z: false - Freeze Rotation X: false - Freeze Rotation Y: false - Freeze Rotation Z: false - IsActive: true - Collider Component: - Colliders: - - Is Trigger: false - Collision Tag: 1 - Type: Box - Half Extents: {x: 1, y: 1, z: 1} - Friction: 0.400000006 - Bounciness: 0 - Density: 1 - Position Offset: {x: 0, y: 0, z: 0} - Rotation Offset: {x: 0, y: 0, z: 0} - IsActive: true - Scripts: ~ - EID: 8 Name: Target IsActive: true diff --git a/SHADE_Engine/src/Physics/Dynamics/SHContactManager.cpp b/SHADE_Engine/src/Physics/Dynamics/SHContactManager.cpp index caf2a7d6..c9b8dc5f 100644 --- a/SHADE_Engine/src/Physics/Dynamics/SHContactManager.cpp +++ b/SHADE_Engine/src/Physics/Dynamics/SHContactManager.cpp @@ -76,8 +76,6 @@ namespace SHADE continue; const auto* SHAPE_A = manifold.shapeA; - const auto* SHAPE_B = manifold.shapeB; - const SHCollisionUtils::ShapeTransform TF_A = { SHAPE_A->GetWorldCentroid(), SHAPE_A->GetWorldOrientation() }; for (uint32_t i = 0; i < manifold.numContacts; ++i) @@ -138,22 +136,41 @@ namespace SHADE removeInvalidObject(manifolds, eid, shapeIndex); } + void SHContactManager::RemoveExpiredContacts() noexcept + { + // Manifolds + for (auto manifoldsIter = manifolds.begin(); manifoldsIter != manifolds.end();) + { + const auto STATE = manifoldsIter->second.state; + if (STATE == SHCollisionState::INVALID || STATE == SHCollisionState::EXIT) + manifoldsIter = manifolds.erase(manifoldsIter); + else + ++manifoldsIter; + } + + // Triggers + for (auto triggersIter = triggers.begin(); triggersIter != triggers.end();) + { + const auto STATE = triggersIter->second.state; + if (STATE == SHCollisionState::INVALID || STATE == SHCollisionState::EXIT) + triggersIter = triggers.erase(triggersIter); + else + ++triggersIter; + } + } + void SHContactManager::Update() noexcept { - // Clear expired or invalid collisions. If not, test collision. for (auto manifoldPair = manifolds.begin(); manifoldPair != manifolds.end();) { - // Test collision of every manifold. - SHManifold& manifold = manifoldPair->second; + SHManifold& manifold = manifoldPair->second; SHManifold oldManifold = manifold; const bool IS_COLLIDING = SHCollisionDispatcher::Collide(manifold, *manifold.shapeA, *manifold.shapeB); + updateCollisionState(IS_COLLIDING, manifold.state); - auto& collisionState = manifold.state; - updateCollisionState(IS_COLLIDING, collisionState); - - const bool IS_INVALID = collisionState == SHCollisionState::INVALID; - if (IS_INVALID) + // For any false positives + if (manifold.state == SHCollisionState::INVALID) { manifoldPair = manifolds.erase(manifoldPair); continue; @@ -163,19 +180,16 @@ namespace SHADE ++manifoldPair; } - // Clear expired or invalid triggers, If not, test collision. for (auto triggerPair = triggers.begin(); triggerPair != triggers.end();) { // Test collision of every trigger. - Trigger& trigger = triggerPair->second; + Trigger& trigger = triggerPair->second; const bool IS_COLLIDING = SHCollisionDispatcher::Collide(*trigger.A, *trigger.B); + updateCollisionState(IS_COLLIDING, trigger.state); - auto& collisionState = trigger.state; - updateCollisionState(IS_COLLIDING, collisionState); - - const bool IS_INVALID = collisionState == SHCollisionState::INVALID; - if (IS_INVALID) + // For any false positives + if (trigger.state == SHCollisionState::INVALID) triggerPair = triggers.erase(triggerPair); else ++triggerPair; @@ -238,7 +252,11 @@ namespace SHADE { // New states start at invalid. In the first frame of collision, move to enter. // If it already in enter, move to stay - state = state == SHCollisionState::INVALID ? SHCollisionState::ENTER : SHCollisionState::STAY; + if (state == SHCollisionState::ENTER) + state = SHCollisionState::STAY; + + if (state == SHCollisionState::INVALID) + state = SHCollisionState::ENTER; } else { diff --git a/SHADE_Engine/src/Physics/Dynamics/SHContactManager.h b/SHADE_Engine/src/Physics/Dynamics/SHContactManager.h index 81f37146..654e3d98 100644 --- a/SHADE_Engine/src/Physics/Dynamics/SHContactManager.h +++ b/SHADE_Engine/src/Physics/Dynamics/SHContactManager.h @@ -79,6 +79,12 @@ namespace SHADE void RemoveInvalidatedManifold (EntityID eid) noexcept; void RemoveInvalidatedManifold (EntityID eid, uint32_t shapeIndex) noexcept; + /** + * @brief + * Removes any contact manifold or triggers that are in the exit or invalid state. + */ + void RemoveExpiredContacts () noexcept; + /** * @brief * Removes any invalidated contacts and triggers, then performs narrowphase collision diff --git a/SHADE_Engine/src/Physics/Dynamics/SHPhysicsWorld.cpp b/SHADE_Engine/src/Physics/Dynamics/SHPhysicsWorld.cpp index ed00e80e..b4e67688 100644 --- a/SHADE_Engine/src/Physics/Dynamics/SHPhysicsWorld.cpp +++ b/SHADE_Engine/src/Physics/Dynamics/SHPhysicsWorld.cpp @@ -86,13 +86,19 @@ namespace SHADE void SHPhysicsWorld::Step(float dt) { + + /* * Detect Collisions */ + contactManager.RemoveExpiredContacts(); + if (collisionSpace) collisionSpace->DetectCollisions(); + // TODO: Build Islands + /* * Integrate Forces */ @@ -106,7 +112,6 @@ namespace SHADE integrateForces(*rigidBody, dt); } - /* * Resolve Contacts */ diff --git a/SHADE_Engine/src/Physics/System/Routines/SHPhysicsDebugDrawRoutine.cpp b/SHADE_Engine/src/Physics/System/Routines/SHPhysicsDebugDrawRoutine.cpp index b263df71..fb2750cc 100644 --- a/SHADE_Engine/src/Physics/System/Routines/SHPhysicsDebugDrawRoutine.cpp +++ b/SHADE_Engine/src/Physics/System/Routines/SHPhysicsDebugDrawRoutine.cpp @@ -15,6 +15,7 @@ // Project Headers #include "ECS_Base/Managers/SHSystemManager.h" +#include "Editor/SHEditor.h" #include "Graphics/MiddleEnd/Interface/SHDebugDrawSystem.h" #include "Math/Transform/SHTransformComponent.h" #include "Physics/System/SHPhysicsSystem.h" @@ -36,7 +37,6 @@ namespace SHADE void SHPhysicsDebugDrawSystem::PhysicsDebugDraw::Execute(double) noexcept { -#ifdef SHEDITOR auto* physicsDebugDrawSystem = reinterpret_cast(GetSystem()); if (!physicsDebugDrawSystem->IsDebugDrawActive()) @@ -86,17 +86,22 @@ namespace SHADE } } - if (DRAW_RAYCASTS) - { - const SHColour& RAY_COLOUR = physicsDebugDrawSystem->DEBUG_DRAW_COLOURS[SHUtilities::ConvertEnum(Colours::RAYCAST)]; + #ifdef SHEDITOR + if (DRAW_RAYCASTS) + { + const SHColour& RAY_COLOUR = physicsDebugDrawSystem->DEBUG_DRAW_COLOURS[SHUtilities::ConvertEnum(Colours::RAYCAST)]; - const auto& RAYS = physicsSystem->raycastHits; - for (const auto& hit : RAYS) - debugDrawSystem->DrawLine(hit.start, hit.end, RAY_COLOUR, true); + auto& rays = physicsSystem->raycastHits; + for (const auto& hit : rays) + debugDrawSystem->DrawLine(hit.start, hit.end, RAY_COLOUR, true); - // Clear rays for the physics system - physicsSystem->raycastHits.clear(); - } + // Clear the raycast hit container only in play mode. + // No other raycasts are assumed to be done in pause or stop mode. + const auto EDITOR_STATE = SHSystemManager::GetSystem()->editorState; + if (EDITOR_STATE == SHEditor::State::PLAY) + rays.clear(); + } + #endif if (DRAW_BROADPHASE) { @@ -110,7 +115,6 @@ namespace SHADE debugDrawSystem->DrawWireCube(TRS, AABB_COLOUR); } } -#endif } } // namespace SHADE diff --git a/SHADE_Engine/src/Physics/System/Routines/SHPhysicsPostUpdateRoutine.cpp b/SHADE_Engine/src/Physics/System/Routines/SHPhysicsPostUpdateRoutine.cpp index 47c4ed7b..c884c01a 100644 --- a/SHADE_Engine/src/Physics/System/Routines/SHPhysicsPostUpdateRoutine.cpp +++ b/SHADE_Engine/src/Physics/System/Routines/SHPhysicsPostUpdateRoutine.cpp @@ -35,7 +35,7 @@ namespace SHADE void SHPhysicsSystem::PhysicsPostUpdate::Execute(double) noexcept { - auto* physicsSystem = reinterpret_cast(GetSystem()); + auto* physicsSystem = reinterpret_cast(GetSystem()); auto* scriptingSystem = SHSystemManager::GetSystem(); if (scriptingSystem == nullptr) @@ -93,10 +93,6 @@ namespace SHADE */ } } - - // Collision & Trigger messages - if (scriptingSystem != nullptr) - scriptingSystem->ExecuteCollisionFunctions(); } } // namespace SHADE diff --git a/SHADE_Engine/src/Physics/System/Routines/SHPhysicsUpdateRoutine.cpp b/SHADE_Engine/src/Physics/System/Routines/SHPhysicsUpdateRoutine.cpp index 6ae53b31..7de0a9e6 100644 --- a/SHADE_Engine/src/Physics/System/Routines/SHPhysicsUpdateRoutine.cpp +++ b/SHADE_Engine/src/Physics/System/Routines/SHPhysicsUpdateRoutine.cpp @@ -35,10 +35,10 @@ namespace SHADE { auto* physicsSystem = reinterpret_cast(GetSystem()); - auto* scriptEngine = SHSystemManager::GetSystem(); - if (!scriptEngine) + auto* scriptingSystem = SHSystemManager::GetSystem(); + if (!scriptingSystem) { - SHLOGV_ERROR("Unable to invoke FixedUpdate() on scripts due to missing ScriptEngine!") + SHLOGV_ERROR("Unable to invoke FixedUpdate() on scripts due to missing SHScriptEngine!") } const double FIXED_DT = physicsSystem->fixedDT; @@ -47,12 +47,15 @@ namespace SHADE int count = 0; while (accumulatedTime > FIXED_DT) { - if (scriptEngine) - scriptEngine->ExecuteFixedUpdates(); + if (scriptingSystem) + scriptingSystem->ExecuteFixedUpdates(); if (physicsSystem->physicsWorld) physicsSystem->physicsWorld->Step(static_cast(FIXED_DT)); + if (scriptingSystem != nullptr) + scriptingSystem->ExecuteCollisionFunctions(); + accumulatedTime -= FIXED_DT; ++count; } diff --git a/SHADE_Engine/src/Physics/System/SHPhysicsSystem.cpp b/SHADE_Engine/src/Physics/System/SHPhysicsSystem.cpp index 4db693a2..508f8807 100644 --- a/SHADE_Engine/src/Physics/System/SHPhysicsSystem.cpp +++ b/SHADE_Engine/src/Physics/System/SHPhysicsSystem.cpp @@ -287,6 +287,11 @@ namespace SHADE collisionSpace->RemoveCollider(PHYSICS_OBJECT.collider); } + #ifdef SHEDITOR + // HACK: Editor stop always goes into scene exit + raycastHits.clear(); + #endif + delete collisionSpace; collisionSpace = nullptr;