"Roll Your Own" GUI (Update: Fully Integrated Texture Atlas... finally)

@madjack said:I would be really curious if every user were polled on the Nifty subject. How many have called it quit because of it? Or moved on to a different engine? I stuck with it because there were no alternative and I’m bull-headed but not everyone is willing to go through that.
/sigh So the alternative would have been what? No GUI? Hollow promises of the GBUI developer? Your hacked HTML renderer including javascript access and platform dependent binaries? Thats my point, stop putting it on me just because I don't think Nifty is too complicated please.
@normen said: For some reason I can't thumb your post but thats very cool :) In theory we should be able to use and edit this in the SceneComposer too, we'd just need to be able to access the GUI node to attach these, right? Btw, I know you understand me, its just that especially with @madjack here I already had a discussion about the engine, nifty and me.

SceneComposer: definitely… I have been giving some thought to what a JME component based GUI system would do for things like the terrain editor. Right now, the controls are embedded in the IDE as part of the plugin, making it semi-difficult to maintain/update. Since the scene is saved without the GUI node (I assume) wouldn’t it be nice to embed the controls for plugins like this directly into the GUI node, making it take literally minutes to implement an entirely new interface for editing terrain. With controls like an advance color wheel for texture painting, vertex painting, etc. It would be rather slick. Not that it would have to be this library… but one that is completely JME based would open up some new doors for SDK plugins.

1 Like

Any Control that is attached to a reachable node and uses classes from the project (library or actual code) will be displayed correctly with all its properties, it doesn’t have to be wrapped explicitly through a SDK plugin though then ofc you have greater flexibility. If you’d attach a control from your collection using the SceneComposers “Add Custom Control” feature you’d already be able to modify it, just that its on the root node and not the gui node.

1 Like

I also wanted to mention, this system is not difficult to understand. Once you have a change to go through the code… you would be hard pressed to find someone who couldn’t maintain it if I were to drop dead the day after uploading it. There just isn’t that much involved in making this work.

@t0neg0d said: I also wanted to mention, this system is not difficult to understand. Once you have a change to go through the code... you would be hard pressed to find someone who couldn't maintain it if I were to drop dead the day after uploading it. There just isn't that much involved in making this work.
Lets see what ideas and problems the others come up with :)
@normen said: /sigh So the alternative would have been what? No GUI? Hollow promises of the GBUI developer? Your hacked HTML renderer including javascript access and platform dependent binaries? Thats my point, stop putting it on me just because I don't think Nifty is too complicated please.

An engine without a GUI library isn’t an engine you can expect people to use, that’s granted. You talk about alternatives like this has been an issue. It’s never been one. It’s an hypothetical that has never materialized. And, if it had happened, the community would’ve responded by making something until a better GUI set would have come along.

Nobody is putting anything on you. I’m only exposing my views on the subject. It’s in no way an order (like I had that power) or even a suggestion. I’m nobody here. But I do feel, as a user, that it’s in my right to dislike a bundled library and be vocal about it.

@PhilipWilluweit said: Is it already somewhere as an Download to test it? I think not only me cant wait to try it out.

About the Nifty Discussion: I have a big Problem that Nifty always loose Focus when i drag/rotate the Camera (in this application you can see in the screens http://hub.jmonkeyengine.org/forum/topic/solved-controlling-a-simpleapplication-by-keycommands-for-fullscreenmode-from-the-embedded-swing/ ) .

Try to fix it since almost 10 Month. Maybe its possible to fix, but i am just soo tired about it already.

I hear ya… it was the reason I took 4 month off. I was so frustrated with Nifty (not realizing I could have done what I am doing now) that I was looking into alternate engines (BAD idea).

It will be available really soon. I still have a couple issues I am trying to work out:

Textfields: It revolves around text ranges extending past visible text and making sure they display properly when the text field is resized.
Cut & Paste: is internal… would be nice to use the system clipboard, but I’m not sure if this is possible.
I’d like to test padding & clip padding a little more before saying it is solid. It seems to work fine… however… I need to put it through a bit more.
I still need to implement basic shader based effects (fading, zooming, texture blending, different texture deform effects like wave, ripple, warble, etc)
I also want to test rotation, scaling and see how they effect all components.

I have thought a few times about releasing the nifty app state I wrote as it solved a lot of the pain nifty was causing me. Unfortunately though it’s very tied to the HeroDex look and feel and I can’t justify the effort that would be needed to separate it out.

As I’ve already said we’re too tied to Nifty in HeroDex to think about changing at this late stage (especially considering the pain is mostly cured)… but that doesn’t mean we wouldn’t look at alternatives for future projects and while I agree that Void is very responsive unfortunately Nifty is far from ideal… so I’m watching both Chris and Paul’s work with interest.

I accessed the system clipboard in my crash reporting thing, one sec:

[java]
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(selection, null);
[/java]
There you go :slight_smile:

1 Like
@madjack said: You talk about alternatives like this has been an issue. It's never been one. It's an hypothetical that has never materialized. And, if it had happened, the community would've responded by making something until a better GUI set would have come along.
Err.. lol? Gui was never an issue? The community would have done something like this? I guess our propaganda works better than I thought.
@madjack said: Nobody is putting anything on you. I'm only exposing my views on the subject. It's in no way an order (like I had that power) or even a suggestion. I'm nobody here. But I do feel, as a user, that it's in my right to dislike a bundled library and be vocal about it.
You are a contributor with a special badge and instead of keeping the ball low and doing your best to support this you bring us to a situation where we'll have to answer questions from people like Tygron who recently donated a substantial amount of money to us if they have to push over all plans for their GUI implementations cause we're dropping Nifty or something, based on a 2-week coding obsession by somebody. Now please shut up about Nifty and be happy -.-

Sorry @t0neg0d, absolutely no offense and I do think you’re in for more but I can’t know, we had all kinds of levels of involvement already dropping to zero.

@normen said: You are a contributor with a special badge and instead of keeping the ball low and doing your best to support this you bring us to a situation where we'll have to answer questions from people like Tygron who recently donated a substantial amount of money to us if they have to push over all plans for their GUI implementations cause we're dropping Nifty or something, based on a 2-week coding obsession by somebody. Now please shut up about Nifty and be happy -.-

Then by all means remove that tag from my name. But one way or the other, I will not shut up about something I feel is important to me. I will leave it at that before things go South.

@madjack said:Then by all means remove that tag from my name. But one way or the other, I will not shut up about something I feel is important to me. I will leave it at that before things go South.
Who are you talking to? Who here doesn't know you don't like Nifty? Why do you have to wish for it being removed completely from the engine right here and now where right before I explicitly explained how complicated the situation is? Can't you read between the lines and see this is your best chance to get what you want?

Says the guy who can’t understand that “I wish it was dropped” really means “All I want is a real alternative.”

Say what you mean, don’t say other things then expect people to read what you really meant into your hyperbole :slight_smile:

I think it’s time to get the thread back on course though - how modular could this GUI stuff be made? For example could you just drop a textfield somewhere into the 3d scene and interact with that without needing anything else?

3 Likes

I’m sorry to disagree with all of you, but I really love Nifty and I’ve done things so easily with it that I just can’t see the problems you faced. Of course, I haven’t tried 3D menus, but apart from that, it’s so easy to mix Java/XML (IMO) that this is by far the best solution I’ve found out there ^^

Sorry!

2 Likes

Don’t be sorry, be happy :slight_smile:

@zarch said: Say what you mean, don't say other things then expect people to read what you really meant into your hyperbole :)

I think it’s time to get the thread back on course though - how modular could this GUI stuff be made? For example could you just drop a textfield somewhere into the 3d scene and interact with that without needing anything else?

Completely… everything is built from the same exact primitive… so… in essence a text field is a window is a button is a baboon, etc, etc. Drop a text field on the gui node… call methods to interact with it. I’m sure this could be used with Nifty. Though, I would have to say… 2 minutes with this and you’ll NEVER want to. (This is not to say my library is all that… what I’m getting at is, I was able to build this library in 1/10000th of the time it took me to implement my games GUI in Nifty. That’s just sad.

Speaking of sad…

Update: (Vid to follow soon), I added an effect manager… it handles both shader based & object based effects. Every effect is tied to an action, or state, etc. Here is the list of the quick implementation:

Effects:
FadeIn,
FadeOut,
BlendTo,
BlendFrom,
ZoomIn,
ZoomOut,
SpinIn,
SpinOut,
Pulse,
ImageSwap

And the events (thus far)
GetFocus,
LoseFocus,
Show,
Hide,
Hover,
Press,
Release

Defining an event via XML:
[java]
<property name=“event0” type=“Effect”>
<event value=“Hover” />
<effect value=“Pulse” />
<speed value=“3” />
</property>
[/java]

And via code:

[java]
Effect effect = new Effect(
Effect.EffectType.ZoomIn,
Effect.EffectEvent.Show,
1.5f
);
effect.setElement(someControl);
someControl.addEffect(Effect.EffectEvent.Show, effect);
[/java]

Pass it to the effect manager to fire off the event.

Um… I should used cut/paste… you don’t have to call effect.setElement. I need sleep >.<

@zarch the screen class is transparent(litterally and in the sense that I meant. It will not fight with Nifty for control of object in the guiNode.

@t0neg0d
Stop it. You’re making me cry. :cry: