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));
}
NodeVisitor的更多相关文章
- NodeVisitor的使用-遍历Geode节点下的Geometry并获取顶点、法向量等数据
struct Subset { std::vector<float> vertexs;//位置 std::vector<float> normals;//法向 std::vec ...
- NodeVisitor的使用-遍历Geode节点并在它与父节点之间添加一个LOD节点
#include <osg\NodeVisitor>#include <osg\MatrixTransform>#include <osg\PagedLOD>#in ...
- osg::NodeVisitor中计算一个节点对应的世界变换矩阵、法向量、顶点坐标
class MyNodeVisitor:public osg::NodeVisitor { pulic: MyNodeVisitor():osg::NodeVisitor(osg::NodeVisit ...
- osg探究补充:Node::accept(NodeVisitor& nv)及NodeVisitor简介
前言 在前几节中,我自己觉得讲的比较粗糙,因为实在是时间上不是很充足,今天我想弥补一下,希望不是亡羊补牢.我们在osgViewer::Viewer::eventTraversal()函数中经常看到这么 ...
- [osg]节点遍历nodevisitor浅析
参考:https://www.cnblogs.com/hzhg/archive/2010/12/17/1908764.html OSG中节点的访问使用的是一种访问器模式.一个典型的访问器涉及抽象访问者 ...
- osg::NodeVisitor example
[0]osg::Group [1]osg::MatrixTransform [1] osg::MatrixTransform [1]osg::MatrixTransform [2] osg::Geod ...
- osg::NodeVisitor
[1]osg::Group [2]osg::PositionAttitudeTransform [2]osg::MatrixTransform [3]osg::Geode [2]osg::Matrix ...
- osg::NodeVisitor osg3.4.0
x:-89.4588 y:-12.1245 z:-11.7807x:-89.4588 y:-6.44823 z:-11.7807x:-89.2164 y:-9.07239 z:-11.811x:-89 ...
- OSG程序设计之osg::NodeVisitor
本文所有内容来自<OpenSceneGraph三维渲染引擎设计与实践>一书. 本文主要讨论的是OSG中节点的访问. 对于节点的访问是从节点接收一个访问器开始的,用户执行某个节点的accep ...
随机推荐
- tomcat访问manager
在配置好Tomcat7/8后,我们往往需要访问Tomcat7/8的Manager以及Host Manager.就需要在tomcat-users.xml中配置用户角色来实现.在地址栏输入:localho ...
- test20190818 NOIP2019 模拟赛
0+0+20=20,不给大样例,小数据又水,还没有题解的垃圾题. A 题 问题描述: long long ago, Lxhgww 统治的国家里有 n 个城市,其中某一个城市是 capital (首都) ...
- onclick与click的区别
用法: Obj.click(function(){ }); Obj.onclick=function(){ } 相同:效果一样. 区别: 用户或浏览器执行的某种动作,例如click load,mous ...
- 找回IntelliJ IDEA中丢失的Run Dashboard视图
一般项目中包含多个springboot项目的时候都会出现run dashboard视图,但如果一开始它提示的时候,不点击展示,就再也找不到这个视图了,给我们后续启动一个一个的启动项目带来了很大的不便, ...
- 【mysql】知识点
mysql执行原理 只要是B/S架构,都是会有客户端与服务端,mysql也不例外. 首先客户端发出一个请求,这个请求就是一个查询请求(Select),而它请求的对象就是服务端,服务端是怎么处理这项查询 ...
- C 利用移位运算符 把十进制转换成二进制
#include <stdio.h> int main(void){ //利用移位运算符 把十进制转换成二进制 int c; printf("输入数字:");//8 s ...
- luogu 1714
前缀和 + rmq #include <bits/stdc++.h> const int N = 5e5 + 10; int Pow[30], Log[N]; int n, m; int ...
- (32)Vue模板语法
模板语法 文本: <span>Message: {{ msg }}</span> v-once 一次性地插值,当数据改变时,插值处的内容不会更新 <span v-once ...
- webstorm 和 vscode 的纠结
自从知道了 vscode 之后,尝试了一下后,就开始纠结是否要更换到vscode. 特别是在 webstorm 卡的时候. 也研究了几日 vscode,安装了许多插件. 我是安装插件后, 就开始学习快 ...
- golang-笔记2
结构体: 是一种数据 类型. type Person struct { —— 类型定义 (地位等价于 int byte bool string ....) 通常放在全局位置. name string ...