00001 /************************************************************************* 00002 * * 00003 * Open Physics Abstraction Layer * 00004 * Copyright (C) 2004-2005 * 00005 * Alan Fischer alan.fischer@gmail.com * 00006 * Andres Reinot andres@reinot.com * 00007 * Tyler Streeter tylerstreeter@gmail.com * 00008 * All rights reserved. * 00009 * Web: opal.sourceforge.net * 00010 * * 00011 * This library is free software; you can redistribute it and/or * 00012 * modify it under the terms of EITHER: * 00013 * (1) The GNU Lesser General Public License as published by the Free * 00014 * Software Foundation; either version 2.1 of the License, or (at * 00015 * your option) any later version. The text of the GNU Lesser * 00016 * General Public License is included with this library in the * 00017 * file license-LGPL.txt. * 00018 * (2) The BSD-style license that is included with this library in * 00019 * the file license-BSD.txt. * 00020 * * 00021 * This library is distributed in the hope that it will be useful, * 00022 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00023 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files * 00024 * license-LGPL.txt and license-BSD.txt for more details. * 00025 * * 00026 *************************************************************************/ 00027 00028 #ifndef OPAL_SOLID_DATA_H 00029 #define OPAL_SOLID_DATA_H 00030 00031 #include "Defines.h" 00032 #include "ShapeData.h" 00033 00034 namespace opal 00035 { 00037 class SolidData 00038 { 00039 public: 00040 OPAL_DECL SolidData(); 00041 00043 OPAL_DECL SolidData(const SolidData& data); 00044 00045 OPAL_DECL virtual ~SolidData(); 00046 00049 OPAL_DECL virtual void OPAL_CALL addShape(const ShapeData& data); 00050 00052 OPAL_DECL virtual unsigned int OPAL_CALL getNumShapes()const; 00053 00055 OPAL_DECL virtual ShapeData* OPAL_CALL getShapeData( 00056 unsigned int i)const; 00057 00059 OPAL_DECL virtual void OPAL_CALL destroyShapes(); 00060 00062 OPAL_DECL virtual void OPAL_CALL operator=(const SolidData& data); 00063 00065 bool enabled; 00066 00068 std::string name; 00069 00071 bool sleeping; 00072 00075 real sleepiness; 00076 00078 bool isStatic; 00079 00081 Matrix44r transform; 00082 00084 Vec3r globalLinearVel; 00085 00087 Vec3r globalAngularVel; 00088 00090 real linearDamping; 00091 00093 real angularDamping; 00094 00095 protected: 00097 std::vector<ShapeData*> mShapes; 00098 00099 private: 00100 }; 00101 } 00102 00103 #endif