void ComponentPhysicsGeom::load(const PropertyBag &data) { resetMembers(); desiredHeight = data.getFloat("height"); collisionRadius = data.getFloat("radius"); // Create as physics geometry if(geom){dGeomDestroy(geom);} geom=0; createGeom(data.getString("physicsGeometryType")); // Set initial position { vec3 position; if(data.get("position", position)) // optional tag { setPosition(position); } } // Declare the initial state getParentBlackBoard().relayMessage(MessagePositionHasBeenSet(getPosition())); getParentBlackBoard().relayMessage(MessageOrientationHasBeenSet(getOrientation())); getParentBlackBoard().relayMessage(MessageRequestSetHeight(desiredHeight)); }
void ParticleSystem::loadParticleTemplates(const PropertyBag &data) { const size_t n = data.getNumInstances("template"); for(size_t i=0; i<n; ++i) { const PropertyBag templateData = data.getBag("template", i); const string templateName = templateData.getString("name"); const string materialName = templateData.getString("material"); Material *material = getMaterialPtr(materialName); ParticleElement element(templateData, material); templatesByName.insert(make_pair(templateName, element)); } }
void ParticleSystem::loadParticleMaterials(const PropertyBag &data, TextureFactory &textureFactory) { const size_t nMaterials = data.getNumInstances("material"); ASSERT(nMaterials>0, "particle system does not specify any materials"); for(size_t i=0; i<nMaterials; ++i) { PropertyBag MatBag = data.getBag("material", i); Material material; const string name = MatBag.getString("name"); const FileName fileName = MatBag.getString("image"); material.setTexture(textureFactory.load(fileName, false)); material.glow = MatBag.getBool("glow"); materials.insert(make_pair(name, material)); } ASSERT(!materials.empty(), "after loading, there are no particle materials in system"); }
void ComponentGate::load(const PropertyBag &data) { resetMembers(); state = ("a" == toLowerCase(data.getString("initialState"))) ? STATE_A : STATE_B; positionA = data.getVec3("positionA"); positionB = data.getVec3("positionB"); timeToTransitionAB = data.getFloat("timeToTransitionAB"); timeToTransitionBA = data.getFloat("timeToTransitionBA"); }
void ComponentDeathBehavior::load(const PropertyBag &data) { resetMembers(); deathBehavior = deathBehaviorFromString(data.getString("deathBehavior")); broadcastDeathBehavior(); // broadcast initial value }