rabidus-test/Assets/Dreamteck/Splines/Components/Sample Modifiers/SizeModifier.cs

57 lines
1.4 KiB
C#
Raw Permalink Normal View History

2023-07-24 16:38:13 +03:00
namespace Dreamteck.Splines
{
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[System.Serializable]
public class SizeModifier : SplineSampleModifier
{
[System.Serializable]
public class SizeKey : Key
{
public float size = 0f;
public SizeKey(double f, double t) : base(f, t)
{
}
}
public SizeKey[] keys = new SizeKey[0];
public SizeModifier()
{
keys = new SizeKey[0];
}
public override List<Key> GetKeys()
{
return new List<Key>(keys);
}
public override void SetKeys(List<Key> input)
{
keys = new SizeKey[input.Count];
for (int i = 0; i < input.Count; i++)
{
keys[i] = (SizeKey)input[i];
}
base.SetKeys(input);
}
public void AddKey(double f, double t)
{
ArrayUtility.Add(ref keys, new SizeKey(f, t));
}
public override void Apply(ref SplineSample result)
{
if (keys.Length == 0) return;
base.Apply(ref result);
for (int i = 0; i < keys.Length; i++)
{
result.size += keys[i].Evaluate(result.percent) * keys[i].size * blend;
}
}
}
}