-
Notifications
You must be signed in to change notification settings - Fork 0
/
game.py
74 lines (59 loc) · 2.59 KB
/
game.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
__author__ = 'Kamila'
#from panda3d.core import loadPrcFileData
#loadPrcFileData("", "want-directtools #t")
#loadPrcFileData("", "want-tk #t")
import direct.directbase.DirectStart
from direct.showbase.DirectObject import DirectObject
from pandac.PandaModules import ClockObject, CollisionHandlerEvent, CollisionTraverser, CollisionHandlerFloor
from pandac.PandaModules import PointLight, AmbientLight
from panda3d.core import LPoint3f, VBase4
from GameState import GameState
class ArkanoidGame(DirectObject):
__clock = ClockObject.getGlobalClock()
__collisionHandler = CollisionHandlerEvent()
__collisionFloorHandler = CollisionHandlerFloor()
__gameState = None
def __init__(self):
base.enableParticles()
base.cTrav = CollisionTraverser()
base.cTrav.setRespectPrevTransform(True)
self.setGravity()
self.setLight()
self.__collisionHandler.addInPattern('%fn-into-%in')
self.__collisionHandler.addInPattern('%fn-into')
self.__gameState = GameState(self, base)
def setGravity(self):
self.__collisionFloorHandler.setMaxVelocity(15)
self.__collisionFloorHandler.setOffset(1.0)
def setLight(self):
pLight = PointLight('pLight')
plnp = base.render.attachNewNode(pLight)
plnp.setPos(37, 10, 15)
alight = AmbientLight('alight')
alight.setColor(VBase4(0.2, 0.25, 0.25, 1))
alnp = base.render.attachNewNode(alight)
base.render.setLight(plnp)
base.render.setLight(alnp)
def loadModel(self, modelPath):
return base.loader.loadModel(modelPath)
def setModelTexture(self, model, modelTexturePath):
texture = base.loader.loadTexture(modelTexturePath)
model.setTexture(texture, 1)
def setColliderHandler(self, collider):
base.cTrav.addCollider(collider, self.__collisionHandler)
def addFloorColliders(self, ray, node):
self.__collisionFloorHandler.addCollider(ray, node)
def setFloorColliderHandler(self, collider):
base.cTrav.addCollider(collider, self.__collisionFloorHandler)
def defineIntoCollisionEventHandling(self, fromCNode, intoCNode, collisionHandling):
eventText = fromCNode + '-into-' + intoCNode
self.accept(eventText, collisionHandling)
def defineIntoCollisionEventHandlingFrom(self, fromCNode, collisionHandling):
eventText = fromCNode + '-into'
base.accept(eventText, collisionHandling)
def generateEvent(self, event, args):
base.messenger.send(event, args)
def getTime(self):
return self.__clock.getDt()
app = ArkanoidGame()
base.run()