|
|
- //Update SC
- using UnityEngine;
- using System.Collections;
-
- public class T4MLodObjSC : MonoBehaviour {
-
- //[HideInInspector]
- public Renderer LOD1;
- //[HideInInspector]
- public Renderer LOD2;
- //[HideInInspector]
- public Renderer LOD3;
-
- //Lod 2.0
- [HideInInspector]
- public float Interval = 0.5f;
- [HideInInspector]
- public Transform PlayerCamera;
- [HideInInspector]
- public int Mode;
- private Vector3 OldPlayerPos;
- [HideInInspector]
- public int ObjLodStatus;
- [HideInInspector]
- public float MaxViewDistance= 60.0f;
- [HideInInspector]
- public float LOD2Start = 20.0f;
- [HideInInspector]
- public float LOD3Start = 40.0f;
-
-
- public void ActivateLODScrpt()
- {
- if (Mode != 2)
- return;
-
- if (PlayerCamera == null)
- PlayerCamera = Camera.main.transform;
-
- InvokeRepeating("AFLODScrpt", Random.Range(0,Interval), Interval);
- }
-
- public void ActivateLODLay()
- {
- if (Mode != 2)
- return;
-
- if (PlayerCamera == null)
- PlayerCamera = Camera.main.transform;
-
- InvokeRepeating("AFLODLay", Random.Range(0,Interval), Interval);
- }
-
- public void AFLODLay()
- {
- if (OldPlayerPos == PlayerCamera.position)
- return;
-
- OldPlayerPos = PlayerCamera.position;
-
- float distanceFromCamera = Vector3.Distance(new Vector3(transform.position.x,PlayerCamera.position.y,transform.position.z), PlayerCamera.position);
-
- int Lay2 = gameObject.layer;
-
- if(distanceFromCamera <= PlayerCamera.GetComponent<Camera>().layerCullDistances[Lay2]+5){
- if(distanceFromCamera < LOD2Start && ObjLodStatus != 1){
- LOD3.enabled = LOD2.enabled = false;
- LOD1.enabled = true;
- ObjLodStatus=1;
- }else if (distanceFromCamera >= LOD2Start && distanceFromCamera < LOD3Start && ObjLodStatus != 2){
- LOD1.enabled = LOD3.enabled = false;
- LOD2.enabled = true;
- ObjLodStatus=2;
- }else if (distanceFromCamera >= LOD3Start && ObjLodStatus != 3){
- LOD1.enabled = LOD2.enabled = false;
- LOD3.enabled = true;
- ObjLodStatus=3;
- }
- }
- }
-
- public void AFLODScrpt()
- {
- if (OldPlayerPos == PlayerCamera.position)
- return;
-
- OldPlayerPos = PlayerCamera.position;
-
- float distanceFromCamera = Vector3.Distance(new Vector3(transform.position.x,PlayerCamera.position.y,transform.position.z), PlayerCamera.position);
- if(distanceFromCamera <= MaxViewDistance){
- if(distanceFromCamera < LOD2Start && ObjLodStatus != 1){
- LOD3.enabled = LOD2.enabled = false;
- LOD1.enabled = true;
- ObjLodStatus=1;
- }else if (distanceFromCamera >= LOD2Start && distanceFromCamera < LOD3Start && ObjLodStatus != 2){
- LOD1.enabled = LOD3.enabled = false;
- LOD2.enabled = true;
- ObjLodStatus=2;
- }else if (distanceFromCamera >= LOD3Start && ObjLodStatus != 3){
- LOD1.enabled = LOD2.enabled = false;
- LOD3.enabled = true;
- ObjLodStatus=3;
- }
- }else if(ObjLodStatus != 0){
- LOD1.enabled = LOD2.enabled = LOD3.enabled = false;
- ObjLodStatus=0;
-
- }
- }
- }
|