Author: ArcRiley Date: 2008-02-25 16:00:49 -0500 (Mon, 25 Feb 2008) New Revision: 981
Modified: trunk/pysoy/src/_datatypes/VertexList.pxi trunk/pysoy/src/bodies._bodies/Body.pxi trunk/pysoy/src/bodies._bodies/Camera.pxi trunk/pysoy/src/bodies._bodies/soy.bodies._bodies.pxd trunk/pysoy/src/bodies._bodies/soy.bodies._bodies.pyx trunk/pysoy/src/shapes/Shape.pxi Log: #934 - this starts the ticket, but Trunk no longer builds (for now) Modified: trunk/pysoy/src/_datatypes/VertexList.pxi =================================================================== --- trunk/pysoy/src/_datatypes/VertexList.pxi 2008-02-25 19:44:38 UTC (rev 980) +++ trunk/pysoy/src/_datatypes/VertexList.pxi 2008-02-25 21:00:49 UTC (rev 981) @@ -217,7 +217,7 @@ if _scene._lights.current > 0: _light = <soy.bodies.lights.Light> _scene._lights.list[0] - ode.dBodyCopyPosition(<ode.dBodyID> _light._bodyID, _light_pos) + _light_pos = &(<ode.dBodyID> _light._bodyID)._position _body._coreGetModelviewInv(_inv_mm) #vector by matrix multiplication by hand Modified: trunk/pysoy/src/bodies._bodies/Body.pxi =================================================================== --- trunk/pysoy/src/bodies._bodies/Body.pxi 2008-02-25 19:44:38 UTC (rev 980) +++ trunk/pysoy/src/bodies._bodies/Body.pxi 2008-02-25 21:00:49 UTC (rev 981) @@ -17,9 +17,6 @@ # # $Id$ -cimport soy._datatypes -cimport soy.meshes - cdef class Body : '''PySoy Body @@ -31,9 +28,6 @@ position=None, rotation=None, velocity=None, mesh=None, shape=None, *args, **keywords) : - self._quaternion[0] = 1.0 - import soy.joints - if scene == None : pass #self._bodyID = NULL @@ -50,24 +44,15 @@ if shape : self.shape = shape self._tags = soy._datatypes.HashTable() + def __dealloc__(self) : del(self.scene) def distance(self, Body myBody) : - cdef ode.dVector3 a - cdef ode.dVector3 b - cdef ode.dReal dist - if self._scene != 0 and self._scene == myBody._scene: - ode.dBodyCopyPosition(<ode.dBodyID> self._bodyID, a) - ode.dBodyCopyPosition(<ode.dBodyID> myBody._bodyID, b) - dist =ode.dDISTANCE(a,b) - return dist - #elif <void *> self._scene == NULL: # FAILS to catch - # raise UnboundLocalError('Body is not in a scene') - elif self._scene != myBody._scene: - raise RuntimeError('Make sure that both Bodies are in the same Scene') + assert self._scene == myBody._scene, 'bodies are in different scenes' + return ode.dDISTANCE(self._position, myBody._position) def floor(self,Body floor) : cdef ode.dGeomID myray @@ -101,9 +86,7 @@ return self._scene else : return None - def __set__(self, newscene) : - if not (isinstance(newscene, soy.scenes.Scene) or newscene==None) : - raise TypeError('not an instance of soy.scenes.Scene') + def __set__(self, soy.scenes.Scene _newscene) : if self._isActive() : self._scene._bodies.lock() self._scene._bodies.remove(<void *>self) @@ -114,12 +97,11 @@ ode.dSpaceRemove(self._scene._spaceID, self._shape._geomID) ode.dSpaceAdd((<soy.scenes.Scene> newscene)._spaceID, self._shape._geomID) - if newscene != None : - self._scene = newscene - self._scene._bodies.lock() - self._create() - self._scene._bodies.append(<void *>self) - self._scene._bodies.unlock() + self._scene = _newscene + self._scene._bodies.lock() + self._create() + self._scene._bodies.append(<void *>self) + self._scene._bodies.unlock() def __del__(self) : if self._isActive() : self._scene._bodies.lock() @@ -166,14 +148,7 @@ Defaults to (0.0, 0.0, 0.0). ''' def __get__(self) : - cdef ode.dVector3 xyz - if self._bodyID : - self._scene._stepLock() - ode.dBodyCopyPosition(self._bodyID, xyz) - self._scene._stepUnLock() - return (xyz[0], xyz[1], xyz[2]) - else : - return (self._position[0], self._position[1], self._position[2]) + return (self._position[0], self._position[1], self._position[2]) def __set__(self, value) : if type(value)!=tuple and type(value)!=list : raise TypeError('Must provide a tuple or list') @@ -289,10 +264,13 @@ ode.dBodySetAngularVel(self._bodyID, self._angularVel[0], self._angularVel[1], self._angularVel[2]) ode.dBodyGetMass(self._bodyID, &self._mass) + self._position = ode.dBodyGetPosition (self._bodyID) + self._quaternion = ode.dBodyGetQuaternion(self._bodyID) + self._linearVel = ode.dBodyGetLinearVel (self._bodyID) + self._angularVel = ode.dBodyGetAngularVel(self._bodyID) cdef void _destroy(self) : cdef ode.dReal *real - ode.dBodyCopyPosition(self._bodyID, self._position) ode.dBodyCopyQuaternion(self._bodyID, self._quaternion) real = <ode.dReal *>ode.dBodyGetLinearVel(self._bodyID) self._linearVel[0] = real[0] Modified: trunk/pysoy/src/bodies._bodies/Camera.pxi =================================================================== --- trunk/pysoy/src/bodies._bodies/Camera.pxi 2008-02-25 19:44:38 UTC (rev 980) +++ trunk/pysoy/src/bodies._bodies/Camera.pxi 2008-02-25 21:00:49 UTC (rev 981) @@ -79,7 +79,7 @@ # # What is this for? Framerate calc? self._rpt = (self._rpt + 1) % 16 - self._rtimes[self._rpt] = _time() + self._rtimes[self._rpt] = soy._internals._time() property fps : def __get__(self) : Modified: trunk/pysoy/src/bodies._bodies/soy.bodies._bodies.pxd =================================================================== --- trunk/pysoy/src/bodies._bodies/soy.bodies._bodies.pxd 2008-02-25 19:44:38 UTC (rev 980) +++ trunk/pysoy/src/bodies._bodies/soy.bodies._bodies.pxd 2008-02-25 21:00:49 UTC (rev 981) @@ -16,11 +16,8 @@ # along with this program; if not, see http://www.gnu.org/licenses # # $Id$ -cimport gl + cimport ode -cimport py -cimport stdio -cimport soy._internals cimport soy._datatypes cimport soy.meshes cimport soy.scenes @@ -33,10 +30,10 @@ cdef soy.shapes.Shape _shape # for loading/saving cdef ode.dMass _mass - cdef ode.dVector3 _position + cdef ode.dReal* _position cdef ode.dQuaternion _quaternion - cdef ode.dReal _linearVel[3] - cdef ode.dReal _angularVel[3] + cdef ode.dReal* _linearVel + cdef ode.dReal* _angularVel cdef soy._datatypes.HashTable _tags # C functions cdef void _create(self) Modified: trunk/pysoy/src/bodies._bodies/soy.bodies._bodies.pyx =================================================================== --- trunk/pysoy/src/bodies._bodies/soy.bodies._bodies.pyx 2008-02-25 19:44:38 UTC (rev 980) +++ trunk/pysoy/src/bodies._bodies/soy.bodies._bodies.pyx 2008-02-25 21:00:49 UTC (rev 981) @@ -32,8 +32,10 @@ 'by '+'$Author$'[9:-2] __version__ = 'Trunk (r'+'$Rev$'[6:-2]+')' -from soy._internals cimport _time +cimport gl +cimport py +cimport soy._internals +cimport soy.meshes include "Body.pxi" include "Camera.pxi" - Modified: trunk/pysoy/src/shapes/Shape.pxi =================================================================== --- trunk/pysoy/src/shapes/Shape.pxi 2008-02-25 19:44:38 UTC (rev 980) +++ trunk/pysoy/src/shapes/Shape.pxi 2008-02-25 21:00:49 UTC (rev 981) @@ -38,14 +38,14 @@ cdef float _volume(self) : return 0 - cdef void _getcenter(self, ode.dVector3 xyz) : + cdef void _getcenter(self, ode.dVector3 _xyz) : cdef ode.dBodyID b if not self._geomID : raise RuntimeError('Not active') b = ode.dGeomGetBody(self._geomID) if b == NULL : raise RuntimeError('Not attached to a body') - ode.dBodyCopyPosition(b, xyz) + _xyz = b._position cdef float _radius(self) : return 0 _______________________________________________ PySoy-SVN mailing list PySoy-SVN@pysoy.org http://www.pysoy.org/mailman/listinfo/pysoy-svn