forked from Schwarzbaer/friction_zero
-
Notifications
You must be signed in to change notification settings - Fork 0
/
testsequence.py
57 lines (42 loc) · 1.44 KB
/
testsequence.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
import sys
from direct.showbase.ShowBase import ShowBase
from direct.actor.Actor import Actor
from panda3d.core import DirectionalLight, KeyboardButton, SequenceNode
s = ShowBase()
s.accept('escape', sys.exit)
s.cam.setPos(0, -5, 5)
s.cam.lookAt(0, 0, 0)
a = Actor('assets/cars/Ricardeaut_Magnesium.bam')
a.reparentTo(s.render)
puppet = s.loader.loadModel('assets/cars/Ricardeaut_Magnesium.bam')
puppet.find("armature").hide()
puppet.reparentTo(a)
beam = s.loader.loadModel('assets/effect/beam.bam')
# convert all nodes called "sequence_node:N" into a SequenceNode
sequence_nodes = beam.findAllMatches("**/sequence_node:*")
for sequence_node in sequence_nodes:
framerate = sequence_node.get_tag("sequence_fps")
SequenceNode("sequence").replace_node(sequence_node.node())
sequence_node.node().setFrameRate(int(framerate))
sequence_node.node().loop(1)
# instance the animated beam to all fz_beam nodes (just one for magnesium)
beam_nodes = a.findAllMatches("**/*fz_beam*")
beams = []
for beam_node in beam_nodes:
beams.append(beam.instanceTo(beam_node))
thrust = 0
def update(task):
global thrust
if thrust > 0:
thrust -= 1
if s.mouseWatcherNode.is_button_down(KeyboardButton.space()):
if thrust < 15:
thrust += 2
for beam in beams:
beam.setScale(thrust/8)
return task.cont
s.taskMgr.add(update)
l = DirectionalLight("light")
ln = render.attachNewNode(l)
render.setLight(ln)
s.run()