00001 00007 /* Copyright, 2000 Nevrax Ltd. 00008 * 00009 * This file is part of NEVRAX NEL. 00010 * NEVRAX NEL is free software; you can redistribute it and/or modify 00011 * it under the terms of the GNU General Public License as published by 00012 * the Free Software Foundation; either version 2, or (at your option) 00013 * any later version. 00014 00015 * NEVRAX NEL is distributed in the hope that it will be useful, but 00016 * WITHOUT ANY WARRANTY; without even the implied warranty of 00017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00018 * General Public License for more details. 00019 00020 * You should have received a copy of the GNU General Public License 00021 * along with NEVRAX NEL; see the file COPYING. If not, write to the 00022 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, 00023 * MA 02111-1307, USA. 00024 */ 00025 00026 #include "std3d.h" 00027 00028 #include "3d/shape.h" 00029 #include "3d/transform_shape.h" 00030 #include "3d/scene.h" 00031 00032 #include <string> 00033 00034 00035 using namespace NLMISC; 00036 00037 00038 namespace NL3D 00039 { 00040 00041 00042 // *************************************************************************** 00043 // *************************************************************************** 00044 // IShape 00045 // *************************************************************************** 00046 // *************************************************************************** 00047 00048 00049 // *************************************************************************** 00050 CTransformShape *IShape::createInstance(CScene &scene) 00051 { 00052 CTransformShape *mo= (CTransformShape*)scene.createModel(NL3D::TransformShapeId); 00053 mo->Shape= this; 00054 return mo; 00055 } 00056 00057 00058 // *************************************************************************** 00059 IShape::IShape() 00060 { 00061 _DistMax= -1; 00062 } 00063 00064 00065 // *************************************************************************** 00066 void IShape::setDistMax(float distMax) 00067 { 00068 _DistMax= distMax; 00069 // normalize infinite setup. 00070 if(distMax<0) 00071 _DistMax= -1; 00072 } 00073 00074 00075 // *************************************************************************** 00076 void IShape::getAABBox(CAABBox &bbox) const 00077 { 00078 bbox.setCenter(CVector::Null); 00079 bbox.setHalfSize(CVector::Null); 00080 } 00081 00082 00083 // *************************************************************************** 00084 // *************************************************************************** 00085 // CShapeStream 00086 // *************************************************************************** 00087 // *************************************************************************** 00088 00089 00090 // *************************************************************************** 00091 CShapeStream::CShapeStream () 00092 { 00093 _Shape=NULL; 00094 } 00095 00096 00097 // *************************************************************************** 00098 CShapeStream::CShapeStream (IShape* shape) 00099 { 00100 // Set the pointer 00101 setShapePointer (shape); 00102 } 00103 00104 00105 // *************************************************************************** 00106 void CShapeStream::setShapePointer (IShape* shape) 00107 { 00108 _Shape=shape; 00109 } 00110 00111 00112 // *************************************************************************** 00113 IShape* CShapeStream::getShapePointer () const 00114 { 00115 return _Shape; 00116 } 00117 00118 00119 // *************************************************************************** 00120 void CShapeStream::serial(NLMISC::IStream &f) throw(NLMISC::EStream) 00121 { 00122 // First, serial an header or checking if it is correct 00123 f.serialCheck ((uint32)'PAHS'); 00124 00125 // Then, serial the shape 00126 f.serialPolyPtr (_Shape); 00127 00128 // Ok, it's done 00129 } 00130 00131 } // NL3D