Deconstruction 链路接触点 此框架默认不实现空间坐标的功能,需要后续类实现。 链路接触点用于定义多个物体间的链路结构 链路数据结构 获取此点在给定线上的法向 注意:这里假定点一定在线的某一端上,所以并不会检查是否相连 获取此点在给定线上的法向 注意:这里假定点一定在线的某一端上,所以并不会检查是否相连 安全地获取此点在给定线上的法向 安全地获取此点在给定线上的法向 基本可放置元素 元素中不定义点或法向,后续通过接口实现,目的是为了区分所有的元素。 放置元素中需要实现与工具类相关的内容 放置元素的销毁事件 所有放置元素的唯一标识符,可以用于序列化时引用查找 网格索引,如果成员添加到网格中进行了管理,那么持有这个索引会比较高效。 获取元素的计算边界 获取元素到向上平面的边界 显示调试信息 代理更新 这是主线程方法,可以在此进行主要的数据交换操作 代理更新 这是主线程方法,可以在此进行主要的数据交换操作 代理后置更新 这是主线程方法,可以在此进行主要的数据交换操作 代理异步更新之前 这是主线程操作 代理异步更新 这是异步操作 代理异步更新之后 这是主线程操作 当启用代理异步更新时 当从异步代理中退出时 通过反射检查当前实例是否实现了更新函数 检查所有更新函数 获取此放置元素的基础代理控制器 驱使线运行的框架 此框架使用2维计算器,但自身并不保存线的参数。 需要后续类通过SetRenderer额外指定一个渲染器; 且能够传递计算所需的参数,并调用UpdateRender完成渲染更新。 渲染线段时获取点的默认步骤长度 1r ≈ 1unity 注意这是约等于,所以其实不算准确。 轨迹渲染器 轨迹计算器 链路数据结构 当前的轨迹计算器 当前的轨迹渲染器 弧线计算器 直线计算器 轨迹计算器有效 当前选择使用圆弧计算器 二维线段参数 线段点A 线段点B 线段点A控制柄 线段点B控制柄 点A控制柄有效 点B控制柄有效 设置值 选择轨迹计算器枚举 圆弧 直线 初始化轨迹计算 绘制曲线 绘制直线 自动绘制线,根据输入的参数切换直线或曲线绘制。 线参数 约束角,指定当前绘制的圆弧必须为一个特定度数 延起点法向绘制完整圆弧,否则只绘制半圆弧 设置渲染组件 更新渲染,将当前计算器结果设置到渲染中 分割线 初始化路径线 提供一个用于绘制的组件 建筑物基类(建筑概要) 一根线基本的绘制框架,提供基于线渲染器的绘制管理 默认只支持等宽线绘制。 渲染线的线渲染器。 线条宽度 获取材质 线亮度 动画时间 箭头压缩程度 箭头穿插程度 反转箭头 箭头宽度占用比例 背景不透明度 背景色 前景色 线计算长度,用于更新显示的长度 角倒角数量 端点倒角数量 使用世界空间坐标 启用渲染 创建线渲染器,默认是本地空间 设置线渲染器上给定索引的一点 设置线渲染器上渲染的所有点(默认将长度限制在给定的范围内) 将本地坐标转换到世界坐标空间 将世界坐标转换到本地坐标空间 一个拥有具有相连结构的对象所实现的接口,允许获取其中的相连数据结构 其中LinkedData应该指向实现此接口类本地上的一个实现ICoterminous的实例字段 链接数据 链接数据 将一个成员以指定的链路类型添加到结构中,相应地在对方成员中添加与之对立的结构 将一个成员从中移除,相应地在对方成员中也移除此对立的结构 具有相连的结构数据目标 对目标结构使用Add,与Remove可以添加链接关系 通常,具有链接关系的成员都会互相关联,所以可以使用Polarity方式进行添加与移除。 链接关系管理允许像链表一样遍历与维护对象,且不用在乎其中的成员类型。 另外链接的具体实现与当前成员的特性有关,需要根据具体成员特性进行使用 将一个成员以指定的链路类型添加到结构中 将一个成员从中移除 移除所有具有给定链路类型的成员 将一个成员从中移除,连同移除其反引用 移除所有具有给定链路类型的成员,连同移除其反引用 检查一个成员是否存在于结构中 获取与之对立的结构(如果有多个,那么会返回第一个) 如果没找到,返回空 获取与之相同的结构(如果有多个,那么会返回第一个) 如果没找到,返回空 获取与给定链接成员对立的结构 获取与给定链接成员相同的结构 获取与此对立的所有结构 如果没找到,返回空 获取与之相同的所有结构 获取所有与给定链接成员对立的结构 获取所有与给定链接成员相同的结构 获取所有结构的数量 返回的是所有有效的成员数量 清空结构 清空结构,连同其反引用 交换所有的命令方向 只改变在结构中保存的命令结构方向,不改变数据 控制对象是否进行调试绘制 是否启用调试绘制(用于可以主动绘制的对象) 调试绘制的具体行为(用于无法主动绘制的对象) 用于无法自主绘制对象提供的被动绘制方法。 切割线 获取在指定百分比处分割的轨迹 允许实现此接口的成员被异步更新处理。 异步更新时的优先级,根据优先级进行穿插更新。 (优先级0 -> oo数值越大优先级越低) 由外部管理器协程控制的更新事件 距离上次此成员被更新的时间 由外部管理器异步控制的更新事件 (请确保其中没有会导致主线程异常的操作) 此处持有的轨迹相关成员,将其开放用于外部快捷获取 所有包含轨迹计算的可放置对象都应该实现此接口,如果是建筑物可以实现另类的渲染器结构。 一个可放置对象拥有轨迹接口将代表其拥有轨迹计算的一切必备条件。 注意,其中的三维空间是转为平面向上,二维则是标准xy竖直平面进行变换,两者都会根据当前的物体位置进行变换。 轨迹渲染器 轨迹计算器 获取此轨迹的点位迭代器,并根据当前实现需求转为水平面世界空间。 迭代步长,1点步长相当于unity中的1m 获取此轨迹的点位迭代器,并根据当前实现需求转为立面世界空间。 迭代步长,1点步长相当于unity中的1m 获取起点的世界水平面坐标 获取起点的世界立面坐标 获取终点的世界水平面坐标 获取终点的世界立面坐标 获取起点的世界水平面法线 (世界空间法线会随着物体世界旋转而旋转) 获取起点的世界立面法线 (世界空间法线会随着物体世界旋转而旋转) 获取终点的世界水平面法线 (世界空间法线会随着物体世界旋转而旋转) 获取终点的世界立面法线 (世界空间法线会随着物体世界旋转而旋转) 获取轨迹长度 寻找最近的使用线上单位长度驱动的点位 寻找最近的使用线上单位长度驱动的点位 寻找最近的使用线上未钳制的单位长度驱动的点位 寻找最近的使用线上未钳制的单位长度驱动的点位 获取给定单位长度上的点位 获取给定单位长度上的点位 获取离给定坐标最近的点 获取离给定坐标最近的点 线段渲染 检查此渲染组件是否正常 将渲染器切换到世界空间(拖动对象原点将不会改变渲染位置) 将渲染器切换到本地空间(拖动对象也会改变渲染位置) 设置渲染线段上的一系列点 设置渲染线段上的给定索引的一个点的坐标 适用于需要在对象内额外定义操作步骤的成员。 获取操作步骤序列 用于支持自定义渲染的组件 渲染有效 可序列化的对象后处理 呼叫序列化发生 反序列化前检查标志 可以继续执行返回真,否则为否 呼叫反序列化发生 首先发生的反序列化事件,用于反序列化全局索引,以及一些没有依赖引用关系的参数 滞后的反序列化发生 比如将引用关系放在滞后反序列化中进行构建,此时全局索引已经构建,所以可以不用考虑目标是否还在序列化等问题。 空间维度转换,用于2维轨迹中后续对于坐标矢量的描述 强制获取此实现在三维空间中的坐标 强制获取此实现在地平面中的坐标 强制获取此实现在纵版空间中的坐标 强制设置此实现在三维空间中的坐标 强制设置此实现在地平面中的坐标 强制设置此实现在纵版空间中的坐标 获取此轨迹的点位迭代器,无论如何都会返回包含首尾的点坐标。 注意:这是本地空间 另外有些时候在计算的最后不满两步长的点可能会被省略。 迭代步长,1步长接近于unity中的1m 返回双精浮点的XY值 相对原点,如果当前是世界空间,可以使用此项目进行坐标偏移; 如果当前是本地空间,此项应当为零; 注意:此项主要用于设置坐标偏移,是本地空间 并且它的坐标可能并不是真的是中心点。 获取起点法向 注意:这是模拟空间,世界或本地旋转对此无效 获取终点法向 注意:这是模拟空间,世界或本地旋转对此无效 获取起点坐标 注意:这是模拟空间 获取终点坐标 注意:这是模拟空间 获取轨迹长度 注意:这是模拟空间,世界或本地缩放对此无效 获取给定点在轨迹上的单位长度 注意:这是模拟空间,世界或本地缩放对此无效 轨迹上的坐标 返回的是一个被钳制在0-1之间的值 获取给定点在轨迹上未被钳制的单位长度 注意:这是模拟空间,世界或本地缩放对此无效 获取此轨迹上单位长度上的点坐标,注意这不会进行单位长度钳制 注意:这是模拟空间,世界或本地缩放对此无效 单位长度 获取离给定点最近的点坐标 注意:这是模拟空间,不能与世界空间坐标混用 具有全局唯一标识符的 标识符成员 三维轨迹类接口,实现接口的类可以用于驱动线 二维轨迹类接口,实现接口的类可以用于驱动线 决策者工具,创建一个工具类,来对所有的输入进行决策分离。 说明: 决策者工具是一种通过输入产生操作的代理工具,所有的操作应该通过决策者工具类代为实现。 决策者工具可以在特定的条件下接受来自不同情景的输入(快捷键,或常规操作), 切换这个决策者工具即可完成对一系列操作的情景快速切换, 其中包含一系列操作栈,可以同时操作数个对象。 通常情况下只能有一个决策者工具在线,这将会占用静态名额; 其他启动的决策者工具会关闭当前激活的决策者。 不论工具是否启用,都可以调用updateDMTool(),这会自动路由到所需的工具上。 注意: 工具内异步更新将按顺序执行,这十分缓慢,很可能会因为无法准时完成任务延迟多帧。 异步期间无法访问所有的的运行时参数,需要另外为异步创建所需的备份,注意不要给GC带来过大的压力。 当对象增加时 当对象减少时 所有决策者工具 所有可用的工具数量 获取给定索引下的工具 移除工具 当前激活的决策者工具 当前激活的辅助决策者 决策者更新,这会自动路由到当前激活的决策工具上。 按键状态 第一按键状态 第二按键状态 任何键按下 所有使用的按键,一般来说真的要用的按键并不多,而且并不频繁修改。 按键状态快照 如果直接遍历所有按键,将有2ms的GC,并不高效; 这也是为什么需要先申请一个按键 检查一个按键是否已经存在 请求一个按键处理,以便后续使用 驳回一个按键处理 获取按键状态 获取上一按键状态 获取按键按下时 获取按键释放时 获取按键状态不一致时(按下或释放) 获取任意键状态按下时 第一按键状态 第二按键状态 任何键按下 鼠标状态快照 如果直接遍历所有按键,将有2ms的GC,并不高效; 这也是为什么需要先申请一个按键 获取按键状态 获取按键按下时 获取按键释放时 获取按键状态不一致时(按下或释放) 获取任意键状态按下时 按键包 包装一个按键事件 指代按键 鼠标按键 当前按键是键盘 此按键包监听指定的非鼠标按键 此按键包监听一个指定的鼠标按键 初期化参数,只针对部分特殊临时状态 获取包装按键状态,如果定义了多个按键,则所有按键都按下了才有效 获取包装按键按下,如果定义了多个按键,则任意按键按下了都有效 获取包装按键释放,如果定义了多个按键,则任意按键释放了都有效 获取包装按键差异,如果定义了多个按键,则任意按键发生差异都有效 获取包装按键组合按下,当最后一个按键按下时触发 获取任意按键按下时 获取按下翻页的按键状态 获取释放翻页的按键状态 隐式获取一个按键包的按键 工具开始执行 工具结束执行 工具是否有效 是否启用批处理异步前置更新 注意:这会带来更大的开销 是否启用批处理异步后置更新 注意:这会带来更大的开销 操作栈插槽链表,每个插槽代表一个成员 操作栈插槽列表,这里不用它作为索引依据的原因是因为这是异步的 工具元素父级 工具元素父级有效 开启序列化时的压缩功能 开启后会大大降低占用空间,但会使输出不再具有可读性,并带来一定的性能问题。 默认开启。 创建一个基本操作工具 每个工具中包含一系列的操作栈列,启用工具将直接执行这些操作。 当工具中的操作栈全部结束时,工具将会自动关闭。 监听工具的开始与结束委托来快速跟踪工具状态。 销毁工具 初始化工具父级 工具初始构造时 当决策工具启用时,上一个工具会在此之前调用OnDisableTool并结束 当决策工具停用时 工具更新生命周期 基类必须继承,用以实现栈批处理更新 工具后置更新生命周期 基类必须继承,用以实现栈批处理更新 当工具被标记为辅助并开始执行时 当工具结束辅助工具时 工具后台主要更新 不建议在后台执行按键操作等关键操作,而是应该将主要逻辑放在当前激活的工具上。 工具后台后置更新 不建议在后台执行按键操作等关键操作,而是应该将主要逻辑放在当前激活的工具上。 工具被激活,逻辑递交前台 工具休眠,逻辑递交后台 当工具中的首个操作栈开始使用时 当工具最后一个操作栈结束使用时 基类必须继承,提供必要的结束回调 决策工具启动过程 对于过程来说_enableTool是常量,可以检查,不能写入 决策工具关闭过程 对于过程来说_enableTool是常量,可以检查,不能写入 序列化与反序列化缓冲区 序列化与反序列化缓冲区 只能在工具序列化处理阶段中调用 序列化类型映射集合 序列化类型映射集合 工具序列化处理 在序列化方法中可以使用: SerializeTemp作为序列化的缓冲区; TypeConsignMap作为目标类标识的映射管理; 可以使用 SerializeTemp.Add 来添加新的元素,以将其纳入序列化范围; 并在所有元素添加结束后调用 SerializeTemp.RefreshSerializedContext() 来刷新缓存。 如果不刷新缓存会导致所有序列化的内容清零。 工具反序列化处理 在反序列化方法中可以使用: SerializeTemp作为序列化内容的获取; TypeConsignMap作为目标类标识的映射获取; 如果传入的集合无法进行序列化,返回否 在序列化中添加类型 请在ToolSerializeDispost方法中基类方法之后调用 获取当前反序列化的类型 请在ToolDiserializDispost方法中基类方法之后调用 真则代表当前类型有效 创建一个操作插槽 添加一个现有的操作插槽 嵌入插槽 移除一个操作插槽 用新的插槽替换当前插槽 查找一个对象在哪个节点中 清除所有成员 即刻创建一个用于建造的对象 创建成员的连带功能: * 创建时加入建造队列。 * 名称是自动按照当前的时间序列给定,全局唯一。 创建一个可放置的元素 建造目标的类型 目标名称 重做撤回操作的基类 后端控制台工具,直接接收输入按键并构建为字符串 输入更新时 输入文本缓冲区 获取文本 更新按键输入 清除缓冲区 轨迹跟踪工具 轨迹跟踪可以计算出一个受路径影响的光标,用于路径上吸附。 注意:这是一个后台工具,不需要置于前台 设定追踪器检查范围 跟踪目标坐标(这默认是小型占位模式) 跟踪目标(这默认是小型占位模式) 目标索引 所有期望获取的通讯目标 世界光标位置 持续获取追踪目标的结构 类型 有效的距离 最近的距离 最近的位置 最近的物体 创建追踪目标权重对 开始计算 结束计算 直接计算过程 根据当前的模式类型计算过程 清空 获取光标在当前网格中的最近的邻居。 结果会放在类字段: 吸附坐标:_trackingCurrentPosition 吸附对象: _trackingCurrentTarget 获取追踪计算器 创建一个新的追踪计算器 返回一个追踪计算器,这会和其他计算器同时计算,但返回关注点不同的结果 注意:这会带来额外的性能开销。 移除一个追踪计算器 注意,请注意保留至少一个计算器在工具内,全部删除可能导致获取默认值时抛出异常 摄像机视图下输入辅助,用来提供用户在 摄像机换源委托 新的摄像机 当主要的摄像机发生变更时 鼠标输入更新委托 鼠标落点有效 鼠标在世界中的落点 鼠标输入更新 此控制器输入是否启用 此控制器摄像机换源检查是否有效,如果游戏中需要切换摄像机,那么应该开启检查。 获取当前第一个被标记为有效的摄像机。 (注意:这是惰性属性,获取的是一个本地变量) 光标在世界中命中的坐标 光标在世界中的网格吸附坐标 光标在屏幕上的坐标 命中点有效 鼠标光标在世界中的碰撞检测层 鼠标光标在世界中的最大碰撞距离 鼠标光标在世界中吸附的尺寸 调试移动目标 控制是否在世界中绘制光标射线 控制是否在世界中绘制光标附近的网格 更新主要摄像机,随后可以使用_mainCamera获取引用。 获取鼠标在世界空间中的点 将给定的点吸附到绝对网格 点坐标 网格 替换碰撞结果中的坐标 获取一个矢量吸附在此处定义的网格上的值。 伪造一个射线检测结果 如果不想要进行射线检测,那么在此处提供必要的属性即可创建一个满足要求的射线检测结果。 (注意:潜在的较大开销方法) 命中位置 命中对象 返回命中结果 命中位置的法向 当目标的碰撞检测层不一致时将返回否 建造放置元素的管理器,用于控制元素的渲染生命周期 默认开启了输入控制,可以通过EnableInputHelper字段来设定是否启用。 在没有任何工具启动的情况下,管理器可以接收按键输入,直到被工具输入抢占。 不过这里并没有抢占逻辑,所以请根据工具激活的逻辑适时关闭按键处理 使用前须知: 代理生命周期元素需要通过AddEmbedded加入;同时默认关闭主要的更新过程,需要设置EnableUpdate为true; 允许可放置对象的前置更新 允许可放置对象的主要更新 允许可放置对象的后置更新 线材质 点材质 网格原点 晶格尺寸 网格总尺寸 网格最大邻居数量 全体可放置元素的邻居 可放置物对象的批处理列表 全体结构链表 所有结构链表 输入管理器 此管理器的输入代理控制是否有效 线路追踪工具 将一个成员添加到此处的代理生命周期中 将一个成员从此处的代理生命周期中移除 初始化邻居网格 添加巨大邻居对象 (一个横跨多个网格点的对象称为巨大对象,需要里面包含一个线计算器) 由外部决定如何变换坐标空间(目标,建议步长)返回点位迭代器 移除巨大邻居对象 由外部决定如何变换坐标空间(目标,建议步长)返回点位迭代器 清空此集线器上的所有的索引 添加一个相邻元素,用于后续通过坐标进行查找 移除一个网格元素 移除一个网格元素 代理请求一个按键 代理拒接一个按键 添加可管理对象到此管理器中 加入的成员可以享受序列化与反序列化服务,以及后续的一系列管理方法 将一个可管理对象从此管理器中移除 移除的成员将无法继续享受序列化服务 贝塞尔曲线轨迹计算器 项数 弧形轨迹计算器 长度溢出此范围时,返回为否表示不允许继续绘制 最大弧长计算积分间隔 x坐标 y坐标 x半径 y半径 圆弧起点或反转时的终点 圆弧终点或反转时的起点 是否顺向,表示从a到b的轨迹为顺时针,否则为逆时针 制作切向正圆弧 相对坐标 切线空间 相对坐标 交换绘制方向,用于半圆弧与全圆弧切换 如果条件不满足则返回否 制作切向正圆弧 相对坐标 相对坐标 交换绘制方向,用于半圆弧与全圆弧切换 如果条件不满足则返回否 制作角度约束圆弧(圆弧会自行计算得到一个新的顶点) 局部空间 切线空间 局部空间 交换绘制方向,用于半圆弧与全圆弧切换 制作两法线完全约束圆弧(圆弧参考两个法向的方向进行绘制) 局部空间 切线空间 局部空间 交换绘制方向,用于半圆弧与全圆弧切换 逼近椭圆弧弧长,这是有一定误差的计算方法,具体取决于积分间隔 积分间隔数 获取正圆弧长 半径 起始弧长 结束弧长 顺向控制 获取弧长 如果当前是非正圆弧,需要设定积分逼近细节,建议保持默认 获取给定弧度上的切线斜率与截距 测量弧度 斜率 截距 获取给定弧度上的坐标 单位是弧度 向量的起点与法向 获取给定弧度上的切线向量 单位是弧度 向量的起点与法向 获取给定弧度下的坐标 通过二分法确定一个点在圆弧的位置 通过投影计算一个点在圆弧上的弧度 通过投影计算一个点在圆弧上的位置(最近的位置) 圆弧方向是否顺向,通常在绘制上有顺序之分,顺向表示当前圆弧从点A到点B的顺序是顺时针的 注意:这并不意味着点A和点B的顺序是沿当前表示的顺时针的方向排列的, 把这个圆弧当作正圆弧来获取半径 获取这段圆弧上两个端点形成的角度 获取这段圆弧上两个端点形成的角度 获取正圆圆弧弦长 获取正圆弦高(圆上任意两点间中点垂直到圆弧的距离) 弓形高(圆弧的两点间中点到圆心的距离) 获取椭圆弧弦长 获取椭圆弧弦高 获取椭圆弧弓形的高 直线轨迹计算器 创建直线 创建直线 获取给定坐标点处相当于当前线的单位长度 获取给定点坐标处相当于当前线的未钳制单位长度 基础轨迹类 弧度转角度 角度转弧度 最大可接受的误差 正循环,三角取整 二维叉乘 极坐标空间转单位空间(指的是将(-π, π)范围的取值转为(0, 1)) 极坐标空间 此操作不会破坏空间连续性 单位空间转极坐标空间(指的是将(0, 1)范围的取值转为(-π, π)) 单位极坐标空间 从两线获取相交点(矩阵思想) 获取两线是否相交(矢量变换思想) 线1起点 线1终点 线2起点 线2终点 输出交点 占用区域,描述一个物体的占用范围,并根据规则遍历这个范围。 关注的占位符类型 小型占位符元素,只占用单个检索网格数据结构 (占用原点) 大型占位符元素,占用一块矩形的地块 (占用矩形范围) 路径占位符元素,使用其中的轨迹占用检索数据结构 (占用轨迹) 异型占位符元素,是其他没有约定的形状。 (使用其他特殊形状) 退出状态,等待所有项目异步执行完毕后退出操作栈 稳定状态 在放置对象时进行按键等待,左键下一步,右键上一步 这是一个模拟双稳态的行为节点, 通过初始化其中上一步和下一步将要执行的节点目标 获取退出的方法 下面捕获的值是有效的 鼠标在场景中的坐标值是有效的 在用户输入下一步时,鼠标在世界的坐标 在用户输入下一步时,鼠标在屏幕上的坐标 下面捕获的值是有效的 鼠标在场景中的坐标值是有效的 在用户输入下一步时,鼠标在世界的坐标 在用户输入下一步时,鼠标在屏幕上的坐标 初始化等待用户输入行为节点的双稳态目标 下一步节点目标 上一步节点目标 将鼠标的坐标捕获到本地 取消按键检查 按下继续的按钮 跳转到上一步 跳转到下一步 操作栈插槽,对应一个需要被工具控制的对象,以及控制它的一系列事件,属性。 操作栈是一个操作行为树,其中遍布插槽,插槽中包含具体行为,并定义了状态转换的过程。 操作栈(行为树) -> 操作插槽 -> 行为 -> 状态切换 你可以通过在工具类上调用GenerateOperateSlot来创建一个指定类的插槽, 切换状态时可以直接new一个新的派生自OperateSlot的类,通过ReplaceThis来切换状态,而不会改变其中的目标成员。 默认的空操作结构 当前所处的工具类,应当保持引用,当抛弃引用时,说明此插槽已被废弃。 按栈结构顺序的下一个操作栈插槽 按栈结构顺序的上一个操作栈插槽 当前栈表运行到此的路径结构,只有当执行了替换时才会发放值 按时间顺序在此之前的一个栈节点 当前栈节点是否存在时间上的上一个节点 操作目标对象 用新的插槽替换此处的成员,表示此成员切换了状态 移除自己 更新 在这里进行主要的逻辑切换,使用ReplaceThis(newSlot)来切换流程; 注意不要进行复杂的操作,减少日志打印的调用。 开始时 结束时 异步更新前同步更新 异步更新 异步更新后同步更新 全局唯一标识符 可以用于数组标识,其中的id在运行期间不会改变。 如果要移除对象,记得先使用Invalidation无效化索引。 全局唯一计数器,计数器只包含有效的成员数量,不包括虽然存在,但已被回收的成员 回收id,虽然存在,但是不算在全局的id计数中 已经存在的ID 检查一个id是否已经存在,时间复杂度接近O(1) 尝试获取给定的id的引用 标识符ID 标识符有效 映射对象 标识符状态 被标记的伪装,或从反序列化得来,这是默认值 正常的标识符状态 标识符正常状态 映射关系正常 创建全局唯一标识符 直接创建一个标识符 无效化索引,表示此标识符不再使用,等待回收 id是有效的(索引正常,且映射正常) 与ToString对应,可以将一个包含基本标识符的目标转为标识符 隐式获取标识符索引 群组链接 线性链接 链接成员链表 连接成员迭代器 组链接映射器 目标 类型 构建一个组链接映射器 线性链接 链接成员 将一个成员直接替换到目标上 链路扩展 从别人的结构中找到自己 目标 自己 别人眼中的自己 在给定的节点上遍历首个节点,直到结束。 注意:遍历是有限的,你不能无限遍历一个循环链路, 线路的遍历应该抽象给行为树,由行为树节点在有限的空间中进行遍历。 遍历的第一个节点是传入的节点 在给定的节点上遍历链路,这是一种辅助遍历的方法 遍历的行为需要在循环体内定义,需要对每次循环提供的回调器设定下一步的目标。 如果没有设定目标,或目标未变更,那么再次遍历时,循环将自动退出。 注意:遍历是有限的,你不能无限遍历一个循环链路, 线路的遍历应该抽象给行为树,由行为树节点在有限的空间中进行遍历。 起点方向 提供一个遍历描述回调,这在阶段中唯一,首个遍历对象是传入节点本身 链路遍历描述回调器 当前目标 定义方向 执行检查 设置下一步的目标 获取当前目标 设定下一步的运行方向 获取下一步的运行方向 设定当前节点阻塞,下一步可以尝试遍历兄弟节点 获取当前遍历节点的历史 获取历史节点计数 链路链接类型 可以与 LinkedPortType 直接相转换 输入 输出 链路的端口类型 可以与 LinkType 直接相转换 输出端口 输入端口 翻转连接状态 翻转接口状态 转换连接状态为接口状态 转换接口状态为连接状态 绘制路径点集 路径点集是一个世界中用于参考的点的集合。 此路不通 需要大于1段线才可以拟合的路径 路径点迭代器 运行工况枚举 开始时 正在运行 状态呈递 结束 错误 委托代理事件枚举执行器 给定执行流程,在随后的stepRun中被按阶段执行。 可以调用end方法在运行过程中结束事件。 标记为快速执行,在执行完first后立刻执行run 创建一个委托代理,并指定运行时的各项状态 如果没有需要执行或传递的成员,可以返回null 返回一个枚举器,而不是直接定义成枚举器 如果没有需要执行或传递的成员,可以返回null 快速运行,可能会破坏原有的执行顺序 单步执行 如果执行完毕,返回为否 结束执行,需要等到下次执行时才结束 立刻结束执行 操作栈回调 单步设置 单步设置 操作序列器 步骤序列器中包含多个委托构成的步骤,每个步骤都将循环执行, 通过序列器中预设的方法来控制流程方向。 操作步骤序列 当前操作序列正在运行 运行 当前活动的操作步骤 单步运行,如果要开始运行,需要先调用StartRun 如果运行结束或运行无效,返回否 开始运行,接下来允许通过StepRun运行 中止运行,这不会立刻停止运行,而是需要等下下一次单步运行时退出 立刻停止运行,并释放操作栈 添加一个步骤 清空步骤 当前项目的代理序列化器 变换组件序列化结构 顺序反序列化变换组件 序列化索引结构 创建一个序列化结构 校验索引 如果当前的情况需要进一步处理,则返回真(比如没目标,不与其他id冲突时) 顺序反序列化索引 序列化线性链接 创建一个序列化结构 顺序反序列化线性链接结构 序列化组链接 创建一个序列化结构 顺序反序列化组链接 序列化直线轨迹 创建一个序列化结构 顺序反序列化直线轨迹 序列化圆弧轨迹 创建一个序列化结构 顺序反序列化圆弧轨迹 废除返工(撤销重做)的接口; 废除返工不需要被特定的成员实现,应该由控制器代理完成。 废除操作; 当建造时,这里应该是“销毁”,当从0移动到1时,这里应该是移动到0 返工操作; 当撤回建造时,这里应该是 当一个废除返工操作因为超出栈而被移除时 撤销重做管理器 重做撤回调用栈