DYTSrouce/src/workspace/WorkSpace.h
2025-06-18 23:33:06 +08:00

165 lines
3.6 KiB
C++

#pragma once
#include <map>
#include <QObject>
#include <osgEarth/Viewpoint>
#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<class Entity*>& GetEntities() const {
return entities_;
}
std::vector<class Entity*>& 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<class Entity*> entities_;
OEScene* scene_{ nullptr };
class Timestep* timestep_{ nullptr };
class LampStatus* lampStatus_{ nullptr };
class Entity* trackedEntity_{ nullptr };
};