You're welcome. And yeah I always enjoyed Godot's UI system, so I'm happy to help improve it
You're welcome. And yeah I always enjoyed Godot's UI system, so I'm happy to help improve it
The PR is up now if you're interested
github.com/godotengine/...
Not sure how to do it for this one. Normal arrays have 1 property per item. So buttons were embedded inside it
But these arrays are like structs with multiple properties per item
So should it embed into the first property? Or do we add an extra area above, like with groups/subgroups
Probably not soon. But on the bright side, I'm currently working on bringing animated styleboxes to godot officially. I should be ready to submit a PR soon, and if it gets merged it can atleast enable transition animations
For the other features, I'll try reviving this plugin later on
The same is done to resources and scenes. The raw ".tres" and ".tscn" file contents have external paths labeled "[ext_resource]" or something
Finally there's the ".import" files for loading things like images
Redirect those and I think most typical scenes can load normally
In my version, when a global script is saved, it gets duplicated and saved into a hidden subfolder, but all it's "res://" paths are replaced with absolute paths
The unhidden version remains untouched, as the "uncompiled" version you work on
The modified script is what's loaded into other projects
Nice! Maybe I'll pick it back up someday too. But in the meantime I checked out the limitations you wrote, and I can address one of them which is loading with "res://", if you're interested
Thanks! Its nice to see someone else tackling this, since I've kinda abandoned my version π . If there's any pointers I can give let me know
#Godot Stylebox plugin update:
Added multi layer support, like CSS before and after styles, but with as many layers as you want!
Here's a demo with 3 extra layers on the hover style:
Using the RenderingServer however, we can spawn & draw to seperate canvas items, update them anytime, and free them independently of draw events
Tricky to get right, but worth it, as it also simplifies other planned features like "layers" (similar to css ::before and ::after)
A key part of the refactor was isolating rendering logic from the draw event. This was particularly important for exit animations
For example, ItemList only draws a stylebox for the currently hovered item, so any boxes exiting / animating out wouldnβt be drawn at all
#Godot Stylebox plugin update:
After refactoring, Iβve added enter & exit animations!
Nodes like Button already had a βnormalβ style to animate to & from, but nodes like ItemList didnβt. Now you can transition them too
(Also switched to Godotβs handy movie mode for 60fps clips + inputs at bottom)
Made a custom Godot mesh type called NinePatchMesh, which lets you resize any 3D mesh as though it were a UI panel. Great for making 3D UI, picture frames, computer monitors, TVs, etc. You can find it here if you wanna use it:
github.com/CozyCubeGame...
#GodotEngine #gamedev
All Godot needed was a passivestar
It's great until you get to the bugs, sometimes browser specific
Like the other day I found 2 issues. Background attachment fixed doesn't work if you apply a transform. And backdrop filters don't work if you have a mask
honey wake up godot minimal theme 2.0 just dropped!
Awesome! That's what I was going for too in the plugin I'm working on
It kinda has css selectors too with node.get_index(), though I'm not sure how to handle things like ItemList that's just all in 1 node
bsky.app/profile/dugt...
Thanks! Your monopoly style game looks great too. The official ones by Hasbro feel a little stale so looking forward to this one
I'm a plug-in dev if that counts. Currently working on a stylebox / theme plugin
Expression to wrap the TabBar background to its tabs. The breakdown: The goal is to go through all of our tabs, get the sum of their widths, and one of their heights (since they'd all be the same height). - The first line is the expression that will be returned. Seperated by an empty newline, are other expressions that you can call by name. - "range_i()" is equivalent to range(). It creates an array like [0, 1, 2, 3]. It's one of the few utility functions not available to Expressions by default so I added it like this. - "node" is the TabContainer being drawn. - "node.get_tab_bar()" gives the underlying TabBar, and its tab functions. - "func reducer" registers the next line as a function / Callable. - "functions.reducer" accesses that registered Callable. - "arg" is the array of arguments passed to the Callable when it is called. - ".reduce" is just the usual Array.reduce(). We pass it our registered Callable called "reducer", and .reduce() will call it with the arguments [accumulator, value].
Here's the expression modifier applied to the "rect_size" property.
Expressions as callables lets you utilize higher order functions like map, filter, reduce.
The full explanation is in the alt text, for the more generous character limit Β―\_(γ)_/Β―. The syntax is also open to suggestions.
#Godot Stylebox plugin. Did some work to REALLY enable pill style tabs in TabContainers, namely wrapping the background to the size of the tabs
To do this, I powered up expression modifiers to allow much more complex calculations. Now you can have multiple expressions & call each other as functions
And here's some video footage of how I made the quoted post as a penguin from inside a Godot VR game. π§
#GodotEngine #gamedev #indiedev
Holy moly, Bosca in browser! πͺπ
The file I/O has been my chief concern, as you cannot rely on your regular file dialog nodes in Godot. A neat API here, a few hacks there β and in theory it is now fully functional!
In this plugin, each drawn box has an identifying key. By default its [node, rect]
Now you can specify a custom key, like just [node].
This means when the rect changes, the plugin will still treat it as the same box, since rect no longer identifies the box. This allows rects to animate over time
#Godot Stylebox animations plugin. Just added rect transitions, letting you do things like pill bar animations in TabContainers
Here is a sample of the "tab_selected" stylebox always sliding into its new position
(There's a mix of clicking the tab and using arrow keys)
Took a week break from my #godot stylebox plugin, but I'm back now. Just added animation sequences
Every property can have a "from" modifier, defining an extra state it should animate from. They can be chained to make any length sequence
red -> hovered
blue -> pressed / toggled
green -> normal
Traits and then GDextension stuff. I always had the impression that GDextension would give you a lot more internal access & capabilities than gdscript, but in practice it's mainly just a faster gdscript
Maybe accessing other modules could fix that, like internal engine modules or something
Haha thanks. I'm not that familiar with Unity's ecosystem, but don't they basically use css?
I come from web dev so there's still a few features I hope to bring over from it
In #Godot ASB (animated styleboxes), every property can have an expression modifier.
There, you can set computed values based on things like the size, dpi, node index, or even EditorSettings preferences.