improvment ?

This commit is contained in:
Sam Gateau 2015-07-02 15:53:02 -07:00
parent 8d8a902328
commit bf052162bb
2 changed files with 16 additions and 24 deletions

View file

@ -167,6 +167,17 @@ namespace render {
}
}
void makeEntityItemStatusGetters(RenderableModelEntityItem* entity, render::Item::Status::Getters& statusGetters) {
statusGetters.push_back([entity] () -> render::Item::Status::Value {
quint64 delta = usecTimestampNow() - entity->getLastEditedFromRemote();
return render::Item::Status::Value((delta / (0.01f * USECS_PER_SECOND)), 1.0f);
});
statusGetters.push_back([entity] () -> render::Item::Status::Value {
quint64 delta = usecTimestampNow() - entity->getLastBroadcast();
return render::Item::Status::Value((delta / (0.02f * USECS_PER_SECOND)), 0.5f);
});
}
bool RenderableModelEntityItem::addToScene(EntityItemPointer self, std::shared_ptr<render::Scene> scene,
render::PendingChanges& pendingChanges) {
_myMetaItem = scene->allocateID();
@ -177,20 +188,9 @@ bool RenderableModelEntityItem::addToScene(EntityItemPointer self, std::shared_p
pendingChanges.resetItem(_myMetaItem, renderPayload);
if (_model) {
// return _model->addToScene(scene, pendingChanges);
render::Item::Status::Getters statusGetters;
statusGetters.push_back([this] () -> render::Item::Status::Value {
quint64 delta = usecTimestampNow() - this->getLastEditedFromRemote();
return render::Item::Status::Value((delta < 0.1f * USECS_PER_SECOND), 1.0f);
});
statusGetters.push_back([this] () -> render::Item::Status::Value {
quint64 delta = usecTimestampNow() - this->getLastBroadcast();
return render::Item::Status::Value((delta < 0.2f * USECS_PER_SECOND), 0.5f);
});
makeEntityItemStatusGetters(this, statusGetters);
return _model->addToScene(scene, pendingChanges, statusGetters);
}
return true;
@ -227,17 +227,9 @@ void RenderableModelEntityItem::render(RenderArgs* args) {
render::PendingChanges pendingChanges;
if (_model->needsFixupInScene()) {
_model->removeFromScene(scene, pendingChanges);
render::Item::Status::Getters statusGetters;
statusGetters.push_back([this] () -> render::Item::Status::Value {
quint64 delta = usecTimestampNow() - this->getLastEditedFromRemote();
return render::Item::Status::Value((delta < 0.1f * USECS_PER_SECOND), 1.0f);
});
statusGetters.push_back([this] () -> render::Item::Status::Value {
quint64 delta = usecTimestampNow() - this->getLastBroadcast();
return render::Item::Status::Value((delta < 0.2f * USECS_PER_SECOND), 0.5f);
});
render::Item::Status::Getters statusGetters;
makeEntityItemStatusGetters(this, statusGetters);
_model->addToScene(scene, pendingChanges, statusGetters);
}
scene->enqueuePendingChanges(pendingChanges);

View file

@ -40,7 +40,7 @@ vec3 paintRainbow(float nv) {
return vec3(1.f, 1.f, 1.f);
}
vec2 unpackStatus(uint v) {
vec2 unpackStatus(int v) {
// return unpackSnorm2x16(uint(packed));
return vec2(clamp((float(v & 0xFFFF) - 32727.0) / 32727.0, -1.0, 1.0),
clamp((float((v >> 16) & 0xFFFF) - 32727.0) / 32727.0, -1.0, 1.0));
@ -76,7 +76,7 @@ void main(void) {
}
// unpack to get x and y satus
vec2 iconStatus = unpackStatus(uint(inStatus[iconNum]));
vec2 iconStatus = unpackStatus(inStatus[iconNum]);
// Use the status for showing a color
varColor = vec4(paintRainbow(abs(iconStatus.y)), 1.0);