1 /**********************************************************************
2  *
3  *    FILE:            OccluderNode.cpp
4  *
5  *    DESCRIPTION:    Read/Write osg::OccluderNode in binary format to disk.
6  *
7  *    CREATED BY:        Auto generated by iveGenerator
8  *                    and later modified by Rune Schmidt Jensen.
9  *
10  *    HISTORY:        Created 16.4.2003
11  *
12  *    Copyright 2003 VR-C
13  **********************************************************************/
14 
15 #include "Exception.h"
16 #include "OccluderNode.h"
17 #include "Group.h"
18 #include "ConvexPlanarOccluder.h"
19 
20 using namespace ive;
21 
write(DataOutputStream * out)22 void OccluderNode::write(DataOutputStream* out){
23     // Write OccluderNode's identification.
24     out->writeInt(IVEOCCLUDERNODE);
25     // If the osg class is inherited by any other class we should also write this to file.
26     osg::Group*  group = dynamic_cast<osg::Group*>(this);
27     if(group){
28         ((ive::Group*)(group))->write(out);
29     }
30     else
31         out_THROW_EXCEPTION("OccluderNode::write(): Could not cast this osg::OccluderNode to an osg::Group.");
32     // Write OccluderNode's properties.
33     out->writeBool(getOccluder()!=0);
34     if(getOccluder())
35         ((ive::ConvexPlanarOccluder*)(getOccluder()))->write(out);
36 }
37 
read(DataInputStream * in)38 void OccluderNode::read(DataInputStream* in)
39 {
40     // Peek on OccluderNode's identification.
41     int id = in->peekInt();
42     if(id == IVEOCCLUDERNODE)
43     {
44         // Read OccluderNode's identification.
45         id = in->readInt();
46         // If the osg class is inherited by any other class we should also read this from file.
47         osg::Group*  group = dynamic_cast<osg::Group*>(this);
48         if(group){
49             ((ive::Group*)(group))->read(in);
50         }
51         else
52             in_THROW_EXCEPTION("OccluderNode::read(): Could not cast this osg::OccluderNode to an osg::Group.");
53         // Read OccluderNode's properties
54         if(in->readBool()){
55             osg::ConvexPlanarOccluder* cpo = new osg::ConvexPlanarOccluder();
56             ((ive::ConvexPlanarOccluder*)(cpo))->read(in);
57             setOccluder(cpo);
58         }
59     }
60     else{
61         in_THROW_EXCEPTION("OccluderNode::read(): Expected OccluderNode identification.");
62     }
63 }
64