mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 02:15:43 -04:00
*** empty log message ***
This commit is contained in:
parent
9637ce6035
commit
6048676bd5
@ -54,8 +54,12 @@ ParticleSystem(int pool_size) :
|
|||||||
_render_parent = new NamedNode("ParticleSystem default render parent");
|
_render_parent = new NamedNode("ParticleSystem default render parent");
|
||||||
|
|
||||||
set_emitter(new SphereSurfaceEmitter);
|
set_emitter(new SphereSurfaceEmitter);
|
||||||
|
|
||||||
set_renderer(new PointParticleRenderer);
|
set_renderer(new PointParticleRenderer);
|
||||||
set_factory(new PointParticleFactory);
|
|
||||||
|
//set_factory(new PointParticleFactory);
|
||||||
|
_factory = new PointParticleFactory;
|
||||||
|
clear_physics_objects();
|
||||||
|
|
||||||
set_pool_size(pool_size);
|
set_pool_size(pool_size);
|
||||||
}
|
}
|
||||||
@ -401,13 +405,6 @@ resize_pool(int size) {
|
|||||||
} else {
|
} else {
|
||||||
// subtract elements
|
// subtract elements
|
||||||
delta = -delta;
|
delta = -delta;
|
||||||
if (delta >= _physics_objects.size()) {
|
|
||||||
#ifdef PSDEBUG
|
|
||||||
cout << "Weird... do we have a negative pool size??" << endl;
|
|
||||||
#endif
|
|
||||||
_physics_objects.erase(_physics_objects.begin(), _physics_objects.end());
|
|
||||||
_free_particle_fifo.clear();
|
|
||||||
} else {
|
|
||||||
for (i = 0; i < delta; i++) {
|
for (i = 0; i < delta; i++) {
|
||||||
int delete_index = _physics_objects.size()-1;
|
int delete_index = _physics_objects.size()-1;
|
||||||
BaseParticle *bp = (BaseParticle *) _physics_objects[delete_index].p();
|
BaseParticle *bp = (BaseParticle *) _physics_objects[delete_index].p();
|
||||||
@ -437,7 +434,6 @@ resize_pool(int size) {
|
|||||||
_physics_objects.pop_back();
|
_physics_objects.pop_back();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
_renderer->resize_pool(_particle_pool_size);
|
_renderer->resize_pool(_particle_pool_size);
|
||||||
|
|
||||||
@ -523,6 +519,7 @@ update(float dt) {
|
|||||||
#ifdef PARTICLE_SYSTEM_UPDATE_SENTRIES
|
#ifdef PARTICLE_SYSTEM_UPDATE_SENTRIES
|
||||||
cout << "particle update complete" << endl;
|
cout << "particle update complete" << endl;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef PSSANITYCHECK
|
#ifdef PSSANITYCHECK
|
||||||
|
@ -209,6 +209,9 @@ ParticleSystemManager ps_manager;
|
|||||||
|
|
||||||
PT(ParticleSystem) particle_system = new ParticleSystem(PARTICLE_SYSTEM_POOL_SIZE);
|
PT(ParticleSystem) particle_system = new ParticleSystem(PARTICLE_SYSTEM_POOL_SIZE);
|
||||||
|
|
||||||
|
static int particles_added = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
#if defined POINT_PARTICLES
|
#if defined POINT_PARTICLES
|
||||||
PT(PointParticleFactory) pf = new PointParticleFactory;
|
PT(PointParticleFactory) pf = new PointParticleFactory;
|
||||||
#elif defined ZSPIN_PARTICLES
|
#elif defined ZSPIN_PARTICLES
|
||||||
@ -216,6 +219,14 @@ PT(ParticleSystem) particle_system = new ParticleSystem(PARTICLE_SYSTEM_POOL_SIZ
|
|||||||
#elif defined ORIENTED_PARTICLES
|
#elif defined ORIENTED_PARTICLES
|
||||||
PT(OrientedParticleFactory) pf = new OrientedParticleFactory;
|
PT(OrientedParticleFactory) pf = new OrientedParticleFactory;
|
||||||
#endif
|
#endif
|
||||||
|
*/
|
||||||
|
#if defined POINT_PARTICLES
|
||||||
|
PT(BaseParticleFactory) pf = new PointParticleFactory;
|
||||||
|
#elif defined ZSPIN_PARTICLES
|
||||||
|
PT(BaseParticleFactory) pf = new ZSpinParticleFactory;
|
||||||
|
#elif defined ORIENTED_PARTICLES
|
||||||
|
PT(BaseParticleFactory) pf = new OrientedParticleFactory;
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined GEOM_PARTICLE_RENDERER
|
#if defined GEOM_PARTICLE_RENDERER
|
||||||
PT(GeomParticleRenderer) pr = new GeomParticleRenderer;
|
PT(GeomParticleRenderer) pr = new GeomParticleRenderer;
|
||||||
@ -271,11 +282,10 @@ event_csn_update(CPT_Event) {
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
event_add_particles(CPT_Event) {
|
event_add_particles(CPT_Event) {
|
||||||
static initialized = 0;
|
|
||||||
|
|
||||||
// guard against additional "P" presses (bad things happen)
|
// guard against additional "P" presses (bad things happen)
|
||||||
if(initialized) return;
|
if(particles_added) return;
|
||||||
initialized = 1;
|
particles_added = 1;
|
||||||
|
|
||||||
// renderer setup
|
// renderer setup
|
||||||
#ifdef PARTICLE_RENDERER_ALPHA_MODE
|
#ifdef PARTICLE_RENDERER_ALPHA_MODE
|
||||||
@ -364,6 +374,7 @@ event_add_particles(CPT_Event) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// factory setup
|
// factory setup
|
||||||
|
|
||||||
#ifdef PARTICLE_FACTORY_LIFESPAN_BASE
|
#ifdef PARTICLE_FACTORY_LIFESPAN_BASE
|
||||||
pf->set_lifespan_base(PARTICLE_FACTORY_LIFESPAN_BASE);
|
pf->set_lifespan_base(PARTICLE_FACTORY_LIFESPAN_BASE);
|
||||||
#endif
|
#endif
|
||||||
@ -560,17 +571,52 @@ event_more_particles(CPT_Event) {
|
|||||||
0,
|
0,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if(!particles_added) return;
|
||||||
|
|
||||||
if (0 == sizes[index]) index = 0;
|
if (0 == sizes[index]) index = 0;
|
||||||
set_pool_size(sizes[index]);
|
set_pool_size(sizes[index]);
|
||||||
index++;
|
index++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
event_switch_particle_factory_type(CPT_Event) {
|
||||||
|
static int index = 0;
|
||||||
|
|
||||||
|
if(!particles_added) return;
|
||||||
|
|
||||||
|
cout << "Switching to a";
|
||||||
|
|
||||||
|
switch (index) {
|
||||||
|
case 0:
|
||||||
|
cout << " point";
|
||||||
|
pf = new PointParticleFactory;
|
||||||
|
particle_system->set_factory(pf);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
cout << " z-spin";
|
||||||
|
pf = new ZSpinParticleFactory;
|
||||||
|
particle_system->set_factory(pf);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
cout << "n oriented";
|
||||||
|
pf = new OrientedParticleFactory;
|
||||||
|
particle_system->set_factory(pf);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
cout << " particle factory" << endl;
|
||||||
|
|
||||||
|
index++;
|
||||||
|
if (index > 2) index = 0;
|
||||||
|
}
|
||||||
|
|
||||||
void demo_keys(EventHandler&) {
|
void demo_keys(EventHandler&) {
|
||||||
new RenderRelation( lights, dlight );
|
new RenderRelation( lights, dlight );
|
||||||
have_dlight = true;
|
have_dlight = true;
|
||||||
|
|
||||||
event_handler.add_hook("p", event_add_particles);
|
event_handler.add_hook("p", event_add_particles);
|
||||||
event_handler.add_hook("m", event_more_particles);
|
event_handler.add_hook("m", event_more_particles);
|
||||||
|
event_handler.add_hook(",", event_switch_particle_factory_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user