588 lines
17 KiB
C#
588 lines
17 KiB
C#
using UnityEngine;
|
|
|
|
public class Boat : Singleton<Boat>
|
|
{
|
|
public enum SteringType
|
|
{
|
|
None = 0,
|
|
Rows = 1,
|
|
Engine = 2
|
|
}
|
|
|
|
[HideInInspector]
|
|
public Rigidbody rigidbody;
|
|
|
|
public Transform engineContainer;
|
|
|
|
public Vector2 controllInput;
|
|
|
|
[HideInInspector]
|
|
public Animator animator;
|
|
|
|
public BoatSit[] boatSits;
|
|
|
|
[HideInInspector]
|
|
public int currentSitPointIndex;
|
|
|
|
public SteringType steringType;
|
|
|
|
[SerializeField]
|
|
private Transform steringWheel;
|
|
|
|
[SerializeField]
|
|
private Transform analogSpeedArrow;
|
|
|
|
[SerializeField]
|
|
private Transform analogTorqueArrow;
|
|
|
|
[SerializeField]
|
|
private Transform analogTurningArrow;
|
|
|
|
public BoatRow[] boatRows;
|
|
|
|
public BoatEngine boatEngine;
|
|
|
|
public FPlayer currentPlayerCharacter;
|
|
|
|
public AudioClip[] audioClip;
|
|
|
|
private AudioSource audioSource;
|
|
|
|
private bool isHitTerrain;
|
|
|
|
internal bool isPlayerMoveRange;
|
|
|
|
[SerializeField]
|
|
private Transform steringPositionTransform;
|
|
|
|
[SerializeField]
|
|
private Transform steringPlayerPositionTransform;
|
|
|
|
[SerializeField]
|
|
private Transform lastPlayerParent;
|
|
|
|
[SerializeField]
|
|
private BoatRodSupport[] rodSupports;
|
|
|
|
[SerializeField]
|
|
private Vector2 clampCameraSteringX;
|
|
|
|
private Vector2 lastClampCameraSteringX;
|
|
|
|
public BoatParking currentParking;
|
|
|
|
[SerializeField]
|
|
private bool useEnterByKey = true;
|
|
|
|
private FPlayer player;
|
|
|
|
[SerializeField]
|
|
private BoatPlayerDetectSit boatPlayerDetect;
|
|
|
|
[SerializeField]
|
|
private Renderer waterSubstractRenderer;
|
|
|
|
private bool isPlayerRangeOnBoat;
|
|
|
|
private bool wasExitClicked;
|
|
|
|
private BoatPanel boatPanel;
|
|
|
|
private float hitSoundDelay = 0.5f;
|
|
|
|
private void Start()
|
|
{
|
|
rigidbody = GetComponent<Rigidbody>();
|
|
animator = GetComponent<Animator>();
|
|
audioSource = GetComponent<AudioSource>();
|
|
lastPlayerParent = GameObject.Find("_GAMEPLAY_V2").transform;
|
|
Invoke("PositionInParkingOnStart", 0.5f);
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if (GameManager.Instance.ChechIfPlayerShouldBeStoppedFromDoingAnything())
|
|
{
|
|
FScriptsHandler.Instance.m_HudManager.ShowTeleportToParkingBoatPanel(hide: true);
|
|
FScriptsHandler.Instance.m_HudManager.ShowEnterToBoatPanel(hide: true);
|
|
FScriptsHandler.Instance.m_HudManager.ShowGetDropPanel(hide: true);
|
|
FScriptsHandler.Instance.m_HudManager.ShowGetDropSupportPanel(hide: true);
|
|
FScriptsHandler.Instance.m_HudManager.ShowLeaveBoatPanel(hide: true);
|
|
FScriptsHandler.Instance.m_HudManager.ShowSteerBoatPanel(hide: true);
|
|
return;
|
|
}
|
|
GetInput();
|
|
if (!CheckEnterToBoatByKey() && (bool)currentParking)
|
|
{
|
|
LeavePlayerFromBoatByParking();
|
|
}
|
|
TeleportToParking();
|
|
if (GameManager.Instance.player.GetButtonUp("isEnterLeaveBoat"))
|
|
{
|
|
wasExitClicked = false;
|
|
}
|
|
if (FScriptsHandler.Instance.m_HudManager.currentLeaveBoatPanel != null && !FScriptsHandler.Instance.m_HudManager.isInLeaveBoatCollider)
|
|
{
|
|
FScriptsHandler.Instance.m_HudManager.ShowLeaveBoatPanel(hide: true);
|
|
}
|
|
}
|
|
|
|
private void FixedUpdate()
|
|
{
|
|
if (GameManager.Instance.ChechIfPlayerShouldBeStoppedFromDoingAnything())
|
|
{
|
|
return;
|
|
}
|
|
Move();
|
|
AudioController();
|
|
CheckSteringPointAndControllStart();
|
|
if ((bool)currentPlayerCharacter)
|
|
{
|
|
if ((bool)currentPlayerCharacter.currentRod && (bool)currentPlayerCharacter.currentRod.currentFish && currentPlayerCharacter.currentRod.currentFish.isGetFish && currentPlayerCharacter.currentRod.currentFish.transform.parent != base.transform)
|
|
{
|
|
currentPlayerCharacter.currentRod.currentFish.transform.SetParent(base.transform);
|
|
}
|
|
if ((bool)currentParking && currentSitPointIndex == 0 && FScriptsHandler.Instance.m_HudManager.currentSteerBoatPanel == null && !FScriptsHandler.Instance.m_HudManager.currentGetDropPanel && (bool)currentPlayerCharacter)
|
|
{
|
|
if (currentParking.isParkingRange && FScriptsHandler.Instance.m_HudManager.isInLeaveBoatCollider)
|
|
{
|
|
FScriptsHandler.Instance.m_HudManager.ShowLeaveBoatPanel(hide: false);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
FScriptsHandler.Instance.m_HudManager.ShowLeaveBoatPanel(hide: true);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
FScriptsHandler.Instance.m_HudManager.ShowLeaveBoatPanel(hide: true);
|
|
}
|
|
}
|
|
|
|
private void TeleportToParking()
|
|
{
|
|
if (!currentPlayerCharacter)
|
|
{
|
|
FScriptsHandler.Instance.m_HudManager.ShowTeleportToParkingBoatPanel(hide: true);
|
|
return;
|
|
}
|
|
bool flag = true;
|
|
for (int i = 0; i < rodSupports.Length; i++)
|
|
{
|
|
if (rodSupports[i].currentRod_1 != null)
|
|
{
|
|
flag = false;
|
|
}
|
|
}
|
|
if ((bool)currentPlayerCharacter.currentRod)
|
|
{
|
|
flag = false;
|
|
}
|
|
if (currentParking.isParkingRange)
|
|
{
|
|
flag = false;
|
|
}
|
|
if (flag)
|
|
{
|
|
if (FScriptsHandler.Instance.m_HudManager.currentLeaveBoatPanel == null && FScriptsHandler.Instance.m_HudManager.currentSteerBoatPanel == null)
|
|
{
|
|
FScriptsHandler.Instance.m_HudManager.ShowTeleportToParkingBoatPanel(hide: false);
|
|
if ((bool)FScriptsHandler.Instance.m_HudManager.currentTeleportBoatPanel)
|
|
{
|
|
FScriptsHandler.Instance.m_HudManager.currentTeleportBoatPanel.circleImage.fillAmount = (float)GameManager.Instance.player.GetButtonTimePressed("isRestartPositionBoat");
|
|
}
|
|
if (GameManager.Instance.player.GetButtonTimePressed("isRestartPositionBoat") >= 1.0)
|
|
{
|
|
PositionInParkingOnStart();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
FScriptsHandler.Instance.m_HudManager.ShowTeleportToParkingBoatPanel(hide: true);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
FScriptsHandler.Instance.m_HudManager.ShowTeleportToParkingBoatPanel(hide: true);
|
|
}
|
|
}
|
|
|
|
private bool CheckEnterToBoatByKey()
|
|
{
|
|
if (GameManager.Instance.ChechIfPlayerShouldBeStoppedFromDoingAnything())
|
|
{
|
|
return false;
|
|
}
|
|
if (!useEnterByKey)
|
|
{
|
|
return false;
|
|
}
|
|
if ((bool)currentPlayerCharacter)
|
|
{
|
|
FScriptsHandler.Instance.m_HudManager.ShowEnterToBoatPanel(hide: true);
|
|
return false;
|
|
}
|
|
if (!player)
|
|
{
|
|
player = FScriptsHandler.Instance.m_PlayerMain;
|
|
return false;
|
|
}
|
|
if (!player.gameObject.activeSelf)
|
|
{
|
|
player = null;
|
|
return false;
|
|
}
|
|
if (isPlayerRangeOnBoat)
|
|
{
|
|
FScriptsHandler.Instance.m_HudManager.ShowEnterToBoatPanel(hide: false);
|
|
if (GameManager.Instance.player.GetButtonTimePressed("isEnterLeaveBoat") >= 1.0 && !wasExitClicked)
|
|
{
|
|
if (FScriptsHandler.Instance.m_HudManager.currentEnterBoatPanel == null)
|
|
{
|
|
return false;
|
|
}
|
|
TeleportPlayerToBoat(player);
|
|
wasExitClicked = true;
|
|
FScriptsHandler.Instance.m_HudManager.ShowLeaveBoatPanel(hide: true);
|
|
return true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
FScriptsHandler.Instance.m_HudManager.ShowEnterToBoatPanel(hide: true);
|
|
}
|
|
if ((bool)FScriptsHandler.Instance.m_HudManager.currentEnterBoatPanel && !wasExitClicked)
|
|
{
|
|
FScriptsHandler.Instance.m_HudManager.currentEnterBoatPanel.circleImage.fillAmount = (float)GameManager.Instance.player.GetButtonTimePressed("isEnterLeaveBoat");
|
|
}
|
|
return false;
|
|
}
|
|
|
|
private void PositionInParkingOnStart()
|
|
{
|
|
if ((bool)currentParking)
|
|
{
|
|
if (currentParking.boatPlaceTransform.position != base.transform.position)
|
|
{
|
|
base.transform.position = currentParking.boatPlaceTransform.position;
|
|
base.transform.rotation = currentParking.boatPlaceTransform.rotation;
|
|
rigidbody.velocity = Vector3.zero;
|
|
boatEngine.StopEngine();
|
|
}
|
|
if ((bool)currentPlayerCharacter)
|
|
{
|
|
currentPlayerCharacter.transform.position = currentParking.boatPlaceTransform.position;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void GetInput()
|
|
{
|
|
if ((bool)currentPlayerCharacter)
|
|
{
|
|
if (currentSitPointIndex == 0)
|
|
{
|
|
controllInput = Vector2.zero;
|
|
return;
|
|
}
|
|
float axis = GameManager.Instance.player.GetAxis("moveHorizontal");
|
|
float axis2 = GameManager.Instance.player.GetAxis("moveVertical");
|
|
controllInput = new Vector2(axis, axis2);
|
|
}
|
|
}
|
|
|
|
private void Move()
|
|
{
|
|
if (!currentPlayerCharacter)
|
|
{
|
|
return;
|
|
}
|
|
switch (steringType)
|
|
{
|
|
case SteringType.None:
|
|
if ((bool)boatEngine && boatEngine.currentTorquePercent != 0f)
|
|
{
|
|
steringType = SteringType.Engine;
|
|
}
|
|
break;
|
|
case SteringType.Engine:
|
|
if (!boatEngine)
|
|
{
|
|
steringType = SteringType.Rows;
|
|
break;
|
|
}
|
|
if (!boatEngine.currentBoat)
|
|
{
|
|
boatEngine.currentBoat = this;
|
|
}
|
|
boatEngine.AddMove(controllInput);
|
|
if ((bool)steringWheel && boatEngine.currentTurningTorquePercent > -1f && boatEngine.currentTurningTorquePercent < 1f)
|
|
{
|
|
steringWheel.Rotate(Vector3.up * controllInput.x * Time.deltaTime * 1000f);
|
|
}
|
|
if ((bool)analogSpeedArrow)
|
|
{
|
|
float num = Mathf.Abs(Vector3.Dot(rigidbody.velocity, rigidbody.transform.forward));
|
|
analogSpeedArrow.localRotation = Quaternion.AngleAxis(num * 45f, Vector3.right);
|
|
}
|
|
if ((bool)analogTorqueArrow)
|
|
{
|
|
analogTorqueArrow.localRotation = Quaternion.AngleAxis(Mathf.Abs(boatEngine.currentTorquePercent) * 300f, Vector3.right);
|
|
}
|
|
if ((bool)analogTurningArrow)
|
|
{
|
|
analogTurningArrow.localRotation = Quaternion.AngleAxis(180f + boatEngine.currentTurningTorquePercent * 180f, Vector3.right);
|
|
}
|
|
break;
|
|
case SteringType.Rows:
|
|
if (boatRows.Length < 2)
|
|
{
|
|
break;
|
|
}
|
|
if ((bool)boatEngine && boatEngine.currentTorquePercent != 0f)
|
|
{
|
|
steringType = SteringType.Engine;
|
|
break;
|
|
}
|
|
if (!boatRows[0].currentBoat)
|
|
{
|
|
boatRows[0].currentBoat = this;
|
|
}
|
|
if (!boatRows[1].currentBoat)
|
|
{
|
|
boatRows[1].currentBoat = this;
|
|
}
|
|
boatRows[0].AddMove(controllInput);
|
|
boatRows[1].AddMove(controllInput);
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void CheckSteringPointAndControllStart()
|
|
{
|
|
if (!currentPlayerCharacter)
|
|
{
|
|
return;
|
|
}
|
|
if (currentSitPointIndex == 1 && !currentPlayerCharacter.firstPersonController.frezzePosition)
|
|
{
|
|
lastClampCameraSteringX = new Vector2(currentPlayerCharacter.firstPersonController.m_MouseLook.MinimumX, currentPlayerCharacter.firstPersonController.m_MouseLook.MaximumX);
|
|
currentPlayerCharacter.transform.position = steringPlayerPositionTransform.position;
|
|
currentPlayerCharacter.transform.rotation = steringPlayerPositionTransform.rotation;
|
|
currentPlayerCharacter.firstPersonController.frezzePosition = true;
|
|
currentPlayerCharacter.firstPersonController.m_MouseLook.MinimumX = clampCameraSteringX.x;
|
|
currentPlayerCharacter.firstPersonController.m_MouseLook.MaximumX = clampCameraSteringX.y;
|
|
currentPlayerCharacter.firstPersonController.m_CharacterController.enabled = false;
|
|
}
|
|
else if (currentSitPointIndex == 0 && currentPlayerCharacter.firstPersonController.frezzePosition)
|
|
{
|
|
currentPlayerCharacter.firstPersonController.m_CharacterController.enabled = true;
|
|
currentPlayerCharacter.firstPersonController.UnFrezzeLook();
|
|
currentPlayerCharacter.firstPersonController.m_MouseLook.MinimumX = lastClampCameraSteringX.x;
|
|
currentPlayerCharacter.firstPersonController.m_MouseLook.MaximumX = lastClampCameraSteringX.y;
|
|
}
|
|
if (currentSitPointIndex == 1)
|
|
{
|
|
currentPlayerCharacter.transform.position = steringPlayerPositionTransform.position;
|
|
return;
|
|
}
|
|
Vector3 vector = currentPlayerCharacter.firstPersonController.m_MoveDir * Time.fixedDeltaTime;
|
|
Vector3 vector2 = rigidbody.velocity * Time.fixedDeltaTime;
|
|
if (boatPlayerDetect.CheckPosition(currentPlayerCharacter.transform.position, 0f))
|
|
{
|
|
currentPlayerCharacter.firstPersonController.m_CharacterController.Move(vector + vector2);
|
|
return;
|
|
}
|
|
Vector3 normalized = (boatPlayerDetect.GetCorrection(currentPlayerCharacter.transform.position, 0.2f) - currentPlayerCharacter.transform.position).normalized;
|
|
normalized *= Time.fixedDeltaTime * 0.25f;
|
|
currentPlayerCharacter.firstPersonController.m_CharacterController.Move(normalized + vector2);
|
|
}
|
|
|
|
public void Leave()
|
|
{
|
|
Debug.Log("Leave Boat");
|
|
for (int i = 0; i < boatSits.Length; i++)
|
|
{
|
|
boatSits[i].Leave();
|
|
}
|
|
currentPlayerCharacter = null;
|
|
}
|
|
|
|
public void ShowHideUIPanel(bool isHide = false)
|
|
{
|
|
if (FScriptsHandler.Instance.boatUIPanelPrefab == null)
|
|
{
|
|
return;
|
|
}
|
|
if ((bool)boatPanel)
|
|
{
|
|
if (isHide)
|
|
{
|
|
Object.Destroy(boatPanel.gameObject);
|
|
}
|
|
}
|
|
else if (!isHide)
|
|
{
|
|
boatPanel = Object.Instantiate(FScriptsHandler.Instance.boatUIPanelPrefab, FScriptsHandler.Instance.m_Canvas.transform).GetComponent<BoatPanel>();
|
|
boatPanel.currntBoat = this;
|
|
}
|
|
}
|
|
|
|
private void AudioController()
|
|
{
|
|
if (rigidbody.velocity.sqrMagnitude > 1f || rigidbody.angularVelocity.sqrMagnitude > 0f)
|
|
{
|
|
audioSource.volume = Mathf.Clamp01(rigidbody.velocity.sqrMagnitude * 0.01f) * 0.5f + Mathf.Clamp01(rigidbody.angularVelocity.sqrMagnitude * 0.2f) * 0.5f;
|
|
audioSource.pitch = 0.7f + Mathf.Clamp01(rigidbody.velocity.sqrMagnitude * 0.1f) * 0.5f + Mathf.Clamp01(rigidbody.angularVelocity.sqrMagnitude * 0.1f) * 0.5f;
|
|
if (!audioSource.isPlaying)
|
|
{
|
|
audioSource.Play();
|
|
}
|
|
}
|
|
else if (audioSource.isPlaying)
|
|
{
|
|
audioSource.Stop();
|
|
}
|
|
if (isHitTerrain && hitSoundDelay == 0f)
|
|
{
|
|
audioSource.volume = Mathf.Clamp01(rigidbody.velocity.sqrMagnitude * 0.2f) + Mathf.Clamp01(rigidbody.angularVelocity.sqrMagnitude * 0.2f);
|
|
audioSource.PlayOneShot(audioClip[1]);
|
|
hitSoundDelay = Random.Range(0.2f, 0.6f);
|
|
}
|
|
else
|
|
{
|
|
hitSoundDelay = Mathf.MoveTowards(hitSoundDelay, 0f, Time.deltaTime);
|
|
}
|
|
}
|
|
|
|
public void SitPlayerInBoat(FPlayer player)
|
|
{
|
|
Debug.Log("Gracz wszedl do lodki");
|
|
currentPlayerCharacter = player;
|
|
currentPlayerCharacter.firstPersonController.notMove = true;
|
|
}
|
|
|
|
public void TeleportPlayerToBoat(FPlayer player)
|
|
{
|
|
if ((bool)player.currentRod)
|
|
{
|
|
GameManager.Instance.ShowMessagePopup(LanguageManager.Instance.GetText("ENTER_TO_BOAT_WITH_ROD"), FScriptsHandler.Instance.m_Canvas.transform);
|
|
return;
|
|
}
|
|
Debug.Log("Gracz wszedl do lodki");
|
|
currentPlayerCharacter = player;
|
|
currentPlayerCharacter.firstPersonController.notMove = true;
|
|
currentPlayerCharacter.transform.position = base.transform.position;
|
|
}
|
|
|
|
public void LeavePlayerFromBoat(FPlayer player)
|
|
{
|
|
if ((bool)currentPlayerCharacter)
|
|
{
|
|
Debug.Log("Gracz wyszedl z lodki");
|
|
currentPlayerCharacter.transform.SetParent(lastPlayerParent);
|
|
currentPlayerCharacter.firstPersonController.notMove = false;
|
|
currentPlayerCharacter = null;
|
|
}
|
|
}
|
|
|
|
public void LeavePlayerFromBoatByParking()
|
|
{
|
|
if (GameManager.Instance.ChechIfPlayerShouldBeStoppedFromDoingAnything() || !currentPlayerCharacter || !currentParking || currentSitPointIndex != 0 || FScriptsHandler.Instance.m_HudManager.currentSteerBoatPanel != null || (bool)FScriptsHandler.Instance.m_HudManager.currentGetDropPanel)
|
|
{
|
|
return;
|
|
}
|
|
if ((bool)FScriptsHandler.Instance.m_HudManager.currentLeaveBoatPanel)
|
|
{
|
|
FScriptsHandler.Instance.m_HudManager.currentLeaveBoatPanel.circleImage.fillAmount = (float)GameManager.Instance.player.GetButtonTimePressed("isEnterLeaveBoat");
|
|
}
|
|
if (!(GameManager.Instance.player.GetButtonTimePressed("isEnterLeaveBoat") >= 1.0) || wasExitClicked || FScriptsHandler.Instance.m_HudManager.currentLeaveBoatPanel == null)
|
|
{
|
|
return;
|
|
}
|
|
for (int i = 0; i < rodSupports.Length; i++)
|
|
{
|
|
if (rodSupports[i].currentRod_1 != null)
|
|
{
|
|
GameManager.Instance.ShowMessagePopup(LanguageManager.Instance.GetText("BOAT_LEFT_ROD"), FScriptsHandler.Instance.m_Canvas.transform);
|
|
return;
|
|
}
|
|
}
|
|
wasExitClicked = true;
|
|
if ((bool)currentPlayerCharacter.currentRod)
|
|
{
|
|
GameManager.Instance.ShowMessagePopup(LanguageManager.Instance.GetText("LEAVE_FROM_BOAT_WITH_ROD"), FScriptsHandler.Instance.m_Canvas.transform);
|
|
return;
|
|
}
|
|
Debug.Log("Gracz wyszedl z lodki");
|
|
currentPlayerCharacter.transform.SetParent(lastPlayerParent);
|
|
currentPlayerCharacter.firstPersonController.notMove = false;
|
|
currentPlayerCharacter.transform.position = currentParking.transform.position;
|
|
currentPlayerCharacter = null;
|
|
base.transform.position = currentParking.boatPlaceTransform.position;
|
|
base.transform.rotation = currentParking.boatPlaceTransform.rotation;
|
|
rigidbody.velocity = Vector3.zero;
|
|
}
|
|
|
|
private void OnCollisionEnter(Collision collision)
|
|
{
|
|
if (collision.gameObject.layer == LayerMask.NameToLayer("Terrain"))
|
|
{
|
|
isHitTerrain = true;
|
|
}
|
|
}
|
|
|
|
private void OnCollisionExit(Collision collision)
|
|
{
|
|
if (collision.gameObject.layer == LayerMask.NameToLayer("Terrain"))
|
|
{
|
|
isHitTerrain = false;
|
|
}
|
|
}
|
|
|
|
private void OnTriggerStay(Collider other)
|
|
{
|
|
if (LayerMask.NameToLayer("Player") == other.gameObject.layer)
|
|
{
|
|
isPlayerRangeOnBoat = true;
|
|
}
|
|
}
|
|
|
|
private void OnTriggerExit(Collider other)
|
|
{
|
|
if (LayerMask.NameToLayer("Player") == other.gameObject.layer)
|
|
{
|
|
isPlayerRangeOnBoat = false;
|
|
}
|
|
}
|
|
|
|
private void OnEnable()
|
|
{
|
|
FPlayer.OnChangeCameraToUnderwater += FPlayer_OnChangeCameraToUnderwater;
|
|
FPlayer.OnChangeCameraOutUnderwater += FPlayer_OnChangeCameraOutUnderwater;
|
|
}
|
|
|
|
private void OnDisable()
|
|
{
|
|
FPlayer.OnChangeCameraToUnderwater -= FPlayer_OnChangeCameraToUnderwater;
|
|
FPlayer.OnChangeCameraOutUnderwater -= FPlayer_OnChangeCameraOutUnderwater;
|
|
}
|
|
|
|
private void FPlayer_OnChangeCameraOutUnderwater()
|
|
{
|
|
if ((bool)waterSubstractRenderer)
|
|
{
|
|
waterSubstractRenderer.enabled = true;
|
|
}
|
|
}
|
|
|
|
private void FPlayer_OnChangeCameraToUnderwater()
|
|
{
|
|
if ((bool)waterSubstractRenderer)
|
|
{
|
|
waterSubstractRenderer.enabled = false;
|
|
}
|
|
}
|
|
}
|