添加了多种对程序流程控制与保全的脚本,而且现在可以更快速的构建一个具有线性关系的协程了。 添加了一个支持多种模式的单维梯度控制器,类似unity的颜色梯度类型。 添加了一个用于看向某个物体的旋转控制器。 添加了一个加载宏。 完善了批处理脚本流程。
138 lines
2.5 KiB
C#
138 lines
2.5 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
using UnityEngine;
|
|
|
|
using XericLibrary.Runtime.Type;
|
|
|
|
namespace XericLibrary.Runtime.Security
|
|
{
|
|
/// <summary>
|
|
/// 基本的保全调用方法;
|
|
/// 需要手动在委托的前后安置保全标识
|
|
/// </summary>
|
|
public class ProgramFlowSecurity : WeaklyObject
|
|
{
|
|
#region 字段属性
|
|
|
|
/// <summary>
|
|
/// 外部保护标志位
|
|
/// </summary>
|
|
private int conservativeFlag;
|
|
|
|
/// <summary>
|
|
/// 外部单步标志位
|
|
/// </summary>
|
|
private int DoOnceFlag;
|
|
|
|
#endregion
|
|
|
|
#region 构造
|
|
|
|
public ProgramFlowSecurity()
|
|
{
|
|
conservativeFlag = 0;
|
|
DoOnceFlag = 0;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 外部方法
|
|
|
|
/// <summary>
|
|
/// 标志一段程序的开始
|
|
/// </summary>
|
|
/// <typeparam name="T"></typeparam>
|
|
/// <param name="site"></param>
|
|
public void Start<T>(T site)
|
|
where T : struct, Enum
|
|
{
|
|
conservativeFlag |= Convert.ToInt32(site);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 标志一段程序的结束
|
|
/// </summary>
|
|
/// <typeparam name="T"></typeparam>
|
|
/// <param name="site"></param>
|
|
public void Finish<T>(T site)
|
|
where T : struct, Enum
|
|
{
|
|
conservativeFlag &= ~Convert.ToInt32(site);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 尝试开始一段程序
|
|
/// </summary>
|
|
/// <typeparam name="T"></typeparam>
|
|
/// <param name="site"></param>
|
|
/// <returns></returns>
|
|
public bool TryStart<T>(T site)
|
|
where T : struct, Enum
|
|
{
|
|
if(GetFlag(site))
|
|
return false;
|
|
Start(site);
|
|
return true;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 开始执行一次
|
|
/// </summary>
|
|
/// <typeparam name="T"></typeparam>
|
|
/// <param name="site"></param>
|
|
/// <returns></returns>
|
|
public bool DoOnceStart<T>(T site)
|
|
where T : struct, Enum
|
|
{
|
|
if(GetFlag(site))
|
|
return false;
|
|
DoOnceFlag |= Convert.ToInt32(site);
|
|
return true;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 复位执行一次的标志
|
|
/// </summary>
|
|
/// <typeparam name="T"></typeparam>
|
|
/// <param name="site"></param>
|
|
public void ResetDoOnce<T>(T site)
|
|
where T : struct, Enum
|
|
{
|
|
DoOnceFlag &= ~Convert.ToInt32(site);
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 获取一段程序的标志位
|
|
/// </summary>
|
|
/// <typeparam name="T"></typeparam>
|
|
/// <param name="site"></param>
|
|
/// <returns></returns>
|
|
private bool GetFlag<T>(T site)
|
|
where T : struct, Enum
|
|
{
|
|
return (conservativeFlag & Convert.ToInt32(site)) > 0;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取一段程序的标志位
|
|
/// </summary>
|
|
/// <typeparam name="T"></typeparam>
|
|
/// <param name="site"></param>
|
|
/// <returns></returns>
|
|
private bool GetDoOnce<T>(T site)
|
|
where T : struct, Enum
|
|
{
|
|
return (DoOnceFlag & Convert.ToInt32(site)) > 0;
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
|
}
|
|
}
|