From 342ea4f51872903a8a337028ab27975ec09bc24b Mon Sep 17 00:00:00 2001 From: biwa <6475593+biwa@users.noreply.github.com> Date: Sat, 23 May 2020 10:37:42 +0200 Subject: [PATCH] Trying to fix jittery camera when being really far away from the map origin (didn't fix it yet) --- Source/Core/Config/GameConfiguration.cs | 1 + Source/Core/VisualModes/VisualMode.cs | 6 ++--- .../VisualModes/BaseVisualMode.cs | 24 +++++++++---------- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/Source/Core/Config/GameConfiguration.cs b/Source/Core/Config/GameConfiguration.cs index b59c92db7..cb75477fe 100755 --- a/Source/Core/Config/GameConfiguration.cs +++ b/Source/Core/Config/GameConfiguration.cs @@ -1039,6 +1039,7 @@ namespace CodeImp.DoomBuilder.Config public string ReadSetting(string setting, string defaultsetting) { return cfg.ReadSetting(setting, defaultsetting); } public int ReadSetting(string setting, int defaultsetting) { return cfg.ReadSetting(setting, defaultsetting); } public float ReadSetting(string setting, float defaultsetting) { return cfg.ReadSetting(setting, defaultsetting); } + public double ReadSetting(string setting, double defaultsetting) { return cfg.ReadSetting(setting, defaultsetting); } public short ReadSetting(string setting, short defaultsetting) { return cfg.ReadSetting(setting, defaultsetting); } public long ReadSetting(string setting, long defaultsetting) { return cfg.ReadSetting(setting, defaultsetting); } public bool ReadSetting(string setting, bool defaultsetting) { return cfg.ReadSetting(setting, defaultsetting); } diff --git a/Source/Core/VisualModes/VisualMode.cs b/Source/Core/VisualModes/VisualMode.cs index f3057cfae..e587564b4 100755 --- a/Source/Core/VisualModes/VisualMode.cs +++ b/Source/Core/VisualModes/VisualMode.cs @@ -43,7 +43,7 @@ namespace CodeImp.DoomBuilder.VisualModes { #region ================== Constants - private const float MOVE_SPEED_MULTIPLIER = 0.001f; + private const double MOVE_SPEED_MULTIPLIER = 0.001; #endregion @@ -1164,10 +1164,10 @@ namespace CodeImp.DoomBuilder.VisualModes Vector3D camvecstrafe = Vector3D.FromAngleXY(General.Map.VisualCamera.AngleXY + Angle2D.PIHALF); Vector3D cammovemul = General.Map.VisualCamera.MoveMultiplier; Vector3D camdeltapos = new Vector3D(); - Vector3D upvec = new Vector3D(0.0f, 0.0f, 1.0f); + Vector3D upvec = new Vector3D(0.0, 0.0, 1.0); // Move the camera - float multiplier; + double multiplier; if(General.Interface.ShiftState) multiplier = MOVE_SPEED_MULTIPLIER * 2.0f; else multiplier = MOVE_SPEED_MULTIPLIER; if(keyforward) camdeltapos += camvec * cammovemul * General.Settings.MoveSpeed * multiplier * deltatime; if(keybackward) camdeltapos -= camvec * cammovemul * General.Settings.MoveSpeed * multiplier * deltatime; diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs index 820f03ce0..60702b08c 100755 --- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs +++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs @@ -62,8 +62,8 @@ namespace CodeImp.DoomBuilder.BuilderModes // Gravity private Vector3D gravity; - private float cameraflooroffset = 41f; // same as in doom - private float cameraceilingoffset = 10f; + private double cameraflooroffset = 41.0; // same as in doom + private double cameraceilingoffset = 10.0; // Object picking private VisualPickResult target; @@ -1316,8 +1316,8 @@ namespace CodeImp.DoomBuilder.BuilderModes base.ProcessThings = (BuilderPlug.Me.ShowVisualThings != 0); // Setup the move multiplier depending on gravity - Vector3D movemultiplier = new Vector3D(1.0f, 1.0f, 1.0f); - if(BuilderPlug.Me.UseGravity) movemultiplier.z = 0.0f; + Vector3D movemultiplier = new Vector3D(1.0, 1.0, 1.0); + if(BuilderPlug.Me.UseGravity) movemultiplier.z = 0.0; General.Map.VisualCamera.MoveMultiplier = movemultiplier; // Apply gravity? @@ -1330,10 +1330,10 @@ namespace CodeImp.DoomBuilder.BuilderModes Vector3D feetposition = General.Map.VisualCamera.Position; SectorLevel floorlevel = sd.GetFloorBelow(feetposition) ?? sd.Floor; double floorheight = floorlevel.plane.GetZ(General.Map.VisualCamera.Position); - if(General.Map.VisualCamera.Position.z < (floorheight + cameraflooroffset + 0.1f)) + if(General.Map.VisualCamera.Position.z < (floorheight + cameraflooroffset + 0.1)) { // Stay above floor - gravity = new Vector3D(0.0f, 0.0f, 0.0f); + gravity = new Vector3D(0.0, 0.0, 0.0); General.Map.VisualCamera.Position = new Vector3D(General.Map.VisualCamera.Position.x, General.Map.VisualCamera.Position.y, floorheight + cameraflooroffset); @@ -1342,13 +1342,13 @@ namespace CodeImp.DoomBuilder.BuilderModes { // Fall down gravity.z += GRAVITY * General.Map.VisualCamera.Gravity * deltatime; - if(gravity.z > 3.0f) gravity.z = 3.0f; + if(gravity.z > 3.0) gravity.z = 3.0; // Test if we don't go through a floor - if((General.Map.VisualCamera.Position.z + gravity.z) < (floorheight + cameraflooroffset + 0.1f)) + if((General.Map.VisualCamera.Position.z + gravity.z) < (floorheight + cameraflooroffset + 0.1)) { // Stay above floor - gravity = new Vector3D(0.0f, 0.0f, 0.0f); + gravity = new Vector3D(0.0, 0.0, 0.0); General.Map.VisualCamera.Position = new Vector3D(General.Map.VisualCamera.Position.x, General.Map.VisualCamera.Position.y, floorheight + cameraflooroffset); @@ -1361,10 +1361,10 @@ namespace CodeImp.DoomBuilder.BuilderModes } // Camera above ceiling? - feetposition = General.Map.VisualCamera.Position - new Vector3D(0, 0, cameraflooroffset - 7.0f); + feetposition = General.Map.VisualCamera.Position - new Vector3D(0, 0, cameraflooroffset - 7.0); SectorLevel ceillevel = sd.GetCeilingAbove(feetposition) ?? sd.Ceiling; double ceilheight = ceillevel.plane.GetZ(General.Map.VisualCamera.Position); - if(General.Map.VisualCamera.Position.z > (ceilheight - cameraceilingoffset - 0.01f)) + if(General.Map.VisualCamera.Position.z > (ceilheight - cameraceilingoffset - 0.01)) { // Stay below ceiling General.Map.VisualCamera.Position = new Vector3D(General.Map.VisualCamera.Position.x, @@ -1374,7 +1374,7 @@ namespace CodeImp.DoomBuilder.BuilderModes } else { - gravity = new Vector3D(0.0f, 0.0f, 0.0f); + gravity = new Vector3D(0.0, 0.0, 0.0); } // Do processing -- GitLab