diff --git a/src/sprite.h b/src/sprite.h index 74d75a2..d8d2250 100644 --- a/src/sprite.h +++ b/src/sprite.h @@ -67,8 +67,17 @@ struct Sprite : Controller { } virtual void render(Frustum *frustum, MeshBuilder *mesh, Shader::Type type, bool caustics) { + Core::setBlending(bmAlpha); + + TR::Entity::Type eType = getEntity().type; + if (eType == TR::Entity::SMOKE || eType == TR::Entity::WATER_SPLASH) + Core::active.shader->setParam(uMaterial, vec4(0.5f, 1.0f, 0.0f, 0.75f)); + else + Core::active.shader->setParam(uMaterial, vec4(0.5f, 1.0f, 0.0f, 1.0f)); + Core::active.shader->setParam(uBasis, Basis(Core::mViewInv.getRot(), pos)); mesh->renderSprite(-(getEntity().modelIndex + 1), frame); + Core::setBlending(bmNone); } }; diff --git a/src/trigger.h b/src/trigger.h index fcf3e2f..b89f2d7 100644 --- a/src/trigger.h +++ b/src/trigger.h @@ -608,7 +608,7 @@ struct Waterfall : Controller { virtual void update() { updateAnimation(true); - vec3 delta = (((Controller*)level->cameraController)->pos - pos) * (1.0f / 1024.0f); + vec3 delta = (((ICamera*)level->cameraController)->pos - pos) * (1.0f / 1024.0f); if (delta.length2() > 100.0f) return;