diff --git a/modules/globebrowsing/CMakeLists.txt b/modules/globebrowsing/CMakeLists.txt index 31d3d13d51..ed60144118 100644 --- a/modules/globebrowsing/CMakeLists.txt +++ b/modules/globebrowsing/CMakeLists.txt @@ -1,26 +1,26 @@ -# ######################################################################################### -# # +########################################################################################## +# # # OpenSpace # -# # +# # # Copyright (c) 2014-2023 # -# # +# # # 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. # -# ######################################################################################### +########################################################################################## include(${PROJECT_SOURCE_DIR}/support/cmake/module_definition.cmake) @@ -149,16 +149,16 @@ target_precompile_headers(${globebrowsing_module} PRIVATE # Gdal install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/gdal_data DESTINATION modules/globebrowsing) -if(WIN32) +if (WIN32) add_library(gdal SHARED IMPORTED) target_include_directories(gdal SYSTEM INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/ext/gdal/include) set_target_properties(gdal PROPERTIES IMPORTED_IMPLIB ${CMAKE_CURRENT_SOURCE_DIR}/ext/gdal/lib/gdal_i.lib) set_target_properties(gdal PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/ext/gdal/lib/gdal241.dll) target_link_libraries(openspace-module-globebrowsing PRIVATE gdal) -else(WIN32) +else (WIN32) find_package(GDAL REQUIRED) target_include_directories(openspace-module-globebrowsing SYSTEM PRIVATE ${GDAL_INCLUDE_DIR}) target_link_libraries(openspace-module-globebrowsing PRIVATE ${GDAL_LIBRARY}) mark_as_advanced(GDAL_CONFIG GDAL_INCLUDE_DIR GDAL_LIBRARY) -endif() # WIN32 +endif () # WIN32 diff --git a/modules/globebrowsing/src/tileprovider/tileprovider.cpp b/modules/globebrowsing/src/tileprovider/tileprovider.cpp index 38e1c6233b..01e76c4768 100644 --- a/modules/globebrowsing/src/tileprovider/tileprovider.cpp +++ b/modules/globebrowsing/src/tileprovider/tileprovider.cpp @@ -2,7 +2,7 @@ * * * OpenSpace * * * - * Copyright (c) 2014-2022 * + * Copyright (c) 2014-2023 * * * * 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 * @@ -88,7 +88,7 @@ std::unique_ptr TileProvider::createFromDictionary( void TileProvider::initializeDefaultTile() { ZoneScoped; - ghoul_assert(!DefaultTile.texture, "Default tile should not have been created"); + ghoul_assert(!DefaultTile.texture, "Default tile should not have been created"); using namespace ghoul::opengl; // Create pixel data @@ -118,8 +118,8 @@ void TileProvider::deinitializeDefaultTile() { DefaultTileTexture = nullptr; } -TileProvider::TileProvider() : - properties::PropertyOwner({ "TileProvider", "Tile Provider" }) +TileProvider::TileProvider() + : properties::PropertyOwner({ "TileProvider", "Tile Provider" }) {} void TileProvider::initialize() { @@ -153,7 +153,9 @@ void TileProvider::deinitialize() { } ChunkTile TileProvider::traverseTree(TileIndex tileIndex, int parents, int maxParents, - std::function& ascendToParent, TileUvTransform& uvTransform) { + std::function& ascendToParent, + TileUvTransform& uvTransform) +{ // Step 1. Traverse 0 or more parents up the chunkTree as requested by the caller for (int i = 0; i < parents && tileIndex.level > 1; i++) { ascendToParent(tileIndex, uvTransform); @@ -198,16 +200,17 @@ ChunkTile TileProvider::chunkTile(TileIndex tileIndex, int parents, int maxParen ghoul_assert(isInitialized, "TileProvider was not initialized"); - lambda ascendToParent = [](TileIndex& ti, TileUvTransform& uv) { - uv.uvOffset *= 0.5; - uv.uvScale *= 0.5; + std::function ascendToParent = [] + (TileIndex& ti, TileUvTransform& uv) { + uv.uvOffset *= 0.5; + uv.uvScale *= 0.5; - uv.uvOffset += ti.positionRelativeParent(); + uv.uvOffset += ti.positionRelativeParent(); - ti.x /= 2; - ti.y /= 2; - ti.level--; - }; + ti.x /= 2; + ti.y /= 2; + ti.level--; + }; TileUvTransform uvTransform = { .uvOffset = glm::vec2(0.f, 0.f), diff --git a/modules/globebrowsing/src/tileprovider/tileprovider.h b/modules/globebrowsing/src/tileprovider/tileprovider.h index cb0d338136..ae76b241cb 100644 --- a/modules/globebrowsing/src/tileprovider/tileprovider.h +++ b/modules/globebrowsing/src/tileprovider/tileprovider.h @@ -71,8 +71,6 @@ enum class Type { FfmpegTileProvider }; -using lambda = std::function; - struct TileProvider : public properties::PropertyOwner { static unsigned int NumTileProviders; @@ -134,7 +132,8 @@ struct TileProvider : public properties::PropertyOwner { virtual float noDataValueAsFloat() = 0; - virtual ChunkTile chunkTile(TileIndex tileIndex, int parents = 0, int maxParents = 1337); + virtual ChunkTile chunkTile(TileIndex tileIndex, int parents = 0, + int maxParents = 1337); ChunkTilePile chunkTilePile(TileIndex tileIndex, int pileSize); @@ -144,7 +143,8 @@ struct TileProvider : public properties::PropertyOwner { bool isInitialized = false; protected: ChunkTile traverseTree(TileIndex tileIndex, int parents, int maxParents, - lambda& ascendToParent, TileUvTransform& uvTransform); + std::function& ascendToParent, + TileUvTransform& uvTransform); private: virtual void internalInitialize(); diff --git a/modules/video/CMakeLists.txt b/modules/video/CMakeLists.txt index 24060939e3..99e136166e 100644 --- a/modules/video/CMakeLists.txt +++ b/modules/video/CMakeLists.txt @@ -1,26 +1,27 @@ -# ######################################################################################### -# # +########################################################################################## +# # # OpenSpace # -# # +# # # Copyright (c) 2014-2023 # -# # +# # # 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. # -# ######################################################################################### +########################################################################################## + include(${PROJECT_SOURCE_DIR}/support/cmake/module_definition.cmake) @@ -97,7 +98,7 @@ else (WIN32) target_include_directories(openspace-module-globebrowsing SYSTEM PRIVATE ${LIBMPV_INCLUDE_DIR}) target_link_libraries(openspace-module-globebrowsing PRIVATE ${LIBMPV_LIBRARY}) mark_as_advanced(LIBMPV_CONFIG LIBMPV_INCLUDE_DIR LIBMPV_LIBRARY) -endif() # WIN32 +endif () # WIN32 create_new_module( "Video" diff --git a/modules/video/include/renderablevideoplane.h b/modules/video/include/renderablevideoplane.h index 415f49eb47..d915f54632 100644 --- a/modules/video/include/renderablevideoplane.h +++ b/modules/video/include/renderablevideoplane.h @@ -45,8 +45,6 @@ public: void render(const RenderData& data, RendererTasks& rendererTask) override; void update(const UpdateData& data) override; - static documentation::Documentation Documentation(); - protected: virtual void bindTexture() override; diff --git a/modules/video/include/renderablevideosphere.h b/modules/video/include/renderablevideosphere.h index 3a029d8c4c..006df3eafa 100644 --- a/modules/video/include/renderablevideosphere.h +++ b/modules/video/include/renderablevideosphere.h @@ -89,7 +89,6 @@ private: bool _sphereIsDirty = false; }; - } // namespace openspace #endif // __OPENSPACE_MODULE_BASE___RENDERABLEVIDEOSPHERE___H__ diff --git a/modules/video/include/screenspacevideo.h b/modules/video/include/screenspacevideo.h index 886c04bf40..a864567aa7 100644 --- a/modules/video/include/screenspacevideo.h +++ b/modules/video/include/screenspacevideo.h @@ -22,8 +22,8 @@ * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * ****************************************************************************************/ -#ifndef __OPENSPACE_MODULE_BASE___SCREENSPACEVIDEO___H__ -#define __OPENSPACE_MODULE_BASE___SCREENSPACEVIDEO___H__ +#ifndef __OPENSPACE_MODULE_VIDEO___SCREENSPACEVIDEO___H__ +#define __OPENSPACE_MODULE_VIDEO___SCREENSPACEVIDEO___H__ #include @@ -55,4 +55,4 @@ private: } // namespace openspace -#endif // __OPENSPACE_MODULE_BASE___SCREENSPACEVIDEO___H__ +#endif // __OPENSPACE_MODULE_VIDEO___SCREENSPACEVIDEO___H__ diff --git a/modules/video/include/videoplayer.h b/modules/video/include/videoplayer.h index dc93f68749..1165bf2938 100644 --- a/modules/video/include/videoplayer.h +++ b/modules/video/include/videoplayer.h @@ -2,7 +2,7 @@ * * * OpenSpace * * * - * Copyright (c) 2014-2022 * + * Copyright (c) 2014-2023 * * * * 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 * @@ -22,8 +22,8 @@ * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * ****************************************************************************************/ -#ifndef __OPENSPACE_MODULE_GLOBEBROWSING___TILEPROVIDER__VIDEOPLAYER___H__ -#define __OPENSPACE_MODULE_GLOBEBROWSING___TILEPROVIDER__VIDEOPLAYER___H__ +#ifndef __OPENSPACE_MODULE_VIDEO___VIDEOPLAYER___H__ +#define __OPENSPACE_MODULE_VIDEO___VIDEOPLAYER___H__ #include #include @@ -32,6 +32,7 @@ #include #include #include +#include #include #include @@ -46,7 +47,9 @@ enum class PlaybackMode { RealTimeLoop }; -class VideoPlayer : public properties::PropertyOwner, Syncable { +class VideoPlayer : public properties::PropertyOwner, public Syncable { +BooleanType(PauseAfterSeek); + public: VideoPlayer(const ghoul::Dictionary& dictionary); ~VideoPlayer(); @@ -58,7 +61,7 @@ public: void play(); void goToStart(); - void seekToTime(double time, bool pauseAfter = true); + void seekToTime(double time, PauseAfterSeek pauseAfter = PauseAfterSeek::Yes); void toggleMute(); const std::unique_ptr& frameTexture() const; @@ -77,7 +80,7 @@ public: private: // Libmpv keys enum class MpvKey : uint64_t { - Duration = 1, + Duration = 1, // 0 is the default key in libmpv so avoid that Height, Width, Meta, @@ -95,7 +98,7 @@ private: void resizeFBO(int width, int height); // Libmpv - static void on_mpv_render_update(void*); // Has to be static because of C api + static void onMpvRenderUpdate(void*); // Has to be static because of C api void initializeMpv(); // Called first time in update void renderMpv(); // Called in update void commandAsyncMpv(const char* cmd[], MpvKey key = MpvKey::Command); @@ -149,7 +152,7 @@ private: // Libmpv mpv_handle* _mpvHandle = nullptr; mpv_render_context* _mpvRenderContext = nullptr; - std::unique_ptr _frameTexture = nullptr; + std::unique_ptr _frameTexture; GLuint _fbo = 0; // Our opengl framebuffer where mpv renders to int _wakeup = 0; // Signals when libmpv has a new frame ready bool _isInitialized = false; // If libmpv has been inititalized @@ -159,4 +162,4 @@ private: }; } // namespace video::globebrowsing -#endif // __OPENSPACE_MODULE_GLOBEBROWSING___TILEPROVIDER__VIDEOPLAYER___H__ +#endif // __OPENSPACE_MODULE_VIDEO___VIDEOPLAYER___H__ diff --git a/modules/video/include/videotileprovider.h b/modules/video/include/videotileprovider.h index 25c0476f1e..407c1a4708 100644 --- a/modules/video/include/videotileprovider.h +++ b/modules/video/include/videotileprovider.h @@ -2,7 +2,7 @@ * * * OpenSpace * * * - * Copyright (c) 2014-2022 * + * Copyright (c) 2014-2023 * * * * 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 * @@ -22,12 +22,12 @@ * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * ****************************************************************************************/ -#ifndef __OPENSPACE_MODULE_GLOBEBROWSING___TILEPROVIDER__VIDEOTILEPROVIDER___H__ -#define __OPENSPACE_MODULE_GLOBEBROWSING___TILEPROVIDER__VIDEOTILEPROVIDER___H__ +#ifndef __OPENSPACE_MODULE_VIDEO___VIDEOTILEPROVIDER___H__ +#define __OPENSPACE_MODULE_VIDEO___VIDEOTILEPROVIDER___H__ #include -#include +#include #include #include #include @@ -40,9 +40,8 @@ namespace openspace { struct Documentation; } namespace openspace { -using namespace globebrowsing; -class VideoTileProvider : public TileProvider { +class VideoTileProvider : public globebrowsing::TileProvider { public: VideoTileProvider(const ghoul::Dictionary& dictionary); ~VideoTileProvider(); @@ -52,10 +51,12 @@ public: int minLevel() override final; int maxLevel() override final; float noDataValueAsFloat() override final; - ChunkTile chunkTile(TileIndex tileIndex, int parents, int maxParents = 1337) override; - Tile tile(const TileIndex& tileIndex) override final; - Tile::Status tileStatus(const TileIndex& tileIndex) override final; - TileDepthTransform depthTransform() override final; + globebrowsing::ChunkTile chunkTile(globebrowsing::TileIndex tileIndex, int parents, + int maxParents = 1337) override; + globebrowsing::Tile tile(const globebrowsing::TileIndex& tileIndex) override final; + globebrowsing::Tile::Status tileStatus( + const globebrowsing::TileIndex& tileIndex) override final; + globebrowsing::TileDepthTransform depthTransform() override final; static documentation::Documentation Documentation(); @@ -64,12 +65,13 @@ private: void internalDeinitialize() override final; // Tile handling - std::map _tileCache; // Cache for rendering 1 frame + // Cache for rendering 1 frame + std::map _tileCache; bool _tileIsReady = false; VideoPlayer _videoPlayer; }; -} // namespace video::globebrowsing +} // namespace openspace -#endif // __OPENSPACE_MODULE_GLOBEBROWSING___TILEPROVIDER__VIDEOTILEPROVIDER___H__ +#endif // __OPENSPACE_MODULE_VIDEO___VIDEOTILEPROVIDER___H__ diff --git a/modules/video/screenspacevideo.asset b/modules/video/screenspacevideo.asset deleted file mode 100644 index 1544aeb4b4..0000000000 --- a/modules/video/screenspacevideo.asset +++ /dev/null @@ -1,16 +0,0 @@ -local spec = { - Type = "ScreenSpaceVideo", - Identifier = "ScreenSpaceVideoExample", - Name = "Screen Space Browser Example", - Video = "C:/Users/ylvaselling/Documents/Work/Testmovies/chlorophyll_model_2048.mp4", -}; - -asset.onInitialize(function() - openspace.addScreenSpaceRenderable(spec) -end) - -asset.onDeinitialize(function() - openspace.removeScreenSpaceRenderable(spec) -end) - -asset.export(spec) diff --git a/modules/video/src/renderablevideoplane.cpp b/modules/video/src/renderablevideoplane.cpp index 3d59da5dd3..65052cb902 100644 --- a/modules/video/src/renderablevideoplane.cpp +++ b/modules/video/src/renderablevideoplane.cpp @@ -27,25 +27,12 @@ #include #include -namespace { - struct [[codegen::Dictionary(RenderableVideoPlane)]] Parameters { - - }; -#include "renderablevideoplane_codegen.cpp" -} // namespace - namespace openspace { -documentation::Documentation RenderableVideoPlane::Documentation() { - return codegen::doc("renderable_video_plane"); -} - RenderableVideoPlane::RenderableVideoPlane(const ghoul::Dictionary& dictionary) : RenderablePlane(dictionary) , _videoPlayer(dictionary) { - const Parameters p = codegen::bake(dictionary); - addPropertySubOwner(_videoPlayer); } @@ -64,11 +51,9 @@ bool RenderableVideoPlane::isReady() const { } void RenderableVideoPlane::render(const RenderData& data, RendererTasks& rendererTask) { - if (!_videoPlayer.isInitialized()) { - return; + if (_videoPlayer.isInitialized()) { + RenderablePlane::render(data, rendererTask); } - - RenderablePlane::render(data, rendererTask); } void RenderableVideoPlane::update(const UpdateData& data) { diff --git a/modules/video/src/renderablevideosphere.cpp b/modules/video/src/renderablevideosphere.cpp index 9710d0781a..2334c00755 100644 --- a/modules/video/src/renderablevideosphere.cpp +++ b/modules/video/src/renderablevideosphere.cpp @@ -157,7 +157,7 @@ RenderableVideoSphere::RenderableVideoSphere(const ghoul::Dictionary& dictionary { static_cast(Orientation::Outside), "Outside" }, { static_cast(Orientation::Inside), "Inside" }, { static_cast(Orientation::Both), "Both" } - }); + }); if (p.orientation.has_value()) { _orientation = static_cast(codegen::map(*p.orientation)); @@ -171,7 +171,7 @@ RenderableVideoSphere::RenderableVideoSphere(const ghoul::Dictionary& dictionary _size.onChange([this]() { setBoundingSphere(_size); _sphereIsDirty = true; - }); + }); addProperty(_size); addProperty(_segments); diff --git a/modules/video/src/screenspacevideo.cpp b/modules/video/src/screenspacevideo.cpp index c673f2fe79..fbd80215e7 100644 --- a/modules/video/src/screenspacevideo.cpp +++ b/modules/video/src/screenspacevideo.cpp @@ -35,25 +35,12 @@ #include #include -namespace { - struct [[codegen::Dictionary(ScreenSpaceVideo)]] Parameters { - - }; -#include "screenspacevideo_codegen.cpp" -} // namespace - namespace openspace { -documentation::Documentation ScreenSpaceVideo::Documentation() { - return codegen::doc("screenspace_video"); -} - ScreenSpaceVideo::ScreenSpaceVideo(const ghoul::Dictionary& dictionary) : ScreenSpaceRenderable(dictionary) , _videoPlayer(dictionary) { - const Parameters p = codegen::bake(dictionary); - // @TODO (abock, 2021-02-02) Should this be the name variable? The identifier wasn't // declared in the documentation std::string identifier; @@ -82,10 +69,9 @@ void ScreenSpaceVideo::update() { } void ScreenSpaceVideo::render() { - if (!_videoPlayer.isInitialized()) { - return; + if (_videoPlayer.isInitialized()) { + ScreenSpaceRenderable::render(); } - ScreenSpaceRenderable::render(); } bool ScreenSpaceVideo::initializeGL() { diff --git a/modules/video/src/videoplayer.cpp b/modules/video/src/videoplayer.cpp index 3b5fddc299..1a05321917 100644 --- a/modules/video/src/videoplayer.cpp +++ b/modules/video/src/videoplayer.cpp @@ -2,7 +2,7 @@ * * * OpenSpace * * * - * Copyright (c) 2014-2022 * + * Copyright (c) 2014-2023 * * * * 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 * @@ -42,8 +42,7 @@ namespace { constexpr openspace::properties::Property::PropertyInfo VideoInfo = { "Video", "Video", - "This should point to the video that should be played. It can " - "be either a file path or a url to a youtube video." + "This should point to the video file that should be played." }; constexpr openspace::properties::Property::PropertyInfo PlayInfo = { @@ -124,6 +123,8 @@ namespace { namespace openspace { +namespace { + bool checkMpvError(int status) { if (status < 0) { LERROR(fmt::format("Libmpv API error: {}", mpv_error_string(status))); @@ -137,8 +138,9 @@ void* getOpenGLProcAddress(void*, const char* name) { global::windowDelegate->openGLProcedureAddress(name) ); } +} // namespace -void VideoPlayer::on_mpv_render_update(void* ctx) { +void VideoPlayer::onMpvRenderUpdate(void* ctx) { // The wakeup flag is set here to enable the mpv_render_context_render // path in the main loop. // The pattern here with a static function and a void pointer to the the class @@ -155,8 +157,7 @@ void VideoPlayer::observePropertyMpv(MpvKey key) { ); } -void VideoPlayer::setPropertyStringMpv(const char* name, const char* value) -{ +void VideoPlayer::setPropertyStringMpv(const char* name, const char* value) { int result = mpv_set_property_string(_mpvHandle, name, value); if (!checkMpvError(result)) { LWARNING(fmt::format("Error setting property {}", name)); @@ -271,22 +272,23 @@ VideoPlayer::VideoPlayer(const ghoul::Dictionary& dictionary) if (p.playbackMode.has_value()) { switch (*p.playbackMode) { - case Parameters::PlaybackMode::RealTimeLoop: - _playbackMode = PlaybackMode::RealTimeLoop; - break; - case Parameters::PlaybackMode::MapToSimulationTime: - _playbackMode = PlaybackMode::MapToSimulationTime; - break; - default: - LERROR("Missing playback mode in VideoTileProvider"); - throw ghoul::MissingCaseException(); + case Parameters::PlaybackMode::RealTimeLoop: + _playbackMode = PlaybackMode::RealTimeLoop; + break; + case Parameters::PlaybackMode::MapToSimulationTime: + _playbackMode = PlaybackMode::MapToSimulationTime; + break; + default: + LERROR("Missing playback mode in VideoTileProvider"); + throw ghoul::MissingCaseException(); } } if (_playbackMode == PlaybackMode::MapToSimulationTime) { if (!p.startTime.has_value() || !p.endTime.has_value()) { LERROR("Video tile layer tried to map to simulation time but lacked start or" - " end time"); + " end time" + ); return; } _startJ200Time = Time::convertTime(*p.startTime); @@ -297,34 +299,35 @@ VideoPlayer::VideoPlayer(const ghoul::Dictionary& dictionary) global::syncEngine->addSyncable(this); keys = { - {MpvKey::Pause, "pause"}, - {MpvKey::Params, "video-params"}, - {MpvKey::Time, "time-pos"}, - {MpvKey::Duration, "duration"}, - {MpvKey::Height, "height"}, - {MpvKey::Width, "width"}, - {MpvKey::Meta, "metadata"}, - {MpvKey::Fps, "container-fps"}, - {MpvKey::IsSeeking, "seeking"}, - {MpvKey::Mute, "mute"}, - {MpvKey::Seek, "seek"} + { MpvKey::Pause, "pause" }, + { MpvKey::Params, "video-params" }, + { MpvKey::Time, "time-pos" }, + { MpvKey::Duration, "duration" }, + { MpvKey::Height, "height" }, + { MpvKey::Width, "width" }, + { MpvKey::Meta, "metadata" }, + { MpvKey::Fps, "container-fps" }, + { MpvKey::IsSeeking, "seeking" }, + { MpvKey::Mute, "mute" }, + { MpvKey::Seek, "seek" } }; formats = { - {MpvKey::Pause, MPV_FORMAT_FLAG}, - {MpvKey::Params, MPV_FORMAT_NODE}, - {MpvKey::Time, MPV_FORMAT_DOUBLE}, - {MpvKey::Duration, MPV_FORMAT_DOUBLE}, - {MpvKey::Height, MPV_FORMAT_INT64}, - {MpvKey::Width, MPV_FORMAT_INT64}, - {MpvKey::Meta, MPV_FORMAT_NODE}, - {MpvKey::Fps, MPV_FORMAT_DOUBLE}, - {MpvKey::IsSeeking, MPV_FORMAT_FLAG}, - {MpvKey::Mute, MPV_FORMAT_STRING} + { MpvKey::Pause, MPV_FORMAT_FLAG }, + { MpvKey::Params, MPV_FORMAT_NODE }, + { MpvKey::Time, MPV_FORMAT_DOUBLE }, + { MpvKey::Duration, MPV_FORMAT_DOUBLE }, + { MpvKey::Height, MPV_FORMAT_INT64 }, + { MpvKey::Width, MPV_FORMAT_INT64 }, + { MpvKey::Meta, MPV_FORMAT_NODE }, + { MpvKey::Fps, MPV_FORMAT_DOUBLE }, + { MpvKey::IsSeeking, MPV_FORMAT_FLAG }, + { MpvKey::Mute, MPV_FORMAT_STRING } }; - } +VideoPlayer::~VideoPlayer() {} + void VideoPlayer::pause() { int isPaused = 1; setPropertyAsyncMpv(isPaused, MpvKey::Pause); @@ -400,13 +403,9 @@ void VideoPlayer::initializeMpv() { // Starting MPV in a paused state seems to reduce problems with initialization setPropertyStringMpv("pause", ""); - //setPropertyStringMpv("load-stats-overlay", ""); - - //mpv_set_property_string(_mpvHandle, "script-opts", "autoload-disabled=yes"); - - // Verbose mode - mpv_set_property_string(_mpvHandle, "msg-level", "all=v"); - //mpv_request_log_messages(_mpvHandle, "debug"); + // Verbose mode for debug purposes + // setPropertyStringMpv("msg-level", "all=v"); + // mpv_request_log_messages(_mpvHandle, "debug"); if (mpv_initialize(_mpvHandle) < 0) { LINFO("mpv init failed"); @@ -419,16 +418,17 @@ void VideoPlayer::initializeMpv() { int blockTime = 0; mpv_render_param params[]{ - {MPV_RENDER_PARAM_API_TYPE, const_cast(MPV_RENDER_API_TYPE_OPENGL)}, - {MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_init_params}, - {MPV_RENDER_PARAM_ADVANCED_CONTROL, &adv}, - {MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, &blockTime}, - {MPV_RENDER_PARAM_INVALID, nullptr} + { MPV_RENDER_PARAM_API_TYPE, const_cast(MPV_RENDER_API_TYPE_OPENGL) }, + { MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_init_params }, + { MPV_RENDER_PARAM_ADVANCED_CONTROL, &adv }, + { MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, &blockTime }, + { MPV_RENDER_PARAM_INVALID, nullptr } }; // This makes mpv use the currently set GL context. It will use the callback // (passed via params) to resolve GL builtin functions, as well as extensions. - if (mpv_render_context_create(&_mpvRenderContext, _mpvHandle, params) < 0) { + int result = mpv_render_context_create(&_mpvRenderContext, _mpvHandle, params); + if (result < 0) { LINFO("Failed to initialize libmpv OpenGL context"); } @@ -438,7 +438,7 @@ void VideoPlayer::initializeMpv() { // users which run OpenGL on a different thread.) mpv_render_context_set_update_callback( _mpvRenderContext, - on_mpv_render_update, + onMpvRenderUpdate, this ); @@ -468,7 +468,7 @@ void VideoPlayer::initializeMpv() { _isInitialized = true; } -void VideoPlayer::seekToTime(double time, bool pauseAfter) { +void VideoPlayer::seekToTime(double time, PauseAfterSeek pauseAfter) { if (_isSeeking || abs(_currentVideoTime - time) < glm::epsilon()) { return; } @@ -500,7 +500,8 @@ void VideoPlayer::renderMpv() { handleMpvEvents(); if (_wakeup) { - if ((mpv_render_context_update(_mpvRenderContext) & MPV_RENDER_UPDATE_FRAME)) { + uint64_t result = mpv_render_context_update(_mpvRenderContext); + if ((result & MPV_RENDER_UPDATE_FRAME)) { // Save the currently bound fbo GLint defaultFBO = ghoul::opengl::FramebufferObject::getActiveObject(); @@ -514,12 +515,12 @@ void VideoPlayer::renderMpv() { _videoResolution.y, 0 }; - int flip_y{ 1 }; + int flipY{ 1 }; mpv_render_param params[] = { - {MPV_RENDER_PARAM_OPENGL_FBO, &mpfbo}, - {MPV_RENDER_PARAM_FLIP_Y, &flip_y}, - {MPV_RENDER_PARAM_INVALID, nullptr} + { MPV_RENDER_PARAM_OPENGL_FBO, &mpfbo }, + { MPV_RENDER_PARAM_FLIP_Y, &flipY }, + { MPV_RENDER_PARAM_INVALID, nullptr } }; // This "renders" to the video_framebuffer "linked by ID" in the // params_fbo @@ -584,25 +585,7 @@ void VideoPlayer::handleMpvEvents() { mpv_event_log_message* msg = reinterpret_cast(event->data); std::stringstream ss; - ss << "[" << msg->prefix << "] " << msg->level << ": " << msg->text; - LINFO(ss.str()); - break; - } - case MPV_EVENT_COMMAND_REPLY: { - MpvKey key = static_cast(event->reply_userdata); - - switch (key) { - case MpvKey::Command: { - - break; - } - case MpvKey::Seek: { - break; - } - default: { - break; - } - } + LINFO(fmt::format("[{}] {}: {}", msg->prefix, msg->level, msg->text)); break; } default: { @@ -730,7 +713,7 @@ void VideoPlayer::handleMpvProperties(mpv_event* event) { } case MpvKey::Pause: { int* videoIsPaused = reinterpret_cast(prop->data); - _isPaused = *videoIsPaused == 1; + _isPaused = (* videoIsPaused == 1); LINFO(fmt::format("Is Paused: {}", _isPaused)); break; } @@ -795,10 +778,8 @@ void VideoPlayer::handleMpvProperties(mpv_event* event) { } break; } - default: { throw ghoul::MissingCaseException(); - break; } } } @@ -815,12 +796,7 @@ void VideoPlayer::destroy() { } void VideoPlayer::preSync(bool isMaster) { - if (isMaster) { - _correctPlaybackTime = _currentVideoTime; - } - else { - _correctPlaybackTime = -1.0; - } + _correctPlaybackTime = isMaster ? _currentVideoTime : -1.0; } void VideoPlayer::encode(SyncBuffer* syncBuffer) { @@ -944,6 +920,4 @@ void VideoPlayer::resizeFBO(int width, int height) { createFBO(width, height); } -VideoPlayer::~VideoPlayer() {} - } // namespace openspace::video diff --git a/modules/video/src/videotileprovider.cpp b/modules/video/src/videotileprovider.cpp index ae1c2b79ae..c69f8a3a23 100644 --- a/modules/video/src/videotileprovider.cpp +++ b/modules/video/src/videotileprovider.cpp @@ -2,7 +2,7 @@ * * * OpenSpace * * * - * Copyright (c) 2014-2022 * + * Copyright (c) 2014-2023 * * * * 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 * @@ -38,37 +38,33 @@ namespace { constexpr std::string_view _loggerCat = "VideoTileProvider"; - struct [[codegen::Dictionary(VideoTileProvider)]] Parameters { - - }; #include "videotileprovider_codegen.cpp" } // namespace namespace openspace { -documentation::Documentation VideoTileProvider::Documentation() { - return codegen::doc("video_videotileprovider"); +namespace { + +constexpr bool isDifferent(double first, double second) { + return abs(first - second) > glm::epsilon(); } -bool isDifferent(double first, double second) { - return abs(first - second) > glm::epsilon(); } VideoTileProvider::VideoTileProvider(const ghoul::Dictionary& dictionary) : _videoPlayer(dictionary) { ZoneScoped - - const Parameters p = codegen::bake(dictionary); - addPropertySubOwner(_videoPlayer); } -Tile VideoTileProvider::tile(const TileIndex& tileIndex) { +VideoTileProvider::~VideoTileProvider() {} + +globebrowsing::Tile VideoTileProvider::tile(const globebrowsing::TileIndex& tileIndex) { ZoneScoped if (!_videoPlayer.isInitialized()) { - return Tile(); + return globebrowsing::Tile(); } // Always check that our framebuffer is ok @@ -83,28 +79,28 @@ Tile VideoTileProvider::tile(const TileIndex& tileIndex) { foundTile->second.texture != _videoPlayer.frameTexture().get(); if (foundTile == _tileCache.end() || textureChanged) { - _tileCache[hash] = Tile{ + _tileCache[hash] = globebrowsing::Tile{ _videoPlayer.frameTexture().get(), std::nullopt, - Tile::Status::OK + globebrowsing::Tile::Status::OK }; } return _tileCache[hash]; } -Tile::Status VideoTileProvider::tileStatus(const TileIndex& tileIndex) { +globebrowsing::Tile::Status VideoTileProvider::tileStatus(const globebrowsing::TileIndex& tileIndex) { if (tileIndex.level > maxLevel()) { - return Tile::Status::OutOfRange; + return globebrowsing::Tile::Status::OutOfRange; } else if (_tileIsReady) { - return Tile::Status::OK; + return globebrowsing::Tile::Status::OK; } else { - return Tile::Status::Unavailable; + return globebrowsing::Tile::Status::Unavailable; } } -TileDepthTransform VideoTileProvider::depthTransform() { +globebrowsing::TileDepthTransform VideoTileProvider::depthTransform() { return { 0.f, 1.f }; } @@ -116,13 +112,18 @@ void VideoTileProvider::reset() { _videoPlayer.reset(); } -ChunkTile VideoTileProvider::chunkTile(TileIndex tileIndex, int parents, int maxParents) { +globebrowsing::ChunkTile VideoTileProvider::chunkTile(globebrowsing::TileIndex tileIndex, + int parents, int maxParents) { + using namespace globebrowsing; + std::function ascendToParent = [] + (TileIndex& ti, TileUvTransform& uv) { + ti.level--; + }; - lambda ascendToParent = [](TileIndex& ti, TileUvTransform& uv) { - ti.level--; + glm::vec2 noOfTiles = { + std::pow(2, tileIndex.level), + std::pow(2, tileIndex.level - 1) }; - - glm::vec2 noOfTiles = { pow(2, tileIndex.level), pow(2, tileIndex.level - 1) }; glm::vec2 ratios = { 1.f / noOfTiles.x, 1.f / noOfTiles.y }; float offsetX = ratios.x * static_cast(tileIndex.x); // The tiles on the y-axis should be traversed backwards @@ -151,10 +152,8 @@ void VideoTileProvider::internalInitialize() { _videoPlayer.initialize(); } -VideoTileProvider::~VideoTileProvider() {} - void VideoTileProvider::internalDeinitialize() { _videoPlayer.destroy(); } -} // namespace openspace::video +} // namespace openspace diff --git a/modules/video/video.asset b/modules/video/video.asset deleted file mode 100644 index 5cefab06c8..0000000000 --- a/modules/video/video.asset +++ /dev/null @@ -1,30 +0,0 @@ -local layer = { - Identifier = "TestVideo", - Video = "C:/Users/ylvaselling/Documents/Work/Testmovies/result.mp4", - StartTime = '2023 01 29 20:00:00', - EndTime = '2023 01 29 21:00:00', - Name = "Test Video", - PlaybackMode = "MapToSimulationTime", - Enabled = asset.enabled, - Type = "VideoTileLayer", - Description = [[Testing video]] -} - -asset.onInitialize(function() - openspace.globebrowsing.addLayer("Earth", "ColorLayers", layer) -end) - -asset.onDeinitialize(function() - openspace.globebrowsing.deleteLayer("Earth", "ColorLayers", layer) -end) - -asset.export("layer", layer) - -asset.meta = { - Name = "Aqua Modis (Temporal)", - Version = "1.1", - Description = "GIBS hosted layer", - Author = "NASA EOSDIS Global Imagery Browse Services", - URL = "https://earthdata.nasa.gov/eosdis/science-system-description/eosdis-components/gibs", - License = "NASA" -} diff --git a/modules/video/video_loop.asset b/modules/video/video_loop.asset deleted file mode 100644 index 2decabea53..0000000000 --- a/modules/video/video_loop.asset +++ /dev/null @@ -1,27 +0,0 @@ -local layer = { - Identifier = "TestVideoLoop", - Video = "C:/Users/ylvaselling/Documents/Work/Testmovies/black_carbon_sulfate.mp4", - Name = "Test Video Loop", - Enabled = asset.enabled, - Type = "VideoTileLayer", - Description = [[Testing video]] -} - -asset.onInitialize(function() - openspace.globebrowsing.addLayer("Earth", "ColorLayers", layer) -end) - -asset.onDeinitialize(function() - openspace.globebrowsing.deleteLayer("Earth", "ColorLayers", layer) -end) - -asset.export("layer", layer) - -asset.meta = { - Name = "Aqua Modis (Temporal)", - Version = "1.1", - Description = "GIBS hosted layer", - Author = "NASA EOSDIS Global Imagery Browse Services", - URL = "https://earthdata.nasa.gov/eosdis/science-system-description/eosdis-components/gibs", - License = "NASA" -} diff --git a/modules/video/video_loop_sos.asset b/modules/video/video_loop_sos.asset deleted file mode 100644 index 1302361b5b..0000000000 --- a/modules/video/video_loop_sos.asset +++ /dev/null @@ -1,27 +0,0 @@ -local layer = { - Identifier = "SosLoopTest", - Video = "C:/Users/ylvaselling/Documents/Work/Testmovies/chlorophyll_model_2048.mp4", - Name = "Science On A Sphere Loop Video", - Enabled = asset.enabled, - Type = "VideoTileLayer", - Description = [[Testing video]] -} - -asset.onInitialize(function() - openspace.globebrowsing.addLayer("Earth", "ColorLayers", layer) -end) - -asset.onDeinitialize(function() - openspace.globebrowsing.deleteLayer("Earth", "ColorLayers", layer) -end) - -asset.export("layer", layer) - -asset.meta = { - Name = "Aqua Modis (Temporal)", - Version = "1.1", - Description = "GIBS hosted layer", - Author = "NASA EOSDIS Global Imagery Browse Services", - URL = "https://earthdata.nasa.gov/eosdis/science-system-description/eosdis-components/gibs", - License = "NASA" -} diff --git a/modules/video/video_loop_sos_airtraffic.asset b/modules/video/video_loop_sos_airtraffic.asset deleted file mode 100644 index 9855a8783a..0000000000 --- a/modules/video/video_loop_sos_airtraffic.asset +++ /dev/null @@ -1,27 +0,0 @@ -local layer = { - Identifier = "SosLoop3", - Video = "C:/Users/ylvaselling/Documents/Work/Testmovies/air_traffic_2048.mp4", - Name = "Science On A Sphere Loop Video", - Enabled = asset.enabled, - Type = "VideoTileLayer", - Description = [[Testing video]] -} - -asset.onInitialize(function() - openspace.globebrowsing.addLayer("Earth", "ColorLayers", layer) -end) - -asset.onDeinitialize(function() - openspace.globebrowsing.deleteLayer("Earth", "ColorLayers", layer) -end) - -asset.export("layer", layer) - -asset.meta = { - Name = "Aqua Modis (Temporal)", - Version = "1.1", - Description = "GIBS hosted layer", - Author = "NASA EOSDIS Global Imagery Browse Services", - URL = "https://earthdata.nasa.gov/eosdis/science-system-description/eosdis-components/gibs", - License = "NASA" -} diff --git a/modules/video/video_loop_sos_carbon.asset b/modules/video/video_loop_sos_carbon.asset deleted file mode 100644 index 198b7adefd..0000000000 --- a/modules/video/video_loop_sos_carbon.asset +++ /dev/null @@ -1,27 +0,0 @@ -local layer = { - Identifier = "SosLoop2", - Video = "C:/Users/ylvaselling/Documents/Work/Testmovies/2048_jpg-2048x1024.mp4", - Name = "Science On A Sphere Loop Video", - Enabled = asset.enabled, - Type = "VideoTileLayer", - Description = [[Testing video]] -} - -asset.onInitialize(function() - openspace.globebrowsing.addLayer("Earth", "ColorLayers", layer) -end) - -asset.onDeinitialize(function() - openspace.globebrowsing.deleteLayer("Earth", "ColorLayers", layer) -end) - -asset.export("layer", layer) - -asset.meta = { - Name = "Aqua Modis (Temporal)", - Version = "1.1", - Description = "GIBS hosted layer", - Author = "NASA EOSDIS Global Imagery Browse Services", - URL = "https://earthdata.nasa.gov/eosdis/science-system-description/eosdis-components/gibs", - License = "NASA" -} diff --git a/modules/video/video_sos.asset b/modules/video/video_sos.asset deleted file mode 100644 index fda6853246..0000000000 --- a/modules/video/video_sos.asset +++ /dev/null @@ -1,30 +0,0 @@ -local layer = { - Identifier = "ScienceOnASphere", - Video = "C:/Users/ylvaselling/Documents/Work/Testmovies/4096-4.mp4", - StartTime = '2004 01 01 00:00:00', - EndTime = '2004 06 05 20:00:00', - Name = "Science On A Sphere Video", - PlaybackMode = "MapToSimulationTime", - Enabled = asset.enabled, - Type = "VideoTileLayer", - Description = [[Testing video]] -} - -asset.onInitialize(function() - openspace.globebrowsing.addLayer("Earth", "ColorLayers", layer) -end) - -asset.onDeinitialize(function() - openspace.globebrowsing.deleteLayer("Earth", "ColorLayers", layer) -end) - -asset.export("layer", layer) - -asset.meta = { - Name = "Aqua Modis (Temporal)", - Version = "1.1", - Description = "GIBS hosted layer", - Author = "NASA EOSDIS Global Imagery Browse Services", - URL = "https://earthdata.nasa.gov/eosdis/science-system-description/eosdis-components/gibs", - License = "NASA" -} diff --git a/modules/video/video_sos_capitals.asset b/modules/video/video_sos_capitals.asset deleted file mode 100644 index 4fff455bd1..0000000000 --- a/modules/video/video_sos_capitals.asset +++ /dev/null @@ -1,26 +0,0 @@ -local layer = { - Identifier = "Capitals", - Video = "C:/Users/ylvaselling/Documents/Work/Testmovies/capitals/4096.png", - Name = "Capitals", - Enabled = asset.enabled, - Description = [[Testing video]] -} - -asset.onInitialize(function() - openspace.globebrowsing.addLayer("Earth", "ColorLayers", layer) -end) - -asset.onDeinitialize(function() - openspace.globebrowsing.deleteLayer("Earth", "ColorLayers", layer) -end) - -asset.export("layer", layer) - -asset.meta = { - Name = "Aqua Modis (Temporal)", - Version = "1.1", - Description = "GIBS hosted layer", - Author = "NASA EOSDIS Global Imagery Browse Services", - URL = "https://earthdata.nasa.gov/eosdis/science-system-description/eosdis-components/gibs", - License = "NASA" -} diff --git a/modules/video/videomodule.cpp b/modules/video/videomodule.cpp index 2e916ff5f2..fcc4a1f0a8 100644 --- a/modules/video/videomodule.cpp +++ b/modules/video/videomodule.cpp @@ -23,6 +23,7 @@ ****************************************************************************************/ #include + #include #include #include @@ -60,12 +61,11 @@ VideoModule::VideoModule() void VideoModule::internalInitialize(const ghoul::Dictionary& dict) { const Parameters p = codegen::bake(dict); - using namespace globebrowsing; _enabled = p.enabled.value_or(_enabled); - ghoul::TemplateFactory* fTileProvider = - FactoryManager::ref().factory(); + ghoul::TemplateFactory* fTileProvider = + FactoryManager::ref().factory(); ghoul_assert(fTileProvider, "TileProvider factory was not created"); fTileProvider->registerClass("VideoTileLayer"); @@ -89,13 +89,4 @@ std::vector VideoModule::documentations() const { return std::vector(); } -scripting::LuaLibrary VideoModule::luaLibrary() const { - return { - "video", - { - - } - }; -} - } // namespace openspace diff --git a/modules/video/videomodule.h b/modules/video/videomodule.h index b18885d3c8..20d89290db 100644 --- a/modules/video/videomodule.h +++ b/modules/video/videomodule.h @@ -37,7 +37,6 @@ public: VideoModule(); - scripting::LuaLibrary luaLibrary() const override; std::vector documentations() const override; protected: diff --git a/modules/video/videomodule_lua.inl b/modules/video/videomodule_lua.inl deleted file mode 100644 index 6c9c6277f8..0000000000 --- a/modules/video/videomodule_lua.inl +++ /dev/null @@ -1,32 +0,0 @@ -/***************************************************************************************** - * * - * OpenSpace * - * * - * Copyright (c) 2014-2023 * - * * - * 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. * - ****************************************************************************************/ - -#include -#include - -namespace { - constexpr std::string_view _loggerCat = "VideoModule"; - -//#include "videomodule_lua_codegen.cpp" -} // namespace diff --git a/modules/video/videoplane.asset b/modules/video/videoplane.asset deleted file mode 100644 index 3ed715053e..0000000000 --- a/modules/video/videoplane.asset +++ /dev/null @@ -1,33 +0,0 @@ -local transforms = asset.require("scene/solarsystem/planets/earth/transforms") - -local plane = { - Identifier = "VideoPlaneVeryCool", - Parent = transforms.EarthCenter.Identifier, - Transform = { - Translation = { - Type = "StaticTranslation", - Position = { 0.0, -11E7, 0.0 } - } - }, - Renderable = { - Type = "RenderableVideoPlane", - MirrorBackside = true, - Size = 3E7, - Video = "C:/Users/malej60/Videos/test/4096-4.mp4", - PlaybackMode = "RealTimeLoop" - }, - GUI = { - Name = "Test Plane Cool", - Path = "/Other/Planes" - } -} - -asset.onInitialize(function() - openspace.addSceneGraphNode(plane) -end) - -asset.onDeinitialize(function() - openspace.removeSceneGraphNode(plane) -end) - -asset.export(plane) diff --git a/modules/video/videosphereaurora.asset b/modules/video/videosphereaurora.asset deleted file mode 100644 index c3e311080e..0000000000 --- a/modules/video/videosphereaurora.asset +++ /dev/null @@ -1,32 +0,0 @@ -local sphere = { - Identifier = "Aurora", - Transform = { - Translation = { - Type = "StaticTranslation", - Position = { 0, 0, 0 } - } - }, - Renderable = { - Type = "RenderableVideoSphere", - Enabled = true, - Size = 100.0, - Segments = 80, - Opacity = 1, - Video = "C:/Users/ylvaselling/Documents/Work/Testmovies/aurora.mp4", - Orientation = "Both", - }, - GUI = { - Name = "Aurora Sphere", - Path = "/Other/Spheres" - } -} - -asset.onInitialize(function() - openspace.addSceneGraphNode(sphere) -end) - -asset.onDeinitialize(function() - openspace.removeSceneGraphNode(sphere) -end) - -asset.export(sphere) diff --git a/modules/video/videospheres.asset b/modules/video/videospheres.asset deleted file mode 100644 index 53f7c111cc..0000000000 --- a/modules/video/videospheres.asset +++ /dev/null @@ -1,33 +0,0 @@ -local sphere = { - Identifier = "VideoSphereVeryCool", - Transform = { - Translation = { - Type = "StaticTranslation", - Position = { 0, 0, 0 } - } - }, - Renderable = { - Type = "RenderableVideoSphere", - Enabled = true, - Size = 100.0, - Segments = 80, - Opacity = 1, - Texture = openspace.absPath("${DATA}/test2.jpg"), - File = "C:/Users/ylvaselling/Documents/Work/Testmovies/2048_jpg-2048x1024.mp4", - Orientation = "Both", - }, - GUI = { - Name = "Test Sphere Cool", - Path = "/Other/Spheres" - } -} - -asset.onInitialize(function() - openspace.addSceneGraphNode(sphere) -end) - -asset.onDeinitialize(function() - openspace.removeSceneGraphNode(sphere) -end) - -asset.export(sphere)