zoukankan      html  css  js  c++  java
  • NodeVisitor

    /* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
     *
     * This library is open source and may be redistributed and/or modified under
     * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
     * (at your option) any later version.  The full license is in LICENSE file
     * included with this distribution, and on the openscenegraph.org website.
     *
     * This library is distributed in the hope that it will be useful,
     * but WITHOUT ANY WARRANTY; without even the implied warranty of
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     * OpenSceneGraph Public License for more details.
    */
    #include <osg/NodeVisitor>
    
    #include <osg/Billboard>
    #include <osg/ClearNode>
    #include <osg/ClipNode>
    #include <osg/CoordinateSystemNode>
    #include <osg/Geode>
    #include <osg/Group>
    #include <osg/LightSource>
    #include <osg/LOD>
    #include <osg/MatrixTransform>
    #include <osg/OccluderNode>
    #include <osg/OcclusionQueryNode>
    #include <osg/PagedLOD>
    #include <osg/PositionAttitudeTransform>
    #include <osg/Projection>
    #include <osg/ProxyNode>
    #include <osg/Sequence>
    #include <osg/Switch>
    #include <osg/TexGenNode>
    #include <osg/Transform>
    #include <osg/Camera>
    #include <osg/CameraView>
    #include <osg/Geometry>
    
    #include <stdlib.h>
    
    using namespace osg;
    
    NodeVisitor::NodeVisitor(TraversalMode tm):
        Object(true)
    {
        _visitorType = NODE_VISITOR;
        _traversalNumber = osg::UNINITIALIZED_FRAME_NUMBER;
    
        _traversalMode = tm;
        _traversalMask = 0xffffffff;
        _nodeMaskOverride = 0x0;
    }
    
    NodeVisitor::NodeVisitor(VisitorType type,TraversalMode tm):
        Object(true)
    {
        _visitorType = type;
        _traversalNumber = osg::UNINITIALIZED_FRAME_NUMBER;
    
        _traversalMode = tm;
        _traversalMask = 0xffffffff;
        _nodeMaskOverride = 0x0;
    }
    
    NodeVisitor::NodeVisitor(const NodeVisitor& nv, const osg::CopyOp& copyop):
        Object(nv, copyop),
        _visitorType(nv._visitorType),
        _traversalNumber(nv._traversalNumber),
        _traversalMode(nv._traversalMode),
        _traversalMask(nv._traversalMask),
        _nodeMaskOverride(nv._nodeMaskOverride)
    {
    }
    
    NodeVisitor::~NodeVisitor()
    {
        // if (_traversalVisitor) detach from _traversalVisitor;
    }
    
    void NodeVisitor::apply(Node& node)
    {
        traverse(node);
    }
    
    void NodeVisitor::apply(Drawable& drawable)
    {
        apply(static_cast<Node&>(drawable));
    }
    
    void NodeVisitor::apply(Geometry& drawable)
    {
        apply(static_cast<Drawable&>(drawable));
    }
    
    void NodeVisitor::apply(Geode& node)
    {
        apply(static_cast<Group&>(node));
    }
    
    void NodeVisitor::apply(Billboard& node)
    {
        apply(static_cast<Geode&>(node));
    }
    
    void NodeVisitor::apply(Group& node)
    {
        apply(static_cast<Node&>(node));
    }
    
    void NodeVisitor::apply(ProxyNode& node)
    {
        apply(static_cast<Group&>(node));
    }
    
    void NodeVisitor::apply(Projection& node)
    {
        apply(static_cast<Group&>(node));
    }
    
    void NodeVisitor::apply(CoordinateSystemNode& node)
    {
        apply(static_cast<Group&>(node));
    }
    
    void NodeVisitor::apply(ClipNode& node)
    {
        apply(static_cast<Group&>(node));
    }
    
    void NodeVisitor::apply(TexGenNode& node)
    {
        apply(static_cast<Group&>(node));
    }
    
    void NodeVisitor::apply(LightSource& node)
    {
        apply(static_cast<Group&>(node));
    }
    
    void NodeVisitor::apply(Transform& node)
    {
        apply(static_cast<Group&>(node));
    }
    
    void NodeVisitor::apply(Camera& node)
    {
        apply(static_cast<Transform&>(node));
    }
    
    void NodeVisitor::apply(CameraView& node)
    {
        apply(static_cast<Transform&>(node));
    }
    
    void NodeVisitor::apply(MatrixTransform& node)
    {
        apply(static_cast<Transform&>(node));
    }
    
    void NodeVisitor::apply(PositionAttitudeTransform& node)
    {
        apply(static_cast<Transform&>(node));
    }
    
    void NodeVisitor::apply(Switch& node)
    {
        apply(static_cast<Group&>(node));
    }
    
    void NodeVisitor::apply(Sequence& node)
    {
        apply(static_cast<Group&>(node));
    }
    
    void NodeVisitor::apply(LOD& node)
    {
        apply(static_cast<Group&>(node));
    }
    
    void NodeVisitor::apply(PagedLOD& node)
    {
        apply(static_cast<LOD&>(node));
    }
    
    void NodeVisitor::apply(ClearNode& node)
    {
        apply(static_cast<Group&>(node));
    }
    
    void NodeVisitor::apply(OccluderNode& node)
    {
        apply(static_cast<Group&>(node));
    }
    
    void NodeVisitor::apply(OcclusionQueryNode& node)
    {
        apply(static_cast<Group&>(node));
    }
  • 相关阅读:
    金蝶k3 显示BOS序时簿并返回选中的值
    金蝶K3bos插件操作另一张单据
    H2.64的远程回放--开篇
    监控外网访问的几种方式
    ilbc编解码
    windows系统上安装与使用Android NDK r5 (转)
    安卓与PC网络对接实现视频实时播放
    WDR7500 花生壳问题
    要确保任何一次员工的晋升都符合公司的利益
    关于“部门建设”
  • 原文地址:https://www.cnblogs.com/herd/p/11623255.html
Copyright © 2011-2022 走看看