public override void InitializeComponents()
        {
            SolidComponent s = new SolidComponent(this.game, Game1.models["small_cube"], Color.Violet);
            s.SetWorld(3f, new Vector3(5, 5.5f, 1), Quaternion.Identity);
            s.Freeze();
            this.Add(s);

            s = new SolidComponent(this.game, Game1.models["small_cube"], Color.Violet);
            s.SetWorld(3f, new Vector3(5, 7.4f, 1), Quaternion.Identity);
            s.Freeze();
            this.Add(s);

            TrackOnCollision t = new TrackOnCollision(this.game, Game1.models["obelisk"], Color.Red);
            t.SetWorld(0.75f, new Vector3(5,5.69f,3.15f),
                Quaternion.CreateFromRotationMatrix(Matrix.CreateRotationY(MathHelper.ToRadians(-65f)) * Matrix.CreateRotationZ(MathHelper.ToRadians(90f))));
            this.Add(t);

            t = new TrackOnCollision(this.game, Game1.models["obelisk"], Color.Red);
            t.SetWorld(0.75f, new Vector3(5, 7.12f, 3.15f),
                Quaternion.CreateFromRotationMatrix(Matrix.CreateRotationY(MathHelper.ToRadians(65f)) * Matrix.CreateRotationZ(MathHelper.ToRadians(90f))));
            this.Add(t);

            for (int i = 0; i < 3; i++)
            {
                t = new TrackOnCollision(this.game, Game1.models["obelisk"], Color.Red);
                t.SetWorld(0.75f, new Vector3(5,4.1f - i * 2f,1.5f),
                    Quaternion.CreateFromRotationMatrix(Matrix.CreateRotationY(MathHelper.ToRadians(90f)) * Matrix.CreateRotationZ(MathHelper.ToRadians(90f))));
                this.Add(t);
            }

            for (int i = 0; i < 3; i++)
            {
                t = new TrackOnCollision(this.game, Game1.models["obelisk"], Color.Red);
                t.SetWorld(0.75f, new Vector3(5, 8.5f + i*2f, 1.5f),
                    Quaternion.CreateFromRotationMatrix(Matrix.CreateRotationY(MathHelper.ToRadians(90f)) * Matrix.CreateRotationZ(MathHelper.ToRadians(90f))));
                this.Add(t);
            }

            //    s = new SolidComponent(this.game, Game1.models["sphere"], Color.Brown);
            //s.SetWorld(1f, new Vector3(5, 6.2f, 20), Quaternion.Identity);
            //this.Add(s);
        }
        public override void InitializeComponents()
        {
            TrackOnCollision t;

            for (int i = 0; i < 15; i++)
            {
                t = new TrackOnCollision(this.game, Game1.models["obelisk"], Color.Blue);
                t.SetWorld(.75f, new Vector3(-18, 18.85f - i*2f, 1.5f),
                    Quaternion.CreateFromRotationMatrix(Matrix.CreateRotationY(MathHelper.ToRadians(90f)) * Matrix.CreateRotationZ(MathHelper.ToRadians(90f))));
                this.Add(t);
            }

            t = new TrackOnCollision(this.game, Game1.models["obelisk"], Color.Blue);
            t.SetWorld(.75f, new Vector3(-17.3f, -11.15f, 1.5f),
                Quaternion.CreateFromRotationMatrix(Matrix.CreateRotationY(MathHelper.ToRadians(90f)) * Matrix.CreateRotationZ(MathHelper.ToRadians(120f))));
            this.Add(t);

            t = new TrackOnCollision(this.game, Game1.models["obelisk"], Color.Blue);
            t.SetWorld(.75f, new Vector3(-16, -12.15f, 1.5f),
                Quaternion.CreateFromRotationMatrix(Matrix.CreateRotationY(MathHelper.ToRadians(90f)) * Matrix.CreateRotationZ(MathHelper.ToRadians(150f))));
            this.Add(t);
            t = new TrackOnCollision(this.game, Game1.models["obelisk"], Color.Blue);
            t.SetWorld(.75f, new Vector3(-14.2f, -12.55f, 1.5f),
                Quaternion.CreateFromRotationMatrix(Matrix.CreateRotationY(MathHelper.ToRadians(90f)) * Matrix.CreateRotationZ(MathHelper.ToRadians(180f))));
            this.Add(t);

            TrackOnCollision tlast = t;
            //create a stack of dominos on top of last, which the 4th element rests on.
            for (int i = 0; i < 5; i++)
            {
                t = new TrackOnCollision(this.game, Game1.models["obelisk"], Color.Blue);
                t.SetWorld(.75f, new Vector3(-14.2f, -12.55f, 4.5f + i*3f),
                    Quaternion.CreateFromRotationMatrix(Matrix.CreateRotationY(MathHelper.ToRadians(90f)) * Matrix.CreateRotationZ(MathHelper.ToRadians(180f))));
                this.Add(t);
                GenericConstraint c = new GenericConstraint(tlast, t, new Henge3D.Frame(tlast.Position), Henge3D.Axes.All, Vector3.Zero, Vector3.Zero,
                    Henge3D.Axes.All, Vector3.Zero, Vector3.Zero);
                c.IsCollisionEnabled = false;
                this.Add(c);
                tlast = t;
            }
            t.Freeze();
        }