#if GRIFFIN using UnityEngine; using UnityEngine.Serialization; namespace Pinwheel.Griffin { public class GRendering : ScriptableObject { [SerializeField] private GTerrainData terrainData; public GTerrainData TerrainData { get { return terrainData; } internal set { terrainData = value; } } [SerializeField] private bool castShadow; public bool CastShadow { get { return castShadow; } set { castShadow = value; } } [SerializeField] private bool receiveShadow; public bool ReceiveShadow { get { return receiveShadow; } set { receiveShadow = value; } } [FormerlySerializedAs("drawFoliage")] [SerializeField] private bool drawTrees; public bool DrawTrees { get { return drawTrees; } set { drawTrees = value; } } [SerializeField] private bool drawGrasses = true; public bool DrawGrasses { get { return drawGrasses; } set { drawGrasses = value; } } [SerializeField] private bool enableInstancing; public bool EnableInstancing { get { if (!SystemInfo.supportsInstancing) enableInstancing = false; return enableInstancing; } set { if (SystemInfo.supportsInstancing) { enableInstancing = value; } else { enableInstancing = false; } } } [SerializeField] private float billboardStart; public float BillboardStart { get { return billboardStart; } set { billboardStart = Mathf.Clamp(value, 0, GCommon.MAX_TREE_DISTANCE); } } [SerializeField] private float treeDistance; public float TreeDistance { get { return treeDistance; } set { treeDistance = Mathf.Clamp(value, 0, GCommon.MAX_TREE_DISTANCE); } } [SerializeField] private float grassDistance; public float GrassDistance { get { return grassDistance; } set { grassDistance = Mathf.Clamp(value, 0, GCommon.MAX_GRASS_DISTANCE); } } [SerializeField] private float grassFadeStart; public float GrassFadeStart { get { return grassFadeStart; } set { grassFadeStart = Mathf.Clamp01(value); } } public void Reset() { name = "Rendering"; CastShadow = GRuntimeSettings.Instance.renderingDefault.terrainCastShadow; ReceiveShadow = GRuntimeSettings.Instance.renderingDefault.terrainReceiveShadow; DrawTrees = GRuntimeSettings.Instance.renderingDefault.drawTrees; DrawGrasses = GRuntimeSettings.Instance.renderingDefault.drawGrasses; EnableInstancing = GRuntimeSettings.Instance.renderingDefault.enableInstancing; BillboardStart = GRuntimeSettings.Instance.renderingDefault.billboardStart; TreeDistance = GRuntimeSettings.Instance.renderingDefault.treeDistance; GrassDistance = GRuntimeSettings.Instance.renderingDefault.grassDistance; GrassFadeStart = GRuntimeSettings.Instance.renderingDefault.grassFadeStart; } public void ResetFull() { Reset(); } public void CopyTo(GRendering des) { des.CastShadow = CastShadow; des.ReceiveShadow = ReceiveShadow; des.DrawTrees = DrawTrees; des.EnableInstancing = EnableInstancing; des.BillboardStart = BillboardStart; des.TreeDistance = TreeDistance; des.GrassDistance = GrassDistance; des.GrassFadeStart = GrassFadeStart; } } } #endif