summaryrefslogtreecommitdiff
path: root/Plugins/MonoGame.Extended/source/MonoGame.Extended.Tiled/Renderers/TiledMapLayerModel.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Plugins/MonoGame.Extended/source/MonoGame.Extended.Tiled/Renderers/TiledMapLayerModel.cs')
-rw-r--r--Plugins/MonoGame.Extended/source/MonoGame.Extended.Tiled/Renderers/TiledMapLayerModel.cs38
1 files changed, 38 insertions, 0 deletions
diff --git a/Plugins/MonoGame.Extended/source/MonoGame.Extended.Tiled/Renderers/TiledMapLayerModel.cs b/Plugins/MonoGame.Extended/source/MonoGame.Extended.Tiled/Renderers/TiledMapLayerModel.cs
new file mode 100644
index 0000000..f837e1a
--- /dev/null
+++ b/Plugins/MonoGame.Extended/source/MonoGame.Extended.Tiled/Renderers/TiledMapLayerModel.cs
@@ -0,0 +1,38 @@
+using System;
+using Microsoft.Xna.Framework.Graphics;
+
+namespace MonoGame.Extended.Tiled.Renderers
+{
+ public abstract class TiledMapLayerModel : IDisposable
+ {
+ protected TiledMapLayerModel(GraphicsDevice graphicsDevice, Texture2D texture, VertexPositionTexture[] vertices, ushort[] indices)
+ {
+ Texture = texture;
+
+ // ReSharper disable once VirtualMemberCallInConstructor
+ VertexBuffer = CreateVertexBuffer(graphicsDevice, vertices.Length);
+ VertexBuffer.SetData(vertices, 0, vertices.Length);
+
+ // ReSharper disable once VirtualMemberCallInConstructor
+ IndexBuffer = CreateIndexBuffer(graphicsDevice, indices.Length);
+ IndexBuffer.SetData(indices, 0, indices.Length);
+
+ TriangleCount = indices.Length / 3;
+ }
+
+ public void Dispose()
+ {
+ IndexBuffer.Dispose();
+ VertexBuffer.Dispose();
+ }
+
+ public Texture2D Texture { get; }
+ public VertexBuffer VertexBuffer { get; }
+ public IndexBuffer IndexBuffer { get; }
+ public int TriangleCount { get; }
+
+ protected abstract VertexBuffer CreateVertexBuffer(GraphicsDevice graphicsDevice, int vertexCount);
+ protected abstract IndexBuffer CreateIndexBuffer(GraphicsDevice graphicsDevice, int indexCount);
+
+ }
+} \ No newline at end of file