scene2d Table forked up

Getting a bit cozy are you, what with your scene2d application compiling smugly? Say no more, I have a treat for you!

As you know, TableLayout is one of my (Nate’s) OSS projects. The core performs UI toolkit agnostic layout and only a small bridge needs to be written to layout for the toolkit of your choice. The UI toolkits it supports are Swing, Android, TWL and of course libgdx’s scene2d.ui. Sadly, few outside of libgdx have seen the blessed layouting light and continue to plod along with suboptimal tools. Anyway, the bridge makes for some slight API awkwardness and extra indirection under the covers. Since TableLayout is mostly used for scene2d and given that I certainly don’t want to (or plan to) subject myself to the pain of using other UI toolkits, I figured we might as well fork TableLayout and integrate it properly into libgdx.

Rest assured, everything is now completely forked. What is left are two classes: Table and Cell. They work mostly as they did before, but you’ll need to organize your imports since they are now in the scene2d.ui package. The API has changed slightly:

  • Cell#getWidget -> Cell#getActor
  • Cell#setWidget -> Cell#setActor
  • Other methods with “widget” in name -> “actor”, since they take Actor, not Widget.
  • cell.getLayout().getTable() -> cell.getTable()
  • Cell#ignore is gone. This was never used AFAIK mostly on account of not being very useful.
  • TableLayout and Toolkit are gone. Table does it all.

In addition, Value has changed a bit. It is simpler and no longer specific to Table. I plan to use it elsewhere soon, eg in Container.

So there you have it. API breakage should be easy to fix and the new Table works as it did before.

libGDX 1.1.0 released

libGDX 1.1.0

As promised, we’ll try to do bi-weekly releases. If we miss one for some reason (vaccation, life), don’t be angry with us. You can always work off of the snapshot releases, which you can select in the setup ui or manually change to in the build.gradle file.

You’ll also notice that we increased the minor version (2nd number) instead of the patch version (3rd number). The reason is that we introduced a small API change in the Matrix4 class. While this is unlikely to hit more than 0.001% of our users, it’s still an API change. As per our policy (which is not exactly semantic versioning) we thus increment the minor version, so you know an API has changed.

Without further ado, here’s what’s new:

Note: it is very important that you update to the latest RoboVM Eclipse plugin if you use Eclipse!

If you want to update an existing project, read this wiki article. Use “1.1.0″ for the latest release and “1.1.1-SNAPSHOT” for the latest nightlies.

If you create a new project, the setup app will already allow you to specify the latest release and snapshot.

Excelsior JET and libGDX – Help fund Save Life Foundation!


Many of you may already know Excelsior JET. For the few who haven’t heard of it, here’s the shortest possible description of what Excelsior JET does for you:

Excelsior JET enables you to distribute and deploy your Java™ applications as optimized native executables that start and work faster, do not depend on the JRE, and are as difficult to reverse engineer as if they were written in C++. Excelsior JET currently allows you to create native executables for Windows and Linux and will soon also support Mac OS X.

Dmitry and Excelsior LLC aren’t unknowns to the Java game development community. They’ve been roaming the Java Gaming forums for ages and have been very supportive to all kinds of folks, from amateurs to more established players. They are currently doing a fund raiser, and i think it’s a cause worthy of our support. Here’s the deal.

  • You pay whatever you want for an Excelsior JET license (Standard Edition, no support, commercial use permitted).
  • Excelsior donates the net price to the Save Life Foundation on your behalf. Save Life is a local charity that helps children and young adults fight cancer.

The fund raiser ends on the 31th of May 2014 so you have about two more weeks to do something good and get something awesome in return!

Cool, take me to the fund raiser!

I also wrote a little guide that walks you through your first Excelsior JET build!