mirror of
https://github.com/brunoherbelin/vimix.git
synced 2025-12-11 10:19:59 +01:00
Added symbols for overlay of busy information. Added busy animation when
loading session in transition view.
This commit is contained in:
@@ -292,6 +292,8 @@ set(VMIX_RSC_FILES
|
||||
./rsc/mesh/icon_render.ply
|
||||
./rsc/mesh/icon_clone.ply
|
||||
./rsc/mesh/icon_vimix.ply
|
||||
./rsc/mesh/icon_circles.ply
|
||||
./rsc/mesh/icon_dots.ply
|
||||
./rsc/mesh/icon_empty.ply
|
||||
./rsc/mesh/h_line.ply
|
||||
./rsc/mesh/h_mark.ply
|
||||
|
||||
@@ -221,7 +221,7 @@ void Handles::draw(glm::mat4 modelview, glm::mat4 projection)
|
||||
glm::vec3 rot(0.f);
|
||||
glm::vec4 vec = modelview * glm::vec4(1.f, 0.f, 0.f, 0.f);
|
||||
rot.z = glm::orientedAngle( glm::vec3(1.f, 0.f, 0.f), glm::normalize(glm::vec3(vec)), glm::vec3(0.f, 0.f, 1.f) );
|
||||
vec = modelview * glm::vec4(0.f, 1.f, 0.f, 1.f);
|
||||
// vec = modelview * glm::vec4(0.f, 1.f, 0.f, 1.f);
|
||||
// glm::vec3 scale( vec.x > 0.f ? 1.f : -1.f, vec.y > 0.f ? 1.f : -1.f, 1.f);
|
||||
// glm::vec3 scale(1.f, 1.f, 1.f);
|
||||
|
||||
@@ -301,23 +301,24 @@ void Handles::accept(Visitor& v)
|
||||
}
|
||||
|
||||
|
||||
Symbol::Symbol(Type style, glm::vec3 pos) : Node()
|
||||
Symbol::Symbol(Type t, glm::vec3 pos) : Node(), type_(t)
|
||||
{
|
||||
static Mesh *icons[7] = {nullptr};
|
||||
static Mesh *icons[9] = {nullptr};
|
||||
if (icons[0] == nullptr) {
|
||||
icons[POINT] = new Mesh("mesh/point.ply");
|
||||
icons[IMAGE] = new Mesh("mesh/icon_image.ply");
|
||||
icons[VIDEO] = new Mesh("mesh/icon_video.ply");
|
||||
icons[SESSION] = new Mesh("mesh/icon_vimix.ply");
|
||||
icons[CLONE] = new Mesh("mesh/icon_clone.ply");
|
||||
icons[RENDER] = new Mesh("mesh/icon_render.ply");
|
||||
icons[DOTS] = new Mesh("mesh/icon_dots.ply");
|
||||
icons[CIRCLES] = new Mesh("mesh/icon_circles.ply");
|
||||
icons[EMPTY] = new Mesh("mesh/icon_empty.ply");
|
||||
icons[GENERIC] = new Mesh("mesh/point.ply");
|
||||
}
|
||||
|
||||
symbol_ = icons[style];
|
||||
symbol_ = icons[type_];
|
||||
translation_ = pos;
|
||||
color = glm::vec4( 1.f, 1.f, 1.f, 1.f);
|
||||
|
||||
}
|
||||
|
||||
Symbol::~Symbol()
|
||||
@@ -333,19 +334,17 @@ void Symbol::draw(glm::mat4 modelview, glm::mat4 projection)
|
||||
init();
|
||||
}
|
||||
|
||||
if ( visible_ ) {
|
||||
if ( visible_ && symbol_) {
|
||||
|
||||
if(symbol_) {
|
||||
// set color
|
||||
symbol_->shader()->color = color;
|
||||
// set color
|
||||
symbol_->shader()->color = color;
|
||||
|
||||
glm::mat4 ctm = modelview * transform_;
|
||||
// correct for aspect ratio
|
||||
glm::vec4 vec = ctm * glm::vec4(1.f, 1.0f, 0.f, 0.f);
|
||||
ctm *= glm::scale(glm::identity<glm::mat4>(), glm::vec3( vec.y / vec.x, 1.f, 1.f));
|
||||
glm::mat4 ctm = modelview * transform_;
|
||||
// correct for aspect ratio
|
||||
glm::vec4 vec = ctm * glm::vec4(1.f, 1.0f, 0.f, 0.f);
|
||||
ctm *= glm::scale(glm::identity<glm::mat4>(), glm::vec3( vec.y / vec.x, 1.f, 1.f));
|
||||
|
||||
symbol_->draw( ctm, projection);
|
||||
}
|
||||
symbol_->draw( ctm, projection);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -57,8 +57,8 @@ protected:
|
||||
class Symbol : public Node
|
||||
{
|
||||
public:
|
||||
typedef enum { GENERIC = 0, IMAGE, VIDEO, SESSION, CLONE, RENDER, EMPTY } Type;
|
||||
Symbol(Type type = GENERIC, glm::vec3 pos = glm::vec3(0.f));
|
||||
typedef enum { POINT = 0, IMAGE, VIDEO, SESSION, CLONE, RENDER, DOTS, CIRCLES, EMPTY } Type;
|
||||
Symbol(Type t = POINT, glm::vec3 pos = glm::vec3(0.f));
|
||||
~Symbol();
|
||||
|
||||
void draw (glm::mat4 modelview, glm::mat4 projection) override;
|
||||
|
||||
@@ -60,7 +60,12 @@ SessionSource::SessionSource() : Source(), path_("")
|
||||
overlays_[View::TRANSITION] = new Group;
|
||||
overlays_[View::TRANSITION]->translation_.z = 0.1;
|
||||
overlays_[View::TRANSITION]->visible_ = false;
|
||||
Symbol *center = new Symbol(Symbol::GENERIC, glm::vec3(0.f, -1.05f, 0.1f));
|
||||
|
||||
Symbol *loader = new Symbol(Symbol::DOTS);
|
||||
loader->scale_ = glm::vec3(2.f, 2.f, 1.f);
|
||||
loader->update_callbacks_.push_back(new InfiniteGlowCallback);
|
||||
overlays_[View::TRANSITION]->attach(loader);
|
||||
Symbol *center = new Symbol(Symbol::POINT, glm::vec3(0.f, -1.05f, 0.1f));
|
||||
overlays_[View::TRANSITION]->attach(center);
|
||||
groups_[View::TRANSITION]->attach(overlays_[View::TRANSITION]);
|
||||
|
||||
@@ -149,6 +154,10 @@ void SessionSource::init()
|
||||
}
|
||||
// if all sources are ready, done with initialization!
|
||||
if (ready) {
|
||||
// remove the loading icon
|
||||
Node *loader = overlays_[View::TRANSITION]->back();
|
||||
overlays_[View::TRANSITION]->detatch(loader);
|
||||
delete loader;
|
||||
// done init
|
||||
wait_for_sources_ = false;
|
||||
initialized_ = true;
|
||||
|
||||
@@ -49,7 +49,7 @@ Source::Source() : initialized_(false), active_(true), need_update_(true)
|
||||
overlays_[View::MIXING] = new Group;
|
||||
overlays_[View::MIXING]->translation_.z = 0.1;
|
||||
overlays_[View::MIXING]->visible_ = false;
|
||||
Symbol *center = new Symbol(Symbol::GENERIC, glm::vec3(0.f, 0.f, 0.1f));
|
||||
Symbol *center = new Symbol(Symbol::POINT, glm::vec3(0.f, 0.f, 0.1f));
|
||||
overlays_[View::MIXING]->attach(center);
|
||||
groups_[View::MIXING]->attach(overlays_[View::MIXING]);
|
||||
|
||||
|
||||
@@ -65,3 +65,23 @@ void BounceScaleCallback::update(Node *n, float dt)
|
||||
finished_ = true;
|
||||
}
|
||||
}
|
||||
InfiniteGlowCallback::InfiniteGlowCallback(float amplitude) : UpdateCallback(),
|
||||
amplitude_(amplitude), time_(0.f), initialized_(false)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void InfiniteGlowCallback::update(Node *n, float dt)
|
||||
{
|
||||
// set start scale on first run
|
||||
if (!initialized_){
|
||||
initial_scale_ = n->scale_;
|
||||
initialized_ = true;
|
||||
}
|
||||
|
||||
time_ += dt / 1000.f;
|
||||
|
||||
n->scale_.x = initial_scale_.x + amplitude_ * sin(M_PI * time_);
|
||||
n->scale_.y = initial_scale_.y + amplitude_ * sin(M_PI * time_);
|
||||
|
||||
}
|
||||
|
||||
@@ -49,4 +49,16 @@ public:
|
||||
void update(Node *n, float dt);
|
||||
};
|
||||
|
||||
class InfiniteGlowCallback : public UpdateCallback
|
||||
{
|
||||
float amplitude_;
|
||||
float time_;
|
||||
bool initialized_;
|
||||
glm::vec3 initial_scale_;
|
||||
|
||||
public:
|
||||
InfiniteGlowCallback(float amplitude = 0.5f);
|
||||
void update(Node *n, float dt);
|
||||
};
|
||||
|
||||
#endif // UPDATECALLBACK_H
|
||||
|
||||
Reference in New Issue
Block a user