예제 #1
0
class SocketBase:
    def __init__(self, node, name):
        self.socketID = uuid4()
        self.node = node
        self.name = name
        self.height = 0.2
        self.type = None
        self.value = None
        self.connected = False

    def getValue(self):
        """Returns a string serializable value stored in this node"""
        return self.value

    def setValue(self, value):
        self.value = value

    def createPlug(self, parent):
        self.plug = DirectFrame(
            state=DGG.NORMAL,
            frameColor=(0, 0, 0, 1),
            frameSize=(-0.05, 0.05, -0.05, 0.05),
            parent=parent,
        )
        self.setupBind()

    def setupBind(self):
        self.plug.bind(DGG.B1PRESS, self.startPlug)
        self.plug.bind(DGG.B1RELEASE, self.releasePlug)
        self.plug.bind(DGG.ENTER, self.endPlug)

    def startPlug(self, event):
        base.messenger.send("startPlug", [self])
        base.messenger.send("startLineDrawing", [self.plug.getPos(render2d)])

    def endPlug(self, event):
        taskMgr.remove("delayedPlugRelease")
        base.messenger.send("endPlug", [self])
        base.messenger.send("connectPlugs")

    def releasePlug(self, event):
        base.messenger.send("stopLineDrawing")
        taskMgr.doMethodLater(0.2,
                              base.messenger.send,
                              "delayedPlugRelease",
                              extraArgs=["cancelPlug"])

    def updateConnectedNodes(self, *args):
        base.messenger.send("updateConnectedNodes", [self.node])

    def setConnected(self, connected):
        self.connected = connected
예제 #2
0
class SocketBase:
    def __init__(self, node, name):
        self.socketID = uuid4()
        self.node = node
        self.name = name
        self.height = 0.2
        self.type = None
        self.value = None
        self.connected = False
        self.frame = None
        self.allowMultiConnect = False

    def enable(self):
        """Enable any elements on the node"""
        pass

    def disable(self):
        """Disable any elements on the node that could possbily interfer with
        the mouse watcher and the drag/drop feature"""
        pass

    def getValue(self):
        """Returns a string serializable value stored in this node"""
        return self.value

    def setValue(self, value):
        self.value = value

    def createPlug(self, parent):
        self.plug = DirectFrame(
            state=DGG.NORMAL,
            image="icons/Plug.png",
            image_scale=.05,
            frameColor=(0, 0, 0, 0),
            frameSize=(-0.05, 0.05, -0.05, 0.05),
            parent=parent,
        )
        self.plug.setTransparency(TransparencyAttrib.M_multisample)
        self.setupBind()

    def setupBind(self):
        self.plug.bind(DGG.B1PRESS, self.startPlug)
        self.plug.bind(DGG.B1RELEASE, self.releasePlug)
        self.plug.bind(DGG.ENTER, self.endPlug)

    def startPlug(self, event):
        base.messenger.send("startPlug", [self])
        base.messenger.send("startLineDrawing", [self.plug.getPos(render2d)])

    def endPlug(self, event):
        taskMgr.remove("delayedPlugRelease")
        base.messenger.send("endPlug", [self])
        base.messenger.send("connectPlugs")

    def releasePlug(self, event):
        base.messenger.send("stopLineDrawing")
        taskMgr.doMethodLater(0.2,
                              base.messenger.send,
                              "delayedPlugRelease",
                              extraArgs=["cancelPlug"])

    def updateConnectedNodes(self, *args):
        base.messenger.send("updateConnectedNodes", [self.node])

    def setConnected(self, connected):
        self.connected = connected
        if self.connected:
            self.plug["image"] = "icons/PlugConnectedGood.png"
        else:
            self.plug["image"] = "icons/Plug.png"