~fireclawthefox/panda3dcodecollection/trunk

« back to all changes in this revision

Viewing changes to character/extended Char controller/demo.py

  • Committer: Fireclaw the Fox
  • Date: 2016-12-07 22:29:15 UTC
  • Revision ID: fireclawthefox@gmail.com-20161207222915-0fpexwjrwn46dh83
Bugfixes and new Features

Improved third person camera handling
Add camera system switch function
Fix for tiny panda renderer users
Added time to allow jump after fall
Critical performance improvement
Some work on bullet integration (still early WIP)
Made upward (front collision) wall run highest prio check instead of left wall run
Some minor cleanup
Updated INFO file

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
from panda3d.physics import ForceNode, LinearVectorForce
25
25
from direct.interval.IntervalGlobal import Sequence, Wait
26
26
from PlayerController import PlayerController
 
27
from Config import USEBULLET, USEINTERNAL
27
28
 
28
29
__author__ = "Fireclaw the Fox"
29
30
__license__ = """
54
55
        self.accept("f1", self.toggleDebug)
55
56
        self.accept("r", self.resetPlayer)
56
57
        self.accept("p", self.togglePause)
 
58
        self.accept("f2", self.toggleCamera)
57
59
        self.disableMouse()
58
60
 
59
61
        #
80
82
        #
81
83
        # SIMPLE PHYSICS SETUP
82
84
        #
83
 
        self.useBullet = False
84
 
        self.useInternal = True
 
85
        self.useBullet = USEBULLET
 
86
        self.useInternal = USEINTERNAL
85
87
        self.debugactive = True
86
88
        #
87
89
        # BULLET
100
102
            debugNP.show()
101
103
            self.world.setDebugNode(debugNode)
102
104
            shape = BulletPlaneShape(Vec3(0, 0, 0), 1)
103
 
            node = BulletRigidBodyNode('Ground')
 
105
            node = BulletRigidBodyNode("Ground")
104
106
            node.addShape(shape)
105
107
            np = render.attachNewNode(node)
106
108
            np.setPos(0, 0, -2)
107
 
            #self.world.attachRigidBody(node)
 
109
            self.world.attachRigidBody(node)
108
110
            self.__taskName = "task_physicsUpdater_Bullet"
109
111
            taskMgr.add(self.updatePhysicsBullet, self.__taskName, priority=-20)
110
112
        #
200
202
        self.p.setStartPos(self.level.find("**/StartPos").getPos())
201
203
        self.p.setStartHpr(self.level.find("**/StartPos").getHpr())
202
204
        self.p.camera_handler.centerCamera()
203
 
        
 
205
 
204
206
    def togglePause(self):
205
207
        if self.pause:
206
208
            self.p.resumePlayer()
207
209
        else:
208
210
            self.p.pausePlayer()
209
211
        self.pause = not self.pause
210
 
        
 
212
 
 
213
    def toggleCamera(self):
 
214
        if self.p.first_pserson_mode:
 
215
            self.p.changeCameraSystem("thirdperson")
 
216
        else:
 
217
            self.p.changeCameraSystem("firstperson")
211
218
 
212
219
    def debugOSDUpdater(self, task):
213
220
        """Update the OSD with constantly changing values"""