doxygen: add newline after \file
[blender.git] / intern / elbeem / intern / ntl_ray.h
index 716a620..064fce2 100644 (file)
@@ -1,7 +1,10 @@
+/** \file
+ * \ingroup elbeem
+ */
 /******************************************************************************
  *
  * El'Beem - Free Surface Fluid Simulation with the Lattice Boltzmann Method
- * Copyright 2003,2004 Nils Thuerey
+ * Copyright 2003-2006 Nils Thuerey
  *
  * ray class
  *
 #include "ntl_geometryobject.h"
 #include "ntl_bsptree.h"
 
+#ifdef WITH_CXX_GUARDEDALLOC
+#  include "MEM_guardedalloc.h"
+#endif
+
 class ntlTriangle;
 class ntlRay;
 class ntlTree;
 class ntlScene;
 class ntlRenderGlobals;
+class ntlGeometryObject;
 
 //! store data for an intersection of a ray and a triangle
 // NOT YET USED
@@ -35,6 +43,11 @@ class ntlIntersection {
                ntlRay *ray; 
                ntlTriangle *tri;
                char flags;
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+       MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlIntersection")
+#endif
 };
 
 //! the main ray class
@@ -134,6 +147,10 @@ private:
        /*! ID of this ray (from renderglobals */
        int mID;
 
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+       MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlRay")
+#endif
 };
 
 
@@ -149,8 +166,6 @@ private:
 /*! Triangle flag defines */
 #define TRI_GEOMETRY      (1<<0)
 #define TRI_CASTSHADOWS   (1<<1)
-#define TRI_MAKECAUSTICS  (1<<2)
-#define TRI_NOCAUSTICS    (1<<3)
 
 
 class ntlTriangle
@@ -217,12 +232,16 @@ private:
        //int mNormalIndex; ??
        ntlVec3Gfx mNormal;
 
-       /*! Flags for object attributes cast shadows, make caustics etc. */
+       /*! Flags for object attributes cast shadows */
        int mFlags;
 
        /*! ID of last ray that an intersection was calculated for */
        int mLastRay;
 
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+       MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlTriangle")
+#endif
 };
 
 
@@ -325,28 +344,30 @@ public:
   /* CONSTRUCTORS */
   /*! Default constructor */
   ntlScene( ntlRenderGlobals *glob, bool del=true );
-  /*! Default destructor */
-   ~ntlScene();
+  /*! Default destructor  */
+  ~ntlScene();
 
        /*! Add an object to the scene */
        inline void addGeoClass(ntlGeometryClass *geo) { 
                mGeos.push_back( geo ); 
                geo->setObjectId(mGeos.size());
        }
+       /*! Add a geo object to the scene, warning - only needed for hand init */
+       inline void addGeoObject(ntlGeometryObject *geo) { mObjects.push_back( geo ); }
 
        /*! Acces a certain object */
        inline ntlGeometryObject *getObject(int id) { 
-               if(!mSceneBuilt) { errMsg("ntlScene::getObject","Scene not inited!"); return NULL; }
+               if(!mSceneBuilt) { errFatal("ntlScene::getObject","Scene not inited!", SIMWORLD_INITERROR); }
                return mObjects[id]; }
 
        /*! Acces object array */
        inline vector<ntlGeometryObject*> *getObjects() { 
-               if(!mSceneBuilt) { errMsg("ntlScene::getObjects[]","Scene not inited!"); return NULL; }
+               if(!mSceneBuilt) { errFatal("ntlScene::getObjects[]","Scene not inited!", SIMWORLD_INITERROR); }
                return &mObjects; }
 
        /*! Acces geo class array */
        inline vector<ntlGeometryClass*> *getGeoClasses() { 
-               if(!mSceneBuilt) { errMsg("ntlScene::getGeoClasses[]","Scene not inited!"); return NULL; }
+               if(!mSceneBuilt) { errFatal("ntlScene::getGeoClasses[]","Scene not inited!", SIMWORLD_INITERROR); }
                return &mGeos; }
 
        /*! draw scene with opengl */
@@ -400,15 +421,16 @@ private:
        /*! Tree to store quickly intersect triangles */
        ntlTree *mpTree;
 
-       /*! id of dislpay list for raytracer stuff */
-       int mDisplayListId;
-
        /*! was the scene successfully built? only then getObject(i) requests are valid */
        bool mSceneBuilt;
 
        /*! shader/obj initializations are only done on first init */
        bool mFirstInitDone;
 
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+       MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlScene")
+#endif
 };