12#ifndef TT_INCLUDE__PHYSDEFCLASS_H
13#define TT_INCLUDE__PHYSDEFCLASS_H
15#include "engine_common.h"
16#include "engine_vector.h"
18#include "engine_threading.h"
19#include "engine_string.h"
20#include "Definition.h"
23 DEFAULT_COLLISION_GROUP = 0,
25 TERRAIN_ONLY_COLLISION_GROUP,
26 BULLET_COLLISION_GROUP,
27 TERRAIN_AND_BULLET_COLLISION_GROUP,
28 BULLET_ONLY_COLLISION_GROUP,
29 SOLDIER_COLLISION_GROUP,
30 SOLDIER_GHOST_COLLISION_GROUP,
34 UNDERGROUND_COLLISION_GROUP,
35 SOLDIER_ONLY_COLLISION_GROUP,
36 SOLDIER_BULLET_COLLISION_GROUP,
38 TERRAIN_COLLISION_GROUP = 15,
41 WATER_SURFACE_COLLISION_GROUP,
42 WATER_EDGE_COLLISION_GROUP,
43 WATER_EDGE_ALT_COLLISION_GROUP,
44 BEACH_EDGE_COLLISION_GROUP,
45 NAVAL_UNIT_COLLISION_GROUP,
46 BEACHING_UNIT_COLLISION_GROUP,
47 HOVER_UNIT_COLLISION_GROUP,
48 AMPHIBIOUS_UNIT_COLLISION_GROUP,
49 AMPHIBIOUS_UNIT_FLOOR_COLLISION_GROUP,
50 UNDERGROUND_TRANSITION_COLLISION_GROUP,
52 DEFAULT_AND_SOLDIER_ONLY_COLLISION_GROUP,
54 PLAYER_BUILDING_COLLISION_GROUP,
55 PLAYER_BUILDING_GHOST_COLLISION_GROUP,
56 TRAIN_COLLISION_GROUP,
57 TRAIN_TRACK_COLLISION_GROUP,
59 COLLISION_GROUP_MAX = 32,
60} Collision_Group_Type;
62inline const char* GetCollisionGroupName(Collision_Group_Type group)
66 case DEFAULT_COLLISION_GROUP:
return "Default";
67 case UNCOLLIDEABLE_GROUP:
return "Uncollideable";
68 case TERRAIN_ONLY_COLLISION_GROUP:
return "Terrain-only";
69 case BULLET_COLLISION_GROUP:
return "Bullet";
70 case TERRAIN_AND_BULLET_COLLISION_GROUP:
return "Terrain and Bullet";
71 case BULLET_ONLY_COLLISION_GROUP:
return "Bullet-only";
72 case SOLDIER_COLLISION_GROUP:
return "Soldier";
73 case SOLDIER_GHOST_COLLISION_GROUP:
return "Soldier-ghost";
74 case UNDERGROUND_COLLISION_GROUP:
return "Underground";
75 case SOLDIER_ONLY_COLLISION_GROUP:
return "Soldier-only";
76 case SOLDIER_BULLET_COLLISION_GROUP:
return "Soldier-bullet";
77 case TERRAIN_COLLISION_GROUP:
return "Terrain";
78 case WATER_SURFACE_COLLISION_GROUP:
return "Water Surface";
79 case WATER_EDGE_COLLISION_GROUP:
return "Water Edge (Block)";
80 case WATER_EDGE_ALT_COLLISION_GROUP:
return "Water Edge (Allow)";
81 case BEACH_EDGE_COLLISION_GROUP:
return "Beach Edge";
82 case NAVAL_UNIT_COLLISION_GROUP:
return "Naval Unit";
83 case BEACHING_UNIT_COLLISION_GROUP:
return "Beaching Unit";
84 case HOVER_UNIT_COLLISION_GROUP:
return "Hover Unit";
85 case AMPHIBIOUS_UNIT_COLLISION_GROUP:
return "Amphibious Unit";
86 case AMPHIBIOUS_UNIT_FLOOR_COLLISION_GROUP:
return "Amphibious Unit Floor";
87 case UNDERGROUND_TRANSITION_COLLISION_GROUP:
return "Underground Transition";
88 case DEFAULT_AND_SOLDIER_ONLY_COLLISION_GROUP:
return "Default and Soldier only";
89 case PLAYER_BUILDING_COLLISION_GROUP:
return "Player Building";
90 case PLAYER_BUILDING_GHOST_COLLISION_GROUP:
return "Player Building Ghost";
91 case TRAIN_COLLISION_GROUP:
return "Train";
92 case TRAIN_TRACK_COLLISION_GROUP:
return "Train Track";
100 VISIBILITYMODE_DEFAULT = 0,
101 VISIBILITYMODE_IFCOLLIDE,
102 VISIBILITYMODE_IFNOCOLLIDE,
103 VISIBILITYMODE_MAX = 3
104} Visibility_Mode_Type;
106class PhysDefClass :
public DefinitionClass
110 virtual bool Save(ChunkSaveClass &csave);
111 virtual bool Load(ChunkLoadClass &cload);
112 virtual const char * Get_Type_Name(
void) {
return "PhysDef"; }
113 virtual bool Is_Type(
const char *);
114 virtual bool Is_Valid_Config (StringClass &message);
115 const StringClass & Get_Model_Name() {
return ModelName; }
116 bool Get_Is_Pre_Lit() {
return IsPreLit; }
118 virtual void Dump (FileClass &file);
120 DECLARE_EDITABLE(PhysDefClass,DefinitionClass);
122 StringClass ModelName;
124 friend class PhysClass;
125 friend class PresetDump;