00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054 #ifndef _OSGSLICESBASE_H_
00055 #define _OSGSLICESBASE_H_
00056 #ifdef __sgi
00057 #pragma once
00058 #endif
00059
00060
00061 #include <OSGConfig.h>
00062 #include <OSGSystemDef.h>
00063
00064 #include <OSGBaseTypes.h>
00065 #include <OSGRefPtr.h>
00066 #include <OSGCoredNodePtr.h>
00067
00068 #include <OSGMaterialDrawable.h>
00069
00070 #include <OSGVec3fFields.h>
00071 #include <OSGReal32Fields.h>
00072
00073 #include <OSGSlicesFields.h>
00074
00075 OSG_BEGIN_NAMESPACE
00076
00077 class Slices;
00078 class BinaryDataHandler;
00079
00081
00082 class OSG_SYSTEMLIB_DLLMAPPING SlicesBase : public MaterialDrawable
00083 {
00084 private:
00085
00086 typedef MaterialDrawable Inherited;
00087
00088
00089 public:
00090
00091 typedef SlicesPtr Ptr;
00092
00093 enum
00094 {
00095 SizeFieldId = Inherited::NextFieldId,
00096 SliceDistanceFieldId = SizeFieldId + 1,
00097 NextFieldId = SliceDistanceFieldId + 1
00098 };
00099
00100 static const OSG::BitVector SizeFieldMask;
00101 static const OSG::BitVector SliceDistanceFieldMask;
00102
00103
00104 static const OSG::BitVector MTInfluenceMask;
00105
00106
00110 static FieldContainerType &getClassType (void);
00111 static UInt32 getClassTypeId (void);
00112
00114
00118 virtual FieldContainerType &getType (void);
00119 virtual const FieldContainerType &getType (void) const;
00120
00121 virtual UInt32 getContainerSize(void) const;
00122
00124
00128 SFVec3f *getSFSize (void);
00129 SFReal32 *getSFSliceDistance (void);
00130
00131 Vec3f &getSize (void);
00132 const Vec3f &getSize (void) const;
00133 Real32 &getSliceDistance (void);
00134 const Real32 &getSliceDistance (void) const;
00135
00137
00141 void setSize ( const Vec3f &value );
00142 void setSliceDistance ( const Real32 &value );
00143
00145
00150
00154 virtual UInt32 getBinSize (const BitVector &whichField);
00155 virtual void copyToBin ( BinaryDataHandler &pMem,
00156 const BitVector &whichField);
00157 virtual void copyFromBin( BinaryDataHandler &pMem,
00158 const BitVector &whichField);
00159
00160
00162
00166 static SlicesPtr create (void);
00167 static SlicesPtr createEmpty (void);
00168
00171
00175 virtual FieldContainerPtr shallowCopy (void) const;
00176
00178
00179 protected:
00180
00181
00185 SFVec3f _sfSize;
00186 SFReal32 _sfSliceDistance;
00187
00189
00193 SlicesBase(void);
00194 SlicesBase(const SlicesBase &source);
00195
00197
00201 virtual ~SlicesBase(void);
00202
00204
00208 #if !defined(OSG_FIXED_MFIELDSYNC)
00209 void executeSyncImpl( SlicesBase *pOther,
00210 const BitVector &whichField);
00211
00212 virtual void executeSync( FieldContainer &other,
00213 const BitVector &whichField);
00214 #else
00215 void executeSyncImpl( SlicesBase *pOther,
00216 const BitVector &whichField,
00217 const SyncInfo &sInfo );
00218
00219 virtual void executeSync( FieldContainer &other,
00220 const BitVector &whichField,
00221 const SyncInfo &sInfo);
00222
00223 virtual void execBeginEdit (const BitVector &whichField,
00224 UInt32 uiAspect,
00225 UInt32 uiContainerSize);
00226
00227 void execBeginEditImpl (const BitVector &whichField,
00228 UInt32 uiAspect,
00229 UInt32 uiContainerSize);
00230
00231 virtual void onDestroyAspect(UInt32 uiId, UInt32 uiAspect);
00232 #endif
00233
00235
00236 private:
00237
00238 friend class FieldContainer;
00239
00240 static FieldDescription *_desc[];
00241 static FieldContainerType _type;
00242
00243
00244
00245 void operator =(const SlicesBase &source);
00246 };
00247
00248
00249
00250
00251
00252
00253 typedef SlicesBase *SlicesBaseP;
00254
00255 typedef osgIF<SlicesBase::isNodeCore,
00256 CoredNodePtr<Slices>,
00257 FieldContainer::attempt_to_create_CoredNodePtr_on_non_NodeCore_FC
00258 >::_IRet SlicesNodePtr;
00259
00260 typedef RefPtr<SlicesPtr> SlicesRefPtr;
00261
00262 OSG_END_NAMESPACE
00263
00264 #define OSGSLICESBASE_HEADER_CVSID "@(#)$Id: FCBaseTemplate_h.h,v 1.38 2005/07/08 06:37:35 vossg Exp $"
00265
00266 #endif