73 lines
2.7 KiB
C#
73 lines
2.7 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using Ichni;
|
|
using Ichni.RhythmGame;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
public class EventPoint : MonoBehaviour
|
|
{
|
|
public AnimatedFloat animatedFloat;
|
|
public EventPoint LastEventPoint;
|
|
public EventPoint NextEventPoint;
|
|
|
|
public Image EvDrawimage;
|
|
public Image OvDrawimage;
|
|
|
|
|
|
public RectTransform LeftSide;
|
|
public RectTransform RightSide;
|
|
public Button selectButton;
|
|
public RawImage CurveCanvas;
|
|
public RawImage CurveCanvas2;
|
|
public FlexibleFloatTab FatherTab;
|
|
public int BeatDeviver => FatherTab.BeatDeviver;
|
|
public void Initialize(AnimatedFloat animatedFloat)
|
|
{
|
|
this.animatedFloat = animatedFloat;
|
|
transform.localPosition = new Vector3(
|
|
animatedFloat.startTime / EditorManager.instance.timeline.timePerBeat * BeatDeviver, 0, 0
|
|
);
|
|
RightSide.localPosition = new Vector3(
|
|
(animatedFloat.endTime - animatedFloat.startTime) / EditorManager.instance.timeline.timePerBeat * BeatDeviver, 0, 0);
|
|
|
|
EvDrawimage.rectTransform.sizeDelta = new Vector2(RightSide.localPosition.x - LeftSide.localPosition.x, EvDrawimage.rectTransform.sizeDelta.y);
|
|
EvDrawimage.transform.localPosition = new Vector3(EvDrawimage.rectTransform.sizeDelta.x / 2, 0, 0);
|
|
OvDrawimage.transform.localPosition = RightSide.localPosition;
|
|
CurveCanvas.transform.localPosition = EvDrawimage.transform.localPosition;
|
|
CurveCanvas.rectTransform.sizeDelta = new Vector2(EvDrawimage.rectTransform.sizeDelta.x, EvDrawimage.rectTransform.sizeDelta.y + 50);
|
|
|
|
|
|
|
|
//记得
|
|
CurveCanvas2.rectTransform.sizeDelta = new Vector2(NextEventPoint.transform.localPosition.x - RightSide.sizeDelta.x, EvDrawimage.rectTransform.sizeDelta.y + 50);
|
|
|
|
ReDraw(FatherTab.scalevalue);
|
|
}
|
|
|
|
public void ReDraw(float value)
|
|
{
|
|
Texture2D Texture = new Texture2D((int)CurveCanvas.rectTransform.sizeDelta.x / 5, (int)CurveCanvas.rectTransform.sizeDelta.y / 5);
|
|
for (int i = 0; i < Texture.width; i++)
|
|
{
|
|
for (int j = 0; j < Texture.height; j++)
|
|
{
|
|
Texture.SetPixel(i, j, new Color(0, 0, 0, 0));
|
|
}
|
|
}
|
|
Texture.Apply();
|
|
for (int i = 0; i < Texture.width; i++)
|
|
{
|
|
float t = (float)i / Texture.width;
|
|
Texture.SetPixel(i,
|
|
(int)(
|
|
(Texture.height / 2) + ((animatedFloat.endValue - animatedFloat.startValue)
|
|
* AnimationCurveEvaluator.Evaluate(animatedFloat.animationCurveType, t) * value)
|
|
), Color.green);//丑陋
|
|
}
|
|
Texture.Apply();
|
|
CurveCanvas.texture = Texture;
|
|
|
|
}
|
|
}
|