Fix css style order when using external css files
[ryzomcore.git] / ryzom / client / src / r2 / displayer_visual_shape.h
blob19d0b79b6829cb042c2fa20cd0913c65f6222d05
1 // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
2 // Copyright (C) 2010 Winch Gate Property Limited
3 //
4 // This source file has been modified by the following contributors:
5 // Copyright (C) 2013 Laszlo KIS-ADAM (dfighter) <dfighter1985@gmail.com>
6 //
7 // This program is free software: you can redistribute it and/or modify
8 // it under the terms of the GNU Affero General Public License as
9 // published by the Free Software Foundation, either version 3 of the
10 // License, or (at your option) any later version.
12 // This program is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 // GNU Affero General Public License for more details.
17 // You should have received a copy of the GNU Affero General Public License
18 // along with this program. If not, see <http://www.gnu.org/licenses/>.
20 #ifndef R2_DISPLAYER_VISUAL_SHAPE_H
21 #define R2_DISPLAYER_VISUAL_SHAPE_H
24 #include "displayer_visual.h"
25 #include "../interface_v3/group_map.h"
26 #include "instance_map_deco.h"
28 class CEntityCL;
30 namespace NLGUI
32 class CViewBitmap;
35 namespace NL3D
37 class UVisualCollisionEntity;
40 namespace R2
43 class CObjectTable;
45 // Display a scenario object with a 'Shape'
46 class CDisplayerVisualShape : public CDisplayerVisual, public CGroupMap::IDeco
48 public:
49 NLMISC_DECLARE_CLASS(R2::CDisplayerVisualShape);
50 // ctor
51 CDisplayerVisualShape(const std::string &shapeName = "", float scale = 1.f, bool worldMapDisplay = true);
52 // dtor
53 ~CDisplayerVisualShape();
54 // Init from a lua table. Parms should contain 'ShapeName' as a string
55 virtual bool init(const CLuaObject &parameters);
56 ////////////
57 // EVENTS //
58 ////////////
59 virtual void onPreRender();
60 virtual void onPostRender();
61 virtual void onAttrModified(const std::string &name, sint32 index);
62 virtual void onFocus(bool focused);
63 virtual void onSelect(bool selected);
65 virtual void onParentDisplayModeChanged();
68 // From ISelectableObject
69 virtual bool getLastClip() const;
70 virtual NLMISC::CAABBox getSelectBox() const;
71 virtual float preciseIntersectionTest(const NLMISC::CVector &worldRayStart, const NLMISC::CVector &worldRayDir) const;
72 const NLMISC::CMatrix &getInvertedMatrix() const;
73 virtual void snapToGround();
75 virtual NLMISC::CVector evalLinkPoint(bool leader = false);
77 // from CDisplayerVisual
78 void setDisplayMode(sint32 mode);
80 // get current instance being displayed
81 NL3D::UInstance &getMesh() { return _Instance; }
84 private:
85 std::string _ShapeName;
86 bool _Touched;
87 mutable NLMISC::CMatrix _InvertedMatrix;
88 bool _BadShapeName;
89 bool _Active;
90 bool _WorldMapDisplay;
91 float _Scale;
92 NL3D::UInstance _Instance;
93 CInstanceMapDeco _MapDeco;
94 bool _VisualSnapToGroundDone;
95 float _LastCamDist;
96 NLMISC::CMatrix _BBoxMatrix;
97 NL3D::UVisualCollisionEntity *_VisualCollisionEntity;
98 private:
99 void drawBBox(NLMISC::CRGBA color) const;
100 void deleteShape();
101 protected:
102 // from CDisplayerVisual
103 virtual void setActive(bool active);
104 virtual bool getActive() const;
105 virtual void updateWorldPos();
106 // from CGroupMap::IDeco
107 virtual void onAdd(CGroupMap &owner);
108 virtual void onRemove(CGroupMap &owner);
109 virtual void onPreRender(CGroupMap &owner);
110 virtual void onUpdate(CGroupMap &owner);
111 private:
112 void visualSnapToGround();
113 void updateMapDeco();
114 void deleteVisualCollisionEntity();
118 } // R2
124 #endif