Attachment 'hprtest.py'
Download 1 import direct.directbase.DirectStart #Initialize Panda and create a window
2 from pandac.PandaModules import * #Contains most of Panda's modules
3 from direct.gui.DirectGui import * #Imports Gui objects we use for putting
4 from direct.task import Task
5 from direct.showbase.DirectObject import DirectObject
6
7 import sys, pdb
8 def addTitle(text):
9 return OnscreenText(text=text, style=1, fg=(1,1,1,1),
10 pos=(1.3,-0.95), align=TextNode.ARight, scale = .07)
11
12
13 class World(DirectObject): #Our main class
14 def __init__(self): #The initialization method caused when a
15 self.mytext = OnscreenText("Panda3D: Tutorial 1 - Solar System",
16 style=1, fg=(1,1,1,1), pos=(0.8,-0.95), scale = .07)
17 base.setBackgroundColor(0, 0, 0)
18
19 base.disableMouse()
20
21 camera.setPos ( 0, 0, 45 )
22
23 camera.setHpr ( 0, -90, 0 )
24
25 self.sizescale = 2
26 self.prevtime = 0
27 self.sun = loader.loadModelCopy("models/planet_sphere")
28 #Now we repeat our other steps
29 self.sun.reparentTo(render)
30 self.sun_tex = loader.loadTexture("models/sun_1k_tex.jpg")
31 self.sun.setTexture(self.sun_tex, 1)
32 self.sun.setScale(2 * self.sizescale) #The sun is really much bigger than
33
34 self.accept("h", self.controlFun, ["h",True])
35 self.accept("h-up", self.controlFun, ["h",False])
36 self.accept("p", self.controlFun, ["p",True])
37 self.accept("p-up", self.controlFun, ["p",False])
38 self.accept("r", self.controlFun, ["r",True])
39 self.accept("r-up", self.controlFun, ["r",False])
40
41
42 self.kDown = {"h":False, "p":False, "r":False}
43 taskMgr.add(self.move,"cameraMoveTask")
44
45
46 def move(self, task):
47 elapsed = task.time - self.prevtime
48 speed = 60
49 if self.kDown['h']:
50 self.sun.setH(self.sun.getH() + (elapsed*speed))
51 if self.kDown['p']:
52 self.sun.setP(self.sun.getP() + (elapsed*speed))
53 if self.kDown['r']:
54 self.sun.setR(self.sun.getR() + (elapsed*speed))
55 self.prevtime = task.time
56 return Task.cont
57
58 def controlFun(self, key, bDown):
59 self.kDown[key] = bDown
60
61
62 w = World()
63 #As usual - run() must be called before anything can be shown on screen
64 run()
Attached Files
To refer to attachments on a page, use attachment:filename, as shown below in the list of files. Do NOT use the URL of the [get] link, since this is subject to change and can break easily.You are not allowed to attach a file to this page.