源战役客户端
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.

109 lines
2.9 KiB

  1. //Update SC
  2. using UnityEngine;
  3. using System.Collections;
  4. public class T4MLodObjSC : MonoBehaviour {
  5. //[HideInInspector]
  6. public Renderer LOD1;
  7. //[HideInInspector]
  8. public Renderer LOD2;
  9. //[HideInInspector]
  10. public Renderer LOD3;
  11. //Lod 2.0
  12. [HideInInspector]
  13. public float Interval = 0.5f;
  14. [HideInInspector]
  15. public Transform PlayerCamera;
  16. [HideInInspector]
  17. public int Mode;
  18. private Vector3 OldPlayerPos;
  19. [HideInInspector]
  20. public int ObjLodStatus;
  21. [HideInInspector]
  22. public float MaxViewDistance= 60.0f;
  23. [HideInInspector]
  24. public float LOD2Start = 20.0f;
  25. [HideInInspector]
  26. public float LOD3Start = 40.0f;
  27. public void ActivateLODScrpt()
  28. {
  29. if (Mode != 2)
  30. return;
  31. if (PlayerCamera == null)
  32. PlayerCamera = Camera.main.transform;
  33. InvokeRepeating("AFLODScrpt", Random.Range(0,Interval), Interval);
  34. }
  35. public void ActivateLODLay()
  36. {
  37. if (Mode != 2)
  38. return;
  39. if (PlayerCamera == null)
  40. PlayerCamera = Camera.main.transform;
  41. InvokeRepeating("AFLODLay", Random.Range(0,Interval), Interval);
  42. }
  43. public void AFLODLay()
  44. {
  45. if (OldPlayerPos == PlayerCamera.position)
  46. return;
  47. OldPlayerPos = PlayerCamera.position;
  48. float distanceFromCamera = Vector3.Distance(new Vector3(transform.position.x,PlayerCamera.position.y,transform.position.z), PlayerCamera.position);
  49. int Lay2 = gameObject.layer;
  50. if(distanceFromCamera <= PlayerCamera.GetComponent<Camera>().layerCullDistances[Lay2]+5){
  51. if(distanceFromCamera < LOD2Start && ObjLodStatus != 1){
  52. LOD3.enabled = LOD2.enabled = false;
  53. LOD1.enabled = true;
  54. ObjLodStatus=1;
  55. }else if (distanceFromCamera >= LOD2Start && distanceFromCamera < LOD3Start && ObjLodStatus != 2){
  56. LOD1.enabled = LOD3.enabled = false;
  57. LOD2.enabled = true;
  58. ObjLodStatus=2;
  59. }else if (distanceFromCamera >= LOD3Start && ObjLodStatus != 3){
  60. LOD1.enabled = LOD2.enabled = false;
  61. LOD3.enabled = true;
  62. ObjLodStatus=3;
  63. }
  64. }
  65. }
  66. public void AFLODScrpt()
  67. {
  68. if (OldPlayerPos == PlayerCamera.position)
  69. return;
  70. OldPlayerPos = PlayerCamera.position;
  71. float distanceFromCamera = Vector3.Distance(new Vector3(transform.position.x,PlayerCamera.position.y,transform.position.z), PlayerCamera.position);
  72. if(distanceFromCamera <= MaxViewDistance){
  73. if(distanceFromCamera < LOD2Start && ObjLodStatus != 1){
  74. LOD3.enabled = LOD2.enabled = false;
  75. LOD1.enabled = true;
  76. ObjLodStatus=1;
  77. }else if (distanceFromCamera >= LOD2Start && distanceFromCamera < LOD3Start && ObjLodStatus != 2){
  78. LOD1.enabled = LOD3.enabled = false;
  79. LOD2.enabled = true;
  80. ObjLodStatus=2;
  81. }else if (distanceFromCamera >= LOD3Start && ObjLodStatus != 3){
  82. LOD1.enabled = LOD2.enabled = false;
  83. LOD3.enabled = true;
  84. ObjLodStatus=3;
  85. }
  86. }else if(ObjLodStatus != 0){
  87. LOD1.enabled = LOD2.enabled = LOD3.enabled = false;
  88. ObjLodStatus=0;
  89. }
  90. }
  91. }