diff --git a/Source/Core/VisualModes/VisualSector.cs b/Source/Core/VisualModes/VisualSector.cs index 8a04708d064cd98d592ea914fdeb258a446794bc..dc5511c1a3dc84d4927043209813f3664b6b1e71 100755 --- a/Source/Core/VisualModes/VisualSector.cs +++ b/Source/Core/VisualModes/VisualSector.cs @@ -53,7 +53,11 @@ namespace CodeImp.DoomBuilder.VisualModes internal List<VisualGeometry> FixedGeometry { get { return fixedgeometry; } } internal List<VisualGeometry> 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 /// </summary> 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 809ebb4484fdfe8a02487a6d6e456730cbc7f2ea..0de67de4239f6e89738eb75e5ef58440d87343be 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 a8e54286eb9ca00c9446d31e3f76f8cafe072b62..01102873a2a3e1f483e290fc51129fd8def77440 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)