www.pudn.com > packmk2.rar > parameterhandler.cpp


#include "parameterhandler.h" 
#include  
 
#define f_step		 0.0001f 
#define f_stepXL	 0.001f 
 
parameterhandler::parameterhandler() 
{ 
	id = 0; 
	add_parameter(p_fStrength,		"Noise strength",			dtFloat); 
	add_parameter(p_bDisplace,		"Toggle displacement",		dtBool);		 
	add_parameter(p_bSmooth,		"Smooth heightmap",			dtBool);	 
	add_parameter(p_bReflRefrStrength,"Reflection/Refraction strength",		dtFloat); 
	add_parameter(p_iOctaves,		"Octaves",					dtInt); 
	add_parameter(p_fScale,			"Noise scale",				dtFloat); 
	add_parameter(p_fFalloff,		"Noise falloff",			dtFloat); 
	add_parameter(p_fAnimspeed,		"Animation speed",			dtFloat); 
	add_parameter(p_fTimemulti,		"Animation multi",			dtFloat); 
	add_parameter(p_bPaused,		"Pause animation",			dtBool);	 
	add_parameter(p_bDisplayTargets,"Display rendertargets(D)",	dtBool);		 
	add_parameter(p_fSunPosAlpha,	"Sun location horizontal",	dtFloat); 
	add_parameter(p_fSunPosTheta,	"Sun location vertical",	dtFloat);		 
	add_parameter(p_fSunShininess,	"Sun shininess",			dtFloat); 
	add_parameter(p_fSunStrength,	"Sun strength",				dtFloat);		 
	add_parameter(p_bAsPoints,		"Render as points",			dtBool);	 
	add_parameter(p_fLODbias,		"Mipmap LOD Bias",			dtFloat);		 
	add_parameter(p_fElevation,		"Projector elevation",		dtFloat); 
	add_parameter(p_fWaterColourR,	"water colour Red",			dtFloat); 
	add_parameter(p_fWaterColourG,	"water colour Green",		dtFloat); 
	add_parameter(p_fWaterColourB,	"water colour Blue",		dtFloat); 
	add_parameter(p_bDrawDuckie,	"Render Duckie",		dtBool);		 
	add_parameter(p_bDrawIsland,	"Render Island",		dtBool);		 
	add_parameter(p_bDiffuseRefl,	"Diffuse sky reflection",	dtBool);		 
	 
} 
 
parameterhandler::~parameterhandler() 
{ 
	 
} 
 
bool parameterhandler::add_parameter(unsigned int id, char name[32], unsigned int datatype) 
{ 
	sprintf ( params[id].name, "%s", name); 
	params[id].datatype = datatype; 
	return true; 
} 
 
void parameterhandler::value_increase() 
{ 
	switch(params[id].datatype) 
	{ 
	case dtBool: 
		{ 
			params[id].bData = !params[id].bData; 
			break; 
		} 
	case dtInt: 
		{ 
			params[id].iData += 1; 
			break; 
		} 
	case dtFloat: 
		{ 
			params[id].fData += f_step; 
			break; 
		} 
	}; 
 
} 
 
void parameterhandler::value_decrease() 
{ 
	switch(params[id].datatype) 
	{ 
	case dtBool: 
		{ 
			params[id].bData = !params[id].bData; 
			break; 
		} 
	case dtInt: 
		{ 
			params[id].iData -= 1; 
			break; 
		} 
	case dtFloat: 
		{ 
			params[id].fData -= f_step; 
			break; 
		} 
	}; 
} 
 
void parameterhandler::value_increaseXL() 
{ 
	switch(params[id].datatype) 
	{ 
	case dtBool: 
		{ 
			params[id].bData = !params[id].bData; 
			break; 
		} 
	case dtInt: 
		{ 
			params[id].iData += 10; 
			break; 
		} 
	case dtFloat: 
		{ 
			params[id].fData *= 1.05; 
			break; 
		} 
	}; 
 
} 
 
void parameterhandler::value_decreaseXL() 
{ 
	switch(params[id].datatype) 
	{ 
	case dtBool: 
		{ 
			params[id].bData = !params[id].bData; 
			break; 
		} 
	case dtInt: 
		{ 
			params[id].iData -= 10; 
			break; 
		} 
	case dtFloat: 
		{ 
			params[id].fData *= 0.95; 
			break; 
		} 
	}; 
} 
 
void parameterhandler::value_reset() 
{ 
	switch(params[id].datatype) 
	{ 
	case dtBool: 
		{ 
			//params[id].bData = !params[id].bData; 
			break; 
		} 
	case dtInt: 
		{ 
			//params[id].iData -= 1; 
			break; 
		} 
	case dtFloat: 
		{ 
			params[id].fData = 0; 
			break; 
		} 
	}; 
} 
 
const char* parameterhandler::get_display() 
{ 
	switch(params[id].datatype) 
	{ 
	case dtBool: 
		{ 
			if (params[id].bData)  
				sprintf ( text, "%s = true", params[id].name); 
			else  
				sprintf ( text, "%s = false", params[id].name); 
			break; 
		} 
	case dtInt: 
		{ 
			sprintf ( text, "%s = %i", params[id].name, params[id].iData);			 
			break; 
		} 
	case dtFloat: 
		{ 
			sprintf ( text, "%s = %f", params[id].name, params[id].fData);			 
			break; 
		} 
	}; 
	return this->text;	 
}