Home | nevrax.com |
|
vegetable_instance_group.cppGo to the documentation of this file.00001 00007 /* Copyright, 2001 Nevrax Ltd. 00008 * 00009 * This file is part of NEVRAX NEL. 00010 * NEVRAX NEL is free software; you can redistribute it and/or modify 00011 * it under the terms of the GNU General Public License as published by 00012 * the Free Software Foundation; either version 2, or (at your option) 00013 * any later version. 00014 00015 * NEVRAX NEL is distributed in the hope that it will be useful, but 00016 * WITHOUT ANY WARRANTY; without even the implied warranty of 00017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00018 * General Public License for more details. 00019 00020 * You should have received a copy of the GNU General Public License 00021 * along with NEVRAX NEL; see the file COPYING. If not, write to the 00022 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, 00023 * MA 02111-1307, USA. 00024 */ 00025 00026 #include "std3d.h" 00027 00028 #include "3d/vegetable_instance_group.h" 00029 00030 00031 namespace NL3D 00032 { 00033 00034 00035 // *************************************************************************** 00036 CVegetableInstanceGroup::CVegetableInstanceGroup() 00037 { 00038 _ClipOwner= NULL; 00039 _SortOwner= NULL; 00040 _HasZSortPassInstances= false; 00041 _TriangleQuadrantOrderNumTriangles= 0; 00042 _ULPrec= this; 00043 _ULNext= this; 00044 _ULNumVertices= 0; 00045 } 00046 00047 00048 // *************************************************************************** 00049 CVegetableInstanceGroup::~CVegetableInstanceGroup() 00050 { 00051 unlinkUL(); 00052 } 00053 00054 00055 // *************************************************************************** 00056 void CVegetableInstanceGroup::linkBeforeUL(CVegetableInstanceGroup *igNext) 00057 { 00058 nlassert(igNext); 00059 00060 // first, unlink others from me. NB: works even if _ULPrec==_ULNext==this. 00061 _ULNext->_ULPrec= _ULPrec; 00062 _ULPrec->_ULNext= _ULNext; 00063 // link to igNext. 00064 _ULNext= igNext; 00065 _ULPrec= igNext->_ULPrec; 00066 // link others to me. 00067 _ULNext->_ULPrec= this; 00068 _ULPrec->_ULNext= this; 00069 } 00070 00071 // *************************************************************************** 00072 void CVegetableInstanceGroup::unlinkUL() 00073 { 00074 // unlink others from me. NB: works even if _ULPrec==_ULNext==this. 00075 _ULNext->_ULPrec= _ULPrec; 00076 _ULPrec->_ULNext= _ULNext; 00077 // reset 00078 _ULPrec= this; 00079 _ULNext= this; 00080 } 00081 00082 00083 // *************************************************************************** 00084 CVegetableInstanceGroupReserve::CVegetableInstanceGroupReserve() 00085 { 00086 } 00087 00088 00089 // *************************************************************************** 00090 bool CVegetableInstanceGroup::isEmpty() const 00091 { 00092 for(uint i=0; i<NL3D_VEGETABLE_NRDRPASS; i++) 00093 { 00094 const CVegetableRdrPass &vegetRdrPass= _RdrPass[i]; 00095 // If some triangles to render, the ig is not empty 00096 if(vegetRdrPass.NTriangles != 0) 00097 return false; 00098 } 00099 00100 // for all pass, no triangles to render => the ig is empty. 00101 return true; 00102 } 00103 00104 00105 00106 } // NL3D |