Now use plib in native install mode.
Preparations for unstable development version 0.7.0 Some reorganizational changes. Beginning to test the use of ssg (part of plib)
This commit is contained in:
parent
90655cf54b
commit
c8501f9b29
10 changed files with 166 additions and 84 deletions
|
@ -25,7 +25,7 @@
|
|||
#ifndef _GUI_H_
|
||||
#define _GUI_H_
|
||||
|
||||
#include <plib/pu.h>
|
||||
#include <pu.h> // plib include
|
||||
|
||||
extern void guiInit();
|
||||
extern void guiMotionFunc ( int x, int y );
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
//
|
||||
// Written by Curtis Olson, started October 1998.
|
||||
//
|
||||
// Copyright (C) 1998 Curtis L. Olson - curt@me.umn.edu
|
||||
// Copyright (C) 1998 - 1999 Curtis L. Olson - curt@flightgear.org
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
|
@ -33,7 +33,7 @@
|
|||
#include <Debug/logstream.hxx>
|
||||
|
||||
#if defined( ENABLE_PLIB_JOYSTICK )
|
||||
# include <plib/js.h>
|
||||
# include <js.h> // plib include
|
||||
#elif defined( ENABLE_GLUT_JOYSTICK )
|
||||
# include <GL/glut.h>
|
||||
# include <XGL/xgl.h>
|
||||
|
|
|
@ -36,9 +36,10 @@ bin_PROGRAMS = fgfs
|
|||
bin_SCRIPTS = runfgfs runfgfs.bat
|
||||
|
||||
fgfs_SOURCES = \
|
||||
GLUTkey.cxx GLUTkey.hxx GLUTmain.cxx \
|
||||
fg_init.cxx fg_init.hxx \
|
||||
fg_serial.cxx fg_serial.hxx \
|
||||
keyboard.cxx keyboard.hxx \
|
||||
main.cxx \
|
||||
options.cxx options.hxx \
|
||||
splash.cxx splash.hxx \
|
||||
views.cxx views.hxx
|
||||
|
@ -66,7 +67,7 @@ fgfs_LDADD = \
|
|||
$(top_builddir)/Lib/Math/libMath.a \
|
||||
$(top_builddir)/Lib/Bucket/libBucket.a \
|
||||
$(top_builddir)/Lib/Debug/libDebug.a \
|
||||
-lpu -lfnt \
|
||||
-lpu -lfnt -lssg -lsg \
|
||||
$(top_builddir)/Lib/Misc/libMisc.a \
|
||||
$(top_builddir)/Lib/zlib/libz.a \
|
||||
$(opengl_LIBS)
|
||||
|
|
|
@ -62,6 +62,7 @@
|
|||
#include <Math/fg_geodesy.hxx>
|
||||
#include <Math/point3d.hxx>
|
||||
#include <Math/polar3d.hxx>
|
||||
#include <Misc/fgpath.hxx>
|
||||
#include <Scenery/scenery.hxx>
|
||||
#include <Scenery/tilemgr.hxx>
|
||||
#include <Time/event.hxx>
|
||||
|
@ -85,8 +86,40 @@ FG_USING_STD(string);
|
|||
extern const char *default_root;
|
||||
|
||||
|
||||
// Read in configuration (file and command line)
|
||||
bool fgInitConfig ( int argc, char **argv ) {
|
||||
// Attempt to locate and parse a config file
|
||||
// First check fg_root
|
||||
FGPath config( current_options.get_fg_root() );
|
||||
config.append( "system.fgfsrc" );
|
||||
current_options.parse_config_file( config.str() );
|
||||
|
||||
// Next check home directory
|
||||
char* envp = ::getenv( "HOME" );
|
||||
if ( envp != NULL ) {
|
||||
config.set( envp );
|
||||
config.append( ".fgfsrc" );
|
||||
current_options.parse_config_file( config.str() );
|
||||
}
|
||||
|
||||
// Parse remaining command line options
|
||||
// These will override anything specified in a config file
|
||||
if ( current_options.parse_command_line(argc, argv) !=
|
||||
fgOPTIONS::FG_OPTIONS_OK )
|
||||
{
|
||||
// Something must have gone horribly wrong with the command
|
||||
// line parsing or maybe the user just requested help ... :-)
|
||||
current_options.usage();
|
||||
FG_LOG( FG_GENERAL, FG_ALERT, "\nExiting ...");
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// Set initial position and orientation
|
||||
int fgInitPosition( void ) {
|
||||
bool fgInitPosition( void ) {
|
||||
string id;
|
||||
FGInterface *f;
|
||||
|
||||
|
@ -132,12 +165,12 @@ int fgInitPosition( void ) {
|
|||
<< (f->get_Latitude() * RAD_TO_DEG) << ", "
|
||||
<< (f->get_Altitude() * FEET_TO_METER) << ")" );
|
||||
|
||||
return(1);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// General house keeping initializations
|
||||
int fgInitGeneral( void ) {
|
||||
bool fgInitGeneral( void ) {
|
||||
string root;
|
||||
char *mesa_win_state;
|
||||
|
||||
|
@ -169,7 +202,7 @@ int fgInitGeneral( void ) {
|
|||
}
|
||||
#endif
|
||||
|
||||
return 1;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
@ -177,8 +210,7 @@ int fgInitGeneral( void ) {
|
|||
// initialization routines. If you are adding a subsystem to flight
|
||||
// gear, its initialization call should located in this routine.
|
||||
// Returns non-zero if a problem encountered.
|
||||
int fgInitSubsystems( void )
|
||||
{
|
||||
bool fgInitSubsystems( void ) {
|
||||
FGTime::cur_time_params = new FGTime();
|
||||
|
||||
FGInterface *f; // assigned later
|
||||
|
@ -422,7 +454,7 @@ int fgInitSubsystems( void )
|
|||
|
||||
FG_LOG( FG_GENERAL, FG_INFO, endl);
|
||||
|
||||
return(1);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -31,14 +31,18 @@
|
|||
#endif
|
||||
|
||||
|
||||
// Read in configuration (file and command line)
|
||||
bool fgInitConfig ( int argc, char **argv );
|
||||
|
||||
|
||||
// General house keeping initializations
|
||||
int fgInitGeneral ( void );
|
||||
bool fgInitGeneral ( void );
|
||||
|
||||
|
||||
// This is the top level init routine which calls all the other
|
||||
// initialization routines. If you are adding a subsystem to flight
|
||||
// gear, its initialization call should located in this routine.
|
||||
int fgInitSubsystems( void );
|
||||
bool fgInitSubsystems( void );
|
||||
|
||||
|
||||
// Reset
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
// GLUTkey.cxx -- handle GLUT keyboard events
|
||||
// keyboard.cxx -- handle GLUT keyboard events
|
||||
//
|
||||
// Written by Curtis Olson, started May 1997.
|
||||
//
|
||||
// Copyright (C) 1997 Curtis L. Olson - curt@me.umn.edu
|
||||
// Copyright (C) 1997 - 1999 Curtis L. Olson - curt@flightgear.org
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
|
@ -39,6 +39,8 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <pu.h> // plib include
|
||||
|
||||
#include <Debug/logstream.hxx>
|
||||
#include <Aircraft/aircraft.hxx>
|
||||
#include <Astro/solarsystem.hxx>
|
||||
|
@ -49,12 +51,11 @@
|
|||
#include <Include/fg_constants.h>
|
||||
#include <Scenery/tilemgr.hxx>
|
||||
#include <Objects/materialmgr.hxx>
|
||||
#include <plib/pu.h>
|
||||
#include <Time/fg_time.hxx>
|
||||
#include <Time/light.hxx>
|
||||
#include <Weather/weather.hxx>
|
||||
|
||||
#include "GLUTkey.hxx"
|
||||
#include "keyboard.hxx"
|
||||
#include "options.hxx"
|
||||
#include "views.hxx"
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
// GLUTkey.hxx -- handle GLUT keyboard events
|
||||
// keyboard.hxx -- handle GLUT keyboard events
|
||||
//
|
||||
// Written by Curtis Olson, started May 1997.
|
||||
//
|
||||
// Copyright (C) 1997 Curtis L. Olson - curt@infoplane.com
|
||||
// Copyright (C) 1997 - 1999 Curtis L. Olson - curt@flightgear.org
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
|
@ -21,8 +21,8 @@
|
|||
// $Id$
|
||||
|
||||
|
||||
#ifndef _GLUTKEY_HXX
|
||||
#define _GLUTKEY_HXX
|
||||
#ifndef _KEYBOARD_HXX
|
||||
#define _KEYBOARD_HXX
|
||||
|
||||
|
||||
#ifndef __cplusplus
|
||||
|
@ -47,6 +47,6 @@ void GLUTkey(unsigned char k, int x, int y);
|
|||
void GLUTspecialkey(int k, int x, int y);
|
||||
|
||||
|
||||
#endif // _GLUTKEY_HXX
|
||||
#endif // _KEYBOARD_HXX
|
||||
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
// GLUTmain.cxx -- top level sim routines
|
||||
// main.cxx -- top level sim routines
|
||||
//
|
||||
// Written by Curtis Olson for OpenGL, started May 1997.
|
||||
//
|
||||
// Copyright (C) 1997 Curtis L. Olson - curt@me.umn.edu
|
||||
// Copyright (C) 1997 - 1999 Curtis L. Olson - curt@flightgear.org
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
|
@ -20,8 +20,10 @@
|
|||
//
|
||||
// $Id$
|
||||
|
||||
|
||||
#define MICHAEL_JOHNSON_EXPERIMENTAL_ENGINE_AUDIO
|
||||
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
@ -53,6 +55,14 @@
|
|||
# include <unistd.h> /* for stat() */
|
||||
#endif
|
||||
|
||||
#include <pu.h> // plib include
|
||||
#include <ssg.h> // plib include
|
||||
|
||||
#ifdef ENABLE_AUDIO_SUPPORT
|
||||
# include <sl.h> // plib include
|
||||
# include <sm.h> // plib include
|
||||
#endif
|
||||
|
||||
#include <Include/fg_constants.h> // for VERSION
|
||||
#include <Include/general.hxx>
|
||||
|
||||
|
@ -62,11 +72,6 @@
|
|||
#include <Astro/stars.hxx>
|
||||
#include <Astro/solarsystem.hxx>
|
||||
|
||||
#ifdef ENABLE_AUDIO_SUPPORT
|
||||
# include <plib/sl.h>
|
||||
# include <plib/sm.h>
|
||||
#endif
|
||||
|
||||
#include <Autopilot/autopilot.hxx>
|
||||
#include <Cockpit/cockpit.hxx>
|
||||
#include <GUI/gui.h>
|
||||
|
@ -76,7 +81,6 @@
|
|||
#include <Math/polar3d.hxx>
|
||||
#include <Math/fg_random.h>
|
||||
#include <Misc/fgpath.hxx>
|
||||
#include <plib/pu.h>
|
||||
#include <Scenery/scenery.hxx>
|
||||
#include <Scenery/tilemgr.hxx>
|
||||
#include <Time/event.hxx>
|
||||
|
@ -85,8 +89,8 @@
|
|||
#include <Time/sunpos.hxx>
|
||||
#include <Weather/weather.hxx>
|
||||
|
||||
#include "GLUTkey.hxx"
|
||||
#include "fg_init.hxx"
|
||||
#include "keyboard.hxx"
|
||||
#include "options.hxx"
|
||||
#include "splash.hxx"
|
||||
#include "views.hxx"
|
||||
|
@ -124,6 +128,11 @@ slSample *s2;
|
|||
#endif
|
||||
|
||||
|
||||
// ssg variables
|
||||
ssgRoot *scene = NULL;
|
||||
ssgTransform *penguin = NULL;
|
||||
|
||||
|
||||
// The following defines flight gear options. Because glutlib will also
|
||||
// want to parse its own options, those options must not be included here
|
||||
// or they will get parsed by the main program option parser. Hence case
|
||||
|
@ -166,6 +175,10 @@ static void fgInitVisuals( void ) {
|
|||
xglEnable( GL_LIGHT0 );
|
||||
xglLightfv( GL_LIGHT0, GL_POSITION, l->sun_vec );
|
||||
|
||||
sgVec3 sunpos;
|
||||
sgSetVec3( sunpos, l->sun_vec[0], l->sun_vec[1], l->sun_vec[2] );
|
||||
ssgGetLight( 0 ) -> setPosition( sunpos );
|
||||
|
||||
// xglFogi (GL_FOG_MODE, GL_LINEAR);
|
||||
xglFogi (GL_FOG_MODE, GL_EXP2);
|
||||
// Fog density is now set when the weather system is initialized
|
||||
|
@ -274,6 +287,10 @@ static void fgRenderFrame( void ) {
|
|||
// set the sun position
|
||||
xglLightfv( GL_LIGHT0, GL_POSITION, l->sun_vec );
|
||||
|
||||
sgVec3 sunpos;
|
||||
sgSetVec3( sunpos, l->sun_vec[0], l->sun_vec[1], l->sun_vec[2] );
|
||||
ssgGetLight( 0 ) -> setPosition( sunpos );
|
||||
|
||||
clear_mask = GL_DEPTH_BUFFER_BIT;
|
||||
if ( current_options.get_wireframe() ) {
|
||||
clear_mask |= GL_COLOR_BUFFER_BIT;
|
||||
|
@ -376,6 +393,34 @@ static void fgRenderFrame( void ) {
|
|||
puDisplay();
|
||||
xglDisable ( GL_BLEND ) ;
|
||||
xglEnable( GL_FOG );
|
||||
|
||||
// ssg test
|
||||
cout << "trying to draw ssg scene" << endl;
|
||||
|
||||
xglMatrixMode(GL_PROJECTION);
|
||||
xglLoadIdentity();
|
||||
ssgSetFOV(60.0f, 0.0f);
|
||||
ssgSetNearFar(1.0f, 700.0f);
|
||||
sgCoord tuxpos;
|
||||
sgSetCoord( &tuxpos,
|
||||
current_view.view_pos.x() + current_view.view_forward[0]
|
||||
* 20,
|
||||
current_view.view_pos.y() + current_view.view_forward[1]
|
||||
* 20,
|
||||
current_view.view_pos.z() + current_view.view_forward[2]
|
||||
* 20,
|
||||
0.0, 0.0, 0.0 );
|
||||
penguin->setTransform( &tuxpos );
|
||||
|
||||
sgCoord campos;
|
||||
sgSetCoord( &campos,
|
||||
current_view.view_pos.x(),
|
||||
current_view.view_pos.y(),
|
||||
current_view.view_pos.z(),
|
||||
0, 0, 0 );
|
||||
ssgSetCamera( &campos );
|
||||
ssgCullAndDraw( scene );
|
||||
|
||||
}
|
||||
|
||||
xglutSwapBuffers();
|
||||
|
@ -817,23 +862,20 @@ static void fgIdleFunction ( void ) {
|
|||
// options.cxx needs to see this for toggle_panel()
|
||||
// Handle new window size or exposure
|
||||
void fgReshape( int width, int height ) {
|
||||
// Do this so we can call fgReshape(0,0) ourselves without having
|
||||
// to know what the values of width & height are.
|
||||
if ( (height > 0) && (width > 0) ) {
|
||||
if ( ! current_options.get_panel_status() ) {
|
||||
current_view.set_win_ratio( (GLfloat) width / (GLfloat) height );
|
||||
} else {
|
||||
current_view.set_win_ratio( (GLfloat) width /
|
||||
((GLfloat) (height)*0.4232) );
|
||||
}
|
||||
if ( ! current_options.get_panel_status() ) {
|
||||
current_view.set_win_ratio( (GLfloat) width / (GLfloat) height );
|
||||
xglViewport(0, 0 , (GLint)(width), (GLint)(height) );
|
||||
} else {
|
||||
current_view.set_win_ratio( (GLfloat) width /
|
||||
((GLfloat) (height)*0.4232) );
|
||||
xglViewport(0, (GLint)((height)*0.5768), (GLint)(width),
|
||||
(GLint)((height)*0.4232) );
|
||||
}
|
||||
|
||||
current_view.set_winWidth( width );
|
||||
current_view.set_winHeight( height );
|
||||
current_view.force_update_fov_math();
|
||||
|
||||
// Inform gl of our view window size (now handled elsewhere)
|
||||
// xglViewport(0, 0, (GLint)width, (GLint)height);
|
||||
if ( idle_state == 1000 ) {
|
||||
// yes we've finished all our initializations and are running
|
||||
// the main loop, so this will now work without seg faulting
|
||||
|
@ -965,10 +1007,6 @@ int main( int argc, char **argv ) {
|
|||
argc = ccommand( &argv );
|
||||
#endif
|
||||
|
||||
FGInterface *f;
|
||||
|
||||
f = current_aircraft.fdm_state;
|
||||
|
||||
#ifdef HAVE_BC5PLUS
|
||||
_control87(MCW_EM, MCW_EM); /* defined in float.h */
|
||||
#endif
|
||||
|
@ -978,40 +1016,15 @@ int main( int argc, char **argv ) {
|
|||
|
||||
FG_LOG( FG_GENERAL, FG_INFO, "Flight Gear: Version " << VERSION << endl );
|
||||
|
||||
string root;
|
||||
|
||||
FG_LOG( FG_GENERAL, FG_INFO, "General Initialization" );
|
||||
FG_LOG( FG_GENERAL, FG_INFO, "======= ==============" );
|
||||
|
||||
// seed the random number generater
|
||||
fg_srandom();
|
||||
|
||||
// Attempt to locate and parse a config file
|
||||
// First check fg_root
|
||||
FGPath config( current_options.get_fg_root() );
|
||||
config.append( "system.fgfsrc" );
|
||||
current_options.parse_config_file( config.str() );
|
||||
|
||||
// Next check home directory
|
||||
char* envp = ::getenv( "HOME" );
|
||||
if ( envp != NULL ) {
|
||||
config.set( envp );
|
||||
config.append( ".fgfsrc" );
|
||||
current_options.parse_config_file( config.str() );
|
||||
}
|
||||
|
||||
// Parse remaining command line options
|
||||
// These will override anything specified in a config file
|
||||
if ( current_options.parse_command_line(argc, argv) !=
|
||||
fgOPTIONS::FG_OPTIONS_OK )
|
||||
{
|
||||
// Something must have gone horribly wrong with the command
|
||||
// line parsing or maybe the user just requested help ... :-)
|
||||
current_options.usage();
|
||||
FG_LOG( FG_GENERAL, FG_ALERT, "\nExiting ...");
|
||||
// Load the configuration parameters
|
||||
if ( !fgInitConfig(argc, argv) ) {
|
||||
FG_LOG( FG_GENERAL, FG_ALERT, "Config option parsing failed ..." );
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
|
||||
// Initialize the Window/Graphics environment.
|
||||
if( !fgGlutInit(&argc, argv) ) {
|
||||
FG_LOG( FG_GENERAL, FG_ALERT, "GLUT initialization failed ..." );
|
||||
|
@ -1025,20 +1038,45 @@ int main( int argc, char **argv ) {
|
|||
exit(-1);
|
||||
}
|
||||
|
||||
// Init the user interface (we need to do this before passing off
|
||||
// control to glut and before fgInitGeneral to get our fonts !!!
|
||||
// Initialize ssg (from plib)
|
||||
ssgInit();
|
||||
|
||||
// Initialize the user interface (we need to do this before
|
||||
// passing off control to glut and before fgInitGeneral to get our
|
||||
// fonts !!!
|
||||
guiInit();
|
||||
|
||||
// First do some quick general initializations
|
||||
// Do some quick general initializations
|
||||
if( !fgInitGeneral()) {
|
||||
FG_LOG( FG_GENERAL, FG_ALERT,
|
||||
"General initializations failed ..." );
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
//
|
||||
// some ssg test stuff (requires data from the plib source
|
||||
// distribution) specifically from the ssg tux example
|
||||
//
|
||||
|
||||
ssgModelPath( "/h/curt/src/Libs/plib-1.0.12/examples/ssg/tux/data/" );
|
||||
ssgTexturePath( "/h/curt/src/Libs/plib-1.0.12/examples/ssg/tux/data/" );
|
||||
|
||||
scene = new ssgRoot;
|
||||
penguin = new ssgTransform;
|
||||
|
||||
ssgEntity *tux_obj = ssgLoadAC( "tuxedo.ac" );
|
||||
penguin->addKid( tux_obj );
|
||||
ssgFlatten( tux_obj );
|
||||
ssgStripify( penguin );
|
||||
|
||||
scene->addKid( penguin );
|
||||
|
||||
cout << "loaded ssg scene so it should be ready to go" << endl;
|
||||
|
||||
// pass control off to the master GLUT event handler
|
||||
glutMainLoop();
|
||||
|
||||
// we never actually get here ... but just in case ... :-)
|
||||
return(0);
|
||||
// we never actually get here ... but to avoid compiler warnings,
|
||||
// etc.
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -26,6 +26,8 @@
|
|||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <ssg.h> // plib include
|
||||
|
||||
#include <Aircraft/aircraft.hxx>
|
||||
#include <Cockpit/panel.hxx>
|
||||
#include <Debug/logstream.hxx>
|
||||
|
@ -93,6 +95,8 @@ void FGView::Init( void ) {
|
|||
|
||||
// Update the field of view coefficients
|
||||
void FGView::UpdateFOV( const fgOPTIONS& o ) {
|
||||
ssgSetFOV( o.get_fov(), 0.0 );
|
||||
|
||||
double fov, theta_x, theta_y;
|
||||
|
||||
fov = o.get_fov();
|
||||
|
@ -228,15 +232,17 @@ void FGView::UpdateViewParams( void ) {
|
|||
xglViewport(0, 0 , (GLint)(winWidth), (GLint)(winHeight) );
|
||||
} else {
|
||||
xglViewport(0, (GLint)((winHeight)*0.5768), (GLint)(winWidth),
|
||||
(GLint)((winHeight)*0.4232) );
|
||||
(GLint)((winHeight)*0.4232) );
|
||||
}
|
||||
|
||||
// Tell GL we are about to modify the projection parameters
|
||||
xglMatrixMode(GL_PROJECTION);
|
||||
xglLoadIdentity();
|
||||
if ( f->get_Altitude() * FEET_TO_METER - scenery.cur_elev > 10.0 ) {
|
||||
ssgSetNearFar( 10.0, 100000.0 );
|
||||
gluPerspective(current_options.get_fov(), win_ratio, 10.0, 100000.0);
|
||||
} else {
|
||||
ssgSetNearFar( 0.5, 100000.0 );
|
||||
gluPerspective(current_options.get_fov(), win_ratio, 0.5, 100000.0);
|
||||
// printf("Near ground, minimizing near clip plane\n");
|
||||
}
|
||||
|
@ -244,7 +250,7 @@ void FGView::UpdateViewParams( void ) {
|
|||
|
||||
xglMatrixMode(GL_MODELVIEW);
|
||||
xglLoadIdentity();
|
||||
|
||||
|
||||
// set up our view volume (default)
|
||||
#if !defined(FG_VIEW_INLINE_OPTIMIZATIONS)
|
||||
LookAt(view_pos.x(), view_pos.y(), view_pos.z(),
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
#include <vector>
|
||||
#include STL_STRING
|
||||
|
||||
#include <plib/sg.h>
|
||||
#include <sg.h> // plib includes
|
||||
|
||||
#include <Bucket/newbucket.hxx>
|
||||
#include <Math/mat3.h>
|
||||
|
|
Loading…
Add table
Reference in a new issue