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 #include "ODESpace.h" 00029 00030 namespace opal 00031 { 00032 ODESpace::ODESpace() 00033 { 00034 // Create the Space without adding it to another Space. 00035 if ( false ) 00036 mSpaceID = dSimpleSpaceCreate(0); 00037 else 00038 { 00039 mSpaceID = dHashSpaceCreate(0); 00040 dHashSpaceSetLevels(mSpaceID, 3, 9); 00041 } 00042 mParentSpaceID = NULL; 00043 } 00044 00045 ODESpace::ODESpace( dSpaceID space ) 00046 { 00047 mSpaceID = space; 00048 mParentSpaceID = NULL; 00049 } 00050 00051 ODESpace::~ODESpace() 00052 { 00053 } 00054 00055 void ODESpace::setParentSpace(Space* parentSpace) 00056 { 00057 dSpaceID tempSpaceID = 00058 ((ODESpace*)parentSpace)->internal_getSpaceID(); 00059 00060 // First remove this Space from its current parent Space, if one 00061 // exists. 00062 if (NULL != mParentSpaceID) 00063 { 00064 dSpaceRemove(mParentSpaceID, (dGeomID)mSpaceID); 00065 } 00066 00067 // Now add this Space into the new Space. 00068 dSpaceAdd(tempSpaceID, (dGeomID)mSpaceID); 00069 00070 mParentSpaceID = tempSpaceID; 00071 } 00072 00073 dSpaceID ODESpace::internal_getSpaceID()const 00074 { 00075 return mSpaceID; 00076 } 00077 }