/********************************************************************** * * 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" #include "DirectionalSector.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(_sector.get())){ ((ive::AzimElevationSector*)(_sector.get()))->write(out); } else if(dynamic_cast(_sector.get())){ ((ive::ElevationSector*)(_sector.get()))->write(out); } else if(dynamic_cast(_sector.get())){ ((ive::AzimSector*)(_sector.get()))->write(out); } else if(dynamic_cast(_sector.get())){ ((ive::ConeSector*)(_sector.get()))->write(out); } else if(dynamic_cast(_sector.get())){ ((ive::DirectionalSector*)(_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 if(attributeID == IVEDIRECTIONALSECTOR){ sector = new osgSim::DirectionalSector(); ((ive::DirectionalSector*)(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."); } }