def spawnBomb(self, key):
        if key != b' ':
            return

        ownerEntity = coreInstance.entities[self.ownerId]
        coreInstance.addEntity(
            Entity(
                pos=scramblePosition(ownerEntity.pos, 0.05),
                render=Render("Model1"),
                bomb=Bomb(),
                gravity=Gravity(),
                friction=0.93,
                collision=Collision(['layerA'], (0.1, 0.1)),
                deltaVector=scramblePosition(ownerEntity.deltaVector, 0.05)))
def combinedSpawner(pos, color, factionId):
    for _ in range(10):
        freePos = scramblePosition(pos, 0.4, 0.2)
        if not CollisionLogic.pointCollides(freePos):
            createUnit(freePos, color, factionId)
            break
    return ScheduledTaskResult.ContinueTask
 def onCollisionBall(entA, entB, vector):
     if abs(vector[0]) > abs(vector[1]):
         entA.deltaVector[0] *= -0.99
     else:
         entA.deltaVector[1] *= -0.99
     entA.deltaVector = scramblePosition(entA.deltaVector, 0.01)
     entA.deltaVector = [x * 0.04 for x in normalize(entA.deltaVector)]
 def onKeyDown(self, key):
     entity = coreInstance.entities[self.ownerId]
     if key == b'a':
         entity.pos[0] -= 0.035
         entity.deltaVector[0] -= 0.085
     elif key == b'd':
         entity.pos[0] += 0.035
         entity.deltaVector[0] += 0.085
     elif key == b'w':
         entity.deltaVector[1] += 0.085
         entity.pos[1] += 0.015
     elif key == b's':
         entity.deltaVector[1] -= 0.085
         entity.pos[1] -= 0.015
     elif key == b' ':
         for _ in range(0,10):
             coreInstance.addEntity(Entity(
                 pos=scramblePosition(entity.pos, 0.01),
                 friction=0.93,
                 collision=Collision(['layerA'], (0.005, 0.005), collisionCausesPositionRevert),
                 deltaVector=scramblePosition(entity.deltaVector, 0.15),
                 gravity=Gravity([0, -0.01, 0]),
                 render=Render('Cube', 0.01)
             ))