You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I've been developing the CyclopsLevelBuilder https://github.com/blackears/cyclopsLevelBuilder, which is mainly a suite of tools to make laying in levels easier. I'm finding this limiting at the moment and think adding an extension for tools would help.
At the moment, I'm defining my own custom node and then doing custom handling of user input events to provide a tool. While this mostly works, it has some drawbacks. First, Godot's manipulation tool is always drawn, even when my tool has no need for it. It would be nice to turn this off. It's also awkward to create tools that create new blocks. The button's iver retaed for drawing blocks only function when another block is already selected. I'd like to be able to provide these without the user having to select a block in the outliner first.
There are some graphics I need to update every time the viewport is refreshed. At the moment, I am only able to update my graphics state when I receive a user event, So updating my selection outline requires the user to keep jiggling the mouse over top of the viewport to generate an event so that I can update the outline object. I also need to draw my outline relative to the camera rather than the world, so if multiple viewports are visible, the outline is only drawn correctly in one of them.
I can't use the gizmos editor feature because he tools I'm creating are much more complex than what's provided by the gizmo API. The gizmos only give you a set of handles that you can drag in the viewport.
I'd like to recommend creating a separate Tool editor object that the plugin authors can create. This tool would be activated by a button press and would be presented alongside the move, rotate and scale tools in the viewport toolbar. In addition to receiving UI events, it would also receive a call every time the viewport is refreshed so that graphics that need to be drawn in camera space can be drawn. Also, when the user tool is active, the default manipulation gizmos will not be displayed.
It would also be helpful if there was some sort of immediate mode for drawing graphics - something akin to the 2D's _draw() method. But for 3D, you'd be able to just pass in a mesh object, a shader and a transform and have it drawn in the viewport right away rather than having to store it in a MeshInstance and add it to the tree first. This would make it much easier to draw content that only needs to be displayed in one specific viewport. It also avoid the need to place tool-only object in the scene tree. At the moment, I have to add all my tool visualization graphics to an Autoloaded scene and then wait for the next update to display them.
Here's a screenshot of a current dev branch. I've added a row of 'tool buttons' right below the regular buttons. Note that the selection of the block on the left in the top viewport is drawn incorrectly in the lower viewport. Also the translation gizmo is not used in this tool and I'd like to have a way to turn off its display.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
I've been developing the CyclopsLevelBuilder https://github.com/blackears/cyclopsLevelBuilder, which is mainly a suite of tools to make laying in levels easier. I'm finding this limiting at the moment and think adding an extension for tools would help.
At the moment, I'm defining my own custom node and then doing custom handling of user input events to provide a tool. While this mostly works, it has some drawbacks. First, Godot's manipulation tool is always drawn, even when my tool has no need for it. It would be nice to turn this off. It's also awkward to create tools that create new blocks. The button's iver retaed for drawing blocks only function when another block is already selected. I'd like to be able to provide these without the user having to select a block in the outliner first.
There are some graphics I need to update every time the viewport is refreshed. At the moment, I am only able to update my graphics state when I receive a user event, So updating my selection outline requires the user to keep jiggling the mouse over top of the viewport to generate an event so that I can update the outline object. I also need to draw my outline relative to the camera rather than the world, so if multiple viewports are visible, the outline is only drawn correctly in one of them.
I can't use the gizmos editor feature because he tools I'm creating are much more complex than what's provided by the gizmo API. The gizmos only give you a set of handles that you can drag in the viewport.
I'd like to recommend creating a separate Tool editor object that the plugin authors can create. This tool would be activated by a button press and would be presented alongside the move, rotate and scale tools in the viewport toolbar. In addition to receiving UI events, it would also receive a call every time the viewport is refreshed so that graphics that need to be drawn in camera space can be drawn. Also, when the user tool is active, the default manipulation gizmos will not be displayed.
It would also be helpful if there was some sort of immediate mode for drawing graphics - something akin to the 2D's _draw() method. But for 3D, you'd be able to just pass in a mesh object, a shader and a transform and have it drawn in the viewport right away rather than having to store it in a MeshInstance and add it to the tree first. This would make it much easier to draw content that only needs to be displayed in one specific viewport. It also avoid the need to place tool-only object in the scene tree. At the moment, I have to add all my tool visualization graphics to an Autoloaded scene and then wait for the next update to display them.
Here's a screenshot of a current dev branch. I've added a row of 'tool buttons' right below the regular buttons. Note that the selection of the block on the left in the top viewport is drawn incorrectly in the lower viewport. Also the translation gizmo is not used in this tool and I'd like to have a way to turn off its display.
Beta Was this translation helpful? Give feedback.
All reactions