00001 /* -*- C++ -*- */ 00002 00003 /* COPYRIGHT 00004 * 00005 * This file is part of the Visual Effects Engine - VEE 00006 * 00007 * Read the "VEE-LICENSE" file for the license. 00008 * 00009 * Authors & Copyright: 00010 * 00011 * Tommi Ilmonen, Tuukka Heikura, Marko Myllymaa and 00012 * Janne Kontkanen 2001-2004 00013 * 00014 * Additional copyrights: Tekes 2003-2004 00015 * 00016 * firstname.lastname@hut.fi 00017 * 00018 */ 00019 00020 #ifndef GEE_PATH_MULTIPLY_H 00021 #define GEE_PATH_MULTIPLY_H 00022 00023 #include <gee_path_to_x.h> 00024 #include <gee_profile.h> 00025 00026 #include <vee_reference_object.h> 00027 00028 class GEE_PathMultiply : public GEE_PathToX 00029 { 00030 public: 00031 GEE_PathMultiply(GEE_id_t pathId = -1); 00032 virtual ~GEE_PathMultiply(); 00033 00034 virtual id_container * getExtraIds(); 00035 00036 virtual bool start(GEE_World *, const GEE_TimeStamp &); 00037 virtual bool stop(GEE_World *, const GEE_TimeStamp &); 00038 00039 virtual bool read(GEE_Io *); 00040 virtual bool write(GEE_Io *); 00041 virtual const char * type(); 00042 00043 static GEE_Operator * create(); 00044 00045 void setProfile(const GEE_Profile &profile); 00046 00047 void setScale(float scale) { m_scale = scale; } 00048 void setThreshold(float t) { m_threshold = t; } 00049 00050 void setAlignment(GEE_AlignMode m) { m_align = m; } 00051 00052 uint pathCount() const { return m_profile.size(); } 00053 GEE_id_t pathId(int index); 00054 00055 // void useNapra(bool withNapra) { m_withNapra = withNapra; } 00056 00057 void setExtrude(const VEE_Vector3 & ext) { m_extrude = ext; } 00058 00059 protected: 00060 virtual bool handleNewVertex(GEE_Path3D::iterator &); 00061 00062 GEE_ParamWriter m_writer; 00063 00064 VEE_Vector3 m_prevLoc; 00065 VEE_Vector3 m_dir; 00066 VEE_Vector3 m_extrude; 00067 00068 float m_scale; 00069 float m_threshold; 00070 int m_align; 00071 bool m_newSegment; 00072 GEE_Profile m_profile; 00073 00074 id_container m_ids; 00075 00076 class Item 00077 { 00078 public: 00079 Item() : m_path (0) {} 00080 00081 VEE_RefPtr<GEE_Geometry> m_geo; 00082 GEE_Path3D * m_path; 00083 VEE_Vector2 m_vertex; 00084 }; 00085 00086 std::vector<Item> m_paths; 00087 }; 00088 00089 00090 #endif 00091