#ifndef Geom1_WSSeed_H
#define Geom1_WSSeed_H
#include <Glasses/ZNode.h>
#include <Stones/ZColor.h>
#include <Stones/TimeMakerClient.h>
class WSPoint;
class ZImage;
class TubeTvor;
class WSSeed : public ZNode, public TimeMakerClient
{
MAC_RNR_FRIENDS(WSSeed);
private:
void _init();
Float_t hTexU;
Float_t hTexV;
protected:
virtual void on_insert(iterator it);
virtual void on_remove(iterator it);
virtual void on_rebuild();
virtual void clear_list();
WSPoint* get_first_point();
ZTrans* init_slide(WSPoint* f);
void ring(ZTrans& lcf, WSPoint* f, Double_t t);
Int_t mTLevel;
Int_t mPLevel;
Float_t mTexUOffset;
Float_t mTexVOffset;
Float_t mTexUScale;
Float_t mTexVScale;
Float_t mTrueLength;
Bool_t bRenormLen;
Float_t mLength;
ZColor mColor;
Float_t mLineW;
Bool_t bFat;
ZLink<ZImage> mTexture;
Float_t mDtexU;
Float_t mDtexV;
TubeTvor* pTuber;
Bool_t bTextured;
WSPoint* m_first_point;
WSPoint* m_last_point;
Int_t m_num_points;
Bool_t bAnimRunning;
UInt_t mAnimSleepMS;
Float_t mAnimTime;
Float_t mAnimStepFac;
UInt_t m_anim_tick;
public:
void StartAnimation();
void StopAnimation();
public:
WSSeed(const Text_t* n="WSSeed", const Text_t* t=0) :
ZNode(n,t) { _init(); }
virtual ~WSSeed();
virtual void Triangulate();
Float_t Length();
Float_t MeasureLength();
void MeasureAndSetLength();
void TransAtTime(ZTrans& lcf, Double_t time,
Bool_t repeat_p=false, Bool_t reinit_trans_p=false);
virtual void TimeTick(Double_t t, Double_t dt);
void MakeLissajou(Double_t t_min, Double_t t_max, Int_t n_points,
Double_t ax, Double_t wx, Double_t dx,
Double_t ay, Double_t wy, Double_t dy,
Double_t az, Double_t wz, Double_t dz,
Float_t def_width=0.1);
void MakeFromFormulas(Double_t t_min, Double_t t_max, Int_t n_points,
TString fx="cos(x)",
TString fy="sin(x)",
TString fz="x",
Float_t def_width=0.1);
#include "WSSeed.h7"
ClassDef(WSSeed, 1);
};
#endif