Exemple #1
0
        private PhysicObject SpawnPrimitive(Vector3 pos,Matrix ori)
        {
            int prim = random.Next(3);
            PhysicObject physicObj;

            float a = 1.0f + (float)random.NextDouble() * 1.0f;
            float b = a + (float)random.NextDouble() * 0.5f;
            float c = 2.0f / a / b;

            switch (prim)
            {
                case 0:
                    physicObj = new BoxObject(this, boxModel, new Vector3(a, b, c), ori, pos);
                    break;
                case 1:
                    physicObj = new SphereObject(this, sphereModel, 0.5f, ori, pos);
                    break;
                case 2:
                    physicObj = new CapsuleObject(this, capsuleModel, 0.5f,1f, ori, pos);
                    break;
                default:
                    physicObj = new SphereObject(this, sphereModel, (float)random.Next(5, 15), ori, pos);
                    break;
            }
            return physicObj;
        }
Exemple #2
0
        private void CreateScene0()
        {
            // Newton was here

            BoxObject holder = new BoxObject(this, boxModel, new Vector3(5, 1, 1), Matrix.Identity, new Vector3(-10, -5, 5));
            holder.PhysicsBody.Immovable = true;
            this.Components.Add(holder);

            for (int i = 0; i < 5; i++)
            {
                SphereObject obj = new SphereObject(this, sphereModel, 0.5f, Matrix.Identity, new Vector3(-12 + i, -8, 5));
                obj.PhysicsBody.CollisionSkin.SetMaterialProperties(0, new MaterialProperties(1.0f, 0.2f, 0.2f));
                obj.PhysicsBody.AllowFreezing = false;

                ConstraintMaxDistance maxDist1 = new ConstraintMaxDistance(holder.PhysicsBody, new Vector3(-2 + i, -0.5f, 0.5f), obj.PhysicsBody, Vector3.Up * 0.5f, 3f);
                ConstraintMaxDistance maxDist2 = new ConstraintMaxDistance(holder.PhysicsBody, new Vector3(-2 + i, -0.5f, -0.5f), obj.PhysicsBody, Vector3.Up * 0.5f, 3f);
                maxDist1.EnableConstraint();
                maxDist2.EnableConstraint();

                this.Components.Add(obj);

                if (i == 4)
                    obj.PhysicsBody.MoveTo(new Vector3(-6, -6, 5), Matrix.Identity);
                if (i == 3)
                    obj.PhysicsBody.MoveTo(new Vector3(-7, -6, 5), Matrix.Identity);

            }
        }