Files
OpenSceneGraph/src/osgPlugins/osg/MatrixTransform.cpp
Robert Osfield f36bc69c58 Made the more of the OSG's referenced object desctructors protected to ensure
that they arn't created on the stack inappropriately.

Split the implemention of Matrix up so that it is a simple no referenced counted
class and can be safefly created on the stack.  To support referenced counting a
seperate subclass now exists, this is RefMatrix which inherits from both Matrix and
Object.
2003-01-10 09:25:42 +00:00

80 lines
1.9 KiB
C++

#include <osg/MatrixTransform>
#include <osgDB/Registry>
#include <osgDB/Input>
#include <osgDB/Output>
#include "Matrix.h"
using namespace osg;
using namespace osgDB;
// forward declare functions to use later.
bool MatrixTransform_readLocalData(Object& obj, Input& fr);
bool MatrixTransform_writeLocalData(const Object& obj, Output& fw);
// register the read and write functions with the osgDB::Registry.
RegisterDotOsgWrapperProxy g_MatrixTransformProxy
(
new osg::MatrixTransform,
"MatrixTransform",
"Object Node Transform MatrixTransform Group",
&MatrixTransform_readLocalData,
&MatrixTransform_writeLocalData,
DotOsgWrapper::READ_AND_WRITE
);
// register old style 'DCS' read and write functions with the osgDB::Registry.
RegisterDotOsgWrapperProxy g_DCSProxy
(
new osg::MatrixTransform,
"DCS",
"Object Node Group DCS",
&MatrixTransform_readLocalData,
NULL,
DotOsgWrapper::READ_ONLY
);
bool MatrixTransform_readLocalData(Object& obj, Input& fr)
{
bool iteratorAdvanced = false;
MatrixTransform& transform = static_cast<MatrixTransform&>(obj);
if (fr[0].matchWord("Type"))
{
if (fr[1].matchWord("DYNAMIC"))
{
transform.setDataVariance(osg::Object::DYNAMIC);
fr +=2 ;
iteratorAdvanced = true;
}
else if (fr[1].matchWord("STATIC"))
{
transform.setDataVariance(osg::Object::STATIC);
fr +=2 ;
iteratorAdvanced = true;
}
}
Matrix matrix;
if (readMatrix(matrix,fr))
{
transform.setMatrix(matrix);
iteratorAdvanced = true;
}
return iteratorAdvanced;
}
bool MatrixTransform_writeLocalData(const Object& obj, Output& fw)
{
const MatrixTransform& transform = static_cast<const MatrixTransform&>(obj);
writeMatrix(transform.getMatrix(),fw);
return true;
}