35#if !defined(VSPCUSTOMGEOM__INCLUDED_)
36#define VSPCUSTOMGEOM__INCLUDED_
43#include <unordered_map>
44using std::unordered_map;
57class CustomGeomMgrSingleton
60 static CustomGeomMgrSingleton& getInstance()
62 static CustomGeomMgrSingleton instance;
68 void InitGeom(
const string&
id,
const string& module_name,
const string& display_name );
69 void SetCurrCustomGeom(
const string&
id ) { m_CurrGeom = id; }
86 void ReadCustomScripts( Vehicle* veh );
87 vector< GeomType > GetCustomTypes() {
return m_CustomTypeVec; }
110 string AddParm(
int type,
const string & name,
const string & group );
172 int AddGui(
int type,
const string & arg1 =
string(),
const string & arg2 =
string(),
173 const string & arg3 =
string(),
double arg4 = 10,
const string & arg5 =
string() );
174 vector< GuiDef > GetGuiDefVec(
const string & geom_id );
219 void AddUpdateGui(
int gui_id,
const string & parm_id,
const string & parm_id2,
int input );
220 vector< GuiUpdate > GetGuiUpdateVec();
420 double l2 = 0,
double r2 = 0,
double u2 = 0,
double w2 = 0 );
614 vector< string > GetCustomScriptModuleNames();
617 static int SaveScriptContentToFile(
const string & module_name,
const string & file_name );
622 CustomGeomMgrSingleton();
623 CustomGeomMgrSingleton( CustomGeomMgrSingleton
const& copy ) =
delete;
624 CustomGeomMgrSingleton& operator=( CustomGeomMgrSingleton
const& copy ) =
delete;
627 vector< GeomType > m_CustomTypeVec;
628 unordered_map< string, string > m_ModuleGeomIDMap;
632#define CustomGeomMgr CustomGeomMgrSingleton::getInstance()
648class CustomXSec :
public SkinXSec
652 CustomXSec( XSecCurve *xsc );
654 virtual void Update();
655 virtual void CopyBasePos( XSec* xs );
657 virtual void SetLoc(
const vec3d & loc );
658 virtual vec3d GetLoc() {
return m_Loc; }
659 virtual void SetRot(
const vec3d & rot );
660 virtual vec3d GetRot() {
return m_Rot; }
662 virtual double GetScale();
686class CustomGeom :
public Geom
689 CustomGeom( Vehicle* vehicle_ptr );
690 virtual ~CustomGeom();
694 void SetScriptModuleName(
const string& name ) { m_ScriptModuleName = name; }
695 string GetScriptModuleName() {
return m_ScriptModuleName; }
696 void SetDisplayName(
const string& name ) { m_DisplayName = name; }
697 string GetDisplayName() {
return m_DisplayName; }
700 string AddParm(
int type,
const string & name,
const string & group );
701 string FindParmID(
int index );
704 int AddGui(
const GuiDef & gd );
705 vector< GuiDef > GetGuiDefVec() {
return m_GuiDefVec; }
706 void AddGuiTriggerEvent(
int gui_index );
707 bool CheckClearTriggerEvent(
int gui_index );
709 void AddUpdateGui(
const GuiUpdate & gu );
710 vector< GuiUpdate > GetGuiUpdateVec();
713 string AddXSecSurf();
714 void RemoveXSecSurf(
const string&
id );
715 void ClearXSecSurfs();
717 virtual int GetNumXSecSurfs()
const {
return (
int )m_XSecSurfVec.size(); }
718 virtual XSecSurf* GetXSecSurf(
int index );
721 virtual void SkinXSecSurf(
bool closed_flag );
722 virtual void CloneSurf(
int index,
Matrix4d & mat );
723 virtual void TransformSurf(
int index,
Matrix4d & mat );
726 virtual xmlNodePtr EncodeXml( xmlNodePtr & node );
727 virtual xmlNodePtr DecodeXml( xmlNodePtr & node );
730 virtual void SetVspSurfType(
int type,
int surf_id = -1 );
731 virtual void SetVspSurfCfdType(
int type,
int surf_id = -1);
734 virtual void AddDefaultSources(
double base_len = 1.0);
735 virtual void SetUpDefaultSource( SourceData & sd ) { m_DefaultSourceVec.push_back( sd ); }
736 virtual void ClearAllDefaultSources() { m_DefaultSourceVec.clear(); }
738 virtual void ComputeCenter();
739 virtual void ApplyScale(
double currentScale );
742 virtual void OffsetXSecs(
double off );
747 string m_ScriptModuleName;
748 string m_DisplayName;
750 vector< Parm* > m_CustomGeomParmVec;
751 vector< GuiDef > m_GuiDefVec;
752 vector< GuiUpdate > m_UpdateGuiVec;
753 vector< XSecSurf* > m_XSecSurfVec;
754 vector< int > m_TriggerVec;
755 vector< SourceData > m_DefaultSourceVec;
758 unordered_map< int, int > m_VspSurfTypeMap;
759 int m_VspSurfCfdType;
760 unordered_map< int, int > m_VspSurfCfdTypeMap;
763 virtual void UpdateSurf();
766 virtual void UpdateFlags();
768 bool m_ConformalFlag;
769 double m_ConformalOffset;
770 virtual void ApplyConformalOffset(
double off );
void AddUpdateGui(int gui_id, const string &parm_id)
void TransformSurf(int index, Matrix4d &mat)
void RemoveXSecSurf(const string &id)
int AddGui(int type, const string &arg1=string(), const string &arg2=string(), const string &arg3=string(), double arg4=10, const string &arg5=string())
string AppendCustomXSec(const string &xsec_surf_id, int type)
void SetupCustomDefaultSource(int type, int surf_index, double l1, double r1, double u1, double w1, double l2=0, double r2=0, double u2=0, double w2=0)
string InsertCustomXSec(const string &xsec_surf_id, int type, int index)
void SetVspSurfCfdType(int type, int surf_id=-1)
void CopyCustomXSec(const string &xsec_surf_id, int index)
void SetCustomXSecRot(const string &xsec_id, const vec3d &rot)
vec3d GetCustomXSecLoc(const string &xsec_id)
void SetVspSurfType(int type, int surf_id=-1)
void SetCustomCenter(double x, double y, double z)
vec3d GetCustomXSecRot(const string &xsec_id)
string GetCurrCustomGeom()
void CutCustomXSec(const string &xsec_surf_id, int index)
void SetCustomXSecLoc(const string &xsec_id, const vec3d &loc)
void ClearAllCustomDefaultSources()
void CloneSurf(int index, Matrix4d &mat)
void PasteCustomXSec(const string &xsec_surf_id, int index)
string AddParm(int type, const string &name, const string &group)
bool CheckClearTriggerEvent(int gui_id)
string GetCustomParm(int index)
void SkinXSecSurf(bool closed_flag)
void AddUpdateGui(int gui_id, const string &parm_id, const string &parm_id2, int input)