Exemple #1
0
    def __init__(self, name, filename, app=None, gui_thread=False):
        Piavca.TimeCallback.__init__(self, name)
        self.app = app
        self.gui_thread = gui_thread
        self.frame = None

        self.camera_pos = Piavca.Vec()
        self.camera_pitch = 0.0
        self.camera_yaw = 0.0

        loadDefaults()

        self.scripts = {}
        self.currentscript = {}
        self.starttimes = {}

        if pymediapresent or pyaudiopresent:
            self.soundEngine = SoundEngine()
        else:
            self.soundEngine = None

        inputfile = open(filename, "r")
        lines = inputfile.readlines()
        inputfile.close()
        gui_list = []
        for line in lines:
            line = line.strip()
            commentpos = line.find("#")
            if commentpos >= 0:
                line = line[:commentpos]
            line = line.split()
            print line
            if len(line) <= 0:
                continue
            if line[0] == "soundpack":
                if len(line) == 2:
                    spackname = line[1]
                else:
                    spackname = line[2]
                if self.soundEngine != None:
                    self.soundEngine.loadSounds(spackname)
                else:
                    print "could not load sound packs as audio playback is not supported, please install pyaudio or pymedia"
            elif line[0] == "expressions":
                importExpressionNames(line[1])
            elif line[0] == "joints":
                importJointNames(line[1])
            elif line[0] == "avatar":
                print "avatar", line[1]
                print "start loading avatar"
                avatar = Piavca.Avatar(line[1])
                print "finished loading avatar"
                i = 2
                while i < len(line):
                    if line[i] == "position" or line[i] == "pos":
                        pos = Piavca.Vec(float(line[i + 1]),
                                         float(line[i + 2]),
                                         float(line[i + 3]))
                        avatar.setRootPosition(pos)
                        i = i + 3
                    elif line[i] == "rotation" or line[i] == "rot":
                        angle = Piavca.degToRad(float(line[i + 1]))
                        axis = Piavca.Vec(float(line[i + 2]),
                                          float(line[i + 3]),
                                          float(line[i + 4]))
                        avatar.setRootOrientation(Piavca.Quat(angle, axis))
                        i = i + 4
                    i += 1
            elif line[0] == "motionpack":
                if len(line) == 2:
                    mpackname = line[1]
                else:
                    mpackname = line[2]
                print "motionpack", mpackname
                MotionFile.readMotionFile(mpackname)
            elif line[0] == "script":
                if len(line) == 2:
                    spackname = line[1]
                else:
                    spackname = line[2]
                print "script pack", spackname
                self.loadScripts(spackname)
            elif line[0] == "camera":
                if line[1] == "position":
                    self.camera_pos = Piavca.Vec(float(line[2]),
                                                 float(line[3]),
                                                 float(line[4]))
                elif line[1] == "vert_angle":
                    self.camera_pitch = Piavca.degToRad(float(line[2]))
                elif line[1] == "horiz_angle":
                    self.camera_yaw = Piavca.degToRad(float(line[2]))
                #elif line[1] == "rotation":
                #       s            	self.camera_ori = Piavca.Quat(float(line[2]), Piavca.Vec(float(line[3], float(line[4], lfloat(ine[5]))
            elif line[0] == "GUI":
                print "gui"
                gui_list.append(line[1])
            elif line[0] == "gui":
                print "gui"
                gui_list.append(line[1])

        for gui_name in gui_list:
            self.GUI(gui_name)

        self.thisown = 0
        Piavca.Core.getCore().registerCallback(self)