2 * \file reference_maker.h
3 * \brief CReferenceMaker
4 * \date 2012-08-22 08:52GMT
5 * \author Jan Boon (Kaetemi)
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>
37 #include "../storage_array.h"
38 #include "animatable.h"
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
53 CReferenceMaker(CScene
*scene
);
54 virtual ~CReferenceMaker();
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
;
64 virtual void parse(uint16 version
, uint filter
= 0);
66 virtual void build(uint16 version
, uint filter
= 0);
67 virtual void disown();
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
75 virtual CReferenceMaker
*getReference(uint index
) const;
76 virtual void setReference(uint index
, CReferenceMaker
*reference
);
77 virtual uint
nbReferences() const;
81 virtual IStorageObject
*createChunkById(uint16 id
, bool container
);
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
;
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 */