From 538037f4992edf93cb7f0f0055275d588123febb Mon Sep 17 00:00:00 2001 From: Michael Chung <6252325+ArEnSc@users.noreply.github.com> Date: Sun, 7 Apr 2024 21:13:00 -0400 Subject: [PATCH 1/4] Load char plumbing. --- app/pages/PageEnigma/Queue/Queue.ts | 8 +++---- app/pages/PageEnigma/Queue/toEngineActions.ts | 5 +++++ .../contexts/TrackContext/TrackProvider.tsx | 6 +++-- app/pages/PageEnigma/js/timeline.ts | 6 +++++ app/pages/PageEnigma/store/characterGroups.ts | 22 +++++++++++++++++++ 5 files changed, 41 insertions(+), 6 deletions(-) diff --git a/app/pages/PageEnigma/Queue/Queue.ts b/app/pages/PageEnigma/Queue/Queue.ts index d793335c08..386c14d6c3 100644 --- a/app/pages/PageEnigma/Queue/Queue.ts +++ b/app/pages/PageEnigma/Queue/Queue.ts @@ -12,14 +12,14 @@ class Queue { string, { action: fromEngineActions | toEngineActions | toTimelineActions; - data: QueueClip | UpdateTime | QueueKeyframe | ClipUI[]; + data: QueueClip | UpdateTime | QueueKeyframe | ClipUI[] | string; }[] > = {}; private _subscribers: Record< string, (entry: { action: fromEngineActions | toEngineActions | toTimelineActions; - data: QueueClip | UpdateTime | QueueKeyframe | ClipUI[]; + data: QueueClip | UpdateTime | QueueKeyframe | ClipUI[] | string; }) => void > = {}; @@ -30,7 +30,7 @@ class Queue { }: { queueName: string; action: fromEngineActions | toEngineActions | toTimelineActions; - data: QueueClip | UpdateTime | QueueKeyframe | ClipUI[] ; + data: QueueClip | UpdateTime | QueueKeyframe | ClipUI[] | string ; }) { if (!this._queue[queueName]) { this._queue[queueName] = []; @@ -47,7 +47,7 @@ class Queue { queueName: string, onMessage: (entry: { action: fromEngineActions | toEngineActions | toTimelineActions; - data: QueueClip | UpdateTime | QueueKeyframe | ClipUI[]; + data: QueueClip | UpdateTime | QueueKeyframe | ClipUI[] | string; }) => void, ) { this._subscribers[queueName] = onMessage; diff --git a/app/pages/PageEnigma/Queue/toEngineActions.ts b/app/pages/PageEnigma/Queue/toEngineActions.ts index 9a601aa64f..4be8244918 100644 --- a/app/pages/PageEnigma/Queue/toEngineActions.ts +++ b/app/pages/PageEnigma/Queue/toEngineActions.ts @@ -2,6 +2,11 @@ export enum toEngineActions { ADD_CLIP = "add_clip", // data=QueueClip ADD_KEYFRAME = "add_keyframe", + + ADD_CHARACTER = "add_character", + + ADD_OBJECT = "add_object", + // data= QueueKeyframe DELETE_CLIP = "delete_clip", // data=QueueClip diff --git a/app/pages/PageEnigma/contexts/TrackContext/TrackProvider.tsx b/app/pages/PageEnigma/contexts/TrackContext/TrackProvider.tsx index 2544eb5075..ae86536204 100644 --- a/app/pages/PageEnigma/contexts/TrackContext/TrackProvider.tsx +++ b/app/pages/PageEnigma/contexts/TrackContext/TrackProvider.tsx @@ -6,6 +6,7 @@ import { addCharacterAnimation, addCharacterAudio, addGlobalAudio, + addCharacter, canDrop, dragItem, dropId, @@ -25,7 +26,8 @@ export const TrackProvider = ({ children }: Props) => { // cross group functions const dropClip = useCallback(() => { - console.log(`${canDrop.value} ${dragItem.value} ${dragItem.value.type}`) + + console.log(`${JSON.stringify(dragItem)}`) if (canDrop.value && dragItem.value) { if (dragItem.value.type === AssetType.ANIMATION) { addCharacterAnimation({ @@ -47,7 +49,7 @@ export const TrackProvider = ({ children }: Props) => { }); } if (dragItem.value.type === AssetType.CHARACTER) { - console.log("Dragged In Character Type") + addCharacter(dragItem) } if (dragItem.value.type === AssetType.CAMERA) { console.log("Dragged In Camera Type") diff --git a/app/pages/PageEnigma/js/timeline.ts b/app/pages/PageEnigma/js/timeline.ts index e1090d081e..45e329f6be 100644 --- a/app/pages/PageEnigma/js/timeline.ts +++ b/app/pages/PageEnigma/js/timeline.ts @@ -124,6 +124,12 @@ export class TimeLine { case toEngineActions.UNMUTE: await this.mute(data, true); break; + case toEngineActions.ADD_CHARACTER: + // TODO ADD + break; + case toEngineActions.ADD_OBJECT: + // TODO ADD + break; default: console.log("Action Not Wired", action); } diff --git a/app/pages/PageEnigma/store/characterGroups.ts b/app/pages/PageEnigma/store/characterGroups.ts index 84fc54c076..f93bde49a1 100644 --- a/app/pages/PageEnigma/store/characterGroups.ts +++ b/app/pages/PageEnigma/store/characterGroups.ts @@ -333,3 +333,25 @@ export function deleteCharacterKeyframe(keyframe: Keyframe) { }), })); } + +// probably not to much to send imo +export function addCharacter(character:string) { + //{"version":1,"media_id":"m_r7w1tmkx2jg8nznr3hyzj4k6zhfh7d ", + // "type":"character","name":"Female Doll", + // "thumbnail":"resources/characters/img03.png"} + Queue.publish({ + queueName: QueueNames.TO_ENGINE, + action: toEngineActions.ADD_CHARACTER, + data: character, + }); +} +export function addObject(object:string) { + //{"version":1,"media_id":"m_r7w1tmkx2jg8nznr3hyzj4k6zhfh7d ", + // "type":"character","name":"Female Doll", + // "thumbnail":"resources/characters/img03.png"} + Queue.publish({ + queueName: QueueNames.TO_ENGINE, + action: toEngineActions.ADD_OBJECT, + data: object, + }); +} \ No newline at end of file From bcbd91db5ec058e723956721ff2c3c27332f46d7 Mon Sep 17 00:00:00 2001 From: Michael Chung <6252325+ArEnSc@users.noreply.github.com> Date: Sun, 7 Apr 2024 21:19:11 -0400 Subject: [PATCH 2/4] Fixed with media item and listener. --- app/pages/PageEnigma/Queue/Queue.ts | 9 +++--- .../contexts/TrackContext/TrackProvider.tsx | 29 +++++++++++-------- app/pages/PageEnigma/store/characterGroups.ts | 4 +-- 3 files changed, 24 insertions(+), 18 deletions(-) diff --git a/app/pages/PageEnigma/Queue/Queue.ts b/app/pages/PageEnigma/Queue/Queue.ts index 386c14d6c3..2fbfcd789e 100644 --- a/app/pages/PageEnigma/Queue/Queue.ts +++ b/app/pages/PageEnigma/Queue/Queue.ts @@ -7,19 +7,20 @@ import { } from "~/pages/PageEnigma/models"; import { toTimelineActions } from "./toTimelineActions"; import { ClipUI } from "../datastructures/clips/clip_ui"; +import { MediaItem } from "~/pages/PageEnigma/models"; class Queue { private _queue: Record< string, { action: fromEngineActions | toEngineActions | toTimelineActions; - data: QueueClip | UpdateTime | QueueKeyframe | ClipUI[] | string; + data: QueueClip | UpdateTime | QueueKeyframe | ClipUI[] | MediaItem; }[] > = {}; private _subscribers: Record< string, (entry: { action: fromEngineActions | toEngineActions | toTimelineActions; - data: QueueClip | UpdateTime | QueueKeyframe | ClipUI[] | string; + data: QueueClip | UpdateTime | QueueKeyframe | ClipUI[] | MediaItem; }) => void > = {}; @@ -30,7 +31,7 @@ class Queue { }: { queueName: string; action: fromEngineActions | toEngineActions | toTimelineActions; - data: QueueClip | UpdateTime | QueueKeyframe | ClipUI[] | string ; + data: QueueClip | UpdateTime | QueueKeyframe | ClipUI[] | MediaItem ; }) { if (!this._queue[queueName]) { this._queue[queueName] = []; @@ -47,7 +48,7 @@ class Queue { queueName: string, onMessage: (entry: { action: fromEngineActions | toEngineActions | toTimelineActions; - data: QueueClip | UpdateTime | QueueKeyframe | ClipUI[] | string; + data: QueueClip | UpdateTime | QueueKeyframe | ClipUI[] | MediaItem; }) => void, ) { this._subscribers[queueName] = onMessage; diff --git a/app/pages/PageEnigma/contexts/TrackContext/TrackProvider.tsx b/app/pages/PageEnigma/contexts/TrackContext/TrackProvider.tsx index ae86536204..7c7b972407 100644 --- a/app/pages/PageEnigma/contexts/TrackContext/TrackProvider.tsx +++ b/app/pages/PageEnigma/contexts/TrackContext/TrackProvider.tsx @@ -11,6 +11,7 @@ import { dragItem, dropId, dropOffset, + addObject, } from "~/pages/PageEnigma/store"; import useUpdateKeyframe from "~/pages/PageEnigma/contexts/TrackContext/utils/useUpdateKeyframe"; @@ -28,6 +29,22 @@ export const TrackProvider = ({ children }: Props) => { console.log(`${JSON.stringify(dragItem)}`) + // should be able to drag into the timeline ... TODO FIX? + + if (dragItem.value.type === AssetType.CHARACTER) { + addCharacter(dragItem) + } + // if (dragItem.value.type === AssetType.CAMERA) { + // console.log("Dragged In Camera Type") + // } + if (dragItem.value.type === AssetType.OBJECT) { + addObject(dragItem) + console.log("Dragged In Object Type") + } + // if (dragItem.value.type === AssetType.SHAPE) { + // console.log("Dragged In Shape Type") + // } + if (canDrop.value && dragItem.value) { if (dragItem.value.type === AssetType.ANIMATION) { addCharacterAnimation({ @@ -48,18 +65,6 @@ export const TrackProvider = ({ children }: Props) => { offset: dropOffset.value, }); } - if (dragItem.value.type === AssetType.CHARACTER) { - addCharacter(dragItem) - } - if (dragItem.value.type === AssetType.CAMERA) { - console.log("Dragged In Camera Type") - } - if (dragItem.value.type === AssetType.OBJECT) { - console.log("Dragged In Object Type") - } - if (dragItem.value.type === AssetType.SHAPE) { - console.log("Dragged In Shape Type") - } } endDrag(); }, [endDrag]); diff --git a/app/pages/PageEnigma/store/characterGroups.ts b/app/pages/PageEnigma/store/characterGroups.ts index f93bde49a1..1cff55d2a6 100644 --- a/app/pages/PageEnigma/store/characterGroups.ts +++ b/app/pages/PageEnigma/store/characterGroups.ts @@ -335,7 +335,7 @@ export function deleteCharacterKeyframe(keyframe: Keyframe) { } // probably not to much to send imo -export function addCharacter(character:string) { +export function addCharacter(character:MediaItem) { //{"version":1,"media_id":"m_r7w1tmkx2jg8nznr3hyzj4k6zhfh7d ", // "type":"character","name":"Female Doll", // "thumbnail":"resources/characters/img03.png"} @@ -345,7 +345,7 @@ export function addCharacter(character:string) { data: character, }); } -export function addObject(object:string) { +export function addObject(object:MediaItem) { //{"version":1,"media_id":"m_r7w1tmkx2jg8nznr3hyzj4k6zhfh7d ", // "type":"character","name":"Female Doll", // "thumbnail":"resources/characters/img03.png"} From 126a187c0640b885982b2eab3c65d46bd9fd3532 Mon Sep 17 00:00:00 2001 From: Quicksticks-oss Date: Sun, 7 Apr 2024 21:58:45 -0400 Subject: [PATCH 3/4] add character and add object. also sent data to timeline using UPDATE_CHARACTER_ID. --- .../PageEnigma/Queue/fromEngineActions.ts | 1 + .../comps/Timeline/utils/useQueueHandler.ts | 4 ++- .../contexts/TrackContext/TrackProvider.tsx | 26 ++++++++-------- app/pages/PageEnigma/js/editor.ts | 2 +- app/pages/PageEnigma/js/timeline.ts | 30 +++++++++++++++++-- app/pages/PageEnigma/store/media.ts | 4 +-- 6 files changed, 49 insertions(+), 18 deletions(-) diff --git a/app/pages/PageEnigma/Queue/fromEngineActions.ts b/app/pages/PageEnigma/Queue/fromEngineActions.ts index 2e647b32bc..484eaaa6d3 100644 --- a/app/pages/PageEnigma/Queue/fromEngineActions.ts +++ b/app/pages/PageEnigma/Queue/fromEngineActions.ts @@ -1,5 +1,6 @@ export enum fromEngineActions { UPDATE_TIME = "update_time", UPDATE_TIME_LINE = "update_timeline", + UPDATE_CHARACTER_ID = "update_character_id", // data={currentTime: number} } diff --git a/app/pages/PageEnigma/comps/Timeline/utils/useQueueHandler.ts b/app/pages/PageEnigma/comps/Timeline/utils/useQueueHandler.ts index c5bf23e06d..b647466841 100644 --- a/app/pages/PageEnigma/comps/Timeline/utils/useQueueHandler.ts +++ b/app/pages/PageEnigma/comps/Timeline/utils/useQueueHandler.ts @@ -29,7 +29,9 @@ export function useQueueHandler() { currentTime.value = (data as UpdateTime).currentTime; break; case fromEngineActions.UPDATE_TIME_LINE: - console.log(action) + console.log(action); + case fromEngineActions.UPDATE_CHARACTER_ID: + console.log(action); default: throw new Error(`Unknown action ${action}`); } diff --git a/app/pages/PageEnigma/contexts/TrackContext/TrackProvider.tsx b/app/pages/PageEnigma/contexts/TrackContext/TrackProvider.tsx index 7c7b972407..747896cef7 100644 --- a/app/pages/PageEnigma/contexts/TrackContext/TrackProvider.tsx +++ b/app/pages/PageEnigma/contexts/TrackContext/TrackProvider.tsx @@ -27,19 +27,21 @@ export const TrackProvider = ({ children }: Props) => { // cross group functions const dropClip = useCallback(() => { - - console.log(`${JSON.stringify(dragItem)}`) - // should be able to drag into the timeline ... TODO FIX? - if (dragItem.value.type === AssetType.CHARACTER) { - addCharacter(dragItem) - } - // if (dragItem.value.type === AssetType.CAMERA) { - // console.log("Dragged In Camera Type") - // } - if (dragItem.value.type === AssetType.OBJECT) { - addObject(dragItem) - console.log("Dragged In Object Type") + console.log(`${JSON.stringify(dragItem)}`) + + if (dragItem.value != null && dragItem != null) { + // should be able to drag into the timeline ... TODO FIX? + + if (dragItem.value.type === AssetType.CHARACTER) { + addCharacter(dragItem.value) + } + // if (dragItem.value.type === AssetType.CAMERA) { + // console.log("Dragged In Camera Type") + // } + if (dragItem.value.type === AssetType.OBJECT) { + addObject(dragItem.value) + } } // if (dragItem.value.type === AssetType.SHAPE) { // console.log("Dragged In Shape Type") diff --git a/app/pages/PageEnigma/js/editor.ts b/app/pages/PageEnigma/js/editor.ts index af0707f0b9..c4f0cf9e18 100644 --- a/app/pages/PageEnigma/js/editor.ts +++ b/app/pages/PageEnigma/js/editor.ts @@ -311,7 +311,7 @@ class Editor { this.timeline.scene = this.activeScene; - this._test_demo(); + //this._test_demo(); this.renderer.domElement.addEventListener( "mousedown", diff --git a/app/pages/PageEnigma/js/timeline.ts b/app/pages/PageEnigma/js/timeline.ts index 45e329f6be..dc9072efe2 100644 --- a/app/pages/PageEnigma/js/timeline.ts +++ b/app/pages/PageEnigma/js/timeline.ts @@ -125,16 +125,42 @@ export class TimeLine { await this.mute(data, true); break; case toEngineActions.ADD_CHARACTER: - // TODO ADD + await this.addCharacter(data); break; case toEngineActions.ADD_OBJECT: - // TODO ADD + await this.addObject(data); break; default: console.log("Action Not Wired", action); } } + public async addCharacter(data: any) { + let media_id = data.data['media_id']; + let name = data.data['name']; + let type = data.data['type']; + + let obj = await this.scene.load_glb(media_id); + obj.userData['name'] = name; + obj.name = name; + let object_uuid = obj.uuid; + + data.data['object_uuid'] = object_uuid; + Queue.publish({ + queueName: QueueNames.FROM_ENGINE, + action: fromEngineActions.UPDATE_CHARACTER_ID, + data: data.data, + }); + } + + public async addObject(data: any) { + let media_id = data.data['media_id']; + let name = data.data['name']; + let obj = await this.scene.load_glb(media_id); + obj.userData['name'] = name; + obj.name = name; + } + public async addKeyFrame(data: any) { // KeyFrame Object // version: number; diff --git a/app/pages/PageEnigma/store/media.ts b/app/pages/PageEnigma/store/media.ts index f1579cd77b..a920f7f686 100644 --- a/app/pages/PageEnigma/store/media.ts +++ b/app/pages/PageEnigma/store/media.ts @@ -132,9 +132,9 @@ export const characterItems = signal([ export const objectItems = signal([ { version: 1, - media_id: "m_w5nn3kjh1fbkmjrdac5b2qaba0pmyt", + media_id: "m_0xfrmekc56satjxn66wt6c9dkw7dxe", type: AssetType.OBJECT, - name: "Item ( Place Holder D.N.W )", + name: "Pikachu Statue", thumbnail: "resources/placeholders/placeholder.png", }, ]); From df4a7fabe33daf580e20c15eb70d2ad34c60e47d Mon Sep 17 00:00:00 2001 From: Quicksticks-oss Date: Sun, 7 Apr 2024 22:16:25 -0400 Subject: [PATCH 4/4] Added object_name --- .../datastructures/clips/clip_ui.ts | 4 + app/pages/PageEnigma/js/editor.ts | 2 +- app/pages/PageEnigma/js/timeline.ts | 97 +------------------ .../proxy/storyteller_proxy_timeline.ts | 1 + 4 files changed, 10 insertions(+), 94 deletions(-) diff --git a/app/pages/PageEnigma/datastructures/clips/clip_ui.ts b/app/pages/PageEnigma/datastructures/clips/clip_ui.ts index f771f9910c..ed8c279265 100644 --- a/app/pages/PageEnigma/datastructures/clips/clip_ui.ts +++ b/app/pages/PageEnigma/datastructures/clips/clip_ui.ts @@ -9,6 +9,7 @@ export class ClipUI { name: string; media_id: string; object_uuid: string; + object_name: string; offset: number; // in frames length: number; // in frames should_play: boolean; @@ -20,6 +21,7 @@ export class ClipUI { name: string, media_id: string, object_uuid: string, + object_name: string, offset: number, length: number, ) { @@ -30,6 +32,7 @@ export class ClipUI { this.type = type; // UI and Animation / Audio / Lipsync / : Engine this.object_uuid = object_uuid; // Animation / Audio / Lipsync / : Engine + this.object_name = object_name; this.media_id = media_id; // Animation / Audio / Lipsync / : Engine this.offset = offset; this.length = length; @@ -43,6 +46,7 @@ export class ClipUI { name: this.name, type: this.type, object_uuid: this.object_uuid, + object_name: this.object_name, media_id: this.media_id, start_offset: this.offset, ending_offset: this.length, diff --git a/app/pages/PageEnigma/js/editor.ts b/app/pages/PageEnigma/js/editor.ts index c4f0cf9e18..af0707f0b9 100644 --- a/app/pages/PageEnigma/js/editor.ts +++ b/app/pages/PageEnigma/js/editor.ts @@ -311,7 +311,7 @@ class Editor { this.timeline.scene = this.activeScene; - //this._test_demo(); + this._test_demo(); this.renderer.domElement.addEventListener( "mousedown", diff --git a/app/pages/PageEnigma/js/timeline.ts b/app/pages/PageEnigma/js/timeline.ts index dc9072efe2..96188daefe 100644 --- a/app/pages/PageEnigma/js/timeline.ts +++ b/app/pages/PageEnigma/js/timeline.ts @@ -195,6 +195,7 @@ export class TimeLine { object_name, "", uuid, + object_name, 0, this.absolute_end)) } @@ -216,6 +217,7 @@ export class TimeLine { const type = data["data"]["type"]; const offset = data["data"]["offset"]; const end_offset = data["data"]["length"] + offset; + const object_name = data["data"]["object_name"]; switch (type) { case "animation": @@ -236,6 +238,7 @@ export class TimeLine { name, media_id, object_uuid, + object_name, offset, end_offset)); return; @@ -254,6 +257,7 @@ export class TimeLine { name, media_id, object_uuid, + object_name, offset, end_offset, ), @@ -481,96 +485,3 @@ export class TimeLine { } } -// How much timeline precision we have -//const percision = 100 // using a fake update loop mock -// -//class AudioEngineMock { -// async play(media_id:string) { -// console.log("Audio Playing {media_id}") -// } -//} -// -//// Visual verification tests. -//function CheckIfBasicAudioClipWorks() { -// const timeline = new TimeLine() -// timeline.addPlayableClip(new ClipUI(1.0,'audio',1,0)) -// timeline.play() -//} -// -//function CheckIfBasicTransformClipWorks() { -// const timeline = new TimeLine() -// timeline.addPlayableClip(new ClipUI(1.0,'transform',2,0)) -// timeline.play() -//} -// -//function CheckIfBasicClipWorks() { -// const timeline = new TimeLine() -// timeline.addPlayableClip(new ClipUI(1.0,'animation',3,0)) -// timeline.play() -//} - -// function CheckIfBasicClipWorks3SecondsAfterTimelineStops() { -// const timeline = new TimeLine() -// timeline.addPlayableClip(new ClipUI("clip1", 0, 10000)) -// timeline.play() -// } - -// function CheckIfTwoClipsAtTheSameTimeWorks() { -// const timeline = new TimeLine() -// timeline.addPlayableClip(new ClipUI("clip1", 0, 1000)) -// timeline.play() -// } - -// function CheckIfTwoClipsOneAfterAnotherWorks() { -// const timeline = new TimeLine() -// timeline.addPlayableClip(new ClipUI("clip1", 0, 1000)) -// timeline.addPlayableClip(new ClipUI("clip2", 0, 2000)) -// timeline.play() -// } - -// function CheckIfTimeLineStopBeforeClipPlays() { -// const timeline = new TimeLine() -// timeline.addPlayableClip(new ClipUI("clip3",0,1000)) -// timeline.play() -// setInterval(async ()=> { -// timeline.stop() -// },1100) -// console.log("Stopped") -// } - -// function CheckIfTimeLineStartAfterClipPlays() { -// const timeline = new TimeLine() -// timeline.addPlayableClip(new ClipUI("clip3",0,1000)) -// timeline.play() -// setInterval(async ()=> { -// timeline.stop() -// },500) -// console.log("Stopped") -// } - -// function CheckIfClipsPlayAllTogetherConcurrently() { -// const timeline = new TimeLine() -// timeline.addPlayableClip(new ClipUI("clip1",0,1000)) -// timeline.addPlayableClip(new ClipUI("clip2",0,1000)) -// timeline.addPlayableClip(new ClipUI("clip3",0,1000)) -// timeline.addPlayableClip(new ClipUI("clip4",0,1000)) -// timeline.play() -// } - -// function CheckIfClipsPlayAllTogether() { -// const timeline = new TimeLine() -// timeline.addPlayableClip(new TrackClip("clip1",0,1000)) -// timeline.addPlayableClip(new TrackClip("clip2",0,1000)) -// timeline.addPlayableClip(new TrackClip("clip3",0,1000)) -// timeline.addPlayableClip(new TrackClip("clip4",0,1000)) -// timeline.play() -// } - -//CheckIfBasicClipWorks() -//CheckIfTwoClipsAtTheSameTimeWorks() -// CheckIfTwoClipsOneAfterAnotherWorks() -// CheckIfTimeLineStopBeforeClipPlays() -// CheckIfTimeLineStartAfterClipPlays() -// CheckIfClipsPlayAllTogetherConcurrently() - -// CheckIfClipsPlayAllTogether() diff --git a/app/pages/PageEnigma/proxy/storyteller_proxy_timeline.ts b/app/pages/PageEnigma/proxy/storyteller_proxy_timeline.ts index e5cb72ff2a..2133951979 100644 --- a/app/pages/PageEnigma/proxy/storyteller_proxy_timeline.ts +++ b/app/pages/PageEnigma/proxy/storyteller_proxy_timeline.ts @@ -65,6 +65,7 @@ export class StoryTellerProxyTimeline { element.version, element.type, element.group, element.name, element.media_id, element.object_uuid, + element.object_name, element.start_offset, element.ending_offset); new_clips.push(clip); }