120 lines
3.3 KiB
C++
120 lines
3.3 KiB
C++
/**********************************************************************
|
|
*
|
|
* FILE: LightPoint.cpp
|
|
*
|
|
* DESCRIPTION: Read/Write osgSim::LightPoint in binary format to disk.
|
|
*
|
|
* CREATED BY: Auto generated by iveGenerator
|
|
* and later modified by Rune Schmidt Jensen.
|
|
*
|
|
* HISTORY: Created 5.9.2003
|
|
*
|
|
**********************************************************************/
|
|
|
|
#include "Exception.h"
|
|
#include "LightPoint.h"
|
|
#include "BlinkSequence.h"
|
|
#include "AzimElevationSector.h"
|
|
#include "ElevationSector.h"
|
|
#include "AzimSector.h"
|
|
#include "ConeSector.h"
|
|
|
|
using namespace ive;
|
|
|
|
void LightPoint::write(DataOutputStream* out){
|
|
// Write LightPoint's identification.
|
|
out->writeInt(IVELIGHTPOINT);
|
|
|
|
// Write LightPoint's properties.
|
|
out->writeBool(_on);
|
|
out->writeVec3(_position);
|
|
out->writeVec4(_color);
|
|
out->writeFloat(_intensity);
|
|
out->writeFloat(_radius);
|
|
|
|
// Write out osgSim::sector.
|
|
out->writeBool(_sector.valid());
|
|
if(_sector.valid()){
|
|
if(dynamic_cast<osgSim::AzimElevationSector*>(_sector.get())){
|
|
((ive::AzimElevationSector*)(_sector.get()))->write(out);
|
|
}
|
|
else if(dynamic_cast<osgSim::ElevationSector*>(_sector.get())){
|
|
((ive::ElevationSector*)(_sector.get()))->write(out);
|
|
}
|
|
else if(dynamic_cast<osgSim::AzimSector*>(_sector.get())){
|
|
((ive::AzimSector*)(_sector.get()))->write(out);
|
|
}
|
|
else if(dynamic_cast<osgSim::ConeSector*>(_sector.get())){
|
|
((ive::ConeSector*)(_sector.get()))->write(out);
|
|
}
|
|
else
|
|
throw Exception("Unknown sector in LightPoint::write()");
|
|
}
|
|
|
|
// Write out osgSim::BlinkSequence.
|
|
out->writeBool(_blinkSequence.valid());
|
|
if(_blinkSequence.valid()){
|
|
((ive::BlinkSequence*)(_blinkSequence.get()))->write(out);
|
|
}
|
|
|
|
// Write out blendingMode.
|
|
out->writeInt(_blendingMode);
|
|
}
|
|
|
|
void LightPoint::read(DataInputStream* in){
|
|
// Peek on LightPoint's identification.
|
|
int id = in->peekInt();
|
|
if(id == IVELIGHTPOINT){
|
|
// Read LightPoint's identification.
|
|
id = in->readInt();
|
|
|
|
// Read LightPoint's properties
|
|
_on = in->readBool();
|
|
_position = in->readVec3();
|
|
_color = in->readVec4();
|
|
_intensity = in->readFloat();
|
|
_radius = in->readFloat();
|
|
|
|
// read in osgSim::sector.
|
|
if(in->readBool()){
|
|
osgSim::Sector* sector;
|
|
int attributeID = in->peekInt();
|
|
if(attributeID == IVEAZIMELEVATIONSECTOR){
|
|
sector = new osgSim::AzimElevationSector();
|
|
((ive::AzimElevationSector*)(sector))->read(in);
|
|
_sector = sector;
|
|
}
|
|
else if(attributeID == IVEELEVATIONSECTOR){
|
|
sector = new osgSim::ElevationSector();
|
|
((ive::ElevationSector*)(sector))->read(in);
|
|
_sector = sector;
|
|
}
|
|
else if(attributeID == IVEAZIMSECTOR){
|
|
sector = new osgSim::AzimSector();
|
|
((ive::AzimSector*)(sector))->read(in);
|
|
_sector = sector;
|
|
}
|
|
else if(attributeID == IVECONESECTOR){
|
|
sector = new osgSim::ConeSector();
|
|
((ive::ConeSector*)(sector))->read(in);
|
|
_sector = sector;
|
|
}
|
|
else
|
|
throw Exception("Unknown sector in LightPoint::read()");
|
|
}
|
|
|
|
// Read in osgSim::BlinkSequence.
|
|
if(in->readBool()){
|
|
osgSim::BlinkSequence* blinkSequence = new osgSim::BlinkSequence();
|
|
((ive::BlinkSequence*)(blinkSequence))->read(in);
|
|
_blinkSequence = blinkSequence;
|
|
}
|
|
|
|
// Read in blendingMode.
|
|
_blendingMode = (osgSim::LightPoint::BlendingMode)in->readInt();
|
|
}
|
|
else{
|
|
throw Exception("LightPoint::read(): Expected LightPoint identification.");
|
|
}
|
|
}
|