2 BobToolz plugin for GtkRadiant
\r
3 Copyright (C) 2001 Gordon Biggans
\r
5 This library is free software; you can redistribute it and/or
\r
6 modify it under the terms of the GNU Lesser General Public
\r
7 License as published by the Free Software Foundation; either
\r
8 version 2.1 of the License, or (at your option) any later version.
\r
10 This library is distributed in the hope that it will be useful,
\r
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
\r
13 Lesser General Public License for more details.
\r
15 You should have received a copy of the GNU Lesser General Public
\r
16 License along with this library; if not, write to the Free Software
\r
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
\r
23 #include "../include/igl.h"
\r
24 #include "DEntity.h"
\r
26 #include "ScriptParser.h"
\r
28 #define MAX_QPATH 64
\r
30 typedef struct treeModel_s {
\r
31 char name[MAX_QPATH];
\r
34 #define MAX_TP_MODELS 256
\r
36 class DTreePlanter : public IWindowListener {
\r
38 virtual bool OnMouseMove(guint32 nFlags, gdouble x, gdouble y);
\r
39 virtual bool OnLButtonDown(guint32 nFlags, gdouble x, gdouble y);
\r
40 virtual bool OnMButtonDown(guint32 nFlags, gdouble x, gdouble y);
\r
41 virtual bool OnRButtonDown(guint32 nFlags, gdouble x, gdouble y);
\r
42 virtual bool OnLButtonUp(guint32 nFlags, gdouble x, gdouble y);
\r
43 virtual bool OnMButtonUp(guint32 nFlags, gdouble x, gdouble y);
\r
44 virtual bool OnRButtonUp(guint32 nFlags, gdouble x, gdouble y);
\r
45 virtual bool OnKeyPressed(char *s) { return false; }
\r
46 virtual bool Paint() { return true; }
\r
47 virtual void Close() { }
\r
59 m_setAngles = false;
\r
66 m_world.LoadSelectedBrushes();
\r
69 GetFilename( buffer, "bt/tp_ent.txt" );
\r
71 FILE* file = fopen( buffer, "rb" );
\r
73 fseek( file, 0, SEEK_END );
\r
74 int len = ftell( file );
\r
75 fseek( file, 0, SEEK_SET );
\r
78 char* buf = new char[len+1];
\r
80 // parser will do the cleanup, dont delete.
\r
82 fread( buf, len, 1, file );
\r
84 CScriptParser parser;
\r
85 parser.SetScript( buf );
\r
87 ReadConfig( &parser );
\r
94 #define MT(t) !stricmp( pToken, t )
\r
95 #define GT pToken = pScriptParser->GetToken( true )
\r
96 #define CT if(!*pToken) { return; }
\r
98 void ReadConfig( CScriptParser* pScriptParser ) {
\r
104 if(*pToken == '}') {
\r
109 if(m_numModels >= MAX_TP_MODELS) {
\r
115 strncpy( m_trees[m_numModels++].name, pToken, MAX_QPATH );
\r
116 } else if(MT("link")) {
\r
119 strncpy( m_linkName, pToken, MAX_QPATH );
\r
122 } else if(MT("entity")) {
\r
125 strncpy( m_entType, pToken, MAX_QPATH );
\r
126 } else if(MT("offset")) {
\r
129 m_offset = atoi(pToken);
\r
130 } else if(MT("pitch")) {
\r
133 m_minPitch = atoi(pToken);
\r
137 m_maxPitch = atoi(pToken);
\r
139 m_setAngles = true;
\r
140 } else if(MT("yaw")) {
\r
143 m_minYaw = atoi(pToken);
\r
147 m_maxYaw = atoi(pToken);
\r
149 m_setAngles = true;
\r
150 } else if(MT("scale")) {
\r
153 m_minScale = static_cast< float >( atof( pToken ) );
\r
157 m_maxScale = static_cast< float >( atof( pToken ) );
\r
160 } else if(MT("numlinks")) {
\r
163 m_linkNum = atoi( pToken );
\r
168 virtual ~DTreePlanter() {
\r
172 virtual void IncRef() { m_refCount++; }
\r
173 virtual void DecRef() { m_refCount--; if (m_refCount <= 0) delete this; }
\r
177 g_MessageTable.m_pfnHookWindow( this );
\r
178 m_XYWrapper = g_MessageTable.m_pfnGetXYWndWrapper();
\r
183 void UnRegister() {
\r
185 g_MessageTable.m_pfnUnHookWindow( this );
\r
186 m_XYWrapper = NULL;
\r
191 bool FindDropPoint(vec3_t in, vec3_t out);
\r
192 void DropEntsToGround( void );
\r
193 void MakeChain( void );
\r
194 void SelectChain( void );
\r
197 IXYWndWrapper* m_XYWrapper;
\r
200 treeModel_t m_trees[MAX_TP_MODELS];
\r
210 char m_entType[MAX_QPATH];
\r
211 char m_linkName[MAX_QPATH];
\r