I am new to xna development and want to place cubes from Primitives3D sample , passing the position vector to the constructor. Unfortunately, this does not work. Instead, it just spins around.
This is how I changed the code of the cubeprimitive class:
public class CubePrimitive : GeometricPrimitive { public Vector3 position; /// <summary> /// Constructs a new cube primitive, using default settings. /// </summary> public CubePrimitive(GraphicsDevice graphicsDevice) : this(graphicsDevice, 1, new Vector3(-3,0,0)) { } /// <summary> /// Constructs a new cube primitive, with the specified size. /// </summary> public CubePrimitive(GraphicsDevice graphicsDevice, float size, Vector3 posi) { this.position = posi; // A cube has six faces, each one pointing in a different direction. Vector3[] normals = { new Vector3(0, 0, 1), new Vector3(0, 0, -1), new Vector3(1, 0, 0), new Vector3(-1, 0, 0), new Vector3(0, 1, 0), new Vector3(0, -1, 0), }; // Create each face in turn. foreach (Vector3 normal in normals) { // Get two vectors perpendicular to the face normal and to each other. Vector3 side1 = new Vector3(normal.Y, normal.Z, normal.X); Vector3 side2 = Vector3.Cross(normal, side1); // Six indices (two triangles) per face. AddIndex(CurrentVertex + 0); AddIndex(CurrentVertex + 1); AddIndex(CurrentVertex + 2); AddIndex(CurrentVertex + 0); AddIndex(CurrentVertex + 2); AddIndex(CurrentVertex + 3); // Four vertices per face. AddVertex(posi+(normal - side1 - side2) * size / 2, normal); AddVertex(posi + (normal - side1 + side2) * size / 2, normal); AddVertex(posi + (normal + side1 + side2) * size / 2, normal); AddVertex(posi + (normal + side1 - side2) * size / 2, normal); } InitializePrimitive(graphicsDevice); } }
Could you show me how to change it correctly? .. thanks in advance :)
primitive xna 3d cube
Barret
source share