private void UpdateDisplacement(bool on) { Vector3 vector3 = new Vector3(); Vector2 vector2 = new Vector2(); Vector2 vector21 = new Vector2(); Camera camera; if (!on) { Shader.SetGlobalVector("_DisplacementWorldMin", Vector2.zero); Shader.SetGlobalVector("_DisplacementWorldMax", Vector2.zero); return; } FPGrassDisplacementCamera fPGrassDisplacementCamera = FPGrassDisplacementCamera.Get(); if (fPGrassDisplacementCamera == null) { camera = null; } else { camera = fPGrassDisplacementCamera.camera; } Camera vector31 = camera; if (vector31 == null) { return; } float single = vector31.orthographicSize; float single1 = single / (float)vector31.targetTexture.width; Vector3 vector32 = base.camera.transform.position; if (TransformHelpers.Dist2D(vector32, vector31.transform.position) > 5f) { vector3.x = Mathf.Round(vector32.x / single1) * single1; vector3.y = Mathf.Round(vector32.y / single1) * single1; vector3.z = Mathf.Round(vector32.z / single1) * single1; vector31.transform.position = vector3 + new Vector3(0f, 50f, 0f); } Vector3 vector33 = vector31.transform.position; vector2.x = vector33.x - single; vector2.y = vector33.z - single; vector21.x = vector33.x + single; vector21.y = vector33.z + single; Shader.SetGlobalVector("_DisplacementWorldMin", vector2); Shader.SetGlobalVector("_DisplacementWorldMax", vector21); vector31.Render(); }
private void UpdateDisplacement(bool on) { if (!on) { Shader.SetGlobalVector("_DisplacementWorldMin", Vector2.zero); Shader.SetGlobalVector("_DisplacementWorldMax", Vector2.zero); } else { FPGrassDisplacementCamera camera = FPGrassDisplacementCamera.Get(); Camera camera2 = (camera == null) ? null : camera.camera; if (camera2 != null) { Vector2 vector4; Vector2 vector5; float orthographicSize = camera2.orthographicSize; float num2 = orthographicSize / ((float)camera2.targetTexture.width); Vector3 position = base.camera.transform.position; if (TransformHelpers.Dist2D(position, camera2.transform.position) > 5f) { Vector3 vector2; vector2.x = Mathf.Round(position.x / num2) * num2; vector2.y = Mathf.Round(position.y / num2) * num2; vector2.z = Mathf.Round(position.z / num2) * num2; camera2.transform.position = vector2 + new Vector3(0f, 50f, 0f); } Vector3 vector3 = camera2.transform.position; vector4.x = vector3.x - orthographicSize; vector4.y = vector3.z - orthographicSize; vector5.x = vector3.x + orthographicSize; vector5.y = vector3.z + orthographicSize; Shader.SetGlobalVector("_DisplacementWorldMin", vector4); Shader.SetGlobalVector("_DisplacementWorldMax", vector5); camera2.Render(); } } }