fixed: auto_ptr -> unique_ptr
[opensg.git] / Source / System / NodeCores / Groups / Misc / OSGComponentTransformBase.h
blob57ea22fc87daaed142ac6102962d5a22754e59e1
1 /*---------------------------------------------------------------------------*\
2 * OpenSG *
3 * *
4 * *
5 * Copyright (C) 2000-2013 by the OpenSG Forum *
6 * *
7 * www.opensg.org *
8 * *
9 * contact: dirk@opensg.org, gerrit.voss@vossg.org, carsten_neumann@gmx.net *
10 * *
11 \*---------------------------------------------------------------------------*/
12 /*---------------------------------------------------------------------------*\
13 * License *
14 * *
15 * This library is free software; you can redistribute it and/or modify it *
16 * under the terms of the GNU Library General Public License as published *
17 * by the Free Software Foundation, version 2. *
18 * *
19 * This library is distributed in the hope that it will be useful, but *
20 * WITHOUT ANY WARRANTY; without even the implied warranty of *
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
22 * Library General Public License for more details. *
23 * *
24 * You should have received a copy of the GNU Library General Public *
25 * License along with this library; if not, write to the Free Software *
26 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *
27 * *
28 \*---------------------------------------------------------------------------*/
29 /*---------------------------------------------------------------------------*\
30 * Changes *
31 * *
32 * *
33 * *
34 * *
35 * *
36 * *
37 \*---------------------------------------------------------------------------*/
39 /*****************************************************************************\
40 *****************************************************************************
41 ** **
42 ** This file is automatically generated. **
43 ** **
44 ** Any changes made to this file WILL be lost when it is **
45 ** regenerated, which can become necessary at any time. **
46 ** **
47 ** Do not change this file, changes should be done in the derived **
48 ** class ComponentTransform
49 ** **
50 *****************************************************************************
51 \*****************************************************************************/
54 #ifndef _OSGCOMPONENTTRANSFORMBASE_H_
55 #define _OSGCOMPONENTTRANSFORMBASE_H_
56 #ifdef __sgi
57 #pragma once
58 #endif
61 #include "OSGConfig.h"
62 #include "OSGGroupDef.h"
64 //#include "OSGBaseTypes.h"
66 #include "OSGTransform.h" // Parent
68 #include "OSGVecFields.h" // Center type
69 #include "OSGMathFields.h" // Rotation type
71 #include "OSGComponentTransformFields.h"
73 OSG_BEGIN_NAMESPACE
76 class ComponentTransform;
78 //! \brief ComponentTransform Base Class.
80 class OSG_GROUP_DLLMAPPING ComponentTransformBase : public Transform
82 public:
84 typedef Transform Inherited;
85 typedef Transform ParentContainer;
87 typedef Inherited::TypeObject TypeObject;
88 typedef TypeObject::InitPhase InitPhase;
90 OSG_GEN_INTERNALPTR(ComponentTransform);
92 /*========================== PUBLIC =================================*/
94 public:
96 enum
98 CenterFieldId = Inherited::NextFieldId,
99 RotationFieldId = CenterFieldId + 1,
100 ScaleFieldId = RotationFieldId + 1,
101 ScaleOrientationFieldId = ScaleFieldId + 1,
102 TranslationFieldId = ScaleOrientationFieldId + 1,
103 NextFieldId = TranslationFieldId + 1
106 static const OSG::BitVector CenterFieldMask =
107 (TypeTraits<BitVector>::One << CenterFieldId);
108 static const OSG::BitVector RotationFieldMask =
109 (TypeTraits<BitVector>::One << RotationFieldId);
110 static const OSG::BitVector ScaleFieldMask =
111 (TypeTraits<BitVector>::One << ScaleFieldId);
112 static const OSG::BitVector ScaleOrientationFieldMask =
113 (TypeTraits<BitVector>::One << ScaleOrientationFieldId);
114 static const OSG::BitVector TranslationFieldMask =
115 (TypeTraits<BitVector>::One << TranslationFieldId);
116 static const OSG::BitVector NextFieldMask =
117 (TypeTraits<BitVector>::One << NextFieldId);
119 typedef SFVec3f SFCenterType;
120 typedef SFQuaternion SFRotationType;
121 typedef SFVec3f SFScaleType;
122 typedef SFQuaternion SFScaleOrientationType;
123 typedef SFVec3f SFTranslationType;
125 /*---------------------------------------------------------------------*/
126 /*! \name Class Get */
127 /*! \{ */
129 static FieldContainerType &getClassType (void);
130 static UInt32 getClassTypeId (void);
131 static UInt16 getClassGroupId(void);
133 /*! \} */
134 /*---------------------------------------------------------------------*/
135 /*! \name FieldContainer Get */
136 /*! \{ */
138 virtual FieldContainerType &getType (void);
139 virtual const FieldContainerType &getType (void) const;
141 virtual UInt32 getContainerSize(void) const;
143 /*! \} */
144 /*---------------------------------------------------------------------*/
145 /*! \name Field Get */
146 /*! \{ */
149 SFVec3f *editSFCenter (void);
150 const SFVec3f *getSFCenter (void) const;
152 SFQuaternion *editSFRotation (void);
153 const SFQuaternion *getSFRotation (void) const;
155 SFVec3f *editSFScale (void);
156 const SFVec3f *getSFScale (void) const;
158 SFQuaternion *editSFScaleOrientation(void);
159 const SFQuaternion *getSFScaleOrientation (void) const;
161 SFVec3f *editSFTranslation (void);
162 const SFVec3f *getSFTranslation (void) const;
165 Vec3f &editCenter (void);
166 const Vec3f &getCenter (void) const;
168 Quaternion &editRotation (void);
169 const Quaternion &getRotation (void) const;
171 Vec3f &editScale (void);
172 const Vec3f &getScale (void) const;
174 Quaternion &editScaleOrientation(void);
175 const Quaternion &getScaleOrientation (void) const;
177 Vec3f &editTranslation (void);
178 const Vec3f &getTranslation (void) const;
180 /*! \} */
181 /*---------------------------------------------------------------------*/
182 /*! \name Field Set */
183 /*! \{ */
185 void setCenter (const Vec3f &value);
186 void setRotation (const Quaternion &value);
187 void setScale (const Vec3f &value);
188 void setScaleOrientation(const Quaternion &value);
189 void setTranslation (const Vec3f &value);
191 /*! \} */
192 /*---------------------------------------------------------------------*/
193 /*! \name Ptr MField Set */
194 /*! \{ */
196 /*! \} */
197 /*---------------------------------------------------------------------*/
198 /*! \name Binary Access */
199 /*! \{ */
201 virtual SizeT getBinSize (ConstFieldMaskArg whichField);
202 virtual void copyToBin (BinaryDataHandler &pMem,
203 ConstFieldMaskArg whichField);
204 virtual void copyFromBin(BinaryDataHandler &pMem,
205 ConstFieldMaskArg whichField);
208 /*! \} */
209 /*---------------------------------------------------------------------*/
210 /*! \name Construction */
211 /*! \{ */
213 static ComponentTransformTransitPtr create (void);
214 static ComponentTransform *createEmpty (void);
216 static ComponentTransformTransitPtr createLocal (
217 BitVector bFlags = FCLocal::All);
219 static ComponentTransform *createEmptyLocal(
220 BitVector bFlags = FCLocal::All);
222 static ComponentTransformTransitPtr createDependent (BitVector bFlags);
224 /*! \} */
225 /*---------------------------------------------------------------------*/
226 /*! \name Copy */
227 /*! \{ */
229 virtual FieldContainerTransitPtr shallowCopy (void) const;
230 virtual FieldContainerTransitPtr shallowCopyLocal(
231 BitVector bFlags = FCLocal::All) const;
232 virtual FieldContainerTransitPtr shallowCopyDependent(
233 BitVector bFlags) const;
235 /*! \} */
236 /*========================= PROTECTED ===============================*/
238 protected:
240 static TypeObject _type;
242 static void classDescInserter(TypeObject &oType);
243 static const Char8 *getClassname (void );
245 /*---------------------------------------------------------------------*/
246 /*! \name Fields */
247 /*! \{ */
249 SFVec3f _sfCenter;
250 SFQuaternion _sfRotation;
251 SFVec3f _sfScale;
252 SFQuaternion _sfScaleOrientation;
253 SFVec3f _sfTranslation;
255 /*! \} */
256 /*---------------------------------------------------------------------*/
257 /*! \name Constructors */
258 /*! \{ */
260 ComponentTransformBase(void);
261 ComponentTransformBase(const ComponentTransformBase &source);
263 /*! \} */
264 /*---------------------------------------------------------------------*/
265 /*! \name Destructors */
266 /*! \{ */
268 virtual ~ComponentTransformBase(void);
270 /*! \} */
271 /*---------------------------------------------------------------------*/
272 /*! \name onCreate */
273 /*! \{ */
276 /*! \} */
277 /*---------------------------------------------------------------------*/
278 /*! \name Generic Field Access */
279 /*! \{ */
281 GetFieldHandlePtr getHandleCenter (void) const;
282 EditFieldHandlePtr editHandleCenter (void);
283 GetFieldHandlePtr getHandleRotation (void) const;
284 EditFieldHandlePtr editHandleRotation (void);
285 GetFieldHandlePtr getHandleScale (void) const;
286 EditFieldHandlePtr editHandleScale (void);
287 GetFieldHandlePtr getHandleScaleOrientation (void) const;
288 EditFieldHandlePtr editHandleScaleOrientation(void);
289 GetFieldHandlePtr getHandleTranslation (void) const;
290 EditFieldHandlePtr editHandleTranslation (void);
292 /*! \} */
293 /*---------------------------------------------------------------------*/
294 /*! \name Sync */
295 /*! \{ */
297 #ifdef OSG_MT_CPTR_ASPECT
298 virtual void execSyncV( FieldContainer &oFrom,
299 ConstFieldMaskArg whichField,
300 AspectOffsetStore &oOffsets,
301 ConstFieldMaskArg syncMode ,
302 const UInt32 uiSyncInfo);
304 void execSync ( ComponentTransformBase *pFrom,
305 ConstFieldMaskArg whichField,
306 AspectOffsetStore &oOffsets,
307 ConstFieldMaskArg syncMode ,
308 const UInt32 uiSyncInfo);
309 #endif
311 /*! \} */
312 /*---------------------------------------------------------------------*/
313 /*! \name Edit */
314 /*! \{ */
316 /*! \} */
317 /*---------------------------------------------------------------------*/
318 /*! \name Aspect Create */
319 /*! \{ */
321 #ifdef OSG_MT_CPTR_ASPECT
322 virtual FieldContainer *createAspectCopy(
323 const FieldContainer *pRefAspect) const;
324 #endif
326 /*! \} */
327 /*---------------------------------------------------------------------*/
328 /*! \name Edit */
329 /*! \{ */
330 /*! \} */
331 /*---------------------------------------------------------------------*/
332 /*! \name Sync */
333 /*! \{ */
335 virtual void resolveLinks(void);
337 /*! \} */
338 /*========================== PRIVATE ================================*/
340 private:
341 /*---------------------------------------------------------------------*/
343 // prohibit default functions (move to 'public' if you need one)
344 void operator =(const ComponentTransformBase &source);
347 typedef ComponentTransformBase *ComponentTransformBaseP;
349 typedef CoredNodeRefPtr <ComponentTransform> ComponentTransformNodeRefPtr;
350 typedef CoredNodeMTRefPtr<ComponentTransform> ComponentTransformNodeMTRefPtr;
352 OSG_END_NAMESPACE
354 #endif /* _OSGCOMPONENTTRANSFORMBASE_H_ */