Files
ichni_Creator_Studio/Assets/Scripts/Base/BaseElement.cs
SoulliesOfficial 7ab738cb68 架构重新设计
基本重做了所有物体和次级模块代码
2025-02-08 02:31:39 -05:00

110 lines
3.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Ichni.RhythmGame.Beatmap;
using Sirenix.OdinInspector;
using UniRx;
using UnityEngine;
namespace Ichni.RhythmGame
{
public interface IBaseElement
{
public BaseElement_BM matchedBM { get; set; }
/// <summary>
/// 用于生成存档
/// </summary>
public void SaveBM();
/// <summary>
/// 当物体被删除时执行的方法
/// </summary>
public void OnDelete();
/// <summary>
/// 删除物体,包括所有子物体
/// </summary>
public void Delete();
}
// public virtual void SetTimeDuration()
// {
//
// }
//
// public void ApplyTimeDuration()
// {
// childElementList.ForEach(x => x.ApplyTimeDuration());
// timeDurationSubmodule?.SetDurationFromChildren(
// childElementList.Select(x => x.timeDurationSubmodule).ToList());
// }
//
// /// <summary>
// /// 设置物体Transform的监听顺序为Scale -> EulerAngles -> Position
// /// 如果有一些特殊的物体例如CameraElementFolder需要自定义监听可以重写这个方法
// /// </summary>
// public virtual void SetTransformObserver()
// {
// Observable.EveryUpdate().Subscribe(_ =>
// {
// if (transformSubmodule == null)
// {
// return;
// }
//
// if (transformSubmodule.scaleDirtyMark)
// {
// Vector3 offset = Vector3.zero;
// foreach (Vector3 scaleOffset in transformSubmodule.scaleOffset)
// {
// offset += scaleOffset;
// }
//
// transformSubmodule.currentScale = transformSubmodule.originalScale + offset;
// transform.localScale = transformSubmodule.currentScale;
// transformSubmodule.scaleDirtyMark = false;
// }
//
// if (transformSubmodule.eulerAnglesDirtyMark)
// {
// Vector3 offset = Vector3.zero;
// foreach (Vector3 eulerOffset in transformSubmodule.eulerAnglesOffset)
// {
// offset += eulerOffset;
// }
//
// transformSubmodule.currentEulerAngles = transformSubmodule.originalEulerAngles + offset;
// transform.localEulerAngles = transformSubmodule.currentEulerAngles;
// transformSubmodule.eulerAnglesDirtyMark = false;
// }
//
// if (transformSubmodule.positionDirtyMark)
// {
// Vector3 offset = Vector3.zero;
// foreach (Vector3 posOffset in transformSubmodule.positionOffset)
// {
// offset += posOffset;
// }
//
// transformSubmodule.currentPosition = transformSubmodule.originalPosition + offset;
// transform.localPosition = transformSubmodule.currentPosition;
// transformSubmodule.positionDirtyMark = false;
// }
//
// transformSubmodule.scaleOffset.Clear();
// transformSubmodule.eulerAnglesOffset.Clear();
// transformSubmodule.positionOffset.Clear();
// }).AddTo(gameObject);
// }
namespace Beatmap
{
public abstract class BaseElement_BM
{
}
}
}