void ScaleOcean(int in_OceanScale) { OceanScale = in_OceanScale; gameObject.transform.localScale = new Vector3(in_OceanScale, in_OceanScale, in_OceanScale); foreach (Material TileMat in LODMats) { TileMat.SetInt("_OceanScale", in_OceanScale); } }
void AdjustOceanForCamera() { if (MainCam.transform.hasChanged) { //Debug.Log("Changed!!"); MainCam.transform.hasChanged = false; int CameraHeightLevel = Mathf.FloorToInt(Mathf.Sqrt(Mathf.Abs(MainCam.transform.position.y) / CameraHeight0)) + 1; ScaleOcean(CameraHeightLevel); float CameraFEstimateDist = MainCam.transform.position.y * ArcTanHalfFOV; Vector3 Cal_OceanCenter = MainCam.transform.forward * CameraFEstimateDist + MainCam.transform.position; Vector3 CurPos = gameObject.transform.position; gameObject.transform.position = new Vector3(Cal_OceanCenter.x, CurPos.y, Cal_OceanCenter.z); foreach (Material TileMat in LODMats) { TileMat.SetVector("_CenterPos", Cal_OceanCenter); } } }