ogltk-scene

Name

ogltk-scene -- Manage GLobjects for rendering.

Synopsis


#include <ogltk/scene.h>


enum        OgltkSceneDisplayOrder;
struct      ogltk_scene;
ogltk_scene* ogltk_scene_new                (void);
gboolean    ogltk_scene_set_display_order   (ogltk_scene *scene,
                                             OgltkSceneDisplayOrder order);
OgltkSceneDisplayOrder ogltk_scene_get_display_order
                                            (ogltk_scene *scene);
gboolean    ogltk_scene_enable_object_events
                                            (ogltk_scene *scene,
                                             gboolean enable);
gboolean    ogltk_scene_object_events_enabled
                                            (ogltk_scene *scene);
gboolean    ogltk_scene_add_globject        (ogltk_scene *scene,
                                             GLobject *object);
gboolean    ogltk_scene_fps_start           (ogltk_scene *scene,
                                             gint notify_time);
gboolean    ogltk_scene_fps_stop            (ogltk_scene *scene);
gboolean    ogltk_scene_clear               (ogltk_scene *scene);
GLobject*   ogltk_scene_select              (ogltk_scene *scene,
                                             gfloat x,
                                             gfloat y);
gboolean    ogltk_scene_add_lightsource     (ogltk_scene *scene,
                                             ogltk_lightsource *light);

Description

Details

enum OgltkSceneDisplayOrder

typedef enum
{
    OGLTK_SCENE_DISPLAY_NONE,
    
    OGLTK_SCENE_DISPLAY_GLOBJECT,
    OGLTK_SCENE_DISPLAY_LIST,
    
    OGLTK_SCENE_DISPLAY_LAST

}OgltkSceneDisplayOrder;


struct ogltk_scene

struct ogltk_scene {

    GObject             parent_instance;

    GList               *globjects;
    GList               *displaylist;
    /* FPS */
    GTimer              *fps_timer;
    gint                fps;
    gint                fps_notify_time;
    
    gboolean            bobject_events;     /* Enable Object Signals before and after each object is displayed */
    
    OgltkSceneDisplayOrder display_order;   /* Set which order objects will be rendered by this scene? display list or globjects */
    
    gint                fps_signal_time;    /* Time in seconds when fps-event signals are sent */

    ogltk_lightsource   *lightsources;      /* FIXME JSK , Should be GLIST of lightsources */
         
};


ogltk_scene_new ()

ogltk_scene* ogltk_scene_new                (void);

Create a new instance of a scene object. This object can be bound to an ogltk_view object.

Returns :

New instance of a ogltk_scene


ogltk_scene_set_display_order ()

gboolean    ogltk_scene_set_display_order   (ogltk_scene *scene,
                                             OgltkSceneDisplayOrder order);

Not Implemented Yet!

scene :

An ogltk scene object

order :

Order in which to display object types (display list or globject)

Returns :

True if new display order was set


ogltk_scene_get_display_order ()

OgltkSceneDisplayOrder ogltk_scene_get_display_order
                                            (ogltk_scene *scene);

Not Implmented Yet!

scene :

An ogltk scene object

Returns :

OgltkSceneDisplayOrder


ogltk_scene_enable_object_events ()

gboolean    ogltk_scene_enable_object_events
                                            (ogltk_scene *scene,
                                             gboolean enable);

Not Implemented Yet!

scene :

An ogltk scene object

enable :

Enable Object display events

Returns :

True if object display events has been enabled.


ogltk_scene_object_events_enabled ()

gboolean    ogltk_scene_object_events_enabled
                                            (ogltk_scene *scene);

Not Implemented Yet!

scene :

An ogltk scene object

Returns :

True if object display events are enabled.


ogltk_scene_add_globject ()

gboolean    ogltk_scene_add_globject        (ogltk_scene *scene,
                                             GLobject *object);

Add an ogltk GLobject to the scene

scene :

An ogltk scene object

object :

The GLobject to add to the scene.

Returns :

True if the object was added to the scene.


ogltk_scene_fps_start ()

gboolean    ogltk_scene_fps_start           (ogltk_scene *scene,
                                             gint notify_time);

Start the Frames Per Second timer, once expired the "fps-notify" signal will be issued when the timer rolls over the specified time in param notify_time. This is not an autonomous function and the scene render must be called for the fps timer and the notify signal to be processed,

scene :

An ogltk scene object

notify_time :

Time in seconds to call the fps event

Returns :

True if the fps timer has been started.


ogltk_scene_fps_stop ()

gboolean    ogltk_scene_fps_stop            (ogltk_scene *scene);

Stop the fps timer and disables the fps_notify signal from being called.

scene :

An ogltk scene object

Returns :

If the fps timer was stopped.


ogltk_scene_clear ()

gboolean    ogltk_scene_clear               (ogltk_scene *scene);

Clear all GLobjects from the scene.

scene :

An ogltk scene object

Returns :

True if objects are cleared.


ogltk_scene_select ()

GLobject*   ogltk_scene_select              (ogltk_scene *scene,
                                             gfloat x,
                                             gfloat y);

Not implmemented Yet!

scene :

An ogltk scene object

x :

Mouse cursor X position

y :

Mouse cursor Y position

Returns :

the GLobject which the mouse is over.


ogltk_scene_add_lightsource ()

gboolean    ogltk_scene_add_lightsource     (ogltk_scene *scene,
                                             ogltk_lightsource *light);

Add a lightsource object to the scene.

Note : Only one light source. More will be allowed in future releases.

scene :

An ogltk scene object

light :

Light source to add to the scene.

Returns :

True if the object was added.