111#ifdef PARAM_EDITING_ON
118 #define DECLARE_EDITABLE(_class, _parent) \
119 ParameterListClass plist_##_class; \
120 virtual int _class::Get_Parameter_Count(void) const \
122 return plist_##_class.Count () + _parent::Get_Parameter_Count (); \
124 virtual ParameterClass *_class::Lock_Parameter(int i) \
126 if (i < _parent::Get_Parameter_Count()) { \
127 return _parent::Lock_Parameter (i); \
129 return plist_##_class[i - _parent::Get_Parameter_Count()]; \
163 #define EDITABLE_PARAM(_class, type, data) plist_##_class.Add (&(data), #data, type);
164 #define NAMED_EDITABLE_PARAM(_class, type, data, name) plist_##_class.Add (&(data), name, type);
166 #define INT_EDITABLE_PARAM(_class, data, min, max) { \
167 IntParameterClass *param = W3DNEW IntParameterClass( &data, #data); \
168 param->Set_Range (min, max); \
169 plist_##_class.Add (param); } \
171 #define INT_UNITS_PARAM(_class, data, min, max, unitsname) { \
172 IntParameterClass *param = W3DNEW IntParameterClass( &data, #data); \
173 param->Set_Range (min, max); \
174 param->Set_Units_Name(unitsname); \
175 plist_##_class.Add (param); } \
177 #define NAMED_INT_UNITS_PARAM(_class,data,min,max,unitsname,name) { \
178 IntParameterClass *param = W3DNEW IntParameterClass( &data, #data); \
179 param->Set_Range (min, max); \
180 param->Set_Units_Name(unitsname); \
181 param->Set_Name(name); \
182 plist_##_class.Add (param); } \
184 #define FLOAT_EDITABLE_PARAM(_class, data, min, max) { \
185 FloatParameterClass *param = W3DNEW FloatParameterClass( &data, #data); \
186 param->Set_Range (min, max); \
187 plist_##_class.Add (param); } \
189 #define FLOAT_UNITS_PARAM(_class, data, min, max, unitsname) { \
190 FloatParameterClass *param = W3DNEW FloatParameterClass( &data, #data); \
191 param->Set_Range (min, max); \
192 param->Set_Units_Name(unitsname); \
193 plist_##_class.Add (param); }
195 #define NAMED_FLOAT_UNITS_PARAM(_class, data, min, max, unitsname,name) { \
196 FloatParameterClass *param = W3DNEW FloatParameterClass( &data, #data); \
197 param->Set_Range (min, max); \
198 param->Set_Units_Name(unitsname); \
199 param->Set_Name(name); \
200 plist_##_class.Add (param); }
202 #define ANGLE_EDITABLE_PARAM(_class, data, min, max) { \
203 AngleParameterClass *param = W3DNEW AngleParameterClass( &data, #data); \
204 param->Set_Range (min, max); \
205 param->Set_Units_Name ("degrees"); \
206 plist_##_class.Add (param); } \
208 #define NAMED_ANGLE_EDITABLE_PARAM(_class, data, min, max, name) { \
209 AngleParameterClass *param = W3DNEW AngleParameterClass( &data, #data); \
210 param->Set_Range (min, max); \
211 param->Set_Units_Name ("degrees"); \
212 param->Set_Name(name); \
213 plist_##_class.Add (param); } \
215 #define GENERIC_EDITABLE_PARAM(_class, param) \
216 plist_##_class.Add (param); \
218 #define MODEL_DEF_PARAM(_class, data, name) { \
219 ModelDefParameterClass *param = W3DNEW ModelDefParameterClass (&data); \
220 param->Set_Name (#data); \
221 param->Set_Base_Class (name); \
222 GENERIC_EDITABLE_PARAM(_class, param); }
224 #define PHYS_DEF_PARAM(_class, data, name) { \
225 PhysDefParameterClass *param = W3DNEW PhysDefParameterClass (&data); \
226 param->Set_Name (#data); \
227 param->Set_Base_Class (name); \
228 GENERIC_EDITABLE_PARAM(_class, param); }
230 #define SCRIPT_PARAM(_class, name, params) { \
231 ScriptParameterClass *param = W3DNEW ScriptParameterClass (&name, ¶ms); \
232 param->Set_Name (#name); \
233 GENERIC_EDITABLE_PARAM(_class, param); }
235 #define SCRIPTLIST_PARAM(_class, name, name_list, param_list) { \
236 ScriptListParameterClass *param = W3DNEW ScriptListParameterClass (&name_list, ¶m_list); \
237 param->Set_Name (name); \
238 GENERIC_EDITABLE_PARAM(_class, param); }
240 #define ENUM_PARAM(_class, data, params) { \
241 EnumParameterClass *param = W3DNEW EnumParameterClass (&data); \
242 param->Set_Name (#data); \
243 param->Add_Values params; \
244 plist_##_class.Add (param); } \
246 #define FILENAME_PARAM(_class, data, desc, extension) { \
247 FilenameParameterClass *param = W3DNEW FilenameParameterClass (&data); \
248 param->Set_Name (#data); \
249 param->Set_Description (desc); \
250 param->Set_Extension (extension); \
251 plist_##_class.Add (param); } \
253 #define NAMED_FILENAME_PARAM(_class, data, name, desc, extension) { \
254 FilenameParameterClass *param = new FilenameParameterClass (&data); \
255 param->Set_Name (name); \
256 param->Set_Description (desc); \
257 param->Set_Extension (extension); \
258 plist_##_class.Add (param); } \
260 #define TEXTURE_FILENAME_PARAM(_class, data, desc, extension) { \
261 TextureFilenameParameterClass *param = new TextureFilenameParameterClass (&data); \
262 param->Set_Name (#data); \
263 param->Set_Description (desc); \
264 param->Set_Extension (extension); \
265 plist_##_class.Add (param); } \
267 #define NAMED_TEXTURE_FILENAME_PARAM(_class, data, name, desc, extension) { \
268 TextureFilenameParameterClass *param = new TextureFilenameParameterClass (&data); \
269 param->Set_Name (name); \
270 param->Set_Description (desc); \
271 param->Set_Extension (extension); \
272 plist_##_class.Add (param); } \
274 #define DEFIDLIST_PARAM(_class, data, root_class_id) { \
275 DefIDListParameterClass *param = W3DNEW DefIDListParameterClass (&data); \
276 param->Set_Name (#data); \
277 param->Set_Class_ID (root_class_id); \
278 plist_##_class.Add (param); } \
280 #define CLASSID_DEFIDLIST_PARAM(_class, data, root_class_id, class_id, name) { \
281 DefIDListParameterClass *param = W3DNEW DefIDListParameterClass (&data); \
282 param->Set_Name (name); \
283 param->Set_Class_ID (root_class_id); \
284 param->Set_Selected_Class_ID (&class_id); \
285 plist_##_class.Add (param); }
287 #define ZONE_PARAM(_class, data, name) { \
288 ZoneParameterClass *param = W3DNEW ZoneParameterClass (&data); \
289 param->Set_Name (name); \
290 GENERIC_EDITABLE_PARAM(_class, param); }
292 #define PARAM_SEPARATOR(_class, name) { \
293 SeparatorParameterClass *param = W3DNEW SeparatorParameterClass; \
294 param->Set_Name (name); \
295 GENERIC_EDITABLE_PARAM(_class, param); }
297 #define GENERIC_DEFID_PARAM(_class, data, root_class_id) { \
298 GenericDefParameterClass *param = W3DNEW GenericDefParameterClass (&data); \
299 param->Set_Class_ID (root_class_id); \
300 param->Set_Name (#data); \
301 plist_##_class.Add (param); }
306 #define DECLARE_EDITABLE(_class, _parent)
307 #define EDITABLE_PARAM(_class, type, data)
308 #define NAMED_EDITABLE_PARAM(_class, type, data, name)
309 #define INT_EDITABLE_PARAM(_class, data, min, max)
310 #define INT_UNITS_PARAM(_class, data, min, max, unitsname)
311 #define NAMED_INT_UNITS_PARAM(_class,data,min,max,unitsname,name)
312 #define FLOAT_EDITABLE_PARAM(_class, data, min, max)
313 #define FLOAT_UNITS_PARAM(_class, data, min, max, unitsname)
314 #define NAMED_FLOAT_UNITS_PARAM(_class, data, min, max, unitsname,name)
315 #define ANGLE_EDITABLE_PARAM(_class, data, min, max)
316 #define NAMED_ANGLE_EDITABLE_PARAM(_class, data, min, max, name)
317 #define GENERIC_EDITABLE_PARAM(_class, param)
318 #define MODEL_DEF_PARAM(_class, data, name)
319 #define PHYS_DEF_PARAM(_class, data, name)
320 #define SCRIPT_PARAM(_class, name, params)
321 #define SCRIPTLIST_PARAM(_class, name, name_list, param_list)
322 #define ENUM_PARAM(_class, data, params)
323 #define FILENAME_PARAM(_class, data, desc, extension)
324 #define NAMED_FILENAME_PARAM(_class, data, name, desc, extension)
325 #define TEXTURE_FILENAME_PARAM(_class, data, desc, extension)
326 #define NAMED_TEXTURE_FILENAME_PARAM(_class, data, name, desc, extension)
327 #define DEFIDLIST_PARAM(_class, data, root_class_id)
328 #define CLASSID_DEFIDLIST_PARAM(_class, data, root_class_id, class_id, name)
329 #define ZONE_PARAM(_class, data, name)
330 #define PARAM_SEPARATOR(_class, name)
331 #define GENERIC_DEFID_PARAM(_class, data, root_class_id)
virtual void Unlock_Parameter(int i)
virtual int Get_Parameter_Count(void) const
virtual ParameterClass * Lock_Parameter(int i)