!XT (Code) Update copyright headers in Code/Sandbox.
[CRYENGINE.git] / Code / Sandbox / Plugins / CryDesigner / Objects / DesignerBaseObject.h
blob20ad4ae080ea648023f9928ef6f1c4c9ffad66d7
1 // Copyright 2001-2018 Crytek GmbH / Crytek Group. All rights reserved.
3 #pragma once
5 #include "Core/ModelCompiler.h"
6 #include "Core/Model.h"
8 namespace Designer
10 enum EDesignerTool;
12 template<class T>
13 class DesignerBaseObject : public T
15 public:
17 DesignerBaseObject()
19 m_pModel = new Model;
22 void Done() override;
24 void SetCompiler(ModelCompiler* pCompiler);
25 virtual ModelCompiler* GetCompiler() const;
27 MainContext GetMainContext() const { return MainContext((CBaseObject*)this, GetCompiler(), GetModel()); }
29 void SetModel(Model* pModel);
30 Model* GetModel() const { return m_pModel; }
32 void UpdateEngineNode();
33 IStatObj* GetIStatObj() override;
35 virtual void UpdateGameResource() {};
37 bool QueryNearestPos(const BrushVec3& worldPos, BrushVec3& outPos) const;
38 void DrawDimensions(DisplayContext& dc, AABB* pMergedBoundBox) override {}
40 void Validate() override;
41 virtual void UpdateHighlightPassState(bool bSelected, bool bHighlighted) override;
43 bool IsEmpty() const { return m_pModel->IsEmpty(eShelf_Base); }
45 virtual void UpdateVisibility(bool visible) override;
46 virtual bool IsHiddenByOption() { return false; }
47 virtual std::vector<EDesignerTool> GetIncompatibleSubtools() = 0;
49 protected:
50 void UpdateHiddenIStatObjState();
52 _smart_ptr<Model> m_pModel;
53 mutable _smart_ptr<ModelCompiler> m_pCompiler;
58 #include "DesignerBaseObject_Impl.h"