86 lines
2.0 KiB
C#
86 lines
2.0 KiB
C#
using System;
|
|
|
|
using OpenTK;
|
|
|
|
namespace org.niclasundharald.engine.graphics.primitives
|
|
{
|
|
public class Cube : WorldObject
|
|
{
|
|
public Cube(Vector3 position, float width)
|
|
{
|
|
Scale = Matrix4.CreateScale(width);
|
|
Position = position;
|
|
}
|
|
|
|
public override Model3D getModel3D()
|
|
{
|
|
return CubeModel.inst;
|
|
}
|
|
|
|
}
|
|
|
|
class CubeModel : Model3D {
|
|
|
|
public static Vector4[] colors = new Vector4[]{
|
|
new Vector4(1.0f,0.0f,0.0f,1.0f),
|
|
new Vector4(1.0f,0.0f,0.0f,1.0f),
|
|
new Vector4(1.0f,0.0f,0.0f,1.0f),
|
|
new Vector4(1.0f,1.0f,0.0f,1.0f),
|
|
new Vector4(0.0f,0.9f,0.0f,1.0f),
|
|
new Vector4(0.0f,0.9f,0.0f,1.0f),
|
|
new Vector4(0.0f,0.9f,0.0f,1.0f),
|
|
new Vector4(0.0f,0.9f,1.0f,1.0f),
|
|
new Vector4(0.0f,0.0f,1.0f,1.0f),
|
|
new Vector4(0.0f,0.0f,1.0f,1.0f),
|
|
new Vector4(0.0f,0.0f,1.0f,1.0f),
|
|
new Vector4(1.0f,0.0f,1.0f,1.0f)
|
|
};
|
|
|
|
public static CubeModel inst = new CubeModel();
|
|
|
|
public CubeModel(){
|
|
Vector3 dx, dy, dz;
|
|
Vector3 a, b, c, d, e, f, g, h;
|
|
|
|
dx = (Vector3.UnitX / 2);
|
|
dy = (Vector3.UnitY / 2);
|
|
dz = (Vector3.UnitZ / 2);
|
|
|
|
a = - dx - dy - dz;
|
|
b = dx - dy - dz;
|
|
c = dx + dy - dz;
|
|
d = - dx + dy - dz;
|
|
e = - dx - dy + dz;
|
|
f = dx - dy + dz;
|
|
g = dx + dy + dz;
|
|
h = - dx + dy + dz;
|
|
|
|
Vector3[] vertexes = new Vector3[36];
|
|
|
|
Model3D.setTriangle(vertexes, 0, a, b, c);
|
|
Model3D.setTriangle(vertexes, 1, c, d, a);
|
|
Model3D.setTriangle(vertexes, 2, f, e, h);
|
|
Model3D.setTriangle(vertexes, 3, h, g, f);
|
|
|
|
Model3D.setTriangle(vertexes, 4, e, a, d);
|
|
Model3D.setTriangle(vertexes, 5, d, h, e);
|
|
Model3D.setTriangle(vertexes, 6, b, f, g);
|
|
Model3D.setTriangle(vertexes, 7, g, c, b);
|
|
|
|
Model3D.setTriangle(vertexes, 8, a, e, f);
|
|
Model3D.setTriangle(vertexes, 9, f, b, a);
|
|
Model3D.setTriangle(vertexes, 10, g, h, d);
|
|
Model3D.setTriangle(vertexes, 11, d, c, g);
|
|
|
|
Vector4[] colors = new Vector4[ vertexes.Length ];
|
|
|
|
for (int n=0;n<colors.Length;n++){
|
|
colors[n] = CubeModel.colors[ n / 3 ];
|
|
}
|
|
|
|
bind( vertexes, colors );
|
|
}
|
|
|
|
}
|
|
}
|