mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-01-02 09:41:13 -06:00
* Added functionality of saving out screenshots (with fixed FPS) from a recorded session during playback. * Test of feature to request if all data is ready to be rendered, primary used in GlobeBrowsing. Need to go over how chunkTiles are set to OK (some are never OK..). * Estimated having working request of checking if chunks with correct level have their color and height data loaded and ready to be rendered. Will re-enable frames saving and try making a movie. * Created adaptive LOD factor based on available/unavailable tile data (such that we don't run a lot of iterations with asking for a pile of data that does not fit in the tile cache). * Made it able to specify tile cache size in configurastion file. Renamed other Cache value to WMSCache, as we have the TileCache as well. * Fix for when focus node has nor renderable, when checking for if dersired data has been loaded. Should probably check all renderable/planets anyway, not just a focus object.
109 lines
4.2 KiB
C++
109 lines
4.2 KiB
C++
/*****************************************************************************************
|
|
* *
|
|
* OpenSpace *
|
|
* *
|
|
* Copyright (c) 2014-2019 *
|
|
* *
|
|
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
|
|
* software and associated documentation files (the "Software"), to deal in the Software *
|
|
* without restriction, including without limitation the rights to use, copy, modify, *
|
|
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
|
|
* permit persons to whom the Software is furnished to do so, subject to the following *
|
|
* conditions: *
|
|
* *
|
|
* The above copyright notice and this permission notice shall be included in all copies *
|
|
* or substantial portions of the Software. *
|
|
* *
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
|
|
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
|
|
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
|
|
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
|
|
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
|
|
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
|
****************************************************************************************/
|
|
|
|
#ifndef __OPENSPACE_CORE___RENDERABLE___H__
|
|
#define __OPENSPACE_CORE___RENDERABLE___H__
|
|
|
|
#include <openspace/properties/propertyowner.h>
|
|
|
|
#include <openspace/properties/scalar/boolproperty.h>
|
|
#include <openspace/properties/scalar/floatproperty.h>
|
|
#include <openspace/properties/stringproperty.h>
|
|
|
|
namespace ghoul { class Dictionary; }
|
|
namespace ghoul::opengl {
|
|
class ProgramObject;
|
|
class Texture;
|
|
}
|
|
|
|
namespace openspace {
|
|
|
|
struct RenderData;
|
|
struct UpdateData;
|
|
struct RendererTasks;
|
|
struct SurfacePositionHandle;
|
|
|
|
namespace documentation { struct Documentation; }
|
|
|
|
class Camera;
|
|
|
|
class Renderable : public properties::PropertyOwner {
|
|
public:
|
|
enum class RenderBin : int {
|
|
Background = 1,
|
|
Opaque = 2,
|
|
Transparent = 4,
|
|
Overlay = 8
|
|
};
|
|
|
|
static std::unique_ptr<Renderable> createFromDictionary(
|
|
const ghoul::Dictionary& dictionary);
|
|
|
|
Renderable(const ghoul::Dictionary& dictionary);
|
|
virtual ~Renderable() = default;
|
|
|
|
virtual void initialize();
|
|
virtual void initializeGL();
|
|
virtual void deinitialize();
|
|
virtual void deinitializeGL();
|
|
|
|
virtual bool isReady() const = 0;
|
|
bool isEnabled() const;
|
|
|
|
void setBoundingSphere(float boundingSphere);
|
|
float boundingSphere() const;
|
|
|
|
virtual void render(const RenderData& data, RendererTasks& rendererTask);
|
|
virtual void update(const UpdateData& data);
|
|
virtual SurfacePositionHandle calculateSurfacePositionHandle(
|
|
const glm::dvec3& targetModelSpace) const;
|
|
|
|
virtual bool renderedWithDesiredData() const;
|
|
|
|
RenderBin renderBin() const;
|
|
void setRenderBin(RenderBin bin);
|
|
bool matchesRenderBinMask(int binMask);
|
|
|
|
bool isVisible() const;
|
|
|
|
void onEnabledChange(std::function<void(bool)> callback);
|
|
|
|
static documentation::Documentation Documentation();
|
|
|
|
protected:
|
|
properties::BoolProperty _enabled;
|
|
properties::FloatProperty _opacity;
|
|
properties::StringProperty _renderableType;
|
|
|
|
void registerUpdateRenderBinFromOpacity();
|
|
|
|
private:
|
|
RenderBin _renderBin = RenderBin::Opaque;
|
|
float _boundingSphere = 0.f;
|
|
};
|
|
|
|
} // namespace openspace
|
|
|
|
#endif // __OPENSPACE_CORE___RENDERABLE___H__
|