Linux multi-monitor fullscreen support
[ryzomcore.git] / nel / tools / 3d / pipeline_max / builtin / reference_maker.h
blobb32c0c97bbce74d24e23d0461798c525484e4751
1 /**
2 * \file reference_maker.h
3 * \brief CReferenceMaker
4 * \date 2012-08-22 08:52GMT
5 * \author Jan Boon (Kaetemi)
6 * CReferenceMaker
7 */
9 /*
10 * Copyright (C) 2012 by authors
12 * This file is part of RYZOM CORE PIPELINE.
13 * RYZOM CORE PIPELINE is free software: you can redistribute it
14 * and/or modify it under the terms of the GNU Affero General Public
15 * License as published by the Free Software Foundation, either
16 * version 3 of the License, or (at your option) any later version.
18 * RYZOM CORE PIPELINE is distributed in the hope that it will be
19 * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
20 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Affero General Public License for more details.
23 * You should have received a copy of the GNU Affero General Public
24 * License along with RYZOM CORE PIPELINE. If not, see
25 * <http://www.gnu.org/licenses/>.
28 #ifndef PIPELINE_REFERENCE_MAKER_H
29 #define PIPELINE_REFERENCE_MAKER_H
30 #include <nel/misc/types_nl.h>
32 // STL includes
34 // NeL includes
36 // Project includes
37 #include "../storage_array.h"
38 #include "animatable.h"
40 namespace PIPELINE {
41 namespace MAX {
42 namespace BUILTIN {
44 /**
45 * \brief CReferenceMaker
46 * \date 2012-08-22 08:52GMT
47 * \author Jan Boon (Kaetemi)
48 * This class implements references
50 class CReferenceMaker : public CAnimatable
52 public:
53 CReferenceMaker(CScene *scene);
54 virtual ~CReferenceMaker();
56 // class desc
57 static const ucstring DisplayName;
58 static const char *InternalName;
59 static const char *InternalNameUnknown;
60 static const NLMISC::CClassId ClassId;
61 static const TSClassId SuperClassId;
63 // inherited
64 virtual void parse(uint16 version, uint filter = 0);
65 virtual void clean();
66 virtual void build(uint16 version, uint filter = 0);
67 virtual void disown();
68 virtual void init();
69 virtual bool inherits(const NLMISC::CClassId classId) const;
70 virtual const ISceneClassDesc *classDesc() const;
71 virtual void toStringLocal(std::ostream &ostream, const std::string &pad = "", uint filter = 0) const;
73 // child classes should inherit, default implementation stores in a vector
74 /// Get a reference
75 virtual CReferenceMaker *getReference(uint index) const;
76 virtual void setReference(uint index, CReferenceMaker *reference);
77 virtual uint nbReferences() const;
79 protected:
80 // inherited
81 virtual IStorageObject *createChunkById(uint16 id, bool container);
82 /// Storage method
83 bool m_ReferenceMap;
85 private:
86 CStorageValue<uint8> *m_204B_Equals_2E;
88 /// Default implementation, should preferably not use this, no direct read access will be provided
89 std::vector<NLMISC::CRefPtr<CReferenceMaker> > m_References;
90 /// Unknown value
91 uint32 m_References2035Value0;
93 CStorageRaw *m_Unknown2045;
94 CStorageRaw *m_Unknown2047;
95 CStorageRaw *m_Unknown21B0;
97 }; /* class CReferenceMaker */
99 typedef CSceneClassDesc<CReferenceMaker> CReferenceMakerClassDesc;
100 extern const CReferenceMakerClassDesc ReferenceMakerClassDesc;
101 typedef CSuperClassDesc<CReferenceMaker> CReferenceMakerSuperClassDesc;
102 extern const CReferenceMakerSuperClassDesc ReferenceMakerSuperClassDesc;
104 } /* namespace BUILTIN */
105 } /* namespace MAX */
106 } /* namespace PIPELINE */
108 #endif /* #ifndef PIPELINE_REFERENCE_MAKER_H */
110 /* end of file */