import time

from direct.showbase.ShowBase import ShowBase
from direct.task import Task
from math import pi, factorial
from direct.actor.Actor import Actor
from direct.interval.IntervalGlobal import Sequence
from panda3d.core import Point3, KeyboardButton, CollisionSphere, CollisionNode, CollisionBox
from panda3d.core import CollisionTraverser, CollisionHandlerQueue
from panda3d.core import  Vec3
class MyApp(ShowBase):
    def __init__(self):
        ShowBase.__init__(self)
        self.taskMgr.add(self.update, "update")
        self.player = self.loader.loadModel("PERESONASH/persona.obj")
        self.player.reparentTo(self.render)
        self.player.setScale(0.5)
        self.player.setPos(0, 0, 0)
        self.player.setHpr(0, 90, 0)
        self.coconut = True
        self.keyMap = {
            "up": False,
            "down": False,
            "left": False,
            "right": False,
            "space": False
        }
        self.accept('w', self.updateKey, ["up", True])
        self.accept('w-up', self.updateKey, ["up", False])
        self.accept("s", self.updateKey, ["down", True])
        self.accept("s-up", self.updateKey, ["down", False])
        self.accept('a', self.updateKey, ["left", True])
        self.accept('a-up', self.updateKey, ["left", False])
        self.accept('d', self.updateKey, ["right", True])
        self.accept('d-up', self.updateKey, ["right", False])
        self.accept('space', self.updateKey, ["space", True])
        self.accept('space-up', self.updateKey, ["space", False])

    def updateKey(self, key, status):
        self.keyMap[key] = status

    def update(self, task):
        fps = task.time
        if self.keyMap["up"]:
            self.player.setPos(self.player.getPos() + Vec3(0, -1, 0))
        if self.keyMap["down"]:
            self.player.setPos(self.player.getPos() + Vec3(0, 1, 0))
        if self.keyMap["left"]:
            self.player.setPos(self.player.getPos() + Vec3(-1, 0, 0))
        if self.keyMap["right"]:
            self.player.setPos(self.player.getPos() + Vec3(1, 0, 0))
        if self.keyMap["space"]:
            if self.coconut == True:
            self.player.setPos(self.player.getPos() + Vec3(0, 0, 10))
        return Task.cont

app = MyApp()
app.run()