mirror of
https://github.com/motajs/template.git
synced 2026-04-12 15:11:10 +08:00
feat: 动画系统激励源 & refactor: 部分接口变动
This commit is contained in:
parent
5d6f40a469
commit
feb6abb5bb
@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@user/client-modules",
|
"name": "@user/client-modules",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@motajs/animate": "workspace:*",
|
||||||
"@motajs/client-base": "workspace:*",
|
"@motajs/client-base": "workspace:*",
|
||||||
"@motajs/common": "workspace:*",
|
"@motajs/common": "workspace:*",
|
||||||
"@motajs/render": "workspace:*",
|
"@motajs/render": "workspace:*",
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import {
|
|||||||
IBlockSplitter,
|
IBlockSplitter,
|
||||||
IBlockSplitterConfig
|
IBlockSplitterConfig
|
||||||
} from './types';
|
} from './types';
|
||||||
|
import { ISearchable8Dir } from '@motajs/common';
|
||||||
|
|
||||||
export class BlockSplitter<T> implements IBlockSplitter<T> {
|
export class BlockSplitter<T> implements IBlockSplitter<T> {
|
||||||
blockWidth: number = 0;
|
blockWidth: number = 0;
|
||||||
@ -288,7 +289,7 @@ export class BlockSplitter<T> implements IBlockSplitter<T> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class SplittedBlockData<T> implements IBlockData<T> {
|
class SplittedBlockData<T> implements IBlockData<T>, ISearchable8Dir {
|
||||||
width: number;
|
width: number;
|
||||||
height: number;
|
height: number;
|
||||||
x: number;
|
x: number;
|
||||||
|
|||||||
@ -0,0 +1,323 @@
|
|||||||
|
import { logger } from '@motajs/common';
|
||||||
|
import {
|
||||||
|
IExcitation,
|
||||||
|
IExcitable,
|
||||||
|
IExcitableController,
|
||||||
|
IExcitationVariator,
|
||||||
|
ExcitationCurve,
|
||||||
|
VariatorCurveMode
|
||||||
|
} from './types';
|
||||||
|
import { excited } from './utils';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* IExcitation 抽象基类,管理受激励对象的注册、激励与移除。
|
||||||
|
* 便于拓展不同类型的激励源。
|
||||||
|
*/
|
||||||
|
export abstract class ExcitationBase<T> implements IExcitation<T> {
|
||||||
|
protected readonly excitables: Set<IExcitable<T>> = new Set();
|
||||||
|
protected destroyed: boolean = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当前激励负载,由子类实现
|
||||||
|
*/
|
||||||
|
abstract payload(): T;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 激励所有受激励对象
|
||||||
|
*/
|
||||||
|
excite(payload: T): void {
|
||||||
|
this.excitables.forEach(ex => ex.excited(payload));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加受激励对象
|
||||||
|
*/
|
||||||
|
add(object: IExcitable<T>): IExcitableController<T> | null {
|
||||||
|
if (this.destroyed) {
|
||||||
|
logger.error(48, 'add');
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
this.excitables.add(object);
|
||||||
|
const controller: IExcitableController<T> = {
|
||||||
|
excitable: object,
|
||||||
|
revoke: () => this.remove(object),
|
||||||
|
excite: (payload: T) => object.excited(payload)
|
||||||
|
};
|
||||||
|
return controller;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 移除受激励对象
|
||||||
|
*/
|
||||||
|
remove(object: IExcitable<T>): boolean {
|
||||||
|
if (this.destroyed) {
|
||||||
|
logger.error(48, 'remove');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return this.excitables.delete(object);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 摧毁激励源,清理所有引用
|
||||||
|
*/
|
||||||
|
destroy(): void {
|
||||||
|
this.destroyed = true;
|
||||||
|
this.excitables.clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 基于 requestAnimationFrame 的激励源
|
||||||
|
* 每帧激励所有对象,payload 为当前时间戳
|
||||||
|
*/
|
||||||
|
export class RafExcitation extends ExcitationBase<number> {
|
||||||
|
private rafId: number = -1;
|
||||||
|
private now: number = 0;
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
this.tick = this.tick.bind(this);
|
||||||
|
this.rafId = requestAnimationFrame(this.tick);
|
||||||
|
}
|
||||||
|
|
||||||
|
payload(): number {
|
||||||
|
return this.now;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 每帧对所有激励源激励一次
|
||||||
|
* @param ts 当前时间戳
|
||||||
|
*/
|
||||||
|
private tick(ts: number) {
|
||||||
|
this.now = ts;
|
||||||
|
this.excite(ts);
|
||||||
|
if (!this.destroyed) {
|
||||||
|
this.rafId = requestAnimationFrame(this.tick);
|
||||||
|
} else {
|
||||||
|
this.rafId = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override destroy(): void {
|
||||||
|
if (this.rafId !== -1) {
|
||||||
|
cancelAnimationFrame(this.rafId);
|
||||||
|
this.rafId = -1;
|
||||||
|
}
|
||||||
|
super.destroy();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
interface CurveQueue {
|
||||||
|
/** 速率曲线 */
|
||||||
|
curve: ExcitationCurve;
|
||||||
|
/** 变速持续时间 */
|
||||||
|
time: number;
|
||||||
|
/** 变速参考模式 */
|
||||||
|
mode: VariatorCurveMode;
|
||||||
|
/** 兑现 Promise */
|
||||||
|
resolve: () => void;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface CurrentCurve {
|
||||||
|
/** 当前速率曲线 */
|
||||||
|
curve: ExcitationCurve;
|
||||||
|
/** 变速时长 */
|
||||||
|
time: number;
|
||||||
|
/** 变速参考模式 */
|
||||||
|
mode: VariatorCurveMode;
|
||||||
|
/** 起始时间戳 */
|
||||||
|
startTs: number;
|
||||||
|
/** 兑现 Promise */
|
||||||
|
resolve: () => void;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 激励源变速器
|
||||||
|
* 可对 payload 为 number 的激励源进行变速处理
|
||||||
|
*/
|
||||||
|
export class ExcitationVariator
|
||||||
|
extends ExcitationBase<number>
|
||||||
|
implements IExcitationVariator
|
||||||
|
{
|
||||||
|
/** 当前绑定的激励源 */
|
||||||
|
source: IExcitation<number> | null = null;
|
||||||
|
/** 当前速度 */
|
||||||
|
speed: number = 1;
|
||||||
|
|
||||||
|
/** 在源中添加的被激励对象的控制器 */
|
||||||
|
private sourceController: IExcitableController<number> | null = null;
|
||||||
|
|
||||||
|
/** 上一次变速时源的参考时间戳 */
|
||||||
|
private sourceTs: number = 0;
|
||||||
|
/** 上一次变速时自身的参考时间戳 */
|
||||||
|
private selfTs: number = 0;
|
||||||
|
/** 当前自身时间戳 */
|
||||||
|
private now: number = 0;
|
||||||
|
|
||||||
|
/** 曲线队列 */
|
||||||
|
private curveQueue: CurveQueue[] = [];
|
||||||
|
/** 当前执行的曲线 */
|
||||||
|
private currentCurve: CurrentCurve | null = null;
|
||||||
|
|
||||||
|
payload(): number {
|
||||||
|
return this.now;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理源的激励,更新自身时间戳并处理曲线逻辑
|
||||||
|
*/
|
||||||
|
excite(payload: number): void {
|
||||||
|
if (!this.source) return;
|
||||||
|
|
||||||
|
// 计算新的自身时间戳
|
||||||
|
const newSelfTs = this.selfTs + (payload - this.sourceTs) * this.speed;
|
||||||
|
this.now = newSelfTs;
|
||||||
|
|
||||||
|
// 处理曲线执行
|
||||||
|
if (this.currentCurve) {
|
||||||
|
// 根据模式计算完成度所用的时间戳
|
||||||
|
const referenceTs =
|
||||||
|
this.currentCurve.mode === VariatorCurveMode.SourceRelated
|
||||||
|
? payload
|
||||||
|
: newSelfTs;
|
||||||
|
const elapsed = referenceTs - this.currentCurve.startTs;
|
||||||
|
|
||||||
|
if (elapsed >= this.currentCurve.time) {
|
||||||
|
// 曲线完成,使用 curve(1) 作为最终速率值
|
||||||
|
this.setSpeed(this.currentCurve.curve(1));
|
||||||
|
this.currentCurve.resolve();
|
||||||
|
|
||||||
|
this.currentCurve = null;
|
||||||
|
|
||||||
|
// 执行下一个曲线
|
||||||
|
if (this.curveQueue.length > 0) {
|
||||||
|
this.startNextCurve();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 曲线进行中,更新速度
|
||||||
|
const progress = elapsed / this.currentCurve.time;
|
||||||
|
this.setSpeed(this.currentCurve.curve(progress));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 激励所有受激励对象
|
||||||
|
this.excitables.forEach(ex => ex.excited(newSelfTs));
|
||||||
|
}
|
||||||
|
|
||||||
|
bindExcitation(excitation: IExcitation<number>): void {
|
||||||
|
// 如果已绑定不同的源,先解绑
|
||||||
|
if (this.source !== null && this.source !== excitation) {
|
||||||
|
this.unbindExcitation();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.source === excitation) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.source = excitation;
|
||||||
|
this.sourceTs = excitation.payload();
|
||||||
|
this.selfTs = this.sourceTs;
|
||||||
|
this.speed = 1;
|
||||||
|
|
||||||
|
// 创建内部激励对象,将源的激励转发给自身
|
||||||
|
const internalExcitable: IExcitable<number> = excited(payload => {
|
||||||
|
this.excite(payload);
|
||||||
|
});
|
||||||
|
|
||||||
|
this.sourceController = excitation.add(internalExcitable);
|
||||||
|
}
|
||||||
|
|
||||||
|
unbindExcitation(): void {
|
||||||
|
if (this.source === null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 取消在源上的绑定
|
||||||
|
if (this.sourceController !== null) {
|
||||||
|
this.sourceController.revoke();
|
||||||
|
this.sourceController = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 取消曲线执行
|
||||||
|
this.endAllCurves();
|
||||||
|
|
||||||
|
// 重置状态
|
||||||
|
this.source = null;
|
||||||
|
this.speed = 1;
|
||||||
|
this.sourceTs = 0;
|
||||||
|
this.selfTs = 0;
|
||||||
|
this.now = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
setSpeed(speed: number): void {
|
||||||
|
if (this.source === null) {
|
||||||
|
logger.error(49, 'set speed');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新参考时间戳
|
||||||
|
this.sourceTs = this.source.payload();
|
||||||
|
this.selfTs = this.now;
|
||||||
|
this.speed = speed;
|
||||||
|
}
|
||||||
|
|
||||||
|
curveSpeed(
|
||||||
|
curve: ExcitationCurve,
|
||||||
|
time: number,
|
||||||
|
mode: VariatorCurveMode = VariatorCurveMode.SourceRelated
|
||||||
|
): Promise<void> {
|
||||||
|
if (this.source === null) {
|
||||||
|
logger.error(49, 'curve speed');
|
||||||
|
return Promise.resolve();
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Promise<void>(resolve => {
|
||||||
|
this.curveQueue.push({ curve, time, mode, resolve });
|
||||||
|
|
||||||
|
// 如果没有正在执行的曲线,立即开始
|
||||||
|
if (this.currentCurve === null) {
|
||||||
|
this.startNextCurve();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private startNextCurve(): void {
|
||||||
|
if (this.curveQueue.length === 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const item = this.curveQueue.shift()!;
|
||||||
|
|
||||||
|
// 记录起始时间戳
|
||||||
|
const startTs =
|
||||||
|
item.mode === VariatorCurveMode.SourceRelated
|
||||||
|
? this.source!.payload()
|
||||||
|
: this.now;
|
||||||
|
|
||||||
|
this.currentCurve = {
|
||||||
|
...item,
|
||||||
|
startTs
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
endAllCurves(): void {
|
||||||
|
if (!this.currentCurve) return;
|
||||||
|
|
||||||
|
if (this.curveQueue.length > 0) {
|
||||||
|
const last = this.curveQueue.at(-1)!;
|
||||||
|
const speed = last.curve(1);
|
||||||
|
this.setSpeed(speed);
|
||||||
|
this.curveQueue = [];
|
||||||
|
this.currentCurve = null;
|
||||||
|
} else {
|
||||||
|
const speed = this.currentCurve.curve(1);
|
||||||
|
this.setSpeed(speed);
|
||||||
|
this.currentCurve = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override destroy(): void {
|
||||||
|
this.unbindExcitation();
|
||||||
|
super.destroy();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1 +1,3 @@
|
|||||||
|
export * from './excitation';
|
||||||
export * from './types';
|
export * from './types';
|
||||||
|
export * from './utils';
|
||||||
|
|||||||
@ -1,3 +1,24 @@
|
|||||||
|
/**
|
||||||
|
* 动画速率曲线,输入时间完成度,输出一个值,时间完成度范围在 `0-1` 之间,而输出值没有范围限制。
|
||||||
|
* 在不同场景下,速率曲线返回值的含义可能不同,有的可能表示动画完成度,有的可能表示绝对的坐标值。
|
||||||
|
*/
|
||||||
|
export type ExcitationCurve = (progress: number) => number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 二维动画速率曲线,输入时间完成度,输出两个值。可由两个一维曲线组合而成(本质是参数方程)
|
||||||
|
*/
|
||||||
|
export type ExcitationCurve2D = (progress: number) => [number, number];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 三维动画速率曲线,输入时间完成度,输出三个值。可由三个一维曲线组合而成(本质是参数方程)
|
||||||
|
*/
|
||||||
|
export type ExcitationCurve3D = (progress: number) => [number, number, number];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* `n` 维动画速率曲线,输入时间完成度,输出三个值。可由 `n` 个一维曲线组合而成(本质是参数方程)
|
||||||
|
*/
|
||||||
|
export type GeneralExcitationCurve = (progress: number) => number[];
|
||||||
|
|
||||||
export interface IExcitable<T> {
|
export interface IExcitable<T> {
|
||||||
/**
|
/**
|
||||||
* 受到激励源激励
|
* 受到激励源激励
|
||||||
@ -39,7 +60,7 @@ export interface IExcitation<T> {
|
|||||||
* @param object 受激励对象
|
* @param object 受激励对象
|
||||||
* @returns 受激励对象控制器
|
* @returns 受激励对象控制器
|
||||||
*/
|
*/
|
||||||
add(object: IExcitable<T>): IExcitableController<T>;
|
add(object: IExcitable<T>): IExcitableController<T> | null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 移除一个受激励对象
|
* 移除一个受激励对象
|
||||||
@ -53,3 +74,56 @@ export interface IExcitation<T> {
|
|||||||
*/
|
*/
|
||||||
destroy(): void;
|
destroy(): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const enum VariatorCurveMode {
|
||||||
|
/**
|
||||||
|
* 时间相对于激励源,不受变速器当前速度影响
|
||||||
|
*/
|
||||||
|
SourceRelated,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 时间相对于变速器本身,当变速器本身的速度变慢时,速率曲线的运行速度也变慢
|
||||||
|
*/
|
||||||
|
SelfRelated
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface IExcitationVariator extends IExcitation<number> {
|
||||||
|
/** 变速器当前的速度值 */
|
||||||
|
readonly speed: number;
|
||||||
|
/** 当前绑定的激励源 */
|
||||||
|
readonly source: IExcitation<number> | null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 绑定激励源对象,变速器将以此激励源为基础实施变速
|
||||||
|
* @param excitation 绑定的激励源
|
||||||
|
*/
|
||||||
|
bindExcitation(excitation: IExcitation<number>): void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 取消绑定当前的激励源
|
||||||
|
*/
|
||||||
|
unbindExcitation(): void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改激励速度
|
||||||
|
* @param speed 激励速度,值表示当前速度与原速度的比值,1 为原速
|
||||||
|
*/
|
||||||
|
setSpeed(speed: number): void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 使用速率曲线来修改激励速度,当有速率曲线在执行时,调用此函数将会加入队列,当上一个曲线结束后立刻执行
|
||||||
|
* @param curve 速率曲线
|
||||||
|
* @param time 速率曲线实施时间
|
||||||
|
* @param mode 速率曲线实施模式
|
||||||
|
*/
|
||||||
|
curveSpeed(
|
||||||
|
curve: ExcitationCurve,
|
||||||
|
time: number,
|
||||||
|
mode?: VariatorCurveMode
|
||||||
|
): Promise<void>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 终止当前所有速率曲线的执行,最终速度为队列中最后一个曲线的终止速度
|
||||||
|
*/
|
||||||
|
endAllCurves(): void;
|
||||||
|
}
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
|
export * from './utils';
|
||||||
|
|
||||||
export * from './dirtyTracker';
|
export * from './dirtyTracker';
|
||||||
export * from './hook';
|
export * from './hook';
|
||||||
export * from './logger';
|
export * from './logger';
|
||||||
export * from './utils';
|
|
||||||
export * from './types';
|
export * from './types';
|
||||||
|
|||||||
@ -47,6 +47,8 @@
|
|||||||
"45": "Cannot add $1 map renderer extension, since $1 already exists for the given state.",
|
"45": "Cannot add $1 map renderer extension, since $1 already exists for the given state.",
|
||||||
"46": "Cannot execute close door action on $1,$2, since the given position is not empty.",
|
"46": "Cannot execute close door action on $1,$2, since the given position is not empty.",
|
||||||
"47": "Cannot require text area outside the target map.",
|
"47": "Cannot require text area outside the target map.",
|
||||||
|
"48": "Cannot $1 excitables on destroyed excitation.",
|
||||||
|
"49": "Cannot $1 on variator without excitation binding.",
|
||||||
"1201": "Floor-damage extension needs 'floor-binder' extension as dependency."
|
"1201": "Floor-damage extension needs 'floor-binder' extension as dependency."
|
||||||
},
|
},
|
||||||
"warn": {
|
"warn": {
|
||||||
|
|||||||
2
packages/common/src/utils/index.ts
Normal file
2
packages/common/src/utils/index.ts
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
export * from './func';
|
||||||
|
export * from './types';
|
||||||
29
packages/common/src/utils/types.ts
Normal file
29
packages/common/src/utils/types.ts
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
export interface ISearchable4Dir {
|
||||||
|
/** 获取上侧元素 */
|
||||||
|
up(): ISearchable4Dir | null;
|
||||||
|
/** 获取下侧元素 */
|
||||||
|
down(): ISearchable4Dir | null;
|
||||||
|
/** 获取左侧元素 */
|
||||||
|
left(): ISearchable4Dir | null;
|
||||||
|
/** 获取右侧元素 */
|
||||||
|
right(): ISearchable4Dir | null;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ISearchable8Dir {
|
||||||
|
/** 获取上侧元素 */
|
||||||
|
up(): ISearchable8Dir | null;
|
||||||
|
/** 获取下侧元素 */
|
||||||
|
down(): ISearchable8Dir | null;
|
||||||
|
/** 获取左侧元素 */
|
||||||
|
left(): ISearchable8Dir | null;
|
||||||
|
/** 获取右侧元素 */
|
||||||
|
right(): ISearchable8Dir | null;
|
||||||
|
/** 获取左上元素 */
|
||||||
|
leftUp(): ISearchable8Dir | null;
|
||||||
|
/** 获取右上元素 */
|
||||||
|
rightUp(): ISearchable8Dir | null;
|
||||||
|
/** 获取左下元素 */
|
||||||
|
leftDown(): ISearchable8Dir | null;
|
||||||
|
/** 获取右下元素 */
|
||||||
|
rightDown(): ISearchable8Dir | null;
|
||||||
|
}
|
||||||
@ -1,41 +1,3 @@
|
|||||||
{
|
{
|
||||||
"name": "@motajs/render",
|
"name": "@motajs/render"
|
||||||
"version": "0.1.0",
|
|
||||||
"main": "dist/render.cjs.js",
|
|
||||||
"module": "dist/render.es.js",
|
|
||||||
"types": "dist/render.es.d.ts",
|
|
||||||
"keywords": [
|
|
||||||
"render",
|
|
||||||
"game",
|
|
||||||
"vue",
|
|
||||||
"graphics"
|
|
||||||
],
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/motajs/motajs-engine"
|
|
||||||
},
|
|
||||||
"author": {
|
|
||||||
"name": "AncTe",
|
|
||||||
"email": "1319491857@qq.com"
|
|
||||||
},
|
|
||||||
"exports": {
|
|
||||||
".": {
|
|
||||||
"import": "./dist/render.es.js",
|
|
||||||
"require": "./dist/render.cjs.js",
|
|
||||||
"types": "./dist/render.es.d.ts"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"files": [
|
|
||||||
"dist"
|
|
||||||
],
|
|
||||||
"dependencies": {
|
|
||||||
"eventemitter3": "^5.0.1",
|
|
||||||
"gl-matrix": "^3.4.3",
|
|
||||||
"lodash-es": "^4.17.21",
|
|
||||||
"mutate-animate": "^1.4.2"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"vue": "^3.5.13"
|
|
||||||
},
|
|
||||||
"license": "LGPL-3.0-only"
|
|
||||||
}
|
}
|
||||||
|
|||||||
143
pnpm-lock.yaml
143
pnpm-lock.yaml
@ -228,6 +228,9 @@ importers:
|
|||||||
|
|
||||||
packages-user/client-modules:
|
packages-user/client-modules:
|
||||||
dependencies:
|
dependencies:
|
||||||
|
'@motajs/animate':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../packages/animate
|
||||||
'@motajs/client-base':
|
'@motajs/client-base':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../../packages/client-base
|
version: link:../../packages/client-base
|
||||||
@ -453,23 +456,7 @@ importers:
|
|||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../system
|
version: link:../system
|
||||||
|
|
||||||
packages/render:
|
packages/render: {}
|
||||||
dependencies:
|
|
||||||
eventemitter3:
|
|
||||||
specifier: ^5.0.1
|
|
||||||
version: 5.0.1
|
|
||||||
gl-matrix:
|
|
||||||
specifier: ^3.4.3
|
|
||||||
version: 3.4.4
|
|
||||||
lodash-es:
|
|
||||||
specifier: ^4.17.21
|
|
||||||
version: 4.17.21
|
|
||||||
mutate-animate:
|
|
||||||
specifier: ^1.4.2
|
|
||||||
version: 1.4.2
|
|
||||||
vue:
|
|
||||||
specifier: ^3.5.13
|
|
||||||
version: 3.5.20(typescript@5.9.3)
|
|
||||||
|
|
||||||
packages/render-vue:
|
packages/render-vue:
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -2461,27 +2448,15 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@babel/core': ^7.0.0-0
|
'@babel/core': ^7.0.0-0
|
||||||
|
|
||||||
'@vue/compiler-core@3.5.20':
|
|
||||||
resolution: {integrity: sha512-8TWXUyiqFd3GmP4JTX9hbiTFRwYHgVL/vr3cqhr4YQ258+9FADwvj7golk2sWNGHR67QgmCZ8gz80nQcMokhwg==}
|
|
||||||
|
|
||||||
'@vue/compiler-core@3.5.29':
|
'@vue/compiler-core@3.5.29':
|
||||||
resolution: {integrity: sha512-cuzPhD8fwRHk8IGfmYaR4eEe4cAyJEL66Ove/WZL7yWNL134nqLddSLwNRIsFlnnW1kK+p8Ck3viFnC0chXCXw==}
|
resolution: {integrity: sha512-cuzPhD8fwRHk8IGfmYaR4eEe4cAyJEL66Ove/WZL7yWNL134nqLddSLwNRIsFlnnW1kK+p8Ck3viFnC0chXCXw==}
|
||||||
|
|
||||||
'@vue/compiler-dom@3.5.20':
|
|
||||||
resolution: {integrity: sha512-whB44M59XKjqUEYOMPYU0ijUV0G+4fdrHVKDe32abNdX/kJe1NUEMqsi4cwzXa9kyM9w5S8WqFsrfo1ogtBZGQ==}
|
|
||||||
|
|
||||||
'@vue/compiler-dom@3.5.29':
|
'@vue/compiler-dom@3.5.29':
|
||||||
resolution: {integrity: sha512-n0G5o7R3uBVmVxjTIYcz7ovr8sy7QObFG8OQJ3xGCDNhbG60biP/P5KnyY8NLd81OuT1WJflG7N4KWYHaeeaIg==}
|
resolution: {integrity: sha512-n0G5o7R3uBVmVxjTIYcz7ovr8sy7QObFG8OQJ3xGCDNhbG60biP/P5KnyY8NLd81OuT1WJflG7N4KWYHaeeaIg==}
|
||||||
|
|
||||||
'@vue/compiler-sfc@3.5.20':
|
|
||||||
resolution: {integrity: sha512-SFcxapQc0/feWiSBfkGsa1v4DOrnMAQSYuvDMpEaxbpH5dKbnEM5KobSNSgU+1MbHCl+9ftm7oQWxvwDB6iBfw==}
|
|
||||||
|
|
||||||
'@vue/compiler-sfc@3.5.29':
|
'@vue/compiler-sfc@3.5.29':
|
||||||
resolution: {integrity: sha512-oJZhN5XJs35Gzr50E82jg2cYdZQ78wEwvRO6Y63TvLVTc+6xICzJHP1UIecdSPPYIbkautNBanDiWYa64QSFIA==}
|
resolution: {integrity: sha512-oJZhN5XJs35Gzr50E82jg2cYdZQ78wEwvRO6Y63TvLVTc+6xICzJHP1UIecdSPPYIbkautNBanDiWYa64QSFIA==}
|
||||||
|
|
||||||
'@vue/compiler-ssr@3.5.20':
|
|
||||||
resolution: {integrity: sha512-RSl5XAMc5YFUXpDQi+UQDdVjH9FnEpLDHIALg5J0ITHxkEzJ8uQLlo7CIbjPYqmZtt6w0TsIPbo1izYXwDG7JA==}
|
|
||||||
|
|
||||||
'@vue/compiler-ssr@3.5.29':
|
'@vue/compiler-ssr@3.5.29':
|
||||||
resolution: {integrity: sha512-Y/ARJZE6fpjzL5GH/phJmsFwx3g6t2KmHKHx5q+MLl2kencADKIrhH5MLF6HHpRMmlRAYBRSvv347Mepf1zVNw==}
|
resolution: {integrity: sha512-Y/ARJZE6fpjzL5GH/phJmsFwx3g6t2KmHKHx5q+MLl2kencADKIrhH5MLF6HHpRMmlRAYBRSvv347Mepf1zVNw==}
|
||||||
|
|
||||||
@ -2513,37 +2488,20 @@ packages:
|
|||||||
typescript:
|
typescript:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@vue/reactivity@3.5.20':
|
|
||||||
resolution: {integrity: sha512-hS8l8x4cl1fmZpSQX/NXlqWKARqEsNmfkwOIYqtR2F616NGfsLUm0G6FQBK6uDKUCVyi1YOL8Xmt/RkZcd/jYQ==}
|
|
||||||
|
|
||||||
'@vue/reactivity@3.5.29':
|
'@vue/reactivity@3.5.29':
|
||||||
resolution: {integrity: sha512-zcrANcrRdcLtmGZETBxWqIkoQei8HaFpZWx/GHKxx79JZsiZ8j1du0VUJtu4eJjgFvU/iKL5lRXFXksVmI+5DA==}
|
resolution: {integrity: sha512-zcrANcrRdcLtmGZETBxWqIkoQei8HaFpZWx/GHKxx79JZsiZ8j1du0VUJtu4eJjgFvU/iKL5lRXFXksVmI+5DA==}
|
||||||
|
|
||||||
'@vue/runtime-core@3.5.20':
|
|
||||||
resolution: {integrity: sha512-vyQRiH5uSZlOa+4I/t4Qw/SsD/gbth0SW2J7oMeVlMFMAmsG1rwDD6ok0VMmjXY3eI0iHNSSOBilEDW98PLRKw==}
|
|
||||||
|
|
||||||
'@vue/runtime-core@3.5.29':
|
'@vue/runtime-core@3.5.29':
|
||||||
resolution: {integrity: sha512-8DpW2QfdwIWOLqtsNcds4s+QgwSaHSJY/SUe04LptianUQ/0xi6KVsu/pYVh+HO3NTVvVJjIPL2t6GdeKbS4Lg==}
|
resolution: {integrity: sha512-8DpW2QfdwIWOLqtsNcds4s+QgwSaHSJY/SUe04LptianUQ/0xi6KVsu/pYVh+HO3NTVvVJjIPL2t6GdeKbS4Lg==}
|
||||||
|
|
||||||
'@vue/runtime-dom@3.5.20':
|
|
||||||
resolution: {integrity: sha512-KBHzPld/Djw3im0CQ7tGCpgRedryIn4CcAl047EhFTCCPT2xFf4e8j6WeKLgEEoqPSl9TYqShc3Q6tpWpz/Xgw==}
|
|
||||||
|
|
||||||
'@vue/runtime-dom@3.5.29':
|
'@vue/runtime-dom@3.5.29':
|
||||||
resolution: {integrity: sha512-AHvvJEtcY9tw/uk+s/YRLSlxxQnqnAkjqvK25ZiM4CllCZWzElRAoQnCM42m9AHRLNJ6oe2kC5DCgD4AUdlvXg==}
|
resolution: {integrity: sha512-AHvvJEtcY9tw/uk+s/YRLSlxxQnqnAkjqvK25ZiM4CllCZWzElRAoQnCM42m9AHRLNJ6oe2kC5DCgD4AUdlvXg==}
|
||||||
|
|
||||||
'@vue/server-renderer@3.5.20':
|
|
||||||
resolution: {integrity: sha512-HthAS0lZJDH21HFJBVNTtx+ULcIbJQRpjSVomVjfyPkFSpCwvsPTA+jIzOaUm3Hrqx36ozBHePztQFg6pj5aKg==}
|
|
||||||
peerDependencies:
|
|
||||||
vue: 3.5.20
|
|
||||||
|
|
||||||
'@vue/server-renderer@3.5.29':
|
'@vue/server-renderer@3.5.29':
|
||||||
resolution: {integrity: sha512-G/1k6WK5MusLlbxSE2YTcqAAezS+VuwHhOvLx2KnQU7G2zCH6KIb+5Wyt6UjMq7a3qPzNEjJXs1hvAxDclQH+g==}
|
resolution: {integrity: sha512-G/1k6WK5MusLlbxSE2YTcqAAezS+VuwHhOvLx2KnQU7G2zCH6KIb+5Wyt6UjMq7a3qPzNEjJXs1hvAxDclQH+g==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
vue: 3.5.29
|
vue: 3.5.29
|
||||||
|
|
||||||
'@vue/shared@3.5.20':
|
|
||||||
resolution: {integrity: sha512-SoRGP596KU/ig6TfgkCMbXkr4YJ91n/QSdMuqeP5r3hVIYA3CPHUBCc7Skak0EAKV+5lL4KyIh61VA/pK1CIAA==}
|
|
||||||
|
|
||||||
'@vue/shared@3.5.29':
|
'@vue/shared@3.5.29':
|
||||||
resolution: {integrity: sha512-w7SR0A5zyRByL9XUkCfdLs7t9XOHUyJ67qPGQjOou3p6GvBeBW+AVjUUmlxtZ4PIYaRvE+1LmK44O4uajlZwcg==}
|
resolution: {integrity: sha512-w7SR0A5zyRByL9XUkCfdLs7t9XOHUyJ67qPGQjOou3p6GvBeBW+AVjUUmlxtZ4PIYaRvE+1LmK44O4uajlZwcg==}
|
||||||
|
|
||||||
@ -3213,9 +3171,6 @@ packages:
|
|||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
csstype@3.1.3:
|
|
||||||
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
|
|
||||||
|
|
||||||
csstype@3.2.3:
|
csstype@3.2.3:
|
||||||
resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
|
resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
|
||||||
|
|
||||||
@ -3567,10 +3522,6 @@ packages:
|
|||||||
entities@2.2.0:
|
entities@2.2.0:
|
||||||
resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==}
|
resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==}
|
||||||
|
|
||||||
entities@4.5.0:
|
|
||||||
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
|
|
||||||
engines: {node: '>=0.12'}
|
|
||||||
|
|
||||||
entities@7.0.1:
|
entities@7.0.1:
|
||||||
resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==}
|
resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==}
|
||||||
engines: {node: '>=0.12'}
|
engines: {node: '>=0.12'}
|
||||||
@ -3754,9 +3705,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
|
resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
|
|
||||||
eventemitter3@5.0.1:
|
|
||||||
resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
|
|
||||||
|
|
||||||
eventemitter3@5.0.4:
|
eventemitter3@5.0.4:
|
||||||
resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==}
|
resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==}
|
||||||
|
|
||||||
@ -4476,9 +4424,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
|
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
|
|
||||||
lodash-es@4.17.21:
|
|
||||||
resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
|
|
||||||
|
|
||||||
lodash-es@4.17.23:
|
lodash-es@4.17.23:
|
||||||
resolution: {integrity: sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==}
|
resolution: {integrity: sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==}
|
||||||
|
|
||||||
@ -6074,14 +6019,6 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
vue: ^3.0.0
|
vue: ^3.0.0
|
||||||
|
|
||||||
vue@3.5.20:
|
|
||||||
resolution: {integrity: sha512-2sBz0x/wis5TkF1XZ2vH25zWq3G1bFEPOfkBcx2ikowmphoQsPH6X0V3mmPCXA2K1N/XGTnifVyDQP4GfDDeQw==}
|
|
||||||
peerDependencies:
|
|
||||||
typescript: '*'
|
|
||||||
peerDependenciesMeta:
|
|
||||||
typescript:
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
vue@3.5.29:
|
vue@3.5.29:
|
||||||
resolution: {integrity: sha512-BZqN4Ze6mDQVNAni0IHeMJ5mwr8VAJ3MQC9FmprRhcBYENw+wOAAjRj8jfmN6FLl0j96OXbR+CjWhmAmM+QGnA==}
|
resolution: {integrity: sha512-BZqN4Ze6mDQVNAni0IHeMJ5mwr8VAJ3MQC9FmprRhcBYENw+wOAAjRj8jfmN6FLl0j96OXbR+CjWhmAmM+QGnA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@ -8330,14 +8267,6 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@vue/compiler-core@3.5.20':
|
|
||||||
dependencies:
|
|
||||||
'@babel/parser': 7.29.0
|
|
||||||
'@vue/shared': 3.5.20
|
|
||||||
entities: 4.5.0
|
|
||||||
estree-walker: 2.0.2
|
|
||||||
source-map-js: 1.2.1
|
|
||||||
|
|
||||||
'@vue/compiler-core@3.5.29':
|
'@vue/compiler-core@3.5.29':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/parser': 7.29.0
|
'@babel/parser': 7.29.0
|
||||||
@ -8346,28 +8275,11 @@ snapshots:
|
|||||||
estree-walker: 2.0.2
|
estree-walker: 2.0.2
|
||||||
source-map-js: 1.2.1
|
source-map-js: 1.2.1
|
||||||
|
|
||||||
'@vue/compiler-dom@3.5.20':
|
|
||||||
dependencies:
|
|
||||||
'@vue/compiler-core': 3.5.20
|
|
||||||
'@vue/shared': 3.5.20
|
|
||||||
|
|
||||||
'@vue/compiler-dom@3.5.29':
|
'@vue/compiler-dom@3.5.29':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vue/compiler-core': 3.5.29
|
'@vue/compiler-core': 3.5.29
|
||||||
'@vue/shared': 3.5.29
|
'@vue/shared': 3.5.29
|
||||||
|
|
||||||
'@vue/compiler-sfc@3.5.20':
|
|
||||||
dependencies:
|
|
||||||
'@babel/parser': 7.29.0
|
|
||||||
'@vue/compiler-core': 3.5.20
|
|
||||||
'@vue/compiler-dom': 3.5.20
|
|
||||||
'@vue/compiler-ssr': 3.5.20
|
|
||||||
'@vue/shared': 3.5.20
|
|
||||||
estree-walker: 2.0.2
|
|
||||||
magic-string: 0.30.21
|
|
||||||
postcss: 8.5.8
|
|
||||||
source-map-js: 1.2.1
|
|
||||||
|
|
||||||
'@vue/compiler-sfc@3.5.29':
|
'@vue/compiler-sfc@3.5.29':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/parser': 7.29.0
|
'@babel/parser': 7.29.0
|
||||||
@ -8380,11 +8292,6 @@ snapshots:
|
|||||||
postcss: 8.5.8
|
postcss: 8.5.8
|
||||||
source-map-js: 1.2.1
|
source-map-js: 1.2.1
|
||||||
|
|
||||||
'@vue/compiler-ssr@3.5.20':
|
|
||||||
dependencies:
|
|
||||||
'@vue/compiler-dom': 3.5.20
|
|
||||||
'@vue/shared': 3.5.20
|
|
||||||
|
|
||||||
'@vue/compiler-ssr@3.5.29':
|
'@vue/compiler-ssr@3.5.29':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vue/compiler-dom': 3.5.29
|
'@vue/compiler-dom': 3.5.29
|
||||||
@ -8439,31 +8346,15 @@ snapshots:
|
|||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
typescript: 5.9.3
|
typescript: 5.9.3
|
||||||
|
|
||||||
'@vue/reactivity@3.5.20':
|
|
||||||
dependencies:
|
|
||||||
'@vue/shared': 3.5.20
|
|
||||||
|
|
||||||
'@vue/reactivity@3.5.29':
|
'@vue/reactivity@3.5.29':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vue/shared': 3.5.29
|
'@vue/shared': 3.5.29
|
||||||
|
|
||||||
'@vue/runtime-core@3.5.20':
|
|
||||||
dependencies:
|
|
||||||
'@vue/reactivity': 3.5.20
|
|
||||||
'@vue/shared': 3.5.20
|
|
||||||
|
|
||||||
'@vue/runtime-core@3.5.29':
|
'@vue/runtime-core@3.5.29':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vue/reactivity': 3.5.29
|
'@vue/reactivity': 3.5.29
|
||||||
'@vue/shared': 3.5.29
|
'@vue/shared': 3.5.29
|
||||||
|
|
||||||
'@vue/runtime-dom@3.5.20':
|
|
||||||
dependencies:
|
|
||||||
'@vue/reactivity': 3.5.20
|
|
||||||
'@vue/runtime-core': 3.5.20
|
|
||||||
'@vue/shared': 3.5.20
|
|
||||||
csstype: 3.1.3
|
|
||||||
|
|
||||||
'@vue/runtime-dom@3.5.29':
|
'@vue/runtime-dom@3.5.29':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vue/reactivity': 3.5.29
|
'@vue/reactivity': 3.5.29
|
||||||
@ -8471,20 +8362,12 @@ snapshots:
|
|||||||
'@vue/shared': 3.5.29
|
'@vue/shared': 3.5.29
|
||||||
csstype: 3.2.3
|
csstype: 3.2.3
|
||||||
|
|
||||||
'@vue/server-renderer@3.5.20(vue@3.5.20(typescript@5.9.3))':
|
|
||||||
dependencies:
|
|
||||||
'@vue/compiler-ssr': 3.5.20
|
|
||||||
'@vue/shared': 3.5.20
|
|
||||||
vue: 3.5.20(typescript@5.9.3)
|
|
||||||
|
|
||||||
'@vue/server-renderer@3.5.29(vue@3.5.29(typescript@5.9.3))':
|
'@vue/server-renderer@3.5.29(vue@3.5.29(typescript@5.9.3))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vue/compiler-ssr': 3.5.29
|
'@vue/compiler-ssr': 3.5.29
|
||||||
'@vue/shared': 3.5.29
|
'@vue/shared': 3.5.29
|
||||||
vue: 3.5.29(typescript@5.9.3)
|
vue: 3.5.29(typescript@5.9.3)
|
||||||
|
|
||||||
'@vue/shared@3.5.20': {}
|
|
||||||
|
|
||||||
'@vue/shared@3.5.29': {}
|
'@vue/shared@3.5.29': {}
|
||||||
|
|
||||||
'@vueuse/core@12.8.2(typescript@5.9.3)':
|
'@vueuse/core@12.8.2(typescript@5.9.3)':
|
||||||
@ -9213,8 +9096,6 @@ snapshots:
|
|||||||
|
|
||||||
cssesc@3.0.0: {}
|
cssesc@3.0.0: {}
|
||||||
|
|
||||||
csstype@3.1.3: {}
|
|
||||||
|
|
||||||
csstype@3.2.3: {}
|
csstype@3.2.3: {}
|
||||||
|
|
||||||
cytoscape-cose-bilkent@4.1.0(cytoscape@3.33.1):
|
cytoscape-cose-bilkent@4.1.0(cytoscape@3.33.1):
|
||||||
@ -9602,8 +9483,6 @@ snapshots:
|
|||||||
|
|
||||||
entities@2.2.0: {}
|
entities@2.2.0: {}
|
||||||
|
|
||||||
entities@4.5.0: {}
|
|
||||||
|
|
||||||
entities@7.0.1: {}
|
entities@7.0.1: {}
|
||||||
|
|
||||||
env-paths@2.2.1: {}
|
env-paths@2.2.1: {}
|
||||||
@ -9925,8 +9804,6 @@ snapshots:
|
|||||||
|
|
||||||
event-target-shim@5.0.1: {}
|
event-target-shim@5.0.1: {}
|
||||||
|
|
||||||
eventemitter3@5.0.1: {}
|
|
||||||
|
|
||||||
eventemitter3@5.0.4: {}
|
eventemitter3@5.0.4: {}
|
||||||
|
|
||||||
events-universal@1.0.1:
|
events-universal@1.0.1:
|
||||||
@ -10722,8 +10599,6 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
p-locate: 5.0.0
|
p-locate: 5.0.0
|
||||||
|
|
||||||
lodash-es@4.17.21: {}
|
|
||||||
|
|
||||||
lodash-es@4.17.23: {}
|
lodash-es@4.17.23: {}
|
||||||
|
|
||||||
lodash.debounce@4.0.8: {}
|
lodash.debounce@4.0.8: {}
|
||||||
@ -12611,16 +12486,6 @@ snapshots:
|
|||||||
is-plain-object: 3.0.1
|
is-plain-object: 3.0.1
|
||||||
vue: 3.5.29(typescript@5.9.3)
|
vue: 3.5.29(typescript@5.9.3)
|
||||||
|
|
||||||
vue@3.5.20(typescript@5.9.3):
|
|
||||||
dependencies:
|
|
||||||
'@vue/compiler-dom': 3.5.20
|
|
||||||
'@vue/compiler-sfc': 3.5.20
|
|
||||||
'@vue/runtime-dom': 3.5.20
|
|
||||||
'@vue/server-renderer': 3.5.20(vue@3.5.20(typescript@5.9.3))
|
|
||||||
'@vue/shared': 3.5.20
|
|
||||||
optionalDependencies:
|
|
||||||
typescript: 5.9.3
|
|
||||||
|
|
||||||
vue@3.5.29(typescript@5.9.3):
|
vue@3.5.29(typescript@5.9.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vue/compiler-dom': 3.5.29
|
'@vue/compiler-dom': 3.5.29
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
import { createData } from '@user/entry-data';
|
import { createData } from '@user/entry-data';
|
||||||
|
|
||||||
|
// 逻辑端入口,仅在录像验证时运行
|
||||||
|
|
||||||
createData();
|
createData();
|
||||||
|
|||||||
@ -3,6 +3,8 @@ import './styles.less';
|
|||||||
import { createGame } from '@user/entry-client';
|
import { createGame } from '@user/entry-client';
|
||||||
import App from './App.vue';
|
import App from './App.vue';
|
||||||
|
|
||||||
|
// 客户端入口,在玩家游玩时运行
|
||||||
|
|
||||||
// 创建游戏实例
|
// 创建游戏实例
|
||||||
createGame();
|
createGame();
|
||||||
createApp(App).mount('#root');
|
createApp(App).mount('#root');
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user