def update(self, dt, inputStatus): lookDx = common.LOOK_SPEED * inputStatus.mouseDx lookDy = common.LOOK_SPEED * inputStatus.mouseDy lookDYaw = common.ROLL_SPEED * (inputStatus.rollLeftPressed - inputStatus.rollRightPressed) * dt right = numpy.cross(self.direction, self.up) totalQuat = ( maths.Quaternion.angleAxis(-lookDy, right) * maths.Quaternion.angleAxis(-lookDx, self.up) * maths.Quaternion.angleAxis(-lookDYaw, self.direction) ) # Update self self.up = totalQuat * self.up self.direction = totalQuat * self.direction self.position += dt * common.MOVE_SPEED * ( (inputStatus.moveFwdPressed - inputStatus.moveBackPressed) * self.direction + (inputStatus.moveRightPressed - inputStatus.moveLeftPressed) * right + (inputStatus.moveUpPressed - inputStatus.moveDownPressed) * self.up ) # Update the view matrix self.viewMatrix = maths.lookAt(self.position, self.direction, self.up)
def __init__(self, position, direction, up): self.position = position self.direction = direction self.up = up self.viewMatrix = maths.lookAt(self.position, self.direction, self.up)