#include <OSGClipPlaneChunk.h>
Inheritance diagram for osg::ClipPlaneChunk:

Public Types | |
| typedef ClipPlaneChunkPtr | Ptr |
| enum | { EquationFieldId = Inherited::NextFieldId, EnableFieldId = EquationFieldId + 1, BeaconFieldId = EnableFieldId + 1, NextFieldId = BeaconFieldId + 1 } |
Public Member Functions | |
Chunk Class Access | |
| *virtual const StateChunkClass * | getClass (void) const |
Sync | |
| *virtual void | changed (BitVector whichField, UInt32 origin) |
Output | |
| *virtual void | dump (UInt32 uiIndent=0, const BitVector bvFlags=0) const |
State | |
| *virtual void | activate (DrawActionBase *action, UInt32 index=0) |
| virtual void | changeFrom (DrawActionBase *action, StateChunk *old, UInt32 index=0) |
| virtual void | deactivate (DrawActionBase *action, UInt32 index=0) |
Comparison | |
| *virtual Real32 | switchCost (StateChunk *chunk) |
| virtual bool | operator< (const StateChunk &other) const |
| virtual bool | operator== (const StateChunk &other) const |
| virtual bool | operator!= (const StateChunk &other) const |
FieldContainer Get | |
| *virtual FieldContainerType & | getType (void) |
| virtual const FieldContainerType & | getType (void) const |
| virtual UInt32 | getContainerSize (void) const |
Field Get | |
| *SFVec4f * | getSFEquation (void) |
| Get the ClipPlaneChunk::_sfEquation field. | |
| SFBool * | getSFEnable (void) |
| Get the ClipPlaneChunk::_sfEnable field. | |
| SFNodePtr * | getSFBeacon (void) |
| Get the ClipPlaneChunk::_sfBeacon field. | |
| Vec4f & | getEquation (void) |
| Get the value of the ClipPlaneChunk::_sfEquation field. | |
| const Vec4f & | getEquation (void) const |
| Get the value of the ClipPlaneChunk::_sfEquation field. | |
| bool & | getEnable (void) |
| Get the value of the ClipPlaneChunk::_sfEnable field. | |
| const bool & | getEnable (void) const |
| Get the value of the ClipPlaneChunk::_sfEnable field. | |
| NodePtr & | getBeacon (void) |
| Get the value of the ClipPlaneChunk::_sfBeacon field. | |
| const NodePtr & | getBeacon (void) const |
| Get the value of the ClipPlaneChunk::_sfBeacon field. | |
Field Set | |
| *void | setEquation (const Vec4f &value) |
| Set the value of the ClipPlaneChunk::_sfEquation field. | |
| void | setEnable (const bool &value) |
| Set the value of the ClipPlaneChunk::_sfEnable field. | |
| void | setBeacon (const NodePtr &value) |
| Set the value of the ClipPlaneChunk::_sfBeacon field. | |
Binary Access | |
| *virtual UInt32 | getBinSize (const BitVector &whichField) |
| virtual void | copyToBin (BinaryDataHandler &pMem, const BitVector &whichField) |
| virtual void | copyFromBin (BinaryDataHandler &pMem, const BitVector &whichField) |
Copy | |
| *virtual FieldContainerPtr | shallowCopy (void) const |
Static Public Member Functions | |
Static Chunk Class Access | |
| *static UInt32 | getStaticClassId (void) |
| static const StateChunkClass * | getStaticClass (void) |
Class Get | |
| *static FieldContainerType & | getClassType (void) |
| access the type of the class | |
| static UInt32 | getClassTypeId (void) |
| access the numerical type of the class | |
Construction | |
| *static ClipPlaneChunkPtr | create (void) |
| create a new instance of the class | |
| static ClipPlaneChunkPtr | createEmpty (void) |
| create an empty new instance of the class, do not copy the prototype | |
Static Public Attributes | |
| static const osg::BitVector | EquationFieldMask |
| static const osg::BitVector | EnableFieldMask |
| static const osg::BitVector | BeaconFieldMask |
| static const osg::BitVector | MTInfluenceMask |
| static const BitVector | InternalFieldMask = (1 << Attachment::InternalFieldId) |
| static const BitVector | ParentsFieldMask = (1 << Attachment::ParentsFieldId) |
| static const BitVector | NextFieldMask |
Protected Member Functions | |
Constructors | |
| * | ClipPlaneChunk (void) |
| ClipPlaneChunk (const ClipPlaneChunk &source) | |
Destructors | |
| *virtual | ~ClipPlaneChunk (void) |
Sync | |
| *void | executeSyncImpl (ClipPlaneChunkBase *pOther, const BitVector &whichField) |
| virtual void | executeSync (FieldContainer &other, const BitVector &whichField) |
Static Protected Member Functions | |
| static void | initMethod (void) |
Protected Attributes | |
Fields | |
| *SFVec4f | _sfEquation |
| SFBool | _sfEnable |
| SFNodePtr | _sfBeacon |
Private Types | |
| typedef ClipPlaneChunkBase | Inherited |
Private Member Functions | |
| void | operator= (const ClipPlaneChunk &source) |
Static Private Attributes | |
| static StateChunkClass | _class |
Friends | |
| class | FieldContainer |
| class | ClipPlaneChunkBase |
This chunk wraps glCLipPlane() (osg::ClipPlaneChunk::_sfEquation) and glEnable(GL_CLIP_PLANEi) (osg::ClipPlaneChunk::_sfEnable). The coordinate system the plane is in is defined by osg::ClipPlaneChunk::_sfBeacon.
Definition at line 55 of file OSGClipPlaneChunk.h.
|
|
Reimplemented from osg::ClipPlaneChunkBase. Definition at line 142 of file OSGClipPlaneChunk.h. |
|
|
Reimplemented from osg::StateChunkBase. Definition at line 92 of file OSGClipPlaneChunkBase.h. |
|
|
Reimplemented from osg::Attachment. Definition at line 94 of file OSGClipPlaneChunkBase.h. 00095 { 00096 EquationFieldId = Inherited::NextFieldId, 00097 EnableFieldId = EquationFieldId + 1, 00098 BeaconFieldId = EnableFieldId + 1, 00099 NextFieldId = BeaconFieldId + 1 00100 };
|
|
|
Definition at line 89 of file OSGClipPlaneChunk.cpp. 00089 : 00090 Inherited() 00091 { 00092 }
|
|
|
Definition at line 94 of file OSGClipPlaneChunk.cpp. 00094 : 00095 Inherited(source) 00096 { 00097 }
|
|
|
Definition at line 99 of file OSGClipPlaneChunk.cpp.
|
|
|
Reimplemented from osg::StateChunk. Definition at line 105 of file OSGClipPlaneChunk.cpp. References _class. 00106 { 00107 return &_class; 00108 }
|
|
|
Reimplemented from osg::StateChunk. Definition at line 46 of file OSGClipPlaneChunk.inl. References osg::StateChunkClass::getId(), and getStaticClass(). 00047 { 00048 return getStaticClass()->getId(); 00049 }
|
|
|
Reimplemented from osg::StateChunk. Definition at line 52 of file OSGClipPlaneChunk.inl. References _class. Referenced by getStaticClassId(). 00053 { 00054 return &ClipPlaneChunk::_class; 00055 }
|
|
||||||||||||
|
Reimplemented from osg::StateChunk. Definition at line 112 of file OSGClipPlaneChunk.cpp.
|
|
||||||||||||
|
Reimplemented from osg::StateChunk. Definition at line 118 of file OSGClipPlaneChunk.cpp. References SLOG. 00120 { 00121 SLOG << "Dump ClipPlaneChunk NI" << std::endl; 00122 }
|
|
||||||||||||
|
Activate the chunk, i.e. set the OpenGl state covered by the chunk which is different from the default state to the given state. Reimplemented from osg::StateChunk. Definition at line 127 of file OSGClipPlaneChunk.cpp. References osg::Action::getActNode(), osg::ClipPlaneChunkBase::getBeacon(), osg::DrawActionBase::getCameraToWorld(), osg::ClipPlaneChunkBase::getEnable(), osg::ClipPlaneChunkBase::getEquation(), osg::TransformationMatrix< ValueTypeT >::getValues(), GLdouble, osg::TransformationMatrix< ValueTypeT >::invert(), osg::TransformationMatrix< ValueTypeT >::mult(), osg::NullFC, SWARNING, and osg::RenderAction::top_matrix(). 00128 { 00129 RenderAction *ra = dynamic_cast<RenderAction *>(action); 00130 00131 Matrix beaconMat; 00132 00133 if(ra != NULL) 00134 { 00135 beaconMat = ra->top_matrix(); 00136 } 00137 else 00138 { 00139 beaconMat = action->getActNode()->getToWorld(); 00140 } 00141 00142 00143 Matrix cameraMat = action->getCameraToWorld(); 00144 00145 cameraMat.invert(); 00146 00147 if(getBeacon() != NullFC) 00148 { 00149 getBeacon()->getToWorld(beaconMat); 00150 } 00151 else 00152 { 00153 SWARNING << "NO beacon" << std::endl; 00154 } 00155 00156 cameraMat.mult(beaconMat); 00157 00158 if(getEnable()) 00159 { 00160 GLdouble glEq[4]; 00161 Vec4f & eq = getEquation(); 00162 glEq[0] = eq[0]; 00163 glEq[1] = eq[1]; 00164 glEq[2] = eq[2]; 00165 glEq[3] = eq[3]; 00166 00167 glPushMatrix(); 00168 glLoadMatrixf(cameraMat.getValues()); 00169 00170 glClipPlane( GL_CLIP_PLANE0 + idx, glEq); 00171 glEnable( GL_CLIP_PLANE0 + idx); 00172 00173 glPopMatrix(); 00174 } 00175 }
|
|
||||||||||||||||
|
Change from an old chunk of the same type to this chunk. Note that in general no type checking is done, make sure to use this on a legal combination of chunks! Reimplemented from osg::StateChunk. Definition at line 180 of file OSGClipPlaneChunk.cpp. References osg::Action::getActNode(), osg::ClipPlaneChunkBase::getBeacon(), osg::DrawActionBase::getCameraToWorld(), osg::ClipPlaneChunkBase::getEnable(), osg::ClipPlaneChunkBase::getEquation(), osg::TransformationMatrix< ValueTypeT >::getValues(), GLdouble, osg::TransformationMatrix< ValueTypeT >::invert(), osg::TransformationMatrix< ValueTypeT >::mult(), osg::NullFC, SWARNING, and osg::RenderAction::top_matrix(). 00182 { 00183 ClipPlaneChunk const *old = dynamic_cast<ClipPlaneChunk const*>(old_chunk); 00184 00185 // change from me to me? 00186 // this assumes I haven't changed in the meantime. is that a valid assumption? 00187 if(old == this) 00188 return; 00189 00190 00191 RenderAction *ra = dynamic_cast<RenderAction *>(action); 00192 00193 Matrix beaconMat; 00194 00195 if(ra != NULL) 00196 { 00197 beaconMat = ra->top_matrix(); 00198 } 00199 else 00200 { 00201 beaconMat = action->getActNode()->getToWorld(); 00202 } 00203 00204 00205 Matrix cameraMat = action->getCameraToWorld(); 00206 00207 cameraMat.invert(); 00208 00209 if (getBeacon() != NullFC) 00210 { 00211 getBeacon()->getToWorld(beaconMat); 00212 } 00213 else 00214 { 00215 SWARNING << "ClipPlaneChunk::changeFrom: NO beacon" << std::endl; 00216 } 00217 00218 cameraMat.mult(beaconMat); 00219 00220 if(getEnable() != old->getEnable() || 00221 getBeacon() != old->getBeacon()) 00222 { 00223 if(getEnable()) 00224 { 00225 GLdouble glEq[4]; 00226 Vec4f & eq = getEquation(); 00227 glEq[0] = eq[0]; 00228 glEq[1] = eq[1]; 00229 glEq[2] = eq[2]; 00230 glEq[3] = eq[3]; 00231 00232 glPushMatrix(); 00233 glLoadMatrixf(cameraMat.getValues()); 00234 00235 glClipPlane( GL_CLIP_PLANE0 + idx, glEq); 00236 glEnable( GL_CLIP_PLANE0 + idx); 00237 00238 glPopMatrix(); 00239 } 00240 else 00241 { 00242 glDisable( GL_CLIP_PLANE0 + idx); 00243 } 00244 } 00245 else 00246 { 00247 ;//SWARNING << " - are the SAME" << std::endl; 00248 } 00249 }
|
|
||||||||||||
|
Deactivate the chunk, i.e. set the OpenGl state covered by the chunk which is different from the default state to the default state. Reimplemented from osg::StateChunk. Definition at line 252 of file OSGClipPlaneChunk.cpp. References osg::ClipPlaneChunkBase::getEnable(). 00253 { 00254 if(getEnable()) 00255 { 00256 glDisable( GL_CLIP_PLANE0 + idx); 00257 } 00258 }
|
|
|
Calculate how expensive it is to switch from one instance of the chunk class to another. In most cases not implemented yet, will return 0. Reimplemented from osg::StateChunk. Definition at line 263 of file OSGClipPlaneChunk.cpp.
|
|
|
Calculate how expensive it is to switch from one instance of the chunk class to another. In most cases not implemented yet, will return 0. Reimplemented from osg::StateChunk. Definition at line 268 of file OSGClipPlaneChunk.cpp.
|
|
|
Compare two chunks. In most cases not implemented yet, will return false. Reimplemented from osg::StateChunk. Definition at line 273 of file OSGClipPlaneChunk.cpp. References osg::ClipPlaneChunkBase::getBeacon(), osg::ClipPlaneChunkBase::getEnable(), and osg::ClipPlaneChunkBase::getEquation(). 00274 { 00275 ClipPlaneChunk const *tother = dynamic_cast<ClipPlaneChunk const*>(&other); 00276 00277 if(!tother) 00278 return false; 00279 00280 if(getEnable() != tother->getEnable()) 00281 return false; 00282 00283 if(getEquation() != tother->getEquation()) 00284 return false; 00285 00286 if(getBeacon() != tother->getBeacon()) 00287 return false; 00288 00289 return true; 00290 }
|
|
|
Calculate how expensive it is to switch from one instance of the chunk class to another. In most cases not implemented yet, will return 0. Reimplemented from osg::StateChunk. Definition at line 292 of file OSGClipPlaneChunk.cpp.
|
|
|
|
|
|
Reimplemented from osg::StateChunkBase. Definition at line 58 of file OSGClipPlaneChunkBase.inl. References osg::ClipPlaneChunkBase::_type. Referenced by osg::ClipPlaneChunkBase::create(). 00059 { 00060 return _type; 00061 }
|
|
|
Reimplemented from osg::StateChunkBase. Definition at line 65 of file OSGClipPlaneChunkBase.inl. References osg::ClipPlaneChunkBase::_type, and osg::TypeBase::getId(). 00066 { 00067 return _type.getId(); 00068 }
|
|
|
Reimplemented from osg::StateChunkBase. Definition at line 129 of file OSGClipPlaneChunkBase.cpp. References osg::ClipPlaneChunkBase::_type. 00130 { 00131 return _type; 00132 }
|
|
|
Reimplemented from osg::StateChunkBase. Definition at line 134 of file OSGClipPlaneChunkBase.cpp. References osg::ClipPlaneChunkBase::_type. 00135 { 00136 return _type; 00137 }
|
|
|
Reimplemented from osg::StateChunkBase. Definition at line 149 of file OSGClipPlaneChunkBase.cpp. 00150 { 00151 return sizeof(ClipPlaneChunk); 00152 }
|
|
|
Definition at line 101 of file OSGClipPlaneChunkBase.inl. References osg::ClipPlaneChunkBase::_sfEquation. 00102 { 00103 return &_sfEquation; 00104 }
|
|
|
Definition at line 108 of file OSGClipPlaneChunkBase.inl. References osg::ClipPlaneChunkBase::_sfEnable. 00109 { 00110 return &_sfEnable; 00111 }
|
|
|
Definition at line 115 of file OSGClipPlaneChunkBase.inl. References osg::ClipPlaneChunkBase::_sfBeacon. 00116 { 00117 return &_sfBeacon; 00118 }
|
|
|
Definition at line 123 of file OSGClipPlaneChunkBase.inl. References osg::ClipPlaneChunkBase::_sfEquation, and osg::SField< FieldTypeT, fieldNameSpace >::getValue(). Referenced by activate(), changeFrom(), and operator==(). 00124 { 00125 return _sfEquation.getValue(); 00126 }
|
|
|
Definition at line 130 of file OSGClipPlaneChunkBase.inl. References osg::ClipPlaneChunkBase::_sfEquation, and osg::SField< FieldTypeT, fieldNameSpace >::getValue(). 00131 { 00132 return _sfEquation.getValue(); 00133 }
|
|
|
Definition at line 144 of file OSGClipPlaneChunkBase.inl. References osg::ClipPlaneChunkBase::_sfEnable, and osg::SField< FieldTypeT, fieldNameSpace >::getValue(). Referenced by activate(), changeFrom(), deactivate(), and operator==(). 00145 { 00146 return _sfEnable.getValue(); 00147 }
|
|
|
Definition at line 151 of file OSGClipPlaneChunkBase.inl. References osg::ClipPlaneChunkBase::_sfEnable, and osg::SField< FieldTypeT, fieldNameSpace >::getValue(). 00152 { 00153 return _sfEnable.getValue(); 00154 }
|
|
|
Definition at line 165 of file OSGClipPlaneChunkBase.inl. References osg::ClipPlaneChunkBase::_sfBeacon, and osg::SField< FieldTypeT, fieldNameSpace >::getValue(). Referenced by activate(), changeFrom(), and operator==(). 00166 { 00167 return _sfBeacon.getValue(); 00168 }
|
|
|
Definition at line 172 of file OSGClipPlaneChunkBase.inl. References osg::ClipPlaneChunkBase::_sfBeacon, and osg::SField< FieldTypeT, fieldNameSpace >::getValue(). 00173 { 00174 return _sfBeacon.getValue(); 00175 }
|
|
|
Definition at line 137 of file OSGClipPlaneChunkBase.inl. References osg::ClipPlaneChunkBase::_sfEquation, and osg::SField< FieldTypeT, fieldNameSpace >::setValue(). 00138 { 00139 _sfEquation.setValue(value); 00140 }
|
|
|
Definition at line 158 of file OSGClipPlaneChunkBase.inl. References osg::ClipPlaneChunkBase::_sfEnable, and osg::SField< FieldTypeT, fieldNameSpace >::setValue().
|
|
|
Definition at line 179 of file OSGClipPlaneChunkBase.inl. References osg::ClipPlaneChunkBase::_sfBeacon, and osg::SField< FieldTypeT, fieldNameSpace >::setValue().
|
|
|
Reimplemented from osg::StateChunkBase. Definition at line 215 of file OSGClipPlaneChunkBase.cpp. References osg::ClipPlaneChunkBase::_sfBeacon, osg::ClipPlaneChunkBase::_sfEnable, osg::ClipPlaneChunkBase::_sfEquation, osg::ClipPlaneChunkBase::BeaconFieldMask, osg::ClipPlaneChunkBase::EnableFieldMask, osg::ClipPlaneChunkBase::EquationFieldMask, osg::SField< FieldTypeT, fieldNameSpace >::getBinSize(), osg::StateChunkBase::getBinSize(), and osg::FieldBits::NoField. 00216 { 00217 UInt32 returnValue = Inherited::getBinSize(whichField); 00218 00219 if(FieldBits::NoField != (EquationFieldMask & whichField)) 00220 { 00221 returnValue += _sfEquation.getBinSize(); 00222 } 00223 00224 if(FieldBits::NoField != (EnableFieldMask & whichField)) 00225 { 00226 returnValue += _sfEnable.getBinSize(); 00227 } 00228 00229 if(FieldBits::NoField != (BeaconFieldMask & whichField)) 00230 { 00231 returnValue += _sfBeacon.getBinSize(); 00232 } 00233 00234 00235 return returnValue; 00236 }
|
|
||||||||||||
|
Reimplemented from osg::StateChunkBase. Definition at line 238 of file OSGClipPlaneChunkBase.cpp. References osg::ClipPlaneChunkBase::_sfBeacon, osg::ClipPlaneChunkBase::_sfEnable, osg::ClipPlaneChunkBase::_sfEquation, osg::ClipPlaneChunkBase::BeaconFieldMask, osg::SField< FieldTypeT, fieldNameSpace >::copyToBin(), osg::StateChunkBase::copyToBin(), osg::ClipPlaneChunkBase::EnableFieldMask, osg::ClipPlaneChunkBase::EquationFieldMask, and osg::FieldBits::NoField. 00240 { 00241 Inherited::copyToBin(pMem, whichField); 00242 00243 if(FieldBits::NoField != (EquationFieldMask & whichField)) 00244 { 00245 _sfEquation.copyToBin(pMem); 00246 } 00247 00248 if(FieldBits::NoField != (EnableFieldMask & whichField)) 00249 { 00250 _sfEnable.copyToBin(pMem); 00251 } 00252 00253 if(FieldBits::NoField != (BeaconFieldMask & whichField)) 00254 { 00255 _sfBeacon.copyToBin(pMem); 00256 } 00257 00258 00259 }
|
|
||||||||||||
|
Reimplemented from osg::StateChunkBase. Definition at line 261 of file OSGClipPlaneChunkBase.cpp. References osg::ClipPlaneChunkBase::_sfBeacon, osg::ClipPlaneChunkBase::_sfEnable, osg::ClipPlaneChunkBase::_sfEquation, osg::ClipPlaneChunkBase::BeaconFieldMask, osg::SField< FieldTypeT, fieldNameSpace >::copyFromBin(), osg::StateChunkBase::copyFromBin(), osg::ClipPlaneChunkBase::EnableFieldMask, osg::ClipPlaneChunkBase::EquationFieldMask, and osg::FieldBits::NoField. 00263 { 00264 Inherited::copyFromBin(pMem, whichField); 00265 00266 if(FieldBits::NoField != (EquationFieldMask & whichField)) 00267 { 00268 _sfEquation.copyFromBin(pMem); 00269 } 00270 00271 if(FieldBits::NoField != (EnableFieldMask & whichField)) 00272 { 00273 _sfEnable.copyFromBin(pMem); 00274 } 00275 00276 if(FieldBits::NoField != (BeaconFieldMask & whichField)) 00277 { 00278 _sfBeacon.copyFromBin(pMem); 00279 } 00280 00281 00282 }
|
|
|
Reimplemented from osg::Attachment. Definition at line 72 of file OSGClipPlaneChunkBase.inl. References osg::AttachmentPtr::dcast(), osg::ClipPlaneChunkBase::getClassType(), osg::FieldContainerType::getPrototype(), osg::NullFC, and osg::ClipPlaneChunkBase::shallowCopy(). 00073 { 00074 ClipPlaneChunkPtr fc; 00075 00076 if(getClassType().getPrototype() != OSG::NullFC) 00077 { 00078 fc = ClipPlaneChunkPtr::dcast( 00079 getClassType().getPrototype()-> shallowCopy()); 00080 } 00081 00082 return fc; 00083 }
|
|
|
Reimplemented from osg::Attachment. Definition at line 87 of file OSGClipPlaneChunkBase.inl. References osg::FieldContainer::newPtr(). 00088 { 00089 ClipPlaneChunkPtr returnValue; 00090 00091 newPtr(returnValue); 00092 00093 return returnValue; 00094 }
|
|
|
Reimplemented from osg::Attachment. Definition at line 140 of file OSGClipPlaneChunkBase.cpp. References osg::FieldContainer::newPtr(). Referenced by osg::ClipPlaneChunkBase::create(). 00141 { 00142 ClipPlaneChunkPtr returnValue; 00143 00144 newPtr(returnValue, dynamic_cast<const ClipPlaneChunk *>(this)); 00145 00146 return returnValue; 00147 }
|
|
||||||||||||