private void BuildShaderPropertyList(TweenShader tweenShader)
        {
            var targetRenderer = tweenShader.targetRenderer;

            properties.Clear();

            if (targetRenderer == null)
            {
                return;
            }

            var sharedMaterials = targetRenderer.sharedMaterials;

            foreach (var material in sharedMaterials)
            {
                var shader        = material.shader;
                int propertyCount = ShaderUtil.GetPropertyCount(shader);
                for (int i = 0; i < propertyCount; i++)
                {
                    var propertyType = ShaderUtil.GetPropertyType(shader, i);
                    switch (propertyType)
                    {
                    case ShaderUtil.ShaderPropertyType.Float:
                    case ShaderUtil.ShaderPropertyType.Range:
                        properties.Add(new ShaderProperty
                        {
                            name = ShaderUtil.GetPropertyName(shader, i),
                            type = TweenShaderProperty.Type.Float
                        });
                        break;

                    case ShaderUtil.ShaderPropertyType.Vector:
                        properties.Add(new ShaderProperty
                        {
                            name = ShaderUtil.GetPropertyName(shader, i),
                            type = TweenShaderProperty.Type.Vector
                        });
                        break;

                    case ShaderUtil.ShaderPropertyType.Color:
                        properties.Add(new ShaderProperty
                        {
                            name = ShaderUtil.GetPropertyName(shader, i),
                            type = TweenShaderProperty.Type.Color
                        });
                        break;

                    case ShaderUtil.ShaderPropertyType.TexEnv:
                        properties.Add(new ShaderProperty
                        {
                            name = ShaderUtil.GetPropertyName(shader, i) + "_ST",
                            type = TweenShaderProperty.Type.Vector
                        });
                        break;
                    }
                }
            }

            propertyNameOptions = properties.Select(p => p.name).ToArray();
        }
Esempio n. 2
0
 public void UpdateProperties(TweenShader tweenShader)
 {
     if (tweenShader != null && tweenShader != previousTweenShader)
     {
         previousTweenShader = tweenShader;
         BuildShaderPropertyList(tweenShader);
     }
 }
        private void UpdateTween(TweenShader tweenShader)
        {
            playCoroutine.IfSome(c => c.Stop());

            if (tweenShader != null && !EditorApplication.isPlayingOrWillChangePlaymode)
            {
                playCoroutine = EditorCoroutine.Start(UpdateTweenCoroutine(tweenShader));
            }
        }
        private void InitTween(TweenShader tweenShader)
        {
            TryInitReflection();
            initMethod.Invoke(tweenShader, emptyArgs);

            if (!tweenShader.duration.IsRunning)
            {
                wasTweenEnabled = tweenShader.enabled;
            }
        }
Esempio n. 5
0
        private void InitTween(TweenShader tweenShader)
        {
            TryInitReflection();
            initMethod.Invoke(tweenShader, new object[0]);

            if (!tweenShader.timer.isRunning)
            {
                wasTweenEnabled = tweenShader.enabled;
            }
        }
        private IEnumerator UpdateTweenCoroutine(TweenShader tweenShader)
        {
            while (true)
            {
                updateMethod.Invoke(tweenShader, emptyArgs);
                SceneView.RepaintAll();

                if (!tweenShader.duration.IsRunning)
                {
                    break;
                }

                yield return(null);
            }

            playCoroutine.IfSome(c => c.Stop());
            playCoroutine = new None();

            tweenShader.enabled = wasTweenEnabled;
        }
Esempio n. 7
0
        private IEnumerator UpdateTweenCoroutine(TweenShader tweenShader)
        {
            while (true)
            {
                updateMethod.Invoke(tweenShader, new object[0]);
                SceneView.RepaintAll();
                Repaint();

                if (!tweenShader.timer.isRunning)
                {
                    break;
                }

                yield return(null);
            }

            playCoroutine.IfSome(c => c.Stop());
            playCoroutine = Functional.None;

            tweenShader.enabled = wasTweenEnabled;
        }