public override void Draw() { base.Draw(); if (MyTrashRemoval.PreviewEnabled && MySession.Static.HasAdminRights) { DrawTrashAdminView(); } bool visible = false; for (int i = 0; i < RenderObjectIDs.Length; i++) { if (RenderObjectIDs[i] == MyRenderProxy.RENDER_ID_UNASSIGNED) { break; } if (MyRenderProxy.VisibleObjectsRead.Contains(this.RenderObjectIDs[i])) { visible = true; break; } } if (visible) { foreach (var block in m_grid.BlocksForDraw) { if (MyRenderProxy.VisibleObjectsRead.Contains(block.Render.RenderObjectIDs[0])) { block.Render.Draw(); } } } if (MyCubeGrid.ShowCenterOfMass && !IsStatic && Container.Entity.Physics != null && Container.Entity.Physics.HasRigidBody) { var matrix = Container.Entity.Physics.GetWorldMatrix(); var center = Container.Entity.Physics.CenterOfMassWorld; var cam = MySector.MainCamera.Position; var dist = Vector3.Distance(cam, center); bool draw = false; if (dist < 30) { draw = true; } else if (dist < 200) { draw = true; MyPhysics.CastRay(cam, center, m_tmpHitList, MyPhysics.CollisionLayers.DynamicDoubledCollisionLayer); foreach (var hit in m_tmpHitList) { if (hit.HkHitInfo.GetHitEntity() != this) { draw = false; break; } } m_tmpHitList.Clear(); } if (draw) { float size = MathHelper.Lerp(1, 9, dist / 200); var mat = "WeaponLaserIgnoreDepth"; var color = Color.Yellow.ToVector4(); var thickness = 0.02f * size; MySimpleObjectDraw.DrawLine(center - matrix.Up * 0.5f * size, center + matrix.Up * 0.5f * size, mat, ref color, thickness); MySimpleObjectDraw.DrawLine(center - matrix.Forward * 0.5f * size, center + matrix.Forward * 0.5f * size, mat, ref color, thickness); MySimpleObjectDraw.DrawLine(center - matrix.Right * 0.5f * size, center + matrix.Right * 0.5f * size, mat, ref color, thickness); MyTransparentGeometry.AddBillboardOriented("RedDotIgnoreDepth", Color.White.ToVector4(), center, MySector.MainCamera.LeftVector, MySector.MainCamera.UpVector, 0.1f * size, priority: 1); } } if (MyCubeGrid.ShowGridPivot) { var matrix = Container.Entity.WorldMatrix; var pos = matrix.Translation; var cam = MySector.MainCamera.Position; var dist = Vector3.Distance(cam, pos); bool draw = false; if (dist < 30) { draw = true; } else if (dist < 200) { draw = true; MyPhysics.CastRay(cam, pos, m_tmpHitList, MyPhysics.CollisionLayers.DynamicDoubledCollisionLayer); foreach (var hit in m_tmpHitList) { if (hit.HkHitInfo.GetHitEntity() != this) { draw = false; break; } } m_tmpHitList.Clear(); } if (draw) { float size = MathHelper.Lerp(1, 9, dist / 200); var mat = "WeaponLaserIgnoreDepth"; var thickness = 0.02f * size; var color = Color.Green.ToVector4(); MySimpleObjectDraw.DrawLine(pos, pos + matrix.Up * 0.5f * size, mat, ref color, thickness); color = Color.Blue.ToVector4(); MySimpleObjectDraw.DrawLine(pos, pos + matrix.Forward * 0.5f * size, mat, ref color, thickness); color = Color.Red.ToVector4(); MySimpleObjectDraw.DrawLine(pos, pos + matrix.Right * 0.5f * size, mat, ref color, thickness); MyTransparentGeometry.AddBillboardOriented("RedDotIgnoreDepth", Color.White.ToVector4(), pos, MySector.MainCamera.LeftVector, MySector.MainCamera.UpVector, 0.1f * size, priority: 1); MyRenderProxy.DebugDrawAxis(matrix, 0.5f, false);//DX 11 desnt support depthRead false } } if (MyCubeGrid.ShowStructuralIntegrity) { if (m_grid.StructuralIntegrity == null) { if (MyFakes.ENABLE_STRUCTURAL_INTEGRITY) { m_grid.CreateStructuralIntegrity(); if (m_grid.StructuralIntegrity != null) { m_grid.StructuralIntegrity.EnabledOnlyForDraw = true; } } } else { m_grid.StructuralIntegrity.Draw(); } } else if (m_grid.StructuralIntegrity != null && m_grid.StructuralIntegrity.EnabledOnlyForDraw) { m_grid.CloseStructuralIntegrity(); } if (MyFakes.ENABLE_ATMOSPHERIC_ENTRYEFFECT) { ProfilerShort.Begin("DrawAtmosphericEntryEffect"); DrawAtmosphericEntryEffect(); ProfilerShort.End(); } }
public override void Draw() { base.Draw(); foreach (var block in m_grid.BlocksForDraw) { if (MyRenderProxy.VisibleObjectsRead.Contains(block.Render.RenderObjectIDs[0])) { block.Render.Draw(); } } if (MyCubeGrid.ShowCenterOfMass && !IsStatic && Entity.Physics != null && Entity.Physics.HasRigidBody) { var matrix = Entity.Physics.GetWorldMatrix(); var center = Entity.Physics.CenterOfMassWorld; var cam = MySector.MainCamera.Position; var dist = Vector3.Distance(cam, center); bool draw = false; if (dist < 30) { draw = true; } else if (dist < 200) { draw = true; MyPhysics.CastRay(cam, center, m_tmpHitList, MyPhysics.DynamicDoubledCollisionLayer); foreach (var hit in m_tmpHitList) { if (hit.HkHitInfo.Body.GetEntity() != this) { draw = false; break; } } m_tmpHitList.Clear(); } if (draw) { float size = MathHelper.Lerp(1, 9, dist / 200); var mat = "WeaponLaserIgnoreDepth"; var color = Color.Yellow.ToVector4(); var thickness = 0.02f * size; MySimpleObjectDraw.DrawLine(center - matrix.Up * 0.5f * size, center + matrix.Up * 0.5f * size, mat, ref color, thickness); MySimpleObjectDraw.DrawLine(center - matrix.Forward * 0.5f * size, center + matrix.Forward * 0.5f * size, mat, ref color, thickness); MySimpleObjectDraw.DrawLine(center - matrix.Right * 0.5f * size, center + matrix.Right * 0.5f * size, mat, ref color, thickness); Sandbox.Graphics.TransparentGeometry.MyTransparentGeometry.AddBillboardOriented("RedDotIgnoreDepth", Color.White.ToVector4(), center, MySector.MainCamera.LeftVector, MySector.MainCamera.UpVector, 0.1f * size, priority: 1); } } if (MyCubeGrid.ShowGridPivot) { var matrix = Entity.WorldMatrix; var pos = matrix.Translation; var cam = MySector.MainCamera.Position; var dist = Vector3.Distance(cam, pos); bool draw = false; if (dist < 30) { draw = true; } else if (dist < 200) { draw = true; MyPhysics.CastRay(cam, pos, m_tmpHitList, MyPhysics.DynamicDoubledCollisionLayer); foreach (var hit in m_tmpHitList) { if (hit.HkHitInfo.Body.GetEntity() != this) { draw = false; break; } } m_tmpHitList.Clear(); } if (draw) { float size = MathHelper.Lerp(1, 9, dist / 200); var mat = "WeaponLaserIgnoreDepth"; var thickness = 0.02f * size; var color = Color.Blue.ToVector4(); MySimpleObjectDraw.DrawLine(pos, pos + matrix.Up * 0.5f * size, mat, ref color, thickness); color = Color.Green.ToVector4(); MySimpleObjectDraw.DrawLine(pos, pos + matrix.Forward * 0.5f * size, mat, ref color, thickness); color = Color.Red.ToVector4(); MySimpleObjectDraw.DrawLine(pos, pos + matrix.Right * 0.5f * size, mat, ref color, thickness); Sandbox.Graphics.TransparentGeometry.MyTransparentGeometry.AddBillboardOriented("RedDotIgnoreDepth", Color.White.ToVector4(), pos, MySector.MainCamera.LeftVector, MySector.MainCamera.UpVector, 0.1f * size, priority: 1); } } if (MyCubeGrid.ShowStructuralIntegrity) { if (m_grid.StructuralIntegrity == null) { if (MyFakes.ENABLE_STRUCTURAL_INTEGRITY) { m_grid.CreateStructuralIntegrity(); if (m_grid.StructuralIntegrity != null) { m_grid.StructuralIntegrity.EnabledOnlyForDraw = true; } } } else { m_grid.StructuralIntegrity.Draw(); } } else if (m_grid.StructuralIntegrity != null && m_grid.StructuralIntegrity.EnabledOnlyForDraw) { m_grid.CloseStructuralIntegrity(); } }