Home | nevrax.com |
|
primitive_block.hGo to the documentation of this file.00001 00007 /* Copyright, 2000-2002 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 #ifndef NL_PRIMITIVE_BLOCK_PACS_H 00027 #define NL_PRIMITIVE_BLOCK_PACS_H 00028 00029 #include "nel/misc/types_nl.h" 00030 #include "nel/pacs/u_move_primitive.h" 00031 #include "nel/pacs/u_primitive_block.h" 00032 00033 00034 namespace NLPACS 00035 { 00036 00043 class CPrimitiveDesc 00044 { 00045 public: 00046 00047 // Default constructor 00048 CPrimitiveDesc (); 00049 00050 // The length of the 4 edges. The first is the width, the second is the depth 00051 // For cylinder, the first is the radius 00052 float Length[2]; 00053 00054 // This is the height of the box or of the cylinder. 00055 float Height; 00056 00057 // Attenuation 00058 float Attenuation; 00059 00060 // Primitive type 00061 UMovePrimitive::TType Type; 00062 00063 // Reaction type 00064 UMovePrimitive::TReaction Reaction; 00065 00066 // Reaction type 00067 UMovePrimitive::TTrigger Trigger; 00068 00069 // Obstacle flag 00070 bool Obstacle; 00071 00072 // Occlusion mask 00073 UMovePrimitive::TCollisionMask OcclusionMask; 00074 00075 // Collision mask 00076 UMovePrimitive::TCollisionMask CollisionMask; 00077 00078 // Position of the primitive 00079 NLMISC::CVector Position; 00080 00081 // Orientation of the primitive 00082 float Orientation; 00083 00084 // Serial methods 00085 void serial (NLMISC::IStream &s); 00086 }; 00087 00094 class CPrimitiveBlock : public UPrimitiveBlock 00095 { 00096 public: 00097 00098 // Array of primitives 00099 std::vector<CPrimitiveDesc> Primitives; 00100 00101 // Serial methods 00102 void serial (NLMISC::IStream &s); 00103 00105 00106 static UPrimitiveBlock *createPrimitiveBlock(NLMISC::IStream &src); 00107 static UPrimitiveBlock *createPrimitiveBlockFromFile(const std::string &fileName); 00109 }; 00110 00111 00112 } // NLPACS 00113 00114 00115 #endif // NL_PRIMITIVE_BLOCK_PACS_H 00116 00117 /* End of primitive_block.h */ |