Example #1
0
class HealthBar(object):

	def __init__(self, ship, screenPos):
		super().__init__()
		
		sg = Renderer.activeRenderer.getSceneGraph()
		
		self._ship = ship
		self._maxHealth = ship._health
		self._screenPos = screenPos
		
		tNode = sg.newTransform(t=vec(-280, screenPos*(-300+25)))
		self._barFill = SceneObject(dataSrc = DiscreteRect(200, h=20), t=tNode, 
			color = Color.Green)
		self._border = SceneObject(dataSrc = DiscreteRect(w=200, h=20), t=tNode,	\
			color = Color.Grey, batch=pyglet.graphics.Batch(), group = LinePolygonMode)
		
		
	def update(self, dt):
		currentHealth = self._ship._health if self._ship._health > 0 else 0
		ratio = currentHealth/self._maxHealth
		
		self._barFill._dataSrc.resize(ratio*200, 20)
		
		
	def removeFromWorld(self):
		self._barFill.getTransform().killSubtree()
		self._barFill.removeTransform()
		
Example #2
0
 def __init__(self,diameter,height,offset):
   SceneObject.__init__(self,Point3D(),GL_SMOOTH,True)
   self.diameter = diameter
   self.height = height
   self.offset = offset
   self.cylinder = gluNewQuadric()
   gluQuadricTexture(self.cylinder, GL_TRUE)
   gluQuadricNormals(self.cylinder, GLU_SMOOTH)
Example #3
0
 def __init__(self, diameter, height, offset):
     SceneObject.__init__(self, Point3D(), GL_SMOOTH, True)
     self.diameter = diameter
     self.height = height
     self.offset = offset
     self.cylinder = gluNewQuadric()
     gluQuadricTexture(self.cylinder, GL_TRUE)
     gluQuadricNormals(self.cylinder, GLU_SMOOTH)
Example #4
0
 def __init__(self,diameter,center_pole,center_equator,strip_top,strip_bottom):
   SceneObject.__init__(self,Point3D(),GL_SMOOTH,True)
   self.diameter = diameter
   self.center_pole = center_pole
   self.center_equator = center_equator
   self.strip_top = strip_top
   self.strip_bottom = strip_bottom
   self.sphere = gluNewQuadric()
   gluQuadricTexture(self.sphere, GL_TRUE)
   gluQuadricNormals(self.sphere, GLU_SMOOTH)
Example #5
0
 def __init__(self, diameter, center_pole, center_equator, strip_top,
              strip_bottom):
     SceneObject.__init__(self, Point3D(), GL_SMOOTH, True)
     self.diameter = diameter
     self.center_pole = center_pole
     self.center_equator = center_equator
     self.strip_top = strip_top
     self.strip_bottom = strip_bottom
     self.sphere = gluNewQuadric()
     gluQuadricTexture(self.sphere, GL_TRUE)
     gluQuadricNormals(self.sphere, GLU_SMOOTH)
Example #6
0
 def __init__(self, a, b, c, d, height, yawAngle, pitchAngle, fov=68.2, aspectRatio=0.75):  # Projectors
     SceneObject.__init__(self, Point3D(), GL_FLAT, False)
     self.a = a
     self.b = b
     self.c = c
     self.d = c
     self.yawAngle = yawAngle
     self.pitchAngle = pitchAngle
     self.aspectRatio = aspectRatio
     self.fov = fov
     self.height = height
     self.draw = True
Example #7
0
 def __init__(self, material: Material, vertex1: Point3D, vertex2: Point3D,
              vertex3: Point3D):
     SceneObject.__init__(self, material)
     self.vertex1 = vertex1
     self.vertex2 = vertex2
     self.vertex3 = vertex3
     self.center = Point3D((self.vertex1.vector.x + self.vertex2.vector.x +
                            self.vertex3.vector.x) / 3,
                           (self.vertex1.vector.y + self.vertex2.vector.y +
                            self.vertex3.vector.y) / 3,
                           (self.vertex1.vector.z + self.vertex2.vector.z +
                            self.vertex3.vector.z) / 3)
Example #8
0
    def __init__(self, imageSrc, **kwArgs):
        super().__init__(**kwArgs)

        #	Set Image/Animation
        if isinstance(imageSrc, Animation):
            self._animation = AnimationState(imageSrc)
            self._texture = self._animation.getImage().get_texture()
        else:
            self._animation = None
            self._texture = imageSrc.get_texture()

        #	Create the Scene Object representation
        self._sceneObject = SceneObject(dataSrc = DiscreteRect(self._texture.width, self._texture.height),	\
         t=self.getTransform(), ed=[('t3f', self._texture.tex_coords)], batch=kwArgs.get('batch', None), group=kwArgs.get('group', None))
        self._sceneObject.isDrawn = False
Example #9
0
 def addItem(self):
     """
     Adds Arbitrary items to 3dMap Viewport
     :return: 
     """
     arr = self.sphereMesh
     sceneObject = SceneObject(Vec3(0, 0, 0), arr[0], arr[1], arr[2],
                               [0, 0, 1, 1])
     self._viewportWidget.addItem(sceneObject.object)
Example #10
0
 def addWaypoint(self, pos, passed):
     """
     Adds a new Waypoint to the Waypoint Map
     :param pos: Position of waypoint.
     :param passed: Flag of whether Waypoint was passed or not. 
     :return: 
     """
     mesh = self.sphereMesh
     self.waypointList.append(
         SceneObject(pos, mesh[0], mesh[1], mesh[2], [1, 0, 0, 1], 1))
Example #11
0
class Sprite(Transformable):

	def __init__(self, imageSrc, **kwArgs):
		super().__init__(**kwArgs)

		#	Set Image/Animation
		if isinstance(imageSrc, Animation):
			self._animation = AnimationState(imageSrc)
			self._texture = self._animation.getImage().get_texture()
		else:
			self._animation = None
			self._texture = imageSrc.get_texture()
			
		#	Create the Scene Object representation
		self._sceneObject = SceneObject(dataSrc = DiscreteRect(self._texture.width, self._texture.height),	\
			t=self.getTransform(), ed=[('t3f', self._texture.tex_coords)], batch=kwArgs.get('batch', None), group=kwArgs.get('group', None))
		self._sceneObject.isDrawn = False
		
	''''''''''''''''''''''''''''''''''''''''''''''''''''''
	
	def update(self, dt):
		if self._animation and self._animation.update(dt):
			self._texture = self._animation.getImage().get_texture()
	
	def draw(self):
		glBindTexture(self._texture.target, self._texture.id)
		glEnable(self._texture.target)
		
		self._sceneObject.draw()
		
		glDisable(self._texture.target)

	
	''''''''''''''''''''''''''''''''''''''''''''''''''''''''
	
	def getImage(self):
		return self._texture
		
	def setAnimation(self, animState):
		self._animation.setState(animState)
	def getAnimation(self):
		return self._animation
Example #12
0
class Entity(Transformable):
	
	def __init__(self, sprite, **kwArgs):
		super().__init__(**kwArgs)

		self._sprite = sprite
		self._sprite.setTransform(self.getTransform().createChild())
		
		self._collider = CollisionRect(self._sprite.getImage().width, self._sprite.getImage().height, t=self.getTransform().createChild())
		self._collider.addListener(self)
		
		self._boundsDisplay = SceneObject(dataSrc = self._collider, t=self._collider.getTransform(), color=Color.Green, \
			batch=pyglet.graphics.Batch(), group=LinePolygonMode)
		
		
	''''''''''''''''''''''''''''''''''''''''''''''''''
	
	def update(self, dt):
		if self._sprite.update(dt):
			self._updateDimensions()			
		self._collider.update(dt)


	def _updateDimensions(self):
		w, h = self._sprite.getDimensions()
		self._collider.resize(w, h)

	
	''''''''''''''''''''''''''''''''''''''''''''''''''
	
	def notifyCollisions(self, colliderObj, otherColliders):
		if self._boundsDisplay:
			if otherColliders:
				self._boundsDisplay.setColor(Color.Red)
			else:
				self._boundsDisplay.setColor(Color.Green)


	''''''''''''''''''''''''''''''''''''''''''''''''''
	
	def getSprite(self):
		return self._sprite
Example #13
0
	def __init__(self, sprite, **kwArgs):
		super().__init__(**kwArgs)

		self._sprite = sprite
		self._sprite.setTransform(self.getTransform().createChild())
		
		self._collider = CollisionRect(self._sprite.getImage().width, self._sprite.getImage().height, t=self.getTransform().createChild())
		self._collider.addListener(self)
		
		self._boundsDisplay = SceneObject(dataSrc = self._collider, t=self._collider.getTransform(), color=Color.Green, \
			batch=pyglet.graphics.Batch(), group=LinePolygonMode)
Example #14
0
class Sprite(Transformable):
    def __init__(self, imageSrc, **kwArgs):
        super().__init__(**kwArgs)

        #	Set Image/Animation
        if isinstance(imageSrc, Animation):
            self._animation = AnimationState(imageSrc)
            self._texture = self._animation.getImage().get_texture()
        else:
            self._animation = None
            self._texture = imageSrc.get_texture()

        #	Create the Scene Object representation
        self._sceneObject = SceneObject(dataSrc = DiscreteRect(self._texture.width, self._texture.height),	\
         t=self.getTransform(), ed=[('t3f', self._texture.tex_coords)], batch=kwArgs.get('batch', None), group=kwArgs.get('group', None))
        self._sceneObject.isDrawn = False

    '''''' '''''' '''''' '''''' '''''' '''''' '''''' '''''' ''''''

    def update(self, dt):
        if self._animation and self._animation.update(dt):
            self._texture = self._animation.getImage().get_texture()

    def draw(self):
        glBindTexture(self._texture.target, self._texture.id)
        glEnable(self._texture.target)

        self._sceneObject.draw()

        glDisable(self._texture.target)

    '''''' '''''' '''''' '''''' '''''' '''''' '''''' '''''' '''''' ''

    def getImage(self):
        return self._texture

    def setAnimation(self, animState):
        self._animation.setState(animState)

    def getAnimation(self):
        return self._animation
Example #15
0
 def __init__(
         self,
         a,
         b,
         c,
         d,  # Projectors
         height,
         yawAngle,
         pitchAngle,
         fov=68.2,
         aspectRatio=0.75):
     SceneObject.__init__(self, Point3D(), GL_FLAT, False)
     self.a = a
     self.b = b
     self.c = c
     self.d = c
     self.yawAngle = yawAngle
     self.pitchAngle = pitchAngle
     self.aspectRatio = aspectRatio
     self.fov = fov
     self.height = height
     self.draw = True
Example #16
0
	def __init__(self, ship, screenPos):
		super().__init__()
		
		sg = Renderer.activeRenderer.getSceneGraph()
		
		self._ship = ship
		self._maxHealth = ship._health
		self._screenPos = screenPos
		
		tNode = sg.newTransform(t=vec(-280, screenPos*(-300+25)))
		self._barFill = SceneObject(dataSrc = DiscreteRect(200, h=20), t=tNode, 
			color = Color.Green)
		self._border = SceneObject(dataSrc = DiscreteRect(w=200, h=20), t=tNode,	\
			color = Color.Grey, batch=pyglet.graphics.Batch(), group = LinePolygonMode)
Example #17
0
	def __init__(self, imageSrc, **kwArgs):
		super().__init__(**kwArgs)

		#	Set Image/Animation
		if isinstance(imageSrc, Animation):
			self._animation = AnimationState(imageSrc)
			self._texture = self._animation.getImage().get_texture()
		else:
			self._animation = None
			self._texture = imageSrc.get_texture()
			
		#	Create the Scene Object representation
		self._sceneObject = SceneObject(dataSrc = DiscreteRect(self._texture.width, self._texture.height),	\
			t=self.getTransform(), ed=[('t3f', self._texture.tex_coords)], batch=kwArgs.get('batch', None), group=kwArgs.get('group', None))
		self._sceneObject.isDrawn = False
Example #18
0
 def setWaypoint(self, waypointInfo):
     """
     Adds waypoint if waypoint is not present.
     :param waypointInfo: 
     :return: 
     """
     if not waypointInfo.name in self.waypointList.keys():
         pos = Vec3(waypointInfo.generalWaypoint[0],
                    waypointInfo.generalWaypoint[1],
                    waypointInfo.generalWaypoint[2])
         orientation = Vec3(waypointInfo.generalWaypoint[3],
                            waypointInfo.generalWaypoint[4],
                            waypointInfo.generalWaypoint[5])
         #orientation = Vec3(0, 0, 0)
         mesh = self.sphereMesh
         col = []
         if waypointInfo.reachedGeneralWaypoint is True:
             col = [1, 0, 0, 1]
         else:
             col = [1, 1, 0, 1]
         self.waypointList[waypointInfo.name] = SceneObject(
             pos, mesh[0], mesh[1], mesh[2], col, 1)
         self.waypointList[waypointInfo.name].setOrientation(orientation)
         self.addItem(self.waypointList[waypointInfo.name].object)
Example #19
0
 def __init__(self, material:Material, center:Point3D, radius:float):
     SceneObject.__init__(self, material)
     self.center = center
     self.radius = radius
Example #20
0
def Main(cgnsMeshFileName):

	app = App()
	#app.MainLoop()
	#return

	style = vtk.vtkInteractorStyleTrackballCamera()
	Roster.RenderWindow.GetInteractor().SetInteractorStyle(style)

	"""
	picker = vtk.vtkPropPicker()
	picker.AddObserver("EndPickEvent", PickEventCallback)
	Roster.RenderWindow.GetInteractor().SetPicker(picker)
	"""

	axesActor = vtk.vtkAxesActor()
	markerWidget = vtk.vtkOrientationMarkerWidget()
	markerWidget.SetOrientationMarker(axesActor)
	markerWidget.SetInteractor(Roster.RenderWindow.GetInteractor())

	if cgnsMeshFileName != None:
		cgnsf = CGNSFile.CGNSFile(cgnsMeshFileName)
		zones = cgnsf.ReadZones()
		Roster.Zones = zones

		#ren = vtk.vtkRenderer()
		ren = Roster.Renderer

		B = 1
		for zone in zones:

			xyz = cgnsf.ReadZoneCoord(B, zone["Zone"])

			for boco in zone["Bocos"]:
				if Roster.FindPatchByName(boco["Name"]) != None:
					RenamePatch(boco)
				r = CanonizeRange(boco["Range"])
				xyz2 = xyz[:, r[0] - 1:r[3], r[1] - 1:r[4], r[2] - 1:r[5]]
				xyzCoarse = CoarsenPatchMesh(xyz2)
				so = SceneObject(xyzCoarse)
				actors = so.ActorSurface, so.ActorOutline
				actors[0].GetProperty().SetColor(1.0, 1.0, 1.0)
				for actor in actors:
					ren.AddActor(actor)
				#Roster.Patches.append([zone, boco, actors])
				Roster.RegisterPatch(zone, boco, actors)

			if True:
				for c1to1 in zone["1to1s"]:
					if not c1to1.IsPeriodic():
						continue
					if Roster.FindPatchByName(c1to1["Name"]) != None:
						RenamePatch(c1to1)
						"""
						for i in range(2,100):
							candidateName = "%s_%d" % (c1to1["Name"], i)
							if Roster.FindPatchByName(candidateName) == None:
								print "Duplicate patch %s was renamed to %s" % (c1to1["Name"], candidateName)
								c1to1["Name"] = candidateName
								break
						"""
					r = CanonizeRange(c1to1["Range"])
					xyz2 = xyz[:, r[0] - 1:r[3], r[1] - 1:r[4], r[2] - 1:r[5]]
					xyzCoarse = CoarsenPatchMesh(xyz2)
					so = SceneObject(xyzCoarse)
					actors = so.ActorSurface, so.ActorOutline
					actors[0].GetProperty().SetColor(0.0, 0.0, 1.0)
					for actor in actors:
						ren.AddActor(actor)
					Roster.RegisterPatch(zone, c1to1, actors)

			del xyz

	markerWidget.SetEnabled(True)
	markerWidget.InteractiveOn()

	Roster.RosterModified()

	app.MainLoop()
Example #21
0
File: SOTest.py Project: msarch/py
from DiscretePrimitives import *
from Vector import vec

#-------------------------------------------------------#

window = pyglet.window.Window(800, 600)
winDimensions = [800, 600]

rendMan = Renderer(winSize=winDimensions)
sg = rendMan.getSceneGraph()

so1 = SceneObject(
    t=sg.newTransform(t=vec(150, 0)),
    vs=[vec(-100, -100),
        vec(100, -100),
        vec(100, 100),
        vec(-100, 100)],
    ds=GL_LINES,
    vis=(0, 1, 1, 2, 2, 3, 3, 0),
    cs=Color.Purple + Color.Blue + Color.Orange + Color.Green)
so2 = SceneObject(t=so1.getTransform().createChild(),
                  dataSrc=DiscreteRect(10, 50))
so3 = SceneObject(t=sg.newTransform(),
                  numVerts=3,
                  drawStyle=GL_TRIANGLES,
                  explicitData=[('v2f/static', [-30, -30, 30, -30, 0, 30])])


def update(dt):
    so2.rotate(.005)
Example #22
0
from Renderer import Renderer
from TransformationGraph import Transform

from SceneObject import SceneObject
from DiscretePrimitives import *
from Vector import vec

#-------------------------------------------------------#	

window 			= pyglet.window.Window(800, 600)
winDimensions 	= [800, 600]

rendMan = Renderer(winSize=winDimensions)
sg = rendMan.getSceneGraph()

so1 = SceneObject(t=sg.newTransform(t=vec(150,0)), vs=[vec(-100,-100), vec(100,-100), vec(100,100), vec(-100,100)], ds=GL_LINES,
	vis = (0, 1, 1, 2, 2, 3, 3, 0),	cs = Color.Purple+Color.Blue+Color.Orange+Color.Green)
so2 = SceneObject(t=so1.getTransform().createChild(), dataSrc=DiscreteRect(10, 50))
so3 = SceneObject(t=sg.newTransform(), numVerts=3, drawStyle=GL_TRIANGLES, explicitData=[('v2f/static', [-30, -30, 30, -30, 0, 30])])


def update(dt):
	so2.rotate(.005)
	
@window.event
def on_draw():
	window.clear()
	rendMan.render()

pyglet.clock.schedule(update)
pyglet.app.run()
Example #23
0
    def __init__(self, *args, **kwargs):
        window.Window.__init__(self, *args, **kwargs)
        self.scene_objects = []
        self.mouse_position = (0,0)
        obj1 = SceneObject()
        
        obj1.addCollisionTriangle(0,0,40,40,40,0)
        obj1.addCollisionTriangle(40,40,70,60,20,90)
        obj1.addCollisionTriangle(0,0,40,40,40,0)
        #obj1.addCollisionTriangle(0,0,1,1,0,1)
        obj1.setPosition((100,100))
        obj1.name = "Smiley Tile"
        obj1.loadImage("tile1.png")

        obj2 = SceneObject()
        obj2.addCollisionTriangle(1,1,600,1,600,20)
        obj2.addCollisionTriangle(1,1,1,20,600,20)
        obj2.addCollisionTriangle(1,400,600,400,600,380)
        obj2.addCollisionTriangle(1,400,1,380,600,380)
        

        obj2.addCollisionTriangle(0,0,0,400,20,400)
        obj2.addCollisionTriangle(0,0,20,0,20,400)
        obj2.addCollisionTriangle(600,0,600,400,580,400)
        obj2.addCollisionTriangle(600,0,580,0,580,400)
        
        obj2.setPosition((0,0))
        obj2.name = "Green Border"
        obj2.loadImage("tile2.png")

        obj3 = SceneObject()
        obj3.addCollisionTriangle(0,0,40,80,0,80)
        obj3.addCollisionTriangle(0,0,40,80,40,0)
        obj3.setPosition((610,150))
        obj3.name = "Red Spotty"
        obj3.loadImage("tile3.png")

        self.scene_objects.append(obj1)
        self.scene_objects.append(obj2)
        self.scene_objects.append(obj3)