Skip to content

Commit

Permalink
feat: add timeline asset data def (#59)
Browse files Browse the repository at this point in the history
* feat: add timeline asset data def

* perf: opt code
  • Loading branch information
wumaolinmaoan authored May 23, 2024
1 parent 7c19767 commit f08a8c6
Show file tree
Hide file tree
Showing 10 changed files with 89 additions and 62 deletions.
7 changes: 7 additions & 0 deletions src/components.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@ export enum DataType {
Texture = 'Texture',
AnimationClip = 'AnimationClip',
TextComponent = 'TextComponent',
TrackAsset = 'TrackAsset',
TimelineAsset = 'TimelineAsset',
TransformAnimationPlayableAsset = 'TransformAnimationPlayableAsset',
SpriteColorPlayableAsset = 'SpriteColorPlayableAsset',

// FIXME: 先完成ECS的场景转换,后面移到spec中
MeshComponent = 'MeshComponent',
Expand All @@ -22,6 +26,9 @@ export enum DataType {
ModelPluginComponent = 'ModelPluginComponent',
TreeComponent = 'TreeComponent',
AnimationComponent = 'AnimationComponent',

// Non-EffectObject
TimelineClip = 'TimelineClip',
}

export interface DataPath {
Expand Down
23 changes: 21 additions & 2 deletions src/composition.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { Item } from './item';
import type { DataPath } from './components';
import {
CAMERA_CLIP_MODE_NORMAL,
CAMERA_CLIP_MODE_VERTICAL,
Expand All @@ -9,7 +9,7 @@ import {
END_BEHAVIOR_PAUSE_AND_DESTROY,
END_BEHAVIOR_RESTART,
} from './constants';
import type { DataPath } from './components';
import type { Item } from './item';

export enum CameraClipMode {
/**
Expand Down Expand Up @@ -174,4 +174,23 @@ export interface CompositionData {
* 降级图
*/
fallbackImage?: string,
/**
* 时间轴资产(TimelineAssetData)
*/
timelineAsset: DataPath,
/**
* 轨道的场景绑定
*/
sceneBindings: SceneBindingData[],
}

export interface SceneBindingData {
/**
* 绑定的轨道资产(TrackAssetData)
*/
key: DataPath,
/**
* 被绑定的场景对象(VFXItemData)
*/
value: DataPath,
}
1 change: 1 addition & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,4 @@ export * from './text';
export * from './components';
export * from './vfx-item-data';
export * from './buitin-object-guid';
export * from './timeline';
62 changes: 2 additions & 60 deletions src/item/null-item.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
import type {
SizeOverLifetime, RotationOverLifetime, PositionOverLifetime, ColorOverLifetime, ItemType,
} from '../type';
import type { RGBAColorValue } from '../number-expression';
import type { ColorOverLifetime, ItemType, PositionOverLifetime, RotationOverLifetime, SizeOverLifetime } from '../type';
import type { BaseItem } from './base-item';
import type { ComponentData, DataPath, EffectsObjectData } from '../components';
/**
* 空节点元素
*/
Expand Down Expand Up @@ -47,59 +44,4 @@ export interface NullContent {
* 空节点元素色彩变化属性
*/
colorOverLifetime?: ColorOverLifetime,
}

export interface TimelineComponentData extends ComponentData {
/**
* 轨道数据
*/
tracks: TrackAssetData[],
}

export interface PlayableAssetData {
dataType: string,
}

export interface TrackAssetData extends PlayableAssetData {
clips: TimelineClipData[],
}

export interface TimelineClipData {
start: number,
duration: number,
clipAsset: DataPath, // PlayableData
}

export interface TransformAnimationPlayableAssetData extends PlayableAssetData {
animationClip: DataPath, // TransformAnimationClipData
}

export interface SpriteColorAnimationPlayableAssetData extends PlayableAssetData {
animationClip: DataPath, // SpriteColorAnimationClipData
}

export interface TransformAnimationClipData extends EffectsObjectData {
/**
* 空节点元素大小变化属性
*/
sizeOverLifetime?: SizeOverLifetime,
/**
* 空节点元素旋转变化属性
*/
rotationOverLifetime?: RotationOverLifetime,
/**
* 空节点元素位置变化属性
*/
positionOverLifetime?: PositionOverLifetime,
}

export interface SpriteColorAnimationClipData extends EffectsObjectData {
/**
* 空节点元素色彩变化属性
*/
colorOverLifetime?: ColorOverLifetime,
/**
* 图层初始颜色
*/
startColor?: RGBAColorValue,
}
}
5 changes: 5 additions & 0 deletions src/timeline/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
export * from './track/track-asset-data';
export * from './sprite-color-playable-asset-data';
export * from './timeline-asset-data';
export * from './timeline-clip-data';
export * from './transform-animation-playable-asset-data';
8 changes: 8 additions & 0 deletions src/timeline/sprite-color-playable-asset-data.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import type { EffectsObjectData } from '../components';
import type { RGBAColorValue } from '../number-expression';
import type { ColorOverLifetime } from '../type';

export interface SpriteColorPlayableAssetData extends EffectsObjectData {
colorOverLifetime?: ColorOverLifetime,
startColor?: RGBAColorValue,
}
8 changes: 8 additions & 0 deletions src/timeline/timeline-asset-data.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import type { EffectsObjectData, DataPath } from '../components';

export interface TimelineAssetData extends EffectsObjectData {
/**
* 轨道数据(TrackAssetData)
*/
tracks: DataPath[],
}
10 changes: 10 additions & 0 deletions src/timeline/timeline-clip-data.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import type { DataPath } from '../components';

export interface TimelineClipData {
start?: number,
duration?: number,
/**
* 可播放资产(PlayableAssetData)
*/
asset: DataPath,
}
10 changes: 10 additions & 0 deletions src/timeline/track/track-asset-data.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import type { DataPath, EffectsObjectData } from '../../components';
import type { TimelineClipData } from '../timeline-clip-data';

export interface TrackAssetData extends EffectsObjectData {
/**
* 子轨道数据(TrackAssetData)
*/
children: DataPath[],
clips: TimelineClipData,
}
17 changes: 17 additions & 0 deletions src/timeline/transform-animation-playable-asset-data.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import type { EffectsObjectData } from '../components';
import type { SizeOverLifetime, RotationOverLifetime, PositionOverLifetime } from '../type';

export interface TransformAnimationPlayableAssetData extends EffectsObjectData {
/**
* 元素大小变化属性
*/
sizeOverLifetime?: SizeOverLifetime,
/**
* 元素旋转变化属性
*/
rotationOverLifetime?: RotationOverLifetime,
/**
* 元素位置变化属性
*/
positionOverLifetime?: PositionOverLifetime,
}

0 comments on commit f08a8c6

Please sign in to comment.