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(); }
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; } }
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; }
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; }