00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __SIM_IndexFieldVisualization_H__
00022 #define __SIM_IndexFieldVisualization_H__
00023
00024 #include "SIM_API.h"
00025 #include <UT/UT_Vector2.h>
00026 #include <UT/UT_Vector3.h>
00027
00028 #include "SIM_Names.h"
00029 #include "SIM_OptionsUser.h"
00030 #include "SIM_DataUtils.h"
00031
00032 class UT_IStream;
00033 class SIM_Geometry;
00034 class SIM_IndexField;
00035
00036
00037 class SIM_API SIM_IndexFieldVisualization : public SIM_Data,
00038 public SIM_OptionsUser
00039 {
00040 public:
00041 GET_GUIDE_FUNC_B(SIM_NAME_SHOWGUIDE, ShowGuide, true);
00042 GET_GUIDE_FUNC_V3(SIM_NAME_COLOR, Color, (1, 1, 1));
00043 GET_GUIDE_FUNC_I("guideindex", GuideIndex, 0);
00044 GET_GUIDE_FUNC_B("guideinvert", GuideInvert, false);
00045 GET_GUIDE_FUNC_B("usebox", UseBox, false);
00046 GET_GUIDE_FUNC_B("useboxhash", UseBoxHash, false);
00047
00048 GET_GUIDE_FUNC_B("guideuseplane", GuideUsePlane, false);
00049 GET_GUIDE_FUNC_I("guideplane", GuidePlane, 0);
00050 GET_GUIDE_FUNC_I("guidevismode", GuideVisMode, 0);
00051 GET_GUIDE_FUNC_V2("guiderange", GuideRange, (0, 1));
00052 GET_GUIDE_FUNC_V3("guideplanepos", GuidePlanePos, (0, 0, 0));
00053
00054 protected:
00055 explicit SIM_IndexFieldVisualization(const SIM_DataFactory *factory);
00056 virtual ~SIM_IndexFieldVisualization();
00057
00058
00059 virtual void initializeSubclass();
00060
00061 virtual bool getIsAlternateRepresentationSubclass() const;
00062 virtual void initAlternateRepresentationSubclass(const SIM_Data &);
00063 virtual SIM_Guide *createGuideObjectSubclass() const;
00064 virtual void buildGuideGeometrySubclass(const SIM_RootData &root,
00065 const SIM_Options &options,
00066 const GU_DetailHandle &gdh,
00067 UT_DMatrix4 *xform,
00068 const SIM_Time &t) const;
00069
00070 private:
00071 static const SIM_DopDescription *getIndexFieldVisualizationDopDescription();
00072
00073 const SIM_IndexField *myIndexField;
00074
00075
00076 static float pointDensity(const UT_Vector3 &pos);
00077 static const SIM_IndexField*theCurrentField;
00078 static UT_BoundingBox theCurrentBBox;
00079 static int64 theCurrentIso;
00080 static bool theInvertGuide;
00081
00082 DECLARE_STANDARD_GETCASTTOTYPE();
00083
00084 DECLARE_DATAFACTORY(SIM_IndexFieldVisualization,
00085 SIM_Data,
00086 "IndexFieldVisualization",
00087 getIndexFieldVisualizationDopDescription());
00088 };
00089
00090 #endif