Files
OpenSceneGraph/src/osgPlugins/ive/Object.cpp
Robert Osfield 99a294ebae Implemented support for ShapeAttributeList, used John Vidar Larring's initial
submission as a base, but implementing the user data functionality in a different
way to facilitate more flexible user data support
2008-09-01 12:40:33 +00:00

90 lines
2.2 KiB
C++

/**********************************************************************
*
* FILE: Object.cpp
*
* DESCRIPTION: Read/Write osg::Object in binary format to disk.
*
* CREATED BY: Auto generated by iveGenerated
* and later modified by Rune Schmidt Jensen.
*
* HISTORY: Created 17.3.2003
*
* Copyright 2003 VR-C
**********************************************************************/
#include "Exception.h"
#include "Object.h"
using namespace ive;
void Object::write(DataOutputStream* out)
{
// Write Object's identification.
out->writeInt(IVEOBJECT);
if ( out->getVersion() >= VERSION_0012 )
{
// Write Name
out->writeString(getName());
}
// Write Object's properties.
switch(getDataVariance())
{
case(osg::Object::STATIC): out->writeChar((char)0); break;
case(osg::Object::DYNAMIC): out->writeChar((char)1); break;
case(osg::Object::UNSPECIFIED): out->writeChar((char)2); break;
}
if ( out->getVersion() >= VERSION_0031)
{
const osg::Object* object = dynamic_cast<const osg::Object*>(getUserData());
if (object)
{
out->writeBool(true);
out->writeObject(object);
}
else
{
out->writeBool(false);
}
}
}
void Object::read(DataInputStream* in){
// Read Object's identification.
int id = in->peekInt();
if(id == IVEOBJECT)
{
// Code to read Object's properties.
id = in->readInt();
if ( in->getVersion() >= VERSION_0012 )
{
// Read name
setName(in->readString());
}
char c = in->readChar();
switch((int)c)
{
case 0: setDataVariance(osg::Object::STATIC);break;
case 1: setDataVariance(osg::Object::DYNAMIC);break;
case 2: setDataVariance(osg::Object::UNSPECIFIED);break;
}
if ( in->getVersion() >= VERSION_0031)
{
bool hasUserData = in->readBool();
if (hasUserData)
{
setUserData(in->readObject());
}
}
}
else{
throw Exception("Object::read(): Expected Object identification");
}
}