const int MAX_QPATH = 64;
typedef struct treeModel_s {
- char name[MAX_QPATH];
+ char name[MAX_QPATH];
} treeModel_t;
const int MAX_TP_MODELS = 256;
class DTreePlanter {
- MouseEventHandlerId m_mouseDown;
- SignalHandlerId m_destroyed;
+MouseEventHandlerId m_mouseDown;
+SignalHandlerId m_destroyed;
public:
- SignalHandlerResult mouseDown(const WindowVector &position, ButtonIdentifier button, ModifierFlags modifiers);
-
- typedef Member<DTreePlanter, SignalHandlerResult(const WindowVector &, ButtonIdentifier,
- ModifierFlags), &DTreePlanter::mouseDown> MouseDownCaller;
-
- void destroyed()
- {
- m_mouseDown = MouseEventHandlerId();
- m_destroyed = SignalHandlerId();
- }
-
- typedef Member<DTreePlanter, void(), &DTreePlanter::destroyed> DestroyedCaller;
-
- DTreePlanter()
- {
- m_numModels = 0;
- m_offset = 0;
- m_maxPitch = 0;
- m_minPitch = 0;
- m_maxYaw = 0;
- m_minYaw = 0;
- m_setAngles = false;
- m_useScale = false;
- m_autoLink = false;
- m_linkNum = 0;
-
- m_world.LoadSelectedBrushes();
-
- char buffer[256];
- GetFilename(buffer, "bt/tp_ent.txt");
-
- FILE *file = fopen(buffer, "rb");
- if (file) {
- fseek(file, 0, SEEK_END);
- int len = ftell(file);
- fseek(file, 0, SEEK_SET);
-
- if (len) {
- char *buf = new char[len + 1];
- buf[len] = '\0';
- // parser will do the cleanup, dont delete.
-
- fread(buf, len, 1, file);
-
- CScriptParser parser;
- parser.SetScript(buf);
-
- ReadConfig(&parser);
- }
-
- fclose(file);
- }
-
- m_mouseDown = GlobalRadiant().XYWindowMouseDown_connect(makeSignalHandler3(MouseDownCaller(), *this));
- m_destroyed = GlobalRadiant().XYWindowDestroyed_connect(makeSignalHandler(DestroyedCaller(), *this));
- }
-
- virtual ~DTreePlanter()
- {
- if (!m_mouseDown.isNull()) {
- GlobalRadiant().XYWindowMouseDown_disconnect(m_mouseDown);
- }
- if (!m_destroyed.isNull()) {
- GlobalRadiant().XYWindowDestroyed_disconnect(m_destroyed);
- }
- }
-
-#define MT(t) string_equal_nocase( pToken, t )
+SignalHandlerResult mouseDown( const WindowVector& position, ButtonIdentifier button, ModifierFlags modifiers );
+typedef Member<DTreePlanter, SignalHandlerResult(const WindowVector&, ButtonIdentifier, ModifierFlags), &DTreePlanter::mouseDown> MouseDownCaller;
+void destroyed(){
+ m_mouseDown = MouseEventHandlerId();
+ m_destroyed = SignalHandlerId();
+}
+typedef Member<DTreePlanter, void(), &DTreePlanter::destroyed> DestroyedCaller;
+
+DTreePlanter() {
+ m_numModels = 0;
+ m_offset = 0;
+ m_maxPitch = 0;
+ m_minPitch = 0;
+ m_maxYaw = 0;
+ m_minYaw = 0;
+ m_setAngles = false;
+ m_useScale = false;
+ m_autoLink = false;
+ m_linkNum = 0;
+
+ m_world.LoadSelectedBrushes();
+
+ char buffer[256];
+ GetFilename( buffer, "bt/tp_ent.txt" );
+
+ FILE* file = fopen( buffer, "rb" );
+ if ( file ) {
+ fseek( file, 0, SEEK_END );
+ int len = ftell( file );
+ fseek( file, 0, SEEK_SET );
+
+ if ( len ) {
+ char* buf = new char[len + 1];
+ buf[len] = '\0';
+ // parser will do the cleanup, dont delete.
+
+ fread( buf, len, 1, file );
+
+ CScriptParser parser;
+ parser.SetScript( buf );
+
+ ReadConfig( &parser );
+ }
+
+ fclose( file );
+ }
+
+ m_mouseDown = GlobalRadiant().XYWindowMouseDown_connect( makeSignalHandler3( MouseDownCaller(), *this ) );
+ m_destroyed = GlobalRadiant().XYWindowDestroyed_connect( makeSignalHandler( DestroyedCaller(), *this ) );
+}
+
+virtual ~DTreePlanter(){
+ if ( !m_mouseDown.isNull() ) {
+ GlobalRadiant().XYWindowMouseDown_disconnect( m_mouseDown );
+ }
+ if ( !m_destroyed.isNull() ) {
+ GlobalRadiant().XYWindowDestroyed_disconnect( m_destroyed );
+ }
+}
+
+#define MT( t ) string_equal_nocase( pToken, t )
#define GT pToken = pScriptParser->GetToken( true )
#define CT if ( !*pToken ) { return; }
- void ReadConfig(CScriptParser *pScriptParser)
- {
- const char *GT;
- CT;
+void ReadConfig( CScriptParser* pScriptParser ) {
+ const char* GT;
+ CT;
- do {
- GT;
- if (*pToken == '}') {
- break;
- }
+ do {
+ GT;
+ if ( *pToken == '}' ) {
+ break;
+ }
- if (MT("model")) {
- if (m_numModels >= MAX_TP_MODELS) {
- return;
- }
+ if ( MT( "model" ) ) {
+ if ( m_numModels >= MAX_TP_MODELS ) {
+ return;
+ }
- GT;
- CT;
+ GT; CT;
- strncpy(m_trees[m_numModels++].name, pToken, MAX_QPATH);
- } else if (MT("link")) {
- GT;
- CT;
+ strncpy( m_trees[m_numModels++].name, pToken, MAX_QPATH );
+ }
+ else if ( MT( "link" ) ) {
+ GT; CT;
- strncpy(m_linkName, pToken, MAX_QPATH);
+ strncpy( m_linkName, pToken, MAX_QPATH );
- m_autoLink = true;
- } else if (MT("entity")) {
- GT;
- CT;
+ m_autoLink = true;
+ }
+ else if ( MT( "entity" ) ) {
+ GT; CT;
- strncpy(m_entType, pToken, MAX_QPATH);
- } else if (MT("offset")) {
- GT;
- CT;
+ strncpy( m_entType, pToken, MAX_QPATH );
+ }
+ else if ( MT( "offset" ) ) {
+ GT; CT;
- m_offset = atoi(pToken);
- } else if (MT("pitch")) {
- GT;
- CT;
+ m_offset = atoi( pToken );
+ }
+ else if ( MT( "pitch" ) ) {
+ GT; CT;
- m_minPitch = atoi(pToken);
+ m_minPitch = atoi( pToken );
- GT;
- CT;
+ GT; CT;
- m_maxPitch = atoi(pToken);
+ m_maxPitch = atoi( pToken );
- m_setAngles = true;
- } else if (MT("yaw")) {
- GT;
- CT;
+ m_setAngles = true;
+ }
+ else if ( MT( "yaw" ) ) {
+ GT; CT;
- m_minYaw = atoi(pToken);
+ m_minYaw = atoi( pToken );
- GT;
- CT;
+ GT; CT;
- m_maxYaw = atoi(pToken);
+ m_maxYaw = atoi( pToken );
- m_setAngles = true;
- } else if (MT("scale")) {
- GT;
- CT;
+ m_setAngles = true;
+ }
+ else if ( MT( "scale" ) ) {
+ GT; CT;
- m_minScale = static_cast<float>( atof(pToken));
+ m_minScale = static_cast<float>( atof( pToken ) );
- GT;
- CT;
+ GT; CT;
- m_maxScale = static_cast<float>( atof(pToken));
+ m_maxScale = static_cast<float>( atof( pToken ) );
- m_useScale = true;
- } else if (MT("numlinks")) {
- GT;
- CT;
+ m_useScale = true;
+ }
+ else if ( MT( "numlinks" ) ) {
+ GT; CT;
- m_linkNum = atoi(pToken);
- }
- } while (true);
- }
+ m_linkNum = atoi( pToken );
+ }
+ } while ( true );
+}
- bool FindDropPoint(vec3_t in, vec3_t out);
-
- void DropEntsToGround(void);
-
- void MakeChain(int linkNum, const char *linkName);
-
- void SelectChain(void);
+bool FindDropPoint( vec3_t in, vec3_t out );
+void DropEntsToGround( void );
+void MakeChain( int linkNum, const char* linkName );
+void SelectChain( void );
private:
- DEntity m_world;
+DEntity m_world;
- treeModel_t m_trees[MAX_TP_MODELS];
+treeModel_t m_trees[MAX_TP_MODELS];
- int m_numModels;
- int m_offset;
- int m_maxPitch;
- int m_minPitch;
- int m_maxYaw;
- int m_minYaw;
+int m_numModels;
+int m_offset;
+int m_maxPitch;
+int m_minPitch;
+int m_maxYaw;
+int m_minYaw;
- char m_entType[MAX_QPATH];
- char m_linkName[MAX_QPATH];
- int m_linkNum;
+char m_entType[MAX_QPATH];
+char m_linkName[MAX_QPATH];
+int m_linkNum;
- float m_minScale;
- float m_maxScale;
+float m_minScale;
+float m_maxScale;
- bool m_useScale;
- bool m_setAngles;
- bool m_autoLink;
+bool m_useScale;
+bool m_setAngles;
+bool m_autoLink;
};
#endif