Beispiel #1
0
 def pushFree(self, staticObj=None):
     if staticObj is None:
         for obj in self._objectList:
             self.pushFree(obj)
         return
     if not self.checkPlatform(staticObj):
         return
     pushList = []
     for obj in self._objectList:
         if obj == staticObj or not self.checkPlatform(obj):
             continue
         if self._oneAtATime:
             v = polygon.polygonCollisionPushVector(
                 obj._headAreaMinHull + obj.getPosition(),
                 staticObj._boundaryHull + staticObj.getPosition())
         else:
             v = polygon.polygonCollisionPushVector(
                 obj._boundaryHull + obj.getPosition(),
                 staticObj._boundaryHull + staticObj.getPosition())
         if type(v) is bool:
             continue
         obj.setPosition(obj.getPosition() + v * 1.01)
         pushList.append(obj)
     for obj in pushList:
         self.pushFree(obj)
Beispiel #2
0
	def pushFree(self, staticObj):
		if not self.checkPlatform(staticObj):
			return
		pushList = []
		for obj in self._objectList:
			if obj == staticObj or not self.checkPlatform(obj):
				continue
			if self._oneAtATime:
				v = polygon.polygonCollisionPushVector(obj._headAreaMinHull + obj.getPosition(), staticObj._boundaryHull + staticObj.getPosition())
			else:
				v = polygon.polygonCollisionPushVector(obj._boundaryHull + obj.getPosition(), staticObj._boundaryHull + staticObj.getPosition())
			if type(v) is bool:
				continue
			obj.setPosition(obj.getPosition() + v * 1.01)
			pushList.append(obj)
		for obj in pushList:
			self.pushFree(obj)
	def _pushFree(self):
		for a in self._objectList:
			for b in self._objectList:
				if a == b:
					continue
				v = polygon.polygonCollisionPushVector(a._boundaryHull + a.getPosition(), b._boundaryHull + b.getPosition())
				if type(v) is bool:
					continue
				a.setPosition(a.getPosition() + v / 2.0)
				b.setPosition(b.getPosition() - v / 2.0)
				return True
		return False
Beispiel #4
0
 def _pushFree(self):
     for a in self._objectList:
         for b in self._objectList:
             if a == b:
                 continue
             v = polygon.polygonCollisionPushVector(
                 a._boundaryHull + a.getPosition(),
                 b._boundaryHull + b.getPosition())
             if type(v) is bool:
                 continue
             a.setPosition(a.getPosition() + v / 2.0)
             b.setPosition(b.getPosition() - v / 2.0)
             return True
     return False