00001 /* 00002 * PROPRIETARY INFORMATION. This software is proprietary to 00003 * Side Effects Software Inc., and is not to be reproduced, 00004 * transmitted, or disclosed in any way without written permission. 00005 * 00006 * Produced by: 00007 * Side Effects 00008 * 477 Richmond Street West 00009 * Toronto, Ontario 00010 * Canada M5V 3E7 00011 * 416-504-9876 00012 */ 00013 00014 #ifndef __POP_ParticleList_h__ 00015 #define __POP_ParticleList_h__ 00016 00017 #include "POP_API.h" 00018 class GEO_PrimParticle; 00019 class POP_Node; 00020 class POP_ParticleList; 00021 class GEO_Detail; 00022 00023 // The POP_ParticleList is just a linked list of particle primitives used 00024 // to keep track of which primitives each POP is supposed to process. 00025 00026 class POP_API POP_ParticleNode 00027 { 00028 public: 00029 00030 GEO_PrimParticle* myPart; 00031 POP_Node* myPop; 00032 POP_ParticleNode* myNext; 00033 }; 00034 00035 class POP_API POP_ParticleList 00036 { 00037 public: 00038 POP_ParticleList (void); 00039 virtual ~POP_ParticleList (void); 00040 00041 void clear (void); 00042 virtual POP_ParticleNode* add (GEO_PrimParticle* part, 00043 POP_Node* pop = NULL); 00044 void merge (const POP_ParticleList* list); 00045 void copyNewGdp (const POP_ParticleList& list, 00046 const GEO_Detail *gdp); 00047 GEO_PrimParticle* iterateInit (void); 00048 GEO_PrimParticle* iterateNext (void); 00049 POP_ParticleNode* find (GEO_PrimParticle* part) const; 00050 int isEmpty (void) { return(!myHead); } 00051 00052 protected: 00053 POP_ParticleNode* myHead; 00054 POP_ParticleNode* myCurr; 00055 }; 00056 #endif
1.5.9