UltimateZoneBuilder/Source/Core/Rendering/VisualSlopeHandle.cs

95 lines
No EOL
2 KiB
C#

#region ================== Namespaces
using System;
#endregion
namespace CodeImp.DoomBuilder.Rendering
{
internal sealed class VisualSlopeHandle : IDisposable, IRenderResource
{
#region ================== Variables
private VertexBuffer geometry;
private bool isdisposed;
#endregion
#region ================== Properties
public VertexBuffer Geometry { get { return geometry; } }
#endregion
#region ================== Constructor / Disposer
public VisualSlopeHandle()
{
// Create geometry
ReloadResource();
// Register as source
General.Map.Graphics.RegisterResource(this);
}
public void Dispose()
{
// Not already disposed?
if (!isdisposed)
{
if (geometry != null)
geometry.Dispose();
// Unregister resource
General.Map.Graphics.UnregisterResource(this);
// Done
isdisposed = true;
}
}
#endregion
#region ================== Methods
// This is called resets when the device is reset
// (when resized or display adapter was changed)
public void ReloadResource()
{
WorldVertex v0 = new WorldVertex(0.0f, 0.0f, 32.5f);
WorldVertex v1 = new WorldVertex(1.0f, 0.0f, 32.5f);
WorldVertex v2 = new WorldVertex(1.0f, 8.0f, 32.5f);
WorldVertex v3 = new WorldVertex(0.0f, 8.0f, 32.5f);
//WorldVertex v0 = new WorldVertex(0.0f, 0.0f, 0.5f);
//WorldVertex v1 = new WorldVertex(32.0f, 0.0f, 0.5f);
//WorldVertex v2 = new WorldVertex(32.0f, 32.0f, 0.5f);
//WorldVertex v3 = new WorldVertex(0.0f, 32.0f, 0.5f);
v0.c = v1.c = PixelColor.INT_WHITE;
v2.c = v3.c = PixelColor.INT_WHITE_NO_ALPHA;
WorldVertex[] vertices = new[]
{
v2, v1, v0,
v3, v2, v0
};
geometry = new VertexBuffer();
General.Map.Graphics.SetBufferData(geometry, vertices);
}
// This is called before a device is reset
// (when resized or display adapter was changed)
public void UnloadResource()
{
if (geometry != null)
geometry.Dispose();
geometry = null;
}
#endregion
}
}