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.
96 lines
3.5 KiB
96 lines
3.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]
|
|
private Material aliasModelMaterial;
|
|
|
|
[SerializeField]
|
|
private Material brushModelMaterial; // TODO: not sure if this should be separate or combined into one entityMaterial
|
|
|
|
[SerializeField]
|
|
private Material worldModelMaterial; // TODO: split into wall, liquid, sky, etc
|
|
|
|
// TODO: add particle effects
|
|
|
|
public virtual void SetupAliasModelRenderer(MeshRenderer meshRenderer)
|
|
{
|
|
meshRenderer.material = new Material(aliasModelMaterial);
|
|
meshRenderer.shadowCastingMode = ShadowCastingMode.Off;
|
|
meshRenderer.receiveShadows = false;
|
|
meshRenderer.lightProbeUsage = LightProbeUsage.Off;
|
|
meshRenderer.reflectionProbeUsage = ReflectionProbeUsage.Off;
|
|
}
|
|
|
|
public virtual void SetupAliasModelRenderer(SkinnedMeshRenderer skinnedMeshRenderer)
|
|
{
|
|
skinnedMeshRenderer.material = new Material(aliasModelMaterial);
|
|
skinnedMeshRenderer.shadowCastingMode = ShadowCastingMode.Off;
|
|
skinnedMeshRenderer.receiveShadows = false;
|
|
skinnedMeshRenderer.lightProbeUsage = LightProbeUsage.Off;
|
|
skinnedMeshRenderer.reflectionProbeUsage = ReflectionProbeUsage.Off;
|
|
}
|
|
|
|
public virtual void SetupBrushModelRenderer(MeshRenderer meshRenderer)
|
|
{
|
|
meshRenderer.material = new Material(brushModelMaterial);
|
|
meshRenderer.shadowCastingMode = ShadowCastingMode.Off;
|
|
meshRenderer.receiveShadows = false;
|
|
meshRenderer.lightProbeUsage = LightProbeUsage.Off;
|
|
meshRenderer.reflectionProbeUsage = ReflectionProbeUsage.Off;
|
|
}
|
|
|
|
public virtual void SetupWorldModelRenderer(MeshRenderer meshRenderer)
|
|
{
|
|
meshRenderer.material = new Material(worldModelMaterial);
|
|
meshRenderer.shadowCastingMode = ShadowCastingMode.Off;
|
|
meshRenderer.receiveShadows = false;
|
|
meshRenderer.lightProbeUsage = LightProbeUsage.Off;
|
|
meshRenderer.reflectionProbeUsage = ReflectionProbeUsage.Off;
|
|
}
|
|
|
|
public virtual void SetAliasModelTextures(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 SetBrushModelTextures(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 SetWorldModelTextures(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
|
|
}
|
|
}
|