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
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
|
|
}
|
|
}
|