示例#1
0
OSG_USING_NAMESPACE

void TestFC::classDescInserter(TypeObject &oType)
{
    FieldDescriptionBase *pDesc = NULL;

    pDesc = new MFUInt32::Description(
        MFUInt32::getClassType(),
        "field1",
        "",
        OSG_RC_FIELD_DESC(TestFC::Field1),
        false,
        Field::MFDefaultFlags,
        reinterpret_cast<FieldEditMethodSig>(&TestFC::editHandleField1),
        reinterpret_cast<FieldGetMethodSig >(&TestFC::getHandleField1 ));

    oType.addInitialDesc(pDesc);

    pDesc = new SFUInt32::Description(
        SFUInt32::getClassType(),
        "field2",
        "",
        OSG_RC_FIELD_DESC(TestFC::Field2),
        false,
        Field::SFDefaultFlags,
        reinterpret_cast<FieldEditMethodSig>(&TestFC::editHandleField2),
        reinterpret_cast<FieldGetMethodSig >(&TestFC::getHandleField2 ));

    oType.addInitialDesc(pDesc);

    pDesc = new MFUInt32::Description(
        MFUInt32::getClassType(),
        "field3",
        "",
        OSG_RC_FIELD_DESC(TestFC::Field3),
        false,
        Field::MFDefaultFlags,
        reinterpret_cast<FieldEditMethodSig>(&TestFC::editHandleField3),
        reinterpret_cast<FieldGetMethodSig >(&TestFC::getHandleField3 ));

    oType.addInitialDesc(pDesc);

    pDesc = new SFUInt32::Description(
        SFUInt32::getClassType(),
        "field4",
        "",
        OSG_RC_FIELD_DESC(TestFC::Field4),
        false,
        Field::SFDefaultFlags,
        reinterpret_cast<FieldEditMethodSig>(&TestFC::editHandleField4),
        reinterpret_cast<FieldGetMethodSig >(&TestFC::getHandleField4 ));

    oType.addInitialDesc(pDesc);
}
OSG_BEGIN_NAMESPACE

void FieldContainer::classDescInserter(TypeObject &oType)
{
    FieldDescriptionBase *pDesc = NULL;

    pDesc = new MFChangedFunctorCallback::Description(
        MFChangedFunctorCallback::getClassType(),
        "changedCallbacks",
        "List of callback functors to notify of changes.",
        OSG_RC_FIELD_DESC(FieldContainer::ChangedCallbacks),
        false,
        Field::SFDefaultFlags,
        static_cast<FieldEditMethodSig>(&FieldContainer::invalidEditField),
        static_cast<FieldGetMethodSig >(&FieldContainer::invalidGetField ));

    oType.addInitialDesc(pDesc);
}
OSG_BEGIN_NAMESPACE

void AttachmentContainer::classDescInserter(TypeObject &oType)
{
    FieldDescriptionBase *pDesc;

    typedef SFAttachmentObjPtrMap::Description SFDesc;

    pDesc = new SFDesc(
        SFAttachmentObjPtrMap::getClassType(),
        "attachments",
        "List of attachments connected.",
        OSG_RC_FIELD_DESC(Attachments),
        false,
        Field::SFDefaultFlags,
        static_cast<FieldEditMethodSig>(&Self::editHandleAttachments),
        static_cast<FieldGetMethodSig >(&Self::getHandleAttachments ));

    oType.addInitialDesc(pDesc);
}
OSG_BEGIN_NAMESPACE

/***************************************************************************\
 *                            Description                                  *
\***************************************************************************/

/*! \class OSG::Node
    Node describe the hierarchical tree structure of the scenegraph. Every Node
    can have at most one parent and one core (something derived from
    NodeCore), but an arbitrary number of children.
 */

/***************************************************************************\
 *                         Field Description                               *
\***************************************************************************/

/*! \var BoxVolume   Node::_sfVolume
    The bounding volume of this node. It contains all the nodes children and
    is described in this nodes coordinate system.
 */

/*! \var UInt32          Node::_sfTravMask
    The traversal mask is used to selectively exclude subtrees of the scenegraph
    from traversal operations (e.g. GraphOps, RenderAction). Only if
    the bitwise AND of the operation's and node's mask is non-zero the node
    (and it's subtree) considered.
 */

/*! \var NodeParentPtr   Node::_sfParent
    The node's single parent.
 */

/*! \var NodePtr         Node::_mfChildren
    The node's children.
 */

/*! \var NodeCorePtr     Node::_sfCore
 */

void Node::classDescInserter(TypeObject &oType)
{
    FieldDescriptionBase *pDesc = NULL;

    pDesc = new SFBoxVolume::Description(
        SFBoxVolume::getClassType(),
        "volume",
        "Bounding volume for the node.",
        OSG_RC_FIELD_DESC(Node::Volume),
        true,
        Field::SFDefaultFlags,
        static_cast<FieldEditMethodSig>(&Node::editHandleVolume),
        static_cast<FieldGetMethodSig >(&Node::getHandleVolume ));

    oType.addInitialDesc(pDesc);


    pDesc = new SFUInt32::Description(
        SFUInt32::getClassType(),
        "travMask",
        "Traversal mask for the node.",
        OSG_RC_FIELD_DESC(Node::TravMask),
        false,
        Field::SFDefaultFlags,
        static_cast<FieldEditMethodSig>(&Node::editHandleTravMask),
        static_cast<FieldGetMethodSig >(&Node::getHandleTravMask ));

    oType.addInitialDesc(pDesc);


    pDesc = new SFParentNodePtr::Description(
        SFParentNodePtr::getClassType(),
        "parent",
        "This node's parent.",
        OSG_RC_FIELD_DESC(Node::Parent),
        true,
        Field::SFDefaultFlags,
        static_cast<FieldEditMethodSig>(&Node::invalidEditField),
        static_cast<FieldGetMethodSig >(&Node::getHandleParent ));

    oType.addInitialDesc(pDesc);


    pDesc = new SFUnrecChildNodeCorePtr::Description(
        SFUnrecChildNodeCorePtr::getClassType(),
        "core",
        "The core to use for this node.",
        OSG_RC_FIELD_DESC(Node::Core),
        false,
        (Field::SFDefaultFlags | Field::FStdAccess),
        static_cast<FieldEditMethodSig>(&Node::editHandleCore),
        static_cast<FieldGetMethodSig >(&Node::getHandleCore ));

    oType.addInitialDesc(pDesc);


    pDesc = new MFUnrecChildNodePtr::Description(
        MFUnrecChildNodePtr::getClassType(),
        "children",
        "A list of our children in the scene graph.",
        OSG_RC_FIELD_DESC(Node::Children),
        false,
        (Field::MFDefaultFlags | Field::FNullCheckAccess),
        static_cast<FieldEditMethodSig>(&Node::editHandleChildren),
        static_cast<FieldGetMethodSig >(&Node::getHandleChildren));

    oType.addInitialDesc(pDesc);
}