any Todo, knownbug page ?

tuan kuranes

19-10-2007 13:48:27

Nice work already !

Now, we need to know if Feature is missing but planned, feature not planned, etc... and what are the status of unfinished work (editor, menu) ?

- precompiled headers ?
- Material support ?
- Animation ? (at least basic like in my betagui version, move, size, transparency)
- Gui widget to Rtt ?
- Uses of Index in Quad (faster and less memory) ?
- Rotation ? (like in a speed-o-meter) ?
- Multiple ImageSet ? (each being tieable to a gamestate/menu ?)
- Valve Improved Alpha-Tested Magnification for Vector Textures and Special Effects :
which gives fast, simple and antialiased smooth text. Only a font generator tool really needs to be done... ? (which btw who be a good part of a gui toolset.)

In Status
- Widget List (planned/under work/requesting help) ?
- Tool list (planned/under work/requesting help) ?

I guess a sticky TODO, Known bugs, Changelog would make me happy...

btw : in GUIManager::setActiveWidget() the first if,

if ( !w->enabled() || w == NULL )

is prone to bugs... w == NULL has to be tested first

kungfoomasta

19-10-2007 17:34:15

Yah, good point with the if, I've seen a few places where I've done the comparisons out of order. :oops:

I blame it on late night coding! :lol:

I'll make a basic TODO page and sticky it.

- I briefly looked into material support a long time ago. If I added this in, all batching optimization I have achieved will be lost. Right now everything is a simple texture, so I can make a SkinSet (texture atlas) and use one texture for an entire set of widgets. The only reason the library uses more than 1 batch for everything is because of Text, and possibly RTT. (which is supported. Whether its a texture that is part of a skinset, a texture that is not part of a skinset, or a manually created texture, it can be used for a widget)

- Rotation hasn't been addressed yet. I think this would be as simple as changing the UV coords for a given quad. Of course I'd provide convenient functions to change rotation easily.

- Multiple SkinSets are supported.


mGUIManager->loadSkin("qgui"); // all found "qgui*.png" textures will be added to "qgui" texture.
mGUIManager->loadSkin("temp"); // all found "temp*.png" textures will be added to "temp" texture.

// In action..
myButton->setTexture("qgui.button.png"); // makes use of "qgui" skinset.
myOtherButton->setTexture("temp.button.png"); // makes use of "temp" skinset.
someOtherButton->setTexture("unique.png"); // not part of any skinset, will generate a batch by itself.
lastButton->setTexture("rttManuallyCreated"); // manually created texture


I briefly read the article some time ago, but I need to read it again for better understanding. I tried pulling in FreeType into QuickGUI for fonts/text, but it was a nightmare, and I ended up using Ogre::Font, which is already an Ogre resource, and gets the job done.

I'll make the TODO page soon.

tuan kuranes

19-10-2007 18:05:53

If I added this in, all batching optimization I have achieved will be lost
The point is : who can the more can the less.
By default, each widget would use a single material, but having the ability to change would sure be a good point.

I'm Not sure it would be that much misused, as multiple material doesn't imply multiple texture.

But it would help attaching some property to quads. (read: shaders).

Group effect could be also achieved that way (if all sharing a single material, applying effect on this material (shader/transparency)), would be applied on all GUI. (fade in/out whole gui for instance.)

Of course I'd provide convenient functions to change rotation easily.
Nice. See other post about imageset. That would sure free some imageset space.

Multiple SkinSets are supported
Great, I must have misread doc then... :oops:


I briefly read the article some time ago, but I need to read it again for better understanding. I tried pulling in FreeType into QuickGUI for fonts/text, but it was a nightmare, and I ended up using Ogre::Font, which is already an Ogre resource, and gets the job done.

It's more of a external tool Freetype integration... but you're right there, I should perhaps see if it not ogre font system that could use that.

I'll make the TODO page soon
Thanks. As I need some things, I may list myself on some points.
1) precompiled headers
2) Animation

kungfoomasta

19-10-2007 18:31:19

I am interested in an Animation system, but what I need is a user scenario, how it should be accomplished.

I have been thinking about this.


// forward declaration
class Widget;

class Affector
{
public:
Affector(Widget* owner);
~Affector();

Real getDuration();

void setDuration(Real seconds);

void update(Real timeElapsed);

protected:
Widget* mOwner;
Real mDuration;

virtual void doAction()=0;
};


Users can make classes like "PositionAffector", "SizeAffector", "XYZCustomAffector", etc. Widget can have 0 to many Affectors, and updates them as time is injected.

Sorry for being noob, but I don't understand precompiled headers. You mean to toggle this option in Visual Studio? (use precompiled headers: yes)

kungfoomasta

19-10-2007 18:45:58

Just to make it better, remove "doAction", and add 3 functions:

virtual void onStart();
virtual void whileRunning();
virtual void onEnd();

Then it's easily possible to chain affectors, if you needed to do this, and allows for lots of things I can't think of at the moment.