Fixed transform updates to clear dirty flags appropriately #280

Merged
direnbharwani merged 4 commits from SP3-2-Physics into main 2022-11-25 15:10:32 +08:00
3 changed files with 25 additions and 11 deletions
Showing only changes of commit afd2abf036 - Show all commits

View File

@ -82,7 +82,7 @@
Transform Component:
Translate: {x: 0, y: 4.28833103, z: 0}
Rotate: {x: -0, y: 0, z: -0}
Scale: {x: 1, y: 1, z: 1}
Scale: {x: 1, y: 0, z: 1}
IsActive: true
RigidBody Component:
Type: Dynamic
@ -108,14 +108,6 @@
Density: 1
Position Offset: {x: 0, y: 0, z: 0}
Rotation Offset: {x: 0, y: 0, z: 0}
- Is Trigger: false
Type: Box
Half Extents: {x: 2, y: 2, z: 2}
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: 65537

View File

@ -53,7 +53,7 @@ namespace SHADE
for (auto value : values)
{
max = Min(max, value);
max = Max(max, value);
}
return max;

View File

@ -18,6 +18,7 @@
#include "ECS_Base/Managers/SHComponentManager.h"
#include "ECS_Base/Managers/SHEntityManager.h"
#include "ECS_Base/Managers/SHSystemManager.h"
#include "Editor/SHEditor.h"
#include "Math/SHMathHelpers.h"
namespace SHADE
@ -35,7 +36,7 @@ namespace SHADE
{}
SHTransformSystem::TransformPostPhysicsUpdate::TransformPostPhysicsUpdate()
: SHSystemRoutine { "Transform Post-Physics Update", false }
: SHSystemRoutine { "Transform Post-Physics Update", true }
{}
@ -54,7 +55,28 @@ namespace SHADE
{
// Get the current scene graph to traverse and update
const auto& SCENE_GRAPH = SHSceneManager::GetCurrentSceneGraph();
#ifdef SHEDITOR
// When editor is not in play, only clear all dirty flags. No update required.
const auto* EDITOR = SHSystemManager::GetSystem<SHEditor>();
if (EDITOR && EDITOR->editorState != SHEditor::State::PLAY)
{
auto& transformsSet = SHComponentManager::GetDense<SHTransformComponent>();
for (auto& tfComp : transformsSet)
tfComp.dirty = false;
}
else
{
UpdateEntity(SCENE_GRAPH.GetRoot(), true);
}
#else
UpdateEntity(SCENE_GRAPH.GetRoot(), true);
#endif
}
void SHTransformSystem::Init()