]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - contrib/bobtoolz/DTreePlanter.h
set eol-style
[xonotic/netradiant.git] / contrib / bobtoolz / DTreePlanter.h
index ab80abffc72fd55b1f3f9ed83126cec9f21a463e..9048e60bacda13803996f832fcf961aa3187ff2d 100644 (file)
-/*\r
-BobToolz plugin for GtkRadiant\r
-Copyright (C) 2001 Gordon Biggans\r
-\r
-This library is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU Lesser General Public\r
-License as published by the Free Software Foundation; either\r
-version 2.1 of the License, or (at your option) any later version.\r
-\r
-This library is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
-Lesser General Public License for more details.\r
-\r
-You should have received a copy of the GNU Lesser General Public\r
-License along with this library; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
-*/\r
-\r
-#ifndef __DTREE_H__\r
-#define __DTREE_H__\r
-\r
-#include "../include/igl.h"\r
-#include "DEntity.h"\r
-#include "misc.h"\r
-#include "ScriptParser.h"\r
-\r
-#define MAX_QPATH 64\r
-\r
-typedef struct treeModel_s {\r
-       char name[MAX_QPATH];\r
-} treeModel_t;\r
-\r
-#define MAX_TP_MODELS 256\r
-\r
-class DTreePlanter : public IWindowListener {\r
-public:\r
-       virtual bool OnMouseMove(guint32 nFlags, gdouble x, gdouble y);\r
-       virtual bool OnLButtonDown(guint32 nFlags, gdouble x, gdouble y);\r
-       virtual bool OnMButtonDown(guint32 nFlags, gdouble x, gdouble y);\r
-       virtual bool OnRButtonDown(guint32 nFlags, gdouble x, gdouble y);\r
-       virtual bool OnLButtonUp(guint32 nFlags, gdouble x, gdouble y);\r
-       virtual bool OnMButtonUp(guint32 nFlags, gdouble x, gdouble y);\r
-       virtual bool OnRButtonUp(guint32 nFlags, gdouble x, gdouble y);\r
-       virtual bool OnKeyPressed(char *s) { return false; }\r
-       virtual bool Paint() { return true; }\r
-       virtual void Close() { }\r
-       \r
-       DTreePlanter() {\r
-               m_refCount =    1;\r
-               m_hooked =              false;\r
-               m_XYWrapper =   NULL;\r
-               m_numModels =   0;\r
-               m_offset =              0;\r
-               m_maxPitch =    0;\r
-               m_minPitch =    0;\r
-               m_maxYaw =              0;\r
-               m_minYaw =              0;\r
-               m_setAngles =   false;\r
-               m_useScale =    false;\r
-               m_autoLink =    false;\r
-               m_linkNum =             0;\r
-\r
-               Register();\r
-\r
-               m_world.LoadSelectedBrushes();\r
-\r
-               char buffer[256];\r
-               GetFilename( buffer, "bt/tp_ent.txt" );\r
-\r
-               FILE* file = fopen( buffer, "rb" );\r
-               if(file) {\r
-                       fseek( file, 0, SEEK_END );\r
-                       int len = ftell( file );\r
-                       fseek( file, 0, SEEK_SET );\r
-\r
-                       if(len) {\r
-                               char* buf = new char[len+1];\r
-                               buf[len] = '\0';\r
-                               // parser will do the cleanup, dont delete.\r
-\r
-                               fread( buf, len, 1, file );\r
-\r
-                               CScriptParser parser;\r
-                               parser.SetScript( buf );\r
-\r
-                               ReadConfig( &parser );\r
-                       }\r
-\r
-                       fclose( file );\r
-               }\r
-       }\r
-\r
-#define MT(t)  !stricmp( pToken, t )\r
-#define GT             pToken = pScriptParser->GetToken( true )\r
-#define CT             if(!*pToken) { return; }\r
-\r
-       void ReadConfig( CScriptParser* pScriptParser ) {\r
-               const char* GT;\r
-               CT;\r
-\r
-               do {\r
-                       GT;\r
-                       if(*pToken == '}') {\r
-                               break;\r
-                       }\r
-\r
-                       if(MT("model")) {\r
-                               if(m_numModels >= MAX_TP_MODELS) {\r
-                                       return;\r
-                               }\r
-\r
-                               GT; CT;\r
-\r
-                               strncpy( m_trees[m_numModels++].name, pToken, MAX_QPATH );\r
-                       } else if(MT("link")) {\r
-                               GT; CT;\r
-\r
-                               strncpy( m_linkName, pToken, MAX_QPATH );\r
-\r
-                               m_autoLink = true;\r
-                       } else if(MT("entity")) {\r
-                               GT; CT;\r
-\r
-                               strncpy( m_entType, pToken, MAX_QPATH );\r
-                       } else if(MT("offset")) {\r
-                               GT; CT;\r
-\r
-                               m_offset = atoi(pToken);\r
-                       } else if(MT("pitch")) {\r
-                               GT; CT;\r
-\r
-                               m_minPitch = atoi(pToken);\r
-\r
-                               GT; CT;\r
-\r
-                               m_maxPitch = atoi(pToken);\r
-\r
-                               m_setAngles = true;\r
-                       } else if(MT("yaw")) {\r
-                               GT; CT;\r
-\r
-                               m_minYaw = atoi(pToken);\r
-\r
-                               GT; CT;\r
-\r
-                               m_maxYaw = atoi(pToken);\r
-\r
-                               m_setAngles = true;\r
-                       } else if(MT("scale")) {\r
-                               GT; CT;\r
-\r
-                               m_minScale = static_cast< float >( atof( pToken ) );\r
-\r
-                               GT; CT;\r
-\r
-                               m_maxScale = static_cast< float >( atof( pToken ) );\r
-\r
-                               m_useScale = true;\r
-                       } else if(MT("numlinks")) {\r
-                               GT; CT;\r
-\r
-                               m_linkNum = atoi( pToken );\r
-                       }\r
-               } while( true );\r
-       }\r
-\r
-       virtual ~DTreePlanter() {\r
-               UnRegister();\r
-       }\r
-\r
-       virtual void IncRef() { m_refCount++; }\r
-       virtual void DecRef() { m_refCount--; if (m_refCount <= 0) delete this; }\r
-\r
-       void Register() {\r
-               if(!m_hooked) {\r
-                       g_MessageTable.m_pfnHookWindow( this );\r
-                       m_XYWrapper = g_MessageTable.m_pfnGetXYWndWrapper();\r
-                       m_hooked = true;\r
-               }\r
-       }\r
-\r
-       void UnRegister() {\r
-               if(m_hooked) {\r
-                       g_MessageTable.m_pfnUnHookWindow( this );\r
-                       m_XYWrapper = NULL;\r
-                       m_hooked = false;\r
-               }\r
-       }\r
-\r
-       bool FindDropPoint(vec3_t in, vec3_t out);\r
-       void DropEntsToGround( void );\r
-       void MakeChain( void );\r
-       void SelectChain( void );\r
-\r
-private:\r
-       IXYWndWrapper*  m_XYWrapper;\r
-       DEntity                 m_world;\r
-\r
-       treeModel_t             m_trees[MAX_TP_MODELS];\r
-\r
-       int                             m_refCount;\r
-       int                             m_numModels;\r
-       int                             m_offset;\r
-       int                             m_maxPitch;\r
-       int                             m_minPitch;\r
-       int                             m_maxYaw;\r
-       int                             m_minYaw;\r
-\r
-       char                    m_entType[MAX_QPATH];\r
-       char                    m_linkName[MAX_QPATH];\r
-       int                             m_linkNum;\r
-\r
-       float                   m_minScale;\r
-       float                   m_maxScale;\r
-\r
-       bool                    m_hooked;\r
-       bool                    m_useScale;\r
-       bool                    m_setAngles;\r
-       bool                    m_autoLink;\r
-};\r
-\r
-#endif\r
+/*
+BobToolz plugin for GtkRadiant
+Copyright (C) 2001 Gordon Biggans
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*/
+
+#ifndef __DTREE_H__
+#define __DTREE_H__
+
+#include "../include/igl.h"
+#include "DEntity.h"
+#include "misc.h"
+#include "ScriptParser.h"
+
+#define MAX_QPATH 64
+
+typedef struct treeModel_s {
+       char name[MAX_QPATH];
+} treeModel_t;
+
+#define MAX_TP_MODELS 256
+
+class DTreePlanter : public IWindowListener {
+public:
+       virtual bool OnMouseMove(guint32 nFlags, gdouble x, gdouble y);
+       virtual bool OnLButtonDown(guint32 nFlags, gdouble x, gdouble y);
+       virtual bool OnMButtonDown(guint32 nFlags, gdouble x, gdouble y);
+       virtual bool OnRButtonDown(guint32 nFlags, gdouble x, gdouble y);
+       virtual bool OnLButtonUp(guint32 nFlags, gdouble x, gdouble y);
+       virtual bool OnMButtonUp(guint32 nFlags, gdouble x, gdouble y);
+       virtual bool OnRButtonUp(guint32 nFlags, gdouble x, gdouble y);
+       virtual bool OnKeyPressed(char *s) { return false; }
+       virtual bool Paint() { return true; }
+       virtual void Close() { }
+       
+       DTreePlanter() {
+               m_refCount =    1;
+               m_hooked =              false;
+               m_XYWrapper =   NULL;
+               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;
+
+               Register();
+
+               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 );
+               }
+       }
+
+#define MT(t)  !stricmp( pToken, t )
+#define GT             pToken = pScriptParser->GetToken( true )
+#define CT             if(!*pToken) { return; }
+
+       void ReadConfig( CScriptParser* pScriptParser ) {
+               const char* GT;
+               CT;
+
+               do {
+                       GT;
+                       if(*pToken == '}') {
+                               break;
+                       }
+
+                       if(MT("model")) {
+                               if(m_numModels >= MAX_TP_MODELS) {
+                                       return;
+                               }
+
+                               GT; CT;
+
+                               strncpy( m_trees[m_numModels++].name, pToken, MAX_QPATH );
+                       } else if(MT("link")) {
+                               GT; CT;
+
+                               strncpy( m_linkName, pToken, MAX_QPATH );
+
+                               m_autoLink = true;
+                       } else if(MT("entity")) {
+                               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_minPitch = atoi(pToken);
+
+                               GT; CT;
+
+                               m_maxPitch = atoi(pToken);
+
+                               m_setAngles = true;
+                       } else if(MT("yaw")) {
+                               GT; CT;
+
+                               m_minYaw = atoi(pToken);
+
+                               GT; CT;
+
+                               m_maxYaw = atoi(pToken);
+
+                               m_setAngles = true;
+                       } else if(MT("scale")) {
+                               GT; CT;
+
+                               m_minScale = static_cast< float >( atof( pToken ) );
+
+                               GT; CT;
+
+                               m_maxScale = static_cast< float >( atof( pToken ) );
+
+                               m_useScale = true;
+                       } else if(MT("numlinks")) {
+                               GT; CT;
+
+                               m_linkNum = atoi( pToken );
+                       }
+               } while( true );
+       }
+
+       virtual ~DTreePlanter() {
+               UnRegister();
+       }
+
+       virtual void IncRef() { m_refCount++; }
+       virtual void DecRef() { m_refCount--; if (m_refCount <= 0) delete this; }
+
+       void Register() {
+               if(!m_hooked) {
+                       g_MessageTable.m_pfnHookWindow( this );
+                       m_XYWrapper = g_MessageTable.m_pfnGetXYWndWrapper();
+                       m_hooked = true;
+               }
+       }
+
+       void UnRegister() {
+               if(m_hooked) {
+                       g_MessageTable.m_pfnUnHookWindow( this );
+                       m_XYWrapper = NULL;
+                       m_hooked = false;
+               }
+       }
+
+       bool FindDropPoint(vec3_t in, vec3_t out);
+       void DropEntsToGround( void );
+       void MakeChain( void );
+       void SelectChain( void );
+
+private:
+       IXYWndWrapper*  m_XYWrapper;
+       DEntity                 m_world;
+
+       treeModel_t             m_trees[MAX_TP_MODELS];
+
+       int                             m_refCount;
+       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;
+
+       float                   m_minScale;
+       float                   m_maxScale;
+
+       bool                    m_hooked;
+       bool                    m_useScale;
+       bool                    m_setAngles;
+       bool                    m_autoLink;
+};
+
+#endif