can toggle hit effect on and off from a script

This commit is contained in:
ericrius1 2015-07-20 11:58:26 -07:00
parent 3439d45e0e
commit e75a6feafe
6 changed files with 23 additions and 4 deletions

View file

@ -3570,6 +3570,7 @@ void Application::displaySide(RenderArgs* renderArgs, Camera& theCamera, bool se
renderContext._maxDrawnOverlay3DItems = sceneInterface->getEngineMaxDrawnOverlay3DItems();
renderContext._drawItemStatus = sceneInterface->doEngineDisplayItemStatus();
renderContext._drawHitEffect = sceneInterface->doEngineDisplayHitEffect();
renderArgs->_shouldRender = LODManager::shouldRender;

View file

@ -78,6 +78,9 @@ RenderDeferredTask::RenderDeferredTask() : Task() {
_jobs.push_back(Job(new DrawOverlay3D::JobModel("DrawOverlay3D")));
_jobs.push_back(Job(new HitEffect::JobModel("HitEffect")));
_jobs.back().setEnabled(false);
_drawHitEffectJobIndex = _jobs.size() -1;
_jobs.push_back(Job(new ResetGLState::JobModel()));
@ -106,6 +109,10 @@ void RenderDeferredTask::run(const SceneContextPointer& sceneContext, const Rend
// Make sure we turn the displayItemStatus on/off
setDrawItemStatus(renderContext->_drawItemStatus);
//Make sure we display hit effect on screen, as desired from a script
setDrawHitEffect(renderContext->_drawHitEffect);
renderContext->args->_context->syncCache();

View file

@ -71,9 +71,13 @@ public:
render::Jobs _jobs;
int _drawStatusJobIndex = -1;
int _drawHitEffectJobIndex = -1;
void setDrawItemStatus(bool draw) { if (_drawStatusJobIndex >= 0) { _jobs[_drawStatusJobIndex].setEnabled(draw); } }
bool doDrawItemStatus() const { if (_drawStatusJobIndex >= 0) { return _jobs[_drawStatusJobIndex].isEnabled(); } else { return false; } }
void setDrawHitEffect(bool draw) { if (_drawHitEffectJobIndex >= 0) { _jobs[_drawHitEffectJobIndex].setEnabled(draw); } }
bool doDrawHitEffect() const { if (_drawHitEffectJobIndex >=0) { return _jobs[_drawHitEffectJobIndex].isEnabled(); } else { return false; } }
virtual void run(const render::SceneContextPointer& sceneContext, const render::RenderContextPointer& renderContext);

View file

@ -22,8 +22,9 @@ void main(void) {
<$transformCameraViewport(cam, myViewport)$>
vec2 center = vec2(myViewport.z/2.0, myViewport.w/2.0);
float distFromCenter = distance(center, gl_FragCoord.xy);
//normalize
distFromCenter = distFromCenter/myViewport.z;
float alpha = mix(0.0, 1.0, distFromCenter);
gl_FragColor = vec4(0.7, 0.0, 0.0, alpha);
//normalize distance from center based on average of screen width and height
float normalizationFactor = (myViewport.z + myViewport.w)/2.0;
distFromCenter = distFromCenter/normalizationFactor;
float alpha = mix(0.0, 1.0, pow(distFromCenter, 1.5));
gl_FragColor = vec4(1.0, 0.0, 0.0, alpha);
}

View file

@ -50,6 +50,7 @@ public:
int _maxDrawnOverlay3DItems = -1;
bool _drawItemStatus = false;
bool _drawHitEffect = false;
RenderContext() {}
};

View file

@ -109,6 +109,9 @@ public:
Q_INVOKABLE void setEngineDisplayItemStatus(bool display) { _drawItemStatus = display; }
Q_INVOKABLE bool doEngineDisplayItemStatus() { return _drawItemStatus; }
Q_INVOKABLE void setEngineDisplayHitEffect(bool display) { _drawHitEffect = display; }
Q_INVOKABLE bool doEngineDisplayHitEffect() { return _drawHitEffect; }
signals:
void shouldRenderAvatarsChanged(bool shouldRenderAvatars);
@ -141,6 +144,8 @@ protected:
int _maxDrawnOverlay3DItems = -1;
bool _drawItemStatus = false;
bool _drawHitEffect = false;
};