00001 /*
00002 File: GCLApp.h
00003
00004 Function: Useful routines for any GCL application that must deal
00005 with a scene and avars
00006
00007 Author: Andrew Willmott
00008
00009 Copyright: (c) 1999-2000, Andrew Willmott
00010 */
00011
00012 #ifndef __GCLApp__
00013 #define __GCLApp__
00014
00015 #include "cl/ArgParse.h"
00016 #include "gcl/GCLConfig.h"
00017 #include "gcl/SceneLang.h"
00018 #ifndef GCL_NO_GL
00019 #include "gcl/ScenePane.h"
00020 #endif
00021 #include "gcl/Animation.h"
00022
00023 typedef NArray<String> StringArray;
00024
00025 class GCLApp
00026 {
00027 public:
00028 GCLApp();
00029
00030 Void ReadScene(FileName &sceneFile);
00031 Void SetAvars(scScenePtr scene);
00032 Void SetAvarsFromAnim(scScenePtr scene);
00033
00034 ArgForm *GetOptionList();
00035
00036 // options
00037 Int xsize;
00038 Int ysize;
00039 Colour bgColour;
00040 Int noScale;
00041 Int zUp;
00042 Int zDown;
00043
00044 static Void GetFileArgs(Int argc, Char *argv[]);
00045 static Void GetAvarArgs(Int argc, Char *argv[]);
00046
00047 static Char **files;
00048 static Int numFiles;
00049 static StrConstArray avarNames;
00050 static ScalarList avarVals;
00051
00052 // fields
00053 scScenePtr scene;
00054 scCamera *itsCamera;
00055 #ifndef GCL_NO_GL
00056 ScenePane *itsScenePane;
00057 #endif
00058 // animation
00059 Int frame;
00060 Double time;
00061 Double fps;
00062 Animation *anim;
00063 scAvarList *avarList;
00064 };
00065
00066 #endif