pair<IParticleGroup*,IRenderNode*> ParticleGroupBuilder::BuildGroup(PropertyList& plist, string group) { string type = plist.GetString(group + ".type"); if (type == "glow") { Emitter<ParticleTypeGlow >* emitter = BuildEmitter<ParticleTypeGlow >(plist, group); EnergyParticleGroup<ParticleTypeGlow > *particleGroup = new EnergyParticleGroup<ParticleTypeGlow >(plist.GetInt(group + ".count"), emitter); // modifiers for (int i=0; i < plist.ListSize(group + ".modifiers"); i++ ) { string name = plist.GetString(group + ".modifiers", i); logger.info << "Adding modifier: " << name << logger.end; IModifier<ParticleTypeGlow >* mof = BuildModifier<ParticleTypeGlow >(plist, group + "." + name); if (mof != NULL) particleGroup->AddModifier(mof); } plist.SetIntP(&(particleGroup->totalCount), group + ".count"); plist.SetBoolP(&(particleGroup->active), group + ".active"); int *m = (int*)&(particleGroup->mode); plist.SetIntP(m, group + ".mode"); // TwEnumVal modeEV[] = {{EnergyParticleGroup::CONTINUOUS, "Continuous"}, // {EnergyParticleGroup::ALL, "All"}, // {EnergyParticleGroup::NONE, "None"}}; // TwType modeType = TwDefineEnum("RespawnMode", modeEV, 3); return make_pair(particleGroup,BuildRenderNode<ParticleTypeGlow,EnergyParticleGroup<ParticleTypeGlow> >(plist, group, particleGroup)); } else { logger.info << "Unknown type: " << type << logger.end; } return make_pair<IParticleGroup*,IRenderNode*>(NULL,NULL); }