Exemple #1
0
        private IEnumerator DoComponentAlphaTransitions()
        {
            const float fadeOutThreshold = 0.89f;
            const float fadeDuration     = 0.189f;
            int         numberOfAxes     = Enum.GetValues(typeof(SceneGizmoComponent)).Length;

            Vector3[] gizmoAxes = new Vector3[] { _gizmoTransform.right, -_gizmoTransform.right, _gizmoTransform.up, -_gizmoTransform.up, _gizmoTransform.forward, -_gizmoTransform.forward };

            while (true)
            {
                Vector3 cameraLook = _gizmoCameraTransform.forward;

                for (int axisIndex = 0; axisIndex < numberOfAxes; ++axisIndex)
                {
                    if ((SceneGizmoComponent)axisIndex == SceneGizmoComponent.Cube)
                    {
                        _componentAlphas[axisIndex] = 1.0f;
                        continue;
                    }

                    GizmoCompAlphaFadeInfo fadeInfo = _componentAlphaFadeInfo[axisIndex];
                    float absDot = Mathf.Abs(Vector3.Dot(cameraLook, gizmoAxes[axisIndex - 1]));

                    if (!fadeInfo.IsActive)
                    {
                        if (absDot >= fadeOutThreshold)
                        {
                            fadeInfo.ChangeTransition(GizmoCompTransition.FadeOut, _componentAlphas[axisIndex]);
                        }
                        else
                        {
                            fadeInfo.ChangeTransition(GizmoCompTransition.FadeIn, _componentAlphas[axisIndex]);
                        }
                    }

                    if (fadeInfo.IsActive)
                    {
                        _componentAlphas[axisIndex] = Mathf.Lerp(fadeInfo.SrcAlpha, fadeInfo.DestAlpha, fadeInfo.ElapsedTime / fadeDuration);
                        fadeInfo.ElapsedTime       += Time.deltaTime;

                        if (fadeInfo.ElapsedTime >= fadeDuration)
                        {
                            _componentAlphas[axisIndex] = fadeInfo.DestAlpha;
                            fadeInfo.Stop();
                        }
                    }
                }

                yield return(null);
            }
        }
Exemple #2
0
        private void Start()
        {
            CreateSceneGizmoCamera();

            _axisLabelTextures[0] = Resources.Load("Textures/XAxisLabel") as Texture2D;
            _axisLabelTextures[1] = Resources.Load("Textures/YAxisLabel") as Texture2D;
            _axisLabelTextures[2] = Resources.Load("Textures/ZAxisLabel") as Texture2D;

            int axisCount = Enum.GetValues(typeof(SceneGizmoComponent)).Length;

            for (int axisIndex = 0; axisIndex < axisCount; ++axisIndex)
            {
                _componentAlphaFadeInfo[axisIndex] = new GizmoCompAlphaFadeInfo();
                _componentAlphas[axisIndex]        = 1.0f;
            }

            UpdateGizmoCamera();
            StartCoroutine(DoComponentAlphaTransitions());
        }