Fix css style order when using external css files
[ryzomcore.git] / ryzom / client / src / r2 / tool_create_entity.h
bloba6c174b223efb8c0f4e53136454bab10a9fae803
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_TOOL_CREATE_ENTITY_H
21 #define R2_TOOL_CREATE_ENTITY_H
23 #include "tool_choose_pos.h"
24 #include "nel/misc/vector.h"
25 #include "prim_render.h"
26 #include "../decal.h"
27 #include "auto_group.h"
28 #include "displayer_visual_entity.h"
30 class CEntity;
31 namespace NLGUI
33 class CLuaObject;
36 namespace R2
39 /**
40 * Tool to create an entity or an array of entities in the scene
41 * A transparent version of the entity to be created is drawn under the mouse
42 * at the creation position
44 class CToolCreateEntity : public CToolChoosePos
46 public:
47 NLMISC_DECLARE_CLASS(R2::CToolCreateEntity);
48 CToolCreateEntity() { nlassert(0); }
49 ~CToolCreateEntity();
51 CToolCreateEntity(uint ghostSlot, const std::string &paletteId, bool arrayMode);
52 const std::string &getPaletteId() const { return _PaletteId; }
53 protected:
54 // from CTool
55 virtual void onActivate();
57 virtual void updateBeforeRender();
58 virtual void updateAfterRender();
59 virtual bool onMouseLeftButtonClicked();
60 virtual bool onMouseRightButtonClicked();
61 // from CToolChoosePos
62 virtual void commit(const NLMISC::CVector &createPosition, float createAngle);
63 virtual void updateInvalidCursorOnUI();
64 virtual bool stopAfterCommit() const;
65 virtual void cancel();
66 private:
67 enum TCreateState
69 CreateSingle = 0,
70 ChooseArrayOrigin,
71 DrawArray
73 private:
74 TCreateState _CreateState;
75 std::string _PaletteId;
76 std::string _EntityCategory;
77 CAutoGroup _AutoGroup;
78 CVector _ArrayOrigin;
79 CVector _ArrayEnd;
80 float _ArrayDefaultAngle;
81 bool _ValidArray;
82 enum TArrayWantedAction
84 ArrayActionNone = 0, ArrayActionValidate, ArrayActionCancel
86 TArrayWantedAction _ArrayWantedAction;
87 std::vector<CDisplayerVisualEntity::TRefPtr> _ArrayElements; // ghost elements forming the array before it is drawn
89 private:
90 /** Create an entity in scenario (possibly a ghost one) from a CEntityCL
91 * \return InstanceId of the newly created entity.
93 std::string cloneEntityIntoScenario(CEntityCL *clonee,
94 const NLMISC::CVector &createPosition,
95 float createAngle,
96 bool newAction,
97 bool createGhost
99 // array management
100 void updateAutoGroup();
101 void updateArray(CEntityCL *clonee);
102 void commitArray();
103 void clearArray();
106 bool isBotObjectSheet(const NLMISC::CSheetId &sheetId) const;
112 } // R2
114 #endif