Esempio n. 1
0
        public void init()
        {
            // Init random generator
            _rand = new Random((int)DateTime.Now.Ticks);

            // Load character with walk animation
            int characterRes = Horde3D.addResource((int)Horde3D.ResourceTypes.SceneGraph, "models/man/man.scene.xml", 0);
            int characterWalkRes = Horde3D.addResource((int)Horde3D.ResourceTypes.Animation, "animations/man.anim", 0);
            Horde3DUtils.loadResourcesFromDisk( "../Content" );

            // Add characters
            for( int i = 0; i < 100; ++i )
            {
                Particle p = new Particle();

                // Add character to scene and apply animation
                p.node = Horde3D.addNodes(Horde3D.RootNode, characterRes);
                Horde3D.setupModelAnimStage(p.node, 0, characterWalkRes, string.Empty, false);

                // Characters start in a circle formation
                p.px = (float)Math.Sin( (i / 100.0f) * 6.28f ) * 10.0f;
                p.pz = (float)Math.Cos( (i / 100.0f) * 6.28f ) * 10.0f;

                chooseDestination( ref p );

                Horde3D.setNodeTransform( p.node, p.px, 0.02f, p.pz, 0, 0, 0, 1, 1, 1 );

                _particles.Add( p );
            }
        }
Esempio n. 2
0
        private void chooseDestination( ref Particle p )
        {                      
	        // Choose random destination within a circle
            float ang = ((_rand.Next() % 360) / 360.0f) * 6.28f;
            float rad = (_rand.Next() % 30) * 1.0f;

	        p.dx = (float)Math.Sin( ang ) * rad;
            p.dz = (float)Math.Cos(ang) * rad;        
        }