forked from mirror/DotRecast
remove new float[3]
This commit is contained in:
parent
8a59cb2d6b
commit
98cdbd7d20
|
@ -0,0 +1,43 @@
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace DotRecast.Recast.Demo.Draw;
|
||||||
|
|
||||||
|
public class ArrayBuffer<T>
|
||||||
|
{
|
||||||
|
private int _size;
|
||||||
|
private T[] _items;
|
||||||
|
public int Count => _size;
|
||||||
|
|
||||||
|
public ArrayBuffer()
|
||||||
|
{
|
||||||
|
_size = 0;
|
||||||
|
_items = Array.Empty<T>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Add(T item)
|
||||||
|
{
|
||||||
|
if (0 >= _items.Length)
|
||||||
|
{
|
||||||
|
_items = new T[256];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_items.Length <= _size)
|
||||||
|
{
|
||||||
|
var temp = new T[(int)(_size * 1.5)];
|
||||||
|
Array.Copy(_items, 0, temp, 0, _items.Length);
|
||||||
|
_items = temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
_items[_size++] = item;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Clear()
|
||||||
|
{
|
||||||
|
_size = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public T[] AsArray()
|
||||||
|
{
|
||||||
|
return _items;
|
||||||
|
}
|
||||||
|
}
|
|
@ -201,7 +201,7 @@ public class DebugDraw
|
||||||
getOpenGlDraw().vertex(x, y, z, color);
|
getOpenGlDraw().vertex(x, y, z, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void vertex(float[] pos, int color, float[] uv)
|
public void vertex(Vector3f pos, int color, Vector2f uv)
|
||||||
{
|
{
|
||||||
getOpenGlDraw().vertex(pos, color, uv);
|
getOpenGlDraw().vertex(pos, color, uv);
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,45 +6,6 @@ using Silk.NET.OpenGL;
|
||||||
|
|
||||||
namespace DotRecast.Recast.Demo.Draw;
|
namespace DotRecast.Recast.Demo.Draw;
|
||||||
|
|
||||||
public class ArrayBuffer<T>
|
|
||||||
{
|
|
||||||
private int _size;
|
|
||||||
private T[] _items;
|
|
||||||
public int Count => _size;
|
|
||||||
|
|
||||||
public ArrayBuffer()
|
|
||||||
{
|
|
||||||
_size = 0;
|
|
||||||
_items = Array.Empty<T>();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Add(T item)
|
|
||||||
{
|
|
||||||
if (0 >= _items.Length)
|
|
||||||
{
|
|
||||||
_items = new T[256];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_items.Length <= _size)
|
|
||||||
{
|
|
||||||
var temp = new T[(int)(_size * 1.5)];
|
|
||||||
Array.Copy(_items, 0, temp, 0, _items.Length);
|
|
||||||
_items = temp;
|
|
||||||
}
|
|
||||||
_items[_size++] = item;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Clear()
|
|
||||||
{
|
|
||||||
_size = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
public T[] AsArray()
|
|
||||||
{
|
|
||||||
return _items;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class ModernOpenGLDraw : OpenGLDraw
|
public class ModernOpenGLDraw : OpenGLDraw
|
||||||
{
|
{
|
||||||
private GL _gl;
|
private GL _gl;
|
||||||
|
@ -331,7 +292,7 @@ public class ModernOpenGLDraw : OpenGLDraw
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void vertex(float[] pos, int color, float[] uv)
|
public void vertex(Vector3f pos, int color, Vector2f uv)
|
||||||
{
|
{
|
||||||
vertices.Add(new OpenGLVertex(pos, uv, color));
|
vertices.Add(new OpenGLVertex(pos, uv, color));
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ public interface OpenGLDraw
|
||||||
void vertex(float[] pos, int color);
|
void vertex(float[] pos, int color);
|
||||||
void vertex(Vector3f pos, int color);
|
void vertex(Vector3f pos, int color);
|
||||||
|
|
||||||
void vertex(float[] pos, int color, float[] uv);
|
void vertex(Vector3f pos, int color, Vector2f uv);
|
||||||
|
|
||||||
void vertex(float x, float y, float z, int color, float u, float v);
|
void vertex(float x, float y, float z, int color, float u, float v);
|
||||||
|
|
||||||
|
|
|
@ -15,8 +15,8 @@ public struct OpenGLVertex
|
||||||
[FieldOffset(16)] private readonly float v;
|
[FieldOffset(16)] private readonly float v;
|
||||||
[FieldOffset(20)] private readonly int color;
|
[FieldOffset(20)] private readonly int color;
|
||||||
|
|
||||||
public OpenGLVertex(float[] pos, float[] uv, int color) :
|
public OpenGLVertex(Vector3f pos, Vector2f uv, int color) :
|
||||||
this(pos[0], pos[1], pos[2], uv[0], uv[1], color)
|
this(pos[0], pos[1], pos[2], uv.x, uv.y, color)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -42,9 +42,9 @@ public class RecastDebugDraw : DebugDraw
|
||||||
{
|
{
|
||||||
float walkableThr = (float)Math.Cos(walkableSlopeAngle / 180.0f * Math.PI);
|
float walkableThr = (float)Math.Cos(walkableSlopeAngle / 180.0f * Math.PI);
|
||||||
|
|
||||||
float[] uva = new float[2];
|
Vector2f uva = Vector2f.Zero;
|
||||||
float[] uvb = new float[2];
|
Vector2f uvb = Vector2f.Zero;
|
||||||
float[] uvc = new float[2];
|
Vector2f uvc = Vector2f.Zero;
|
||||||
|
|
||||||
texture(true);
|
texture(true);
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ public class RecastDebugDraw : DebugDraw
|
||||||
begin(DebugDrawPrimitives.TRIS);
|
begin(DebugDrawPrimitives.TRIS);
|
||||||
for (int i = 0; i < tris.Length; i += 3)
|
for (int i = 0; i < tris.Length; i += 3)
|
||||||
{
|
{
|
||||||
float[] norm = new float[] { normals[i], normals[i + 1], normals[i + 2] };
|
Vector3f norm = Vector3f.Of(normals[i], normals[i + 1], normals[i + 2]);
|
||||||
|
|
||||||
int color;
|
int color;
|
||||||
char a = (char)(220 * (2 + norm[0] + norm[1]) / 4);
|
char a = (char)(220 * (2 + norm[0] + norm[1]) / 4);
|
||||||
|
@ -65,9 +65,9 @@ public class RecastDebugDraw : DebugDraw
|
||||||
color = duRGBA(a, a, a, 255);
|
color = duRGBA(a, a, a, 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
float[] va = new float[] { verts[tris[i] * 3], verts[tris[i] * 3 + 1], verts[tris[i] * 3 + 2] };
|
Vector3f va = Vector3f.Of(verts[tris[i] * 3], verts[tris[i] * 3 + 1], verts[tris[i] * 3 + 2]);
|
||||||
float[] vb = new float[] { verts[tris[i + 1] * 3], verts[tris[i + 1] * 3 + 1], verts[tris[i + 1] * 3 + 2] };
|
Vector3f vb = Vector3f.Of(verts[tris[i + 1] * 3], verts[tris[i + 1] * 3 + 1], verts[tris[i + 1] * 3 + 2]);
|
||||||
float[] vc = new float[] { verts[tris[i + 2] * 3], verts[tris[i + 2] * 3 + 1], verts[tris[i + 2] * 3 + 2] };
|
Vector3f vc = Vector3f.Of(verts[tris[i + 2] * 3], verts[tris[i + 2] * 3 + 1], verts[tris[i + 2] * 3 + 2]);
|
||||||
|
|
||||||
int ax = 0, ay = 0;
|
int ax = 0, ay = 0;
|
||||||
if (Math.Abs(norm[1]) > Math.Abs(norm[ax]))
|
if (Math.Abs(norm[1]) > Math.Abs(norm[ax]))
|
||||||
|
@ -83,12 +83,12 @@ public class RecastDebugDraw : DebugDraw
|
||||||
ax = (1 << ax) & 3; // +1 mod 3
|
ax = (1 << ax) & 3; // +1 mod 3
|
||||||
ay = (1 << ax) & 3; // +1 mod 3
|
ay = (1 << ax) & 3; // +1 mod 3
|
||||||
|
|
||||||
uva[0] = va[ax] * texScale;
|
uva.x = va[ax] * texScale;
|
||||||
uva[1] = va[ay] * texScale;
|
uva.y = va[ay] * texScale;
|
||||||
uvb[0] = vb[ax] * texScale;
|
uvb.x = vb[ax] * texScale;
|
||||||
uvb[1] = vb[ay] * texScale;
|
uvb.y = vb[ay] * texScale;
|
||||||
uvc[0] = vc[ax] * texScale;
|
uvc.x = vc[ax] * texScale;
|
||||||
uvc[1] = vc[ay] * texScale;
|
uvc.y = vc[ay] * texScale;
|
||||||
|
|
||||||
vertex(va, color, uva);
|
vertex(va, color, uva);
|
||||||
vertex(vb, color, uvb);
|
vertex(vb, color, uvb);
|
||||||
|
|
Loading…
Reference in New Issue