예제 #1
0
파일: HB.cs 프로젝트: calebaden/abomination
        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;
            }
        }
예제 #2
0
파일: HB.cs 프로젝트: calebaden/abomination
        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();
        }