void CheckCameraInWater() { if (m_Player != null && m_Player.m_Room != null && m_Player.m_SwimState != SwimmingState.None) { float water_level = m_Player.m_Room.GetCenterPoint().y; Bounds b = m_Player.m_Room.GetBound(); Material room_mat = LevelManager.GetSharedMaterial(); if (b.Contains(m_CameraTransform.position) && !m_bCameraInWater) { //Debug.Log("Camera In Water"); //if(room_mat.color != water_color) //{ //room_mat.color = water_color; //} DayNightSystem.SetAmbientTint(1); //do following shader update on entering water room_mat.SetFloat("_InSideWater", 1); room_mat.SetFloat("_WaterPlaneY", water_level); LevelManager.UpdateWaterHolderMaterials(1); m_bCameraInWater = true; if (m_SoundManager != null) { m_SoundManager.PlayUnderWaterAmbient(m_bCameraInWater); } } if (m_CameraTransform.position.y > water_level && m_bCameraInWater) { //if(room_mat.color != Color.white) //{ //room_mat.color = Color.white; //} DayNightSystem.SetAmbientTint(0); //do following shader update on exiting water room_mat.SetFloat("_InSideWater", 0); LevelManager.UpdateWaterHolderMaterials(0); m_bCameraInWater = false; if (m_SoundManager != null) { m_SoundManager.PlayUnderWaterAmbient(m_bCameraInWater); } } } }