jMonkeyEngine-Contributions / Lemur

Lemur is a jMonkeyEngine-based UI toolkit.
http://jmonkeyengine-contributions.github.io/Lemur/
BSD 3-Clause "New" or "Revised" License
116 stars 32 forks source link

Lemur for JME 3.0.10 #39

Closed jchappelle closed 8 years ago

jchappelle commented 8 years ago

Forgive me if this has been answered elsewhere but I can't find a version of Lemur to use with 3.0.10. I noticed in your wiki that it's compatible with 3.1.0. I can only find the beta version of JME3 so I figured I would try to pull in lemur 1.7.1 and run the GuiDemo class but I get a method not found or some other error indicating a jar incompatibility which I would expect since you are building it against 3.1.0.

This is a side project for me so no rush on an answer. I tried upgrading to 3.1.0beta of JME3 but I had a lot things breaking and couldn't find a migration guide so my initial project of exploring lemur started turning into an all night affair.

Thanks for your time and contributions!

pspeed42 commented 8 years ago

1.7.1 is supposed to work with the older JME. At any rate, all of the older versions are in github if you need to pull an even older one.

You really should consider upgrading, though. JME 3.1 is basically ready. It took us a long time to get to beta and beta has been pretty stable. Ask questions on the JME forum if things are breaking. It's hard to put together a "breaking changes" guide if no one ever posts about them. :)

jchappelle commented 8 years ago

I tried upgrading to 3.1 beta and started going down a shader rabbit hole that I wasn't prepared for so I went back to 3.0.10.

Lemur 1.7.1 is not compatible with 3.0.10. Maven pulls in a transitive dependency on jme3-core:3.1 which I was able to exclude so as not to conflict with my 3.0 jars. However, jme3.app.state.BaseAppState is referenced and I get a class not found. I did a ninja move and copied the source for com.simsillica.lemur.event.BaseAppState into my source code under the jme3.app.state.BaseAppState package just to see if I could hobble by with that but then I got the following:

java.lang.NoSuchMethodError: com.jme3.renderer.ViewPort.getScenes()Lcom/jme3/util/SafeArrayList;
    at com.simsilica.lemur.event.PickEventSession.addCollisionRoot(PickEventSession.java:165)
    at com.simsilica.lemur.event.BasePickState.addCollisionRoot(BasePickState.java:103)
    at com.simsilica.lemur.event.BasePickState.initialize(BasePickState.java:137)
    at com.simsilica.lemur.event.BaseAppState.initialize(BaseAppState.java:75)
    at com.jme3.app.state.AppStateManager.initializePending(AppStateManager.java:251)
    at com.jme3.app.state.AppStateManager.update(AppStateManager.java:281)
    at com.jme3.app.SimpleApplication.update(SimpleApplication.java:239)
    at com.jme3.system.lwjgl.LwjglAbstractDisplay.runLoop(LwjglAbstractDisplay.java:151)
    at com.jme3.system.lwjgl.LwjglDisplay.runLoop(LwjglDisplay.java:185)
    at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:228)
    at java.lang.Thread.run(Unknown Source)

I'll keep working my way back to find a version compatible with 3.0.10.

Have you ever considered semantic versioning?

pspeed42 commented 8 years ago

This is the older form of semantic versioning where incrementing the first number means "completely new architecture". The shader rabbit hole you went down (which were easy fixes if those were the ones from the forum) are basically "my game will only run on nvidia cards" problems that you need to fix anyway. It's just easier when you have the errors and your users don't.

It's possible that there are no versions of Lemur that are compatible with older JME since it sounds like I may have compiled against an incomplete version... else you may have to backrev JME also. It's a very difficult thing to fix now and I have limited time to put those cats back in those particular bags... especially when everyone should move to JME 3.1 sooner rather than later.

pspeed42 commented 8 years ago

Note: your other option is to check out the appropriate Lemur 1.7 or 1.6 tags and rebuild from source. Running gradlew build or gradlew install should be all you need to get the libraries in the build/distributions folder.

pspeed42 commented 8 years ago

Also, I've been confused as the 1.7.1 to 1.8.1 split was about JME 3.1 alpha 4. None of these releases have been compatible with JME 3.0. You'd have to go back to pre-1.5.1 (the first 3.1 compatible release) to get a JME 3.0 compatible Lemur.

Sorry for the confusion. The first github release was 3.1 compatible and it was only the old google code releases that were JME 3.0 compatible. Not sure they are still over there or not... you might have to build those from source but the code history should be in Github.

Those old releases were built in the SDK, I think. That was before gradle I believe.