00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __SIM_MatrixFieldVisualization_H__
00022 #define __SIM_MatrixFieldVisualization_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_MatrixField;
00035
00036
00037 class SIM_API SIM_MatrixFieldVisualization : 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
00044 GET_GUIDE_FUNC_F("guideiso", GuideIso, 0.0);
00045 GET_GUIDE_FUNC_B("guideusebox", GuideUseBox, false);
00046 GET_GUIDE_FUNC_B("guideuseboxhash", GuideUseBoxHash, false);
00047 GET_GUIDE_FUNC_B("guideusesmoke", GuideUseSmoke, false);
00048
00049 GET_GUIDE_FUNC_B("guideuseplane", GuideUsePlane, false);
00050 GET_GUIDE_FUNC_I("guideplane", GuidePlane, 0);
00051 GET_GUIDE_FUNC_I("guidevismode", GuideVisMode, 0);
00052 GET_GUIDE_FUNC_V2("guiderange", GuideRange, (0, 1));
00053 GET_GUIDE_FUNC_V3("guideplanepos", GuidePlanePos, (0, 0, 0));
00054
00055 protected:
00056 explicit SIM_MatrixFieldVisualization(const SIM_DataFactory *factory);
00057 virtual ~SIM_MatrixFieldVisualization();
00058
00059
00060 virtual void initializeSubclass();
00061
00062 virtual bool getIsAlternateRepresentationSubclass() const;
00063 virtual void initAlternateRepresentationSubclass(const SIM_Data &);
00064 virtual SIM_Guide *createGuideObjectSubclass() const;
00065 virtual void buildGuideGeometrySubclass(const SIM_RootData &root,
00066 const SIM_Options &options,
00067 const GU_DetailHandle &gdh,
00068 UT_DMatrix4 *xform,
00069 const SIM_Time &t) const;
00070
00071 private:
00072 static const SIM_DopDescription *getMatrixFieldVisualizationDopDescription();
00073
00074 const SIM_MatrixField *myMatrixField;
00075
00076
00077 static float pointDensity(const UT_Vector3 &pos);
00078 static const SIM_MatrixField*theCurrentField;
00079 static fpreal theCurrentIso;
00080 static UT_BoundingBox theCurrentBBox;
00081
00082 DECLARE_STANDARD_GETCASTTOTYPE();
00083
00084 DECLARE_DATAFACTORY(SIM_MatrixFieldVisualization,
00085 SIM_Data,
00086 "MatrixFieldVisualization",
00087 getMatrixFieldVisualizationDopDescription());
00088 };
00089
00090 #endif