Search Home Members Contacts
About Us
Products
Downloads
Community
Support
Pages: [1]
  Print  
Author Topic: EEGUI SOURCE is now available to everyone!  (Read 888 times)
EagleEye
Customers
Community Member
*****
Posts: 345


WWW
« on: November 30, 2009, 12:12:57 AM »

I have submitted EEGUI to the TV website downloads area... Darq said he would be adding a "Middleware" sub-category, and that he would add EEGUI to that.

I am also making the source available on my website directly, here:

(Nevermind the direct link... I attached the zip directly to this post!)

Edited to add: Added the EEGUI.DLL in its own zip for those who can't compile it but can use it as a DLL.

This is a SOURCE ONLY download.

(From the included "readme.txt" and "howto.txt" in the EEGUI Source package)

Quote
EEGUI was originally closed source.  The reason for this was because I wanted to be compensated for my time in making it.  I have since decided that this library is far too important to the TrueVision Community to keep "commercial".  I mean really, how often do we hear people say "how do I implement a GUI in TV?"

In the years I've been using TrueVision, there really hasn't been a freely-available GUI system that is suitable for very many people, in spite of many attempts by others to do so.

Regretably, this library only works for those using Visual Studio 2005 or higher, and requires the use of a .NET language such as C# or VB.NET, and the .NET 2.0 or higher library.  One reason I'm releasing the raw source is so people can use it as a template for ports to other languages, to remove this language restriction.  I would like to ask those who use other languages (such as Delphi) to port this source.  If you wish to do so, however, I'm afraid I must require that you provide that source to me so I can have it distributed from a common repository.

This software is being released under LGPL 3.0.  Any ports to other languages should be considered derivative works of EEGUI, and while those who provide ports to other languages will get full credit for the port, the original work is still mine.  I ask that any ports be given to the community at large, and allowed to be distributed exclusively from one common location.

This project was originally for my primary use in my own game, and was sold as a commercial product to the community merely as a way to supplement my income a bit.  Admittedly, I did not make much money off of it as a commercial product, but I take great pride in this code and the fact that it's been considered one of the premier GUI systems (though not necessarily THE BEST) in use by TrueVision users.  That said, I would greatly appreciate donations for my work.  If you would like to donate, or if your game which uses EEGUI happens to become a huge success, you may send money to me via paypal, addressed to "eagleeye@eeisi.com".

Also, I would like to ask EEGUI users to keep me updated on the progress of their projects, and send me screenshots of my GUI system in use!  I'd love to see what YOU are capable of doing with EEGUI!

One good way to keep in touch, and get updates about EEGUI, is to join the EEGUI Google Group.
http://groups.google.com/group/eegui

Please feel free to use that mailing list to ask questions, get support from the other EEGUI users, and submit your own suggestions for changes to the code.

----

EEGUI "How To"

To use EEGUI, you must include the EEGUI project in your solution, or compile EEGUI to a DLL and include that as an imported DLL in to your project.

If you use the EEGUI project instead of the DLL, please ensure that the EEGUI project is properly pointing to your MTV3D65.DLL on your local disk, and that it is auto-imported in to the project.

Some basic tips for using EEGUI:

1) While EEGUI comes with many standardized controls, you are fully capable of extending any of them by inheriting from them.  ALL controls must inherit (at some point) from guiControlBase.

2) The EEGUI controls merely handle the background functionality within the GUI system.  It is wise to extend ALL of the base controls with your own derived classes, so as to define their look and feel.

An example of this would be the "guiButton" class.  It is ideal to make your own button class that inherits from guiButton, and as a part of either an "initialization" function, or when you instantiate (or "New") it, define standard settings (such as fontID and text alignment) and textures.

Using this method, you could create 20 different standard button classes of your own, each with their own fonts, textures, and other settings, and simply use those derived classes in your game/app, rather than directly using guiButton objects and manually configuring them each time you create a new one.

3) EEGUI is a parent-child heirarchy of controls, with the "Desktop" as the primary "root" object that is the same size as the Truevision viewport.  The Desktop is never rendered, but all children of the desktop are rendered in a recursive manner, with each child rendering its own group of children, those children then render THEIR "children", etc, etc, until no more children exist to be rendered.

Keeping that in mind, the entire GUI is rendered from back to front.  Children added first are thus rendered first, and children added later are rendered later (and thus on top of the previous ones).  Don't worry, all z-order and focus handling is done within the GUI using positioning in the list of children.  (ie: BringToFront removes the child from the list and re-adds it to the end of the list so it is rendered last.)

4) There are a few globals you shouldn't mess with.  Please watch your intellisense to know what those are.

5) EEGUI is heavily event-driven.  Capturing events is one of the primary ways of using the GUI to handle logic and even positioning.  One of my primary methods of positioning children on a parent is to capture the "resized" event of a control, and in that event handler, reposition and resize all of the child controls... this way you can be assured that your child controls are always properly scaled to the parent, and in the right positions relative to each other.

6) Make heavy use of helper functions such as "PositionRelativeTo", and "CenterOnParent"... they are there to help you in your layouts, and keep things lining up properly.

7) Don't forget to set fontID's, "AllowFocus", text alignments, and all of the other possible flags and settings for your controls.  This is another good reason to set up derived classes for each of your specific TYPES of buttons, textboxes, and labels... again, so you don't have to manually set them each time you want to use them.

8) All positions of controls is RELATIVE TO THE PARENT!  This means if a control is at position (10,10), that is its position on the parent.  If the parent is at (100,50) on the desktop, the actual rendered location of the child is (110,60).  The GUI engine figures out the actual "RenderLoc" (render location) for you... you can get this value if you want, but don't attempt to set it yourself.  Just let the engine work.

9) If you aren't seeing things render, check to ensure that the control's "Background.(state).Enabled = true", where "state" can be any of 5 different render states a control may have at any given time.  If all you're seeing is WHITE, then the texture ID isn't being found, and it's rendering the default white (full alpha) OverlayColor.  If all else fails, make sure the object is actually added as a child to something.  There must be a "parent chain" from each control, all the way back up to the desktop object, or it won't render.

Anyway folks... I hope you enjoy EEGUI.  I really look forward to people's comments...
« Last Edit: November 30, 2009, 12:42:53 AM by EagleEye » Logged

Vermund - A Matter of Life and Death MMORPG
My TV Projects - EEGUI (A GUI for TV6.5 with .NET 2005+), Material Editor, tutorials, and more!
pizzayoyo
Customers
Community Member
*****
Posts: 1421


WWW
« Reply #1 on: November 30, 2009, 12:25:47 AM »

Nice to hear you made it open source! Should help out a lot of people.
Logged

EagleEye
Customers
Community Member
*****
Posts: 345


WWW
« Reply #2 on: November 30, 2009, 12:32:40 AM »

Nice to hear you made it open source! Should help out a lot of people.

I hope so!  One of the biggest problems I've seen with many of the 3D engines out there is that they singularly fail to provide a GUI system... and the community doesn't really provide many good options.

I've seen a few others provide GUI systems to the public... I of course think mine is "the best"... I can only hope it stands up to scrutiny and people think the same. Smiley
Logged

Vermund - A Matter of Life and Death MMORPG
My TV Projects - EEGUI (A GUI for TV6.5 with .NET 2005+), Material Editor, tutorials, and more!
EagleEye
Customers
Community Member
*****
Posts: 345


WWW
« Reply #3 on: November 30, 2009, 01:45:23 AM »

I just finished recording a little primer in to how EEGUI is structured, and how it's meant to be used within your app... or rather, what I would consider to be "best practice".

http://www.youtube.com/watch?v=xndUrEBvZzE

Also, a little info on creating your own custom controls...

http://www.youtube.com/watch?v=PHQB5Yw2s3g

Watch and learn. Smiley
« Last Edit: November 30, 2009, 02:18:56 AM by EagleEye » Logged

Vermund - A Matter of Life and Death MMORPG
My TV Projects - EEGUI (A GUI for TV6.5 with .NET 2005+), Material Editor, tutorials, and more!
xavram
Community Member
*
Posts: 525


« Reply #4 on: February 24, 2010, 05:54:15 PM »

EagleEye, I had bought your GUI system a while back, been very happy with it.

However, I'm getting an error when i try to use it with the current version of TV.  Some error about it expecting such and such a version of the MTV3d.dll.

How do I fix this?
Logged
Pages: [1]
  Print  
 
Jump to:  

Powered by SMF 1.1.3 | SMF © 2006-2007, Simple Machines LLC
Seo4Smf v0.2 © Webmaster's Talks