#pragma once #include #include #include #include "scene/OsgScene.h" #include "scene/OEScene.h" #include "config.h" #include "common/SpdLogger.h" //#include "../ui/chartPlot/DYTChart.h" class WorkSpaceItem; class WorkSpace : public QObject { Q_OBJECT public: explicit WorkSpace(QObject* parent = nullptr) noexcept; WorkSpace(const QString& path, QObject* parent = nullptr); ~WorkSpace() override = default; inline void SetName(const QString& name) { name_ = name; } inline const QString& GetName() const { return name_; } inline const QString& GetPath() const { return path_; } const QString GetDir() const; inline void SetUUid(const QString& uuid) { uuid_ = uuid; } inline const QString& GetUUid() const { return uuid_; } // static WorkSpace* Create(const QString& name); inline void SetDescribe(const QString& describe) { describe_ = describe; } inline const QString& GetDescribe() const { return describe_; } inline void SetSimMatlab(const QString& path) { simMatlabPath_ = path; } inline const QString GetSimMatlab() const { return simMatlabPath_; } inline void SetMatlabParam(const QString& path) { matlabParamPath_ = path; } inline const QString GetMatlabParam() const { return matlabParamPath_; } inline void SetWavePath(const QString& path) { waveFile_ = path; } inline const QString GetWavePath() const { return waveFile_; } inline void SetReportPath(const QString& path) { reportFile_ = path; } inline const QString GetReportPath() const { return reportFile_; } inline void SetRDPath(const QString& path) { rdFile_ = path; } inline const QString GetRDPath() const { return rdFile_; } inline void SetHomeViewpoint(const osgEarth::Viewpoint& viewpoint) { homeViewpoint_ = viewpoint; homeViewpoint_.setHeading(0.0); // Ensure heading is set to 0.0 } inline const osgEarth::Viewpoint& GetHomeViewpoint() const { return homeViewpoint_; } const std::vector& GetEntities() const { return entities_; } std::vector& GetEntities() { return entities_; } void SetActiveScene(OEScene* scene); OEScene* GetActiveScene() const { dyt_check(nullptr != scene_); return scene_; } bool SetTimestep(class Timestep* timestep); bool SetTimestepPath(const QString& path); class Timestep* GetTimestep() const { return timestep_; } bool SetLampStatus(class LampStatus* timestep); bool SetLampPath(const QString& path); class LampStatus* GetLampStatus() const { return lampStatus_; } void AddEntity(class Entity* entity); void RemoveEntity(class Entity* entity); bool TrackEntity(class Entity* entity); void UntrackEntity(); class Entity* GetTrackEntity() const { return trackedEntity_; } bool Save(const QString& path); bool Save(); bool Load(const QString& dyt); void Unlaod(); void Begin(); void OnFrame(double dt); void End(); void OnLoaded(); Q_SIGNALS: void EntityAdded(class Entity* entity); void EntityRemoved(class Entity* entity); void TimestepChanged(class Timestep* timestep); void LampStatusChanged(class LampStatus* lampStatus); private: QString name_; QString uuid_; QString describe_; QString path_; QString simMatlabPath_; QString waveFile_; QString reportFile_; QString rdFile_; QString matlabParamPath_; osgEarth::Viewpoint homeViewpoint_; bool leaded_{ false }; std::vector entities_; OEScene* scene_{ nullptr }; class Timestep* timestep_{ nullptr }; class LampStatus* lampStatus_{ nullptr }; class Entity* trackedEntity_{ nullptr }; };