public bool TryChangeCameraAttachedTo(MyCameraAttachedToEnum cameraAttachedTo) { if (DetachingForbidden) { return false; } CameraAttachedTo = cameraAttachedTo; return true; }
// Draw class is in two passes, because first pass is drawn before we draw back camera. So it's about having sorting. public static void Draw(MyHudDrawPassEnum pass, MyCameraAttachedToEnum cameraAttachedTo, bool backCamera) { MyRender.GetRenderProfiler().StartProfilingBlock("Clear"); MyCamera.EnableHud(); ClearQuads(); ClearTexts(); MyRender.GetRenderProfiler().EndProfilingBlock(); MyHudDrawElementEnum drawForCameraAttachedTo = m_drawForCameraAttachedTo[(int)cameraAttachedTo]; if (pass == MyHudDrawPassEnum.FIRST) { if ((drawForCameraAttachedTo & MyHudDrawElementEnum.DIRECTION_INDICATORS) != 0) { MyRender.GetRenderProfiler().StartProfilingBlock("AddDirectionIndicators"); AddDirectionIndicators(); MyRender.GetRenderProfiler().EndProfilingBlock(); MyRender.GetRenderProfiler().StartProfilingBlock("AddOreMarkers"); if (MyFakes.ENABLE_DISPLAYING_ORE_ON_HUD) { AddOreMarkers(); } MyRender.GetRenderProfiler().EndProfilingBlock(); } if ((drawForCameraAttachedTo & MyHudDrawElementEnum.DAMAGE_INDICATORS) != 0) { MyRender.GetRenderProfiler().StartProfilingBlock("AddDamageIndicators"); AddDamageIndicators(); MyRender.GetRenderProfiler().EndProfilingBlock(); } } else if (pass == MyHudDrawPassEnum.SECOND) { if ((drawForCameraAttachedTo & MyHudDrawElementEnum.CROSSHAIR) != 0 || MyFakes.CUBE_EDITOR) { if (!MySession.Is25DSector) { MyRender.GetRenderProfiler().StartProfilingBlock("AddHorisontalAngleLine"); AddHorisontalAngleLine(); MyRender.GetRenderProfiler().EndProfilingBlock(); MyRender.GetRenderProfiler().StartProfilingBlock("AddCrosshair"); if (CanDrawCrossHair()) { AddCrosshair(); } MyRender.GetRenderProfiler().EndProfilingBlock(); } } if ((drawForCameraAttachedTo & MyHudDrawElementEnum.CROSSHAIR_DYNAMIC) != 0) { MyRender.GetRenderProfiler().StartProfilingBlock("AddCrosshairDynamic"); if (CanDrawCrossHair()) { AddCrosshairDynamic(); } MyRender.GetRenderProfiler().EndProfilingBlock(); } if (backCamera && (drawForCameraAttachedTo & MyHudDrawElementEnum.BACK_CAMERA) != 0) { MyRender.GetRenderProfiler().StartProfilingBlock("AddBackCameraBorders"); AddBackCameraBorders(); MyRender.GetRenderProfiler().EndProfilingBlock(); } if ((drawForCameraAttachedTo & MyHudDrawElementEnum.AMMO) != 0) { MyRender.GetRenderProfiler().StartProfilingBlock("AddAmountOfAmmo"); AddAmountOfAmmo(); MyRender.GetRenderProfiler().EndProfilingBlock(); } if ((drawForCameraAttachedTo & MyHudDrawElementEnum.HARVEST_MATERIAL) != 0) { MyRender.GetRenderProfiler().StartProfilingBlock("AddHarvestedMaterial"); AddHarvestedMaterial(); MyRender.GetRenderProfiler().EndProfilingBlock(); } bool drawBargraphsForPlayerShip = (drawForCameraAttachedTo & MyHudDrawElementEnum.BARGRAPHS_PLAYER_SHIP) != 0; bool drawBargraphsForLargeWeapon = (drawForCameraAttachedTo & MyHudDrawElementEnum.BARGRAPHS_LARGE_WEAPON) != 0; if (drawBargraphsForPlayerShip || drawBargraphsForLargeWeapon) { MyRender.GetRenderProfiler().StartProfilingBlock("AddBargraphsHUD"); AddBargraphsHUD(drawBargraphsForPlayerShip, drawBargraphsForLargeWeapon); MyRender.GetRenderProfiler().EndProfilingBlock(); } if ((drawForCameraAttachedTo & MyHudDrawElementEnum.DIALOGUES) != 0 && MySubtitles.Enabled) { MyRender.GetRenderProfiler().StartProfilingBlock("AddDialogues"); AddDialogues(); MyRender.GetRenderProfiler().EndProfilingBlock(); } if ((drawForCameraAttachedTo & MyHudDrawElementEnum.MISSION_OBJECTIVES) != 0) { MyRender.GetRenderProfiler().StartProfilingBlock("AddMissionObjectives"); AddMissionObjectives(); MyRender.GetRenderProfiler().EndProfilingBlock(); } MyRender.GetRenderProfiler().StartProfilingBlock("MyHudWarnings.Update"); MyHudWarnings.Update(); MyRender.GetRenderProfiler().EndProfilingBlock(); MyRender.GetRenderProfiler().StartProfilingBlock("MyHudWarnings.Draw"); MyHudWarnings.Draw(); MyRender.GetRenderProfiler().EndProfilingBlock(); } else { throw new MyMwcExceptionApplicationShouldNotGetHere(); } MyRender.GetRenderProfiler().StartProfilingBlock("DrawVertices"); DrawVertices(); MyRender.GetRenderProfiler().EndProfilingBlock(); MyRender.GetRenderProfiler().StartProfilingBlock("DrawTexts"); DrawTexts(); MyRender.GetRenderProfiler().EndProfilingBlock(); }
void OnMeDied(byte? killerId) { if (IsStory()) { // Player has same ship and inventory, with minimum of 20% armor, health, oxygen... StoredShip = MySession.PlayerShip.GetObjectBuilder(false) as MyMwcObjectBuilder_SmallShip; StoredShip.ClearEntityId(); } m_lastConfig = MySession.PlayerShip.Config.GetObjectBuilder(); m_lastAmmoAssignment = MySession.PlayerShip.Weapons.AmmoAssignments.GetObjectBuilder(); m_lastCamera = MyGuiScreenGamePlay.Static.CameraAttachedTo; if (m_lastCamera != MyCameraAttachedToEnum.PlayerMinerShip && m_lastCamera != MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonDynamic && m_lastCamera != MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonFollowing && m_lastCamera != MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonStatic) { m_lastCamera = MyCameraAttachedToEnum.PlayerMinerShip; } PlayerStatistics.Deaths++; UpdateStats(); DisplayDeathNotification(killerId); // This is really SICK! MyGuiManager.CloseIngameScreens(); m_respawnTime = MyMinerGame.TotalGamePlayTimeInMilliseconds + (int)m_multiplayerConfig.RespawnTime.TotalMilliseconds; Log("DIE, respawn in: " + m_multiplayerConfig.RespawnTime.TotalMilliseconds + " ms"); }
public static bool CanDrawElement(MyCameraAttachedToEnum cameraAttachedTo, MyHudDrawElementEnum element) { return (m_drawForCameraAttachedTo[(int)cameraAttachedTo] & element) != 0; }