using UnityEngine; namespace DepthsOfGreed.HandbookUI { public sealed class RangeArenaClip:MonoBehaviour { public WallBuildArea arena; public Renderer[] outlines; public Renderer fill; public TestPlacementController placement; CombatDefinition combat;bool ability; MaterialPropertyBlock block; public void Configure(HandbookTowerEntry entry){combat=entry.combat;ability=entry.use==BuildUse.Ability;} void LateUpdate() { if(!arena || combat==null || !arena.TryGetRadii(out float radius,out _,out _))return; float angle=transform.eulerAngles.z+combat.forwardAngleOffset; if(block==null)block=new MaterialPropertyBlock(); block.Clear();block.SetVector("_ArenaCenter",arena.Center);block.SetFloat("_ArenaRadius",radius); block.SetVector("_Tower",transform.position);block.SetFloat("_Minimum",ability?0:combat.minimumRange);block.SetFloat("_Maximum",ability?combat.areaRadius:combat.unlimitedRange?100000:combat.range); block.SetVector("_Forward",new Vector4(Mathf.Cos(angle*Mathf.Deg2Rad),Mathf.Sin(angle*Mathf.Deg2Rad),0,0));block.SetFloat("_CosHalf",Mathf.Cos((ability?360:AttackRangeGeometry.CoverageAngle(combat))*.5f*Mathf.Deg2Rad)); block.SetFloat("_Fill",0); for(int i=0;i