mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-02-26 06:49:09 -06:00
Feature/session recording (#737)
* In progress with new version of session recording * Session recording coding pass for both record and playback, not building yet. * Working on getting first build of prototype * Code changes to get playback working with all 3 timing modes * Fixing session recording interactions with the timemanager * Bug fixes for newly discovered timing issues, mothballing recording of timing updates * Fixed camera jitter issue * Updated new reference to latest ghoul * Got session recording/playback working with changes made in master * Added threshold for differences in camera movement as criteria for saving to recording file * Added support for binary file for session recording/playback * Minor changes with handling timeManager keyframes in playback * New timeline structure & keyframes specific to session recording * Fixed bug with fixed-script size * Switched to new timeline specific to session recording, bug fixes, currently debugging camera position & rotation * Formatting changes only * Fixed scripts not working after timeline change * Add session recording test scene * Fixed problem with re-running the same playback multiple times * Fixed problems with camera interpolation * Fixed detection of camera playback finishing, and improved camera interpolation * Added comments for interface of externInteraction include * Fixed view frustum culling issues in session playback due to not appropiate camera scaling. Also made function in datamessagestructures to read and write this data to streams. * Added camera scaling fix to code that supports Ascii format * Added startPlayback default command for playing back while forcing simulation time to match the recording * Fixed camera jump in sessionRecording after playback finished. Cleanup in playback of camera to re-use same functionality in keyframenavigator. * Superb fix to sessionRecording. Realized focusNode of globalNavigationHandler needed to be activly update when camera change for either position of camera to be accurate or for rendered objects to be calculated without precision issues. Can now achieve a correct playback, even close to chunks/renderable, which was not possible before. * sessionRecording cleanup, fixed all warnings and renamed files to lowercase to match current standards. * Added error handling for bad input playback filename, protection from corrupted playback file * Implemented code review changes on pull request #737 for sessionRecording
This commit is contained in:
@@ -25,8 +25,21 @@
|
||||
#ifndef __OPENSPACE_CORE___SCRIPTSCHEDULER___H__
|
||||
#define __OPENSPACE_CORE___SCRIPTSCHEDULER___H__
|
||||
|
||||
#include <openspace/scripting/lualibrary.h>
|
||||
#include <openspace/interaction/keyframenavigator.h>
|
||||
|
||||
|
||||
#include <queue>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <functional>
|
||||
|
||||
namespace {
|
||||
constexpr const char* KeyTime = "Time";
|
||||
constexpr const char* KeyForwardScript = "ForwardScript";
|
||||
constexpr const char* KeyBackwardScript = "BackwardScript";
|
||||
constexpr const char* KeyUniversalScript = "Script";
|
||||
} // namespace
|
||||
|
||||
namespace ghoul { class Dictionary; }
|
||||
namespace openspace::documentation { struct Documentation; }
|
||||
@@ -71,15 +84,16 @@ public:
|
||||
void clearSchedule();
|
||||
|
||||
/**
|
||||
* Progresses the script schedulers time and returns all scripts that has been
|
||||
* scheduled to run between \param newTime and the time provided in the last
|
||||
* invocation of this method.
|
||||
*
|
||||
* \param newTime A j2000 time value specifying the new time stamp that
|
||||
* the script scheduler should progress to.
|
||||
*
|
||||
* \returns the ordered queue of scripts .
|
||||
*/
|
||||
* Progresses the script schedulers time and returns all scripts that has been
|
||||
* scheduled to run between \param newTime and the time provided in the last invocation
|
||||
* of this method.
|
||||
*
|
||||
* \param newTime_simulation A j2000 time value specifying the new time stamp that
|
||||
* the script scheduler should progress to.
|
||||
* \param newTime_application The seconds elapsed since the application started
|
||||
*
|
||||
* \returns the ordered queue of scripts .
|
||||
*/
|
||||
// std::queue<std::string> progressTo(double newTime);
|
||||
|
||||
/**
|
||||
@@ -103,8 +117,29 @@ public:
|
||||
*/
|
||||
std::vector<ScheduledScript> allScripts() const;
|
||||
|
||||
/**
|
||||
* Sets the mode for how each scheduled script's timestamp will be interpreted.
|
||||
* \param refType reference mode (for exact syntax, see definition of
|
||||
* openspace::interaction::KeyframeTimeRef) which is either relative to the
|
||||
* application start time, relative to the recorded session playback start time,
|
||||
* or according to the absolute simulation time in seconds from J2000 epoch.
|
||||
*/
|
||||
void setTimeReferenceMode(openspace::interaction::KeyframeTimeRef refType);
|
||||
|
||||
/**
|
||||
* Sets the mode for scripts being run from playback
|
||||
*/
|
||||
void triggerPlaybackStart();
|
||||
|
||||
/**
|
||||
* Sets the flag for scripts no longer being run from playback
|
||||
*/
|
||||
void stopPlayback();
|
||||
|
||||
static LuaLibrary luaLibrary();
|
||||
void setModeApplicationTime();
|
||||
void setModeRecordedTime();
|
||||
void setModeSimulationTime();
|
||||
|
||||
static documentation::Documentation Documentation();
|
||||
|
||||
@@ -115,6 +150,10 @@ private:
|
||||
|
||||
int _currentIndex = 0;
|
||||
double _currentTime = 0;
|
||||
bool _playbackModeEnabled = false;
|
||||
|
||||
openspace::interaction::KeyframeTimeRef _timeframeMode
|
||||
= openspace::interaction::KeyframeTimeRef::Absolute_simTimeJ2000;
|
||||
};
|
||||
|
||||
} // namespace openspace::scripting
|
||||
|
||||
Reference in New Issue
Block a user