1 // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
2 // Copyright (C) 2010 Winch Gate Property Limited
4 // This source file has been modified by the following contributors:
5 // Copyright (C) 2013 Laszlo KIS-ADAM (dfighter) <dfighter1985@gmail.com>
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"
27 #include "auto_group.h"
28 #include "displayer_visual_entity.h"
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
47 NLMISC_DECLARE_CLASS(R2::CToolCreateEntity
);
48 CToolCreateEntity() { nlassert(0); }
51 CToolCreateEntity(uint ghostSlot
, const std::string
&paletteId
, bool arrayMode
);
52 const std::string
&getPaletteId() const { return _PaletteId
; }
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();
74 TCreateState _CreateState
;
75 std::string _PaletteId
;
76 std::string _EntityCategory
;
77 CAutoGroup _AutoGroup
;
80 float _ArrayDefaultAngle
;
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
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
,
100 void updateAutoGroup();
101 void updateArray(CEntityCL
*clonee
);
106 bool isBotObjectSheet(const NLMISC::CSheetId
&sheetId
) const;