public Polygon(Vector3 v1, Vector3 v2, Vector3 v3) : base() { Pivot = Pivot.BasePivot(v1); GlobalVertices = new[] { v1, v2, v3 }; LocalVertices = GlobalVertices.Select(v => Pivot.ToLocalCoords(v)).ToArray(); Indexes = new[] { 0, 1, 2 }; }
public override void Move(Vector3 v) { Pivot.Move(v); GlobalVertices = GlobalVertices.Select(i => i + v).ToArray(); OnMoveEvent(v); if (Enviroment != null) { Enviroment.OnChangeEvent(); } }
public Primitive Clone() { return(new Primitive(LocalVertices.ToArray(), GlobalVertices.ToArray(), Normals.ToArray(), TextureCoords.ToArray(), Indexes.ToArray(), NormalIndexes.ToArray(), TextureCoordsIndexes.ToArray(), Pivot.Clone())); }
public Cube(Vector3 center, float sideLen) : base() { Pivot = Pivot.BasePivot(center); var delta = new float[] { -sideLen / 2, sideLen / 2 }; GlobalVertices = delta.SelectMany(n => delta.SelectMany(n1 => delta.Select(n2 => center + new Vector3(n, n1, n2)))).ToArray(); LocalVertices = GlobalVertices.Select(v => Pivot.ToLocalCoords(v)).ToArray(); Indexes = new int[] { 1, 3, 2, //Poly1 1, 0, 2, //Poly2 5, 7, 6, 5, 4, 6, 1, 0, 4, 1, 5, 4, 3, 2, 6, 3, 7, 6, 1, 3, 7, 1, 5, 7, 0, 2, 6, 0, 4, 6 }; Texture = null; TextureCoords = null; TextureCoordsIndexes = null; Normals = new Vector3[] { new Vector3(-1, 0, 0), //0 new Vector3(1, 0, 0), //1 new Vector3(0, 1, 0), //2 new Vector3(0, -1, 0), //3 new Vector3(0, 0, 1), //4 new Vector3(0, 0, -1), //5 }; NormalIndexes = new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5 }; }