
enum { [!output CLASS_NAME_LOWER]_params };

[!if SPACE_WARP_TYPE]
enum {obj_params};
[!endif]

//TODO: Add enums for various parameters
enum { 
[!if UI_BY_MAX == null]
	pb_spin,
[!endif]
[!if TEX_TYPE]
	pb_coords,
[!endif]	
[!if FILTER_KERNEL_TYPE]
	pb_param1,
	pb_param2,
[!endif]
[!if SAMPLER_TYPE]
	pb_quality,
	pb_enable,
	pb_adapt_enable,
	pb_adapt_threshold,
[!endif]	
[!if SHADER_TYPE]
	pb_diffuse, 
	pb_brightness,
[!endif]
[!if SKIN_GIZMO_TYPE]
	pb_gizmoparam_name,
[!endif]
[!if ATMOSPHERIC_TYPE]
	pb_gizmos,
[!endif]	
[!if MATERIAL_TYPE]
	mtl_mat1,
	mtl_mat1_on,

[!endif]
};

[!if SPACE_WARP_TYPE]
// For the Space Warp Object
enum{
	pb_spin_obj
};
[!endif]

[!if SKIN_GIZMO_TYPE]
/************************************************************************************************
*
	The following PBAccessor allows the Skin Modifier's Gizmo list to be kept upto date when the 
	name changes in the gizmo rollout
*
\************************************************************************************************/

class [!output CLASS_NAME]PBAccessor : public PBAccessor
{ 
public:
	void Set(PB2Value& v, ReferenceMaker* owner, ParamID id, int tabIndex, TimeValue t)    // set from v
	{
		[!output CLASS_NAME]* p = ([!output CLASS_NAME]*)owner;

		switch (id)
		{
			//Check all name changes and pass them onto the Skin modifier
			case pb_gizmoparam_name:

					if (p->bonesMod)
						p->bonesMod->UpdateGizmoList();
				
				break;
		}
	}
};
[!endif]

[!if SKIN_GIZMO_TYPE]
static [!output CLASS_NAME]PBAccessor gizmoJoint_accessor;
[!endif]

static ParamBlockDesc2 [!output CLASS_NAME_LOWER]_param_blk ( [!output CLASS_NAME_LOWER]_params, _T("params"),  0, &[!output CLASS_NAME]Desc, 
[!if UI_BY_MAX]
	P_AUTO_CONSTRUCT, PBLOCK_REF,
[!else]
	P_AUTO_CONSTRUCT + P_AUTO_UI, PBLOCK_REF, 
	//rollout
	IDD_PANEL, IDS_PARAMS, 0, 0, NULL,
	// params
	pb_spin, 			_T("spin"), 		TYPE_FLOAT, 	P_ANIMATABLE, 	IDS_SPIN, 
		p_default, 		0.1f, 
		p_range, 		0.0f,1000.0f, 
		p_ui, 			TYPE_SPINNER,		EDITTYPE_FLOAT, IDC_EDIT,	IDC_SPIN, 0.01f, 
		end,
[!endif]
[!if TEX_TYPE]
	pb_coords,			_T("coords"),		TYPE_REFTARG,	P_OWNERS_REF,	IDS_COORDS,
		p_refno,		COORD_REF, 
		end,
[!endif]		
[!if FILTER_KERNEL_TYPE]
	pb_param1, 		_T("param1"), 		TYPE_FLOAT, 	P_ANIMATABLE, 	IDS_PARAM1,
		p_default,		0.3f,
		end,
	pb_param2, 		_T("param2"), 		TYPE_FLOAT, 	P_ANIMATABLE, 	IDS_PARAM2,
		p_default,		0.6f,
		end,
[!endif]		
[!if SAMPLER_TYPE]
	pb_quality, 		_T("quality"), 		TYPE_FLOAT, 	P_ANIMATABLE, 	IDS_QUALITY,
		p_default,		0.5f,
		end,
	pb_enable, 			_T("enable"), 		TYPE_BOOL, 		0, 				IDS_ENABLE,
		p_default,		FALSE,
		end,
	pb_adapt_enable, 	_T("adaptive"), 	TYPE_BOOL, 		0, 				IDS_AD_ENABLE,
		p_default,		TRUE,
		end,
	pb_adapt_threshold, _T("threshold"), 	TYPE_FLOAT, 	P_ANIMATABLE, 	IDS_AD_THRESH,
		p_default,		0.02f,
		end,
[!endif]		
[!if SHADER_TYPE]
	// params
	pb_diffuse, _T("diffuse"), TYPE_RGBA, P_ANIMATABLE, IDS_MN_DIFFUSE, 
		p_default, Color(0.8f, 0.5f, 0.5f), 
		end,
	pb_brightness, _T("brightness"), TYPE_PCNT_FRAC, P_ANIMATABLE, IDS_MN_BRIGHTNESS,
		p_default,		0.2f,
		p_range,		0.0f, 1.0f,
		end,
[!endif]
[!if SKIN_GIZMO_TYPE]
	pb_gizmoparam_name, 	_T("name"),		TYPE_STRING, 	0,  IDS_GIZMOPARAM_NAME,
		p_ui,  TYPE_EDITBOX,  IDC_NAME,
		p_accessor,		&gizmoJoint_accessor,
		end, 		
[!endif]
[!if ATMOSPHERIC_TYPE]
	pb_gizmos,    _T("Gizmos"),  TYPE_INODE_TAB, 0, P_AUTO_UI,	IDS_GIZMOS,
		p_ui,	TYPE_NODELISTBOX, IDC_GIZMOLIST,	IDC_ADDGIZMO,	0,	IDC_DELGIZMO,
		end,

[!endif]
[!if MATERIAL_TYPE]
	mtl_mat1,			_T("mtl_mat1"),			TYPE_MTL,	P_OWNERS_REF,	IDS_MTL1,
		p_refno,		0,
		p_submtlno,		0,		
		p_ui,			TYPE_MTLBUTTON, IDC_MTL1,
		end,
	mtl_mat1_on,		_T("mtl_mat1_on"),		TYPE_BOOL,		0,				IDS_MTL1ON,
		p_default,		TRUE,
		p_ui,			TYPE_SINGLECHEKBOX, IDC_MTLON1,
		end,

[!endif]
	end
	);

[!if SPACE_WARP_TYPE]
static ParamBlockDesc2 [!output CLASS_NAME_LOWER]obj_param_blk ( obj_params, _T("[!output CLASS_NAME]ObjParams"),  0, &[!output CLASS_NAME]ObjDesc, P_AUTO_CONSTRUCT + P_AUTO_UI, 0, 
	//rollout
	IDD_PANEL_OBJ, IDS_PARAMS, 0, 0, NULL, 
	// params
	pb_spin_obj, 			_T("spin"), 		TYPE_FLOAT, 	P_ANIMATABLE, 	IDS_SPIN_OBJ, 
		p_default, 		0.1f, 
		p_range, 		0.0f,1000.0f, 
		p_ui, 			TYPE_SPINNER,		EDITTYPE_FLOAT, IDC_EDIT_OBJ,	IDC_SPIN_OBJ, 0.01f, 
		end,

	end
	);

[!endif]
