Beispiel #1
0
 def _startElement(self, name, attrs):
     nodeName = attrs.get('name', None)
     
     if (name == 'transform'):
         t = transform.Transform()
         t.takeParser(self._parser, self, attrs)
     elif (name == 'geom'):
         g = geom.Geom(nodeName, self)
         g.takeParser(self._parser)
     elif (name == 'group'):
         # parse group
         pass
     elif (name == 'body'):
         b = body.Body(nodeName, self, attrs)
         b.takeParser(self._parser)
     elif (name == 'jointgroup'):
         # parse joint group
         pass
     elif (name == 'joint'):
         j = joint.Joint(nodeName, self)
         j.takeParser(self._parser)
     elif (name == 'ext'):
         # parse ext
         pass
     else:
         raise errors.ChildError('space', name)
Beispiel #2
0
 def _startElement(self, name, attrs):
     if (name == 'link1'):
         self._link1 = attrs['body']
     elif (name == 'link2'):
         self._link2 = attrs['body']
     elif (name == 'ext'):
         pass
     elif (name == 'amotor'):
         l1, l2 = self._getLinks()
         self._parseAMotor(self._world, l1, l2)
     elif (name == 'ball'):
         l1, l2 = self._getLinks()
         self._parseBallJoint(self._world, l1, l2)
     elif (name == 'fixed'):
         l1, l2 = self._getLinks()
         self._parseFixedJoint(self._world, l1, l2)
     elif (name == 'hinge'):
         l1, l2 = self._getLinks()
         self._parseHingeJoint(self._world, l1, l2)
     elif (name == 'hinge2'):
         l1, l2 = self._getLinks()
         self._parseHinge2Joint(self._world, l1, l2)
     elif (name == 'slider'):
         l1, l2 = self._getLinks()
         self._parseSliderJoint(self._world, l1, l2)
     elif (name == 'universal'):
         l1, l2 = self._getLinks()
         self._parseUniversalJoint(self._world, l1, l2)
     else:
         raise errors.ChildError('joint', name)
Beispiel #3
0
 def start(name, attrs):
     if (name == 'anchor'):
         anchor[0] = self._parser.parseVector(attrs)
     elif (name == 'axis'):
         axes.append(attrs)
     else:
         raise errors.ChildError('hinge2', name)
Beispiel #4
0
 def _startElement(self, name, attrs):
     nodeName = attrs.get('name', None)
     
     if (name == 'world'):
         world = World(nodeName, self)
         world.takeParser(self._parser)
     elif (name == 'ext'):
         pass
     else:
         raise errors.ChildError('xode', name)
Beispiel #5
0
 def start(name, attrs):
     # The XODE specification allows anchor elements for AMotor but
     # there is no way to set the anchor of an AMotor.
     
     #if (name == 'anchor'):
     #    anchor[0] = self._parser.parseVector(attrs)
     
     if (name == 'axis'):
         axes.append(attrs)
     else:
         raise errors.ChildError('amotor', name)
Beispiel #6
0
 def start(name, attrs):
     if (name == 'vertices'):
         pass
     elif (name == 'triangles'):
         pass
     elif (name == 'v'):
         vertices.append(self._parser.parseVector(attrs))
     elif (name == 't'):
         tri = int(attrs['ia'])-1, int(attrs['ib'])-1, int(attrs['ic'])-1
         triangles.append(tri)
     else:
         raise errors.ChildError('trimesh', name)
Beispiel #7
0
 def _startElement(self, name, attrs):
     nodeName = attrs.get('name', None)
     
     if (name == 'transform'):
         t = transform.Transform()
         t.takeParser(self._parser, self, attrs)
     elif (name == 'space'):
         space = Space(nodeName, self)
         space.takeParser(self._parser)
     elif (name == 'ext'):
         pass
     else:
         raise errors.ChildError('world', name)
Beispiel #8
0
    def _startElement(self, name, attrs):
        nodeName = attrs.get('name', None)

        if (name == 'transform'):
            t = transform.Transform()
            t.takeParser(self._parser, self, attrs)
        else:
            self._applyTransform()
        
        if (name == 'torque'):
            self.getODEObject().setTorque(self._parser.parseVector(attrs))
        elif (name == 'force'):
            self.getODEObject().setForce(self._parser.parseVector(attrs))
        elif (name == 'finiteRotation'):
            mode = int(attrs['mode'])

            try:
                axis = (float(attrs['xaxis']),
                        float(attrs['yaxis']),
                        float(attrs['zaxis']))
            except KeyError:
                raise errors.InvalidError('finiteRotation element must have' \
                                          ' xaxis, yaxis and zaxis attributes')

            if (mode not in [0, 1]):
                raise errors.InvalidError('finiteRotation mode attribute must' \
                                          ' be either 0 or 1.')
            
            self.getODEObject().setFiniteRotationMode(mode)
            self.getODEObject().setFiniteRotationAxis(axis)
        elif (name == 'linearVel'):
            self.getODEObject().setLinearVel(self._parser.parseVector(attrs))
        elif (name == 'angularVel'):
            self.getODEObject().setAngularVel(self._parser.parseVector(attrs))
        elif (name == 'mass'):
            self._mass = Mass(nodeName, self)
            self._mass.takeParser(self._parser)
        elif (name == 'joint'):
            j = joint.Joint(nodeName, self)
            j.takeParser(self._parser)
        elif (name == 'body'):
            b = Body(nodeName, self, attrs)
            b.takeParser(self._parser)
        elif (name == 'geom'):
            g = geom.Geom(nodeName, self)
            g.takeParser(self._parser)
        elif (name == 'transform'): # so it doesn't raise ChildError
            pass
        else:
            raise errors.ChildError('body', name)
Beispiel #9
0
    def _startElement(self, name, attrs):
        nodeName = attrs.get('name', None)

        if (name == 'mass_struct'):
            pass
        elif (name == 'mass_shape'):
            self._parseMassShape(attrs)
        elif (name == 'transform'):
            # parse transform
            pass
        elif (name == 'adjust'):
            total = float(attrs['total'])
            self.getODEObject().adjust(total)
        elif (name == 'mass'):
            mass = Mass(nodeName, self)
            mass.takeParser(self._parser)
        else:
            raise errors.ChildError('mass', name)
Beispiel #10
0
 def _startElement(self, name, attrs):
     nodeName = attrs.get('name', None)
     
     if (name == 'transform'):
         t = transform.Transform()
         t.takeParser(self._parser, self, attrs)
         self._transformed = True
     elif (name == 'box'):
         self._parseGeomBox(attrs)
     elif (name == 'cappedCylinder'):
         self._parseGeomCCylinder(attrs)
     elif (name == 'cone'):
         raise NotImplementedError()
     elif (name == 'cylinder'):
         raise NotImplementedError()
     elif (name == 'plane'):
         self._parseGeomPlane(attrs)
     elif (name == 'ray'):
         self._parseGeomRay(attrs)
     elif (name == 'sphere'):
         self._parseGeomSphere(attrs)
     elif (name == 'trimesh'):
         self._parseTriMesh(attrs)
     elif (name == 'geom'):
         g = Geom(nodeName, self)
         g.takeParser(self._parser)
     elif (name == 'body'):
         b = body.Body(nodeName, self, attrs)
         b.takeParser(self._parser)
     elif (name == 'joint'):
         j = joint.Joint(nodename, self)
         j.takeParser(self._parser)
     elif (name == 'jointgroup'):
         pass
     elif (name == 'ext'):
         pass
     else:
         raise errors.ChildError('geom', name)
Beispiel #11
0
 def start(name, attrs):
     if (name == 'axis'):
         axes.append(attrs)
     else:
         raise errors.ChildError('slider', name)
Beispiel #12
0
 def start(name, attrs):
     raise errors.ChildError('fixed', name)
Beispiel #13
0
 def start(name, attrs):
     if (name == 'anchor'):
         anchor[0] = self._parser.parseVector(attrs)
     else:
         raise errors.ChildError('ball', name)
Beispiel #14
0
 def start(name, attrs):
     if (name == 'ext'):
         pass
     else:
         raise errors.ChildError('ray', name)
Beispiel #15
0
 def start(name, attrs):
     if (name == 'ext'):
         pass
     else:
         raise errors.ChildError('cappedCylinder', name)