コード例 #1
0
    def tick(self):
        t = time.time()
        if self.first:
            self.first = False
            self.ticks = 0
            self.start_time = t
            self.time = t
            self.eventfunc(bee.event("start"))

        self.eventfunc(bee.event("tick"))
        self.time = t
        self.ticks += 1
コード例 #2
0
ファイル: pacemaker_tick.py プロジェクト: agoose77/hivesystem
    def tick(self):
        current_time = time.time()

        if self.first:
            self.first = False
            self.ticks = 0
            self.start_time = current_time
            self.time = current_time
            self.eventfunc(bee.event("start"))

        while current_time - self.start_time > self.interval * self.ticks:
            self.eventfunc(bee.event("tick"))
            self.time = current_time
            self.ticks += 1
            current_time = time.time()
コード例 #3
0
    def run(self):
        import bge

        try:
            self.finished = False
            for f in self.startupfunctions:
                f()
            while not self.doexit:
                self.pacemaker.tick()
                self.on_tick()
                bge.logic.NextFrame()
                # time.sleep(0.005)
                comnr = 0
                while comnr < len(self._commands):
                    com = self._commands[comnr]
                    comnr += 1
                    for e in self._eventreaders:
                        e(event("command", com))
                        self.pacemaker.tick()
                        self.on_tick()
                        bge.logic.NextFrame()
                        #time.sleep(0.005)
                self._commands = []

        finally:
            self.cleanup()
コード例 #4
0
    def run(self):
        import bge

        try:
            self.finished = False
            for f in self.startupfunctions: f()
            while not self.doexit:
                self.pacemaker.tick()
                self.on_tick()
                bge.logic.NextFrame()
                # time.sleep(0.005)
                comnr = 0
                while comnr < len(self._commands):
                    com = self._commands[comnr]
                    comnr += 1
                    for e in self._eventreaders:
                        e(event("command", com))
                        self.pacemaker.tick()
                        self.on_tick()
                        bge.logic.NextFrame()
                        #time.sleep(0.005)
                self._commands = []

        finally:
            self.cleanup()
コード例 #5
0
ファイル: mousearea.py プロジェクト: agoose77/hivesystem
 def get_mousebutton_event(self, event):
     canvasx, canvasy = self.canvas_size()
     x, y = event[1]
     for areaname in reversed(self.areanames):
         area = self.areas[areaname]
         a = area.to_std(canvasx, canvasy)
         px = 2 * (x - a.x) / a.sizex - 1
         py = 2 * (y - a.y) / a.sizey - 1
         if px < -1 or px > 1:
             continue
         if py < -1 or py > 1:
             continue
         e = bee.event("mousearea", areaname, event[0], (px, py))
         self.send_event(e)
         break
コード例 #6
0
ファイル: mousearea.py プロジェクト: agoose77/hivesystem
 def get_mousebutton_event(self, event):
     canvasx, canvasy = self.canvas_size()
     x, y = event[1]
     for areaname in reversed(self.areanames):
         area = self.areas[areaname]
         a = area.to_std(canvasx, canvasy)
         px = 2 * (x - a.x) / a.sizex - 1
         py = 2 * (y - a.y) / a.sizey - 1
         if px < -1 or px > 1:
             continue
         if py < -1 or py > 1:
             continue
         e = bee.event("mousearea", areaname, event[0], (px, py))
         self.send_event(e)
         break
コード例 #7
0
ファイル: inputhandler.py プロジェクト: agoose77/hivesystem
    def send_input(self):
        import bge

        keys = bge.logic.keyboard.events
        pressed = [k for k in keys if keys[k] == bge.logic.KX_INPUT_JUST_ACTIVATED]
        for key in pressed:
            if key not in trans:
                continue
            if key in self.just_pressed:
                continue

            self.just_pressed.add(key)

            if key in self.just_released:
                self.just_released.remove(key)

            keyboard_event = event("keyboard", "keypressed", trans[key])
            self.broadcast_event(keyboard_event)

        released = [k for k in keys if keys[k] == bge.logic.KX_INPUT_JUST_RELEASED]
        for key in released:
            if key not in trans:
                continue

            if key in self.just_released:
                continue

            self.just_released.add(key)
            if key in self.just_pressed:
                self.just_pressed.remove(key)
            keyboard_event = event("keyboard", "keyreleased", trans[key])

            self.broadcast_event(keyboard_event)

        buttons = bge.logic.mouse.events
        but = {
            "LEFT": buttons[bge.logic.KX_MOUSE_BUT_LEFT],
            "MIDDLE": buttons[bge.logic.KX_MOUSE_BUT_MIDDLE],
            "RIGHT": buttons[bge.logic.KX_MOUSE_BUT_RIGHT]
        }
        for button in but:
            v = but[button]
            if v == bge.logic.KX_INPUT_JUST_ACTIVATED:
                if button in self.just_pressed:
                    continue

                self.just_pressed.add(button)
                if button in self.just_released:
                    self.just_released.remove(button)

                keyboard_event = event("mouse", "buttonpressed", button, self.get_mouse())
                self.broadcast_event(keyboard_event)

            elif v == bge.logic.KX_INPUT_JUST_RELEASED:
                if button in self.just_released:
                    continue

                self.just_released.add(button)
                if button in self.just_pressed:
                    self.just_pressed.remove(button)

                keyboard_event = event("mouse", "buttonreleased", button, self.get_mouse())
                self.broadcast_event(keyboard_event)

        # Mouse movement
        x, y = self.get_mouse()
        if x != self._last_x or y != self._last_y:
            keyboard_event = event("mouse", "move", (x, y))
            self.broadcast_event(keyboard_event)

        self._last_x, self._last_y = x, y
コード例 #8
0
ファイル: pacemaker_tick.py プロジェクト: agoose77/hivesystem
 def on_exit(self):
     self.eventfunc(bee.event("stop"))
コード例 #9
0
ファイル: inputhandler.py プロジェクト: agoose77/hivesystem
    def send_input(self):
        import bge

        keys = bge.logic.keyboard.events
        pressed = [
            k for k in keys if keys[k] == bge.logic.KX_INPUT_JUST_ACTIVATED
        ]
        for key in pressed:
            if key not in trans:
                continue
            if key in self.just_pressed:
                continue

            self.just_pressed.add(key)

            if key in self.just_released:
                self.just_released.remove(key)

            keyboard_event = event("keyboard", "keypressed", trans[key])
            self.broadcast_event(keyboard_event)

        released = [
            k for k in keys if keys[k] == bge.logic.KX_INPUT_JUST_RELEASED
        ]
        for key in released:
            if key not in trans:
                continue

            if key in self.just_released:
                continue

            self.just_released.add(key)
            if key in self.just_pressed:
                self.just_pressed.remove(key)
            keyboard_event = event("keyboard", "keyreleased", trans[key])

            self.broadcast_event(keyboard_event)

        buttons = bge.logic.mouse.events
        but = {
            "LEFT": buttons[bge.logic.KX_MOUSE_BUT_LEFT],
            "MIDDLE": buttons[bge.logic.KX_MOUSE_BUT_MIDDLE],
            "RIGHT": buttons[bge.logic.KX_MOUSE_BUT_RIGHT]
        }
        for button in but:
            v = but[button]
            if v == bge.logic.KX_INPUT_JUST_ACTIVATED:
                if button in self.just_pressed:
                    continue

                self.just_pressed.add(button)
                if button in self.just_released:
                    self.just_released.remove(button)

                keyboard_event = event("mouse", "buttonpressed", button,
                                       self.get_mouse())
                self.broadcast_event(keyboard_event)

            elif v == bge.logic.KX_INPUT_JUST_RELEASED:
                if button in self.just_released:
                    continue

                self.just_released.add(button)
                if button in self.just_pressed:
                    self.just_pressed.remove(button)

                keyboard_event = event("mouse", "buttonreleased", button,
                                       self.get_mouse())
                self.broadcast_event(keyboard_event)

        # Mouse movement
        x, y = self.get_mouse()
        if x != self._last_x or y != self._last_y:
            keyboard_event = event("mouse", "move", (x, y))
            self.broadcast_event(keyboard_event)

        self._last_x, self._last_y = x, y
コード例 #10
0
ファイル: blenderhive.py プロジェクト: agoose77/hivesystem
 def send_input(self):
     self.eventfunc(bee.event("send_input"))
コード例 #11
0
ファイル: inputhandler.py プロジェクト: agoose77/hivesystem
 def process_key(self, key):
     if key not in ascii_to_keycode: return
     keycode = ascii_to_keycode[key]
     e = event("keyboard", "keypressed", keycode)
     for t in self.targets: t.add_event(e)
コード例 #12
0
ファイル: blenderhive.py プロジェクト: agoose77/hivesystem
 def send_input(self):
     self.eventfunc(bee.event("send_input"))
コード例 #13
0
ファイル: inputhandler.py プロジェクト: agoose77/hivesystem
 def process_key(self, key):
     if key not in ascii_to_keycode: return
     keycode = ascii_to_keycode[key]
     e = event("keyboard", "keypressed", keycode)
     for t in self.targets:
         t.add_event(e)
コード例 #14
0
ファイル: inputhandler.py プロジェクト: agoose77/hivesystem
 def mousewheel(self, updown):
     e = event("mouse", "wheel", updown, self.get_mouse())
     for t in self.targets: t.add_event(e)
コード例 #15
0
ファイル: inputhandler.py プロジェクト: agoose77/hivesystem
 def mousebuttonreleased(self, button):
     e = event("mouse", "buttonreleased", button, self.get_mouse())
     for t in self.targets: t.add_event(e)
コード例 #16
0
ファイル: inputhandler.py プロジェクト: agoose77/hivesystem
 def keyreleased(self, key):
     e = event("keyboard", "keyreleased", key)
     for t in self.targets: t.add_event(e)