示例#1
0
    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)
示例#2
0
 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)