diff --git a/Source/Core/VisualModes/VisualSector.cs b/Source/Core/VisualModes/VisualSector.cs index 8a04708d..dc5511c1 100755 --- a/Source/Core/VisualModes/VisualSector.cs +++ b/Source/Core/VisualModes/VisualSector.cs @@ -53,7 +53,11 @@ namespace CodeImp.DoomBuilder.VisualModes internal List FixedGeometry { get { return fixedgeometry; } } internal List AllGeometry { get { return allgeometry; } } internal VertexBuffer GeometryBuffer { get { return geobuffer; } } - internal bool NeedsUpdateGeo { get { return updategeo; } set { updategeo |= value; } } + internal bool NeedsUpdateGeo + { + get { return updategeo; } + set { updategeo |= value; } + } public bool IsDisposed { get { return isdisposed; } } public Sector Sector { get { return sector; } } @@ -105,7 +109,7 @@ namespace CodeImp.DoomBuilder.VisualModes // Trash geometry buffer if(geobuffer != null) geobuffer.Dispose(); geobuffer = null; - updategeo = true; + NeedsUpdateGeo = true; } // This is called resets when the device is reset @@ -164,7 +168,7 @@ namespace CodeImp.DoomBuilder.VisualModes /// public void AddGeometry(VisualGeometry geo) { - updategeo = true; + NeedsUpdateGeo = true; allgeometry.Add(geo); if(geo.Sidedef != null) { @@ -186,7 +190,7 @@ namespace CodeImp.DoomBuilder.VisualModes allgeometry.Clear(); fixedgeometry.Clear(); sidedefgeometry.Clear(); - updategeo = true; + NeedsUpdateGeo = true; } // This gets the geometry list for the specified sidedef diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs index 809ebb44..0de67de4 100755 --- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs +++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs @@ -45,11 +45,12 @@ namespace CodeImp.DoomBuilder.BuilderModes protected readonly BaseVisualMode mode; protected long setuponloadedtexture; + private long lastsetuponloadedtexture; - // This is only used to see if this object has already received a change - // in a multiselection. The Changed property on the BaseVisualSector is - // used to indicate a rebuild is needed. - protected bool changed; + // This is only used to see if this object has already received a change + // in a multiselection. The Changed property on the BaseVisualSector is + // used to indicate a rebuild is needed. + protected bool changed; protected SectorLevel level; protected Effect3DFloor extrafloor; @@ -597,17 +598,21 @@ namespace CodeImp.DoomBuilder.BuilderModes public virtual void OnProcess(long deltatime) { // If the texture was not loaded, but is loaded now, then re-setup geometry - if(setuponloadedtexture != 0) + if(setuponloadedtexture != lastsetuponloadedtexture) { - ImageData t = General.Map.Data.GetFlatImage(setuponloadedtexture); - if(t != null) - { - if(t.IsImageLoaded) - { - setuponloadedtexture = 0; - Setup(); - } - } + if (setuponloadedtexture != 0) + { + ImageData t = General.Map.Data.GetFlatImage(setuponloadedtexture); + if (t != null && t.IsImageLoaded) + { + lastsetuponloadedtexture = setuponloadedtexture; + Setup(); + } + } + else + { + lastsetuponloadedtexture = setuponloadedtexture; + } } } diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySidedef.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySidedef.cs index a8e54286..01102873 100755 --- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySidedef.cs +++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySidedef.cs @@ -48,9 +48,10 @@ namespace CodeImp.DoomBuilder.BuilderModes protected Plane top; protected Plane bottom; protected long setuponloadedtexture; - - // UV dragging - private float dragstartanglexy; + private long lastsetuponloadedtexture; + + // UV dragging + private float dragstartanglexy; private float dragstartanglez; private Vector3D dragorigin; private Vector3D deltaxy; @@ -884,20 +885,24 @@ namespace CodeImp.DoomBuilder.BuilderModes // Processing public virtual void OnProcess(long deltatime) { - // If the texture was not loaded, but is loaded now, then re-setup geometry - if(setuponloadedtexture != 0) - { - ImageData t = General.Map.Data.GetTextureImage(setuponloadedtexture); - if(t != null) - { - if(t.IsImageLoaded) - { - setuponloadedtexture = 0; - Setup(); - } - } - } - } + // If the texture was not loaded, but is loaded now, then re-setup geometry + if (setuponloadedtexture != lastsetuponloadedtexture) + { + if (setuponloadedtexture != 0) + { + ImageData t = General.Map.Data.GetTextureImage(setuponloadedtexture); + if (t != null && t.IsImageLoaded) + { + lastsetuponloadedtexture = setuponloadedtexture; + Setup(); + } + } + else + { + lastsetuponloadedtexture = setuponloadedtexture; + } + } + } // Change target height public virtual void OnChangeTargetHeight(int amount)