diff --git a/Assets/Scenes/PhysicsTest.shade b/Assets/Scenes/PhysicsTest.shade index 1362a6a1..20903809 100644 --- a/Assets/Scenes/PhysicsTest.shade +++ b/Assets/Scenes/PhysicsTest.shade @@ -5,14 +5,14 @@ Components: Transform Component: Translate: {x: 0, y: 7, z: 0} - Rotate: {x: 0, y: 0, z: 0} + Rotate: {x: 1.48352981, y: 0, z: 0} Scale: {x: 0.999999344, y: 0.999999821, z: 0.999999523} IsActive: true RigidBody Component: Type: Dynamic Drag: 0.00999999978 Angular Drag: 0.100000001 - Use Gravity: false + Use Gravity: true Interpolate: false Sleeping Enabled: true Freeze Position X: false @@ -39,6 +39,8 @@ Enabled: true forceAmount: 50 torqueAmount: 500 + - Type: CollisionTest + Enabled: true - EID: 1 Name: Default IsActive: true diff --git a/Assets/Scripts/Tests/CollisionTest.cs b/Assets/Scripts/Tests/CollisionTest.cs new file mode 100644 index 00000000..869a94c1 --- /dev/null +++ b/Assets/Scripts/Tests/CollisionTest.cs @@ -0,0 +1,45 @@ +using SHADE; +using System; +using System.Collections.Generic; +using static Item; + + +public class CollisionTest : Script +{ + public Collider collider { get; set; } + + private bool printStay = false; + + protected override void awake() + { + collider = GetComponent(); + } + + protected override void onCollisionEnter(CollisionInfo info) + { + base.onCollisionEnter(info); + Debug.Log("Collision Enter"); + + printStay = false; + } + + protected override void onCollisionStay(CollisionInfo info) + { + base.onCollisionStay(info); + + if (!printStay) + { + Debug.Log("Collision Stay"); + printStay= true; + } + + } + + protected override void onCollisionExit(CollisionInfo info) + { + base.onCollisionExit(info); + Debug.Log("Collision Exit"); + + printStay = false; + } +}; diff --git a/Assets/Scripts/Tests/CollisionTest.cs.shmeta b/Assets/Scripts/Tests/CollisionTest.cs.shmeta new file mode 100644 index 00000000..46a0a155 --- /dev/null +++ b/Assets/Scripts/Tests/CollisionTest.cs.shmeta @@ -0,0 +1,3 @@ +Name: CollisionTest +ID: 163810535 +Type: 9 diff --git a/SHADE_Engine/src/Physics/System/Routines/SHPhysicsDebugDrawRoutine.cpp b/SHADE_Engine/src/Physics/System/Routines/SHPhysicsDebugDrawRoutine.cpp index 0d61a494..c73ccd11 100644 --- a/SHADE_Engine/src/Physics/System/Routines/SHPhysicsDebugDrawRoutine.cpp +++ b/SHADE_Engine/src/Physics/System/Routines/SHPhysicsDebugDrawRoutine.cpp @@ -18,6 +18,7 @@ #include "Graphics/MiddleEnd/Interface/SHDebugDrawSystem.h" #include "Math/Transform/SHTransformComponent.h" #include "Physics/System/SHPhysicsSystem.h" +#include "Scene/SHSceneManager.h" #include "Tools/Utilities/SHUtilities.h" namespace SHADE @@ -53,12 +54,19 @@ namespace SHADE { const auto& COLLIDER_COMPONENT_DENSE = SHComponentManager::GetDense(); for (const auto& COLLIDER_COMPONENT : COLLIDER_COMPONENT_DENSE) - drawCollider(debugDrawSystem, COLLIDER_COMPONENT); + { + if (SHSceneManager::CheckNodeAndComponentsActive(COLLIDER_COMPONENT.GetEID())) + drawCollider(debugDrawSystem, COLLIDER_COMPONENT); + } } else if (!physicsDebugDrawSystem->collidersToDraw.empty()) { for (const auto EID : physicsDebugDrawSystem->collidersToDraw) - drawCollider(debugDrawSystem, *SHComponentManager::GetComponent(EID)); + { + if (SHSceneManager::CheckNodeAndHasComponentsActive(EID)) + drawCollider(debugDrawSystem, *SHComponentManager::GetComponent(EID)); + } + } auto* physicsSystem = SHSystemManager::GetSystem(); diff --git a/SHADE_Engine/src/Physics/System/SHPhysicsSystem.cpp b/SHADE_Engine/src/Physics/System/SHPhysicsSystem.cpp index f4529a40..5468147a 100644 --- a/SHADE_Engine/src/Physics/System/SHPhysicsSystem.cpp +++ b/SHADE_Engine/src/Physics/System/SHPhysicsSystem.cpp @@ -239,6 +239,7 @@ namespace SHADE // Unlink with managers objectManager.SetPhysicsWorld(nullptr); + collisionListener.ClearContainers(); return onSceneExitEvent.get()->handle; }