Fixed billboards, reintroduce ReflectVectorOptionally

This commit is contained in:
Lwmte 2024-12-18 10:18:04 +01:00
parent 3535eddf5d
commit 85469cb4d4
3 changed files with 11 additions and 3 deletions

View file

@ -592,6 +592,14 @@ namespace TEN::Renderer
{ {
return (_currentMirror != nullptr && room != _currentMirror->RealRoom); return (_currentMirror != nullptr && room != _currentMirror->RealRoom);
} }
inline void ReflectVectorOptionally(Vector3& vector)
{
if (_currentMirror == nullptr)
return;
vector = Vector3::Transform(vector, _currentMirror->ReflectionMatrix);
}
inline void ReflectMatrixOptionally(Matrix& matrix) inline void ReflectMatrixOptionally(Matrix& matrix)
{ {

View file

@ -1654,8 +1654,8 @@ namespace TEN::Renderer
{ {
if (Camera.pos.RoomNumber == mirror.RealRoom && IsPointInRoom(light.Position, mirror.RealRoom)) if (Camera.pos.RoomNumber == mirror.RealRoom && IsPointInRoom(light.Position, mirror.RealRoom))
{ {
light.Position = Vector3::Transform(light.Position, mirror.ReflectionMatrix); ReflectVectorOptionally(light.Position);
light.Direction = Vector3::Transform(light.Direction, mirror.ReflectionMatrix); ReflectVectorOptionally(light.Direction);
light.Hash = 0; light.Hash = 0;
_dynamicLights[_dynamicLightList].push_back(light); _dynamicLights[_dynamicLightList].push_back(light);

View file

@ -1288,6 +1288,7 @@ namespace TEN::Renderer
auto scaleMatrix = Matrix::CreateScale(sprite->Width * sprite->Scale, sprite->Height * sprite->Scale, sprite->Scale); auto scaleMatrix = Matrix::CreateScale(sprite->Width * sprite->Scale, sprite->Height * sprite->Scale, sprite->Scale);
Vector3 spritePosition = sprite->pos; Vector3 spritePosition = sprite->pos;
ReflectVectorOptionally(spritePosition);
switch (sprite->Type) switch (sprite->Type)
{ {
@ -1324,7 +1325,6 @@ namespace TEN::Renderer
break; break;
} }
ReflectMatrixOptionally(spriteMatrix);
return spriteMatrix; return spriteMatrix;
} }