private void Update() { if (Application.isPlaying) { return; } bool positionChanged = false; if (m_previosPosition != transform.position) { positionChanged = !AttachToCamera; m_previosPosition = transform.position; } if (RaycastStride < 0.01f) { RaycastStride = 0.01f; } if (m_previousRadius != FixBoundsRadius) { if (FixBoundsRadius < 0) { FixBoundsRadius = 0; } m_previousRadius = FixBoundsRadius; } if (m_previousCurvature != Curvature) { HBUtils.HBCurvature(Curvature * CURVATURE_FACTOR); m_previousCurvature = Curvature; } if (m_previousFlatten != Flatten) { if (Flatten < 0) { Flatten = 0; } HBUtils.HBFlatten(Flatten); m_previousFlatten = Flatten; } if (m_previousHorizonZOffset != HorizonZOffset || m_previousHorizonYOffset != HorizonYOffset || m_previousHorizonXOffset != HorizonXOffset || positionChanged) { if (AttachToCamera) { HBUtils.HBHorizonOffset(HorizonXOffset, HorizonYOffset, HorizonZOffset); } else { HBUtils.HBHorizonOffset(HorizonXOffset, HorizonYOffset, HorizonZOffset, transform); } m_previousHorizonZOffset = HorizonZOffset; m_previousHorizonYOffset = HorizonYOffset; m_previousHorizonXOffset = HorizonXOffset; } if (m_previousMode != BendingMode) { HBUtils.HBMode(BendingMode); m_previousMode = BendingMode; } if (m_prevCameraTracking != AttachToCamera) { if (AttachToCamera) { HBUtils.HBHorizonOffset(HorizonXOffset, HorizonYOffset, HorizonZOffset); } else { HBUtils.HBHorizonOffset(HorizonXOffset, HorizonYOffset, HorizonZOffset, transform); } m_prevCameraTracking = AttachToCamera; } }
public void Internal_Apply() { m_rendererGroups.Clear(); if (m_defaultMaterial == null) { GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube); m_defaultMaterial = cube.GetComponent <Renderer>().sharedMaterial; DestroyImmediate(cube); } if (m_defaultParticle == null) { GameObject particles = new GameObject(); particles.AddComponent <ParticleSystem>(); m_defaultParticle = particles.GetComponent <Renderer>().sharedMaterial; DestroyImmediate(particles); } m_appliedRadius = FixBoundsRadius; Material[] materials; EditorUtility.DisplayProgressBar("Horizon Bend", "Searching for materials", 0.1f); HBUtils.Find(out materials, out m_rendererGroups, ExcludeGameObjects); if (!LockMaterials) { Materials = materials; } EditorUtility.DisplayProgressBar("Horizon Bend", "Replacing default materials", 0.2f); Materials = ReplaceUIMaterials(Materials, false, false); TryRelpaceDefaultMaterials(); EditorUtility.DisplayProgressBar("Horizon Bend", "Replacing shaders", 0.3f); HBUtils.ReplaceShaders(Materials, HBShaders, false); EditorUtility.DisplayProgressBar("Horizon Bend", "Cleaning materials", 0.4f); Materials = HBUtils.Trim(Materials, m_rendererGroups, CustomShaders); CreateHBCameras(); EditorUtility.DisplayProgressBar("Horizon Bend", "Fixing Bounds", 0.5f); CreateHBFixBounds(); FixBounds(); EditorUtility.DisplayProgressBar("Horizon Bend", "Completed", 1.0f); Transform fakeCameraTransform = null; bool attachToCamera = true; if (!AttachToCamera) { fakeCameraTransform = transform; attachToCamera = false; } HBUtils.HorizonBend(new HBSettings(BendingMode, Curvature * CURVATURE_FACTOR, Flatten, HorizonXOffset, HorizonYOffset, HorizonZOffset, attachToCamera), fakeCameraTransform); HBUtils.HBMode(BendingMode); EditorUtility.ClearProgressBar(); }