Лицензия, редактор, пульт и сборка
- Main: license service, IPC, router; закрытие окон; yauzl закрытие zip (EMFILE), zipRead тест - Editor: стабильный projectState без мигания, логотип и меню, строки UI, LayoutShell overlay - Control: ластик для всех типов эффектов, затухание/нарастание музыки при смене сцены - Сборка: vite, build/dev scripts, obfuscate-main и build-env скрипты с тестами; package.json Made-with: Cursor
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import test from 'node:test';
|
||||
|
||||
import { minDistSqEffectToPoint, pickEraseTargetId } from './effectEraserHitTest';
|
||||
import type { EffectInstance } from './types/effects';
|
||||
|
||||
const base = { seed: 1, createdAtMs: 0 };
|
||||
|
||||
void test('pickEraseTargetId: fire/rain по штриху как туман', () => {
|
||||
const fire: EffectInstance = {
|
||||
...base,
|
||||
id: 'f1',
|
||||
type: 'fire',
|
||||
points: [{ x: 0.5, y: 0.5, tMs: 0 }],
|
||||
radiusN: 0.05,
|
||||
opacity: 1,
|
||||
lifetimeMs: null,
|
||||
};
|
||||
const id = pickEraseTargetId([fire], { x: 0.51, y: 0.5 }, 0.05);
|
||||
assert.equal(id, 'f1');
|
||||
});
|
||||
|
||||
void test('minDistSqEffectToPoint: молния — расстояние до отрезка', () => {
|
||||
const bolt: EffectInstance = {
|
||||
...base,
|
||||
id: 'L1',
|
||||
type: 'lightning',
|
||||
start: { x: 0, y: 0 },
|
||||
end: { x: 1, y: 0 },
|
||||
widthN: 0.02,
|
||||
intensity: 1,
|
||||
lifetimeMs: 500,
|
||||
};
|
||||
const mid = minDistSqEffectToPoint(bolt, { x: 0.5, y: 0.1 });
|
||||
assert.ok(Math.abs(mid - 0.01) < 1e-9);
|
||||
const end = minDistSqEffectToPoint(bolt, { x: 1, y: 0 });
|
||||
assert.equal(end, 0);
|
||||
});
|
||||
|
||||
void test('pickEraseTargetId: scorch с учётом inst.radiusN', () => {
|
||||
const sc: EffectInstance = {
|
||||
...base,
|
||||
id: 's1',
|
||||
type: 'scorch',
|
||||
at: { x: 0.5, y: 0.5 },
|
||||
radiusN: 0.08,
|
||||
opacity: 1,
|
||||
lifetimeMs: 1000,
|
||||
};
|
||||
const id = pickEraseTargetId([sc], { x: 0.59, y: 0.5 }, 0.02);
|
||||
assert.equal(id, 's1');
|
||||
});
|
||||
Reference in New Issue
Block a user