Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

osg::VRMLFile Class Reference

#include <OSGVRMLFile.h>

Inheritance diagram for osg::VRMLFile:

osg::VRMLNodeFactory< BaseT > List of all members.

Member

void initIntExtFieldTypeMapper (void)
void initExtIntFieldTypeMapper (void)
FieldContainerPtr findFCByName (const Char8 *szName, NodePtr pNode)
void setContainerFieldValue (const FieldContainerPtr &pFC)
FieldContainerPtr findReference (const Char8 *szName)
*NodePtr _pSceneRootNode
NodePtr _pLightRoot
NodePtr _pCurrentGlobalLight
VRMLNodeDesc_pCurrNodeDesc
std::stack< VRMLNodeDesc * > _sNodeDescs
FieldContainerPtr _pCurrentFC
Field_pCurrentField
const FieldDescription_pCurrentFieldDesc
std::stack< FieldContainerPtr_fcStack
std::stack< Field * > _fStack
std::stack< const FieldDescription * > _fdStack
NameContainerMap _nameFCMap
NameDescriptionMap _nameDescMap

Public Types

enum  {
  CreateNormals = Inherited::LastOption << 1, StripeGeometry = CreateNormals << 1, LogProtoGeneration = StripeGeometry << 1, LogObjectGeneration = LogProtoGeneration << 1,
  LastOption = LogObjectGeneration
}

Public Member Functions

Constructors
VRMLFile (void)
Destructor
*virtual ~VRMLFile (void)
Skel replacements
*virtual void scanStream (std::istream &is)
virtual void scanFile (const Char8 *szFilename)
virtual void beginFieldDecl (const Char8 *szFieldType, const UInt32 uiFieldTypeId, const Char8 *szFieldName)
virtual void beginNode (const Char8 *szNodeTypename, const Char8 *szNodename)
virtual void endNode (void)
virtual void beginScript (const Char8 *szNodename)
virtual void endScript (void)
virtual void beginField (const Char8 *szFieldname, const UInt32 uiFieldTypeId)
virtual void endField (void)
virtual void addFieldValue (const Char8 *szFieldVal)
virtual UInt32 getFieldType (const Char8 *szFieldname)
virtual void use (const Char8 *szName)
Helper
*void scanStandardPrototypes (const Char8 *szFilename)
void createStandardPrototypes (void)
NodePtr getRoot (void)

Protected Types

typedef Parent Inherited
typedef VRMLFile Self
typedef std::map< IDString,
FieldContainerPtr
NameContainerMap
typedef std::map< IDString,
VRMLNodeDesc * > 
NameDescriptionMap

Private Member Functions

 VRMLFile (const VRMLFile &source)
 prohibit default function (move to 'public' if needed)
void operator= (const VRMLFile &source)
 prohibit default function (move to 'public' if needed)

Detailed Description

VRML97 Loader (Geometry only)

Definition at line 91 of file OSGVRMLFile.h.


Member Typedef Documentation

typedef Parent osg::VRMLFile::Inherited [protected]
 

Definition at line 96 of file OSGVRMLFile.h.

typedef VRMLFile osg::VRMLFile::Self [protected]
 

Definition at line 97 of file OSGVRMLFile.h.

typedef std::map<IDString, FieldContainerPtr> osg::VRMLFile::NameContainerMap [protected]
 

Definition at line 178 of file OSGVRMLFile.h.

typedef std::map<IDString, VRMLNodeDesc *> osg::VRMLFile::NameDescriptionMap [protected]
 

Definition at line 179 of file OSGVRMLFile.h.


Member Enumeration Documentation

anonymous enum
 

Enumerator:
CreateNormals 
StripeGeometry 
LogProtoGeneration 
LogObjectGeneration 
LastOption 

Definition at line 102 of file OSGVRMLFile.h.

00103     {
00104         CreateNormals       = Inherited::LastOption << 1,
00105         StripeGeometry      = CreateNormals         << 1,
00106         LogProtoGeneration  = StripeGeometry        << 1,
00107         LogObjectGeneration = LogProtoGeneration    << 1,
00108 
00109         LastOption          = LogObjectGeneration
00110     };


Constructor & Destructor Documentation

VRMLFile::VRMLFile void   ) 
 

Definition at line 101 of file OSGVRMLFile.cpp.

References initExtIntFieldTypeMapper(), and initIntExtFieldTypeMapper().

00101                        :
00102     Inherited(),
00103 
00104 //    _pRootNode         (NullFC),
00105     _pSceneRootNode     (NullFC),
00106 
00107     _pLightRoot         (NullFC),
00108     _pCurrentGlobalLight(NullFC),
00109 
00110     _pCurrNodeDesc(NULL),
00111     _sNodeDescs   (),
00112 
00113     _pCurrentFC       (NullFC),
00114     _pCurrentField    (NULL),
00115     _pCurrentFieldDesc(NULL),
00116 
00117     _fcStack  (),
00118     _fStack   (),
00119     _fdStack  (),
00120 
00121     _nameFCMap  (),
00122     _nameDescMap()
00123 {
00124     Self::setReferenceHeader("#VRML V2.0 ");
00125 
00126     initIntExtFieldTypeMapper();
00127     initExtIntFieldTypeMapper();
00128 }

VRMLFile::~VRMLFile void   )  [virtual]
 

Definition at line 133 of file OSGVRMLFile.cpp.

00134 {
00135 }

osg::VRMLFile::VRMLFile const VRMLFile source  )  [private]
 


Member Function Documentation

void VRMLFile::scanStream std::istream &  is  )  [virtual]
 

Definition at line 140 of file OSGVRMLFile.cpp.

References _nameFCMap, _pCurrentGlobalLight, _pLightRoot, _pSceneRootNode, FINFO, osg::getSystemTime(), osg::NullFC, osg::VRMLNodeDesc::resetIndent(), startTime, and useTime.

Referenced by osg::VRMLInlineDesc::endNode(), and osg::VRMLSceneFileType::read().

00141 {
00142     startTime = getSystemTime();
00143 
00144 //    _pRootNode           = NullFC;
00145     _pSceneRootNode      = NullFC;
00146     _pLightRoot          = NullFC;
00147     _pCurrentGlobalLight = NullFC;
00148 
00149     _nameFCMap.clear();
00150 
00151 #ifdef OSG_DEBUG_VRML
00152     VRMLNodeDesc::resetIndent();
00153 #endif
00154 
00155     if(is)
00156     {
00157         Inherited::scanStream(is);
00158     }
00159 
00160     FINFO(("Full Time : %lf | Use Time %lf\n",
00161             getSystemTime() - startTime,
00162             useTime));
00163 }

void VRMLFile::scanFile const Char8 szFilename  )  [virtual]
 

Definition at line 165 of file OSGVRMLFile.cpp.

References _nameFCMap, _pCurrentGlobalLight, _pLightRoot, _pSceneRootNode, FINFO, osg::getSystemTime(), osg::NullFC, osg::VRMLNodeDesc::resetIndent(), startTime, and useTime.

Referenced by scanStandardPrototypes().

00166 {
00167     startTime = getSystemTime();
00168 
00169 //    _pRootNode           = NullFC;
00170     _pSceneRootNode      = NullFC;
00171     _pLightRoot          = NullFC;
00172     _pCurrentGlobalLight = NullFC;
00173 
00174     _nameFCMap.clear();
00175 
00176 #ifdef OSG_DEBUG_VRML
00177     VRMLNodeDesc::resetIndent();
00178 #endif
00179 
00180     if(szFilename != NULL)
00181     {
00182         Inherited::scanFile(szFilename);
00183     }
00184 
00185     FINFO(("Full Time : %lf | Use Time %lf\n",
00186             getSystemTime() - startTime,
00187             useTime));
00188 }

void VRMLFile::beginFieldDecl const Char8 szFieldType,
const UInt32  uiFieldTypeId,
const Char8 szFieldName
[virtual]
 

Definition at line 600 of file OSGVRMLFile.cpp.

References _pCurrentFC, _pCurrentField, _pCurrentFieldDesc, _pCurrNodeDesc, and osg::VRMLNodeDesc::getFieldAndDesc().

Referenced by createStandardPrototypes().

00603 {
00604     Inherited::beginFieldDecl(szFieldType, uiFieldTypeId, szFieldName);
00605 
00606 
00607     if(_pCurrNodeDesc == 0)
00608         return;
00609 
00610     if(szFieldName == NULL)
00611         return;
00612 
00613     _pCurrentField     = NULL;
00614     _pCurrentFieldDesc = NULL;
00615 
00616     _pCurrNodeDesc->getFieldAndDesc(_pCurrentFC,
00617                                      szFieldName,
00618                                     _pCurrentField,
00619                                     _pCurrentFieldDesc);
00620 }

void VRMLFile::beginNode const Char8 szNodeTypename,
const Char8 szNodename
[virtual]
 

Definition at line 190 of file OSGVRMLFile.cpp.

References _fcStack, _nameDescMap, _nameFCMap, _pCurrentFC, _pCurrNodeDesc, _pSceneRootNode, _sNodeDescs, osg::AttachmentContainer::AttachmentsFieldMask, osg::beginEditCP(), osg::VRMLNodeDesc::beginNode(), osg::Node::ChildrenFieldMask, osg::Node::CoreFieldMask, osg::Node::create(), osg::GroupBase::create(), osg::SimpleAttachment< NameAttachmentDesc >::create(), osg::AttachmentContainerPtr::dcast(), osg::NodePtr::dcast(), osg::endEditCP(), osg::VRMLNodeDesc::getIndent(), osg::VRMLNodeDesc::incIndent(), osg::indentLog(), osg::NullFC, PINFO, osg::VRMLNodeDesc::reset(), setContainerFieldValue(), and osg::VRMLNodeDesc::setOnEndSave().

Referenced by beginScript().

00192 {
00193     FieldContainerPtr pNewNode;
00194 
00195     _pCurrNodeDesc = findNodeDesc(szNodeTypename);
00196 
00197     if(_pCurrNodeDesc == NULL)
00198         return;
00199 
00200     _sNodeDescs.push(_pCurrNodeDesc);
00201 
00202     _pCurrNodeDesc->reset();
00203 
00204     pNewNode = _pCurrNodeDesc->beginNode(szNodeTypename,
00205                                          szNodename,
00206                                          _pCurrentFC);
00207 
00208 #ifdef OSG_DEBUG_VRML
00209     indentLog(VRMLNodeDesc::getIndent(), PINFO);
00210     PINFO << "Begin Node " << szNodeTypename << std::endl;
00211 
00212     VRMLNodeDesc::incIndent();
00213 #endif
00214 
00215     if(szNodename != NULL)
00216     {
00217         if(pNewNode != NullFC)
00218         {
00219             if(pNewNode->getType().isNode() == true)
00220             {
00221 #ifdef OSG_DEBUG_VRML
00222                 indentLog(VRMLNodeDesc::getIndent(), PINFO);
00223                 PINFO << "Node named : " << szNodename << std::endl;
00224 #endif
00225 
00226                 NodePtr pNode     = NodePtr::dcast(pNewNode);
00227                 NamePtr pNodename = Name::create();
00228 
00229                 beginEditCP(pNodename);
00230                 beginEditCP(pNode,Node::AttachmentsFieldMask);
00231 
00232                 pNodename->getFieldPtr()->getValue().assign(szNodename);
00233                 pNode->addAttachment(pNodename);
00234 
00235                 endEditCP(pNode,Node::AttachmentsFieldMask);
00236                 endEditCP(pNodename);
00237 
00238                 NameContainerMap::iterator mIt =
00239                     _nameFCMap.find(IDStringLink(szNodename));
00240 
00241                 if(mIt == _nameFCMap.end())
00242                 {
00243                     _nameFCMap[IDString(szNodename)] = pNewNode;
00244 
00245 #ifdef OSG_DEBUG_VRML
00246                     indentLog(VRMLNodeDesc::getIndent(), PINFO);
00247                     PINFO << "Fieldcontainer " << szNodename
00248                           << " added to map " << std::endl;
00249 #endif
00250                 }
00251             }
00252             else if(pNewNode->getType().isNodeCore() == true)
00253             {
00254 #ifdef OSG_DEBUG_VRML
00255                 indentLog(VRMLNodeDesc::getIndent(), PINFO);
00256                 PINFO << "Nodecore named : " << szNodename << std::endl;
00257 #endif
00258                 NodeCorePtr pNodeCore = NodeCorePtr::dcast(pNewNode);
00259                 NamePtr     pNodename = Name::create();
00260 
00261                 beginEditCP(pNodename);
00262                 beginEditCP(pNodeCore,NodeCore::AttachmentsFieldMask);
00263 
00264                 pNodename->getFieldPtr()->getValue().assign(szNodename);
00265                 pNodeCore->addAttachment(pNodename);
00266 
00267                 endEditCP(pNodeCore,NodeCore::AttachmentsFieldMask);
00268                 endEditCP(pNodename);
00269 
00270                 NameContainerMap::iterator mIt =
00271                     _nameFCMap.find(IDStringLink(szNodename));
00272 
00273                 if(mIt == _nameFCMap.end())
00274                 {
00275                     _nameFCMap[IDString(szNodename)] = pNewNode;
00276 
00277 #ifdef OSG_DEBUG_VRML
00278                     indentLog(VRMLNodeDesc::getIndent(), PINFO);
00279                     PINFO << "Fieldcontainer " << szNodename
00280                           << " added to map " << std::endl;
00281 #endif
00282                 }
00283             }
00284             else
00285             {
00286 #ifdef OSG_DEBUG_VRML
00287                 indentLog(VRMLNodeDesc::getIndent(), PINFO);
00288                 PINFO << "Fieldcontainer " << szNodeTypename
00289                       << " is neither node nor nodecore " << std::endl;
00290 #endif
00291 
00292                 NameContainerMap::iterator mIt =
00293                     _nameFCMap.find(IDStringLink(szNodename));
00294 
00295                 if(mIt == _nameFCMap.end())
00296                 {
00297                     _nameFCMap[IDString(szNodename)] = pNewNode;
00298 
00299 #ifdef OSG_DEBUG_VRML
00300                     indentLog(VRMLNodeDesc::getIndent(), PINFO);
00301                     PINFO << "Fieldcontainer " << szNodename
00302                           << " added to map " << std::endl;
00303 #endif
00304                 }
00305 
00306             }
00307 
00308             _nameDescMap[IDString(szNodename)] = _pCurrNodeDesc;
00309 
00310 #ifdef OSG_DEBUG_VRML
00311             indentLog(VRMLNodeDesc::getIndent(), PINFO);
00312             PINFO << "Desc for "
00313                   << szNodename
00314                   << " added to map "
00315                   << std::endl;
00316 #endif
00317         }
00318         else
00319         {
00320 #ifdef OSG_DEBUG_VRML
00321             indentLog(VRMLNodeDesc::getIndent(), PINFO);
00322             PINFO << "Fieldcontainer "
00323                   << szNodeTypename
00324                   << "is empty, save on end "
00325                   << std::endl;
00326 #endif
00327 
00328             if(_pCurrNodeDesc != NULL)
00329                 _pCurrNodeDesc->setOnEndSave(szNodename);
00330 
00331             _nameDescMap[IDString(szNodename)] = _pCurrNodeDesc;
00332 
00333 #ifdef OSG_DEBUG_VRML
00334             indentLog(VRMLNodeDesc::getIndent(), PINFO);
00335             PINFO << "Desc for "
00336                   << szNodename
00337                   << " added to map "
00338                   << std::endl;
00339 #endif
00340         }
00341     }
00342 
00343     setContainerFieldValue(pNewNode);
00344 
00345     _pCurrentFC = pNewNode;
00346 
00347     _fcStack.push(_pCurrentFC);
00348 
00349     if(_fcStack.size() == 1)
00350     {
00351         NodePtr pNode = NodePtr::dcast(_pCurrentFC);
00352 
00353         if(_pSceneRootNode == NullFC)
00354         {
00355             GroupPtr pGroup = Group::create();
00356 
00357             _pSceneRootNode = Node::create();
00358 
00359             beginEditCP(_pSceneRootNode, Node::CoreFieldMask);
00360             {
00361                 _pSceneRootNode->setCore(pGroup);
00362             }
00363             endEditCP  (_pSceneRootNode, Node::CoreFieldMask);
00364         }
00365 
00366         beginEditCP(_pSceneRootNode, Node::ChildrenFieldMask);
00367         {
00368             _pSceneRootNode->addChild(pNode);
00369         }
00370         endEditCP  (_pSceneRootNode, Node::ChildrenFieldMask);
00371     }
00372 }

void VRMLFile::endNode void   )  [virtual]
 

Definition at line 374 of file OSGVRMLFile.cpp.

References _fcStack, _nameFCMap, _pCurrentFC, _pCurrNodeDesc, _sNodeDescs, osg::beginEditCP(), osg::VRMLNodeDesc::clearOnEndSave(), osg::GroupBase::create(), osg::NodePtr::dcast(), osg::VRMLNodeDesc::decIndent(), osg::VRMLNodeDesc::endNode(), osg::NodePtr::getCore(), osg::VRMLNodeDesc::getIndent(), osg::VRMLNodeDesc::getOnEndSave(), osg::VRMLNodeDesc::getSaveFieldContainer(), osg::VRMLNodeDesc::getSavename(), osg::indentLog(), osg::NullFC, PINFO, and SLOG.

Referenced by endScript().

00375 {
00376     if(_pCurrNodeDesc == NULL)
00377     {
00378 #ifdef OSG_DEBUG_VRML
00379         VRMLNodeDesc::decIndent();
00380 
00381         indentLog(VRMLNodeDesc::getIndent(), PINFO);
00382         PINFO << "End Node " << std::endl;
00383 #endif
00384         return;
00385     }
00386 
00387     _pCurrNodeDesc->endNode(_pCurrentFC);
00388 
00389     if(_pCurrNodeDesc->getOnEndSave() == true)
00390     {
00391         SLOG << "Fieldcontainer " <<  _pCurrNodeDesc->getSavename()
00392              << " on end Save " << std::endl;
00393 
00394         NameContainerMap::iterator mIt =
00395             _nameFCMap.find(IDStringLink(_pCurrNodeDesc->getSavename()));
00396 
00397         if(mIt == _nameFCMap.end())
00398         {
00399             _nameFCMap[IDString(_pCurrNodeDesc->getSavename())] =
00400                 _pCurrNodeDesc->getSaveFieldContainer();
00401 
00402             SLOG << "Fieldcontainer " << _pCurrNodeDesc->getSavename()
00403                  << " added to map " << std::endl;
00404         }
00405 
00406         _pCurrNodeDesc->clearOnEndSave();
00407     }
00408 
00409     _sNodeDescs.pop();
00410 
00411     if(_sNodeDescs.size() != 0)
00412     {
00413         _pCurrNodeDesc = _sNodeDescs.top();
00414     }
00415     else
00416     {
00417         _pCurrNodeDesc = NULL;
00418     }
00419 
00420     if(_pCurrentFC != NullFC)
00421     {
00422         if(_pCurrentFC->getType().isNode() == true)
00423         {
00424             NodePtr pNode = NodePtr::dcast(_pCurrentFC);
00425 
00426             if(pNode->getCore() == NullFC)
00427             {
00428                 GroupPtr pGroup = Group::create();
00429 
00430                 beginEditCP(pNode);
00431                 pNode->setCore(pGroup);
00432                 beginEditCP(pNode);
00433             }
00434         }
00435     }
00436 
00437     _fcStack.pop();
00438 
00439     if(_fcStack.size() != 0)
00440     {
00441         _pCurrentFC = _fcStack.top();
00442     }
00443     else
00444     {
00445         _pCurrentFC = NullFC;
00446     }
00447 
00448 #ifdef OSG_DEBUG_VRML
00449     VRMLNodeDesc::decIndent();
00450 
00451     indentLog(VRMLNodeDesc::getIndent(), PINFO);
00452     PINFO << "End Node " << std::endl;
00453 #endif
00454 }

void VRMLFile::beginScript const Char8 szNodename  )  [virtual]
 

Definition at line 456 of file OSGVRMLFile.cpp.

References beginNode().

00457 {
00458     beginNode("Script", szNodename);
00459 }

void VRMLFile::endScript void   )  [virtual]
 

Definition at line 461 of file OSGVRMLFile.cpp.

References endNode().

00462 {
00463     endNode();
00464 }

virtual void osg::VRMLFile::beginField const Char8 szFieldname,
const UInt32  uiFieldTypeId
[virtual]
 

void VRMLFile::endField void   )  [virtual]
 

Definition at line 524 of file OSGVRMLFile.cpp.

References _fdStack, _fStack, _pCurrentFC, _pCurrentField, _pCurrentFieldDesc, osg::ChangedOrigin::Abstract, osg::ChangedOrigin::AbstrCheckValid, osg::ChangedOrigin::AbstrIgnoreChild, osg::ChangedOrigin::AbstrIgnoreCore, osg::NodePtr::dcast(), osg::VRMLNodeDesc::decIndent(), osg::endEditCP(), osg::NodePtr::getCore(), osg::FieldDescription::getFieldMask(), osg::VRMLNodeDesc::getIndent(), osg::indentLog(), osg::NullFC, and PINFO.

00525 {
00526     _fStack.pop();
00527 
00528     if(_fStack.size() != 0)
00529     {
00530         _pCurrentField = _fStack.top();
00531     }
00532     else
00533     {
00534         _pCurrentField = NULL;
00535     }
00536 
00537 
00538     if(_pCurrentFieldDesc != NULL)
00539     {
00540         NodeCorePtr pCore;
00541         NodePtr     pNode;
00542 
00543         if(_pCurrentFC != NullFC)
00544         {
00545             endEditCP(_pCurrentFC,
00546 //                       FieldBits::AllFields,
00547                       _pCurrentFieldDesc->getFieldMask(),
00548                        ChangedOrigin::Abstract         |
00549                        ChangedOrigin::AbstrIgnoreCore  |
00550                        ChangedOrigin::AbstrIgnoreChild |
00551                        ChangedOrigin::AbstrCheckValid  );
00552 
00553             if(_pCurrentFC->getType().isNode())
00554             {
00555                 pNode = NodePtr::dcast(_pCurrentFC);
00556 
00557                 pCore = pNode->getCore();
00558 
00559                 endEditCP( pCore,
00560 //                           FieldBits::AllFields,
00561                           _pCurrentFieldDesc->getFieldMask(),
00562                            ChangedOrigin::Abstract         |
00563                            ChangedOrigin::AbstrIgnoreCore  |
00564                            ChangedOrigin::AbstrIgnoreChild |
00565                            ChangedOrigin::AbstrCheckValid  );
00566             }
00567         }
00568     }
00569 
00570     _fdStack.pop();
00571 
00572     if(_fdStack.size() != 0)
00573     {
00574         _pCurrentFieldDesc = _fdStack.top();
00575     }
00576     else
00577     {
00578         _pCurrentFieldDesc = NULL;
00579     }
00580 
00581 #ifdef OSG_DEBUG_VRML
00582     VRMLNodeDesc::decIndent();
00583 
00584     indentLog(VRMLNodeDesc::getIndent(), PINFO);
00585     PINFO << "VRMLFile::endField " << std::endl;
00586 #endif
00587 }

void VRMLFile::addFieldValue const Char8 szFieldVal  )  [virtual]
 

Definition at line 590 of file OSGVRMLFile.cpp.

References _pCurrentField, _pCurrNodeDesc, and osg::VRMLNodeDesc::addFieldValue().

Referenced by createStandardPrototypes().

00591 {
00592     Inherited::addFieldValue(szFieldVal);
00593 
00594     if(_pCurrNodeDesc != NULL)
00595     {
00596         _pCurrNodeDesc->addFieldValue(_pCurrentField, szFieldVal);
00597     }
00598 }

UInt32 VRMLFile::getFieldType const Char8 szFieldname  )  [virtual]
 

Definition at line 623 of file OSGVRMLFile.cpp.

References _pCurrentFC, _pCurrentField, _pCurrentFieldDesc, _pCurrNodeDesc, osg::VRMLNodeDesc::getFieldAndDesc(), osg::TypeBase::getId(), osg::VRMLNodeDesc::getIndent(), osg::TypeBase::getName(), osg::Field::getType(), osg::indentLog(), and PINFO.

00624 {
00625     UInt32   returnValue = 0;
00626 
00627     if(_pCurrNodeDesc == 0)
00628         return returnValue;
00629 
00630     if(szFieldname == NULL)
00631         return returnValue;
00632 
00633     _pCurrentField     = NULL;
00634     _pCurrentFieldDesc = NULL;
00635 
00636     _pCurrNodeDesc->getFieldAndDesc(_pCurrentFC,
00637                                      szFieldname,
00638                                     _pCurrentField,
00639                                     _pCurrentFieldDesc);
00640 
00641     if(_pCurrentField != NULL)
00642         returnValue = _pCurrentField->getType().getId();
00643 
00644 #ifdef OSG_DEBUG_VRML
00645     indentLog(VRMLNodeDesc::getIndent(), PINFO);
00646     PINFO << "VRMLFile::getFieldType : Got Field and type "
00647           << returnValue        << " "
00648           << _pCurrentField     << " "
00649           << _pCurrentFieldDesc << " ";
00650 
00651     if(_pCurrentField != NULL)
00652         PINFO << _pCurrentField->getType().getName() << std::endl;
00653     else
00654         PINFO << std::endl;
00655 #endif
00656 
00657     return returnValue;
00658 }

void VRMLFile::use const Char8 szName  )  [virtual]
 

Definition at line 660 of file OSGVRMLFile.cpp.

References _nameDescMap, osg::cloneTree(), osg::NodePtr::dcast(), osg::VRMLNodeDesc::decIndent(), findReference(), osg::VRMLNodeDesc::getIndent(), osg::getSystemTime(), osg::VRMLNodeDesc::incIndent(), osg::indentLog(), osg::NullFC, PINFO, PWARNING, setContainerFieldValue(), osg::VRMLNodeDesc::use(), and useTime.

00661 {
00662     Time beginUse = getSystemTime();
00663 
00664     FieldContainerPtr pUsedFC;
00665 
00666     // try to find a container with the given name attachment
00667 
00668 #ifdef OSG_DEBUG_VRML
00669     indentLog(VRMLNodeDesc::getIndent(), PINFO);
00670     PINFO << "VRMLFile::use : looking for "
00671           << szName
00672           << std::endl;
00673 
00674     VRMLNodeDesc::incIndent();
00675 #endif
00676 
00677 
00678 
00679     pUsedFC = findReference(szName);
00680 
00681     if(pUsedFC == NullFC)
00682     {
00683         PWARNING << "No fieldContainer with name found to use"
00684                  << szName
00685                  << std::endl;
00686     }
00687     else
00688     {
00689         // assign nodepointer to current sf|mf field
00690 
00691         VRMLNodeDesc *pDesc = NULL;
00692 
00693         NameDescriptionMap::iterator mIt         =
00694             _nameDescMap.find(IDStringLink(szName));
00695 
00696         if(mIt != _nameDescMap.end())
00697         {
00698             pDesc = mIt->second;
00699         }
00700 
00701         if(pUsedFC->getType().isNode())
00702         {
00703             NodePtr pRootNode = NodePtr::dcast(pUsedFC);
00704 
00705             pUsedFC = cloneTree(pRootNode);
00706         }
00707 
00708         if(pDesc != NULL)
00709         {
00710             if(pDesc->use(pUsedFC) == false)
00711             {
00712                 setContainerFieldValue(pUsedFC);
00713             }
00714         }
00715         else
00716         {
00717             setContainerFieldValue(pUsedFC);
00718         }
00719     }
00720 
00721 #ifdef OSG_DEBUG_VRML
00722     VRMLNodeDesc::decIndent();
00723 #endif
00724 
00725     useTime += (getSystemTime() - beginUse);
00726 }

void VRMLFile::scanStandardPrototypes const Char8 szFilename  ) 
 

Definition at line 731 of file OSGVRMLFile.cpp.

References osg::VRMLNodeDesc::resetIndent(), and scanFile().

00732 {
00733 #ifdef OSG_DEBUG_VRML
00734     VRMLNodeDesc::resetIndent();
00735 #endif
00736 
00737     preStandardProtos();
00738     scanFile(szFilename);
00739     postStandardProtos();
00740 
00741 //    dumpTable();
00742 }

void VRMLFile::createStandardPrototypes void   ) 
 

Definition at line 744 of file OSGVRMLFile.cpp.

References addFieldValue(), beginFieldDecl(), osg::VRMLNodeDesc::resetIndent(), and startTime.

Referenced by osg::VRMLInlineDesc::endNode(), and osg::VRMLSceneFileType::read().

00745 {
00746 #ifdef OSG_DEBUG_VRML
00747     VRMLNodeDesc::resetIndent();
00748 #endif
00749 
00750     preStandardProtos();
00751 
00752 #if 0
00753 PROTO Anchor [
00754     eventIn      MFNode   addChildren
00755     eventIn      MFNode   removeChildren
00756     exposedField MFNode   children        []
00757     exposedField SFString description     ""
00758     exposedField MFString parameter       []
00759     exposedField MFString url             []
00760     field        SFVec3f  bboxCenter      0 0 0
00761     field        SFVec3f  bboxSize        -1 -1 -1
00762     ] { }
00763 #endif
00764 
00765  beginProto   ("Anchor");
00766  {
00767      beginEventInDecl     ("MFNode", Self::OSGmfNode, "addChildren");
00768      endEventDecl         ();
00769 
00770      beginEventInDecl     ("MFNode", Self::OSGmfNode, "removeChildren");
00771      endEventDecl         ();
00772 
00773      beginExposedFieldDecl("MFNode",   Self::OSGmfNode,   "children");
00774      endExposedFieldDecl  ();
00775 
00776      beginExposedFieldDecl("SFString", Self::OSGsfString, "description");
00777      endExposedFieldDecl  ();
00778 
00779      beginExposedFieldDecl("MFString", Self::OSGmfString, "parameter");
00780      endExposedFieldDecl  ();
00781 
00782      beginExposedFieldDecl("MFString", Self::OSGmfString, "url");
00783      endExposedFieldDecl  ();
00784 
00785      beginFieldDecl       ("SFVec3f",  Self::OSGsfVec3f, "bboxCenter");
00786      addFieldValue        ("0 0 0");
00787      endFieldDecl         ();
00788 
00789      beginFieldDecl       ("SFVec3f",  Self::OSGsfVec3f, "bboxSize");
00790      addFieldValue        ("-1 -1 -1");
00791      endFieldDecl         ();
00792  }
00793  endProto     ();
00794 
00795 
00796 #if 0
00797 PROTO Appearance [
00798   exposedField SFNode material          NULL
00799   exposedField SFNode texture           NULL
00800   exposedField SFNode textureTransform  NULL
00801 ] { }
00802 #endif
00803 
00804  beginProto("Appearance");
00805  {
00806      beginExposedFieldDecl("SFNode", Self::OSGsfNode, "material");
00807 //     addFieldValue         ("NULL");
00808      endExposedFieldDecl  ();
00809 
00810      beginExposedFieldDecl("SFNode", Self::OSGsfNode, "texture");
00811 //     addFieldValue         ("NULL");
00812      endExposedFieldDecl  ();
00813 
00814      beginExposedFieldDecl("SFNode", Self::OSGsfNode, "textureTransform");
00815 //     addFieldValue         ("NULL");
00816      endExposedFieldDecl  ();
00817  }
00818  endProto  ();
00819 
00820 #if 0
00821 PROTO AudioClip [
00822   exposedField   SFString description  ""
00823   exposedField   SFBool   loop         FALSE
00824   exposedField   SFFloat  pitch        1.0
00825   exposedField   SFTime   startTime    0
00826   exposedField   SFTime   stopTime     0
00827   exposedField   MFString url          []
00828   eventOut       SFTime   duration_changed
00829   eventOut       SFBool   isActive
00830 ] { }
00831 #endif
00832 
00833  beginProto("AudioClip");
00834  {
00835      beginExposedFieldDecl("SFString", Self::OSGsfString, "description");
00836      addFieldValue        ("");
00837      endExposedFieldDecl  ();
00838 
00839      beginExposedFieldDecl("SFBool", Self::OSGsfBool, "loop");
00840      addFieldValue        ("FALSE");
00841      endExposedFieldDecl  ();
00842 
00843      beginExposedFieldDecl("SFFloat", Self::OSGsfFloat, "pitch");
00844      addFieldValue        ("1.0");
00845      endExposedFieldDecl  ();
00846 
00847      beginExposedFieldDecl("SFTime", Self::OSGsfTime, "startTime");
00848      addFieldValue        ("0");
00849      endExposedFieldDecl  ();
00850 
00851      beginExposedFieldDecl("SFTime", Self::OSGsfTime, "stopTime");
00852      addFieldValue        ("0");
00853      endExposedFieldDecl  ();
00854 
00855      beginExposedFieldDecl("MFString", Self::OSGmfString, "url");
00856      endExposedFieldDecl  ();
00857 
00858      beginEventOutDecl      ("SFTime", Self::OSGsfTime, "duration_changed");
00859      endEventDecl           ();
00860 
00861      beginEventOutDecl      ("SFBool", Self::OSGsfBool, "isActive");
00862      endEventDecl           ();
00863  }
00864  endProto  ();
00865 
00866 #if 0
00867 PROTO Background [
00868   eventIn      SFBool   set_bind
00869   exposedField MFFloat  groundAngle  []
00870   exposedField MFColor  groundColor  []
00871   exposedField MFString backUrl      []
00872   exposedField MFString bottomUrl    []
00873   exposedField MFString frontUrl     []
00874   exposedField MFString leftUrl      []
00875   exposedField MFString rightUrl     []
00876   exposedField MFString topUrl       []
00877   exposedField MFFloat  skyAngle     []
00878   exposedField MFColor  skyColor     [ 0 0 0  ]
00879   eventOut     SFBool   isBound
00880 ] { }
00881 #endif
00882 
00883  beginProto("Background");
00884  {
00885      beginEventInDecl       ("SFBool", Self::OSGsfBool, "set_bind");
00886      endEventDecl           ();
00887 
00888      beginExposedFieldDecl("MFFloat", Self::OSGmfFloat, "groundAngle");
00889      endExposedFieldDecl  ();
00890 
00891      beginExposedFieldDecl("MFColor", Self::OSGmfColor, "groundColor");
00892      endExposedFieldDecl  ();
00893 
00894      beginExposedFieldDecl("MFString", Self::OSGmfString, "backUrl");
00895      endExposedFieldDecl  ();
00896 
00897      beginExposedFieldDecl("MFString", Self::OSGmfString, "bottomUrl");
00898      endExposedFieldDecl  ();
00899 
00900      beginExposedFieldDecl("MFString", Self::OSGmfString, "frontUrl");
00901      endExposedFieldDecl  ();
00902 
00903      beginExposedFieldDecl("MFString", Self::OSGmfString, "leftUrl");
00904      endExposedFieldDecl  ();
00905 
00906      beginExposedFieldDecl("MFString", Self::OSGmfString, "rightUrl");
00907      endExposedFieldDecl  ();
00908 
00909      beginExposedFieldDecl("MFString", Self::OSGmfString, "topUrl");
00910      endExposedFieldDecl  ();
00911 
00912      beginExposedFieldDecl("MFFloat", Self::OSGmfFloat, "skyAngle");
00913      endExposedFieldDecl  ();
00914 
00915      beginExposedFieldDecl("MFColor", Self::OSGmfColor, "skyColor");
00916      addFieldValue        ("0 0 0");
00917      endExposedFieldDecl  ();
00918 
00919      beginEventOutDecl    ("SFBool", Self::OSGsfBool, "isBound");
00920      endEventDecl         ();
00921  }
00922  endProto  ();
00923 
00924 
00925 #if 0
00926 PROTO Billboard [
00927   eventIn      MFNode   addChildren
00928   eventIn      MFNode   removeChildren
00929   exposedField SFVec3f  axisOfRotation  0 1 0
00930   exposedField MFNode   children        []
00931   field        SFVec3f  bboxCenter      0 0 0
00932   field        SFVec3f  bboxSize        -1 -1 -1
00933 ] { }
00934 #endif
00935 
00936  beginProto("Billboard");
00937  {
00938      beginEventInDecl     ("MFNode", Self::OSGmfNode, "addChildren");
00939      endEventDecl         ();
00940 
00941      beginEventInDecl     ("MFNode", Self::OSGmfNode, "removeChildren");
00942      endEventDecl         ();
00943 
00944      beginExposedFieldDecl("SFVec3f", Self::OSGsfVec3f, "axisOfRotation");
00945      addFieldValue