Browse Source

Simplified call to create world material, which is just one method now that takes surface flags. The implementation will figure out which template material to use.

console
Nico de Poel 5 years ago
parent
commit
722c79ab8b
  1. 4
      Assets/Scripts/Game/GameState.cs
  2. 39
      Assets/Scripts/VisualStyle.cs

4
Assets/Scripts/Game/GameState.cs

@ -50,9 +50,7 @@ public class GameState
// TODO FIXME This is wrong for brush model entities // TODO FIXME This is wrong for brush model entities
uq.CurrentStyle.SetupWorldRenderer(mr); uq.CurrentStyle.SetupWorldRenderer(mr);
mr.material = surfaceMesh.Flags.HasFlag(QSurfaceFlags.DrawTurbulence)
? uq.CurrentStyle.CreateLiquidMaterial(surfaceMesh.Flags)
: uq.CurrentStyle.CreateWorldMaterial(); // TODO FIXME this currently leaks Materials
mr.material = uq.CurrentStyle.CreateWorldMaterial(surfaceMesh.Flags); // TODO FIXME this currently leaks Materials
uint texNum = surfaceMesh.TextureNum; uint texNum = surfaceMesh.TextureNum;
if (uq.GameAssets.TryGetTexture(texNum, out var texture)) if (uq.GameAssets.TryGetTexture(texNum, out var texture))

39
Assets/Scripts/VisualStyle.cs

@ -27,29 +27,26 @@ public class VisualStyle : ScriptableObject
return new Material(entityMaterial); return new Material(entityMaterial);
} }
public virtual Material CreateWorldMaterial()
public virtual Material CreateWorldMaterial(QSurfaceFlags surfaceFlags)
{ {
return new Material(worldMaterial);
}
public virtual Material CreateLiquidMaterial(QSurfaceFlags surfaceFlags)
{
if (liquidMaterial == null)
return CreateWorldMaterial();
float alpha = 1f;
if (surfaceFlags.HasFlag(QSurfaceFlags.DrawWater))
alpha = liquidProperties.waterAlpha;
else if (surfaceFlags.HasFlag(QSurfaceFlags.DrawSlime))
alpha = liquidProperties.slimeAlpha;
else if (surfaceFlags.HasFlag(QSurfaceFlags.DrawLava))
alpha = liquidProperties.lavaAlpha;
else if (surfaceFlags.HasFlag(QSurfaceFlags.DrawTeleporter))
alpha = liquidProperties.teleporterAlpha;
if (surfaceFlags.HasFlag(QSurfaceFlags.DrawTurbulence) && liquidMaterial != null)
{
float alpha = 1f;
if (surfaceFlags.HasFlag(QSurfaceFlags.DrawWater))
alpha = liquidProperties.waterAlpha;
else if (surfaceFlags.HasFlag(QSurfaceFlags.DrawSlime))
alpha = liquidProperties.slimeAlpha;
else if (surfaceFlags.HasFlag(QSurfaceFlags.DrawLava))
alpha = liquidProperties.lavaAlpha;
else if (surfaceFlags.HasFlag(QSurfaceFlags.DrawTeleporter))
alpha = liquidProperties.teleporterAlpha;
var material = new Material(liquidMaterial);
material.SetColor("_BaseColor", new Color(1, 1, 1, alpha));
return material;
}
var material = new Material(liquidMaterial);
material.SetColor("_BaseColor", new Color(1, 1, 1, alpha));
return material;
return new Material(worldMaterial);
} }
public virtual void SetupEntityRenderer(MeshRenderer meshRenderer) public virtual void SetupEntityRenderer(MeshRenderer meshRenderer)

Loading…
Cancel
Save