VR-Forces 4.0.4 Class Documentation
include/vrvOsg/DtExtrudedLineModelInstance.h
Go to the documentation of this file.
00001 /******************************************************************************
00002 ** Copyright (c) 2012 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 ******************************************************************************/
00005 
00009 
00010 #pragma once
00011 
00012 #include <vrvOsg/vrvOsg.h>
00013 #include <vrvOsg/DtOsgModelInstance.h>
00014 
00015 #include <matrix/vlVector.h>
00016 
00017 #include <osg/PrimitiveSet>
00018 #include <osg/Geometry>
00019 
00020 namespace osg
00021 {
00022    class Geode;
00023    class Array;
00024    class Texture;
00025    class LineWidth;
00026    class Group;
00027 }
00028 
00029 namespace makVrv
00030 {
00031    class DtOsgSegmentPickable;
00032 
00035    class DT_DLL_VRVOSG DtExtrudedLineModelInstance : public DtOsgModelInstance
00036    {
00037    public:
00038       enum LineExtrusionMode
00039       {
00040          LineOnly,
00041          ExtrudeWidth,
00042          ExtrudeHeight,
00043          FullExtrusion
00044       };
00045 
00047       DtExtrudedLineModelInstance(DtDe& de);
00048 
00050       virtual ~DtExtrudedLineModelInstance();
00051 
00053       virtual void addPoint(const DtVector&, int index = -1);
00054 
00056       virtual void removePoint(int index);
00057 
00059       virtual void setPosition(int index, const DtVector&);
00060 
00062       virtual void clearPoints();
00063 
00066       virtual bool realize(DtModelDefinition& definition);
00067 
00069       virtual void  addToConnector( DtOsgSceneConnector* connector );
00070 
00072       virtual bool removeFromConnector( DtOsgSceneConnector* connector );
00073 
00075       virtual void setStipplePattern(unsigned int);
00076 
00078       virtual void setColor(float r,float g,float b,float a);
00079 
00081       virtual void setTextureHeight(double height);
00082       
00084       virtual void setTextureWidth(double width);
00085 
00087       virtual void setTexture(osg::Texture* texture);
00088 
00090       virtual void setUpExtent(float height);
00091 
00093       virtual void setDownExtent(float height);
00094 
00096       virtual void setLeftExtent(float height);
00097 
00099       virtual void setRightExtent(float heigh);
00100 
00102       virtual void setWidth(float);
00103 
00106       virtual void setHeight(float);
00107 
00109       virtual void setDimensions(float width, float height);
00110       
00113       virtual void setLineWidth(float width);
00114       
00116       virtual void setScribed(bool b);
00117 
00120       virtual void setScribeColor(float r, float g, float b, float a);
00121 
00123       virtual void setScribeOccluded(bool b);
00124 
00126       virtual void setOcclusionEnabled(bool enabled);
00127 
00129       virtual void setVisible(bool isVisible) {}
00130 
00132       int pointCount() const
00133       {
00134          return myLinePoints.size();
00135       }
00136 
00138       const DtVector& point(int) const;
00139 
00141       virtual void setPickable(bool);
00142 
00144       bool pickable() const;
00145 
00147       void setOrigin(const DtVector& origin);
00148 
00150       virtual void updatePoints();
00151 
00153       virtual void setSolid(bool);
00154 
00156       virtual void update();
00157 
00158    protected:
00159 
00161       virtual void updateMode();
00162 
00164       virtual void updateGeometry();
00165 
00167       virtual void updateTextureCoordinates();
00168 
00170       virtual void addPointsForExtentExtrusion(const DtVector& point);
00171 
00173       virtual void addFaceForRotation(const osg::Quat& rotation, const DtVector& point);
00174 
00176       virtual void addPointsForFullExtrusion(const DtVector& from,
00177          const DtVector& to);
00178 
00180       virtual void updateStippling();
00181 
00183       virtual void updateScribeLine();
00184 
00186       virtual void updateColors();
00187 
00189       virtual bool frontAndBackFaceRendered() const;
00190 
00191       virtual void updatePointsForLineStrip();
00192       virtual void updatePointsForTriangleStrip();
00193       virtual void updatePointsForExtrusion();
00194       virtual void createFaces();
00195       virtual void updateScribeForTriangleStrip();
00196       virtual void updateScribeForExtrusion(osg::Vec3Array*);
00197 
00198    protected:
00199       typedef std::vector<DtVector> PointVector;
00200 
00201       osg::ref_ptr<osg::Geode> myShapeGeode;
00202       osg::ref_ptr<osg::Geometry> myShapeGeometry;
00203       osg::ref_ptr<osg::Vec3Array> myShapePoints;
00204 
00205       osg::ref_ptr<osg::Geode> myScribeGeode;
00206       osg::ref_ptr<osg::Geometry> myScribeGeometry;
00207       osg::ref_ptr<osg::Vec3Array> myScribePoints;
00208       
00209       osg::ref_ptr<osg::Texture> myTexture;
00210       osg::ref_ptr<osg::Vec2Array> myTextureCoordinates;
00211 
00212       osg::ref_ptr<osg::LineWidth> myLineWidth;
00213       osg::ref_ptr<osg::Group> myMainTransform;
00214 
00218       osg::ref_ptr<osg::Vec3Array> myFaces;
00219 
00220       osg::Vec4 myColor;
00221 
00222       double myTextureWidth;
00223       double myTextureHeight;
00224 
00225       float myUpExtent;
00226       float myDownExtent;
00227       float myLeftExtent;
00228       float myRightExtent;
00229 
00230       PointVector myLinePoints;
00231       DtVector myOrigin;
00232 
00233       bool myGeometryDirty;
00234       bool myShapePointsDirty;
00235       bool myColorsDirty;
00236 
00237       bool myScribeOccluded;
00238       bool myScribed;
00239       bool mySolid;
00240 
00241       int myStipplePattern;
00242       LineExtrusionMode myMode;
00243 
00246       DtOsgSegmentPickable* myPickable;
00247       bool myIsPickable;
00248 
00249       osg::Vec4 myScribeColor;
00250       bool myScribeColorSet;
00251    };
00252 }

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)