00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef __SIM_Visualization_h__
00016 #define __SIM_Visualization_h__
00017
00018 #include "SIM_API.h"
00019 #include "SIM_DataUtils.h"
00020 #include "SIM_OptionsUser.h"
00021
00022 #include <UT/UT_RefArray.h>
00023 #include <UT/UT_IntArray.h>
00024 #include <GU/GU_Detail.h>
00025
00026 struct simVisualizationItem
00027 {
00028 UT_IntArray myAttributes;
00029 UT_Vector3 myColor;
00030 };
00031
00032
00033
00034
00035 class SIM_API SIM_Visualization : public SIM_Data
00036 {
00037 protected:
00038 explicit SIM_Visualization(const SIM_DataFactory *factory);
00039 virtual ~SIM_Visualization();
00040
00041
00042 virtual void renderPointAttribs() const;
00043 virtual void getPointVectorAttribs(
00044 UT_RefArray<simVisualizationItem> & ,
00045 fpreal & ) const {}
00046 virtual void getPointQuaternionAttribs(
00047 UT_RefArray<simVisualizationItem> & ,
00048 UT_Vector3Array & ,
00049 fpreal & ) const {}
00050
00051
00052 virtual void renderPrimAttribs() const;
00053 virtual void getPrimFloatAttribs(
00054 UT_RefArray<simVisualizationItem> & ,
00055 fpreal & ) const {}
00056
00057
00058 virtual void renderVertexAttribs() const;
00059 virtual void getEdgeFloatAttribs(
00060 UT_RefArray<simVisualizationItem> & ,
00061 fpreal & ) const {}
00062 virtual void highlightEdge(const GEO_PrimPoly & ,
00063 int ,
00064 const UT_Vector3 &) const {}
00065
00066
00067 virtual void renderImpacts() const;
00068 virtual bool getShowImpacts() const { return false; }
00069 virtual UT_Vector3 getImpactColor() const { return UT_Vector3(0, 0, 0); }
00070 virtual fpreal getImpactScale() const { return 1; }
00071 virtual bool getImpactScaleByImpulse() const { return true; }
00072 virtual bool getImpactShowAsVector() const { return false; }
00073 virtual bool getShowSubstepImpacts() const { return false; }
00074
00075 virtual SIM_Guide *createGuideObjectSubclass() const;
00076 virtual void buildGuideGeometrySubclass(const SIM_RootData &root,
00077 const SIM_Options &options,
00078 const GU_DetailHandle &gdh,
00079 UT_DMatrix4 *xform,
00080 const SIM_Time &t) const;
00081
00082 mutable const SIM_Options *myOptions;
00083 mutable const GU_Detail *myInGdp;
00084 mutable GU_Detail *myOutGdp;
00085 mutable int myAttOutCd;
00086 mutable const SIM_Object *myObject;
00087 mutable UT_DMatrix4 *myOutXform;
00088 mutable const SIM_Time *myTime;
00089 };
00090 #endif
00091