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 * Mark Elendt 00008 * Side Effects 00009 * 477 Richmond Street West 00010 * Toronto, Ontario 00011 * Canada M5V 3E7 00012 * 416-504-9876 00013 * 00014 * NAME: GEO library (C++) 00015 * 00016 * COMMENTS: Particle Render Options 00017 * 00018 */ 00019 00020 #ifndef __GEO_PartRender_h__ 00021 #define __GEO_PartRender_h__ 00022 00023 #include "GEO_API.h" 00024 #include <iostream.h> 00025 class UT_IStream; 00026 00027 /// Geometry type to use when rendering particles. 00028 typedef enum { 00029 GEO_PARTICLE_SPHERE, ///< Render as spheres 00030 GEO_PARTICLE_CIRCLE, ///< Render as oriented circles 00031 GEO_PARTICLE_LINE, ///< Render as lines 00032 GEO_PARTICLE_TUBE, ///< Render as open tubes 00033 GEO_PARTICLE_TUBEC, ///< Render as capped tubes 00034 GEO_PARTICLE_TUBES ///< Render as rounded tubes 00035 } GEO_PART_TYPE; 00036 00037 #define GEO_PART_MOTIONBLUR 0x0001 ///< Particles are motion blurred 00038 #define GEO_PART_SPHERENML 0x0002 ///< Oriented circles use sphere normals 00039 #define GEO_PART_VIRTUAL 0x0004 ///< Particles not to be rendered 00040 00041 /// A class to manage the various settings that control how a particle system 00042 /// should be rendered. 00043 class GEO_API GEO_PartRender { 00044 public: 00045 GEO_PartRender(); 00046 ~GEO_PartRender(); 00047 00048 int save(ostream &os, int binary) const; 00049 bool load(UT_IStream &is); 00050 00051 void setSize(float radius) { mySize = radius; } 00052 void setBlurTime(float bt) { myBlurTime = bt; } 00053 void setType(GEO_PART_TYPE t){ myType = t; } 00054 void setMotionBlur(int onOff) 00055 { 00056 if (onOff) myFlag |= GEO_PART_MOTIONBLUR; 00057 else myFlag &= ~GEO_PART_MOTIONBLUR; 00058 } 00059 void setSphereNormals(int onOff) 00060 { 00061 if (onOff) myFlag |= GEO_PART_SPHERENML; 00062 else myFlag &= ~GEO_PART_SPHERENML; 00063 } 00064 void setVirtual(int onOff) 00065 { 00066 if (onOff) myFlag |= GEO_PART_VIRTUAL; 00067 else myFlag &= ~GEO_PART_VIRTUAL; 00068 } 00069 00070 00071 float getSize() const { return mySize; } 00072 float getBlurTime() const { return myBlurTime; } 00073 GEO_PART_TYPE getType() const { return myType; } 00074 int isMotionBlur() const 00075 { return myFlag & GEO_PART_MOTIONBLUR; } 00076 int isSphereNormal() const 00077 { return myFlag & GEO_PART_SPHERENML; } 00078 int isVirtual() const 00079 { return myFlag & GEO_PART_VIRTUAL; } 00080 00081 private: 00082 int myFlag; 00083 float mySize; 00084 float myBlurTime; 00085 GEO_PART_TYPE myType; 00086 }; 00087 00088 #endif
1.5.9