#ifndef CLIENTPLAYER_HPP #define CLIENTPLAYER_HPP #include "ofSystemUtils.h" #include "ofxCloudLib/CloudPlayerThread.hpp" namespace ofxCloudLib { class ClientPlayer : public AbstractClient { public: ClientPlayer(std::string client_name, int index) : AbstractClient(client_name, index){}; void load_recording() { ofFileDialogResult result = ofSystemLoadDialog("load recording"); if (result.bSuccess) { ofFile file = ofFile(result.getPath()); cloud_player_.setup(file.getEnclosingDirectory()); index_.setMax(cloud_player_.get_number_of_frames()); } } void direct_load_recording(std::string path) { ofLogNotice("ClientPlayer") << "direct_load_recording: " << path; cloud_player_.setup(path); index_.setMax(cloud_player_.get_number_of_frames()); } void control_playback(bool &b) { if (b) { cloud_player_.start(); } else { cloud_player_.stop(); } } void offset(float &b) { cloud_player_.offset_x_ = offset_x_; cloud_player_.offset_z_ = offset_z_; } ofMesh &get_mesh() override { return cloud_player_.get_mesh(); }; void update() override { if (cloud_player_.isThreadRunning()) { cloud_player_.update_cloud(); cloud_player_.update_mesh(); index_.set(cloud_player_.get_current_frame()); } } bool is_xyz_new() override { return playing_.get(); } void setup() override { AbstractClient::setup(); gui_.add(recording_path_.setup("path", "/home/artificiel/recordings")); gui_.add(load_recording_.setup("load recording")); gui_.add(drawing_.set("drawing", 0)); gui_.add(playing_.set("playing", 0)); gui_.add(speed_.set("speed", 1, .1, 10)); gui_.add(looping_.set("looping", false)); gui_.add(index_.set("frame", 0, 0, 1000)); gui_.add(offset_x_.set("offset x", 0, -10, 10)); gui_.add(offset_z_.set("offset z", 0, -10, 10)); load_recording_.addListener(this, &ClientPlayer::load_recording); playing_.addListener(this, &ClientPlayer::control_playback); offset_x_.addListener(this, &ClientPlayer::offset); offset_z_.addListener(this, &ClientPlayer::offset); } ofxTextField recording_path_; ofxButton load_recording_; ofParameter speed_; ofParameter looping_; ofParameter playing_; ofParameter offset_x_; ofParameter offset_z_; ofParameter drawing_; ofParameter index_; ofxCloudLib::CloudPlayerThread cloud_player_; }; } // namespace ofxCloudLib #endif // CLIENTPLAYER_HPP