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 Software Inc. 00009 * 20 Maud St. 00010 * Toronto, Ontario, M5V 2M5 00011 * Canada 00012 * 416-366-4607 00013 * 00014 * NAME: Geometry Library (C++) 00015 * 00016 * COMMENTS: 00017 * 00018 */ 00019 00020 #ifndef __GEO_PrimMetaBall_H__ 00021 #define __GEO_PrimMetaBall_H__ 00022 00023 #include "GEO_API.h" 00024 #include <UT/UT_Vector3.h> 00025 #include "GEO_MetaPrim.h" 00026 #include "GEO_PrimSphere.h" 00027 00028 class TS_MetaEllipsoid; 00029 00030 class GEO_API GEO_PrimMetaBall : public GEO_PrimSphere, public GEO_MetaPrim { 00031 public: 00032 GEO_PrimMetaBall(GEO_Detail *d); 00033 virtual ~GEO_PrimMetaBall(); 00034 00035 virtual unsigned getPrimitiveId() const; 00036 virtual void copyPrimitive(const GEO_Primitive *src, 00037 GEO_Point **ptredirect); 00038 virtual int isDegenerate() const; 00039 virtual GEO_Primitive *copy(int preserve_shared_pts = 0) const; 00040 00041 // 00042 // Methods to handle meta interface 00043 virtual void initTSdata(); 00044 virtual TS_MetaPrimitive *getMetaPrim(); 00045 00046 // A function that allocates a new TS_MetaEllipsoid and returns it. 00047 // Used in the metaExpression parser to handle multiple instances 00048 // of a metaball being used in the same expression 00049 virtual TS_MetaPrimitive *getNewMetaPrim(); 00050 00051 virtual GEO_MetaPrim *castToMetaPrim(); 00052 virtual const GEO_MetaPrim *castToMetaPrim() const; 00053 00054 // Have we been deactivated and stashed? 00055 virtual void stashed(int onoff); 00056 00057 protected: 00058 virtual void copyOffsetPrimitive(const GEO_Primitive *src, 00059 int basept); 00060 virtual int savePrivate(ostream &os, int binary) const; 00061 virtual bool loadPrivate(UT_IStream &is); 00062 00063 private: 00064 00065 TS_MetaEllipsoid *tsData; 00066 char myStashedState; 00067 }; 00068 #endif
1.5.9