from PodSix.Concurrent import Concurrent
from PodSix.ArrayOps import Subtract, Multiply, Add
from PodSix.Rectangle import Rectangle
from Collider import Collider

class Camera(Concurrent, Collider):
	def __init__(self, rectangle, level=None, tracking=None):
		self.snapSpeed = 0.05
		self.visible = []
		Concurrent.__init__(self)
		self.rectangle = Rectangle(rectangle)
		if level:
			self.SetLevel(level)
		if tracking:
			self.SetTracking(tracking)
	
	def Collide(self, who):
		self.visible.append(who)
	
	def GetVisible(self):
		return self.visible
	
	def SetLevel(self, level):
		self.level = level
	
	def SetTracking(self, tracking):
		self.tracking = tracking
	
	def Update(self):
		vec = Subtract(self.tracking.rectangle.Center(), self.rectangle.Center())
		self.rectangle.Center(Add(Multiply(vec, self.snapSpeed), self.rectangle.Center()))
		#print self.visible
		self.visible = []
		Concurrent.Update(self)


