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_SCALE_AROUND_PATHS_H 00021 #define GEE_SCALE_AROUND_PATHS_H 00022 00023 #include <gee_path_to_x.h> 00024 00025 #include <vector> 00026 00027 class GEE_ScaleAroundPaths : public GEE_PathToX 00028 { 00029 public: 00030 GEE_ScaleAroundPaths(GEE_id_t pathId1 = -1, 00031 GEE_id_t pathId2 = -1, 00032 GEE_id_t geoId = -1, 00033 bool uniform = true); 00034 virtual ~GEE_ScaleAroundPaths(); 00035 00036 virtual id_container * getExtraIds(); 00037 00038 virtual bool act(GEE_World *, const GEE_TimeStamp &); 00039 00040 virtual bool read(GEE_Io *); 00041 virtual bool write(GEE_Io *); 00042 virtual const char * type(); 00043 static GEE_Operator * create(); 00044 00045 void addGeometryId(GEE_id_t geoId) { m_geoIds.insert(geoId); } 00046 00047 protected: 00048 00049 virtual bool handleNewVertices(GEE_Path3D::iterator &, 00050 GEE_Path3D::iterator &); 00051 00052 virtual void doScale(GEE_World *); 00053 00054 class Scale 00055 { 00056 public: 00057 // Locations of the hands: 00058 VEE_Vector3 m_move, m_center, m_size, m_prevSize; 00059 }; 00060 00061 VEE_Vector3 m_curLoc; 00062 VEE_Vector3 m_curSize; 00063 VEE_Vector3 m_grabDirection; 00064 00065 std::vector<Scale> m_scales; 00066 00068 id_container m_geoIds; 00069 bool m_uniform; 00070 }; 00071 00072 00073 #endif