Umasoft
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
TParams.h
1 //
2 // class TParams
3 //
4 // defines all the construction parameters for a terrain
5 //
6 // Copyright (c) 2001-2011 Virtual Terrain Project
7 // Free for all uses, see license.txt for details.
8 //
9 
10 #ifndef TPARAMSH
11 #define TPARAMSH
12 
13 #include "vtdata/MathTypes.h"
14 #include "vtdata/Content.h"
15 
18 
19 enum TextureEnum {
20  TE_NONE,
21  TE_SINGLE,
22  TE_TILED,
23  TE_DERIVED,
24  TE_TILESET
25 };
26 
37 };
38 
39 // TParam Layer Types
40 #define TERR_LTYPE_STRUCTURE "Structure"
41 #define TERR_LTYPE_ABSTRACT "Abstract"
42 #define TERR_LTYPE_IMAGE "Image"
43 
45 // Class to encapsulate a scenarios parameters.
46 
47 class ScenarioParams : public vtTagArray
48 {
49 public:
51 
52  // copy constructor and assignment operator
53  ScenarioParams(const ScenarioParams& paramsSrc);
54  ScenarioParams &operator = (const ScenarioParams &rhs);
55 
56  // override to catch active layers list
57  void WriteOverridesToXML(FILE *fp) const;
58 
59  vtStringArray& GetActiveLayers() { return m_ActiveLayers; }
60 
61 protected:
62  vtStringArray m_ActiveLayers;
63 };
64 
328 class TParams : public vtTagArray
329 {
330 public:
331  TParams();
332 
333  // copy constructor and assignment operator
334  TParams(const TParams& paramsSrc);
335  TParams &operator = (const TParams &rhs);
336 
337  // File IO
338  bool LoadFrom(const char *fname);
339  bool LoadFromXML(const char *fname);
340 
341  // override to catch structure files
342  void WriteOverridesToXML(FILE *fp) const;
343 
344  void SetLodMethod(LodMethodEnum method);
345  LodMethodEnum GetLodMethod() const;
346 
347  void SetTextureEnum(TextureEnum tex);
348  TextureEnum GetTextureEnum() const;
349 
350  // Convenience method
351  void SetOverlay(const vtString &fname, int x, int y);
352  bool GetOverlay(vtString &fname, int &x, int &y) const;
353 
354 public:
355  // this must be a public member (currently..)
356  std::vector<vtTagArray> m_Layers;
357  vtStringArray m_AnimPaths;
358  std::vector<ScenarioParams> m_Scenarios;
359 
360 private:
361  void ConvertOldTimeValue();
362 };
363 
365 // Visitor class for XML parsing of TParams files.
366 
368 {
369 public:
370  TParamsVisitor(TParams *pParams) : TagVisitor(pParams), m_pParams(pParams), m_bInLayer(false), m_bInScenario(false) {}
371  void startElement(const char *name, const XMLAttributes &atts);
372  void endElement (const char *name);
373 
374 protected:
375  TParams *m_pParams;
376  vtTagArray m_layer;
377  bool m_bViz;
378  ScenarioParams m_Scenario;
379  bool m_bInLayer;
380  bool m_bInScenario;
381 };
382 
383 #define STR_TPARAMS_FORMAT_NAME "Terrain_Parameters"
384 
385 #define STR_NAME "Name"
386 #define STR_ELEVFILE "Elevation_Filename"
387 #define STR_VERTICALEXAG "Vertical_Exag"
388 #define STR_SUPPRESS "Suppress_Surface"
389 
390 #define STR_MINHEIGHT "Min_Height"
391 #define STR_NAVSTYLE "Nav_Style"
392 #define STR_NAVSPEED "Nav_Speed"
393 #define STR_LOCFILE "Locations_File"
394 #define STR_INITLOCATION "Init_Location"
395 #define STR_HITHER "Hither_Distance"
396 #define STR_ACCEL "Accel"
397 #define STR_ALLOW_ROLL "Allow_Roll"
398 
399 #define STR_SURFACE_TYPE "Surface_Type" // 0=grid, 1=TIN, 2=tiled grid
400 #define STR_LODMETHOD "LOD_Method"
401 #define STR_TRICOUNT "Tri_Count"
402 #define STR_TRISTRIPS "Tristrips"
403 #define STR_VERTCOUNT "Vert_Count"
404 #define STR_TILE_CACHE_SIZE "Tile_Cache_Size" // in MB
405 #define STR_TILE_THREADING "Tile_Threading"
406 
407 #define STR_TIMEON "Time_On"
408 #define STR_INITTIME "Init_Time"
409 #define STR_TIMESPEED "Time_Speed"
410 
411 #define STR_TEXTURE "Texture" // 0=none, 1=single, 3=derived, 4=tileset
412 //#define STR_TILESIZE "Tile_Size" // obsolete
413 #define STR_TEXTUREFILE "Texture_Filename"
414 //#define STR_TEXTUREBASE "Base_Texture" // obsolete
415 //#define STR_TEXTURE4BY4 "Texture_4by4" // obsolete
416 //#define STR_TEXTUREFORMAT "Texture_Format" // 0=bmp, 1=jpg; obsolete
417 #define STR_TEXTURE_GRADUAL "Texture_Gradual"
418 #define STR_TEXURE_LOD_FACTOR "Texture_LOD_Factor"
419 #define STR_MIPMAP "MIP_Map"
420 #define STR_REQUEST16BIT "Request_16_Bit"
421 #define STR_PRELIGHT "Pre-Light"
422 #define STR_PRELIGHTFACTOR "PreLight_Factor"
423 #define STR_CAST_SHADOWS "Cast_Shadows"
424 #define STR_COLOR_MAP "Color_Map"
425 #define STR_TEXTURE_RETAIN "Texture_Retain"
426 
427 #define STR_DETAILTEXTURE "Detail_Texture"
428 #define STR_DTEXTURE_NAME "DTexture_Name"
429 #define STR_DTEXTURE_SCALE "DTexture_Scale"
430 #define STR_DTEXTURE_DISTANCE "DTexture_Distance"
431 
432 #define STR_ROADS "Roads"
433 #define STR_ROADFILE "Road_File"
434 #define STR_HWY "Highway"
435 #define STR_PAVED "Paved"
436 #define STR_DIRT "Dirt"
437 #define STR_ROADHEIGHT "Road_Height"
438 #define STR_ROADDISTANCE "Road_Distance"
439 #define STR_TEXROADS "Road_Texture"
440 #define STR_ROADCULTURE "Road_Culture"
441 
442 #define STR_TREES "Trees"
443 #define STR_TREEFILE "Tree_File"
444 #define STR_VEGDISTANCE "Tree_Distance"
445 
446 #define STR_FOG "Fog"
447 #define STR_FOGDISTANCE "Fog_Distance"
448 #define STR_FOGCOLOR "Fog_Color"
449 
450 #define STR_CONTENT_FILE "Content_File"
451 
452 #define STR_STRUCTFILE "Structure_File" // Obsolete, use layers now
453 #define STR_STRUCTDIST "Structure_Distance"
454 #define STR_STRUCT_SHADOWS "Structure_Shadows"
455 #define STR_SHADOW_REZ "Shadow_Resolution"
456 #define STR_SHADOW_DARKNESS "Shadow_Darkness"
457 
458 #define STR_SHADOWS_DEFAULT_ON "Shadows_Default_On"
459 #define STR_SHADOWS_EVERY_FRAME "Shadows_Every_Frame"
460 #define STR_LIMIT_SHADOW_AREA "Limit_Shadow_Area"
461 #define STR_SHADOW_RADIUS "Shadow_Radius"
462 
463 #define STR_STRUCTURE_PAGING "PagingStructures"
464 #define STR_STRUCTURE_PAGING_MAX "PagingStructureMax"
465 #define STR_STRUCTURE_PAGING_DIST "PagingStructureDist"
466 
467 #define STR_TOWERS "Trans_Towers"
468 #define STR_TOWERFILE "Tower_File"
469 
470 #define STR_VEHICLES "Vehicles"
471 #define STR_VEHICLESIZE "Vehicle_Size"
472 #define STR_VEHICLESPEED "Vehicle_Speed"
473 
474 #define STR_SKY "Sky"
475 #define STR_SKYTEXTURE "Sky_Texture"
476 #define STR_OCEANPLANE "Ocean_Plane"
477 #define STR_OCEANPLANELEVEL "Ocean_Plane_Level"
478 #define STR_WATER "Water"
479 #define STR_WATERFILE "Water_File"
480 #define STR_DEPRESSOCEAN "Depress_Ocean"
481 #define STR_DEPRESSOCEANLEVEL "Depress_Ocean_Level"
482 #define STR_HORIZON "Horizon"
483 #define STR_BGCOLOR "Background_Color"
484 
485 #define STR_ROUTEENABLE "Route_Enable" // not used yet
486 #define STR_ROUTEFILE "Route_File" // not used yet
487 
488 #define STR_DIST_TOOL_HEIGHT "Distance_Tool_Height"
489 #define STR_HUD_OVERLAY "HUD_Overlay"
490 #define STR_OVERVIEW "HUD_Overview"
491 #define STR_COMPASS "HUD_Compass"
492 
493 #define STR_INIT_SCENARIO "Init_Scenario"
494 #define STR_SCENARIO_NAME "Scenario_Name"
495 
496 #define STR_ALLOW_GRID_SCULPTING "Allow_Sculpting"
497  // Group terrain
499 
500 #endif // TPARAMSH
501