public void Update(float dt) { if (IsSleeping && m_componentPlayer.ComponentHealth.Health > 0f) { m_sleepFactor = MathUtils.Min(m_sleepFactor + 0.33f * Time.FrameDuration, 1f); m_minWetness = MathUtils.Min(m_minWetness, m_componentPlayer.ComponentVitalStats.Wetness); m_componentPlayer.PlayerStats.TimeSlept += m_subsystemGameInfo.TotalElapsedGameTimeDelta; if ((m_componentPlayer.ComponentVitalStats.Sleep >= 1f || m_subsystemGameInfo.WorldSettings.GameMode == GameMode.Creative) && m_subsystemTimeOfDay.TimeOfDay > 0.3f && m_subsystemTimeOfDay.TimeOfDay < 0.599999964f && m_sleepStartTime.HasValue && m_subsystemGameInfo.TotalElapsedGameTime > m_sleepStartTime + 180.0) { WakeUp(); } if (m_componentPlayer.ComponentHealth.HealthChange < 0f && (m_componentPlayer.ComponentHealth.Health < 0.5f || m_componentPlayer.ComponentVitalStats.Sleep > 0.5f)) { WakeUp(); } if (m_componentPlayer.ComponentVitalStats.Wetness > m_minWetness + 0.05f && m_componentPlayer.ComponentVitalStats.Sleep > 0.2f) { WakeUp(); m_subsystemTime.QueueGameTimeDelayedExecution(m_subsystemTime.GameTime + 1.0, delegate { m_componentPlayer.ComponentGui.DisplaySmallMessage(LanguageControl.Get(fName, 6), Color.White, blinking: true, playNotificationSound: true); }); } if (m_sleepStartTime.HasValue) { float num = (float)(m_subsystemGameInfo.TotalElapsedGameTime - m_sleepStartTime.Value); if (m_allowManualWakeUp && num > 10f) { if (m_componentPlayer.GameWidget.Input.Any && !DialogsManager.HasDialogs(m_componentPlayer.GameWidget)) { m_componentPlayer.GameWidget.Input.Clear(); WakeUp(); m_subsystemTime.QueueGameTimeDelayedExecution(m_subsystemTime.GameTime + 2.0, delegate { m_componentPlayer.ComponentGui.DisplaySmallMessage(LanguageControl.Get(fName, 7), Color.White, blinking: true, playNotificationSound: false); }); } m_messageFactor = MathUtils.Min(m_messageFactor + 0.5f * Time.FrameDuration, 1f); m_componentPlayer.ComponentScreenOverlays.Message = LanguageControl.Get(fName, 8); m_componentPlayer.ComponentScreenOverlays.MessageFactor = m_messageFactor; } if (!m_allowManualWakeUp && num > 5f) { m_messageFactor = MathUtils.Min(m_messageFactor + 1f * Time.FrameDuration, 1f); m_componentPlayer.ComponentScreenOverlays.Message = LanguageControl.Get(fName, 9); m_componentPlayer.ComponentScreenOverlays.MessageFactor = m_messageFactor; } } } else { m_sleepFactor = MathUtils.Max(m_sleepFactor - 1f * Time.FrameDuration, 0f); } m_componentPlayer.ComponentScreenOverlays.BlackoutFactor = MathUtils.Max(m_componentPlayer.ComponentScreenOverlays.BlackoutFactor, m_sleepFactor); if (m_sleepFactor > 0.01f) { m_componentPlayer.ComponentScreenOverlays.FloatingMessage = LanguageControl.Get(fName, 10); m_componentPlayer.ComponentScreenOverlays.FloatingMessageFactor = MathUtils.Saturate(10f * (m_sleepFactor - 0.9f)); } }
public override void Update() { if (GameManager.Project != null) { double realTime = Time.RealTime; if (realTime - m_lastAutosaveTime > 120.0) { m_lastAutosaveTime = realTime; GameManager.SaveProject(waitForCompletion: false, showErrorDialog: true); } if (MarketplaceManager.IsTrialMode && GameManager.Project.FindSubsystem <SubsystemGameInfo>(throwOnError: true).TotalElapsedGameTime > 1140.0) { GameManager.SaveProject(waitForCompletion: true, showErrorDialog: false); GameManager.DisposeProject(); ScreensManager.SwitchScreen("TrialEnded"); } GameManager.UpdateProject(); } ShowHideCursors(GameManager.Project == null || DialogsManager.HasDialogs(this) || DialogsManager.HasDialogs(base.RootWidget) || ScreensManager.CurrentScreen != this); }
public PlayerData(Project project) { m_project = project; SubsystemPlayers = project.FindSubsystem <SubsystemPlayers>(throwOnError: true); SubsystemGameWidgets = project.FindSubsystem <SubsystemGameWidgets>(throwOnError: true); m_subsystemTerrain = project.FindSubsystem <SubsystemTerrain>(throwOnError: true); m_subsystemGameInfo = project.FindSubsystem <SubsystemGameInfo>(throwOnError: true); m_subsystemSky = project.FindSubsystem <SubsystemSky>(throwOnError: true); m_playerClass = PlayerClass.Male; Level = 1f; FirstSpawnTime = -1.0; LastSpawnTime = -1.0; RandomizeCharacterSkin(); ResetName(); InputDevice = WidgetInputDevice.None; m_stateMachine.AddState("FirstUpdate", null, delegate { if (ComponentPlayer != null) { UpdateSpawnDialog(string.Format(LanguageControl.Get(fName, 4), Name, MathUtils.Floor(Level)), null, 0f, resetProgress: true); m_stateMachine.TransitionTo("WaitForTerrain"); } else { m_stateMachine.TransitionTo("PrepareSpawn"); } }, null); m_stateMachine.AddState("PrepareSpawn", delegate { if (SpawnPosition == Vector3.Zero) { if (SubsystemPlayers.GlobalSpawnPosition == Vector3.Zero) { PlayerData playerData = SubsystemPlayers.PlayersData.FirstOrDefault((PlayerData pd) => pd.SpawnPosition != Vector3.Zero); if (playerData != null) { if (playerData.ComponentPlayer != null) { SpawnPosition = playerData.ComponentPlayer.ComponentBody.Position; m_spawnMode = SpawnMode.InitialNoIntro; } else { SpawnPosition = playerData.SpawnPosition; m_spawnMode = SpawnMode.InitialNoIntro; } } else { SpawnPosition = m_subsystemTerrain.TerrainContentsGenerator.FindCoarseSpawnPosition(); m_spawnMode = SpawnMode.InitialIntro; } SubsystemPlayers.GlobalSpawnPosition = SpawnPosition; } else { SpawnPosition = SubsystemPlayers.GlobalSpawnPosition; m_spawnMode = SpawnMode.InitialNoIntro; } } else { m_spawnMode = SpawnMode.Respawn; } if (m_spawnMode == SpawnMode.Respawn) { UpdateSpawnDialog(string.Format(LanguageControl.Get(fName, 2), Name, MathUtils.Floor(Level)), LanguageControl.Get(fName, 3), 0f, resetProgress: true); } else { UpdateSpawnDialog(string.Format(LanguageControl.Get(fName, 4), Name, MathUtils.Floor(Level)), null, 0f, resetProgress: true); } m_subsystemTerrain.TerrainUpdater.SetUpdateLocation(PlayerIndex, SpawnPosition.XZ, 0f, 64f); m_terrainWaitStartTime = Time.FrameStartTime; }, delegate { if (Time.PeriodicEvent(0.1, 0.0)) { float updateProgress2 = m_subsystemTerrain.TerrainUpdater.GetUpdateProgress(PlayerIndex, 0f, 64f); UpdateSpawnDialog(null, null, 0.5f * updateProgress2, resetProgress: false); if (!(updateProgress2 < 1f) || !(Time.FrameStartTime - m_terrainWaitStartTime < 15.0)) { switch (m_spawnMode) { case SpawnMode.InitialIntro: SpawnPosition = FindIntroSpawnPosition(SpawnPosition.XZ); break; case SpawnMode.InitialNoIntro: SpawnPosition = FindNoIntroSpawnPosition(SpawnPosition, respawn: false); break; case SpawnMode.Respawn: SpawnPosition = FindNoIntroSpawnPosition(SpawnPosition, respawn: true); break; default: throw new InvalidOperationException(LanguageControl.Get(fName, 5)); } m_stateMachine.TransitionTo("WaitForTerrain"); } } }, null); m_stateMachine.AddState("WaitForTerrain", delegate { m_terrainWaitStartTime = Time.FrameStartTime; Vector2 center = (ComponentPlayer != null) ? ComponentPlayer.ComponentBody.Position.XZ : SpawnPosition.XZ; m_subsystemTerrain.TerrainUpdater.SetUpdateLocation(PlayerIndex, center, MathUtils.Min(m_subsystemSky.VisibilityRange, 64f), 0f); }, delegate { if (Time.PeriodicEvent(0.1, 0.0)) { float updateProgress = m_subsystemTerrain.TerrainUpdater.GetUpdateProgress(PlayerIndex, MathUtils.Min(m_subsystemSky.VisibilityRange, 64f), 0f); UpdateSpawnDialog(null, null, 0.5f + 0.5f * updateProgress, resetProgress: false); if ((updateProgress >= 1f && Time.FrameStartTime - m_terrainWaitStartTime > 2.0) || Time.FrameStartTime - m_terrainWaitStartTime >= 15.0) { if (ComponentPlayer == null) { SpawnPlayer(SpawnPosition, m_spawnMode); } m_stateMachine.TransitionTo("Playing"); } } }, null); m_stateMachine.AddState("Playing", delegate { HideSpawnDialog(); }, delegate { if (ComponentPlayer == null) { m_stateMachine.TransitionTo("PrepareSpawn"); } else if (m_playerDeathTime.HasValue) { m_stateMachine.TransitionTo("PlayerDead"); } else if (ComponentPlayer.ComponentHealth.Health <= 0f) { m_playerDeathTime = Time.RealTime; } }, null); m_stateMachine.AddState("PlayerDead", delegate { GameWidget.ActiveCamera = GameWidget.FindCamera <DeathCamera>(); if (ComponentPlayer != null) { string text = ComponentPlayer.ComponentHealth.CauseOfDeath; if (string.IsNullOrEmpty(text)) { text = LanguageControl.Get(fName, 12); } string arg = string.Format(LanguageControl.Get(fName, 13), text); if (m_subsystemGameInfo.WorldSettings.GameMode == GameMode.Cruel) { ComponentPlayer.ComponentGui.DisplayLargeMessage(LanguageControl.Get(fName, 6), string.Format(LanguageControl.Get(fName, 7), arg, LanguageControl.Get("GameMode", m_subsystemGameInfo.WorldSettings.GameMode.ToString())), 30f, 1.5f); } else if (m_subsystemGameInfo.WorldSettings.GameMode == GameMode.Adventure && !m_subsystemGameInfo.WorldSettings.IsAdventureRespawnAllowed) { ComponentPlayer.ComponentGui.DisplayLargeMessage(LanguageControl.Get(fName, 6), string.Format(LanguageControl.Get(fName, 8), arg), 30f, 1.5f); } else { ComponentPlayer.ComponentGui.DisplayLargeMessage(LanguageControl.Get(fName, 6), string.Format(LanguageControl.Get(fName, 9), arg), 30f, 1.5f); } } Level = MathUtils.Max(MathUtils.Floor(Level / 2f), 1f); }, delegate { if (ComponentPlayer == null) { m_stateMachine.TransitionTo("PrepareSpawn"); } else if (Time.RealTime - m_playerDeathTime.Value > 1.5 && !DialogsManager.HasDialogs(ComponentPlayer.GuiWidget) && ComponentPlayer.GameWidget.Input.Any) { if (m_subsystemGameInfo.WorldSettings.GameMode == GameMode.Cruel) { DialogsManager.ShowDialog(ComponentPlayer.GuiWidget, new GameMenuDialog(ComponentPlayer)); } else if (m_subsystemGameInfo.WorldSettings.GameMode == GameMode.Adventure && !m_subsystemGameInfo.WorldSettings.IsAdventureRespawnAllowed) { ScreensManager.SwitchScreen("GameLoading", GameManager.WorldInfo, "AdventureRestart"); } else { m_project.RemoveEntity(ComponentPlayer.Entity, disposeEntity: true); } } }, null); m_stateMachine.TransitionTo("FirstUpdate"); }
public void UpdateInputFromVrControllers(WidgetInput input) { if (!IsControlledByVr) { return; } IsControlledByTouch = false; if (m_componentGui.ModalPanelWidget != null || DialogsManager.HasDialogs(m_componentPlayer.GuiWidget)) { if (!input.IsVrCursorVisible) { input.IsVrCursorVisible = true; } } else { input.IsVrCursorVisible = false; float num = MathUtils.Pow(1.25f, 10f * (SettingsManager.MoveSensitivity - 0.5f)); float num2 = MathUtils.Pow(1.25f, 10f * (SettingsManager.LookSensitivity - 0.5f)); float num3 = MathUtils.Clamp(m_subsystemTime.GameTimeDelta, 0f, 0.1f); Vector2 v = Vector2.Normalize(m_componentPlayer.ComponentBody.Matrix.Right.XZ); Vector2 v2 = Vector2.Normalize(m_componentPlayer.ComponentBody.Matrix.Forward.XZ); Vector2 vrStickPosition = input.GetVrStickPosition(VrController.Left, 0.2f); Vector2 vrStickPosition2 = input.GetVrStickPosition(VrController.Right, 0.2f); Matrix m = VrManager.HmdMatrixInverted.OrientationMatrix * m_componentPlayer.ComponentCreatureModel.EyeRotation.ToMatrix(); Vector2 xZ = Vector3.TransformNormal(new Vector3(VrManager.WalkingVelocity.X, 0f, VrManager.WalkingVelocity.Y), m).XZ; Vector3 value = Vector3.TransformNormal(new Vector3(VrManager.HeadMove.X, 0f, VrManager.HeadMove.Y), m); Vector3 zero = Vector3.Zero; zero += 0.5f * new Vector3(Vector2.Dot(xZ, v), 0f, Vector2.Dot(xZ, v2)); zero += new Vector3(2f * vrStickPosition.X, 2f * vrStickPosition2.Y, 2f * vrStickPosition.Y); m_playerInput.Move += zero; m_playerInput.SneakMove += zero; m_playerInput.VrMove = value; TouchInput?touchInput = VrManager.GetTouchInput(VrController.Left); if (touchInput.HasValue && num3 > 0f) { if (touchInput.Value.InputType == TouchInputType.Move) { Vector2 move = touchInput.Value.Move; Vector2 vector = 10f * num / num3 * new Vector2(0.5f) * move * MathUtils.Pow(move.LengthSquared(), 0.175f); m_playerInput.SneakMove.X += vector.X; m_playerInput.SneakMove.Z += vector.Y; m_playerInput.Move.X += ProcessInputValue(touchInput.Value.TotalMoveLimited.X, 0.1f, 1f); m_playerInput.Move.Z += ProcessInputValue(touchInput.Value.TotalMoveLimited.Y, 0.1f, 1f); } else if (touchInput.Value.InputType == TouchInputType.Tap) { m_playerInput.Jump = true; } } m_playerInput.Look += 0.5f * vrStickPosition2 * MathUtils.Pow(vrStickPosition2.LengthSquared(), 0.25f); Vector3 hmdMatrixYpr = VrManager.HmdMatrixYpr; Vector3 hmdLastMatrixYpr = VrManager.HmdLastMatrixYpr; Vector3 vector2 = hmdMatrixYpr - hmdLastMatrixYpr; m_playerInput.VrLook = new Vector2(vector2.X, hmdMatrixYpr.Y); TouchInput?touchInput2 = VrManager.GetTouchInput(VrController.Right); Vector2 zero2 = Vector2.Zero; if (touchInput2.HasValue) { if (touchInput2.Value.InputType == TouchInputType.Move) { zero2.X = touchInput2.Value.Move.X; m_playerInput.Move.Y += ProcessInputValue(touchInput2.Value.TotalMoveLimited.Y, 0.1f, 1f); } else if (touchInput2.Value.InputType == TouchInputType.Tap) { m_playerInput.Jump = true; } } if (num3 > 0f) { m_vrSmoothLook = Vector2.Lerp(m_vrSmoothLook, zero2, 14f * num3); m_playerInput.Look += num2 / num3 * new Vector2(0.25f) * m_vrSmoothLook * MathUtils.Pow(m_vrSmoothLook.LengthSquared(), 0.3f); } if (VrManager.IsControllerPresent(VrController.Right)) { m_playerInput.Dig = (VrManager.IsButtonDown(VrController.Right, VrControllerButton.Trigger) ? CalculateVrHandRay() : m_playerInput.Dig); m_playerInput.Hit = (VrManager.IsButtonDownOnce(VrController.Right, VrControllerButton.Trigger) ? CalculateVrHandRay() : m_playerInput.Hit); m_playerInput.Aim = (VrManager.IsButtonDown(VrController.Left, VrControllerButton.Trigger) ? CalculateVrHandRay() : m_playerInput.Aim); m_playerInput.Interact = (VrManager.IsButtonDownOnce(VrController.Left, VrControllerButton.Trigger) ? CalculateVrHandRay() : m_playerInput.Interact); } m_playerInput.ToggleMount |= input.IsVrButtonDownOnce(VrController.Left, VrControllerButton.TouchpadUp); m_playerInput.ToggleSneak |= input.IsVrButtonDownOnce(VrController.Left, VrControllerButton.TouchpadDown); m_playerInput.EditItem |= input.IsVrButtonDownOnce(VrController.Left, VrControllerButton.Grip); m_playerInput.ToggleCreativeFly |= input.IsVrButtonDownOnce(VrController.Right, VrControllerButton.TouchpadUp); if (input.IsVrButtonDownOnce(VrController.Right, VrControllerButton.TouchpadLeft)) { m_playerInput.ScrollInventory--; } if (input.IsVrButtonDownOnce(VrController.Right, VrControllerButton.TouchpadRight)) { m_playerInput.ScrollInventory++; } m_playerInput.Drop |= input.IsVrButtonDownOnce(VrController.Right, VrControllerButton.Grip); } if (!DialogsManager.HasDialogs(m_componentPlayer.GuiWidget)) { m_playerInput.ToggleInventory |= input.IsVrButtonDownOnce(VrController.Right, VrControllerButton.Menu); } }
public void UpdateInputFromGamepad(WidgetInput input) { Vector3 viewPosition = m_componentPlayer.GameWidget.ActiveCamera.ViewPosition; Vector3 viewDirection = m_componentPlayer.GameWidget.ActiveCamera.ViewDirection; if (m_componentGui.ModalPanelWidget != null || DialogsManager.HasDialogs(m_componentPlayer.GuiWidget)) { if (!input.IsPadCursorVisible) { ViewWidget viewWidget = m_componentPlayer.ViewWidget; Vector2 padCursorPosition = viewWidget.WidgetToScreen(viewWidget.ActualSize / 2f); input.IsPadCursorVisible = true; input.PadCursorPosition = padCursorPosition; } } else { input.IsPadCursorVisible = false; Vector3 zero = Vector3.Zero; Vector2 padStickPosition = input.GetPadStickPosition(GamePadStick.Left, SettingsManager.GamepadDeadZone); Vector2 padStickPosition2 = input.GetPadStickPosition(GamePadStick.Right, SettingsManager.GamepadDeadZone); float padTriggerPosition = input.GetPadTriggerPosition(GamePadTrigger.Left); float padTriggerPosition2 = input.GetPadTriggerPosition(GamePadTrigger.Right); zero += new Vector3(2f * padStickPosition.X, 0f, 2f * padStickPosition.Y); zero += Vector3.UnitY * (input.IsPadButtonDown(GamePadButton.A) ? 1 : 0); zero += -Vector3.UnitY * (input.IsPadButtonDown(GamePadButton.RightShoulder) ? 1 : 0); m_playerInput.Move += zero; m_playerInput.SneakMove += zero; m_playerInput.Look += 0.75f * padStickPosition2 * MathUtils.Pow(padStickPosition2.LengthSquared(), 0.25f); m_playerInput.Jump |= input.IsPadButtonDownOnce(GamePadButton.A); m_playerInput.Dig = ((padTriggerPosition2 >= 0.5f) ? new Ray3?(new Ray3(viewPosition, viewDirection)) : m_playerInput.Dig); m_playerInput.Hit = ((padTriggerPosition2 >= 0.5f && m_lastRightTrigger < 0.5f) ? new Ray3?(new Ray3(viewPosition, viewDirection)) : m_playerInput.Hit); m_playerInput.Aim = ((padTriggerPosition >= 0.5f) ? new Ray3?(new Ray3(viewPosition, viewDirection)) : m_playerInput.Aim); m_playerInput.Interact = ((padTriggerPosition >= 0.5f && m_lastLeftTrigger < 0.5f) ? new Ray3?(new Ray3(viewPosition, viewDirection)) : m_playerInput.Interact); m_playerInput.Drop |= input.IsPadButtonDownOnce(GamePadButton.B); m_playerInput.ToggleMount |= (input.IsPadButtonDownOnce(GamePadButton.LeftThumb) || input.IsPadButtonDownOnce(GamePadButton.DPadUp)); m_playerInput.EditItem |= input.IsPadButtonDownOnce(GamePadButton.LeftShoulder); m_playerInput.ToggleSneak |= input.IsPadButtonDownOnce(GamePadButton.RightShoulder); m_playerInput.SwitchCameraMode |= (input.IsPadButtonDownOnce(GamePadButton.RightThumb) || input.IsPadButtonDownOnce(GamePadButton.DPadDown)); if (input.IsPadButtonDownRepeat(GamePadButton.DPadLeft)) { m_playerInput.ScrollInventory--; } if (input.IsPadButtonDownRepeat(GamePadButton.DPadRight)) { m_playerInput.ScrollInventory++; } if (padStickPosition != Vector2.Zero || padStickPosition2 != Vector2.Zero) { IsControlledByTouch = false; } m_lastLeftTrigger = padTriggerPosition; m_lastRightTrigger = padTriggerPosition2; } if (!DialogsManager.HasDialogs(m_componentPlayer.GuiWidget)) { m_playerInput.ToggleInventory |= input.IsPadButtonDownOnce(GamePadButton.X); m_playerInput.ToggleClothing |= input.IsPadButtonDownOnce(GamePadButton.Y); m_playerInput.GamepadHelp |= input.IsPadButtonDownOnce(GamePadButton.Start); } }
public void UpdateInputFromMouseAndKeyboard(WidgetInput input) { Vector3 viewPosition = m_componentPlayer.GameWidget.ActiveCamera.ViewPosition; Vector3 viewDirection = m_componentPlayer.GameWidget.ActiveCamera.ViewDirection; if (m_componentGui.ModalPanelWidget != null || DialogsManager.HasDialogs(m_componentPlayer.GuiWidget)) { if (!input.IsMouseCursorVisible) { ViewWidget viewWidget = m_componentPlayer.ViewWidget; Vector2 value = viewWidget.WidgetToScreen(viewWidget.ActualSize / 2f); input.IsMouseCursorVisible = true; input.MousePosition = value; } } else { input.IsMouseCursorVisible = false; Vector2 zero = Vector2.Zero; int num = 0; if (Window.IsActive && Time.FrameDuration > 0f) { Point2 mouseMovement = input.MouseMovement; int mouseWheelMovement = input.MouseWheelMovement; zero.X = 0.02f * (float)mouseMovement.X / Time.FrameDuration / 60f; zero.Y = -0.02f * (float)mouseMovement.Y / Time.FrameDuration / 60f; num = mouseWheelMovement / 120; if (mouseMovement != Point2.Zero) { IsControlledByTouch = false; } } Vector3 vector = default(Vector3) + Vector3.UnitX * (input.IsKeyDown(Key.D) ? 1 : 0); vector += -Vector3.UnitZ * (input.IsKeyDown(Key.S) ? 1 : 0); vector += Vector3.UnitZ * (input.IsKeyDown(Key.W) ? 1 : 0); vector += -Vector3.UnitX * (input.IsKeyDown(Key.A) ? 1 : 0); vector += Vector3.UnitY * (input.IsKeyDown(Key.Space) ? 1 : 0); vector += -Vector3.UnitY * (input.IsKeyDown(Key.Shift) ? 1 : 0); m_playerInput.Look += new Vector2(MathUtils.Clamp(zero.X, -15f, 15f), MathUtils.Clamp(zero.Y, -15f, 15f)); m_playerInput.Move += vector; m_playerInput.SneakMove += vector; m_playerInput.Jump |= input.IsKeyDownOnce(Key.Space); m_playerInput.ScrollInventory -= num; m_playerInput.Dig = (input.IsMouseButtonDown(MouseButton.Left) ? new Ray3?(new Ray3(viewPosition, viewDirection)) : m_playerInput.Dig); m_playerInput.Hit = (input.IsMouseButtonDownOnce(MouseButton.Left) ? new Ray3?(new Ray3(viewPosition, viewDirection)) : m_playerInput.Hit); m_playerInput.Aim = (input.IsMouseButtonDown(MouseButton.Right) ? new Ray3?(new Ray3(viewPosition, viewDirection)) : m_playerInput.Aim); m_playerInput.Interact = (input.IsMouseButtonDownOnce(MouseButton.Right) ? new Ray3?(new Ray3(viewPosition, viewDirection)) : m_playerInput.Interact); m_playerInput.ToggleSneak |= input.IsKeyDownOnce(Key.Shift); m_playerInput.ToggleMount |= input.IsKeyDownOnce(Key.R); m_playerInput.ToggleCreativeFly |= input.IsKeyDownOnce(Key.F); m_playerInput.PickBlockType = (input.IsMouseButtonDownOnce(MouseButton.Middle) ? new Ray3?(new Ray3(viewPosition, viewDirection)) : m_playerInput.PickBlockType); } if (!DialogsManager.HasDialogs(m_componentPlayer.GuiWidget)) { m_playerInput.ToggleInventory |= input.IsKeyDownOnce(Key.E); m_playerInput.ToggleClothing |= input.IsKeyDownOnce(Key.C); m_playerInput.TakeScreenshot |= input.IsKeyDownOnce(Key.P); m_playerInput.SwitchCameraMode |= input.IsKeyDownOnce(Key.V); m_playerInput.TimeOfDay |= input.IsKeyDownOnce(Key.T); m_playerInput.Lighting |= input.IsKeyDownOnce(Key.L); m_playerInput.Drop |= input.IsKeyDownOnce(Key.Q); m_playerInput.EditItem |= input.IsKeyDownOnce(Key.G); m_playerInput.KeyboardHelp |= input.IsKeyDownOnce(Key.H); if (input.IsKeyDownOnce(Key.Number1)) { m_playerInput.SelectInventorySlot = 0; } if (input.IsKeyDownOnce(Key.Number2)) { m_playerInput.SelectInventorySlot = 1; } if (input.IsKeyDownOnce(Key.Number3)) { m_playerInput.SelectInventorySlot = 2; } if (input.IsKeyDownOnce(Key.Number4)) { m_playerInput.SelectInventorySlot = 3; } if (input.IsKeyDownOnce(Key.Number5)) { m_playerInput.SelectInventorySlot = 4; } if (input.IsKeyDownOnce(Key.Number6)) { m_playerInput.SelectInventorySlot = 5; } if (input.IsKeyDownOnce(Key.Number7)) { m_playerInput.SelectInventorySlot = 6; } if (input.IsKeyDownOnce(Key.Number8)) { m_playerInput.SelectInventorySlot = 7; } if (input.IsKeyDownOnce(Key.Number9)) { m_playerInput.SelectInventorySlot = 8; } if (input.IsKeyDownOnce(Key.Number0)) { m_playerInput.SelectInventorySlot = 9; } } }