public override void DebugDraw(ref Matrix drawMatrix) { base.DebugDraw(ref drawMatrix); if (MyFakes.DEBUG_DRAW_NAVMESH_PROCESSED_VOXEL_CELLS) { Vector3 tformedCellSize = Vector3.TransformNormal(m_cellSize, drawMatrix); Vector3 origin = Vector3.Transform(m_voxelMap.PositionLeftBottomCorner - m_voxelMap.PositionComp.GetPosition(), drawMatrix); BoundingBoxD bb; foreach (var cell in m_processedCells) { bb.Min = origin + tformedCellSize * (new Vector3D(0.0625) + cell); bb.Max = bb.Min + tformedCellSize; VRageRender.MyRenderProxy.DebugDrawAABB(bb, Color.Orange, 1.0f, 1.0f, false); //VRageRender.MyRenderProxy.DebugDrawText3D(bb.Center, cell.ToString(), Color.Orange, 0.5f, false); } } VRageRender.MyRenderProxy.DebugDrawSphere(m_debugPos1, 0.2f, Color.Red, 1.0f, false); VRageRender.MyRenderProxy.DebugDrawSphere(m_debugPos2, 0.2f, Color.Green, 1.0f, false); VRageRender.MyRenderProxy.DebugDrawSphere(m_debugPos3, 0.1f, Color.Red, 1.0f, false); VRageRender.MyRenderProxy.DebugDrawSphere(m_debugPos4, 0.1f, Color.Green, 1.0f, false); if (MyFakes.DEBUG_DRAW_VOXEL_CONNECTION_HELPER) { m_connectionHelper.DebugDraw(ref drawMatrix, Mesh); } if (MyFakes.DEBUG_DRAW_NAVMESH_CELL_BORDERS) { foreach (var cell in m_debugCellEdges) { foreach (var edge in cell.Value) { VRageRender.MyRenderProxy.DebugDrawLine3D(edge.V1, edge.V2, Color.Orange, Color.Orange, false); } } } else { m_debugCellEdges.Clear(); } if (MyFakes.DEBUG_DRAW_NAVMESH_HIERARCHY) { if (MyFakes.DEBUG_DRAW_NAVMESH_HIERARCHY_LITE) { m_higherLevel.DebugDraw(lite: true); } else { m_higherLevel.DebugDraw(lite: false); m_higherLevelHelper.DebugDraw(); } } }
public override void DebugDraw(ref Matrix drawMatrix) { if (!MyDebugDrawSettings.ENABLE_DEBUG_DRAW) { return; } base.DebugDraw(ref drawMatrix); if ((MyDebugDrawSettings.DEBUG_DRAW_NAVMESHES & MyWEMDebugDrawMode.EDGES) != 0) { if (m_connectionHelper != null) { foreach (var edge in m_connectionHelper) { Vector3 A = Vector3.Transform(edge.Key.A / 256.0f, drawMatrix); Vector3 B = Vector3.Transform(edge.Key.B / 256.0f, drawMatrix); MyRenderProxy.DebugDrawLine3D(A, B, Color.Red, Color.Yellow, false); } } } if ((MyDebugDrawSettings.DEBUG_DRAW_NAVMESHES & MyWEMDebugDrawMode.NORMALS) != 0) { foreach (var entry in m_smallTriangleRegistry) { var list = entry.Value; foreach (var triIndex in list) { var tri = GetTriangle(triIndex); Vector3 normal = Vector3.Transform(tri.Center + tri.Normal * 0.2f, drawMatrix); Vector3 center = Vector3.Transform(tri.Center, drawMatrix); MyRenderProxy.DebugDrawLine3D(center, normal, Color.Blue, Color.Blue, true); } } } if (MyFakes.DEBUG_DRAW_NAVMESH_HIERARCHY) { if (m_higherLevel != null) { m_higherLevel.DebugDraw(lite: MyFakes.DEBUG_DRAW_NAVMESH_HIERARCHY_LITE); } } /*foreach (var entry in m_smallTriangleRegistry) * { * var list = entry.Value; * foreach (var triIndex in list) * { * var tri = GetTriangle(triIndex); * Vector3 normal = Vector3.Transform(tri.Center + tri.Normal * 0.2f, drawMatrix); * Vector3 center = Vector3.Transform(tri.Center, drawMatrix); * MyRenderProxy.DebugDrawText3D(center, entry.Key.ToString(), Color.Blue, 0.7f, true); * } * }*/ /* * if (m_cubeSet != null) * { * foreach (var entry in m_cubeSet) * { * Vector3 pos = Vector3.Transform(entry, drawMatrix); * MyRenderProxy.DebugDrawSphere(pos, 0.1f, Color.Red, 1.0f, false); * MyRenderProxy.DebugDrawText3D(pos, entry.ToString(), Color.Red, 1.0f, false); * } * }*/ }