fix(tokens): импорт неигровых токенов из zip и плавные пути на macOS
Полный импорт/открытие проекта подхватывает app-tokens. Движение по путям пишется в DOM без ре-рендера кадра, у пульта и презентации выключен background throttling. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -11,6 +11,8 @@ import {
|
||||
asProjectId,
|
||||
asSceneId,
|
||||
asSceneNpcTokenId,
|
||||
asSceneTokenId,
|
||||
asTokenId,
|
||||
} from '../types/ids';
|
||||
import { PROJECT_SCHEMA_VERSION } from '../types';
|
||||
|
||||
@@ -21,8 +23,10 @@ import {
|
||||
findSceneTitleConflicts,
|
||||
listExportedNpcsFromBundle,
|
||||
listImportableStorylines,
|
||||
collectTokenIdsFromProject,
|
||||
mergeStorylinesIntoProject,
|
||||
newExportBundleProjectId,
|
||||
remapProjectSceneTokenIds,
|
||||
selectNpcsByIds,
|
||||
} from './storylineExportImport';
|
||||
|
||||
@@ -550,3 +554,48 @@ void test('mergeStorylinesIntoProject: reuse existing scene by resolution', () =
|
||||
assert.equal(merged.sceneGraphNodes.length, 1);
|
||||
assert.equal(merged.sceneGraphNodes[0]!.sceneId, targetSceneId);
|
||||
});
|
||||
|
||||
void test('collectTokenIdsFromProject: собирает id неигровых токенов со сцен', () => {
|
||||
const s1 = scene('s1', 'Start');
|
||||
s1.tokens = [
|
||||
{
|
||||
id: asSceneTokenId('st1'),
|
||||
tokenId: asTokenId('tok_a'),
|
||||
nx: 0.2,
|
||||
ny: 0.3,
|
||||
sizeN: 0.08,
|
||||
rotationDeg: 0,
|
||||
},
|
||||
{
|
||||
id: asSceneTokenId('st2'),
|
||||
tokenId: asTokenId('tok_b'),
|
||||
nx: 0.5,
|
||||
ny: 0.5,
|
||||
sizeN: 0.08,
|
||||
rotationDeg: 0,
|
||||
},
|
||||
];
|
||||
const project = minimalProject({
|
||||
scenes: { [asSceneId('s1')]: s1 },
|
||||
sceneGraphNodes: [node('main', 's1', { isStartScene: true })],
|
||||
});
|
||||
const ids = collectTokenIdsFromProject(project).map(String).sort();
|
||||
assert.deepEqual(ids, ['tok_a', 'tok_b']);
|
||||
});
|
||||
|
||||
void test('remapProjectSceneTokenIds: переписывает tokenId на сценах', () => {
|
||||
const s1 = scene('s1', 'Start');
|
||||
s1.tokens = [
|
||||
{
|
||||
id: asSceneTokenId('st1'),
|
||||
tokenId: asTokenId('old'),
|
||||
nx: 0.2,
|
||||
ny: 0.3,
|
||||
sizeN: 0.08,
|
||||
rotationDeg: 0,
|
||||
},
|
||||
];
|
||||
const project = minimalProject({ scenes: { [asSceneId('s1')]: s1 } });
|
||||
const remapped = remapProjectSceneTokenIds(project, new Map([['old', 'new']]));
|
||||
assert.equal(String(remapped.scenes[asSceneId('s1')]!.tokens[0]!.tokenId), 'new');
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user