Example #1
0
        void createVehicle(Vector3 position)
        {
            float width       = 15;
            float height      = 2;
            float length      = 5;
            float wheelWidth  = 1;
            float wheelRadius = 2;

            BepuEntity chassis = createBox(position, width, height, length);

            chassis.LoadContent();
            chassis.body.Mass = 100;

            BepuEntity    wheel;
            RevoluteJoint joint;

            wheel = createWheel(new Vector3(position.X - (width / 2) + wheelRadius, position.Y, position.Z - (length / 2) - wheelWidth), wheelWidth, wheelRadius);
            joint = new RevoluteJoint(chassis.body, wheel.body, wheel.body.Position, new Vector3(0, 0, -1));
            space.Add(joint);

            wheel = createWheel(new Vector3(position.X + (width / 2) - wheelRadius, position.Y, position.Z - (length / 2) - wheelWidth), wheelWidth, wheelRadius);
            joint = new RevoluteJoint(chassis.body, wheel.body, wheel.body.Position, new Vector3(0, 0, -1));
            space.Add(joint);

            wheel = createWheel(new Vector3(position.X - (width / 2) + wheelRadius, position.Y, position.Z + (length / 2) + wheelWidth), wheelWidth, wheelRadius);
            joint = new RevoluteJoint(chassis.body, wheel.body, wheel.body.Position, new Vector3(0, 0, -1));
            space.Add(joint);

            wheel = createWheel(new Vector3(position.X + (width / 2) - wheelRadius, position.Y, position.Z + (length / 2) + wheelWidth), wheelWidth, wheelRadius);
            joint = new RevoluteJoint(chassis.body, wheel.body, wheel.body.Position, new Vector3(0, 0, -1));
            space.Add(joint);
        }
Example #2
0
        BepuEntity createBox(Vector3 position, float width, float height, float length)
        {
            BepuEntity theBox = new BepuEntity();

            theBox.modelName = "cube";
            theBox.LoadContent();
            theBox.localTransform = Matrix.CreateScale(new Vector3(width, height, length));
            theBox.body           = new Box(position, width, height, length, 1);
            theBox.diffuse        = new Vector3((float)random.NextDouble(), (float)random.NextDouble(), (float)random.NextDouble());
            theBox.configureEvents();
            space.Add(theBox.body);
            children.Add(theBox);
            return(theBox);
        }
Example #3
0
        BepuEntity createWheel(Vector3 position, float wheelWidth, float wheelRadius)
        {
            BepuEntity wheelEntity = new BepuEntity();

            wheelEntity.modelName = "cyl";
            wheelEntity.LoadContent();
            wheelEntity.body             = new Cylinder(position, wheelWidth, wheelRadius, wheelRadius);
            wheelEntity.localTransform   = Matrix.CreateScale(wheelRadius, wheelWidth, wheelRadius);
            wheelEntity.body.Orientation = Quaternion.CreateFromAxisAngle(new Vector3(1, 0, 0), MathHelper.PiOver2);
            wheelEntity.diffuse          = new Vector3((float)random.NextDouble(), (float)random.NextDouble(), (float)random.NextDouble());
            space.Add(wheelEntity.body);
            children.Add(wheelEntity);
            return(wheelEntity);
        }
Example #4
0
        BepuEntity fireBall()
        {
            BepuEntity ball = new BepuEntity();

            ball.modelName = "sphere";
            float size = 1;

            ball.localTransform = Matrix.CreateScale(new Vector3(size, size, size));
            ball.body           = new Sphere(Camera.Position + (Camera.Look * 8), size, size * 10);
            ball.diffuse        = new Vector3((float)random.NextDouble(), (float)random.NextDouble(), (float)random.NextDouble());
            space.Add(ball.body);
            ball.LoadContent();
            ball.configureEvents();
            ball.body.ApplyImpulse(Camera.Position, Camera.Look * 500);
            children.Add(ball);
            return(ball);
        }
Example #5
0
        BepuEntity createFromMesh(Vector3 position, string mesh, float scale)
        {
            BepuEntity entity = new BepuEntity();

            entity.modelName = mesh;
            entity.LoadContent();
            Vector3[] vertices;
            int[]     indices;
            TriangleMesh.GetVerticesAndIndicesFromModel(entity.model, out vertices, out indices);
            AffineTransform localTransform = new AffineTransform(new Vector3(scale, scale, scale), Quaternion.Identity, new Vector3(0, 0, 0));
            MobileMesh      mobileMesh     = new MobileMesh(vertices, indices, localTransform, BEPUphysics.CollisionShapes.MobileMeshSolidity.Counterclockwise, 1);

            entity.localTransform = Matrix.CreateScale(scale, scale, scale);
            entity.body           = mobileMesh;
            entity.HasColor       = true;
            entity.diffuse        = new Vector3((float)random.NextDouble(), (float)random.NextDouble(), (float)random.NextDouble());
            entity.body.Position  = position;
            space.Add(entity.body);
            children.Add(entity);
            return(entity);
        }
Example #6
0
        BepuEntity createCog(Vector3 position, float radius, int gears)
        {
            BepuEntity wheel = createWheel(position, 1, radius);

            float angleDelta = (MathHelper.Pi * 2.0f) / (float)gears;

            float cogHeight = radius * 0.2f;

            for (int i = 0; i < gears; i++)
            {
                float      angle  = ((float)i) * angleDelta;
                float      x      = (radius + (cogHeight / 2.0f)) * (float)Math.Sin(angle);
                float      y      = (radius + (cogHeight / 2.0f)) * (float)Math.Cos(angle);
                Vector3    cogPos = new Vector3(x, y, 0) + position;
                BepuEntity cog    = createBox(cogPos, cogHeight, cogHeight, 1);
                cog.LoadContent();
                cog.body.Orientation = Quaternion.CreateFromAxisAngle(new Vector3(0, 0, -1), angle);
                WeldJoint weld = new WeldJoint(wheel.body, cog.body);
                space.Add(weld);
            }

            return(wheel);
        }
 BepuEntity fireBall()
 {
     BepuEntity ball = new BepuEntity();
     ball.modelName = "sphere";
     float size = 1;
     ball.localTransform = Matrix.CreateScale(new Vector3(size, size, size));
     ball.body = new Sphere(Camera.Position + (Camera.Look * 8), size, size * 100);
     ball.diffuse = new Vector3((float)random.NextDouble(), (float)random.NextDouble(), (float)random.NextDouble());
     space.Add(ball.body);
     ball.LoadContent();
     ball.configureEvents();
     ball.body.ApplyImpulse(Vector3.Zero, Camera.Look * 500);
     children.Add(ball);
     return ball;
 }
 BepuEntity createWheel(Vector3 position, float wheelWidth, float wheelRadius)
 {
     BepuEntity wheelEntity = new BepuEntity();
     wheelEntity.modelName = "cyl";
     wheelEntity.LoadContent();
     wheelEntity.body = new Cylinder(position, wheelWidth, wheelRadius, wheelRadius);
     wheelEntity.localTransform = Matrix.CreateScale(wheelRadius, wheelWidth, wheelRadius);
     wheelEntity.body.Orientation = Quaternion.CreateFromAxisAngle(new Vector3(1, 0, 0), MathHelper.PiOver2);
     wheelEntity.diffuse = new Vector3((float)random.NextDouble(), (float)random.NextDouble(), (float)random.NextDouble());
     space.Add(wheelEntity.body);
     children.Add(wheelEntity);
     return wheelEntity;
 }
 BepuEntity createFromMesh(Vector3 position, string mesh, float scale)
 {
     BepuEntity entity = new BepuEntity();
     entity.modelName = mesh;
     entity.LoadContent();
     Vector3[] vertices;
     int[] indices;
     TriangleMesh.GetVerticesAndIndicesFromModel(entity.model, out vertices, out indices);
     AffineTransform localTransform = new AffineTransform(new Vector3(scale, scale, scale), Quaternion.Identity, new Vector3(0, 0, 0));
     MobileMesh mobileMesh = new MobileMesh(vertices, indices, localTransform, BEPUphysics.CollisionShapes.MobileMeshSolidity.Counterclockwise, 1);
     entity.localTransform = Matrix.CreateScale(scale, scale, scale);
     entity.body = mobileMesh;
     entity.HasColor = true;
     entity.diffuse = new Vector3((float)random.NextDouble(), (float)random.NextDouble(), (float)random.NextDouble());
     entity.body.Position = position;
     space.Add(entity.body);
     children.Add(entity);
     return entity;
 }
 BepuEntity createBox(Vector3 position, float width, float height, float length)
 {
     BepuEntity theBox = new BepuEntity();
     theBox.modelName = "cube";
     theBox.LoadContent();
     theBox.localTransform = Matrix.CreateScale(new Vector3(width, height, length));
     theBox.body = new Box(position, width, height, length, 1);
     theBox.diffuse = new Vector3((float)random.NextDouble(), (float)random.NextDouble(), (float)random.NextDouble());
     theBox.configureEvents();
     space.Add(theBox.body);
     children.Add(theBox);
     return theBox;
 }
 void fireBall()
 {
     BepuEntity ball = new BepuEntity();
     ball.modelName = "sphere";
     float size = 2;
     ball.localTransform = Matrix.CreateScale(new Vector3(size, size, size));
     ball.body = new Sphere(Camera.pos + (Camera.look * 5), size, size);
     ball.diffuse = new Vector3((float)random.NextDouble(), (float)random.NextDouble(), (float)random.NextDouble());
     space.Add(ball.body);
     ball.LoadContent();
     ball.body.ApplyImpulse(Vector3.Zero, Camera.look * 50);
     children.Add(ball);
 }