]> de.git.xonotic.org Git - xonotic/netradiant.git/blob - contrib/bobtoolz/DBobView.h
Wean off #define
[xonotic/netradiant.git] / contrib / bobtoolz / DBobView.h
1 /*
2    BobToolz plugin for GtkRadiant
3    Copyright (C) 2001 Gordon Biggans
4
5    This library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public
7    License as published by the Free Software Foundation; either
8    version 2.1 of the License, or (at your option) any later version.
9
10    This library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Lesser General Public License for more details.
14
15    You should have received a copy of the GNU Lesser General Public
16    License along with this library; if not, write to the Free Software
17    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18  */
19
20 // DBobView.h: interface for the DBobView class.
21 //
22 //////////////////////////////////////////////////////////////////////
23
24 #if !defined( AFX_BOBVIEW_H__6E36062A_EF0B_11D4_ACF7_004095A18133__INCLUDED_ )
25 #define AFX_BOBVIEW_H__6E36062A_EF0B_11D4_ACF7_004095A18133__INCLUDED_
26
27 #include "ientity.h"
28 #include "irender.h"
29 #include "renderable.h"
30 #include "mathlib.h"
31
32 class DListener;
33 class Shader;
34
35 const int BOUNDS_ALL  = 0;
36 const int BOUNDS_APEX = 1;
37
38 #if _MSC_VER > 1000
39 #pragma once
40 #endif // _MSC_VER > 1000
41
42 class DBobView : public Renderable, public OpenGLRenderable, public Entity::Observer
43 {
44 Shader* m_shader_line;
45 Shader* m_shader_box;
46 public:
47 DBobView();
48 virtual ~DBobView();
49
50 protected:
51 vec3_t* path;
52 public:
53 bool m_bShowExtra;
54 int boundingShow;
55 DListener* eyes;
56 float fVarGravity;
57 float fMultiplier;
58 int nPathCount;
59
60 Entity* trigger;
61 Entity* target;
62
63 bool UpdatePath();
64 char entTarget[256];
65 char entTrigger[256];
66 void Begin( const char*, const char*, float, int, float, bool, bool );
67 bool CalculateTrajectory( vec3_t, vec3_t, float, int, float );
68
69 void SetPath( vec3_t* pPath );
70
71 void render( RenderStateFlags state ) const;
72 void renderSolid( Renderer& renderer, const VolumeTest& volume ) const;
73 void renderWireframe( Renderer& renderer, const VolumeTest& volume ) const;
74
75 void constructShaders();
76 void destroyShaders();
77
78 void valueChanged( const char* value ){
79         UpdatePath();
80 }
81 typedef MemberCaller1<DBobView, const char*, &DBobView::valueChanged> ValueChangedCaller;
82 void insert( const char* key, EntityKeyValue& value ){
83         value.attach( ValueChangedCaller( *this ) );
84 }
85 void erase( const char* key, EntityKeyValue& value ){
86         value.detach( ValueChangedCaller( *this ) );
87 }
88 void clear(){
89         if ( trigger != 0 ) {
90                 trigger->detach( *this );
91                 target->detach( *this );
92                 trigger = 0;
93                 target = 0;
94         }
95 }
96 };
97
98 class Entity;
99 void DBobView_setEntity( Entity& entity, float multiplier, int points, float varGravity, bool bNoUpdate, bool bShowExtra );
100
101 #endif // !defined(AFX_BOBVIEW_H__6E36062A_EF0B_11D4_ACF7_004095A18133__INCLUDED_)