diff --git a/Source/Editor/Gizmo/GridGizmo.cs b/Source/Editor/Gizmo/GridGizmo.cs index d063e989e..a308ca8ba 100644 --- a/Source/Editor/Gizmo/GridGizmo.cs +++ b/Source/Editor/Gizmo/GridGizmo.cs @@ -88,6 +88,7 @@ namespace FlaxEditor.Gizmo desc.CullMode = CullMode.TwoSided; desc.VS = _shader.GPU.GetVS("VS_Grid"); desc.PS = _shader.GPU.GetPS("PS_Grid"); + desc.DepthWriteEnable = false; _psGrid.Init(ref desc); } diff --git a/Source/Engine/Terrain/TerrainPatch.cpp b/Source/Engine/Terrain/TerrainPatch.cpp index 5ff02cf36..ce712bada 100644 --- a/Source/Engine/Terrain/TerrainPatch.cpp +++ b/Source/Engine/Terrain/TerrainPatch.cpp @@ -74,13 +74,13 @@ void TerrainPatch::Init(Terrain* terrain, int16 x, int16 z) _physicsHeightField = nullptr; _x = x; _z = z; - const float size = _terrain->_chunkSize * TERRAIN_UNITS_PER_VERTEX * Terrain::Terrain::ChunksCountEdge; + const float size = _terrain->_chunkSize * TERRAIN_UNITS_PER_VERTEX * Terrain::ChunksCountEdge; _offset = Float3(_x * size, 0.0f, _z * size); _yOffset = 0.0f; _yHeight = 1.0f; for (int32 i = 0; i < Terrain::ChunksCount; i++) { - Chunks[i].Init(this, i % Terrain::Terrain::ChunksCountEdge, i / Terrain::Terrain::ChunksCountEdge); + Chunks[i].Init(this, i % Terrain::ChunksCountEdge, i / Terrain::ChunksCountEdge); } Heightmap = nullptr; for (int32 i = 0; i < TERRAIN_MAX_SPLATMAPS_COUNT; i++) @@ -99,7 +99,7 @@ void TerrainPatch::Init(Terrain* terrain, int16 x, int16 z) } #endif #if TERRAIN_USE_PHYSICS_DEBUG - SAFE_DELETE(_debugLines); + SAFE_DELETE_GPU_RESOURCE(_debugLines); _debugLinesDirty = true; #endif #if USE_EDITOR @@ -117,6 +117,9 @@ TerrainPatch::~TerrainPatch() SAFE_DELETE(_dataSplatmap[i]); } #endif +#if TERRAIN_USE_PHYSICS_DEBUG + SAFE_DELETE_GPU_RESOURCE(_debugLines); +#endif } RawDataAsset* TerrainPatch::GetHeightfield() const @@ -2324,9 +2327,9 @@ void TerrainPatch::DrawPhysicsDebug(RenderView& view) { if (!_debugLines || _debugLinesDirty) CacheDebugLines(); - const Transform terrainTransform = _terrain->_transform; - const Transform localTransform(Vector3(0, _yOffset, 0), Quaternion::Identity, Vector3(_collisionScaleXZ, _yHeight, _collisionScaleXZ)); - const Matrix world = localTransform.GetWorld() * terrainTransform.GetWorld(); + const float size = _terrain->_chunkSize * TERRAIN_UNITS_PER_VERTEX * Terrain::ChunksCountEdge; + const Transform localTransform(Vector3(_x * size, _yOffset, _z * size), Quaternion::Identity, Vector3(_collisionScaleXZ, _yHeight, _collisionScaleXZ)); + const Matrix world = localTransform.GetWorld() * _terrain->_transform.GetWorld(); DebugDraw::DrawLines(_debugLines, world); } } @@ -2352,10 +2355,9 @@ const Array& TerrainPatch::GetCollisionTriangles() #define GET_VERTEX(x, y) Vector3 v##x##y((float)(row + (x)), PhysicsBackend::GetHeightFieldHeight(_physicsHeightField, row + (x), col + (y)) / TERRAIN_PATCH_COLLISION_QUANTIZATION, (float)(col + (y))); Vector3::Transform(v##x##y, world, v##x##y) - const float size = _terrain->_chunkSize * TERRAIN_UNITS_PER_VERTEX * Terrain::Terrain::ChunksCountEdge; - const Transform terrainTransform = _terrain->_transform; + const float size = _terrain->_chunkSize * TERRAIN_UNITS_PER_VERTEX * Terrain::ChunksCountEdge; Transform localTransform(Vector3(_x * size, _yOffset, _z * size), Quaternion::Identity, Vector3(_collisionScaleXZ, _yHeight, _collisionScaleXZ)); - const Matrix world = localTransform.GetWorld() * terrainTransform.GetWorld(); + const Matrix world = localTransform.GetWorld() * _terrain->_transform.GetWorld(); for (int32 row = 0; row < rows - 1; row++) { @@ -2401,7 +2403,7 @@ void TerrainPatch::GetCollisionTriangles(const BoundingSphere& bounds, Array_chunkSize * TERRAIN_UNITS_PER_VERTEX * Terrain::Terrain::ChunksCountEdge; + const float size = _terrain->_chunkSize * TERRAIN_UNITS_PER_VERTEX * Terrain::ChunksCountEdge; Transform transform; transform.Translation = _offset + Vector3(0, _yOffset, 0); transform.Orientation = Quaternion::Identity; @@ -2507,10 +2509,9 @@ void TerrainPatch::ExtractCollisionGeometry(Array& vertexBuffer, Array_chunkSize * TERRAIN_UNITS_PER_VERTEX * Terrain::Terrain::ChunksCountEdge; - const Transform terrainTransform = _terrain->_transform; + const float size = _terrain->_chunkSize * TERRAIN_UNITS_PER_VERTEX * Terrain::ChunksCountEdge; const Transform localTransform(Vector3(_x * size, _yOffset, _z * size), Quaternion::Identity, Float3(_collisionScaleXZ, _yHeight, _collisionScaleXZ)); - const Matrix world = localTransform.GetWorld() * terrainTransform.GetWorld(); + const Matrix world = localTransform.GetWorld() * _terrain->_transform.GetWorld(); const int32 vertexCount = rows * cols; _collisionVertices.Resize(vertexCount); @@ -2569,7 +2570,7 @@ void TerrainPatch::Serialize(SerializeStream& stream, const void* otherObj) stream.JKEY("Chunks"); stream.StartArray(); - for (int32 i = 0; i < Terrain::Terrain::ChunksCount; i++) + for (int32 i = 0; i < Terrain::ChunksCount; i++) { stream.StartObject(); Chunks[i].Serialize(stream, other ? &other->Chunks[i] : nullptr);