private void DoOrbitcamUpdate(float deltaTime) { float orbitSensitivityScale = 0.02f; // Angle Axis expects rads, but we have... pixels, so we just move it way down by a factor. Quaternion deltaRot = Quaternion.FromAxisAngle(new Vector3(1, 0, 0), -WInput.MouseDelta.Y * MouseSensitivity * deltaTime * orbitSensitivityScale) * Quaternion.FromAxisAngle(new Vector3(0, 1, 0), -WInput.MouseDelta.X * MouseSensitivity * deltaTime * orbitSensitivityScale); Transform.Rotation *= deltaRot; Vector3 moveDir = Vector3.Zero; if (WInput.GetKey(System.Windows.Input.Key.Q)) { moveDir -= Vector3.UnitY; } if (WInput.GetKey(System.Windows.Input.Key.E)) { moveDir += Vector3.UnitY; } if (moveDir.Length > 0) { moveDir.Normalize(); m_orbitPivot += moveDir * (MoveSpeed / 2) * deltaTime; } m_orbitCameraDistance += -WInput.MouseScrollDelta * 50 * deltaTime; m_orbitCameraDistance = WMath.Clamp(m_orbitCameraDistance, 100, 10000); Transform.Position = m_orbitPivot + Vector3.Transform(new Vector3(0, 0, m_orbitCameraDistance), Transform.Rotation); }
private void DoFlycamUpdate(float deltaTime) { Vector3 moveDir = Vector3.Zero; if (WInput.GetKey(System.Windows.Input.Key.W)) { moveDir -= Vector3.UnitZ; } if (WInput.GetKey(System.Windows.Input.Key.S)) { moveDir += Vector3.UnitZ; } if (WInput.GetKey(System.Windows.Input.Key.D)) { moveDir += Vector3.UnitX; } if (WInput.GetKey(System.Windows.Input.Key.A)) { moveDir -= Vector3.UnitX; } // If they're holding down the shift key adjust their FOV when they scroll, otherwise adjust move speed. MoveSpeed += WInput.MouseScrollDelta * 100 * deltaTime; MoveSpeed = WMath.Clamp(MoveSpeed, 100, 8000); if (WInput.GetMouseButton(1)) { Rotate(deltaTime, WInput.MouseDelta.X, WInput.MouseDelta.Y); } float moveSpeed = WInput.GetKey(System.Windows.Input.Key.LeftShift) ? MoveSpeed * 3f : MoveSpeed; // Make it relative to the current rotation. moveDir = Vector3.Transform(moveDir, Transform.Rotation); // Do Q and E after we transform the moveDir so they're always in worldspace. if (WInput.GetKey(System.Windows.Input.Key.Q)) { moveDir -= Vector3.UnitY; } if (WInput.GetKey(System.Windows.Input.Key.E)) { moveDir += Vector3.UnitY; } // Normalize the move direction moveDir.NormalizeFast(); // Early out if we're not moving this frame. if (moveDir.LengthFast < 0.1f) { return; } Transform.Position += Vector3.Multiply(moveDir, moveSpeed * deltaTime); }
public LightingPalette Lerp(float t, bool presetA = true) { LightingPalette[] palette = presetA ? TimePresetA : TimePresetB; // Generate a new LightingPalette which is the interpolated values of things. t = WMath.Clamp(t, 0, 1); float scaledT = t * (palette.Length - 1); int lowerIndex = (int)scaledT; int upperIndex = (int)(scaledT + 1f); float newT = scaledT - (int)scaledT; //Console.WriteLine("t: {0} scaledT: {1} lIndex: {2} uIndex: {3} newT: {4}", t, scaledT, lowerIndex, upperIndex, newT); if (upperIndex == palette.Length) { upperIndex = lowerIndex; } LightingPalette interpPalette = new LightingPalette(); interpPalette.Shadow = WLinearColor.Lerp(palette[lowerIndex].Shadow, palette[upperIndex].Shadow, newT); interpPalette.ActorAmbient = WLinearColor.Lerp(palette[lowerIndex].ActorAmbient, palette[upperIndex].ActorAmbient, newT); interpPalette.RoomLight = WLinearColor.Lerp(palette[lowerIndex].RoomLight, palette[upperIndex].RoomLight, newT); interpPalette.RoomAmbient = WLinearColor.Lerp(palette[lowerIndex].RoomAmbient, palette[upperIndex].RoomAmbient, newT); interpPalette.WaveColor = WLinearColor.Lerp(palette[lowerIndex].WaveColor, palette[upperIndex].WaveColor, newT); interpPalette.OceanColor = WLinearColor.Lerp(palette[lowerIndex].OceanColor, palette[upperIndex].OceanColor, newT); interpPalette.UnknownWhite1 = WLinearColor.Lerp(palette[lowerIndex].UnknownWhite1, palette[upperIndex].UnknownWhite1, newT); interpPalette.UnknownWhite2 = WLinearColor.Lerp(palette[lowerIndex].UnknownWhite2, palette[upperIndex].UnknownWhite2, newT); interpPalette.Doorway = WLinearColor.Lerp(palette[lowerIndex].Doorway, palette[upperIndex].Doorway, newT); interpPalette.UnknownColor3 = WLinearColor.Lerp(palette[lowerIndex].UnknownColor3, palette[upperIndex].UnknownColor3, newT); interpPalette.Skybox = LightingSkyboxColors.Lerp(palette[lowerIndex].Skybox, palette[upperIndex].Skybox, newT); interpPalette.Fog = WLinearColor.Lerp(palette[lowerIndex].Fog, palette[upperIndex].Fog, newT); interpPalette.FogNearPlane = WMath.Lerp(palette[lowerIndex].FogNearPlane, palette[upperIndex].FogNearPlane, newT); interpPalette.FogFarPlane = WMath.Lerp(palette[lowerIndex].FogFarPlane, palette[upperIndex].FogFarPlane, newT); return(interpPalette); }
public void DecrementSize() { m_gizmoSize = WMath.Clamp(m_gizmoSize - 0.05f, 0.05f, float.MaxValue); }
public static WLinearColor Lerp(WLinearColor a, WLinearColor b, float t) { t = WMath.Clamp(t, 0, 1); return(new WLinearColor((1 - t) * a.R + t * b.R, (1 - t) * a.G + t * b.G, (1 - t) * a.B + t * b.B, (1 - t) * a.A + t * b.A)); }
public EnvironmentLightingPalette Lerp(float t, bool presetA = true) { // Generate a new LightingPalette which is the interpolated values of things. t = WMath.Clamp(t, 0, 1); float scaledT = t * (6 - 1); int lowerIndex = (int)scaledT; int upperIndex = (int)(scaledT + 1f); float newT = scaledT - (int)scaledT; EnvironmentLightingPalette palette_a = null; EnvironmentLightingPalette palette_b = null; if (upperIndex == 6) { upperIndex = lowerIndex; } switch ((TimeOfDay)lowerIndex) { case TimeOfDay.Dawn: palette_a = Dawn; break; case TimeOfDay.Morning: palette_a = Morning; break; case TimeOfDay.Noon: palette_a = Noon; break; case TimeOfDay.Afternoon: palette_a = Afternoon; break; case TimeOfDay.Dusk: palette_a = Dusk; break; case TimeOfDay.Night: palette_a = Night; break; } switch ((TimeOfDay)upperIndex) { case TimeOfDay.Dawn: palette_b = Dawn; break; case TimeOfDay.Morning: palette_b = Morning; break; case TimeOfDay.Noon: palette_b = Noon; break; case TimeOfDay.Afternoon: palette_b = Afternoon; break; case TimeOfDay.Dusk: palette_b = Dusk; break; case TimeOfDay.Night: palette_b = Night; break; } //Console.WriteLine("t: {0} scaledT: {1} lIndex: {2} uIndex: {3} newT: {4}", t, scaledT, lowerIndex, upperIndex, newT); EnvironmentLightingPalette interpPalette = new EnvironmentLightingPalette(); interpPalette.ShadowColor = WLinearColor.Lerp(palette_a.ShadowColor, palette_b.ShadowColor, newT); interpPalette.ActorAmbientColor = WLinearColor.Lerp(palette_a.ActorAmbientColor, palette_b.ActorAmbientColor, newT); interpPalette.RoomLightColor = WLinearColor.Lerp(palette_a.RoomLightColor, palette_b.RoomLightColor, newT); interpPalette.RoomAmbientColor = WLinearColor.Lerp(palette_a.RoomAmbientColor, palette_b.RoomAmbientColor, newT); interpPalette.WaveColor = WLinearColor.Lerp(palette_a.WaveColor, palette_b.WaveColor, newT); interpPalette.OceanColor = WLinearColor.Lerp(palette_a.OceanColor, palette_b.OceanColor, newT); interpPalette.UnknownWhite1 = WLinearColor.Lerp(palette_a.UnknownWhite1, palette_b.UnknownWhite1, newT); interpPalette.UnknownWhite2 = WLinearColor.Lerp(palette_a.UnknownWhite2, palette_b.UnknownWhite2, newT); interpPalette.DoorBackfill = WLinearColor.Lerp(palette_a.DoorBackfill, palette_b.DoorBackfill, newT); interpPalette.Unknown3 = WLinearColor.Lerp(palette_a.Unknown3, palette_b.Unknown3, newT); interpPalette.SkyboxPalette = EnvironmentLightingSkyboxPalette.Lerp(palette_a.SkyboxPalette, palette_b.SkyboxPalette, newT); interpPalette.FogColor = WLinearColor.Lerp(palette_a.FogColor, palette_b.FogColor, newT); interpPalette.FogNearPlane = WMath.Lerp(palette_a.FogNearPlane, palette_b.FogNearPlane, newT); interpPalette.FogFarPlane = WMath.Lerp(palette_a.FogFarPlane, palette_b.FogFarPlane, newT); return(interpPalette); }