void ParticleDesc::parseOut(ParserGroup& g) {

	ParserGroup cg;
	colorTrack.parseOut(cg);
	g.addSubGroup("color_track", cg);

	ParserGroup ag;
	alphaTrack.parseOut(ag);
	g.addSubGroup("alpha_track", ag);

	ParserGroup sg;
	sizeTrack.parseOut(sg);
	g.addSubGroup("size_track", sg);

	texInfo.parseOut(g);

	::parseOut(g, "name", mName);
	::parseOut(g, "min_angle", minAngle);
	::parseOut(g, "max_angle", maxAngle);
	::parseOut(g, "min_spin", minSpin);
	::parseOut(g, "max_spin", maxSpin);
	::parseOut(g, "min_life", minLife);
	::parseOut(g, "max_life", maxLife);
	::parseOut(g, "draw_style", drawStyle);
	::parseOut(g, "gravity_multiplier", gravityMultiplier);
	::parseOut(g, "drag_factor", dragFactor);
	::parseOut(g, "drag_function_by_velocity", dragFuncByVelocity);
	::parseOut(g, "drag_function_by_size", dragFuncBySize);
	::parseOut(g, "collition_type", collisionType);
	::parseOut(g, "bounce", bounce);

}
Example #2
0
void CloudParticleSystem::parseFrom(const ParserGroup& pg, const util::SoundMaterialParser &materialParser) {
		
	defaultParseFrom(pg, *m_eds);
	m_eds->shape = pg.getValue("shape", "");
	m_eds->randomDirection = static_cast<bool>(convertFromString<int>(pg.getValue("random_direction", ""), 0));
	if(m_eds->shape == "sphere") {		
		boost::shared_ptr<CloudParticleSystemShape> sphere(new CloudParticleSystemSphere);
		m_shape.swap(sphere);
		m_eds->sphereInnerRadius = convertFromString<float>(pg.getValue("sphere_inner_radius", ""), 0);
		m_eds->sphereOuterRadius = convertFromString<float>(pg.getValue("sphere_outer_radius", ""), 0);
	}
	else if(m_eds->shape == "box") {
		boost::shared_ptr<CloudParticleSystemShape> box(new CloudParticleSystemBox);
		m_shape.swap(box);
		m_eds->boxMin = convertVectorFromString(pg.getValue("box_min", "0,0,0"));
		m_eds->boxMax = convertVectorFromString(pg.getValue("box_max", "0,0,0"));
	}
	else if(m_eds->shape == "cylinder") {
		boost::shared_ptr<CloudParticleSystemShape> cyl(new CloudParticleSystemCylinder);
		m_shape.swap(cyl);
		m_eds->cylinderHeight = convertFromString<float>(pg.getValue("cylinder_height", ""), 0);
		m_eds->cylinderRadius = convertFromString<float>(pg.getValue("cylinder_radius", ""), 0);	
	}
	else {
		assert(!"unkown or undefined shape type");
	}
	

}
Example #3
0
void Parser::DebugPrint()
{
	// Remove old
	fclose( fopen("ParserDebug.txt", "wb") );

	for(group_map::iterator it = groups.begin(); it != groups.end(); ++it)
	{
		std::string group_name = (*it).first;
		ParserGroup group = (*it).second;

		WriteMessage("%s", group_name.c_str());
		group.DebugPrint();
		WriteMessage("\r\n");
	}
}
void PointArrayParticleSystem::parseFrom(const ParserGroup& pg, const util::SoundMaterialParser &materialParser) {
	defaultParseFrom(pg, *m_eds);
	m_eds->modelFile = pg.getValue("model", "");
	m_eds->firstVertex = convertFromString<int>(pg.getValue("first_vertex", ""), 0);
	m_eds->lastVertex = convertFromString<int>(pg.getValue("last_vertex", ""), 0);
	m_eds->scale = convertVectorFromString(pg.getValue("scale", "1,1,1"));
	m_eds->rotation = convertVectorFromString(pg.getValue("rotation", "0,0,0"));
	m_eds->useNormalsAsDirection = static_cast<bool>(convertFromString<int>(pg.getValue("direction_from_normals", ""), 0));
	m_eds->useBinormalsAsDirection = static_cast<bool>(convertFromString<int>(pg.getValue("direction_from_binormals", ""), 0));
	m_eds->randomizeBetweenVertices = static_cast<bool>(convertFromString<int>(pg.getValue("positions_between_vertices", ""), 0));
	m_eds->planePositions = static_cast<bool>(convertFromString<int>(pg.getValue("plane_positions", ""), 0));
}
void ParticleDesc::TextureInfo::parseIn(ParserGroup& prev) {

	ParserGroup& g = prev.getSubGroup("texture_info");

	::parseIn(g, "name", name);
	::parseIn(g, "path", path);
	::parseIn(g, "frames", nFrames);
	::parseIn(g, "frame_width", columns);
	::parseIn(g, "frame_height", rows);
	::parseIn(g, "alpha_type", alphaType);
	::parseIn(g, "start_frame", startFrame);
	::parseIn(g, "frames_per_sec", fps);

}
Example #6
0
	ParamUIData(Dialog& parent, int id, ParserGroup& parser, const std::vector<ParamDesc>& pd) 
	:	dlg(id, parent.getWindowHandle()), 
		data(parser, dlg, pd, cmds), 
		updateCommand(data)   
	{
		for(unsigned int i = 0; i < pd.size(); i++) 
		{		
			if(pd[i].type == PARAM_INT) {
				int value = convertFromString<int>(parser.getValue(pd[i].name, ""), convertFromString<int>(pd[i].defaultValue, 0));
				setDialogItemInt(dlg, pd[i].id1, value);
			}
			if(pd[i].type == PARAM_BOOL) {
				bool value = convertFromString<bool>(parser.getValue(pd[i].name, ""), convertFromString<bool>(pd[i].defaultValue, false));
				enableCheck(dlg, pd[i].id1, value);
			}
			if(pd[i].type == PARAM_FLOAT) {
				float value = convertFromString<float>(parser.getValue(pd[i].name, ""), convertFromString<float>(pd[i].defaultValue, 0.f));
				setDialogItemFloat(dlg, pd[i].id1, value);
			}
			if(pd[i].type == PARAM_VECTOR) {
				Vector value = convertVectorFromString(parser.getValue(pd[i].name, "0,0,0"));
				setDialogItemFloat(dlg, pd[i].id1, value.x);
				setDialogItemFloat(dlg, pd[i].id2, value.y);
				setDialogItemFloat(dlg, pd[i].id3, value.z);
			}
			if(pd[i].type == PARAM_ANIMATED_FLOAT) {
				boost::shared_ptr<ICommand> c(new AnimatedFloatCommand(dlg, parser.getSubGroup(pd[i].name)));
				cmds[pd[i].name] = c;
				dlg.getCommandList().addCommand(pd[i].id1, c.get());
			}
			if(pd[i].type == PARAM_ANIMATED_VECTOR) {
				boost::shared_ptr<ICommand> c(new AnimatedVectorCommand(dlg, parser.getSubGroup(pd[i].name)));
				cmds[pd[i].name] = c;
				dlg.getCommandList().addCommand(pd[i].id1, c.get());
			}
			if(pd[i].type == PARAM_STRING) {
				std::string str = parser.getValue(pd[i].name, pd[i].defaultValue);
				setDialogItemText(dlg, pd[i].id1, str); 
			}
			if(pd[i].type == PARAM_FILE) {
				std::string str = parser.getValue(pd[i].name, "");				
				boost::shared_ptr<ICommand> c(new FileCommand(str, pd[i].ext, pd[i].path, dlg, pd[i].id2));
				cmds[pd[i].name] = c;
				dlg.getCommandList().addCommand(pd[i].id1, c.get());
			}
			if(pd[i].type == PARAM_SELECTION) 
			{
				ComboBox_ResetContent(dlg.getItem(pd[i].id1));
				std::string sel = parser.getValue(pd[i].name, "");

				bool found = false;
				for(unsigned int j = 0; j < pd[i].selections.size(); j++) 
				{
					ComboBox_AddString(dlg.getItem(pd[i].id1), pd[i].selections[j].c_str());
					if(pd[i].selections[j] == sel)
					{
						ComboBox_SetCurSel(dlg.getItem(pd[i].id1), j);
						found = true;
					}
				}

				if(!found)
					ComboBox_SetCurSel(dlg.getItem(pd[i].id1), 0);
			}
			
		}
		
		dlg.getCommandList().addCommand(IDC_UPDATE, &updateCommand);
		
	}