You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

78 lines
2.5 KiB

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering;
[CreateAssetMenu(fileName = "VisualStyle", menuName = "UniQuake/Visual Style", order = 1)]
public class VisualStyle : ScriptableObject
{
[SerializeField]
protected Material entityMaterial;
[SerializeField]
protected Material worldMaterial; // TODO: split into wall, liquid, sky, etc
// TODO: add particle effects
public virtual Material CreateEntityMaterial()
{
return new Material(entityMaterial);
}
public virtual Material CreateWorldMaterial()
{
return new Material(worldMaterial);
}
public virtual void SetupEntityRenderer(MeshRenderer meshRenderer)
{
meshRenderer.shadowCastingMode = ShadowCastingMode.Off;
meshRenderer.receiveShadows = false;
meshRenderer.lightProbeUsage = LightProbeUsage.Off;
meshRenderer.reflectionProbeUsage = ReflectionProbeUsage.Off;
}
public virtual void SetupEntityRenderer(SkinnedMeshRenderer skinnedMeshRenderer)
{
skinnedMeshRenderer.shadowCastingMode = ShadowCastingMode.Off;
skinnedMeshRenderer.receiveShadows = false;
skinnedMeshRenderer.lightProbeUsage = LightProbeUsage.Off;
skinnedMeshRenderer.reflectionProbeUsage = ReflectionProbeUsage.Off;
}
public virtual void SetupWorldRenderer(MeshRenderer meshRenderer)
{
meshRenderer.shadowCastingMode = ShadowCastingMode.Off;
meshRenderer.receiveShadows = false;
meshRenderer.lightProbeUsage = LightProbeUsage.Off;
meshRenderer.reflectionProbeUsage = ReflectionProbeUsage.Off;
}
public virtual void SetEntityTextures(Material material, Texture2D mainTexture, Texture2D fullBright)
{
material.mainTexture = mainTexture;
material.SetTexture("_EmissionMap", fullBright);
material.SetColor("_EmissionColor", Color.white);
if (fullBright != null)
material.EnableKeyword("_EMISSION");
else
material.DisableKeyword("_EMISSION");
}
public virtual void SetWorldTextures(Material material, Texture2D mainTexture, Texture2D fullBright, Texture2D lightmap)
{
material.mainTexture = mainTexture;
material.SetTexture("_EmissionMap", fullBright);
material.SetColor("_EmissionColor", Color.white);
if (fullBright != null)
material.EnableKeyword("_EMISSION");
else
material.DisableKeyword("_EMISSION");
// TODO: lightmap texture
}
}