diff --git a/Source/Engine/Terrain/Terrain.cpp b/Source/Engine/Terrain/Terrain.cpp index 3eb527e4d..aa677cda9 100644 --- a/Source/Engine/Terrain/Terrain.cpp +++ b/Source/Engine/Terrain/Terrain.cpp @@ -12,6 +12,7 @@ #include "Engine/Graphics/RenderView.h" #include "Engine/Graphics/RenderTask.h" #include "Engine/Graphics/Textures/GPUTexture.h" +#include "Engine/Physics/PhysicsScene.h" #include "Engine/Profiler/ProfilerCPU.h" #include "Engine/Renderer/GlobalSignDistanceFieldPass.h" #include "Engine/Renderer/GI/GlobalSurfaceAtlasPass.h" @@ -807,6 +808,15 @@ void Terrain::OnEnable() #if TERRAIN_USE_PHYSICS_DEBUG GetSceneRendering()->AddPhysicsDebug(this); #endif + void* scene = GetPhysicsScene()->GetPhysicsScene(); + for (int32 i = 0; i < _patches.Count(); i++) + { + auto patch = _patches[i]; + if (patch->_physicsActor) + { + PhysicsBackend::AddSceneActor(scene, patch->_physicsActor); + } + } // Base Actor::OnEnable(); diff --git a/Source/Engine/Terrain/TerrainPatch.cpp b/Source/Engine/Terrain/TerrainPatch.cpp index b20b5e9a1..34fc57e84 100644 --- a/Source/Engine/Terrain/TerrainPatch.cpp +++ b/Source/Engine/Terrain/TerrainPatch.cpp @@ -2126,7 +2126,8 @@ void TerrainPatch::CreateCollision() void* scene = _terrain->GetPhysicsScene()->GetPhysicsScene(); _physicsActor = PhysicsBackend::CreateRigidStaticActor(nullptr, terrainTransform.LocalToWorld(_offset), terrainTransform.Orientation, scene); PhysicsBackend::AttachShape(_physicsShape, _physicsActor); - PhysicsBackend::AddSceneActor(scene, _physicsActor); + if (_terrain->IsDuringPlay()) + PhysicsBackend::AddSceneActor(scene, _physicsActor); } bool TerrainPatch::CreateHeightField()