diff --git a/Source/Core/Controls/ButtonsNumericTextbox.cs b/Source/Core/Controls/ButtonsNumericTextbox.cs index 0e0d9119..136750df 100755 --- a/Source/Core/Controls/ButtonsNumericTextbox.cs +++ b/Source/Core/Controls/ButtonsNumericTextbox.cs @@ -133,13 +133,13 @@ namespace CodeImp.DoomBuilder.Controls } else if(textbox.AllowDecimal) { - float stepsizemod; //mxd + double stepsizemod; //mxd if(usemodifierkeys) stepsizemod = (ctrl ? stepsizeSmall : (shift ? stepsizeBig : stepsizeFloat)); else stepsizemod = stepsizeFloat; - float newvalue = (float)Math.Round(textbox.GetResultFloat(0.0f) - (buttons.Value * stepsizemod), General.Map.FormatInterface.VertexDecimals); + double newvalue = Math.Round(textbox.GetResultFloat(0.0f) - (buttons.Value * stepsizemod), General.Map.FormatInterface.VertexDecimals); if((newvalue < 0.0f) && !textbox.AllowNegative) newvalue = 0.0f; textbox.Text = newvalue.ToString(); } diff --git a/Source/Core/Controls/LinedefInfoPanel.cs b/Source/Core/Controls/LinedefInfoPanel.cs index df4aa4c4..4b9cddc2 100755 --- a/Source/Core/Controls/LinedefInfoPanel.cs +++ b/Source/Core/Controls/LinedefInfoPanel.cs @@ -317,16 +317,16 @@ namespace CodeImp.DoomBuilder.Controls frontpanel.Text += ". Offset " + l.Front.OffsetX + ", " + l.Front.OffsetY + ". Sector " + l.Front.Sector.Index + " "; //sidedef top - hasTopFields = SetPairedUDMFFieldsLabel(l.Front.Fields, "offsetx_top", "offsety_top", 0.0f, frontTopUDMFOffsetLabel, frontTopUDMFOffset, highlight); - hasTopFields |= SetPairedUDMFFieldsLabel(l.Front.Fields, "scalex_top", "scaley_top", 1.0f, frontTopUDMFScaleLabel, frontTopUDMFScale, highlight); + hasTopFields = SetPairedUDMFFieldsLabel(l.Front.Fields, "offsetx_top", "offsety_top", 0.0, frontTopUDMFOffsetLabel, frontTopUDMFOffset, highlight); + hasTopFields |= SetPairedUDMFFieldsLabel(l.Front.Fields, "scalex_top", "scaley_top", 1.0, frontTopUDMFScaleLabel, frontTopUDMFScale, highlight); //sidedef middle - hasMiddleFields = SetPairedUDMFFieldsLabel(l.Front.Fields, "offsetx_mid", "offsety_mid", 0.0f, frontMidUDMFOffsetLabel, frontMidUDMFOffset, highlight); - hasMiddleFields |= SetPairedUDMFFieldsLabel(l.Front.Fields, "scalex_mid", "scaley_mid", 1.0f, frontMidUDMFScaleLabel, frontMidUDMFScale, highlight); + hasMiddleFields = SetPairedUDMFFieldsLabel(l.Front.Fields, "offsetx_mid", "offsety_mid", 0.0, frontMidUDMFOffsetLabel, frontMidUDMFOffset, highlight); + hasMiddleFields |= SetPairedUDMFFieldsLabel(l.Front.Fields, "scalex_mid", "scaley_mid", 1.0, frontMidUDMFScaleLabel, frontMidUDMFScale, highlight); //sidedef bottom - hasBottomFields = SetPairedUDMFFieldsLabel(l.Front.Fields, "offsetx_bottom", "offsety_bottom", 0.0f, frontBottomUDMFOffsetLabel, frontBottomUDMFOffset, highlight); - hasBottomFields |= SetPairedUDMFFieldsLabel(l.Front.Fields, "scalex_bottom", "scaley_bottom", 1.0f, frontBottomUDMFScaleLabel, frontBottomUDMFScale, highlight); + hasBottomFields = SetPairedUDMFFieldsLabel(l.Front.Fields, "offsetx_bottom", "offsety_bottom", 0.0, frontBottomUDMFOffsetLabel, frontBottomUDMFOffset, highlight); + hasBottomFields |= SetPairedUDMFFieldsLabel(l.Front.Fields, "scalex_bottom", "scaley_bottom", 1.0, frontBottomUDMFScaleLabel, frontBottomUDMFScale, highlight); //visibility frontTopUDMFOffset.Visible = hasTopFields; @@ -618,7 +618,7 @@ namespace CodeImp.DoomBuilder.Controls } //mxd - private static bool SetPairedUDMFFieldsLabel(UniFields fields, string paramX, string paramY, float defaultvalue, Label namelabel, Label valuelabel, bool highlight) + private static bool SetPairedUDMFFieldsLabel(UniFields fields, string paramX, string paramY, double defaultvalue, Label namelabel, Label valuelabel, bool highlight) { double x = UniFields.GetFloat(fields, paramX, defaultvalue); double y = UniFields.GetFloat(fields, paramY, defaultvalue); diff --git a/Source/Core/Controls/PairedFieldsControl.cs b/Source/Core/Controls/PairedFieldsControl.cs index be798731..723bdb53 100755 --- a/Source/Core/Controls/PairedFieldsControl.cs +++ b/Source/Core/Controls/PairedFieldsControl.cs @@ -69,13 +69,13 @@ namespace CodeImp.DoomBuilder.Controls if(AllowDecimal) { - newValue1 = ((float)Math.Round(UniFields.GetFloat(fields, field1, defaultValue), 2)).ToString(); - newValue2 = ((float)Math.Round(UniFields.GetFloat(fields, field2, defaultValue), 2)).ToString(); + newValue1 = Math.Round(UniFields.GetFloat(fields, field1, defaultValue), 2).ToString(); + newValue2 = Math.Round(UniFields.GetFloat(fields, field2, defaultValue), 2).ToString(); } else { - newValue1 = ((float)Math.Round(UniFields.GetFloat(fields, field1, defaultValue))).ToString(); - newValue2 = ((float)Math.Round(UniFields.GetFloat(fields, field2, defaultValue))).ToString(); + newValue1 = Math.Round(UniFields.GetFloat(fields, field1, defaultValue)).ToString(); + newValue2 = Math.Round(UniFields.GetFloat(fields, field2, defaultValue)).ToString(); } if(first) diff --git a/Source/Core/Controls/SectorInfoPanel.cs b/Source/Core/Controls/SectorInfoPanel.cs index 217254a6..588fa063 100755 --- a/Source/Core/Controls/SectorInfoPanel.cs +++ b/Source/Core/Controls/SectorInfoPanel.cs @@ -197,8 +197,8 @@ namespace CodeImp.DoomBuilder.Controls } //ceiling offsets - float panX = s.Fields.GetValue("xpanningceiling", 0f); - float panY = s.Fields.GetValue("ypanningceiling", 0f); + double panX = s.Fields.GetValue("xpanningceiling", 0.0); + double panY = s.Fields.GetValue("ypanningceiling", 0.0); if(panX != 0 || panY != 0) { @@ -215,8 +215,8 @@ namespace CodeImp.DoomBuilder.Controls } //floor offsets - panX = s.Fields.GetValue("xpanningfloor", 0f); - panY = s.Fields.GetValue("ypanningfloor", 0f); + panX = s.Fields.GetValue("xpanningfloor", 0.0); + panY = s.Fields.GetValue("ypanningfloor", 0.0); if(panX != 0 || panY != 0) { @@ -233,8 +233,8 @@ namespace CodeImp.DoomBuilder.Controls } //ceiling scale - float scaleX = s.Fields.GetValue("xscaleceiling", 1.0f); - float scaleY = s.Fields.GetValue("yscaleceiling", 1.0f); + double scaleX = s.Fields.GetValue("xscaleceiling", 1.0); + double scaleY = s.Fields.GetValue("yscaleceiling", 1.0); if(scaleX != 1.0f || scaleY != 1.0f) { @@ -251,10 +251,10 @@ namespace CodeImp.DoomBuilder.Controls } //floor scale - scaleX = s.Fields.GetValue("xscalefloor", 1.0f); - scaleY = s.Fields.GetValue("yscalefloor", 1.0f); + scaleX = s.Fields.GetValue("xscalefloor", 1.0); + scaleY = s.Fields.GetValue("yscalefloor", 1.0); - if(scaleX != 1.0f || scaleY != 1.0f) + if(scaleX != 1.0 || scaleY != 1.0) { showExtededFloorInfo = true; floorScale.Enabled = true; @@ -269,8 +269,8 @@ namespace CodeImp.DoomBuilder.Controls } //rotation - float ceilangle = s.Fields.GetValue("rotationceiling", 0f); - if(ceilangle != 0f) + double ceilangle = s.Fields.GetValue("rotationceiling", 0.0); + if(ceilangle != 0.0) { showExtededCeilingInfo = true; ceilingAngle.Enabled = true; @@ -284,7 +284,7 @@ namespace CodeImp.DoomBuilder.Controls ceilingAngleLabel.Enabled = false; } - float floorangle = s.Fields.GetValue("rotationfloor", 0f); + double floorangle = s.Fields.GetValue("rotationfloor", 0.0); if(floorangle != 0f) { showExtededFloorInfo = true; diff --git a/Source/Core/Controls/ThingInfoPanel.cs b/Source/Core/Controls/ThingInfoPanel.cs index 57b46eb6..4ab27d6a 100755 --- a/Source/Core/Controls/ThingInfoPanel.cs +++ b/Source/Core/Controls/ThingInfoPanel.cs @@ -94,9 +94,9 @@ namespace CodeImp.DoomBuilder.Controls { // Hangs from ceiling? if(ti.Hangs) - zinfo = t.Position.z + " (" + ((float)Math.Round(Sector.GetCeilingPlane(t.Sector).GetZ(t.Position) - t.Position.z - ti.Height, General.Map.FormatInterface.VertexDecimals)).ToString(CultureInfo.InvariantCulture) + ")"; //mxd + zinfo = t.Position.z + " (" + Math.Round(Sector.GetCeilingPlane(t.Sector).GetZ(t.Position) - t.Position.z - ti.Height, General.Map.FormatInterface.VertexDecimals).ToString(CultureInfo.InvariantCulture) + ")"; //mxd else - zinfo = t.Position.z + " (" + ((float)Math.Round(Sector.GetFloorPlane(t.Sector).GetZ(t.Position) + t.Position.z, General.Map.FormatInterface.VertexDecimals)).ToString(CultureInfo.InvariantCulture) + ")"; //mxd + zinfo = t.Position.z + " (" + Math.Round(Sector.GetFloorPlane(t.Sector).GetZ(t.Position) + t.Position.z, General.Map.FormatInterface.VertexDecimals).ToString(CultureInfo.InvariantCulture) + ")"; //mxd } // Thing info diff --git a/Source/Core/GZBuilder/Data/GlowingFlatData.cs b/Source/Core/GZBuilder/Data/GlowingFlatData.cs index 79a16505..ff588f17 100755 --- a/Source/Core/GZBuilder/Data/GlowingFlatData.cs +++ b/Source/Core/GZBuilder/Data/GlowingFlatData.cs @@ -5,7 +5,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.Data public class GlowingFlatData { public PixelColor Color; - public float Height; + public double Height; public int Brightness = 255; public bool Fullbright; public bool CalculateTextureColor; diff --git a/Source/Core/General/General.cs b/Source/Core/General/General.cs index 4e137b41..8f2dd5cb 100755 --- a/Source/Core/General/General.cs +++ b/Source/Core/General/General.cs @@ -1774,7 +1774,12 @@ namespace CodeImp.DoomBuilder { return (float)Math.Round(min + (max - min) * random.NextDouble(), 2); } - + + public static double Random(double min, double max) + { + return Math.Round(min + (max - min) * random.NextDouble(), 2); + } + // This returns an element from a collection by index public static T GetByIndex(ICollection collection, int index) { diff --git a/Source/Core/Geometry/Tools.cs b/Source/Core/Geometry/Tools.cs index ffcaa00d..4d38d46a 100755 --- a/Source/Core/Geometry/Tools.cs +++ b/Source/Core/Geometry/Tools.cs @@ -899,7 +899,7 @@ namespace CodeImp.DoomBuilder.Geometry } // No cceptable line found, just use the first! - positions.Add(new LabelPositionInfo(foundposition, (float)Math.Sqrt(founddistance))); + positions.Add(new LabelPositionInfo(foundposition, Math.Sqrt(founddistance))); } else { @@ -914,7 +914,7 @@ namespace CodeImp.DoomBuilder.Geometry double d = Line2D.GetDistanceToLineSq(triangles.Vertices[islandoffset], triangles.Vertices[islandoffset + 1], v, false); d = Math.Min(d, Line2D.GetDistanceToLineSq(triangles.Vertices[islandoffset + 1], triangles.Vertices[islandoffset + 2], v, false)); d = Math.Min(d, Line2D.GetDistanceToLineSq(triangles.Vertices[islandoffset + 2], triangles.Vertices[islandoffset], v, false)); - positions.Add(new LabelPositionInfo(v, (float)Math.Sqrt(d))); + positions.Add(new LabelPositionInfo(v, Math.Sqrt(d))); } else { @@ -2196,9 +2196,9 @@ namespace CodeImp.DoomBuilder.Geometry //add a small offset so we don't end up moving thing into void if(front) - t.Move(new Vector2D(pos.x - (float)Math.Cos(l.Angle), pos.y - (float)Math.Sin(l.Angle))); + t.Move(new Vector2D(pos.x - Math.Cos(l.Angle), pos.y - Math.Sin(l.Angle))); else - t.Move(new Vector2D(pos.x + (float)Math.Cos(l.Angle), pos.y + (float)Math.Sin(l.Angle))); + t.Move(new Vector2D(pos.x + Math.Cos(l.Angle), pos.y + Math.Sin(l.Angle))); //apply new settings t.SnapToAccuracy(); diff --git a/Source/Core/IO/ClipboardStreamReader.cs b/Source/Core/IO/ClipboardStreamReader.cs index d6173df2..ce4106d8 100755 --- a/Source/Core/IO/ClipboardStreamReader.cs +++ b/Source/Core/IO/ClipboardStreamReader.cs @@ -93,10 +93,10 @@ namespace CodeImp.DoomBuilder.IO map.SetCapacity(map.Vertices.Count + count, 0, 0, 0, 0); for(int i = 0; i < count; i++) { - float x = reader.ReadSingle(); - float y = reader.ReadSingle(); - float zc = reader.ReadSingle(); - float zf = reader.ReadSingle(); + double x = reader.ReadDouble(); + double y = reader.ReadDouble(); + double zc = reader.ReadDouble(); + double zf = reader.ReadDouble(); // Create new item Dictionary fields = ReadCustomFields(reader); @@ -149,10 +149,10 @@ namespace CodeImp.DoomBuilder.IO string tceil = ReadString(reader); //mxd. Slopes - float foffset = reader.ReadSingle(); - Vector3D fslope = new Vector3D(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle()); - float coffset = reader.ReadSingle(); - Vector3D cslope = new Vector3D(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle()); + double foffset = reader.ReadDouble(); + Vector3D fslope = new Vector3D(reader.ReadDouble(), reader.ReadDouble(), reader.ReadDouble()); + double coffset = reader.ReadDouble(); + Vector3D cslope = new Vector3D(reader.ReadDouble(), reader.ReadDouble(), reader.ReadDouble()); //flags Dictionary stringflags = new Dictionary(StringComparer.Ordinal); @@ -352,14 +352,14 @@ namespace CodeImp.DoomBuilder.IO { int[] args = new int[Linedef.NUM_ARGS]; int tag = reader.ReadInt32(); - float x = reader.ReadSingle(); - float y = reader.ReadSingle(); - float height = reader.ReadSingle(); + double x = reader.ReadDouble(); + double y = reader.ReadDouble(); + double height = reader.ReadDouble(); int angledeg = reader.ReadInt32(); int pitch = reader.ReadInt32(); //mxd int roll = reader.ReadInt32(); //mxd - float scaleX = reader.ReadSingle(); //mxd - float scaleY = reader.ReadSingle(); //mxd + double scaleX = reader.ReadDouble(); //mxd + double scaleY = reader.ReadDouble(); //mxd int type = reader.ReadInt32(); int special = reader.ReadInt32(); for(int a = 0; a < Linedef.NUM_ARGS; a++) args[a] = reader.ReadInt32(); @@ -407,7 +407,7 @@ namespace CodeImp.DoomBuilder.IO switch(valueType) { case UniversalType.Float: - fields.Add(name, new UniValue(type, reader.ReadSingle())); + fields.Add(name, new UniValue(type, reader.ReadDouble())); break; case UniversalType.Boolean: diff --git a/Source/Core/IO/ClipboardStreamWriter.cs b/Source/Core/IO/ClipboardStreamWriter.cs index c3b728ed..93c4b065 100755 --- a/Source/Core/IO/ClipboardStreamWriter.cs +++ b/Source/Core/IO/ClipboardStreamWriter.cs @@ -284,7 +284,12 @@ namespace CodeImp.DoomBuilder.IO { writer.Write((int)UniversalType.Float); writer.Write((float)f.Value.Value); - } + } + else if(f.Value.Value is double) + { + writer.Write((int)UniversalType.Float); + writer.Write((double)f.Value.Value); + } else if(f.Value.Value.GetType().IsPrimitive) { writer.Write((int)UniversalType.Integer); diff --git a/Source/Core/IO/DeserializerStream.cs b/Source/Core/IO/DeserializerStream.cs index 8a661a15..bca3f926 100755 --- a/Source/Core/IO/DeserializerStream.cs +++ b/Source/Core/IO/DeserializerStream.cs @@ -130,15 +130,15 @@ namespace CodeImp.DoomBuilder.IO public void rwVector2D(ref Vector2D v) { - v.x = reader.ReadSingle(); - v.y = reader.ReadSingle(); + v.x = reader.ReadDouble(); + v.y = reader.ReadDouble(); } public void rwVector3D(ref Vector3D v) { - v.x = reader.ReadSingle(); - v.y = reader.ReadSingle(); - v.z = reader.ReadSingle(); + v.x = reader.ReadDouble(); + v.y = reader.ReadDouble(); + v.z = reader.ReadDouble(); } // Write-only is not supported @@ -204,16 +204,16 @@ namespace CodeImp.DoomBuilder.IO public void rVector2D(out Vector2D v) { v = new Vector2D(); - v.x = reader.ReadSingle(); - v.y = reader.ReadSingle(); + v.x = reader.ReadDouble(); + v.y = reader.ReadDouble(); } public void rVector3D(out Vector3D v) { v = new Vector3D(); - v.x = reader.ReadSingle(); - v.y = reader.ReadSingle(); - v.z = reader.ReadSingle(); + v.x = reader.ReadDouble(); + v.y = reader.ReadDouble(); + v.z = reader.ReadDouble(); } #endregion diff --git a/Source/Core/IO/UniversalParser.cs b/Source/Core/IO/UniversalParser.cs index 194d884c..c2cbd5fc 100755 --- a/Source/Core/IO/UniversalParser.cs +++ b/Source/Core/IO/UniversalParser.cs @@ -427,10 +427,10 @@ namespace CodeImp.DoomBuilder.IO //mxd. Can be in scientific notation (like "1E-06") else if(s.IndexOf('.') > -1 || s.ToLowerInvariant().Contains("e-")) { - float fval = 0; + double fval = 0; // Convert to float (remove the f first) - try { fval = Convert.ToSingle(s.Trim(), CultureInfo.InvariantCulture); } + try { fval = Convert.ToDouble(s.Trim(), CultureInfo.InvariantCulture); } catch(FormatException) { // ERROR: Invalid value in assignment @@ -724,7 +724,7 @@ namespace CodeImp.DoomBuilder.IO // Output the value as double (7 decimals) double d = (double)cs[i].Value; db.Append(leveltabs); db.Append(cs[i].Key); db.Append(spacing); db.Append("="); - db.Append(spacing); db.Append(d.ToString("0.0000000", CultureInfo.InvariantCulture)); db.Append(";"); db.Append(newline); + db.Append(spacing); db.Append(d.ToString("0.0##############", CultureInfo.InvariantCulture)); /* db.Append(d.ToString("0.0000000", CultureInfo.InvariantCulture)); */ db.Append(";"); db.Append(newline); } // Check if value is of other numeric type else if(cs[i].Value.GetType().IsPrimitive) diff --git a/Source/Core/IO/UniversalStreamReader.cs b/Source/Core/IO/UniversalStreamReader.cs index 8177f9fb..558df684 100755 --- a/Source/Core/IO/UniversalStreamReader.cs +++ b/Source/Core/IO/UniversalStreamReader.cs @@ -173,16 +173,16 @@ namespace CodeImp.DoomBuilder.IO UniversalCollection c = collections[i]; int[] args = new int[Linedef.NUM_ARGS]; string where = "thing " + i; - float x = GetCollectionEntry(c, "x", true, 0.0f, where); - float y = GetCollectionEntry(c, "y", true, 0.0f, where); - float height = GetCollectionEntry(c, "height", false, 0.0f, where); + double x = GetCollectionEntry(c, "x", true, 0.0, where); + double y = GetCollectionEntry(c, "y", true, 0.0, where); + double height = GetCollectionEntry(c, "height", false, 0.0, where); int tag = GetCollectionEntry(c, "id", false, 0, where); int angledeg = GetCollectionEntry(c, "angle", false, 0, where); int pitch = GetCollectionEntry(c, "pitch", false, 0, where); //mxd int roll = GetCollectionEntry(c, "roll", false, 0, where); //mxd - float scaleX = GetCollectionEntry(c, "scalex", false, 1.0f, where); //mxd - float scaleY = GetCollectionEntry(c, "scaley", false, 1.0f, where); //mxd - float scale = GetCollectionEntry(c, "scale", false, 0f, where); //mxd + double scaleX = GetCollectionEntry(c, "scalex", false, 1.0, where); //mxd + double scaleY = GetCollectionEntry(c, "scaley", false, 1.0, where); //mxd + double scale = GetCollectionEntry(c, "scale", false, 0.0, where); //mxd int type = GetCollectionEntry(c, "type", true, 0, where); int special = GetCollectionEntry(c, "special", false, 0, where); args[0] = GetCollectionEntry(c, "arg0", false, 0, where); @@ -403,15 +403,15 @@ namespace CodeImp.DoomBuilder.IO if(tag == 0 && tags.Count > 1) tags.RemoveAt(0); //mxd. Read slopes - float fslopex = GetCollectionEntry(c, "floorplane_a", false, 0.0f, where); - float fslopey = GetCollectionEntry(c, "floorplane_b", false, 0.0f, where); - float fslopez = GetCollectionEntry(c, "floorplane_c", false, 0.0f, where); - float foffset = GetCollectionEntry(c, "floorplane_d", false, float.NaN, where); + double fslopex = GetCollectionEntry(c, "floorplane_a", false, 0.0, where); + double fslopey = GetCollectionEntry(c, "floorplane_b", false, 0.0, where); + double fslopez = GetCollectionEntry(c, "floorplane_c", false, 0.0, where); + double foffset = GetCollectionEntry(c, "floorplane_d", false, double.NaN, where); - float cslopex = GetCollectionEntry(c, "ceilingplane_a", false, 0.0f, where); - float cslopey = GetCollectionEntry(c, "ceilingplane_b", false, 0.0f, where); - float cslopez = GetCollectionEntry(c, "ceilingplane_c", false, 0.0f, where); - float coffset = GetCollectionEntry(c, "ceilingplane_d", false, float.NaN, where); + double cslopex = GetCollectionEntry(c, "ceilingplane_a", false, 0.0, where); + double cslopey = GetCollectionEntry(c, "ceilingplane_b", false, 0.0, where); + double cslopez = GetCollectionEntry(c, "ceilingplane_c", false, 0.0, where); + double coffset = GetCollectionEntry(c, "ceilingplane_d", false, double.NaN, where); //mxd. Read flags Dictionary stringflags = new Dictionary(StringComparer.Ordinal); @@ -456,14 +456,14 @@ namespace CodeImp.DoomBuilder.IO // Read fields UniversalCollection c = collections[i]; string where = "vertex " + i; - float x = GetCollectionEntry(c, "x", true, 0.0f, where); - float y = GetCollectionEntry(c, "y", true, 0.0f, where); + double x = GetCollectionEntry(c, "x", true, 0.0, where); + double y = GetCollectionEntry(c, "y", true, 0.0, where); // [ZZ] Correct location if it's NaN. Note that there cannot be any meaningful value here, so I just reset it to 0,0 to avoid triggering the NaN exception // TODO: remove once the cause of NaN is reported - if (float.IsNaN(x) || float.IsNaN(y)) + if (double.IsNaN(x) || double.IsNaN(y)) { - x = y = 0f; + x = y = 0.0; General.ErrorLogger.Add(ErrorType.Warning, string.Format("Vertex {0} has NaN coordinates, resetting to 0,0", i)); } @@ -472,8 +472,8 @@ namespace CodeImp.DoomBuilder.IO if(v != null) { //mxd. zoffsets - v.ZCeiling = GetCollectionEntry(c, "zceiling", false, float.NaN, where); //mxd - v.ZFloor = GetCollectionEntry(c, "zfloor", false, float.NaN, where); //mxd + v.ZCeiling = GetCollectionEntry(c, "zceiling", false, double.NaN, where); //mxd + v.ZFloor = GetCollectionEntry(c, "zfloor", false, double.NaN, where); //mxd // Custom fields ReadCustomFields(c, v, "vertex"); @@ -506,7 +506,7 @@ namespace CodeImp.DoomBuilder.IO // Let's be kind and cast any int to a float if needed if(type == (int)UniversalType.Float && e.Value is int) { - value = (float)(int)e.Value; + value = (double)(int)e.Value; } else if(!e.IsValidType(e.Value.GetType())) { @@ -550,7 +550,7 @@ namespace CodeImp.DoomBuilder.IO // Determine default type if(e.Value is int) type = (int)UniversalType.Integer; - else if(e.Value is float) type = (int)UniversalType.Float; + else if(e.Value is double) type = (int)UniversalType.Float; else if(e.Value is bool) type = (int)UniversalType.Boolean; else if(e.Value is string) type = (int)UniversalType.String; @@ -573,10 +573,10 @@ namespace CodeImp.DoomBuilder.IO if(e.Key == entryname) { // Let's be kind and cast any int to a float if needed - if((typeof(T) == typeof(float)) && (e.Value is int)) + if((typeof(T) == typeof(double)) && (e.Value is int)) { // Make it a float - object fvalue = (float)(int)e.Value; + object fvalue = (double)(int)e.Value; result = (T)fvalue; } else diff --git a/Source/Core/IO/UniversalStreamWriter.cs b/Source/Core/IO/UniversalStreamWriter.cs index 693b6358..19e99599 100755 --- a/Source/Core/IO/UniversalStreamWriter.cs +++ b/Source/Core/IO/UniversalStreamWriter.cs @@ -298,14 +298,20 @@ namespace CodeImp.DoomBuilder.IO //mxd. Slopes if(s.FloorSlope.GetLengthSq() > 0) { + /* coll.Add("floorplane_a", Math.Round(s.FloorSlope.x, Sector.SLOPE_DECIMALS)); coll.Add("floorplane_b", Math.Round(s.FloorSlope.y, Sector.SLOPE_DECIMALS)); coll.Add("floorplane_c", Math.Round(s.FloorSlope.z, Sector.SLOPE_DECIMALS)); coll.Add("floorplane_d", (double.IsNaN(s.FloorSlopeOffset) ? 0f : Math.Round(s.FloorSlopeOffset, Sector.SLOPE_DECIMALS))); + */ + coll.Add("floorplane_a", s.FloorSlope.x); + coll.Add("floorplane_b", s.FloorSlope.y); + coll.Add("floorplane_c", s.FloorSlope.z); + coll.Add("floorplane_d", double.IsNaN(s.FloorSlopeOffset) ? 0.0 : s.FloorSlopeOffset); } - if(s.CeilSlope.GetLengthSq() > 0) + if (s.CeilSlope.GetLengthSq() > 0) { coll.Add("ceilingplane_a", Math.Round(s.CeilSlope.x, Sector.SLOPE_DECIMALS)); coll.Add("ceilingplane_b", Math.Round(s.CeilSlope.y, Sector.SLOPE_DECIMALS)); diff --git a/Source/Core/Map/Linedef.cs b/Source/Core/Map/Linedef.cs index d1e1ba9c..544f1c3a 100755 --- a/Source/Core/Map/Linedef.cs +++ b/Source/Core/Map/Linedef.cs @@ -388,7 +388,7 @@ namespace CodeImp.DoomBuilder.Map // Recalculate values lengthsq = delta.GetLengthSq(); - length = (float)Math.Sqrt(lengthsq); + length = Math.Sqrt(lengthsq); if(length > 0f) lengthinv = 1f / length; else lengthinv = 1f / 0.0000000001f; if(lengthsq > 0f) lengthsqinv = 1f / lengthsq; else lengthsqinv = 1f / 0.0000000001f; angle = delta.GetAngle(); @@ -1046,9 +1046,9 @@ namespace CodeImp.DoomBuilder.Map } // This returns the shortest distance from given coordinates to line - public float SafeDistanceTo(Vector2D p, bool bounded) + public double SafeDistanceTo(Vector2D p, bool bounded) { - return (float)Math.Sqrt(SafeDistanceToSq(p, bounded)); + return Math.Sqrt(SafeDistanceToSq(p, bounded)); } // This returns the shortest distance from given coordinates to line @@ -1074,9 +1074,9 @@ namespace CodeImp.DoomBuilder.Map } // This returns the shortest distance from given coordinates to line - public float DistanceTo(Vector2D p, bool bounded) + public double DistanceTo(Vector2D p, bool bounded) { - return (float)Math.Sqrt(DistanceToSq(p, bounded)); + return Math.Sqrt(DistanceToSq(p, bounded)); } // This tests on which side of the line the given coordinates are @@ -1465,13 +1465,13 @@ namespace CodeImp.DoomBuilder.Map //mxd. Copy UDMF offsets as well if(General.Map.UDMF && General.Map.Config.UseLocalSidedefTextureOffsets) { - UniFields.SetFloat(newline.front.Fields, "offsetx_top", oldline.front.Fields.GetValue("offsetx_top", 0f)); - UniFields.SetFloat(newline.front.Fields, "offsetx_mid", oldline.front.Fields.GetValue("offsetx_mid", 0f)); - UniFields.SetFloat(newline.front.Fields, "offsetx_bottom", oldline.front.Fields.GetValue("offsetx_bottom", 0f)); + UniFields.SetFloat(newline.front.Fields, "offsetx_top", oldline.front.Fields.GetValue("offsetx_top", 0.0)); + UniFields.SetFloat(newline.front.Fields, "offsetx_mid", oldline.front.Fields.GetValue("offsetx_mid", 0.0)); + UniFields.SetFloat(newline.front.Fields, "offsetx_bottom", oldline.front.Fields.GetValue("offsetx_bottom", 0.0)); - UniFields.SetFloat(newline.front.Fields, "offsety_top", oldline.front.Fields.GetValue("offsety_top", 0f)); - UniFields.SetFloat(newline.front.Fields, "offsety_mid", oldline.front.Fields.GetValue("offsety_mid", 0f)); - UniFields.SetFloat(newline.front.Fields, "offsety_bottom", oldline.front.Fields.GetValue("offsety_bottom", 0f)); + UniFields.SetFloat(newline.front.Fields, "offsety_top", oldline.front.Fields.GetValue("offsety_top", 0.0)); + UniFields.SetFloat(newline.front.Fields, "offsety_mid", oldline.front.Fields.GetValue("offsety_mid", 0.0)); + UniFields.SetFloat(newline.front.Fields, "offsety_bottom", oldline.front.Fields.GetValue("offsety_bottom", 0.0)); } } @@ -1483,13 +1483,13 @@ namespace CodeImp.DoomBuilder.Map //mxd. Copy UDMF offsets as well if(General.Map.UDMF && General.Map.Config.UseLocalSidedefTextureOffsets) { - UniFields.SetFloat(newline.back.Fields, "offsetx_top", oldline.back.Fields.GetValue("offsetx_top", 0f)); - UniFields.SetFloat(newline.back.Fields, "offsetx_mid", oldline.back.Fields.GetValue("offsetx_mid", 0f)); - UniFields.SetFloat(newline.back.Fields, "offsetx_bottom", oldline.back.Fields.GetValue("offsetx_bottom", 0f)); + UniFields.SetFloat(newline.back.Fields, "offsetx_top", oldline.back.Fields.GetValue("offsetx_top", 0.0)); + UniFields.SetFloat(newline.back.Fields, "offsetx_mid", oldline.back.Fields.GetValue("offsetx_mid", 0.0)); + UniFields.SetFloat(newline.back.Fields, "offsetx_bottom", oldline.back.Fields.GetValue("offsetx_bottom", 0.0)); - UniFields.SetFloat(newline.back.Fields, "offsety_top", oldline.back.Fields.GetValue("offsety_top", 0f)); - UniFields.SetFloat(newline.back.Fields, "offsety_mid", oldline.back.Fields.GetValue("offsety_mid", 0f)); - UniFields.SetFloat(newline.back.Fields, "offsety_bottom", oldline.back.Fields.GetValue("offsety_bottom", 0f)); + UniFields.SetFloat(newline.back.Fields, "offsety_top", oldline.back.Fields.GetValue("offsety_top", 0.0)); + UniFields.SetFloat(newline.back.Fields, "offsety_mid", oldline.back.Fields.GetValue("offsety_mid", 0.0)); + UniFields.SetFloat(newline.back.Fields, "offsety_bottom", oldline.back.Fields.GetValue("offsety_bottom", 0.0)); } } break; @@ -1503,9 +1503,9 @@ namespace CodeImp.DoomBuilder.Map //mxd. Reset UDMF X offset as well if(General.Map.UDMF && General.Map.Config.UseLocalSidedefTextureOffsets) { - UniFields.SetFloat(newline.front.Fields, "offsetx_top", 0f); - UniFields.SetFloat(newline.front.Fields, "offsetx_mid", 0f); - UniFields.SetFloat(newline.front.Fields, "offsetx_bottom", 0f); + UniFields.SetFloat(newline.front.Fields, "offsetx_top", 0.0); + UniFields.SetFloat(newline.front.Fields, "offsetx_mid", 0.0); + UniFields.SetFloat(newline.front.Fields, "offsetx_bottom", 0.0); } } @@ -1517,13 +1517,13 @@ namespace CodeImp.DoomBuilder.Map //mxd. Reset UDMF X offset and copy Y offset as well if(General.Map.UDMF && General.Map.Config.UseLocalSidedefTextureOffsets) { - UniFields.SetFloat(newline.back.Fields, "offsetx_top", 0f); - UniFields.SetFloat(newline.back.Fields, "offsetx_mid", 0f); - UniFields.SetFloat(newline.back.Fields, "offsetx_bottom", 0f); + UniFields.SetFloat(newline.back.Fields, "offsetx_top", 0.0); + UniFields.SetFloat(newline.back.Fields, "offsetx_mid", 0.0); + UniFields.SetFloat(newline.back.Fields, "offsetx_bottom", 0.0); - UniFields.SetFloat(newline.back.Fields, "offsety_top", oldline.back.Fields.GetValue("offsety_top", 0f)); - UniFields.SetFloat(newline.back.Fields, "offsety_mid", oldline.back.Fields.GetValue("offsety_mid", 0f)); - UniFields.SetFloat(newline.back.Fields, "offsety_bottom", oldline.back.Fields.GetValue("offsety_bottom", 0f)); + UniFields.SetFloat(newline.back.Fields, "offsety_top", oldline.back.Fields.GetValue("offsety_top", 0.0)); + UniFields.SetFloat(newline.back.Fields, "offsety_mid", oldline.back.Fields.GetValue("offsety_mid", 0.0)); + UniFields.SetFloat(newline.back.Fields, "offsety_bottom", oldline.back.Fields.GetValue("offsety_bottom", 0.0)); } } break; @@ -1536,13 +1536,13 @@ namespace CodeImp.DoomBuilder.Map if(General.Map.UDMF && General.Map.Config.UseLocalSidedefTextureOffsets) { - UniFields.SetFloat(newline.front.Fields, "offsetx_top", 0f); - UniFields.SetFloat(newline.front.Fields, "offsetx_mid", 0f); - UniFields.SetFloat(newline.front.Fields, "offsetx_bottom", 0f); + UniFields.SetFloat(newline.front.Fields, "offsetx_top", 0.0); + UniFields.SetFloat(newline.front.Fields, "offsetx_mid", 0.0); + UniFields.SetFloat(newline.front.Fields, "offsetx_bottom", 0.0); - UniFields.SetFloat(newline.front.Fields, "offsety_top", 0f); - UniFields.SetFloat(newline.front.Fields, "offsety_mid", 0f); - UniFields.SetFloat(newline.front.Fields, "offsety_bottom", 0f); + UniFields.SetFloat(newline.front.Fields, "offsety_top", 0.0); + UniFields.SetFloat(newline.front.Fields, "offsety_mid", 0.0); + UniFields.SetFloat(newline.front.Fields, "offsety_bottom", 0.0); } } @@ -1553,13 +1553,13 @@ namespace CodeImp.DoomBuilder.Map if(General.Map.UDMF && General.Map.Config.UseLocalSidedefTextureOffsets) { - UniFields.SetFloat(newline.back.Fields, "offsetx_top", 0f); - UniFields.SetFloat(newline.back.Fields, "offsetx_mid", 0f); - UniFields.SetFloat(newline.back.Fields, "offsetx_bottom", 0f); + UniFields.SetFloat(newline.back.Fields, "offsetx_top", 0.0); + UniFields.SetFloat(newline.back.Fields, "offsetx_mid", 0.0); + UniFields.SetFloat(newline.back.Fields, "offsetx_bottom", 0.0); - UniFields.SetFloat(newline.back.Fields, "offsety_top", 0f); - UniFields.SetFloat(newline.back.Fields, "offsety_mid", 0f); - UniFields.SetFloat(newline.back.Fields, "offsety_bottom", 0f); + UniFields.SetFloat(newline.back.Fields, "offsety_top", 0.0); + UniFields.SetFloat(newline.back.Fields, "offsety_mid", 0.0); + UniFields.SetFloat(newline.back.Fields, "offsety_bottom", 0.0); } } break; diff --git a/Source/Core/Map/MapSet.cs b/Source/Core/Map/MapSet.cs index 67e97da9..f8c190a1 100755 --- a/Source/Core/Map/MapSet.cs +++ b/Source/Core/Map/MapSet.cs @@ -3155,8 +3155,8 @@ namespace CodeImp.DoomBuilder.Map if(!double.IsNaN(intersection.x)) { //mxd. Round to map format precision - intersection.x = (float)Math.Round(intersection.x, General.Map.FormatInterface.VertexDecimals); - intersection.y = (float)Math.Round(intersection.y, General.Map.FormatInterface.VertexDecimals); + intersection.x = Math.Round(intersection.x, General.Map.FormatInterface.VertexDecimals); + intersection.y = Math.Round(intersection.y, General.Map.FormatInterface.VertexDecimals); //mxd. Skip when intersection matches start/end position. // Otherwise infinite ammount of 0-length lines will be created... diff --git a/Source/Core/Map/Sector.cs b/Source/Core/Map/Sector.cs index 1ce7875f..87a18c8c 100755 --- a/Source/Core/Map/Sector.cs +++ b/Source/Core/Map/Sector.cs @@ -827,7 +827,7 @@ namespace CodeImp.DoomBuilder.Map } //mxd. This updates all properties (UDMF version) - public void Update(int hfloor, int hceil, string tfloor, string tceil, int effect, Dictionary flags, List tags, int brightness, float flooroffset, Vector3D floorslope, float ceiloffset, Vector3D ceilslope) + public void Update(int hfloor, int hceil, string tfloor, string tceil, int effect, Dictionary flags, List tags, int brightness, double flooroffset, Vector3D floorslope, double ceiloffset, Vector3D ceilslope) { BeforePropsChange(); diff --git a/Source/Core/Map/Sidedef.cs b/Source/Core/Map/Sidedef.cs index 1ff74eb5..ac46fb5a 100755 --- a/Source/Core/Map/Sidedef.cs +++ b/Source/Core/Map/Sidedef.cs @@ -605,10 +605,10 @@ namespace CodeImp.DoomBuilder.Map //mxd. Also copy UDMF offsets and scale if(General.Map.UDMF) { - UniFields.SetFloat(s.Fields, "offsetx_top", Fields.GetValue("offsetx_top", 0f), 0f); - UniFields.SetFloat(s.Fields, "offsety_top", Fields.GetValue("offsety_top", 0f), 0f); - UniFields.SetFloat(s.Fields, "scalex_top", Fields.GetValue("scalex_top", 1.0f), 1.0f); - UniFields.SetFloat(s.Fields, "scaley_top", Fields.GetValue("scaley_top", 1.0f), 1.0f); + UniFields.SetFloat(s.Fields, "offsetx_top", Fields.GetValue("offsetx_top", 0.0), 0.0); + UniFields.SetFloat(s.Fields, "offsety_top", Fields.GetValue("offsety_top", 0.0), 0.0); + UniFields.SetFloat(s.Fields, "scalex_top", Fields.GetValue("scalex_top", 1.0), 1.0); + UniFields.SetFloat(s.Fields, "scaley_top", Fields.GetValue("scaley_top", 1.0), 1.0); } } @@ -625,10 +625,10 @@ namespace CodeImp.DoomBuilder.Map //mxd. Also copy UDMF offsets and scale if(General.Map.UDMF) { - UniFields.SetFloat(s.Fields, "offsetx_mid", Fields.GetValue("offsetx_mid", 0f), 0f); - UniFields.SetFloat(s.Fields, "offsety_mid", Fields.GetValue("offsety_mid", 0f), 0f); - UniFields.SetFloat(s.Fields, "scalex_mid", Fields.GetValue("scalex_mid", 1.0f), 1.0f); - UniFields.SetFloat(s.Fields, "scaley_mid", Fields.GetValue("scaley_mid", 1.0f), 1.0f); + UniFields.SetFloat(s.Fields, "offsetx_mid", Fields.GetValue("offsetx_mid", 0.0), 0.0); + UniFields.SetFloat(s.Fields, "offsety_mid", Fields.GetValue("offsety_mid", 0.0), 0.0); + UniFields.SetFloat(s.Fields, "scalex_mid", Fields.GetValue("scalex_mid", 1.0), 1.0); + UniFields.SetFloat(s.Fields, "scaley_mid", Fields.GetValue("scaley_mid", 1.0), 1.0); } } @@ -645,10 +645,10 @@ namespace CodeImp.DoomBuilder.Map //mxd. Also copy UDMF offsets and scale if(General.Map.UDMF) { - UniFields.SetFloat(s.Fields, "offsetx_bottom", Fields.GetValue("offsetx_bottom", 0f), 0f); - UniFields.SetFloat(s.Fields, "offsety_bottom", Fields.GetValue("offsety_bottom", 0f), 0f); - UniFields.SetFloat(s.Fields, "scalex_bottom", Fields.GetValue("scalex_bottom", 1.0f), 1.0f); - UniFields.SetFloat(s.Fields, "scaley_bottom", Fields.GetValue("scaley_bottom", 1.0f), 1.0f); + UniFields.SetFloat(s.Fields, "offsetx_bottom", Fields.GetValue("offsetx_bottom", 0.0), 0.0); + UniFields.SetFloat(s.Fields, "offsety_bottom", Fields.GetValue("offsety_bottom", 0.0), 0.0); + UniFields.SetFloat(s.Fields, "scalex_bottom", Fields.GetValue("scalex_bottom", 1.0), 1.0); + UniFields.SetFloat(s.Fields, "scaley_bottom", Fields.GetValue("scaley_bottom", 1.0), 1.0); } } @@ -752,10 +752,10 @@ namespace CodeImp.DoomBuilder.Map if(longtexnamehigh != MapSet.EmptyLongName && General.Map.Data.GetTextureExists(texnamehigh)) { ImageData texture = General.Map.Data.GetTextureImage(texnamehigh); - float scaleTop = Fields.GetValue("scalex_top", 1.0f); + double scaleTop = Fields.GetValue("scalex_top", 1.0); - float value = Fields.GetValue("offsetx_top", 0f); - float result = (float)(Math.Round(value + offset * scaleTop)); + double value = Fields.GetValue("offsetx_top", 0.0); + double result = Math.Round(value + offset * scaleTop); if(texture.IsImageLoaded) result %= texture.Width; UniFields.SetFloat(Fields, "offsetx_top", result); } @@ -764,10 +764,10 @@ namespace CodeImp.DoomBuilder.Map if(longtexnamemid != MapSet.EmptyLongName && General.Map.Data.GetTextureExists(texnamemid)) { ImageData texture = General.Map.Data.GetTextureImage(texnamemid); - float scaleMid = Fields.GetValue("scalex_mid", 1.0f); + double scaleMid = Fields.GetValue("scalex_mid", 1.0); - float value = Fields.GetValue("offsetx_mid", 0f); - float result = (float)(Math.Round(value + offset * scaleMid)); + double value = Fields.GetValue("offsetx_mid", 0.0); + double result = Math.Round(value + offset * scaleMid); if(texture.IsImageLoaded) result %= texture.Width; UniFields.SetFloat(Fields, "offsetx_mid", result); } @@ -776,10 +776,10 @@ namespace CodeImp.DoomBuilder.Map if(longtexnamelow != MapSet.EmptyLongName && General.Map.Data.GetTextureExists(texnamelow)) { ImageData texture = General.Map.Data.GetTextureImage(texnamelow); - float scaleLow = Fields.GetValue("scalex_bottom", 1.0f); + double scaleLow = Fields.GetValue("scalex_bottom", 1.0); - float value = Fields.GetValue("offsetx_bottom", 0f); - float result = (float)(Math.Round(value + offset * scaleLow)); + double value = Fields.GetValue("offsetx_bottom", 0.0); + double result = Math.Round(value + offset * scaleLow); if(texture.IsImageLoaded) result %= texture.Width; UniFields.SetFloat(Fields, "offsetx_bottom", result); } diff --git a/Source/Core/Map/Thing.cs b/Source/Core/Map/Thing.cs index f8e28261..edca715b 100755 --- a/Source/Core/Map/Thing.cs +++ b/Source/Core/Map/Thing.cs @@ -494,7 +494,7 @@ namespace CodeImp.DoomBuilder.Map // This updates all properties // NOTE: This does not update sector! (call DetermineSector) - public void Update(int type, float x, float y, float zoffset, int angle, int pitch, int roll, float scaleX, float scaleY, + public void Update(int type, double x, double y, double zoffset, int angle, int pitch, int roll, double scaleX, double scaleY, Dictionary flags, int tag, int action, int[] args) { // Apply changes @@ -673,9 +673,9 @@ namespace CodeImp.DoomBuilder.Map public void SnapToAccuracy(bool usepreciseposition) { // Round the coordinates - Vector3D newpos = new Vector3D((float)Math.Round(pos.x, (usepreciseposition ? General.Map.FormatInterface.VertexDecimals : 0)), - (float)Math.Round(pos.y, (usepreciseposition ? General.Map.FormatInterface.VertexDecimals : 0)), - (float)Math.Round(pos.z, (usepreciseposition ? General.Map.FormatInterface.VertexDecimals : 0))); + Vector3D newpos = new Vector3D(Math.Round(pos.x, (usepreciseposition ? General.Map.FormatInterface.VertexDecimals : 0)), + Math.Round(pos.y, (usepreciseposition ? General.Map.FormatInterface.VertexDecimals : 0)), + Math.Round(pos.z, (usepreciseposition ? General.Map.FormatInterface.VertexDecimals : 0))); this.Move(newpos); } diff --git a/Source/Core/Map/UniFields.cs b/Source/Core/Map/UniFields.cs index 8ae366ba..09994bc9 100755 --- a/Source/Core/Map/UniFields.cs +++ b/Source/Core/Map/UniFields.cs @@ -116,7 +116,7 @@ namespace CodeImp.DoomBuilder.Map } } - public static double GetFloat(UniFields fields, string key) { return GetFloat(fields, key, 0f); } + public static double GetFloat(UniFields fields, string key) { return GetFloat(fields, key, 0.0); } public static double GetFloat(UniFields fields, string key, double defaultvalue) { if(fields == null) return defaultvalue; diff --git a/Source/Core/Map/UniValue.cs b/Source/Core/Map/UniValue.cs index 3d8906e1..d1b81b4f 100755 --- a/Source/Core/Map/UniValue.cs +++ b/Source/Core/Map/UniValue.cs @@ -52,8 +52,8 @@ namespace CodeImp.DoomBuilder.Map set { // Value may only be a primitive type - if((!(value is int) && !(value is float) && !(value is string) && !(value is bool)) || (value == null)) - throw new ArgumentException("Universal field values can only be of type int, float, string or bool."); + if((!(value is int) && !(value is double) && !(value is string) && !(value is bool)) || (value == null)) + throw new ArgumentException("Universal field values can only be of type int, double, string or bool."); this.value = value; } diff --git a/Source/Core/Map/Vertex.cs b/Source/Core/Map/Vertex.cs index 37317204..bb9db97b 100755 --- a/Source/Core/Map/Vertex.cs +++ b/Source/Core/Map/Vertex.cs @@ -290,8 +290,8 @@ namespace CodeImp.DoomBuilder.Map public void SnapToAccuracy(bool usepreciseposition) { // Round the coordinates - Vector2D newpos = new Vector2D((float)Math.Round(pos.x, (usepreciseposition ? General.Map.FormatInterface.VertexDecimals : 0)), - (float)Math.Round(pos.y, (usepreciseposition ? General.Map.FormatInterface.VertexDecimals : 0))); + Vector2D newpos = new Vector2D(Math.Round(pos.x, (usepreciseposition ? General.Map.FormatInterface.VertexDecimals : 0)), + Math.Round(pos.y, (usepreciseposition ? General.Map.FormatInterface.VertexDecimals : 0))); this.Move(newpos); } diff --git a/Source/Core/VisualModes/VisualCamera.cs b/Source/Core/VisualModes/VisualCamera.cs index 4748d76a..40e45d0e 100755 --- a/Source/Core/VisualModes/VisualCamera.cs +++ b/Source/Core/VisualModes/VisualCamera.cs @@ -29,7 +29,7 @@ namespace CodeImp.DoomBuilder.VisualModes private Vector3D movemultiplier; private double anglexy, anglez; private Sector sector; - private float gravity = 1.0f; //mxd + private double gravity = 1.0; //mxd #endregion @@ -41,7 +41,7 @@ namespace CodeImp.DoomBuilder.VisualModes public double AngleZ { get { return anglez; } set { anglez = value; } } public Sector Sector { get { return sector; } internal set { sector = value; UpdateGravity(); } } //mxd public Vector3D MoveMultiplier { get { return movemultiplier; } set { movemultiplier = value; } } - public float Gravity { get { return gravity; } } //mxd + public double Gravity { get { return gravity; } } //mxd #endregion @@ -173,7 +173,7 @@ namespace CodeImp.DoomBuilder.VisualModes private void UpdateGravity() { if(!General.Map.UDMF || sector == null) return; - gravity = sector.Fields.GetValue("gravity", 1.0f); + gravity = sector.Fields.GetValue("gravity", 1.0); } #endregion diff --git a/Source/Core/Windows/LinedefEditFormUDMF.cs b/Source/Core/Windows/LinedefEditFormUDMF.cs index 01e1a14f..73f2f66b 100755 --- a/Source/Core/Windows/LinedefEditFormUDMF.cs +++ b/Source/Core/Windows/LinedefEditFormUDMF.cs @@ -289,7 +289,7 @@ namespace CodeImp.DoomBuilder.Windows fieldslist.SetValues(fl.Fields, true); // Custom fields commenteditor.SetValues(fl.Fields, true); //mxd. Comments renderStyle.SelectedIndex = Array.IndexOf(renderstyles, fl.Fields.GetValue("renderstyle", "translucent")); - alpha.Text = General.Clamp(fl.Fields.GetValue("alpha", 1.0f), 0f, 1f).ToString(); + alpha.Text = General.Clamp(fl.Fields.GetValue("alpha", 1.0), 0.0, 1.0).ToString(); // Locknumber int locknumber = fl.Fields.GetValue("locknumber", 0); @@ -394,7 +394,7 @@ namespace CodeImp.DoomBuilder.Windows renderStyle.SelectedIndex = -1; // Alpha - if(!string.IsNullOrEmpty(alpha.Text) && General.Clamp(alpha.GetResultFloat(1.0f), 0f, 1f) != l.Fields.GetValue("alpha", 1.0f)) + if(!string.IsNullOrEmpty(alpha.Text) && General.Clamp(alpha.GetResultFloat(1.0), 0.0, 1.0) != l.Fields.GetValue("alpha", 1.0)) alpha.Text = string.Empty; // Locknumber @@ -861,18 +861,18 @@ namespace CodeImp.DoomBuilder.Windows if(string.IsNullOrEmpty(alpha.Text)) { foreach(Linedef l in lines) - UniFields.SetFloat(l.Fields, "alpha", linedefprops[i++].Alpha, 1.0f); + UniFields.SetFloat(l.Fields, "alpha", linedefprops[i++].Alpha, 1.0); } else //update values { foreach(Linedef l in lines) { - double value = General.Clamp(alpha.GetResultFloat(l.Fields.GetValue("alpha", 1.0f)), 0f, 1.0f); - UniFields.SetFloat(l.Fields, "alpha", value, 1.0f); + double value = General.Clamp(alpha.GetResultFloat(l.Fields.GetValue("alpha", 1.0)), 0.0, 1.0); + UniFields.SetFloat(l.Fields, "alpha", value, 1.0); } } - resetalpha.Visible = (alpha.GetResultFloat(1.0f) != 1.0f); + resetalpha.Visible = (alpha.GetResultFloat(1.0) != 1.0); General.Map.IsChanged = true; if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty); diff --git a/Source/Core/Windows/SectorEditFormUDMF.cs b/Source/Core/Windows/SectorEditFormUDMF.cs index ac288865..4585f0a0 100755 --- a/Source/Core/Windows/SectorEditFormUDMF.cs +++ b/Source/Core/Windows/SectorEditFormUDMF.cs @@ -116,28 +116,28 @@ namespace CodeImp.DoomBuilder.Windows FogDensity = UniFields.GetInteger(s.Fields, "fogdensity", 0); //UDMF Ceiling - CeilOffsetX = UniFields.GetFloat(s.Fields, "xpanningceiling", 0f); - CeilOffsetY = UniFields.GetFloat(s.Fields, "ypanningceiling", 0f); - CeilScaleX = UniFields.GetFloat(s.Fields, "xscaleceiling", 1.0f); - CeilScaleY = UniFields.GetFloat(s.Fields, "yscaleceiling", 1.0f); + CeilOffsetX = UniFields.GetFloat(s.Fields, "xpanningceiling", 0.0); + CeilOffsetY = UniFields.GetFloat(s.Fields, "ypanningceiling", 0.0); + CeilScaleX = UniFields.GetFloat(s.Fields, "xscaleceiling", 1.0); + CeilScaleY = UniFields.GetFloat(s.Fields, "yscaleceiling", 1.0); //CeilAlpha = UniFields.GetFloat(s.Fields, "alphaceiling", 1.0f); - CeilRotation = s.Fields.GetValue("rotationceiling", 0.0f); + CeilRotation = s.Fields.GetValue("rotationceiling", 0.0); CeilBrightness = s.Fields.GetValue("lightceiling", 0); CeilLightAbsoulte = s.Fields.GetValue("lightceilingabsolute", false); CeilGlowColor = s.Fields.GetValue("ceilingglowcolor", 0); - CeilGlowHeight = s.Fields.GetValue("ceilingglowheight", 0f); + CeilGlowHeight = s.Fields.GetValue("ceilingglowheight", 0.0); //UDMF Floor - FloorOffsetX = UniFields.GetFloat(s.Fields, "xpanningfloor", 0f); - FloorOffsetY = UniFields.GetFloat(s.Fields, "ypanningfloor", 0f); - FloorScaleX = UniFields.GetFloat(s.Fields, "xscalefloor", 1.0f); - FloorScaleY = UniFields.GetFloat(s.Fields, "yscalefloor", 1.0f); + FloorOffsetX = UniFields.GetFloat(s.Fields, "xpanningfloor", 0.0); + FloorOffsetY = UniFields.GetFloat(s.Fields, "ypanningfloor", 0.0); + FloorScaleX = UniFields.GetFloat(s.Fields, "xscalefloor", 1.0); + FloorScaleY = UniFields.GetFloat(s.Fields, "yscalefloor", 1.0); //FloorAlpha = UniFields.GetFloat(s.Fields, "alphafloor", 1.0f); - FloorRotation = s.Fields.GetValue("rotationfloor", 0.0f); + FloorRotation = s.Fields.GetValue("rotationfloor", 0.0); FloorBrightness = s.Fields.GetValue("lightfloor", 0); FloorLightAbsoulte = s.Fields.GetValue("lightfloorabsolute", false); FloorGlowColor = s.Fields.GetValue("floorglowcolor", 0); - FloorGlowHeight = s.Fields.GetValue("floorglowheight", 0f); + FloorGlowHeight = s.Fields.GetValue("floorglowheight", 0.0); //UDMF slopes if(s.FloorSlope.GetLengthSq() > 0) @@ -354,8 +354,8 @@ namespace CodeImp.DoomBuilder.Windows floorScale.SetValuesFrom(sc.Fields, true); // Texture rotation - float ceilAngle = sc.Fields.GetValue("rotationceiling", 0.0f); - float floorAngle = sc.Fields.GetValue("rotationfloor", 0.0f); + double ceilAngle = sc.Fields.GetValue("rotationceiling", 0.0); + double floorAngle = sc.Fields.GetValue("rotationfloor", 0.0); ceilRotation.Text = ceilAngle.ToString(); floorRotation.Text = floorAngle.ToString(); @@ -370,12 +370,12 @@ namespace CodeImp.DoomBuilder.Windows floorLightAbsolute.Checked = sc.Fields.GetValue("lightfloorabsolute", false); // Portal alpha - alphaceiling.Text = General.Clamp(sc.Fields.GetValue("alphaceiling", 1f), 0f, 1f).ToString(); - alphafloor.Text = General.Clamp(sc.Fields.GetValue("alphafloor", 1f), 0f, 1f).ToString(); + alphaceiling.Text = General.Clamp(sc.Fields.GetValue("alphaceiling", 1.0), 0.0, 1.0).ToString(); + alphafloor.Text = General.Clamp(sc.Fields.GetValue("alphafloor", 1.0), 0.0, 1.0).ToString(); // Reflectivity - ceiling_reflect.Text = General.Clamp(sc.Fields.GetValue("ceiling_reflect", 0f), 0f, 1f).ToString(); - floor_reflect.Text = General.Clamp(sc.Fields.GetValue("floor_reflect", 0f), 0f, 1f).ToString(); + ceiling_reflect.Text = General.Clamp(sc.Fields.GetValue("ceiling_reflect", 0.0), 0.0, 1.0).ToString(); + floor_reflect.Text = General.Clamp(sc.Fields.GetValue("floor_reflect", 0.0), 0.0, 1.0).ToString(); // Fog density fogdensity.Text = General.Clamp(sc.Fields.GetValue("fogdensity", 0), 0, 510).ToString(); @@ -387,8 +387,8 @@ namespace CodeImp.DoomBuilder.Windows floorglowcolor.SetValueFrom(sc.Fields, true); // Floor/ceiling glow height - ceilingglowheight.Text = sc.Fields.GetValue("ceilingglowheight", 0f).ToString(); - floorglowheight.Text = sc.Fields.GetValue("floorglowheight", 0f).ToString(); + ceilingglowheight.Text = sc.Fields.GetValue("ceilingglowheight", 0.0).ToString(); + floorglowheight.Text = sc.Fields.GetValue("floorglowheight", 0.0).ToString(); // Render style ceilRenderStyle.SelectedIndex = renderstyles.IndexOf(sc.Fields.GetValue("renderstyleceiling", "translucent")); @@ -410,8 +410,8 @@ namespace CodeImp.DoomBuilder.Windows // Misc soundsequence.Text = sc.Fields.GetValue("soundsequence", NO_SOUND_SEQUENCE); - gravity.Text = sc.Fields.GetValue("gravity", 1.0f).ToString(); - desaturation.Text = General.Clamp(sc.Fields.GetValue("desaturation", 0.0f), 0f, 1f).ToString(); + gravity.Text = sc.Fields.GetValue("gravity", 1.0).ToString(); + desaturation.Text = General.Clamp(sc.Fields.GetValue("desaturation", 0.0), 0.0, 1.0).ToString(); // Sector colors fadeColor.SetValueFrom(sc.Fields, true); @@ -476,12 +476,12 @@ namespace CodeImp.DoomBuilder.Windows floorScale.SetValuesFrom(s.Fields, false); // Texture rotation - if(s.Fields.GetValue("rotationceiling", 0.0f).ToString() != ceilRotation.Text) + if(s.Fields.GetValue("rotationceiling", 0.0).ToString() != ceilRotation.Text) { ceilRotation.Text = ""; ceilAngleControl.Angle = AngleControlEx.NO_ANGLE; } - if(s.Fields.GetValue("rotationfloor", 0.0f).ToString() != floorRotation.Text) + if(s.Fields.GetValue("rotationfloor", 0.0).ToString() != floorRotation.Text) { floorRotation.Text = ""; floorAngleControl.Angle = AngleControlEx.NO_ANGLE; @@ -503,12 +503,12 @@ namespace CodeImp.DoomBuilder.Windows } // Portal alpha - if(s.Fields.GetValue("alphaceiling", 1.0f).ToString() != alphaceiling.Text) alphaceiling.Text = ""; - if(s.Fields.GetValue("alphafloor", 1.0f).ToString() != alphafloor.Text) alphafloor.Text = ""; + if(s.Fields.GetValue("alphaceiling", 1.0).ToString() != alphaceiling.Text) alphaceiling.Text = ""; + if(s.Fields.GetValue("alphafloor", 1.0).ToString() != alphafloor.Text) alphafloor.Text = ""; // Reflectivity - if(s.Fields.GetValue("ceiling_reflect", 0f).ToString() != ceiling_reflect.Text) ceiling_reflect.Text = ""; - if(s.Fields.GetValue("floor_reflect", 0f).ToString() != floor_reflect.Text) floor_reflect.Text = ""; + if(s.Fields.GetValue("ceiling_reflect", 0.0).ToString() != ceiling_reflect.Text) ceiling_reflect.Text = ""; + if(s.Fields.GetValue("floor_reflect", 0.0).ToString() != floor_reflect.Text) floor_reflect.Text = ""; // Fog density if(s.Fields.GetValue("fogdensity", 0).ToString() != fogdensity.Text) fogdensity.Text = ""; @@ -520,8 +520,8 @@ namespace CodeImp.DoomBuilder.Windows floorglowcolor.SetValueFrom(s.Fields, false); // Floor/ceiling glow height - if(s.Fields.GetValue("ceilingglowheight", 0f).ToString() != ceilingglowheight.Text) ceilingglowheight.Text = ""; - if(s.Fields.GetValue("floorglowheight", 0f).ToString() != floorglowheight.Text) floorglowheight.Text = ""; + if(s.Fields.GetValue("ceilingglowheight", 0.0).ToString() != ceilingglowheight.Text) ceilingglowheight.Text = ""; + if(s.Fields.GetValue("floorglowheight", 0.0).ToString() != floorglowheight.Text) floorglowheight.Text = ""; // Render style if(ceilRenderStyle.SelectedIndex > -1 && ceilRenderStyle.SelectedIndex != renderstyles.IndexOf(s.Fields.GetValue("renderstyleceiling", "translucent"))) @@ -551,8 +551,8 @@ namespace CodeImp.DoomBuilder.Windows // Misc if(soundsequence.SelectedIndex > -1 && s.Fields.GetValue("soundsequence", NO_SOUND_SEQUENCE) != soundsequence.Text) soundsequence.SelectedIndex = -1; - if(s.Fields.GetValue("gravity", 1.0f).ToString() != gravity.Text) gravity.Text = ""; - if(s.Fields.GetValue("desaturation", 0.0f).ToString() != desaturation.Text) desaturation.Text = ""; + if(s.Fields.GetValue("gravity", 1.0).ToString() != gravity.Text) gravity.Text = ""; + if(s.Fields.GetValue("desaturation", 0.0).ToString() != desaturation.Text) desaturation.Text = ""; // Sector colors fadeColor.SetValueFrom(s.Fields, false); @@ -664,7 +664,7 @@ namespace CodeImp.DoomBuilder.Windows { if(!string.IsNullOrEmpty(control.Text)) { - double ceilAlphaVal = General.Clamp(control.GetResultFloat(s.Fields.GetValue(control.Name, defaultvalue)), 0f, 1f); + double ceilAlphaVal = General.Clamp(control.GetResultFloat(s.Fields.GetValue(control.Name, defaultvalue)), 0.0, 1.0); UniFields.SetFloat(s.Fields, control.Name, ceilAlphaVal, defaultvalue); } } @@ -898,11 +898,11 @@ namespace CodeImp.DoomBuilder.Windows if(!string.IsNullOrEmpty(soundsequence.Text)) UniFields.SetString(s.Fields, "soundsequence", soundsequence.Text, NO_SOUND_SEQUENCE); if(!string.IsNullOrEmpty(gravity.Text)) - UniFields.SetFloat(s.Fields, "gravity", gravity.GetResultFloat(s.Fields.GetValue("gravity", 1.0f)), 1.0f); + UniFields.SetFloat(s.Fields, "gravity", gravity.GetResultFloat(s.Fields.GetValue("gravity", 1.0)), 1.0); if(!string.IsNullOrEmpty(desaturation.Text)) { - double val = General.Clamp(desaturation.GetResultFloat(s.Fields.GetValue("desaturation", 0f)), 0f, 1f); - UniFields.SetFloat(s.Fields, "desaturation", val, 0f); + double val = General.Clamp(desaturation.GetResultFloat(s.Fields.GetValue("desaturation", 0.0)), 0.0, 1.0); + UniFields.SetFloat(s.Fields, "desaturation", val, 0.0); } // Clear horizontal slopes diff --git a/Source/Core/Windows/ThingEditFormUDMF.cs b/Source/Core/Windows/ThingEditFormUDMF.cs index 8475e427..2026e43c 100755 --- a/Source/Core/Windows/ThingEditFormUDMF.cs +++ b/Source/Core/Windows/ThingEditFormUDMF.cs @@ -214,10 +214,10 @@ namespace CodeImp.DoomBuilder.Windows commenteditor.SetValues(ft.Fields, true); conversationID.Text = ft.Fields.GetValue("conversation", 0).ToString(); floatbobphase.Text = ft.Fields.GetValue("floatbobphase", -1).ToString(); - gravity.Text = ft.Fields.GetValue("gravity", 1.0f).ToString(); + gravity.Text = ft.Fields.GetValue("gravity", 1.0).ToString(); score.Text = ft.Fields.GetValue("score", 0).ToString(); health.Text = ft.Fields.GetValue("health", 1).ToString(); - alpha.Text = ft.Fields.GetValue("alpha", 1.0f).ToString(); + alpha.Text = ft.Fields.GetValue("alpha", 1.0).ToString(); color.SetValueFrom(ft.Fields, true); scale.SetValues(ft.ScaleX, ft.ScaleY, true); pitch.Text = ft.Pitch.ToString(); @@ -296,10 +296,10 @@ namespace CodeImp.DoomBuilder.Windows commenteditor.SetValues(t.Fields, false); //mxd. Comments if(t.Fields.GetValue("conversation", 0).ToString() != conversationID.Text) conversationID.Text = ""; if(t.Fields.GetValue("floatbobphase", -1).ToString() != floatbobphase.Text) floatbobphase.Text = ""; - if(t.Fields.GetValue("gravity", 1.0f).ToString() != gravity.Text) gravity.Text = ""; + if(t.Fields.GetValue("gravity", 1.0).ToString() != gravity.Text) gravity.Text = ""; if(t.Fields.GetValue("score", 0).ToString() != score.Text) score.Text = ""; if(t.Fields.GetValue("health", 1).ToString() != health.Text) health.Text = ""; - if(t.Fields.GetValue("alpha", 1.0f).ToString() != alpha.Text) alpha.Text = ""; + if(t.Fields.GetValue("alpha", 1.0).ToString() != alpha.Text) alpha.Text = ""; scale.SetValues(t.ScaleX, t.ScaleY, false); color.SetValueFrom(t.Fields, false); @@ -546,7 +546,7 @@ namespace CodeImp.DoomBuilder.Windows if(!string.IsNullOrEmpty(floatbobphase.Text)) UniFields.SetInteger(t.Fields, "floatbobphase", General.Clamp(floatbobphase.GetResult(t.Fields.GetValue("floatbobphase", -1)), -1, 63), -1); if(!string.IsNullOrEmpty(gravity.Text)) - UniFields.SetFloat(t.Fields, "gravity", gravity.GetResultFloat(t.Fields.GetValue("gravity", 1.0f)), 1.0f); + UniFields.SetFloat(t.Fields, "gravity", gravity.GetResultFloat(t.Fields.GetValue("gravity", 1.0)), 1.0); if(!string.IsNullOrEmpty(health.Text)) UniFields.SetInteger(t.Fields, "health", health.GetResult(t.Fields.GetValue("health", 1)), 1); if(!string.IsNullOrEmpty(score.Text)) @@ -948,18 +948,18 @@ namespace CodeImp.DoomBuilder.Windows //restore values if(string.IsNullOrEmpty(alpha.Text)) { - foreach(Thing t in things) UniFields.SetFloat(t.Fields, "alpha", thingprops[i++].Alpha, 1.0f); + foreach(Thing t in things) UniFields.SetFloat(t.Fields, "alpha", thingprops[i++].Alpha, 1.0); } else //update values { foreach(Thing t in things) { - double value = General.Clamp(alpha.GetResultFloat(t.Fields.GetValue("alpha", 1.0f)), 0f, 1.0f); - UniFields.SetFloat(t.Fields, "alpha", value, 1.0f); + double value = General.Clamp(alpha.GetResultFloat(t.Fields.GetValue("alpha", 1.0)), 0.0, 1.0); + UniFields.SetFloat(t.Fields, "alpha", value, 1.0); } } - resetalpha.Visible = (alpha.GetResultFloat(1.0f) != 1.0f); + resetalpha.Visible = (alpha.GetResultFloat(1.0) != 1.0); General.Map.IsChanged = true; if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty); diff --git a/Source/Plugins/3DFloorMode/SlopeVertex.cs b/Source/Plugins/3DFloorMode/SlopeVertex.cs index 7167a868..5b87debd 100644 --- a/Source/Plugins/3DFloorMode/SlopeVertex.cs +++ b/Source/Plugins/3DFloorMode/SlopeVertex.cs @@ -42,7 +42,7 @@ namespace CodeImp.DoomBuilder.ThreeDFloorMode identifier = String.Format("user_svg{0}_v{1}_{2}", svgid, vertexid, str); // Use reflection to set the variable to the value - type.GetField(str, BindingFlags.Instance | BindingFlags.NonPublic).SetValue(this, sector.Fields.GetValue(identifier, 0.0f)); + type.GetField(str, BindingFlags.Instance | BindingFlags.NonPublic).SetValue(this, sector.Fields.GetValue(identifier, 0.0)); } } diff --git a/Source/Plugins/BuilderModes/ClassicModes/DragGeometryMode.cs b/Source/Plugins/BuilderModes/ClassicModes/DragGeometryMode.cs index 08dc86b7..7146c175 100755 --- a/Source/Plugins/BuilderModes/ClassicModes/DragGeometryMode.cs +++ b/Source/Plugins/BuilderModes/ClassicModes/DragGeometryMode.cs @@ -472,23 +472,23 @@ namespace CodeImp.DoomBuilder.BuilderModes if (texture != null) { - float scalex = s.Fields.GetValue("xscaleceiling", 1.0f); - float scaley = s.Fields.GetValue("yscaleceiling", 1.0f); + double scalex = s.Fields.GetValue("xscaleceiling", 1.0); + double scaley = s.Fields.GetValue("yscaleceiling", 1.0); if (scalex != 0 && scaley != 0) { - Vector2D ceiloffset = new Vector2D(-offset.x, offset.y).GetRotated(-Angle2D.DegToRad((int)s.Fields.GetValue("rotationceiling", 0f))); - ceiloffset.x += s.Fields.GetValue("xpanningceiling", 0f); - ceiloffset.y += s.Fields.GetValue("ypanningceiling", 0f); + Vector2D ceiloffset = new Vector2D(-offset.x, offset.y).GetRotated(-Angle2D.DegToRad((int)s.Fields.GetValue("rotationceiling", 0.0))); + ceiloffset.x += s.Fields.GetValue("xpanningceiling", 0.0); + ceiloffset.y += s.Fields.GetValue("ypanningceiling", 0.0); int texturewidth = (int)Math.Round(texture.Width / scalex); int textureheight = (int)Math.Round(texture.Height / scaley); - if (!s.Fields.ContainsKey("xpanningceiling")) s.Fields.Add("xpanningceiling", new UniValue(UniversalType.Float, (float)Math.Round(ceiloffset.x % texturewidth))); - else s.Fields["xpanningceiling"].Value = (float)Math.Round(ceiloffset.x % texturewidth); + if (!s.Fields.ContainsKey("xpanningceiling")) s.Fields.Add("xpanningceiling", new UniValue(UniversalType.Float, Math.Round(ceiloffset.x % texturewidth))); + else s.Fields["xpanningceiling"].Value = Math.Round(ceiloffset.x % texturewidth); - if (!s.Fields.ContainsKey("ypanningceiling")) s.Fields.Add("ypanningceiling", new UniValue(UniversalType.Float, (float)Math.Round(ceiloffset.y % textureheight))); - else s.Fields["ypanningceiling"].Value = (float)Math.Round(ceiloffset.y % textureheight); + if (!s.Fields.ContainsKey("ypanningceiling")) s.Fields.Add("ypanningceiling", new UniValue(UniversalType.Float, Math.Round(ceiloffset.y % textureheight))); + else s.Fields["ypanningceiling"].Value = Math.Round(ceiloffset.y % textureheight); } } } @@ -499,23 +499,23 @@ namespace CodeImp.DoomBuilder.BuilderModes ImageData texture = General.Map.Data.GetFlatImage(s.FloorTexture); if (texture != null) { - float scalex = s.Fields.GetValue("xscalefloor", 1.0f); - float scaley = s.Fields.GetValue("yscalefloor", 1.0f); + double scalex = s.Fields.GetValue("xscalefloor", 1.0); + double scaley = s.Fields.GetValue("yscalefloor", 1.0); if (scalex != 0 && scaley != 0) { - Vector2D flooroffset = new Vector2D(-offset.x, offset.y).GetRotated(-Angle2D.DegToRad((int)s.Fields.GetValue("rotationfloor", 0f))); - flooroffset.x += s.Fields.GetValue("xpanningfloor", 0f); - flooroffset.y += s.Fields.GetValue("ypanningfloor", 0f); + Vector2D flooroffset = new Vector2D(-offset.x, offset.y).GetRotated(-Angle2D.DegToRad((int)s.Fields.GetValue("rotationfloor", 0.0))); + flooroffset.x += s.Fields.GetValue("xpanningfloor", 0.0); + flooroffset.y += s.Fields.GetValue("ypanningfloor", 0.0); int texturewidth = (int)Math.Round(texture.Width / scalex); int textureheight = (int)Math.Round(texture.Height / scaley); - if (!s.Fields.ContainsKey("xpanningfloor")) s.Fields.Add("xpanningfloor", new UniValue(UniversalType.Float, (float)Math.Round(flooroffset.x % texturewidth))); - else s.Fields["xpanningfloor"].Value = (float)Math.Round(flooroffset.x % texturewidth); + if (!s.Fields.ContainsKey("xpanningfloor")) s.Fields.Add("xpanningfloor", new UniValue(UniversalType.Float, Math.Round(flooroffset.x % texturewidth))); + else s.Fields["xpanningfloor"].Value = Math.Round(flooroffset.x % texturewidth); - if (!s.Fields.ContainsKey("ypanningfloor")) s.Fields.Add("ypanningfloor", new UniValue(UniversalType.Float, (float)Math.Round(flooroffset.y % textureheight))); - else s.Fields["ypanningfloor"].Value = (float)Math.Round(flooroffset.y % textureheight); + if (!s.Fields.ContainsKey("ypanningfloor")) s.Fields.Add("ypanningfloor", new UniValue(UniversalType.Float, Math.Round(flooroffset.y % textureheight))); + else s.Fields["ypanningfloor"].Value = Math.Round(flooroffset.y % textureheight); } } } diff --git a/Source/Plugins/BuilderModes/ClassicModes/EditSelectionMode.cs b/Source/Plugins/BuilderModes/ClassicModes/EditSelectionMode.cs index 19b17844..23690cb0 100755 --- a/Source/Plugins/BuilderModes/ClassicModes/EditSelectionMode.cs +++ b/Source/Plugins/BuilderModes/ClassicModes/EditSelectionMode.cs @@ -90,12 +90,12 @@ namespace CodeImp.DoomBuilder.BuilderModes public SectorTextureInfo(Sector s) { // Get transform properties - Floor.Offset = new Vector2D(UniFields.GetFloat(s.Fields, "xpanningfloor", 0f), UniFields.GetFloat(s.Fields, "ypanningfloor", 0f)); - Ceiling.Offset = new Vector2D(UniFields.GetFloat(s.Fields, "xpanningceiling", 0f), UniFields.GetFloat(s.Fields, "ypanningceiling", 0f)); - Floor.Scale = new Vector2D(UniFields.GetFloat(s.Fields, "xscalefloor", 1.0f), -UniFields.GetFloat(s.Fields, "yscalefloor", 1.0f)); - Ceiling.Scale = new Vector2D(UniFields.GetFloat(s.Fields, "xscaleceiling", 1.0f), -UniFields.GetFloat(s.Fields, "yscaleceiling", 1.0f)); - Floor.Rotation = Angle2D.DegToRad(UniFields.GetFloat(s.Fields, "rotationfloor", 0f)); - Ceiling.Rotation = Angle2D.DegToRad(UniFields.GetFloat(s.Fields, "rotationceiling", 0f)); + Floor.Offset = new Vector2D(UniFields.GetFloat(s.Fields, "xpanningfloor", 0.0), UniFields.GetFloat(s.Fields, "ypanningfloor", 0.0)); + Ceiling.Offset = new Vector2D(UniFields.GetFloat(s.Fields, "xpanningceiling", 0.0), UniFields.GetFloat(s.Fields, "ypanningceiling", 0.0)); + Floor.Scale = new Vector2D(UniFields.GetFloat(s.Fields, "xscalefloor", 1.0), -UniFields.GetFloat(s.Fields, "yscalefloor", 1.0)); + Ceiling.Scale = new Vector2D(UniFields.GetFloat(s.Fields, "xscaleceiling", 1.0), -UniFields.GetFloat(s.Fields, "yscaleceiling", 1.0)); + Floor.Rotation = Angle2D.DegToRad(UniFields.GetFloat(s.Fields, "rotationfloor", 0.0)); + Ceiling.Rotation = Angle2D.DegToRad(UniFields.GetFloat(s.Fields, "rotationceiling", 0.0)); // Get texture sizes Floor.TextureSize = GetTextureSize(s.LongFloorTexture); diff --git a/Source/Plugins/BuilderModes/ClassicModes/FlatAlignMode.cs b/Source/Plugins/BuilderModes/ClassicModes/FlatAlignMode.cs index d7cd9b38..3d44ae2d 100755 --- a/Source/Plugins/BuilderModes/ClassicModes/FlatAlignMode.cs +++ b/Source/Plugins/BuilderModes/ClassicModes/FlatAlignMode.cs @@ -623,11 +623,11 @@ namespace CodeImp.DoomBuilder.BuilderModes foreach(Sector s in selection) { SectorInfo si; - si.rotation = Angle2D.DegToRad(s.Fields.GetValue(RotationName, 0.0f)); - si.scale.x = s.Fields.GetValue(XScaleName, 1.0f); - si.scale.y = s.Fields.GetValue(YScaleName, 1.0f); - si.offset.x = s.Fields.GetValue(XOffsetName, 0.0f); - si.offset.y = -s.Fields.GetValue(YOffsetName, 0.0f); + si.rotation = Angle2D.DegToRad(s.Fields.GetValue(RotationName, 0.0)); + si.scale.x = s.Fields.GetValue(XScaleName, 1.0); + si.scale.y = s.Fields.GetValue(YScaleName, 1.0); + si.offset.x = s.Fields.GetValue(XOffsetName, 0.0); + si.offset.y = -s.Fields.GetValue(YOffsetName, 0.0); sectorinfo.Add(si); } diff --git a/Source/Plugins/BuilderModes/ClassicModes/LinedefsMode.cs b/Source/Plugins/BuilderModes/ClassicModes/LinedefsMode.cs index fa7da652..95802c86 100755 --- a/Source/Plugins/BuilderModes/ClassicModes/LinedefsMode.cs +++ b/Source/Plugins/BuilderModes/ClassicModes/LinedefsMode.cs @@ -307,12 +307,12 @@ namespace CodeImp.DoomBuilder.BuilderModes } else { - offset.x %= texture.Width / s.Fields.GetValue((alignFloors ? "xscalefloor" : "xscaleceiling"), 1.0f); - offset.y %= texture.Height / s.Fields.GetValue((alignFloors ? "yscalefloor" : "yscaleceiling"), 1.0f); + offset.x %= texture.Width / s.Fields.GetValue((alignFloors ? "xscalefloor" : "xscaleceiling"), 1.0); + offset.y %= texture.Height / s.Fields.GetValue((alignFloors ? "yscalefloor" : "yscaleceiling"), 1.0); } - UniFields.SetFloat(s.Fields, (alignFloors ? "xpanningfloor" : "xpanningceiling"), (float)Math.Round(-offset.x), 0f); - UniFields.SetFloat(s.Fields, (alignFloors ? "ypanningfloor" : "ypanningceiling"), (float)Math.Round(offset.y), 0f); + UniFields.SetFloat(s.Fields, (alignFloors ? "xpanningfloor" : "xpanningceiling"), Math.Round(-offset.x), 0.0); + UniFields.SetFloat(s.Fields, (alignFloors ? "ypanningfloor" : "ypanningceiling"), Math.Round(offset.y), 0.0); //update s.UpdateNeeded = true; diff --git a/Source/Plugins/BuilderModes/ErrorChecks/CheckTextureAlignment.cs b/Source/Plugins/BuilderModes/ErrorChecks/CheckTextureAlignment.cs index 675aca90..b0976d4d 100755 --- a/Source/Plugins/BuilderModes/ErrorChecks/CheckTextureAlignment.cs +++ b/Source/Plugins/BuilderModes/ErrorChecks/CheckTextureAlignment.cs @@ -110,11 +110,11 @@ namespace CodeImp.DoomBuilder.BuilderModes { if(!sidedef.HighRequired() || sidedef.LongHighTexture == MapSet.EmptyLongName) return; - float scaleX = sidedef.Fields.GetValue("scalex_top", 1.0f); - float scaleY = sidedef.Fields.GetValue("scaley_top", 1.0f); - int localY = (int)Math.Round(sidedef.Fields.GetValue("offsety_top", 0.0f)); + double scaleX = sidedef.Fields.GetValue("scalex_top", 1.0); + double scaleY = sidedef.Fields.GetValue("scaley_top", 1.0); + int localY = (int)Math.Round(sidedef.Fields.GetValue("offsety_top", 0.0)); - int x = sidedef.OffsetX + (int)Math.Round(sidedef.Fields.GetValue("offsetx_top", 0.0f)); + int x = sidedef.OffsetX + (int)Math.Round(sidedef.Fields.GetValue("offsetx_top", 0.0)); int y = (int)Tools.GetSidedefTopOffsetY(sidedef, sidedef.OffsetY + localY, scaleY, false); CheckAlignment(sidedef, x, y, scaleX, scaleY, VisualGeometryType.WALL_UPPER, sidedef.HighTexture); } @@ -123,11 +123,11 @@ namespace CodeImp.DoomBuilder.BuilderModes { if(!sidedef.MiddleRequired() || sidedef.LongMiddleTexture == MapSet.EmptyLongName) return; - float scaleX = sidedef.Fields.GetValue("scalex_mid", 1.0f); - float scaleY = sidedef.Fields.GetValue("scaley_mid", 1.0f); - int localY = (int)Math.Round(sidedef.Fields.GetValue("offsety_mid", 0.0f)); + double scaleX = sidedef.Fields.GetValue("scalex_mid", 1.0); + double scaleY = sidedef.Fields.GetValue("scaley_mid", 1.0); + int localY = (int)Math.Round(sidedef.Fields.GetValue("offsety_mid", 0.0)); - int x = sidedef.OffsetX + (int)Math.Round(sidedef.Fields.GetValue("offsetx_mid", 0.0f)); + int x = sidedef.OffsetX + (int)Math.Round(sidedef.Fields.GetValue("offsetx_mid", 0.0)); int y = (int)Tools.GetSidedefMiddleOffsetY(sidedef, sidedef.OffsetY + localY, scaleY, false); CheckAlignment(sidedef, x, y, scaleX, scaleY, VisualGeometryType.WALL_MIDDLE, sidedef.MiddleTexture); } @@ -136,11 +136,11 @@ namespace CodeImp.DoomBuilder.BuilderModes { if(!sidedef.LowRequired() || sidedef.LongLowTexture == MapSet.EmptyLongName) return; - float scaleX = sidedef.Fields.GetValue("scalex_bottom", 1.0f); - float scaleY = sidedef.Fields.GetValue("scaley_bottom", 1.0f); - int localY = (int)Math.Round(sidedef.Fields.GetValue("offsety_bottom", 0.0f)); + double scaleX = sidedef.Fields.GetValue("scalex_bottom", 1.0); + double scaleY = sidedef.Fields.GetValue("scaley_bottom", 1.0); + int localY = (int)Math.Round(sidedef.Fields.GetValue("offsety_bottom", 0.0)); - int x = sidedef.OffsetX + (int)Math.Round(sidedef.Fields.GetValue("offsetx_bottom", 0.0f)); + int x = sidedef.OffsetX + (int)Math.Round(sidedef.Fields.GetValue("offsetx_bottom", 0.0)); int y = (int)Tools.GetSidedefBottomOffsetY(sidedef, sidedef.OffsetY + localY, scaleY, false); CheckAlignment(sidedef, x, y, scaleX, scaleY, VisualGeometryType.WALL_LOWER, sidedef.LowTexture); } diff --git a/Source/Plugins/BuilderModes/General/BuilderPlug.cs b/Source/Plugins/BuilderModes/General/BuilderPlug.cs index 2d205ffc..33f7f32e 100755 --- a/Source/Plugins/BuilderModes/General/BuilderPlug.cs +++ b/Source/Plugins/BuilderModes/General/BuilderPlug.cs @@ -349,11 +349,11 @@ namespace CodeImp.DoomBuilder.BuilderModes if(General.Map.UDMF) { // Fetch ZDoom fields - Vector2D offset = new Vector2D(s.Fields.GetValue("xpanningfloor", 0.0f), - s.Fields.GetValue("ypanningfloor", 0.0f)); - Vector2D scale = new Vector2D(s.Fields.GetValue("xscalefloor", 1.0f), - s.Fields.GetValue("yscalefloor", 1.0f)); - float rotate = s.Fields.GetValue("rotationfloor", 0.0f); + Vector2D offset = new Vector2D(s.Fields.GetValue("xpanningfloor", 0.0), + s.Fields.GetValue("ypanningfloor", 0.0)); + Vector2D scale = new Vector2D(s.Fields.GetValue("xscalefloor", 1.0), + s.Fields.GetValue("yscalefloor", 1.0)); + double rotate = s.Fields.GetValue("rotationfloor", 0.0); int color, light; bool absolute; @@ -409,11 +409,11 @@ namespace CodeImp.DoomBuilder.BuilderModes if(General.Map.UDMF) { // Fetch ZDoom fields - Vector2D offset = new Vector2D(s.Fields.GetValue("xpanningceiling", 0.0f), - s.Fields.GetValue("ypanningceiling", 0.0f)); - Vector2D scale = new Vector2D(s.Fields.GetValue("xscaleceiling", 1.0f), - s.Fields.GetValue("yscaleceiling", 1.0f)); - float rotate = s.Fields.GetValue("rotationceiling", 0.0f); + Vector2D offset = new Vector2D(s.Fields.GetValue("xpanningceiling", 0.0), + s.Fields.GetValue("ypanningceiling", 0.0)); + Vector2D scale = new Vector2D(s.Fields.GetValue("xscaleceiling", 1.0), + s.Fields.GetValue("yscaleceiling", 1.0)); + double rotate = s.Fields.GetValue("rotationceiling", 0.0); int color, light; bool absolute; diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs index 1904e9fb..63c00d08 100755 --- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs +++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs @@ -173,9 +173,9 @@ namespace CodeImp.DoomBuilder.BuilderModes double angle; if(GeometryType == VisualGeometryType.CEILING) - angle = Angle2D.DegToRad(level.sector.Fields.GetValue("rotationceiling", 0f)); + angle = Angle2D.DegToRad(level.sector.Fields.GetValue("rotationceiling", 0.0)); else - angle = Angle2D.DegToRad(level.sector.Fields.GetValue("rotationfloor", 0f)); + angle = Angle2D.DegToRad(level.sector.Fields.GetValue("rotationfloor", 0.0)); Vector2D v = new Vector2D(offsetx, offsety).GetRotated(angle); @@ -255,8 +255,8 @@ namespace CodeImp.DoomBuilder.BuilderModes // Check texture if(target.FloorTexture != (isFloor ? Sector.Sector.FloorTexture : Sector.Sector.CeilTexture)) return; - scaleX = target.Fields.GetValue("xscalefloor", 1.0f); - scaleY = target.Fields.GetValue("yscalefloor", 1.0f); + scaleX = target.Fields.GetValue("xscalefloor", 1.0); + scaleY = target.Fields.GetValue("yscalefloor", 1.0); } else { @@ -272,8 +272,8 @@ namespace CodeImp.DoomBuilder.BuilderModes // Check texture if(target.CeilTexture != (isFloor ? Sector.Sector.FloorTexture : Sector.Sector.CeilTexture)) return; - scaleX = target.Fields.GetValue("xscaleceiling", 1.0f); - scaleY = target.Fields.GetValue("yscaleceiling", 1.0f); + scaleX = target.Fields.GetValue("xscaleceiling", 1.0); + scaleY = target.Fields.GetValue("yscaleceiling", 1.0); } //find a linedef to align to @@ -336,13 +336,13 @@ namespace CodeImp.DoomBuilder.BuilderModes if(alignx) { if(Texture != null && Texture.IsImageLoaded) offset.x %= Texture.Width / scaleX; - UniFields.SetFloat(Sector.Sector.Fields, (isFloor ? "xpanningfloor" : "xpanningceiling"), (float)Math.Round(-offset.x), 0f); + UniFields.SetFloat(Sector.Sector.Fields, (isFloor ? "xpanningfloor" : "xpanningceiling"), Math.Round(-offset.x), 0.0); } if(aligny) { if(Texture != null && Texture.IsImageLoaded) offset.y %= Texture.Height / scaleY; - UniFields.SetFloat(Sector.Sector.Fields, (isFloor ? "ypanningfloor" : "ypanningceiling"), (float)Math.Round(offset.y), 0f); + UniFields.SetFloat(Sector.Sector.Fields, (isFloor ? "ypanningfloor" : "ypanningceiling"), Math.Round(offset.y), 0.0); } //update geometry @@ -866,9 +866,9 @@ namespace CodeImp.DoomBuilder.BuilderModes Point p = new Point(horizontal, vertical); double angle = Angle2D.RadToDeg(General.Map.VisualCamera.AngleXY); if(GeometryType == VisualGeometryType.CEILING) - angle += level.sector.Fields.GetValue("rotationceiling", 0f); + angle += level.sector.Fields.GetValue("rotationceiling", 0.0); else - angle += level.sector.Fields.GetValue("rotationfloor", 0f); + angle += level.sector.Fields.GetValue("rotationfloor", 0.0); angle = General.ClampAngle(angle); @@ -912,7 +912,7 @@ namespace CodeImp.DoomBuilder.BuilderModes } //mxd - public virtual void OnChangeTextureRotation(float angle) + public virtual void OnChangeTextureRotation(double angle) { if(!General.Map.UDMF) return; @@ -957,8 +957,8 @@ namespace CodeImp.DoomBuilder.BuilderModes // Adjust to camera view double angle = Angle2D.RadToDeg(General.Map.VisualCamera.AngleXY); - if(GeometryType == VisualGeometryType.CEILING) angle += level.sector.Fields.GetValue("rotationceiling", 0f); - else angle += level.sector.Fields.GetValue("rotationfloor", 0f); + if(GeometryType == VisualGeometryType.CEILING) angle += level.sector.Fields.GetValue("rotationceiling", 0.0); + else angle += level.sector.Fields.GetValue("rotationfloor", 0.0); angle = General.ClampAngle(angle); if(angle > 315 || angle < 46) diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySidedef.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySidedef.cs index d3a20803..b431021f 100755 --- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySidedef.cs +++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySidedef.cs @@ -139,7 +139,7 @@ namespace CodeImp.DoomBuilder.BuilderModes // From UDMF field else { - alpha = (byte)(Sidedef.Line.Fields.GetValue("alpha", 1.0f) * 255.0f); + alpha = (byte)(Sidedef.Line.Fields.GetValue("alpha", 1.0) * 255.0); if(alpha == 255 && Sidedef.Line.IsFlagSet("transparent")) alpha = 64; //mxd if(canhavealpha && Sidedef.Line.Fields.GetValue("renderstyle", "translucent") == "add") @@ -530,17 +530,17 @@ namespace CodeImp.DoomBuilder.BuilderModes } // biwa - protected static float GetNewTexutreOffset(float oldValue, float offset, float textureSize) + protected static double GetNewTexutreOffset(double oldValue, double offset, double textureSize) { return GetRoundedTextureOffset(oldValue, offset, 1.0f, textureSize); } //mxd - protected static float GetRoundedTextureOffset(float oldValue, float offset, float scale, float textureSize) + protected static double GetRoundedTextureOffset(double oldValue, double offset, double scale, double textureSize) { if(offset == 0f) return oldValue; - float scaledOffset = offset * Math.Abs(scale); - float result = (float)Math.Round(oldValue + scaledOffset); + double scaledOffset = offset * Math.Abs(scale); + double result = Math.Round(oldValue + scaledOffset); if(textureSize > 0) result %= textureSize; if(result == oldValue) result += (scaledOffset < 0 ? -1 : 1); return result; @@ -1677,25 +1677,25 @@ namespace CodeImp.DoomBuilder.BuilderModes throw new Exception("OnChangeTextureScale(): Got unknown GeometryType: " + GeometryType); } - float scaleX = Sidedef.Fields.GetValue(keyX, 1.0f); - float scaleY = Sidedef.Fields.GetValue(keyY, 1.0f); + double scaleX = Sidedef.Fields.GetValue(keyX, 1.0); + double scaleY = Sidedef.Fields.GetValue(keyY, 1.0); Sidedef.Fields.BeforeFieldsChange(); if(incrementX != 0) { - float pix = (int)Math.Round(Texture.Width * scaleX) - incrementX; - float newscaleX = (float)Math.Round(pix / Texture.Width, 3); + double pix = (int)Math.Round(Texture.Width * scaleX) - incrementX; + double newscaleX = Math.Round(pix / Texture.Width, 3); scaleX = (newscaleX == 0 ? scaleX * -1 : newscaleX); - UniFields.SetFloat(Sidedef.Fields, keyX, scaleX, 1.0f); + UniFields.SetFloat(Sidedef.Fields, keyX, scaleX, 1.0); } if(incrementY != 0) { - float pix = (int)Math.Round(Texture.Height * scaleY) - incrementY; - float newscaleY = (float)Math.Round(pix / Texture.Height, 3); + double pix = (int)Math.Round(Texture.Height * scaleY) - incrementY; + double newscaleY = Math.Round(pix / Texture.Height, 3); scaleY = (newscaleY == 0 ? scaleY * -1 : newscaleY); - UniFields.SetFloat(Sidedef.Fields, keyY, scaleY, 1.0f); + UniFields.SetFloat(Sidedef.Fields, keyY, scaleY, 1.0); } // Update geometry diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs index 1f272906..029a8728 100755 --- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs +++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs @@ -3669,12 +3669,12 @@ namespace CodeImp.DoomBuilder.BuilderModes else if(obj is VisualFloor) { VisualFloor vf = (VisualFloor)obj; - vf.OnChangeTextureRotation(General.ClampAngle(vf.GetControlSector().Fields.GetValue("rotationfloor", 0.0f) + textureangleincrement)); + vf.OnChangeTextureRotation(General.ClampAngle(vf.GetControlSector().Fields.GetValue("rotationfloor", 0.0) + textureangleincrement)); } else if(obj is VisualCeiling) { VisualCeiling vc = (VisualCeiling)obj; - vc.OnChangeTextureRotation(General.ClampAngle(vc.GetControlSector().Fields.GetValue("rotationceiling", 0.0f) + textureangleincrement)); + vc.OnChangeTextureRotation(General.ClampAngle(vc.GetControlSector().Fields.GetValue("rotationceiling", 0.0) + textureangleincrement)); } } @@ -4373,17 +4373,17 @@ namespace CodeImp.DoomBuilder.BuilderModes switch(start.GeometryType) { case VisualGeometryType.WALL_UPPER: - first.scaleX = start.Sidedef.Fields.GetValue("scalex_top", 1.0f); - first.scaleY = start.Sidedef.Fields.GetValue("scaley_top", 1.0f); + first.scaleX = start.Sidedef.Fields.GetValue("scalex_top", 1.0); + first.scaleY = start.Sidedef.Fields.GetValue("scaley_top", 1.0); break; case VisualGeometryType.WALL_MIDDLE: case VisualGeometryType.WALL_MIDDLE_3D: - first.scaleX = first.controlSide.Fields.GetValue("scalex_mid", 1.0f); - first.scaleY = first.controlSide.Fields.GetValue("scaley_mid", 1.0f); + first.scaleX = first.controlSide.Fields.GetValue("scalex_mid", 1.0); + first.scaleY = first.controlSide.Fields.GetValue("scaley_mid", 1.0); break; case VisualGeometryType.WALL_LOWER: - first.scaleX = start.Sidedef.Fields.GetValue("scalex_bottom", 1.0f); - first.scaleY = start.Sidedef.Fields.GetValue("scaley_bottom", 1.0f); + first.scaleX = start.Sidedef.Fields.GetValue("scalex_bottom", 1.0); + first.scaleY = start.Sidedef.Fields.GetValue("scaley_bottom", 1.0); break; } @@ -4396,18 +4396,18 @@ namespace CodeImp.DoomBuilder.BuilderModes switch(start.GeometryType) { case VisualGeometryType.WALL_UPPER: - ystartalign += Tools.GetSidedefTopOffsetY(start.Sidedef, start.Sidedef.Fields.GetValue("offsety_top", 0.0f), worldpanning ? 1.0f : first.scaleY / scaley, false);//mxd + ystartalign += Tools.GetSidedefTopOffsetY(start.Sidedef, start.Sidedef.Fields.GetValue("offsety_top", 0.0), worldpanning ? 1.0 : first.scaleY / scaley, false);//mxd break; case VisualGeometryType.WALL_MIDDLE: - ystartalign += Tools.GetSidedefMiddleOffsetY(start.Sidedef, start.Sidedef.Fields.GetValue("offsety_mid", 0.0f), worldpanning ? 1.0f : first.scaleY / scaley, false);//mxd + ystartalign += Tools.GetSidedefMiddleOffsetY(start.Sidedef, start.Sidedef.Fields.GetValue("offsety_mid", 0.0), worldpanning ? 1.0 : first.scaleY / scaley, false);//mxd break; case VisualGeometryType.WALL_MIDDLE_3D: //mxd. 3d-floors are not affected by Lower/Upper unpegged flags ystartalign += first.controlSide.OffsetY - (start.Sidedef.Sector.CeilHeight - first.ceilingHeight); - ystartalign += start.Sidedef.Fields.GetValue("offsety_mid", 0.0f); - ystartalign += first.controlSide.Fields.GetValue("offsety_mid", 0.0f); + ystartalign += start.Sidedef.Fields.GetValue("offsety_mid", 0.0); + ystartalign += first.controlSide.Fields.GetValue("offsety_mid", 0.0); break; case VisualGeometryType.WALL_LOWER: - ystartalign += Tools.GetSidedefBottomOffsetY(start.Sidedef, start.Sidedef.Fields.GetValue("offsety_bottom", 0.0f), worldpanning ? 1.0f : first.scaleY / scaley, false);//mxd + ystartalign += Tools.GetSidedefBottomOffsetY(start.Sidedef, start.Sidedef.Fields.GetValue("offsety_bottom", 0.0), worldpanning ? 1.0 : first.scaleY / scaley, false);//mxd break; } @@ -4415,18 +4415,18 @@ namespace CodeImp.DoomBuilder.BuilderModes switch(start.GeometryType) { case VisualGeometryType.WALL_UPPER: - first.offsetx += start.Sidedef.Fields.GetValue("offsetx_top", 0.0f); + first.offsetx += start.Sidedef.Fields.GetValue("offsetx_top", 0.0); break; case VisualGeometryType.WALL_MIDDLE: - first.offsetx += start.Sidedef.Fields.GetValue("offsetx_mid", 0.0f); + first.offsetx += start.Sidedef.Fields.GetValue("offsetx_mid", 0.0); break; case VisualGeometryType.WALL_MIDDLE_3D: //mxd. Yup, 4 sets of texture offsets are used - first.offsetx += start.Sidedef.Fields.GetValue("offsetx_mid", 0.0f); + first.offsetx += start.Sidedef.Fields.GetValue("offsetx_mid", 0.0); first.offsetx += first.controlSide.OffsetX; - first.offsetx += first.controlSide.Fields.GetValue("offsetx_mid", 0.0f); + first.offsetx += first.controlSide.Fields.GetValue("offsetx_mid", 0.0); break; case VisualGeometryType.WALL_LOWER: - first.offsetx += start.Sidedef.Fields.GetValue("offsetx_bottom", 0.0f); + first.offsetx += start.Sidedef.Fields.GetValue("offsetx_bottom", 0.0); break; } first.forward = true; @@ -4513,25 +4513,25 @@ namespace CodeImp.DoomBuilder.BuilderModes { ImageData tex = General.Map.Data.GetTextureImage(j.sidedef.LongHighTexture); int texwidth = (tex != null && tex.IsImageLoaded) ? tex.Width : 1; - j.sidedef.Fields["offsetx_top"] = new UniValue(UniversalType.Float, (float)Math.Round(offset % vwidth, General.Map.FormatInterface.VertexDecimals)); + j.sidedef.Fields["offsetx_top"] = new UniValue(UniversalType.Float, Math.Round(offset % vwidth, General.Map.FormatInterface.VertexDecimals)); } if(matchbottom) { ImageData tex = General.Map.Data.GetTextureImage(j.sidedef.LongLowTexture); int texwidth = (tex != null && tex.IsImageLoaded) ? tex.Width : 1; - j.sidedef.Fields["offsetx_bottom"] = new UniValue(UniversalType.Float, (float)Math.Round(offset % vwidth, General.Map.FormatInterface.VertexDecimals)); + j.sidedef.Fields["offsetx_bottom"] = new UniValue(UniversalType.Float, Math.Round(offset % vwidth, General.Map.FormatInterface.VertexDecimals)); } if(matchmid) { if(j.sidedef.Index != j.controlSide.Index) //mxd. if it's a part of 3d-floor { offset -= j.controlSide.OffsetX; - offset -= j.controlSide.Fields.GetValue("offsetx_mid", 0.0f); + offset -= j.controlSide.Fields.GetValue("offsetx_mid", 0.0); } ImageData tex = General.Map.Data.GetTextureImage(j.controlSide.LongMiddleTexture); int texwidth = (tex != null && tex.IsImageLoaded) ? tex.Width : 1; - j.sidedef.Fields["offsetx_mid"] = new UniValue(UniversalType.Float, (float)Math.Round(offset % vwidth, General.Map.FormatInterface.VertexDecimals)); + j.sidedef.Fields["offsetx_mid"] = new UniValue(UniversalType.Float, Math.Round(offset % vwidth, General.Map.FormatInterface.VertexDecimals)); } } @@ -4551,7 +4551,7 @@ namespace CodeImp.DoomBuilder.BuilderModes double scale = !worldpanning ? j.scaleY / scaley : 1.0f; j.sidedef.Fields["offsety_top"] = new UniValue(UniversalType.Float, - (float)Math.Round(Tools.GetSidedefTopOffsetY(j.sidedef, offset, scale, true) % vheight, General.Map.FormatInterface.VertexDecimals)); //mxd + Math.Round(Tools.GetSidedefTopOffsetY(j.sidedef, offset, scale, true) % vheight, General.Map.FormatInterface.VertexDecimals)); //mxd } if (matchbottom) @@ -4561,7 +4561,7 @@ namespace CodeImp.DoomBuilder.BuilderModes double scale = !worldpanning ? j.scaleY / scaley : 1.0f; j.sidedef.Fields["offsety_bottom"] = new UniValue(UniversalType.Float, - (float)Math.Round(Tools.GetSidedefBottomOffsetY(j.sidedef, offset, scale, true) % vheight, General.Map.FormatInterface.VertexDecimals)); //mxd + Math.Round(Tools.GetSidedefBottomOffsetY(j.sidedef, offset, scale, true) % vheight, General.Map.FormatInterface.VertexDecimals)); //mxd } if(matchmid) { @@ -4569,12 +4569,12 @@ namespace CodeImp.DoomBuilder.BuilderModes if(j.sidedef.Index != j.controlSide.Index) { offset -= j.controlSide.OffsetY; - offset -= j.controlSide.Fields.GetValue("offsety_mid", 0.0f); + offset -= j.controlSide.Fields.GetValue("offsety_mid", 0.0); ImageData tex = General.Map.Data.GetTextureImage(j.controlSide.LongMiddleTexture); int texheight = (tex != null && tex.IsImageLoaded) ? tex.Height : 1; j.sidedef.Fields["offsety_mid"] = new UniValue(UniversalType.Float, - (float)Math.Round(offset % vheight, General.Map.FormatInterface.VertexDecimals)); + Math.Round(offset % vheight, General.Map.FormatInterface.VertexDecimals)); } else { @@ -4594,7 +4594,7 @@ namespace CodeImp.DoomBuilder.BuilderModes { //mxd. This should be doublesided non-wrapped line. Find the nearset aligned position double curoffset = UniFields.GetFloat(j.sidedef.Fields, "offsety_mid") + j.sidedef.OffsetY; - offset += vheight * (float)Math.Round(curoffset / vheight - 0.5f * Math.Sign(j.scaleY)); + offset += vheight * Math.Round(curoffset / vheight - 0.5f * Math.Sign(j.scaleY)); // Make sure the surface stays between floor and ceiling if(j.sidedef.Line.IsFlagSet(General.Map.Config.LowerUnpeggedFlag) || Math.Sign(j.scaleY) == -1) @@ -4650,7 +4650,7 @@ namespace CodeImp.DoomBuilder.BuilderModes // Apply alignment if(alignx) { - float offset; + double offset; if(!worldpanning) { @@ -4668,27 +4668,27 @@ namespace CodeImp.DoomBuilder.BuilderModes ImageData tex = General.Map.Data.GetTextureImage(j.sidedef.LongHighTexture); int texwidth = (tex != null && tex.IsImageLoaded) ? tex.Width : 1; j.sidedef.Fields["offsetx_top"] = new UniValue(UniversalType.Float, - (float)Math.Round(offset % vwidth, General.Map.FormatInterface.VertexDecimals)); + Math.Round(offset % vwidth, General.Map.FormatInterface.VertexDecimals)); } if(matchbottom) { ImageData tex = General.Map.Data.GetTextureImage(j.sidedef.LongLowTexture); int texwidth = (tex != null && tex.IsImageLoaded) ? tex.Width : 1; j.sidedef.Fields["offsetx_bottom"] = new UniValue(UniversalType.Float, - (float)Math.Round(offset % vwidth, General.Map.FormatInterface.VertexDecimals)); + Math.Round(offset % vwidth, General.Map.FormatInterface.VertexDecimals)); } if(matchmid) { if(j.sidedef.Index != j.controlSide.Index) //mxd { offset -= j.controlSide.OffsetX; - offset -= j.controlSide.Fields.GetValue("offsetx_mid", 0.0f); + offset -= j.controlSide.Fields.GetValue("offsetx_mid", 0.0); } ImageData tex = General.Map.Data.GetTextureImage(j.controlSide.LongMiddleTexture); int texwidth = (tex != null && tex.IsImageLoaded) ? tex.Width : 1; j.sidedef.Fields["offsetx_mid"] = new UniValue(UniversalType.Float, - (float)Math.Round(offset % vwidth, General.Map.FormatInterface.VertexDecimals)); + Math.Round(offset % vwidth, General.Map.FormatInterface.VertexDecimals)); } } @@ -4721,7 +4721,7 @@ namespace CodeImp.DoomBuilder.BuilderModes if(j.sidedef.Index != j.controlSide.Index) { offset -= j.controlSide.OffsetY; - offset -= j.controlSide.Fields.GetValue("offsety_mid", 0.0f); + offset -= j.controlSide.Fields.GetValue("offsety_mid", 0.0); ImageData tex = General.Map.Data.GetTextureImage(j.controlSide.LongMiddleTexture); int texheight = (tex != null && tex.IsImageLoaded) ? tex.Height : 1; diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualThing.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualThing.cs index 2c5ff0f3..bfc430e4 100755 --- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualThing.cs +++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualThing.cs @@ -127,7 +127,7 @@ namespace CodeImp.DoomBuilder.BuilderModes if((renderstyle == "add" || renderstyle == "translucent" || renderstyle == "subtract" || renderstyle.EndsWith("stencil")) && Thing.Fields.ContainsKey("alpha")) { - alpha = (byte)(General.Clamp(Thing.Fields.GetValue("alpha", info.Alpha), 0f, 1f) * 255); + alpha = (byte)(General.Clamp(Thing.Fields.GetValue("alpha", info.Alpha), 0.0, 1.0) * 255.0); } if (renderstyle.EndsWith("stencil")) diff --git a/Source/Plugins/BuilderModes/VisualModes/EffectGlowingFlat.cs b/Source/Plugins/BuilderModes/VisualModes/EffectGlowingFlat.cs index 41eb8f8f..99fca7b3 100755 --- a/Source/Plugins/BuilderModes/VisualModes/EffectGlowingFlat.cs +++ b/Source/Plugins/BuilderModes/VisualModes/EffectGlowingFlat.cs @@ -84,7 +84,7 @@ namespace CodeImp.DoomBuilder.BuilderModes // Avoid black glows if(glowcolor > 0) { - float glowheight = data.Sector.Fields.GetValue((floor ? "floorglowheight" : "ceilingglowheight"), 0f); + double glowheight = data.Sector.Fields.GetValue((floor ? "floorglowheight" : "ceilingglowheight"), 0.0); if(glowheight > 0f) { // Create glow data diff --git a/Source/Plugins/BuilderModes/VisualModes/VisualCeiling.cs b/Source/Plugins/BuilderModes/VisualModes/VisualCeiling.cs index 141112d1..fa4b88de 100755 --- a/Source/Plugins/BuilderModes/VisualModes/VisualCeiling.cs +++ b/Source/Plugins/BuilderModes/VisualModes/VisualCeiling.cs @@ -78,11 +78,11 @@ namespace CodeImp.DoomBuilder.BuilderModes base.Setup(level, extrafloor); // Fetch ZDoom fields - double rotate = Angle2D.DegToRad(s.Fields.GetValue("rotationceiling", 0.0f)); - Vector2D offset = new Vector2D(s.Fields.GetValue("xpanningceiling", 0.0f), - s.Fields.GetValue("ypanningceiling", 0.0f)); - Vector2D scale = new Vector2D(s.Fields.GetValue("xscaleceiling", 1.0f), - s.Fields.GetValue("yscaleceiling", 1.0f)); + double rotate = Angle2D.DegToRad(s.Fields.GetValue("rotationceiling", 0.0)); + Vector2D offset = new Vector2D(s.Fields.GetValue("xpanningceiling", 0.0), + s.Fields.GetValue("ypanningceiling", 0.0)); + Vector2D scale = new Vector2D(s.Fields.GetValue("xscaleceiling", 1.0), + s.Fields.GetValue("yscaleceiling", 1.0)); //Load ceiling texture if(s.LongCeilTexture != MapSet.EmptyLongName) @@ -253,7 +253,7 @@ namespace CodeImp.DoomBuilder.BuilderModes } //mxd - public override void OnChangeTextureRotation(float angle) + public override void OnChangeTextureRotation(double angle) { // Only do this when not done yet in this call // Because we may be able to select the same 3D floor multiple times through multiple sectors @@ -268,8 +268,8 @@ namespace CodeImp.DoomBuilder.BuilderModes // Return texture coordinates protected override Point GetTextureOffset() { - return new Point { X = (int)Sector.Sector.Fields.GetValue("xpanningceiling", 0.0f), - Y = (int)Sector.Sector.Fields.GetValue("ypanningceiling", 0.0f) }; + return new Point { X = (int)Sector.Sector.Fields.GetValue("xpanningceiling", 0.0), + Y = (int)Sector.Sector.Fields.GetValue("ypanningceiling", 0.0) }; } //mxd @@ -291,8 +291,8 @@ namespace CodeImp.DoomBuilder.BuilderModes //mxd Sector s = GetControlSector(); s.Fields.BeforeFieldsChange(); - float nx = (s.Fields.GetValue("xpanningceiling", 0.0f) + offsetx) % (Texture.ScaledWidth / s.Fields.GetValue("xscaleceiling", 1.0f)); - float ny = (s.Fields.GetValue("ypanningceiling", 0.0f) + offsety) % (Texture.ScaledHeight / s.Fields.GetValue("yscaleceiling", 1.0f)); + double nx = (s.Fields.GetValue("xpanningceiling", 0.0) + offsetx) % (Texture.ScaledWidth / s.Fields.GetValue("xscaleceiling", 1.0)); + double ny = (s.Fields.GetValue("ypanningceiling", 0.0) + offsety) % (Texture.ScaledHeight / s.Fields.GetValue("yscaleceiling", 1.0)); s.Fields["xpanningceiling"] = new UniValue(UniversalType.Float, nx); s.Fields["ypanningceiling"] = new UniValue(UniversalType.Float, ny); s.UpdateNeeded = true; @@ -305,23 +305,23 @@ namespace CodeImp.DoomBuilder.BuilderModes { if(Texture == null || !Texture.IsImageLoaded) return; Sector s = GetControlSector(); - float scaleX = s.Fields.GetValue("xscaleceiling", 1.0f); - float scaleY = s.Fields.GetValue("yscaleceiling", 1.0f); + double scaleX = s.Fields.GetValue("xscaleceiling", 1.0); + double scaleY = s.Fields.GetValue("yscaleceiling", 1.0); s.Fields.BeforeFieldsChange(); if(incrementX != 0) { - float pix = (int)Math.Round(Texture.Width * scaleX) - incrementX; - float newscaleX = (float)Math.Round(pix / Texture.Width, 3); + double pix = (int)Math.Round(Texture.Width * scaleX) - incrementX; + double newscaleX = Math.Round(pix / Texture.Width, 3); scaleX = (newscaleX == 0 ? scaleX * -1 : newscaleX); UniFields.SetFloat(s.Fields, "xscaleceiling", scaleX, 1.0f); } if(incrementY != 0) { - float pix = (int)Math.Round(Texture.Height * scaleY) - incrementY; - float newscaleY = (float)Math.Round(pix / Texture.Height, 3); + double pix = (int)Math.Round(Texture.Height * scaleY) - incrementY; + double newscaleY = Math.Round(pix / Texture.Height, 3); scaleY = (newscaleY == 0 ? scaleY * -1 : newscaleY); UniFields.SetFloat(s.Fields, "yscaleceiling", scaleY, 1.0f); } @@ -520,9 +520,9 @@ namespace CodeImp.DoomBuilder.BuilderModes int imageHeight = Texture.GetAlphaTestHeight(); // Fetch ZDoom fields - double rotate = Angle2D.DegToRad(level.sector.Fields.GetValue("rotationceiling", 0.0f)); - Vector2D offset = new Vector2D(level.sector.Fields.GetValue("xpanningceiling", 0.0f), level.sector.Fields.GetValue("ypanningceiling", 0.0f)); - Vector2D scale = new Vector2D(level.sector.Fields.GetValue("xscaleceiling", 1.0f), level.sector.Fields.GetValue("yscaleceiling", 1.0f)); + double rotate = Angle2D.DegToRad(level.sector.Fields.GetValue("rotationceiling", 0.0)); + Vector2D offset = new Vector2D(level.sector.Fields.GetValue("xpanningceiling", 0.0), level.sector.Fields.GetValue("ypanningceiling", 0.0)); + Vector2D scale = new Vector2D(level.sector.Fields.GetValue("xscaleceiling", 1.0), level.sector.Fields.GetValue("yscaleceiling", 1.0)); Vector2D texscale = new Vector2D(1.0f / Texture.ScaledWidth, 1.0f / Texture.ScaledHeight); // Texture coordinates diff --git a/Source/Plugins/BuilderModes/VisualModes/VisualFloor.cs b/Source/Plugins/BuilderModes/VisualModes/VisualFloor.cs index 7e5e4e5d..7c622869 100755 --- a/Source/Plugins/BuilderModes/VisualModes/VisualFloor.cs +++ b/Source/Plugins/BuilderModes/VisualModes/VisualFloor.cs @@ -78,11 +78,11 @@ namespace CodeImp.DoomBuilder.BuilderModes base.Setup(level, extrafloor); // Fetch ZDoom fields - double rotate = Angle2D.DegToRad(s.Fields.GetValue("rotationfloor", 0.0f)); - Vector2D offset = new Vector2D(s.Fields.GetValue("xpanningfloor", 0.0f), - s.Fields.GetValue("ypanningfloor", 0.0f)); - Vector2D scale = new Vector2D(s.Fields.GetValue("xscalefloor", 1.0f), - s.Fields.GetValue("yscalefloor", 1.0f)); + double rotate = Angle2D.DegToRad(s.Fields.GetValue("rotationfloor", 0.0)); + Vector2D offset = new Vector2D(s.Fields.GetValue("xpanningfloor", 0.0), + s.Fields.GetValue("ypanningfloor", 0.0)); + Vector2D scale = new Vector2D(s.Fields.GetValue("xscalefloor", 1.0), + s.Fields.GetValue("yscalefloor", 1.0)); //Load floor texture if(s.LongFloorTexture != MapSet.EmptyLongName) @@ -213,7 +213,7 @@ namespace CodeImp.DoomBuilder.BuilderModes } //mxd - public override void OnChangeTextureRotation(float angle) + public override void OnChangeTextureRotation(double angle) { // Only do this when not done yet in this call // Because we may be able to select the same 3D floor multiple times through multiple sectors @@ -228,8 +228,8 @@ namespace CodeImp.DoomBuilder.BuilderModes // Return texture coordinates protected override Point GetTextureOffset() { - return new Point { X = (int)Sector.Sector.Fields.GetValue("xpanningfloor", 0.0f), - Y = (int)Sector.Sector.Fields.GetValue("ypanningfloor", 0.0f) }; + return new Point { X = (int)Sector.Sector.Fields.GetValue("xpanningfloor", 0.0), + Y = (int)Sector.Sector.Fields.GetValue("ypanningfloor", 0.0) }; } //mxd @@ -251,8 +251,8 @@ namespace CodeImp.DoomBuilder.BuilderModes //mxd Sector s = GetControlSector(); s.Fields.BeforeFieldsChange(); - float nx = (s.Fields.GetValue("xpanningfloor", 0.0f) + offsetx) % (Texture.ScaledWidth / s.Fields.GetValue("xscalefloor", 1.0f)); - float ny = (s.Fields.GetValue("ypanningfloor", 0.0f) + offsety) % (Texture.ScaledHeight / s.Fields.GetValue("yscalefloor", 1.0f)); + double nx = (s.Fields.GetValue("xpanningfloor", 0.0) + offsetx) % (Texture.ScaledWidth / s.Fields.GetValue("xscalefloor", 1.0)); + double ny = (s.Fields.GetValue("ypanningfloor", 0.0) + offsety) % (Texture.ScaledHeight / s.Fields.GetValue("yscalefloor", 1.0)); s.Fields["xpanningfloor"] = new UniValue(UniversalType.Float, nx); s.Fields["ypanningfloor"] = new UniValue(UniversalType.Float, ny); s.UpdateNeeded = true; @@ -265,25 +265,25 @@ namespace CodeImp.DoomBuilder.BuilderModes { if(Texture == null || !Texture.IsImageLoaded) return; Sector s = GetControlSector(); - float scaleX = s.Fields.GetValue("xscalefloor", 1.0f); - float scaleY = s.Fields.GetValue("yscalefloor", 1.0f); + double scaleX = s.Fields.GetValue("xscalefloor", 1.0); + double scaleY = s.Fields.GetValue("yscalefloor", 1.0); s.Fields.BeforeFieldsChange(); if(incrementX != 0) { - float pix = (int)Math.Round(Texture.Width * scaleX) - incrementX; - float newscaleX = (float)Math.Round(pix / Texture.Width, 3); + double pix = (int)Math.Round(Texture.Width * scaleX) - incrementX; + double newscaleX = (float)Math.Round(pix / Texture.Width, 3); scaleX = (newscaleX == 0 ? scaleX * -1 : newscaleX); - UniFields.SetFloat(s.Fields, "xscalefloor", scaleX, 1.0f); + UniFields.SetFloat(s.Fields, "xscalefloor", scaleX, 1.0); } if(incrementY != 0) { - float pix = (int)Math.Round(Texture.Height * scaleY) - incrementY; - float newscaleY = (float)Math.Round(pix / Texture.Height, 3); + double pix = (int)Math.Round(Texture.Height * scaleY) - incrementY; + double newscaleY = (float)Math.Round(pix / Texture.Height, 3); scaleY = (newscaleY == 0 ? scaleY * -1 : newscaleY); - UniFields.SetFloat(s.Fields, "yscalefloor", scaleY, 1.0f); + UniFields.SetFloat(s.Fields, "yscalefloor", scaleY, 1.0); } mode.SetActionResult("Floor scale changed to " + scaleX.ToString("F03", CultureInfo.InvariantCulture) + ", " + scaleY.ToString("F03", CultureInfo.InvariantCulture) + " (" + (int)Math.Round(Texture.Width / scaleX) + " x " + (int)Math.Round(Texture.Height / scaleY) + ")."); @@ -452,10 +452,10 @@ namespace CodeImp.DoomBuilder.BuilderModes int imageHeight = Texture.GetAlphaTestHeight(); // Fetch ZDoom fields - double rotate = Angle2D.DegToRad(level.sector.Fields.GetValue("rotationfloor", 0.0f)); - Vector2D offset = new Vector2D(level.sector.Fields.GetValue("xpanningfloor", 0.0f), level.sector.Fields.GetValue("ypanningfloor", 0.0f)); - Vector2D scale = new Vector2D(level.sector.Fields.GetValue("xscalefloor", 1.0f), level.sector.Fields.GetValue("yscalefloor", 1.0f)); - Vector2D texscale = new Vector2D(1.0f / Texture.ScaledWidth, 1.0f / Texture.ScaledHeight); + double rotate = Angle2D.DegToRad(level.sector.Fields.GetValue("rotationfloor", 0.0)); + Vector2D offset = new Vector2D(level.sector.Fields.GetValue("xpanningfloor", 0.0), level.sector.Fields.GetValue("ypanningfloor", 0.0)); + Vector2D scale = new Vector2D(level.sector.Fields.GetValue("xscalefloor", 1.0), level.sector.Fields.GetValue("yscalefloor", 1.0)); + Vector2D texscale = new Vector2D(1.0 / Texture.ScaledWidth, 1.0 / Texture.ScaledHeight); // Texture coordinates Vector2D o = pickintersect; diff --git a/Source/Plugins/BuilderModes/VisualModes/VisualLower.cs b/Source/Plugins/BuilderModes/VisualModes/VisualLower.cs index 6705ec89..4facc0d4 100755 --- a/Source/Plugins/BuilderModes/VisualModes/VisualLower.cs +++ b/Source/Plugins/BuilderModes/VisualModes/VisualLower.cs @@ -97,11 +97,11 @@ namespace CodeImp.DoomBuilder.BuilderModes bool lightabsolute; GetLightValue(out lightvalue, out lightabsolute); - Vector2D tscale = new Vector2D(Sidedef.Fields.GetValue("scalex_bottom", 1.0f), - Sidedef.Fields.GetValue("scaley_bottom", 1.0f)); + Vector2D tscale = new Vector2D(Sidedef.Fields.GetValue("scalex_bottom", 1.0), + Sidedef.Fields.GetValue("scaley_bottom", 1.0)); Vector2D tscaleAbs = new Vector2D(Math.Abs(tscale.x), Math.Abs(tscale.y)); - Vector2D toffset = new Vector2D(Sidedef.Fields.GetValue("offsetx_bottom", 0.0f), - Sidedef.Fields.GetValue("offsety_bottom", 0.0f)); + Vector2D toffset = new Vector2D(Sidedef.Fields.GetValue("offsetx_bottom", 0.0), + Sidedef.Fields.GetValue("offsety_bottom", 0.0)); // Texture given? if(Sidedef.LongLowTexture != MapSet.EmptyLongName) @@ -271,13 +271,13 @@ namespace CodeImp.DoomBuilder.BuilderModes { Sidedef.Fields.BeforeFieldsChange(); bool worldpanning = this.Texture.WorldPanning || General.Map.Data.MapInfo.ForceWorldPanning; - float oldx = Sidedef.Fields.GetValue("offsetx_bottom", 0.0f); - float oldy = Sidedef.Fields.GetValue("offsety_bottom", 0.0f); - float scalex = Sidedef.Fields.GetValue("scalex_bottom", 1.0f); - float scaley = Sidedef.Fields.GetValue("scaley_bottom", 1.0f); + double oldx = Sidedef.Fields.GetValue("offsetx_bottom", 0.0); + double oldy = Sidedef.Fields.GetValue("offsety_bottom", 0.0); + double scalex = Sidedef.Fields.GetValue("scalex_bottom", 1.0); + double scaley = Sidedef.Fields.GetValue("scaley_bottom", 1.0); bool textureloaded = (Texture != null && Texture.IsImageLoaded); //mxd - float width = textureloaded ? (worldpanning ? this.Texture.ScaledWidth / scalex : this.Texture.Width) : -1; // biwa - float height = textureloaded ? (worldpanning ? this.Texture.ScaledHeight / scaley : this.Texture.Height) : -1; // biwa + double width = textureloaded ? (worldpanning ? this.Texture.ScaledWidth / scalex : this.Texture.Width) : -1; // biwa + double height = textureloaded ? (worldpanning ? this.Texture.ScaledHeight / scaley : this.Texture.Height) : -1; // biwa Sidedef.Fields["offsetx_bottom"] = new UniValue(UniversalType.Float, GetNewTexutreOffset(oldx, offsetx, width)); //mxd // biwa Sidedef.Fields["offsety_bottom"] = new UniValue(UniversalType.Float, GetNewTexutreOffset(oldy, offsety, height)); //mxd // biwa @@ -285,8 +285,8 @@ namespace CodeImp.DoomBuilder.BuilderModes protected override Point GetTextureOffset() { - float oldx = Sidedef.Fields.GetValue("offsetx_bottom", 0.0f); - float oldy = Sidedef.Fields.GetValue("offsety_bottom", 0.0f); + double oldx = Sidedef.Fields.GetValue("offsetx_bottom", 0.0); + double oldy = Sidedef.Fields.GetValue("offsety_bottom", 0.0); return new Point((int)oldx, (int)oldy); } diff --git a/Source/Plugins/BuilderModes/VisualModes/VisualMiddle3D.cs b/Source/Plugins/BuilderModes/VisualModes/VisualMiddle3D.cs index 13e3df8c..9a3c99b9 100755 --- a/Source/Plugins/BuilderModes/VisualModes/VisualMiddle3D.cs +++ b/Source/Plugins/BuilderModes/VisualModes/VisualMiddle3D.cs @@ -81,13 +81,13 @@ namespace CodeImp.DoomBuilder.BuilderModes bool lightabsolute; GetLightValue(out lightvalue, out lightabsolute); - Vector2D tscale = new Vector2D(sourceside.Fields.GetValue("scalex_mid", 1.0f), - sourceside.Fields.GetValue("scaley_mid", 1.0f)); + Vector2D tscale = new Vector2D(sourceside.Fields.GetValue("scalex_mid", 1.0), + sourceside.Fields.GetValue("scaley_mid", 1.0)); Vector2D tscaleAbs = new Vector2D(Math.Abs(tscale.x), Math.Abs(tscale.y)); - Vector2D toffset1 = new Vector2D(Sidedef.Fields.GetValue("offsetx_mid", 0.0f), - Sidedef.Fields.GetValue("offsety_mid", 0.0f)); - Vector2D toffset2 = new Vector2D(sourceside.Fields.GetValue("offsetx_mid", 0.0f), - sourceside.Fields.GetValue("offsety_mid", 0.0f)); + Vector2D toffset1 = new Vector2D(Sidedef.Fields.GetValue("offsetx_mid", 0.0), + Sidedef.Fields.GetValue("offsety_mid", 0.0)); + Vector2D toffset2 = new Vector2D(sourceside.Fields.GetValue("offsetx_mid", 0.0), + sourceside.Fields.GetValue("offsety_mid", 0.0)); // Left and right vertices for this sidedef if(Sidedef.IsFront) @@ -415,13 +415,13 @@ namespace CodeImp.DoomBuilder.BuilderModes { Sidedef.Fields.BeforeFieldsChange(); bool worldpanning = this.Texture.WorldPanning || General.Map.Data.MapInfo.ForceWorldPanning; - float oldx = Sidedef.Fields.GetValue("offsetx_mid", 0.0f); - float oldy = Sidedef.Fields.GetValue("offsety_mid", 0.0f); - float scalex = extrafloor.Linedef.Front.Fields.GetValue("scalex_mid", 1.0f); - float scaley = extrafloor.Linedef.Front.Fields.GetValue("scaley_mid", 1.0f); + double oldx = Sidedef.Fields.GetValue("offsetx_mid", 0.0); + double oldy = Sidedef.Fields.GetValue("offsety_mid", 0.0); + double scalex = extrafloor.Linedef.Front.Fields.GetValue("scalex_mid", 1.0); + double scaley = extrafloor.Linedef.Front.Fields.GetValue("scaley_mid", 1.0); bool textureloaded = (Texture != null && Texture.IsImageLoaded); //mxd - float width = textureloaded ? (worldpanning ? this.Texture.ScaledWidth / scalex : this.Texture.Width) : -1; // biwa - float height = textureloaded ? (worldpanning ? this.Texture.ScaledHeight / scaley : this.Texture.Height) : -1; // biwa + double width = textureloaded ? (worldpanning ? this.Texture.ScaledWidth / scalex : this.Texture.Width) : -1; // biwa + double height = textureloaded ? (worldpanning ? this.Texture.ScaledHeight / scaley : this.Texture.Height) : -1; // biwa Sidedef.Fields["offsetx_mid"] = new UniValue(UniversalType.Float, GetNewTexutreOffset(oldx, offsetx, width)); //mxd // biwa Sidedef.Fields["offsety_mid"] = new UniValue(UniversalType.Float, GetNewTexutreOffset(oldy, offsety, height)); //mxd // biwa @@ -429,8 +429,8 @@ namespace CodeImp.DoomBuilder.BuilderModes protected override Point GetTextureOffset() { - float oldx = Sidedef.Fields.GetValue("offsetx_mid", 0.0f); - float oldy = Sidedef.Fields.GetValue("offsety_mid", 0.0f); + double oldx = Sidedef.Fields.GetValue("offsetx_mid", 0.0); + double oldy = Sidedef.Fields.GetValue("offsety_mid", 0.0); return new Point((int)oldx, (int)oldy); } @@ -462,25 +462,25 @@ namespace CodeImp.DoomBuilder.BuilderModes Sidedef target = extrafloor.Linedef.Front; if(target == null) return; - float scaleX = target.Fields.GetValue("scalex_mid", 1.0f); - float scaleY = target.Fields.GetValue("scaley_mid", 1.0f); + double scaleX = target.Fields.GetValue("scalex_mid", 1.0); + double scaleY = target.Fields.GetValue("scaley_mid", 1.0); target.Fields.BeforeFieldsChange(); if(incrementX != 0) { - float pix = (int)Math.Round(Texture.Width * scaleX) - incrementX; - float newscaleX = (float)Math.Round(pix / Texture.Width, 3); + double pix = (int)Math.Round(Texture.Width * scaleX) - incrementX; + double newscaleX = Math.Round(pix / Texture.Width, 3); scaleX = (newscaleX == 0 ? scaleX * -1 : newscaleX); - UniFields.SetFloat(target.Fields, "scalex_mid", scaleX, 1.0f); + UniFields.SetFloat(target.Fields, "scalex_mid", scaleX, 1.0); } if(incrementY != 0) { - float pix = (int)Math.Round(Texture.Height * scaleY) - incrementY; - float newscaleY = (float)Math.Round(pix / Texture.Height, 3); + double pix = (int)Math.Round(Texture.Height * scaleY) - incrementY; + double newscaleY = Math.Round(pix / Texture.Height, 3); scaleY = (newscaleY == 0 ? scaleY * -1 : newscaleY); - UniFields.SetFloat(target.Fields, "scaley_mid", scaleY, 1.0f); + UniFields.SetFloat(target.Fields, "scaley_mid", scaleY, 1.0); } // Update the model sector to update all 3d floors diff --git a/Source/Plugins/BuilderModes/VisualModes/VisualMiddleBack.cs b/Source/Plugins/BuilderModes/VisualModes/VisualMiddleBack.cs index a9a0f46e..99eea2df 100755 --- a/Source/Plugins/BuilderModes/VisualModes/VisualMiddleBack.cs +++ b/Source/Plugins/BuilderModes/VisualModes/VisualMiddleBack.cs @@ -37,13 +37,13 @@ namespace CodeImp.DoomBuilder.BuilderModes bool lightabsolute; GetLightValue(out lightvalue, out lightabsolute); - Vector2D tscale = new Vector2D(sourceside.Fields.GetValue("scalex_mid", 1.0f), - sourceside.Fields.GetValue("scaley_mid", 1.0f)); + Vector2D tscale = new Vector2D(sourceside.Fields.GetValue("scalex_mid", 1.0), + sourceside.Fields.GetValue("scaley_mid", 1.0)); Vector2D tscaleAbs = new Vector2D(Math.Abs(tscale.x), Math.Abs(tscale.y)); - Vector2D toffset1 = new Vector2D(Sidedef.Fields.GetValue("offsetx_mid", 0.0f), - Sidedef.Fields.GetValue("offsety_mid", 0.0f)); - Vector2D toffset2 = new Vector2D(sourceside.Fields.GetValue("offsetx_mid", 0.0f), - sourceside.Fields.GetValue("offsety_mid", 0.0f)); + Vector2D toffset1 = new Vector2D(Sidedef.Fields.GetValue("offsetx_mid", 0.0), + Sidedef.Fields.GetValue("offsety_mid", 0.0)); + Vector2D toffset2 = new Vector2D(sourceside.Fields.GetValue("offsetx_mid", 0.0), + sourceside.Fields.GetValue("offsety_mid", 0.0)); // Left and right vertices for this sidedef if(Sidedef.IsFront) diff --git a/Source/Plugins/BuilderModes/VisualModes/VisualMiddleDouble.cs b/Source/Plugins/BuilderModes/VisualModes/VisualMiddleDouble.cs index 1ef6a894..a3b2ea05 100755 --- a/Source/Plugins/BuilderModes/VisualModes/VisualMiddleDouble.cs +++ b/Source/Plugins/BuilderModes/VisualModes/VisualMiddleDouble.cs @@ -81,11 +81,11 @@ namespace CodeImp.DoomBuilder.BuilderModes bool lightabsolute; GetLightValue(out lightvalue, out lightabsolute); - Vector2D tscale = new Vector2D(Sidedef.Fields.GetValue("scalex_mid", 1.0f), - Sidedef.Fields.GetValue("scaley_mid", 1.0f)); + Vector2D tscale = new Vector2D(Sidedef.Fields.GetValue("scalex_mid", 1.0), + Sidedef.Fields.GetValue("scaley_mid", 1.0)); Vector2D tscaleAbs = new Vector2D(Math.Abs(tscale.x), Math.Abs(tscale.y)); - Vector2D toffset = new Vector2D(Sidedef.Fields.GetValue("offsetx_mid", 0.0f), - Sidedef.Fields.GetValue("offsety_mid", 0.0f)); + Vector2D toffset = new Vector2D(Sidedef.Fields.GetValue("offsetx_mid", 0.0), + Sidedef.Fields.GetValue("offsety_mid", 0.0)); // Left and right vertices for this sidedef if(Sidedef.IsFront) @@ -367,13 +367,13 @@ namespace CodeImp.DoomBuilder.BuilderModes { Sidedef.Fields.BeforeFieldsChange(); bool worldpanning = this.Texture.WorldPanning || General.Map.Data.MapInfo.ForceWorldPanning; - float oldx = Sidedef.Fields.GetValue("offsetx_mid", 0.0f); - float oldy = Sidedef.Fields.GetValue("offsety_mid", 0.0f); - float scalex = Sidedef.Fields.GetValue("scalex_mid", 1.0f); - float scaley = Sidedef.Fields.GetValue("scaley_mid", 1.0f); + double oldx = Sidedef.Fields.GetValue("offsetx_mid", 0.0); + double oldy = Sidedef.Fields.GetValue("offsety_mid", 0.0); + double scalex = Sidedef.Fields.GetValue("scalex_mid", 1.0); + double scaley = Sidedef.Fields.GetValue("scaley_mid", 1.0); bool textureloaded = (Texture != null && Texture.IsImageLoaded); //mxd - float width = textureloaded ? (worldpanning ? this.Texture.ScaledWidth / scalex : this.Texture.Width) : -1; // biwa - float height = textureloaded ? (worldpanning ? this.Texture.ScaledHeight / scaley : this.Texture.Height) : -1; // biwa + double width = textureloaded ? (worldpanning ? this.Texture.ScaledWidth / scalex : this.Texture.Width) : -1; // biwa + double height = textureloaded ? (worldpanning ? this.Texture.ScaledHeight / scaley : this.Texture.Height) : -1; // biwa Sidedef.Fields["offsetx_mid"] = new UniValue(UniversalType.Float, GetNewTexutreOffset(oldx, offsetx, width)); //mxd // biwa @@ -384,8 +384,8 @@ namespace CodeImp.DoomBuilder.BuilderModes protected override Point GetTextureOffset() { - float oldx = Sidedef.Fields.GetValue("offsetx_mid", 0.0f); - float oldy = Sidedef.Fields.GetValue("offsety_mid", 0.0f); + double oldx = Sidedef.Fields.GetValue("offsetx_mid", 0.0); + double oldy = Sidedef.Fields.GetValue("offsety_mid", 0.0); return new Point((int)oldx, (int)oldy); } diff --git a/Source/Plugins/BuilderModes/VisualModes/VisualMiddleSingle.cs b/Source/Plugins/BuilderModes/VisualModes/VisualMiddleSingle.cs index 0eaab0c0..4b07d49e 100755 --- a/Source/Plugins/BuilderModes/VisualModes/VisualMiddleSingle.cs +++ b/Source/Plugins/BuilderModes/VisualModes/VisualMiddleSingle.cs @@ -67,11 +67,11 @@ namespace CodeImp.DoomBuilder.BuilderModes bool lightabsolute; GetLightValue(out lightvalue, out lightabsolute); - Vector2D tscale = new Vector2D(Sidedef.Fields.GetValue("scalex_mid", 1.0f), - Sidedef.Fields.GetValue("scaley_mid", 1.0f)); + Vector2D tscale = new Vector2D(Sidedef.Fields.GetValue("scalex_mid", 1.0), + Sidedef.Fields.GetValue("scaley_mid", 1.0)); Vector2D tscaleAbs = new Vector2D(Math.Abs(tscale.x), Math.Abs(tscale.y)); - Vector2D toffset = new Vector2D(Sidedef.Fields.GetValue("offsetx_mid", 0.0f), - Sidedef.Fields.GetValue("offsety_mid", 0.0f)); + Vector2D toffset = new Vector2D(Sidedef.Fields.GetValue("offsetx_mid", 0.0), + Sidedef.Fields.GetValue("offsety_mid", 0.0)); // Left and right vertices for this sidedef if(Sidedef.IsFront) @@ -233,26 +233,26 @@ namespace CodeImp.DoomBuilder.BuilderModes protected override void SetTextureOffsetX(int x) { Sidedef.Fields.BeforeFieldsChange(); - Sidedef.Fields["offsetx_mid"] = new UniValue(UniversalType.Float, (float)x); + Sidedef.Fields["offsetx_mid"] = new UniValue(UniversalType.Float, (double)x); } protected override void SetTextureOffsetY(int y) { Sidedef.Fields.BeforeFieldsChange(); - Sidedef.Fields["offsety_mid"] = new UniValue(UniversalType.Float, (float)y); + Sidedef.Fields["offsety_mid"] = new UniValue(UniversalType.Float, (double)y); } protected override void MoveTextureOffset(int offsetx, int offsety) { Sidedef.Fields.BeforeFieldsChange(); bool worldpanning = this.Texture.WorldPanning || General.Map.Data.MapInfo.ForceWorldPanning; - float oldx = Sidedef.Fields.GetValue("offsetx_mid", 0.0f); - float oldy = Sidedef.Fields.GetValue("offsety_mid", 0.0f); - float scalex = Sidedef.Fields.GetValue("scalex_mid", 1.0f); - float scaley = Sidedef.Fields.GetValue("scaley_mid", 1.0f); + double oldx = Sidedef.Fields.GetValue("offsetx_mid", 0.0); + double oldy = Sidedef.Fields.GetValue("offsety_mid", 0.0); + double scalex = Sidedef.Fields.GetValue("scalex_mid", 1.0); + double scaley = Sidedef.Fields.GetValue("scaley_mid", 1.0); bool textureloaded = (Texture != null && Texture.IsImageLoaded); //mxd - float width = textureloaded ? (worldpanning ? this.Texture.ScaledWidth / scalex : this.Texture.Width) : -1; // biwa - float height = textureloaded ? (worldpanning ? this.Texture.ScaledHeight / scaley : this.Texture.Height) : -1; // biwa + double width = textureloaded ? (worldpanning ? this.Texture.ScaledWidth / scalex : this.Texture.Width) : -1; // biwa + double height = textureloaded ? (worldpanning ? this.Texture.ScaledHeight / scaley : this.Texture.Height) : -1; // biwa Sidedef.Fields["offsetx_mid"] = new UniValue(UniversalType.Float, GetNewTexutreOffset(oldx, offsetx, width)); //mxd // biwa Sidedef.Fields["offsety_mid"] = new UniValue(UniversalType.Float, GetNewTexutreOffset(oldy, offsety, height)); //mxd // biwa @@ -260,8 +260,8 @@ namespace CodeImp.DoomBuilder.BuilderModes protected override Point GetTextureOffset() { - float oldx = Sidedef.Fields.GetValue("offsetx_mid", 0.0f); - float oldy = Sidedef.Fields.GetValue("offsety_mid", 0.0f); + double oldx = Sidedef.Fields.GetValue("offsetx_mid", 0.0); + double oldy = Sidedef.Fields.GetValue("offsety_mid", 0.0); return new Point((int)oldx, (int)oldy); } diff --git a/Source/Plugins/BuilderModes/VisualModes/VisualSidedefSlope.cs b/Source/Plugins/BuilderModes/VisualModes/VisualSidedefSlope.cs index f4aa8731..237a586b 100644 --- a/Source/Plugins/BuilderModes/VisualModes/VisualSidedefSlope.cs +++ b/Source/Plugins/BuilderModes/VisualModes/VisualSidedefSlope.cs @@ -313,9 +313,9 @@ namespace CodeImp.DoomBuilder.VisualModes Plane pivotplane = ((VisualSidedefSlope)pivothandle).Level.plane; // Build a new plane. p1 and p2 are the points of the slope handle that is modified, p3 is on the line of the pivot handle - Vector3D p1 = new Vector3D(sidedef.Line.Start.Position, (float)Math.Round(originalplane.GetZ(sidedef.Line.Start.Position))); - Vector3D p2 = new Vector3D(sidedef.Line.End.Position, (float)Math.Round(originalplane.GetZ(sidedef.Line.End.Position))); - Vector3D p3 = new Vector3D(((VisualSidedefSlope)pivothandle).Sidedef.Line.Line.GetCoordinatesAt(0.5f), (float)Math.Round(pivotplane.GetZ(((VisualSidedefSlope)pivothandle).Sidedef.Line.Line.GetCoordinatesAt(0.5f)))); + Vector3D p1 = new Vector3D(sidedef.Line.Start.Position, Math.Round(originalplane.GetZ(sidedef.Line.Start.Position))); + Vector3D p2 = new Vector3D(sidedef.Line.End.Position, Math.Round(originalplane.GetZ(sidedef.Line.End.Position))); + Vector3D p3 = new Vector3D(((VisualSidedefSlope)pivothandle).Sidedef.Line.Line.GetCoordinatesAt(0.5f), Math.Round(pivotplane.GetZ(((VisualSidedefSlope)pivothandle).Sidedef.Line.Line.GetCoordinatesAt(0.5f)))); // Move the points of the handle up/down p1 += new Vector3D(0f, 0f, amount); diff --git a/Source/Plugins/BuilderModes/VisualModes/VisualUpper.cs b/Source/Plugins/BuilderModes/VisualModes/VisualUpper.cs index 4500de9e..17ab8cdd 100755 --- a/Source/Plugins/BuilderModes/VisualModes/VisualUpper.cs +++ b/Source/Plugins/BuilderModes/VisualModes/VisualUpper.cs @@ -98,11 +98,11 @@ namespace CodeImp.DoomBuilder.BuilderModes bool lightabsolute; GetLightValue(out lightvalue, out lightabsolute); - Vector2D tscale = new Vector2D(Sidedef.Fields.GetValue("scalex_top", 1.0f), - Sidedef.Fields.GetValue("scaley_top", 1.0f)); + Vector2D tscale = new Vector2D(Sidedef.Fields.GetValue("scalex_top", 1.0), + Sidedef.Fields.GetValue("scaley_top", 1.0)); Vector2D tscaleAbs = new Vector2D(Math.Abs(tscale.x), Math.Abs(tscale.y)); - Vector2D toffset = new Vector2D(Sidedef.Fields.GetValue("offsetx_top", 0.0f), - Sidedef.Fields.GetValue("offsety_top", 0.0f)); + Vector2D toffset = new Vector2D(Sidedef.Fields.GetValue("offsetx_top", 0.0), + Sidedef.Fields.GetValue("offsety_top", 0.0)); // Texture given? if((Sidedef.LongHighTexture != MapSet.EmptyLongName)) @@ -268,13 +268,13 @@ namespace CodeImp.DoomBuilder.BuilderModes { Sidedef.Fields.BeforeFieldsChange(); bool worldpanning = this.Texture.WorldPanning || General.Map.Data.MapInfo.ForceWorldPanning; - float oldx = Sidedef.Fields.GetValue("offsetx_top", 0.0f); - float oldy = Sidedef.Fields.GetValue("offsety_top", 0.0f); - float scalex = Sidedef.Fields.GetValue("scalex_top", 1.0f); - float scaley = Sidedef.Fields.GetValue("scaley_top", 1.0f); + double oldx = Sidedef.Fields.GetValue("offsetx_top", 0.0); + double oldy = Sidedef.Fields.GetValue("offsety_top", 0.0); + double scalex = Sidedef.Fields.GetValue("scalex_top", 1.0); + double scaley = Sidedef.Fields.GetValue("scaley_top", 1.0); bool textureloaded = (Texture != null && Texture.IsImageLoaded); //mxd - float width = textureloaded ? (worldpanning ? this.Texture.ScaledWidth / scalex : this.Texture.Width) : -1; // biwa - float height = textureloaded ? (worldpanning ? this.Texture.ScaledHeight / scaley : this.Texture.Height) : -1; // biwa + double width = textureloaded ? (worldpanning ? this.Texture.ScaledWidth / scalex : this.Texture.Width) : -1; // biwa + double height = textureloaded ? (worldpanning ? this.Texture.ScaledHeight / scaley : this.Texture.Height) : -1; // biwa Sidedef.Fields["offsetx_top"] = new UniValue(UniversalType.Float, GetNewTexutreOffset(oldx, offsetx, width)); //mxd // biwa Sidedef.Fields["offsety_top"] = new UniValue(UniversalType.Float, GetNewTexutreOffset(oldy, offsety, height)); //mxd // biwa @@ -282,8 +282,8 @@ namespace CodeImp.DoomBuilder.BuilderModes protected override Point GetTextureOffset() { - float oldx = Sidedef.Fields.GetValue("offsetx_top", 0.0f); - float oldy = Sidedef.Fields.GetValue("offsety_top", 0.0f); + double oldx = Sidedef.Fields.GetValue("offsetx_top", 0.0); + double oldy = Sidedef.Fields.GetValue("offsety_top", 0.0); return new Point((int)oldx, (int)oldy); }