96 lines
2.7 KiB
C++
96 lines
2.7 KiB
C++
//
|
|
// Copyright (C) 2007 Skew Matrix Software LLC (http://www.skew-matrix.com)
|
|
//
|
|
// 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/OcclusionQueryNode>
|
|
|
|
#include <iostream>
|
|
#include <sstream>
|
|
#include <string>
|
|
|
|
#include <osg/io_utils>
|
|
|
|
#include <osgDB/Registry>
|
|
#include <osgDB/Input>
|
|
#include <osgDB/Output>
|
|
#include <osgDB/ParameterOutput>
|
|
|
|
bool OQN_readLocalData( osg::Object &obj, osgDB::Input &fr );
|
|
bool OQN_writeLocalData( const osg::Object &obj, osgDB::Output &fw );
|
|
|
|
REGISTER_DOTOSGWRAPPER(OcclusionQueryNode)
|
|
(
|
|
new osg::OcclusionQueryNode,
|
|
"OcclusionQueryNode",
|
|
"Object Node OcclusionQueryNode Group",
|
|
OQN_readLocalData,
|
|
OQN_writeLocalData
|
|
);
|
|
|
|
bool OQN_readLocalData( osg::Object &obj, osgDB::Input &fr )
|
|
{
|
|
osg::OcclusionQueryNode& oqn = static_cast<osg::OcclusionQueryNode&>( obj );
|
|
bool advanced( false );
|
|
int param;
|
|
if (fr[0].matchWord( "QueriesEnabled" ))
|
|
{
|
|
bool enable( fr[1].getStr() == std::string("TRUE") );
|
|
oqn.setQueriesEnabled( enable );
|
|
fr+=2;
|
|
advanced = true;
|
|
}
|
|
if (fr.matchSequence( "VisibilityThreshold %i" ))
|
|
{
|
|
fr[1].getInt( param );
|
|
oqn.setVisibilityThreshold( param );
|
|
fr+=2;
|
|
advanced = true;
|
|
}
|
|
if (fr.matchSequence( "QueryFrameCount %i" ))
|
|
{
|
|
fr[1].getInt( param );
|
|
oqn.setQueryFrameCount( param );
|
|
fr+=2;
|
|
advanced = true;
|
|
}
|
|
if (fr[0].matchWord( "DebugDisplay" ))
|
|
{
|
|
bool enable( fr[1].getStr() == std::string("TRUE") );
|
|
oqn.setDebugDisplay( enable );
|
|
fr+=2;
|
|
advanced = true;
|
|
}
|
|
|
|
return advanced;
|
|
}
|
|
|
|
bool OQN_writeLocalData( const osg::Object &obj, osgDB::Output &fw )
|
|
{
|
|
const osg::OcclusionQueryNode& oqn = static_cast<const osg::OcclusionQueryNode&>( obj );
|
|
|
|
//fw.writeObject( oqn.getOQN(i));
|
|
|
|
fw.indent() << "QueriesEnabled " <<
|
|
(oqn.getQueriesEnabled() ? "TRUE" : "FALSE")
|
|
<< std::endl;
|
|
fw.indent() << "VisibilityThreshold " <<
|
|
oqn.getVisibilityThreshold() << std::endl;
|
|
fw.indent() << "QueryFrameCount " <<
|
|
oqn.getQueryFrameCount() << std::endl;
|
|
fw.indent() << "DebugDisplay " <<
|
|
(oqn.getDebugDisplay() ? "TRUE" : "FALSE")
|
|
<< std::endl;
|
|
|
|
return true;
|
|
}
|