home *** CD-ROM | disk | FTP | other *** search
/ VRML Tools for 3D Cyberspace / VRML_Tools_For_3D_Cyberspace.iso / amber / include / amber.hpp next >
Encoding:
C/C++ Source or Header  |  1996-07-01  |  3.3 KB  |  141 lines

  1. //**********************************************************************
  2. //  DIVE Laboratories, Inc.
  3. //  Copyright(c) 1995
  4. //  All rights reserved.
  5. //  FILE:   AMBER.HPP
  6. //
  7. //  DESCRIPTION
  8. //  This file provides the function prototypes for the amberClass
  9. //
  10. //  Author: M. Doucet
  11. //
  12. //  Modification History:
  13. //  4/28/95    Created
  14. //
  15. //**********************************************************************
  16. #ifndef _AMBER_HPP
  17. #define _AMBER_HPP
  18.  
  19. #include "messages.hpp"
  20. #include "vrtypes.hpp"
  21. #include "position.hpp"
  22. #include "quat.hpp"
  23. #include "vector.hpp"
  24. #include "vertex.hpp"
  25. #include "line.hpp"
  26. #include "triangle.hpp"
  27. #include "polygon.hpp"
  28. #include "geometry.hpp"
  29. #include "slink.hpp"
  30. #include "univ.hpp"
  31. #include "channel.hpp"
  32. #include "sim.hpp"
  33.  
  34. #define MAX_VERTS 60000
  35. #define MAX_POLYS    20000
  36. #define MAX_GEOS    2000
  37. #define MAX_CHANS    25
  38. #define MAX_UNIVS 20
  39.  
  40. class amberPrivateClass;
  41.  
  42. class amberClass {
  43.  
  44.     friend class geometryClass;
  45.     friend class geometryPrivateClass;
  46.     friend class universeClass;
  47.     friend class vertexClass;
  48.     friend class polygonClass;
  49.     friend class channelClass;
  50.     friend class materialClass;
  51.     friend class textureClass;
  52.  
  53. private:
  54.     
  55.     amberPrivateClass *data;
  56.  
  57. public:
  58. #ifdef AMBER_3DR
  59.     void     *currentGC;
  60.     unsigned long currentRC;
  61. #endif
  62.  
  63.     int  getUnusedDisplayListIndex();
  64.  
  65.     int  addVertex(vertexClass *in);
  66.     int  addPolygon(polygonClass *in);
  67.     int  addGeometry(geometryClass *in);
  68.     void addGeoToAll(geometryClass *in);
  69.     int  addChannel(channelClass *in);
  70.     int  addUniverse(universeClass *in);
  71.  
  72.     int  getNextVertexIndex();
  73.     int  getNextPolygonIndex();
  74.     int  getNextGeometryIndex();
  75.     int  getNextChannelIndex();
  76.     int  getNextUniverseIndex();
  77.  
  78.     // These routines get the objects stored in amber arrays
  79.     //
  80.     vertexClass             *getVertex(int index);
  81.     polygonClass             *getPolygon(int index);
  82.     geometryClass            *getGeometry(int index);
  83.     channelClass            *getChannel(int index);
  84.     universeClass             *getUniverse(int index);
  85.  
  86.     // These routines determine the universe we are using
  87.     //
  88.     universeClass *getCurrentUniverse();
  89.     int               getCurrentUniverseIndex();
  90.     void                 setCurrentUniverse(int index);
  91.  
  92.     // Texuture Management
  93.     textureClass *amberClass::findTexture(char *name);
  94.  
  95.     // Material Management
  96.     materialClass *amberClass::findMaterial(char *name);
  97.  
  98.     // Memory Management
  99.     //
  100.     void deleteAllTextures();     // Deletes all textures
  101.     void deleteAllMaterials();     // Deletes all materials
  102.     void deleteAllGeos();       // Deletes all loaded geometries, polygons, and vertices
  103.     void deleteAllChannels();   // Deletes all channels
  104.     void deleteAllUniverses();     // Deletes all universes
  105.  
  106. #ifdef INDIGO2
  107.    void  *getAppContext();
  108. #endif
  109.  
  110.     // This routine is used by the amber thread
  111.     //
  112. #ifndef AMBERRT
  113.     void setRenderChannel(channelClass  *channel);
  114.     channelClass *getCurrentChannel();
  115. #endif
  116.     void executeThread();
  117.  
  118. #ifdef SHAREWARE
  119.     amberClass();
  120. #else
  121.     amberClass(int maxVertice =MAX_VERTS,
  122.                int maxPolygon =MAX_POLYS,
  123.                   int maxGeometry=MAX_GEOS,
  124.                   int maxChannel =MAX_CHANS,
  125.                   int maxUniverse=MAX_UNIVS);
  126. #endif
  127.     ~amberClass();
  128.  
  129. };
  130.  
  131. extern amberClass *getDLLamber();
  132.  
  133. #endif
  134.  
  135. #ifdef _AMBER_OBJ
  136. amberClass *amber=(amberClass *)NULL;
  137. #else
  138. extern amberClass *amber;
  139. #endif
  140.  
  141.