// // SceneScriptingInterface.h // libraries/script-engine // // Created by Sam Gateau on 2/24/15. // Copyright 2014 High Fidelity, Inc. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // #ifndef hifi_SceneScriptingInterface_h #define hifi_SceneScriptingInterface_h #include // QObject #include // Dependency #include "graphics/Stage.h" // TODO: if QT moc ever supports nested classes, subclass these to the interface instead of namespacing namespace SceneScripting { /**jsdoc * @typedef {object} Scene.Stage.Location * @property {number} longitude * @property {number} latitude * @property {number} altitude */ class Location : public QObject { Q_OBJECT public: Location(graphics::SunSkyStagePointer skyStage) : _skyStage{ skyStage } {} Q_PROPERTY(float longitude READ getLongitude WRITE setLongitude) Q_PROPERTY(float latitude READ getLatitude WRITE setLatitude) Q_PROPERTY(float altitude READ getAltitude WRITE setAltitude) float getLongitude() const; float getLatitude() const; float getAltitude() const; void setLongitude(float longitude); void setLatitude(float latitude); void setAltitude(float altitude); protected: graphics::SunSkyStagePointer _skyStage; }; using LocationPointer = std::unique_ptr; /**jsdoc * @typedef {object} Scene.Stage.Time * @property {number} hour * @property {number} day */ class Time : public QObject { Q_OBJECT public: Time(graphics::SunSkyStagePointer skyStage) : _skyStage{ skyStage } {} Q_PROPERTY(float hour READ getHour WRITE setHour) Q_PROPERTY(int day READ getDay WRITE setDay) float getHour() const; void setHour(float hour); int getDay() const; void setDay(int day); protected: graphics::SunSkyStagePointer _skyStage; }; using TimePointer = std::unique_ptr