28#include <wx/xml/xml.h> 
   47    if( 
nullptr != aParent )
 
 
   63                wxT( 
" * [INFO] Destroying Transform with %zu children, %zu references, " 
   64                     "and %zu back pointers." ),
 
 
  103    wxXmlAttribute* prop;
 
  109    for( prop = aNode->GetAttributes(); prop != 
nullptr; prop = prop->GetNext() )
 
  111        const wxString& pname = prop->GetName();
 
  113        if( pname == wxT( 
"DEF" ) )
 
  115            m_Name = prop->GetValue();
 
  118        else if( pname == wxT( 
"center" ) )
 
  123        else if( pname == wxT( 
"scale" ) )
 
  127        else if( pname == wxT( 
"translation" ) )
 
  132        else if( pname == wxT( 
"rotation" ) )
 
  136        else if( pname == wxT( 
"scaleOrientation" ) )
 
 
  146    if( 
nullptr == aTopNode || 
nullptr == aNode )
 
  153    for( wxXmlNode* child = aNode->GetChildren(); child != 
nullptr; child = child->GetNext() )
 
  155        wxString 
name = child->GetName();
 
  157        if( 
name == wxT( 
"Transform" ) || 
name == wxT( 
"Group" ) )
 
  159        else if( 
name == wxT( 
"Switch" ) )
 
  161        else if( 
name == wxT( 
"Shape" ) )
 
 
  181    if( 
nullptr != aParent )
 
  189    if( 
nullptr != 
m_Parent && doUnlink )
 
 
  203    if( 
nullptr == aNode )
 
  211    std::list< X3DNODE* >::iterator sC = 
m_Children.begin();
 
  212    std::list< X3DNODE* >::iterator eC = 
m_Children.end();
 
 
  233    if( 
nullptr == aNode )
 
  241    std::list< X3DNODE* >::iterator sR = 
m_Refs.begin();
 
  242    std::list< X3DNODE* >::iterator eR = 
m_Refs.end();
 
  252    m_Refs.push_back( aNode );
 
 
  262                wxT( 
" * [INFO] Translating Transform with %zu children, %zu references, " 
  263                     "and %zu back pointers." ),
 
  274                    wxT( 
" * [BUG] Transform does not have a Transform parent (parent ID: %d)" ),
 
  282        if( 
nullptr != aParent )
 
  301    std::list< X3DNODE* >::iterator sC = 
m_Children.begin();
 
  302    std::list< X3DNODE* >::iterator eC = 
m_Children.end();
 
  312    for( 
int i = 0; i < 2; ++i )
 
  316            type = (*sC)->GetNodeType();
 
  324                if( 
nullptr != (*sC)->TranslateToSG( txNode.
GetRawPtr() ) )
 
 
SGNODE * GetRawPtr(void) noexcept
Return the raw internal SGNODE pointer.
 
void Destroy(void)
Delete the object held by this wrapper.
 
The base class of all Scene Graph nodes.
 
void addNodeRef(X3DNODE *aNode)
Add a pointer to a node which references, but does not own, this node.
 
std::list< X3DNODE * > m_Children
 
std::list< X3DNODE * > m_BackPointers
 
std::list< X3DNODE * > m_Refs
 
X3DNODES GetNodeType(void) const
Return the type of this node instance.
 
X3DNODE * GetParent(void) const
Return a pointer to the parent node of this object or NULL if the object has no parent (ie.
 
virtual bool SetParent(X3DNODE *aParent, bool doUnlink=true)=0
Set the parent X3DNODE of this object.
 
const wxChar *const traceVrmlPlugin
Flag to enable VRML plugin trace output.
 
collects header files for all SG* wrappers and the API
 
SGLIB_API S3D::SGTYPES GetSGNodeType(SGNODE *aNode)
 
SGLIB_API SGNODE * GetSGNodeParent(SGNODE *aNode)
 
SGLIB_API bool AddSGNodeChild(SGNODE *aParent, SGNODE *aChild)
 
SGLIB_API bool AddSGNodeRef(SGNODE *aParent, SGNODE *aChild)
 
bool ParseSFRotation(const wxString &aSource, WRLROTATION &aResult)
 
bool ParseSFVec3(const wxString &aSource, WRLVEC3F &aResult)
 
bool ReadSwitch(wxXmlNode *aNode, X3DNODE *aParent, X3D_DICT &aDict)
 
bool ReadShape(wxXmlNode *aNode, X3DNODE *aParent, X3D_DICT &aDict)
 
bool ReadTransform(wxXmlNode *aNode, X3DNODE *aParent, X3D_DICT &aDict)