コード例 #1
0
ファイル: testscripts.py プロジェクト: freneticmonkey/Epsilon
    def update(self):
        # Get UI values
        self.speed = self._ui.speed
        self.angle_speed = self._ui.angle_speed

        super(CameraMoveController, self).update()

        if Input.get_mouse_left() and not self._mouse_over_ui:
            
            pos = self._node.transform.position
            forward = self._node.transform.forward
            
            mx, my = Input.get_mouse_move_relative()
            # FIXME: HACK to prevent immediate jump on initial mouse movement
            if math.fabs(mx) < 60.0 and math.fabs(my) < 60.0: # <== This makes mouse movement feel like 
                                                              # it's moving through molasses
                h_angle = self._mouse_speed_x * -mx
                v_angle = self._mouse_speed_y * -my
                
                self._node.transform.rotate(Quaternion().rotate_axis(h_angle, self._node.transform.up), Space.PARENT )
                self._node.transform.rotate(Quaternion().rotate_axis(v_angle, self._node.transform.right), Space.PARENT )

                #self._node.transform.rotate(Quaternion().rotate_axis(h_angle, Vector3(0,1,0)), Space.PARENT )
                #self._node.transform.rotate(Quaternion().rotate_axis(v_angle, Vector3(1,0,0)), Space.PARENT )
                
                self._node.camera.look_at_position = pos + ( forward * self._speed)
コード例 #2
0
ファイル: frustum.py プロジェクト: freneticmonkey/Epsilon
    def set_perspective(self):
        
        glMatrixMode(GL_PROJECTION)
        glLoadIdentity()
        gluPerspective(self._fov, self._aspect, self._near_dist, self._far_dist)

        # If the transform for the camera has changed, then recalculate the frustrum
        if self.node_parent.transform.has_changed_this_frame:

            self._update_frustum = Settings.get('RenderSettings','update_frustum')

            if Input.get_key(Input.KEY_1):
                
                if not self._update_frustum:
                    self._update_frustum = True#not self._update_frustum
                    print "Frustum update enabled"
                    print "cam pos: %s" % self._transform.position

            if Input.get_key(Input.KEY_2):
                if self._update_frustum:
                    self._update_frustum = False
                    print "Frustum update disabled"
                    print "@ cam pos: %s" % self._transform.position

            if self._update_frustum:
                #self.calc_frustum()
                self.calc_frustum_lighthouse()

                self.update_projection_matrix()
            
            # show the frustum visualisation
            self._vis_frustum(not self._update_frustum)
コード例 #3
0
ファイル: testscripts.py プロジェクト: freneticmonkey/Epsilon
 def update(self):
     
     if Input.get_key_down(Input.KEY_0):
         self._wireframe = not self._wireframe
         self._renderer.wireframe = self._wireframe
     
     if Input.get_key_down(Input.KEY_9):
         self._grid = not self._grid
         self._renderer.grid = self._grid
         
     if Input.get_key_down(Input.KEY_ESCAPE) or Input.get_quit_detected():
         # Fire a Quit Event
         QuitEvent().send()
コード例 #4
0
ファイル: testscripts.py プロジェクト: freneticmonkey/Epsilon
    def update(self):
        
        if not self._mouse_over_ui:
            # If the left mouse button is down
            mouse_left_down = Input.get_mouse_left()
            
            # If the left mouse is down 
            if mouse_left_down:
                
                if not self._unlock_mouse:
                    Input.set_lock_mouse(True)
                self._unlock_mouse = True
#                # Hide the cursor
#                #mouse.set_visible(False)
#                
#                # And its not the initial frame
#                if not self._initial_mouse_down:
#                    # Reset the mouse position to the centre of the screen
#                    #self._mouse_x, self._mouse_y = mouse.get_pos()
#                    self._mouse_x, self._mouse_y = Input.get_mouse_move()
#                    self._mouse_x -= self._h_res[0]
#                    self._mouse_y -= self._h_res[1]
#                    Input.set_mouse_pos(self._mouse_x, self._mouse_y)
#                else:
#                    self._initial_mouse_down = False
#                    Input.set_mouse_pos(0, 0)
#                    
#                #mouse.set_pos(self._h_res[0],self._h_res[1])
#                Input.set_mouse_pos(self._h_res[0],self._h_res[1])
#                
#                self._initial_mouse_up = True
                
                # Handle Keyboard
                
                # Handle adjusting normal speed
                if Input.get_key(Input.KEY_BACKSLASH):
                    self._final_speed -= self._adj_speed * Time.delta_time
                    if self._final_speed < 0:
                        self._final_speed = self._adj_speed
                    
                if Input.get_key(Input.KEY_EQUALS):
                    self._final_speed += self._adj_speed * Time.delta_time 
                    
                applied_speed = self._final_speed
                    
                # Handle temporary speed boost
                if Input.get_key(Input.KEY_LEFT_SHIFT):
                    applied_speed *= 10.0
                
                if Input.get_key(Input.KEY_A):
                    self._node.transform.translate(  ( Vector3.RIGHT() * applied_speed * Time.delta_time ) )
                if Input.get_key(Input.KEY_D):
                    self._node.transform.translate(  ( Vector3.RIGHT() * -applied_speed * Time.delta_time ) )
                if Input.get_key(Input.KEY_W):
                    self._node.transform.translate( ( Vector3.FORWARD() * applied_speed * Time.delta_time ) )
                if Input.get_key(Input.KEY_S):
                    self._node.transform.translate( ( Vector3.FORWARD() * -applied_speed * Time.delta_time ) )
                    
                if Input.get_key(Input.KEY_R):
                    self._node.transform.translate( ( Vector3.UP() * applied_speed * Time.delta_time ) )
                if Input.get_key(Input.KEY_F):
                    self._node.transform.translate( ( Vector3.UP() * -applied_speed * Time.delta_time ) )
                
                angle = self._angle_speed * Time.delta_time
                angle = angle * (math.pi / 180 )
                
                if Input.get_key(Input.KEY_Q):
                    self._node.transform.rotate(Quaternion().rotate_axis(angle, Vector3(0,1,0)) )
                    
                if Input.get_key(Input.KEY_E):
                    self._node.transform.rotate( Quaternion().rotate_axis(-angle, Vector3(0,1,0)) )
                
            else:
                if self._unlock_mouse:
                    Input.set_lock_mouse(False)
                    self._unlock_mouse = False
コード例 #5
0
 def __init__(self):
     Input.__init__(self)
     Input._instance = self