private static Color[] GenerateCache(int cacheResolution, IMorph morph) { return(Enumerable .Range(0, cacheResolution) .Select(i => morph.GetColor(i / (float)cacheResolution)) .ToArray()); }
protected virtual Option <Node> CreateMorphPanel(IMorph morph) { Ensure.That(morph, nameof(morph)).IsNotNull(); Option <Node> node = None; switch (morph) { case IMorph <float, RangedMorphDefinition> _: node = RangedMorphPanelScene.Instance(); break; case IMorph <Color, ColorMorphDefinition> _: node = ColorMorphPanelScene.Instance(); break; } var factory = node.Bind(n => n.OfType <IMorphPanelFactory>()); factory.Match( f => f.Morph = Some(morph), () => Logger.LogWarning($"Failed to find a suitable UI for morph: {morph}.") ); return(node); }
public HeatmapAbstract(Func <Vector2, float> function, IMorph morph, IReceiver receiver) { Function = function ?? throw new ArgumentNullException(nameof(function)); Morph = morph ?? throw new ArgumentNullException(nameof(morph)); Receiver = receiver ?? throw new ArgumentNullException(nameof(receiver)); RecalculateUnsampledSize(); }
public ColorMorphPanel( IMorph <Color, ColorMorphDefinition> morph, ColorPickerButton button, Label label, Godot.Control node, ILoggerFactory loggerFactory) : base(morph, label, node, loggerFactory) { Ensure.That(button, nameof(button)).IsNotNull(); Button = button; }
protected MorphPanel( IMorph <TVal, TDef> morph, Label label, Godot.Control node, ILoggerFactory loggerFactory) : base(morph, label, node, loggerFactory) { Ensure.That(morph, nameof(morph)).IsNotNull(); Ensure.That(label, nameof(label)).IsNotNull(); Morph = morph; }
protected override Validation <string, ColorMorphPanel> CreateService( IMorph <Color, ColorMorphDefinition> morph, Label label, Godot.Control node, ILoggerFactory loggerFactory) { return (from button in Button .ToValidation("Failed to find the button.") select new ColorMorphPanel(morph, button, label, node, loggerFactory)); }
private IEnumerator Run(IMorph target, float directionOffset) { float time = 0, previousTime = 0; while (_duration > 0 && (time < 1 || (previousTime < 1 && time >= 1))) { target.Frame(Mathf.Abs(directionOffset - Mathf.Clamp01(time))); previousTime = time; time += Time.deltaTime / _duration; yield return(null); } }
private IEnumerator Run(IMorph target, float directionOffset) { var steps = _intermediateSteps + 2; var waitBetweenSteps = new WaitForSeconds(_durationInSeconds / steps); var stepSize = 1f / (steps - 1); for (int i = 0; i < steps; i++) { target.Frame(Mathf.Clamp01(Mathf.Abs(directionOffset - i * stepSize))); yield return(waitBetweenSteps); } }
protected override Validation <string, RangedMorphPanel> CreateService( IMorph <float, RangedMorphDefinition> morph, Label label, Godot.Control node, ILoggerFactory loggerFactory) { return (from slider in Slider .ToValidation("Failed to find the slider.") from spinner in Spinner .ToValidation("Failed to find the spinner.") select new RangedMorphPanel(morph, slider, spinner, label, node, loggerFactory)); }
public bool TryGetValue(string key, out IMorph value) { Ensure.That(key, nameof(key)).IsNotNull(); if (!_morphs.ContainsKey(key)) { value = null; return(false); } value = _morphs[key]; return(true); }
public RangedMorphPanel( IMorph <float, RangedMorphDefinition> morph, Slider slider, SpinBox spinner, Label label, Godot.Control node, ILoggerFactory loggerFactory) : base(morph, label, node, loggerFactory) { Ensure.That(slider, nameof(slider)).IsNotNull(); Ensure.That(spinner, nameof(spinner)).IsNotNull(); Slider = slider; Spinner = spinner; }
protected override void ApplyMorph(IMorph morph) { var dna = morph as IMorph <float>; if (dna != null && _dnaMappings.ContainsKey(morph.Name)) { var mapping = _dnaMappings[morph.Name]; ApplyDNA(mapping.Hash, mapping.Index, dna.Value); } var color = morph as IMorph <Color>; if (color != null) { ApplyColor(color.Name, color.Value); } }
protected virtual MorphPanel CreateMorphPanel([NotNull] IMorph morph) { Ensure.Any.IsNotNull(morph, nameof(morph)); MorphPanel panel = null; switch (morph) { case IMorph <float, RangedMorphDefinition> _: panel = (MorphPanel)_rangedMorphPanelScene.Instance(); break; case IMorph <Color, ColorMorphDefinition> _: panel = (MorphPanel)_colorMorphPanelScene.Instance(); break; } panel?.LoadMorph(morph); return(panel); }
public abstract void LoadMorph([NotNull] IMorph morph);
public static IMorph And(this IMorph morph, params IMorph[] others) => new CompositeMorph(new List <IMorph>(others) { morph });
public HeatmapGenerator(Func <Vector2, float> function, IMorph morph, IReceiver receiver) : base(function, morph, receiver) { }
private void HandleMorphChange(IMorph morph) { ApplyMorph(morph); _morphChange.OnNext(morph); }
protected abstract void ApplyMorph(IMorph morph);
internal WithEasingDecorator(IMorph source, AnimationCurve easingCurve) { _source = source; _easingCurve = easingCurve; }
public static IMorph WithEasing(this IMorph morph, AnimationCurve curve) => new WithEasingDecorator(morph, curve);
public override void LoadMorph(IMorph morph) { Ensure.Any.IsNotNull(morph, nameof(morph)); Morph = (IMorph <TVal, TDef>)morph; }
public CachedMorph(int cacheResolution, IMorph morph) { CacheResolution = cacheResolution; Cache = GenerateCache(cacheResolution, morph); }
public bool TryGetValue(string key, out IMorph value) => _morphs.TryGetValue(key, out value);
public IEnumerator Backwards(IMorph target) { return(Run(target, 1f)); }
public IEnumerator Forwards(IMorph target) { return(Run(target, 0f)); }
public void getMorphed(IMorph morph, out Vector3[] vertices, out Vector3[] normals) { getMorphed(morph.morph, out vertices, out normals); }