Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from __future__ import division
- import math
- from math import pi , tan, radians, sqrt, sin, cos
- import pyglet
- from pyglet.gl import *
- from pyglet.window import key, mouse, Window
- class camera_move_target(object):
- def __init__(self, camera):
- self.x = camera.x
- self.y = camera.y
- self.scale = camera.scale
- class camera(object):
- def __init__(self,x, y, w, h):
- self.x = x
- self.y = y
- self.h = h
- self.w = w
- self.page_w = self.w
- self.near = 1
- self.far = -1
- self.speed = 0.1
- self.scale = 1.0
- self.angle = 0
- self.max_world_x = self.w
- self.target = camera_move_target(self)
- def pan(self, x, y):
- self.target.x -= x
- self.target.y -= y
- def pan_lr(self, length):
- self.target.x += length
- def goto_x(self, x_location):
- self.target.x = x_location
- def pan_ud(self, length):
- self.target.y += length
- def zoom(self, scale):
- self.target.scale += scale
- def update(self):
- #print self.x, self.target.x
- if self.x > self.max_world_x - self.w/2 :
- self.x = self.x - 1
- self.target.x = self.max_world_x - self.w/2
- elif self.x < 0 + self.w/2:
- self.target.x = 0 + self.w/2
- self.x = self.x + 1.0
- else:
- self.x += (self.target.x - self.x) * self.speed
- self.y += (self.target.y - self.y) * self.speed
- self.scale += int(self.target.scale - self.scale) * self.speed
- def update_no_delay(self):
- print "no_delay"
- #self.target.x = 0
- #self.target.y = 0
- print self.x, self.target.x
- if self.x > self.max_world_x - self.w/2 :
- self.x = self.x - 1
- self.target.x = self.max_world_x - self.w/2
- elif self.x < 0 + self.w/2:
- self.target.x = 0 + self.w/2
- self.x = self.x + 1.0
- else:
- self.x = int(self.target.x - self.x)
- self.y = int(self.target.y - self.y)
- self.scale += int(self.target.scale - self.scale)
- def project(self, w, h):
- glMatrixMode(GL_PROJECTION)
- #gluPerspective(45, 1.0 * w/h, 0.1, 100.0)
- glLoadIdentity()
- glOrtho( self.x - self.w /2 , self.x + self.w /2, self.y - self.h/2 , self.y + self.h/2 , -10, 10);
- #gluOrtho2D( self.x - self.w /2 , self.x + self.w /2, self.y - self.h/2 , self.y + self.h/2 );
- glMatrixMode(GL_MODELVIEW)
- glLoadIdentity()
- def headsup(self, width, height):
- glMatrixMode(GL_PROJECTION)
- glLoadIdentity()
- glOrtho(0, self.w , 0, self.h, -10, 10)
- glMatrixMode(GL_MODELVIEW)
- glLoadIdentity()
- def hud_mode(self, width, height):
- glMatrixMode(GL_PROJECTION)
- glLoadIdentity()
- gluOrtho2D(0, width, 0, height)
- glMatrixMode(GL_MODELVIEW)
- glLoadIdentity()
- def calc_pos(self, mx, my):
- rx = ( mx + self.x - self.w/2 )
- ry = ( my +self.y - self.h/2 )
- return rx, ry
Add Comment
Please, Sign In to add comment