26.09.2020

+ Added BoundingBoxes to Meshes
+ SM.Base.Objects.Mesh
+ Vertex Colors
+ ShowItem Collections + 2D Equlivant
+ Default Class to store Default Values
+ SM.OGL.GLSystem to store OpenGL specific system information

+ SM2D.DrawColor // not working yet
+ SM2D.DrawComplex to allow access to all features.
+ SM2D.DrawPolygon
+ Polygon system // for 2D only yet

~ Renamed SM.OGL.Mesh to SM.OGL.GenericMesh
This commit is contained in:
Michel Fedde 2020-09-26 23:40:16 +02:00
parent c4a0847567
commit 617a7ef044
39 changed files with 598 additions and 66 deletions

View file

@ -2,8 +2,8 @@
using OpenTK;
using OpenTK.Graphics;
using SM.Base.Contexts;
using SM.Base.Objects.Static;
using SM.Base.Scene;
using SM.Base.StaticObjects;
using SM.Base.Textures;
using SM.OGL.Texture;
using SM2D.Types;

View file

@ -0,0 +1,35 @@
using OpenTK.Graphics;
using SM.Base.Contexts;
using SM.Base.Scene;
using SM2D.Scene;
using SM2D.Types;
namespace SM2D.Drawing
{
public class DrawColor : DrawingBasis<Transformation>, I2DShowItem
{
public Color4 Tint
{
get => _material.Tint;
set => _material.Tint = value;
}
public int ZIndex { get; set; }
public DrawColor() {}
public DrawColor(Color4 color)
{
_material.Tint = color;
}
public override void Draw(DrawContext context)
{
base.Draw(context);
ApplyContext(ref context);
context.Instances[0].ModelMatrix = Transform.GetMatrix();
_material.Shader.Draw(context);
}
}
}

View file

@ -0,0 +1,35 @@
using SM.Base.Contexts;
using SM.Base.Scene;
using SM.OGL.Mesh;
using SM2D.Scene;
using SM2D.Types;
namespace SM2D.Drawing
{
public class DrawComplex: DrawingBasis<Transformation>, I2DShowItem
{
public int ZIndex { get; set; }
public Material Material
{
get => _material;
set => _material = value;
}
public GenericMesh Mesh
{
get => _mesh;
set => _mesh = value;
}
public override void Draw(DrawContext context)
{
base.Draw(context);
ApplyContext(ref context);
context.Instances[0].ModelMatrix = Transform.GetMatrix();
_material.Shader.Draw(context);
}
}
}

View file

@ -0,0 +1,38 @@
using System.Drawing;
using OpenTK.Graphics;
using SM.Base.Textures;
using SM.OGL.Texture;
using SM2D.Object;
namespace SM2D.Drawing
{
public class DrawPolygon : DrawColor
{
public Polygon Polygon
{
get => (Polygon)_mesh;
set => _mesh = value;
}
public Texture Texture
{
get => (Texture)_material.Texture;
set => _material.Texture = value;
}
public DrawPolygon(Polygon polygon) {}
public DrawPolygon(Polygon polygon, Bitmap map) : this(polygon, map, Color4.White) {}
public DrawPolygon(Polygon polygon, Color4 color) : base(color)
{
_mesh = polygon;
}
public DrawPolygon(Polygon polygon, Bitmap map, Color4 tint) : base(tint)
{
_mesh = polygon;
_material.Texture = new Texture(map);
}
}
}

View file

@ -1,14 +1,17 @@
using SM.Base.Contexts;
using SM.Base.Text;
using SM.Base.Types;
using SM2D.Scene;
using SM2D.Types;
namespace SM2D.Drawing
{
public class DrawText : TextDrawingBasis<Transformation>
public class DrawText : TextDrawingBasis<Transformation>, I2DShowItem
{
public DrawText(Font font, string text) : base(font)
{
_text = text;
Transform.Size = new Vector2(1);
}
public override void Draw(DrawContext context)
@ -21,5 +24,7 @@ namespace SM2D.Drawing
_material.Shader.Draw(context);
}
public int ZIndex { get; set; }
}
}

View file

@ -5,48 +5,40 @@ using SM.Base.Contexts;
using SM.Base.Scene;
using SM.Base.Textures;
using SM.Base.Types;
using SM2D.Scene;
using SM2D.Types;
using Vector2 = SM.Base.Types.Vector2;
namespace SM2D.Drawing
{
public class DrawTexture : DrawingBasis<Transformation>
public class DrawTexture : DrawColor
{
public static float MasterScale = .25f;
public float Scale = 1;
public Texture Texture
{
get => (Texture) _material.Texture;
set => _material.Texture = value;
}
public Color4 Tint
{
get => _material.Tint;
set => _material.Tint = value;
}
public float Scale = 1;
public DrawTexture() {}
protected DrawTexture(Color4 color) : base(color) { }
public DrawTexture(Bitmap map) : this(map, Color4.White)
{ }
public DrawTexture(Bitmap map, Color4 tint)
public DrawTexture(Bitmap map, Color4 color)
{
_material.Texture = new Texture(map);
_material.Tint = tint;
_material.Tint = color;
}
public override void Draw(DrawContext context)
{
Transform.Size = new Vector2(Texture.Map.Width * MasterScale * Scale, Texture.Map.Height * MasterScale * Scale);
base.Draw(context);
ApplyContext(ref context);
Transform.Size = new Vector2(Texture.Map.Width * MasterScale * Scale, Texture.Map.Height * MasterScale * Scale);
context.Instances[0].ModelMatrix = Transform.GetMatrix();
_material.Shader.Draw(context);
}
}
}