private void DebugDrawVertexNames() { //VRageRender.MyRenderProxy.DebugDrawText2D(new Vector2(10, 0), "Voxel names searching", Color.Yellow, 0.5f); LineD line = new LineD(IntersectionStart, IntersectionStart + IntersectionDirection * 500); VRage.Game.Models.MyIntersectionResultLineTriangleEx?intersection = MyEntities.GetIntersectionWithLine(ref line, MySession.Static.LocalCharacter, null, false, true, true, VRage.Game.Components.IntersectionFlags.ALL_TRIANGLES, 0, false); if (intersection.HasValue) { if (intersection.Value.Entity is MyVoxelBase) { MyVoxelBase voxels = intersection.Value.Entity as MyVoxelBase; Vector3D point = intersection.Value.IntersectionPointInWorldSpace; if (intersection.Value.Entity is MyPlanet) { VRageRender.MyRenderProxy.DebugDrawText2D(new Vector2(20, 20), "Type: planet/moon", Color.Yellow, 0.5f); VRageRender.MyRenderProxy.DebugDrawText2D(new Vector2(20, 30), "Terrain: " + voxels.GetMaterialAt(ref point).ToString(), Color.Yellow, 0.5f); } else { VRageRender.MyRenderProxy.DebugDrawText2D(new Vector2(20, 20), "Type: asteroid", Color.Yellow, 0.5f); VRageRender.MyRenderProxy.DebugDrawText2D(new Vector2(20, 30), "Terrain: " + voxels.GetMaterialAt(ref point).ToString(), Color.Yellow, 0.5f); } VRageRender.MyRenderProxy.DebugDrawText2D(new Vector2(20, 40), "Object size: " + voxels.SizeInMetres.ToString(), Color.Yellow, 0.5f); //location /* * VRageRender.MyRenderProxy.DebugDrawText2D(new Vector2(20, 50), "Location:", Color.Yellow, 0.5f); * VRageRender.MyRenderProxy.DebugDrawText2D(new Vector2(30, 60), "x " + Math.Round(point.X, 3).ToString(), Color.Yellow, 0.5f); * VRageRender.MyRenderProxy.DebugDrawText2D(new Vector2(30, 70), "y " + Math.Round(point.Y, 3).ToString(), Color.Yellow, 0.5f); * VRageRender.MyRenderProxy.DebugDrawText2D(new Vector2(30, 80), "z " + Math.Round(point.Z, 3).ToString(), Color.Yellow, 0.5f);*/ } else if (intersection.Value.Entity is MyCubeGrid) { VRageRender.MyRenderProxy.DebugDrawText2D(new Vector2(20, 20), "Detected grid object", Color.Yellow, 0.5f); VRageRender.MyRenderProxy.DebugDrawText2D(new Vector2(20, 30), "Grid name: " + intersection.Value.Entity.DisplayName.ToString(), Color.Yellow, 0.5f); int row = 4; MyCubeGrid grid = intersection.Value.Entity as MyCubeGrid; VRage.Game.Models.MyIntersectionResultLineTriangleEx?t = null; MySlimBlock block = null; if (grid.GetIntersectionWithLine(ref line, out t, out block) && t.HasValue && block != null) { DebugDrawModelTextures(block.FatBlock, ref row); } } else { VRageRender.MyRenderProxy.DebugDrawText2D(new Vector2(20, 20), "Unknown object detected", Color.Yellow, 0.5f); } } else { VRageRender.MyRenderProxy.DebugDrawText2D(new Vector2(20, 20), "Nothing detected nearby", Color.Yellow, 0.5f); } }
private void DebugDrawGeneratingBlock() { LineD line = new LineD(IntersectionStart, IntersectionStart + IntersectionDirection * 200); MyIntersectionResultLineTriangleEx?intersection = MyEntities.GetIntersectionWithLine(ref line, MySession.LocalCharacter, null); if (intersection.HasValue && intersection.Value.Entity is MyCubeGrid) { MyCubeGrid grid = intersection.Value.Entity as MyCubeGrid; MyIntersectionResultLineTriangleEx?t = null; MySlimBlock block = null; if (grid.GetIntersectionWithLine(ref line, out t, out block) && t.HasValue && block != null) { if (block.BlockDefinition.IsGeneratedBlock) { DebugDrawGeneratingBlock(block); } } } }
private void DebugDrawModelTextures() { LineD line = new LineD(IntersectionStart, IntersectionStart + IntersectionDirection * 200); MyIntersectionResultLineTriangleEx?intersection = MyEntities.GetIntersectionWithLine(ref line, MySession.LocalCharacter, null); if (intersection.HasValue) { int row = 0; if (intersection.Value.Entity is MyCubeGrid) { MyCubeGrid grid = intersection.Value.Entity as MyCubeGrid; MyIntersectionResultLineTriangleEx?t = null; MySlimBlock block = null; if (grid.GetIntersectionWithLine(ref line, out t, out block) && t.HasValue && block != null) { DebugDrawModelTextures(block.FatBlock, ref row); } } } }
private void DebugDrawVertexNames() { //VRageRender.MyRenderProxy.DebugDrawText2D(new Vector2(10, 0), "Voxel names searching", Color.Yellow, 0.5f); LineD line = new LineD(IntersectionStart, IntersectionStart + IntersectionDirection * 500); MyIntersectionResultLineTriangleEx?intersection = MyEntities.GetIntersectionWithLine(ref line, MySession.Static.LocalCharacter, null, false, true, true, VRage.Game.Components.IntersectionFlags.ALL_TRIANGLES, 0, false); float yPos = 20; if (intersection.HasValue) { if (intersection.Value.Entity is MyVoxelBase) { MyVoxelBase voxels = (MyVoxelBase)intersection.Value.Entity; Vector3D point = intersection.Value.IntersectionPointInWorldSpace; if (intersection.Value.Entity is MyPlanet) { MyRenderProxy.DebugDrawText2D(new Vector2(20, yPos), "Type: planet/moon", Color.Yellow, DEBUG_SCALE); yPos += 10; MyRenderProxy.DebugDrawText2D(new Vector2(20, yPos), "Terrain: " + voxels.GetMaterialAt(ref point), Color.Yellow, DEBUG_SCALE); yPos += 10; } else { MyRenderProxy.DebugDrawText2D(new Vector2(20, yPos), "Type: asteroid", Color.Yellow, DEBUG_SCALE); yPos += 10; MyRenderProxy.DebugDrawText2D(new Vector2(20, yPos), "Terrain: " + voxels.GetMaterialAt(ref point), Color.Yellow, DEBUG_SCALE); yPos += 10; } MyRenderProxy.DebugDrawText2D(new Vector2(20, yPos), "Object size: " + voxels.SizeInMetres, Color.Yellow, DEBUG_SCALE); yPos += 10; //location /* * VRageRender.MyRenderProxy.DebugDrawText2D(new Vector2(20, 50), "Location:", Color.Yellow, 0.5f); * VRageRender.MyRenderProxy.DebugDrawText2D(new Vector2(30, 60), "x " + Math.Round(point.X, 3).ToString(), Color.Yellow, 0.5f); * VRageRender.MyRenderProxy.DebugDrawText2D(new Vector2(30, 70), "y " + Math.Round(point.Y, 3).ToString(), Color.Yellow, 0.5f); * VRageRender.MyRenderProxy.DebugDrawText2D(new Vector2(30, 80), "z " + Math.Round(point.Z, 3).ToString(), Color.Yellow, 0.5f);*/ } else if (intersection.Value.Entity is MyCubeGrid) { MyCubeGrid grid = (MyCubeGrid)intersection.Value.Entity; MyRenderProxy.DebugDrawText2D(new Vector2(20, yPos), "Detected grid object", Color.Yellow, DEBUG_SCALE); yPos += 10; MyRenderProxy.DebugDrawText2D(new Vector2(20, yPos), String.Format("Grid name: {0}", grid.DisplayName), Color.Yellow, DEBUG_SCALE); yPos += 10; MyIntersectionResultLineTriangleEx?t; MySlimBlock block; if (grid.GetIntersectionWithLine(ref line, out t, out block) && t.HasValue && block != null) { if (block.FatBlock != null) { DebugDrawModelTextures(block.FatBlock, ref yPos); } else { DebugDrawBareBlockInfo(block, ref yPos); } } } else { MyRenderProxy.DebugDrawText2D(new Vector2(20, yPos), "Unknown object detected @ distance " + intersection.Value.Triangle.Distance + "m", Color.Yellow, DEBUG_SCALE); yPos += 10; } MyRenderProxy.DebugDrawText2D(new Vector2(20, yPos), "Distance " + intersection.Value.Triangle.Distance + "m", Color.Yellow, DEBUG_SCALE); } else { MyRenderProxy.DebugDrawText2D(new Vector2(20, 20), "Nothing detected nearby", Color.Yellow, DEBUG_SCALE); } }