You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CrowdControl/Assets/Feel/MMTools/Tools/MMCurves/Plotter/MMPlotterGenerator.cs

108 lines
2.9 KiB
C#

1 month ago
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System;
using System.Reflection;
using System.Collections.Generic;
using System.Linq;
namespace MoreMountains.Tools
{
public class MMPlotterGenerator : MonoBehaviour
{
public MMPlotter PlotterPrefab;
public Vector2 Spacing;
public float VerticalOddSpacing;
public int RowLength;
[Header("Materials")]
public Material LinearMaterial;
public Material QuadraticMaterial;
public Material CubicMaterial;
public Material QuarticMaterial;
public Material QuinticMaterial;
public Material SinusoidalMaterial;
public Material BounceMaterial;
public Material OverheadMaterial;
public Material ExponentialMaterial;
public Material ElasticMaterial;
public Material CircularMaterial;
protected Vector2 _position;
[MMInspectorButton("GeneratePlotters")]
public bool GeneratePlottersButton;
protected virtual void Awake()
{
Time.timeScale = 0f;
GeneratePlotters();
}
protected virtual void GeneratePlotters()
{
this.transform.MMDestroyAllChildren();
BindingFlags flags = BindingFlags.Public | BindingFlags.Static;
MethodInfo[] methods = typeof(MMTweenDefinitions).GetMethods(flags);
int row = 0;
int column = 0;
float yCoordinate = 0;
for (int i=0; i < methods.Length; i++)
{
_position.x = column * Spacing.x;
_position.y = yCoordinate;
MMPlotter plotter = Instantiate(PlotterPrefab);
plotter.transform.SetParent(this.transform);
plotter.transform.localPosition = _position;
plotter.TweenMethodIndex = i;
string tweenName = plotter.TweenName(plotter.TweenMethodIndex);
plotter.gameObject.name = tweenName;
Material newMaterial = LinearMaterial;
if (tweenName.Contains("Linear")) { newMaterial = LinearMaterial; }
if (tweenName.Contains("Quadratic")) { newMaterial = QuadraticMaterial; }
if (tweenName.Contains("Cubic")) { newMaterial = CubicMaterial; }
if (tweenName.Contains("Quartic")) { newMaterial = QuarticMaterial; }
if (tweenName.Contains("Quintic")) { newMaterial = QuinticMaterial; }
if (tweenName.Contains("Sinusoidal")) { newMaterial = SinusoidalMaterial; }
if (tweenName.Contains("Bounce")) { newMaterial = BounceMaterial; }
if (tweenName.Contains("Overhead")) { newMaterial = OverheadMaterial; }
if (tweenName.Contains("Exponential")) { newMaterial = ExponentialMaterial; }
if (tweenName.Contains("Elastic")) { newMaterial = ElasticMaterial; }
if (tweenName.Contains("Circular")) { newMaterial = CircularMaterial; }
plotter.SetMaterial(newMaterial);
plotter.GetMethodsList();
plotter.DrawGraph();
if (column >= RowLength - 1)
{
column = 0;
row++;
if (row % 2 == 0)
{
yCoordinate += Spacing.y + VerticalOddSpacing;
}
else
{
yCoordinate += Spacing.y;
}
}
else
{
column++;
}
}
}
}
}