コード例 #1
0
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));
}
コード例 #2
0
ファイル: ParticleSystem.cpp プロジェクト: foxostro/heroman
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));
	}
}
コード例 #3
0
ファイル: ParticleSystem.cpp プロジェクト: foxostro/heroman
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");
}
コード例 #4
0
ファイル: ComponentGate.cpp プロジェクト: foxostro/heroman
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");
}
コード例 #5
0
void ComponentDeathBehavior::load(const PropertyBag &data) {
	resetMembers();
	deathBehavior = deathBehaviorFromString(data.getString("deathBehavior"));
	broadcastDeathBehavior(); // broadcast initial value
}