00001 /* 00002 File: SceneLang.h 00003 00004 Function: Allows run-time definition of scenes in the standard 00005 imperative manner. 00006 00007 Author(s): Andrew Willmott 00008 00009 Copyright: (c) 1995-2000, Andrew Willmott 00010 */ 00011 00012 #ifndef __SceneLang__ 00013 #define __SceneLang__ 00014 00015 #include "gcl/Geometry.h" 00016 #include "gcl/Scene.h" 00017 #include "gcl/SLLibrary.h" 00018 00019 Void slInit(); 00020 // Call before using any other sl<function> calls 00021 00022 scObject *slCurrent(); 00024 scScenePtr slCurrentGroup(); 00026 00027 Bool slObjectExists(const Char *name); 00028 00029 scPrimitive *slObject(const Char *name); 00030 scPrimitive *slObject(scPrimitive *object); 00031 00032 scPrimitive *slObjectFile(StrConst filename); 00033 Void slAttribute(scAttribute *attrPtr); 00034 Void slEndAttribute(Int attr); 00035 00036 scScenePtr slBeginObject(const Char *name); 00037 Void slBeginObject(scScenePtr object); 00038 Void slEndObject(); 00039 00040 Void slPointList(); 00041 Int slPoint(const Point &p); 00042 00043 Void slColourList(); 00044 Int slColour(const Colour &c); 00045 00046 Void slNormalList(); 00047 Int slNormal(const Vector &n); 00048 00049 Void slCoordList(); 00050 Int slCoord(const Coord &c); 00051 Void slCoords(const CoordList &cl); 00052 00053 Void slPointIndexList(); 00054 Void slColourIndexList(); 00055 Void slCoordIndexList(); 00056 Void slNormalIndexList(); 00057 00058 Void slPointIndex(Int i); 00059 Void slColourIndex(Int i); 00060 Void slNormalIndex(Int i); 00061 Void slCoordIndex(Int i); 00062 00063 Void slPointIndexes(const IndexList &il); 00064 Void slColourIndexes(const IndexList &il); 00065 Void slNormalIndexes(const IndexList &il); 00066 Void slCoordIndexes(const IndexList &il); 00067 00068 Void slBeginFaces(); 00069 Void slFace(); 00070 Void slEndFaces(); 00071 00072 Void slEmittance(const Colour &c); 00073 Void slTexture(StrConst filename); 00074 00075 Void slPoly(); 00076 Void slCamera(); 00077 Void slTransform(const Transform &t); 00078 00079 Void slApply(const Transform &t); 00080 00081 scAttribute slGetAttribute(Int attr); 00082 scScenePtr slGetObject(Char* name); 00083 00084 Void slAddToLibrary(scGroup *newGroup); 00085 SLLibrary *slSwapLibrary(SLLibrary *newLib); 00086 Void slSetLibrary(SLLibrary *library); 00087 SLLibrary *slGetLibrary(); 00088 00089 Void slIndex(scAttributeID id, Int i); 00090 Void slIndexList(scAttributeID id); 00091 00092 Void slMeshType(RenderStyle renStyle); 00093 00094 SLContext *slGetContext(); 00095 #define SL_GET(X) ((sc ## X *) slGetContext()->Get(a ## X)) 00096 00097 /* 00098 Example: 00099 00100 slPointList(); slPoint(a); slPoint(b); slPoint(c); slPoint(d); 00101 slBeginFaces(); 00102 slIndexes(Indexes(0, 1, 2, IDX_END)); 00103 slFace(); 00104 slIndexes(Indexes(2, 3, 0, IDX_END)); 00105 slFace(); 00106 slEndFaces(); 00107 */ 00108 00109 00110 #endif