fireclawthefox / nodeeditor Goto Github PK
View Code? Open in Web Editor NEWA simple generic Node Editor written with python and Panda3D
License: BSD 2-Clause "Simplified" License
A simple generic Node Editor written with python and Panda3D
License: BSD 2-Clause "Simplified" License
If a node is below the e.g. ask for override on save, the yes / no buttons can not be clicked.
Add a node that can be opened/expanded and contains sub-logic
Input and output will be defined by specific new input and output defining nodes
File extension could be .logic or .nodes
A new dialog which can be called by the menu or a key combination that lists all available nodes with some details and is searchable. When a node from the dialog is chosen, it should be placed just as it was created from the menu.
To make nodes more visible even with lots of connections, the connection lines should always be behind the nodes
When you make a cycle of nodes (connecting two nodes to eachother into a cycle) the editor crashes:
Traceback (most recent call last):
File "/home/tuvok/Panda3d/FRAME/NodeEditor/main.py", line 52, in <module>
base.run()
File "/home/tuvok/Blender/3.1/python/lib/python3.10/site-packages/direct/showbase/ShowBase.py", line 3328, in run
self.taskMgr.run()
File "/home/tuvok/Blender/3.1/python/lib/python3.10/site-packages/direct/task/Task.py", line 553, in run
self.step()
File "/home/tuvok/Blender/3.1/python/lib/python3.10/site-packages/direct/task/Task.py", line 504, in step
self.mgr.poll()
File "/home/tuvok/Blender/3.1/python/lib/python3.10/site-packages/direct/showbase/EventManager.py", line 49, in eventLoopTask
self.doEvents()
File "/home/tuvok/Blender/3.1/python/lib/python3.10/site-packages/direct/showbase/EventManager.py", line 43, in doEvents
processFunc(dequeueFunc())
File "/home/tuvok/Blender/3.1/python/lib/python3.10/site-packages/direct/showbase/EventManager.py", line 99, in processEvent
messenger.send(eventName, paramList)
File "/home/tuvok/Blender/3.1/python/lib/python3.10/site-packages/direct/showbase/Messenger.py", line 337, in send
self.__dispatch(acceptorDict, event, sentArgs, foundWatch)
File "/home/tuvok/Blender/3.1/python/lib/python3.10/site-packages/direct/showbase/Messenger.py", line 422, in __dispatch
result = method (*(extraArgs + sentArgs))
File "/home/tuvok/Panda3d/FRAME/NodeEditor/Panda3DNodeEditor/NodeCore/Sockets/SocketBase.py", line 70, in endPlug
base.messenger.send("connectPlugs")
File "/home/tuvok/Blender/3.1/python/lib/python3.10/site-packages/direct/showbase/Messenger.py", line 337, in send
self.__dispatch(acceptorDict, event, sentArgs, foundWatch)
File "/home/tuvok/Blender/3.1/python/lib/python3.10/site-packages/direct/showbase/Messenger.py", line 422, in __dispatch
result = method (*(extraArgs + sentArgs))
File "/home/tuvok/Panda3d/FRAME/NodeEditor/Panda3DNodeEditor/NodeCore/NodeManager.py", line 276, in connectPlugs
self.updateConnectedNodes(outSocketNode)
File "/home/tuvok/Panda3d/FRAME/NodeEditor/Panda3DNodeEditor/NodeCore/NodeManager.py", line 326, in updateConnectedNodes
self.__updateConnectedNodes(leaveNode)
File "/home/tuvok/Panda3d/FRAME/NodeEditor/Panda3DNodeEditor/NodeCore/NodeManager.py", line 337, in __updateConnectedNodes
self.__updateConnectedNodes(connector.socketB.node)
File "/home/tuvok/Panda3d/FRAME/NodeEditor/Panda3DNodeEditor/NodeCore/NodeManager.py", line 337, in __updateConnectedNodes
self.__updateConnectedNodes(connector.socketB.node)
File "/home/tuvok/Panda3d/FRAME/NodeEditor/Panda3DNodeEditor/NodeCore/NodeManager.py", line 337, in __updateConnectedNodes
self.__updateConnectedNodes(connector.socketB.node)
[Previous line repeated 972 more times]
File "/home/tuvok/Panda3d/FRAME/NodeEditor/Panda3DNodeEditor/NodeCore/NodeManager.py", line 336, in __updateConnectedNodes
connector.socketB.node.logic()
File "/home/tuvok/Panda3d/FRAME/NodeEditor/Panda3DNodeEditor/NodeCore/Nodes/TestOutNode.py", line 38, in logic
self.inputList[0].text["text"] = str(self.inputList[0].getValue())
File "/home/tuvok/Blender/3.1/python/lib/python3.10/site-packages/direct/gui/DirectGuiBase.py", line 446, in __setitem__
self.configure(**{key: value})
File "/home/tuvok/Blender/3.1/python/lib/python3.10/site-packages/direct/gui/DirectGuiBase.py", line 442, in configure
func()
File "/home/tuvok/Blender/3.1/python/lib/python3.10/site-packages/direct/gui/DirectFrame.py", line 99, in setText
self[component + '_text'] = text
File "/home/tuvok/Blender/3.1/python/lib/python3.10/site-packages/direct/gui/DirectGuiBase.py", line 446, in __setitem__
self.configure(**{key: value})
File "/home/tuvok/Blender/3.1/python/lib/python3.10/site-packages/direct/gui/DirectGuiBase.py", line 435, in configure
func(**options)
File "/home/tuvok/Blender/3.1/python/lib/python3.10/site-packages/direct/gui/OnscreenText.py", line 553, in configure
setter(value)
File "/home/tuvok/Blender/3.1/python/lib/python3.10/site-packages/direct/gui/OnscreenText.py", line 285, in setText
if sys.version_info >= (3, 0):
RecursionError: maximum recursion depth exceeded in comparison
The easy way out is to disallow cyclic structures and stick to a tree structure (blender colors one connection line red).
For things like a non-linear story editor, having cyclic nodes would be very interesting.
Sometimes the box selection selects all nodes sometimes only a part of the to be selected nodes
If the filebrowser for saving or loading is opened after the project has been saved or loaded, it should show the last entered path and filename.
Add a tab bar and the ability to load multiple project files
Currently the save status check only checks for if there are nodes in the editor or not. This should check if the project has been saved and actual changes have been made to the nodes.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.