Skip to content

Commit b7ca618

Browse files
committed
Make thruster visual more consistent
1 parent 893a900 commit b7ca618

1 file changed

Lines changed: 10 additions & 3 deletions

File tree

src/scenegraph/Thruster.cpp

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -143,10 +143,17 @@ namespace SceneGraph {
143143
m_tMat->diffuse = m_glowMat->diffuse = currentColor;
144144

145145
//directional fade
146-
vector3f cdir = vector3f(trans * -dir).Normalized();
147-
vector3f vdir = vector3f(trans[2], trans[6], -trans[10]).Normalized();
146+
// In view space, camera is at origin, so view direction is from thruster position to origin.
147+
vector3f flameDir = vector3f(trans * -dir).Normalized();
148+
vector3f thrusterPos = trans.GetTranslate();
149+
vector3f vdir = flameDir;
150+
float dist2 = thrusterPos.LengthSqr();
151+
if (dist2 > 1e-8f) {
152+
vdir = (-thrusterPos) / sqrtf(dist2);
153+
}
154+
float facing = Clamp(vdir.Dot(flameDir), 0.f, 1.f);
148155
// XXX check this for transition to new colors.
149-
m_glowMat->diffuse.a = Easing::Circ::EaseIn(Clamp(vdir.Dot(cdir), 0.f, 1.f), 0.f, 1.f, 1.f) * 255;
156+
m_glowMat->diffuse.a = Easing::Circ::EaseIn(facing, 0.f, 1.f, 1.f) * 255;
150157
m_tMat->diffuse.a = 255 - m_glowMat->diffuse.a;
151158

152159
Graphics::Renderer *r = GetRenderer();

0 commit comments

Comments
 (0)