@doki-land/live2d 0.0.11 → 0.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,3 +1,3 @@
1
1
  # @doki-land/live2d
2
2
 
3
- live2d.ts package 0.0.11.
3
+ live2d.ts package 0.0.12.
package/dist/index.d.ts CHANGED
@@ -1,7 +1,8 @@
1
- import { Live2DSession, MotionDefinition } from '@doki-land/live2d-core';
2
- export { AssetResolver, EventEmitter, FrameProfile, FrameSnapshot, InternalModel, Live2DSession, LoadProgress, LoadProgressStage, ModelFormat, ModelInstance, ModelProgram, ModelSettings, ModelSource, SessionPhase, SessionState } from '@doki-land/live2d-core';
1
+ import * as _doki_land_live2d_core from '@doki-land/live2d-core';
2
+ import { LoadProgress, InternalModel, ModelSource, AssetResolver, Live2dActor, CreateActorOptions, ActorTransform, ActorHit, CreateLive2dStageOptions, Live2dStage, PointerTrackingPolicy, StagePointerEvent, Live2DSession } from '@doki-land/live2d-core';
3
+ export { ActorHit, ActorTransform, AssetResolver, CreateActorOptions, CreateLive2dStageOptions, DEFAULT_ACTOR_TRANSFORM, EventEmitter, FrameProfile, FrameSnapshot, InternalModel, Live2DSession, Live2dActor, Live2dStage, LoadProgress, LoadProgressStage, ModelFormat, ModelInstance, ModelProgram, ModelSettings, ModelSource, PointerTrackingMode, PointerTrackingPolicy, SessionPhase, SessionState, StagePointerEvent, StageUpdateMode } from '@doki-land/live2d-core';
3
4
  export { DEFAULT_NPM_CDN, resolveModelSourceUrl, resolveNpmSpecifier } from '@doki-land/live2d-loader';
4
- import { ModelBackend, Renderer, RendererKind, ParameterBinding } from '@doki-land/live2d-renderer';
5
+ import { ModelBackend, Renderer, ParameterBinding, DrawableMesh, RendererKind } from '@doki-land/live2d-renderer';
5
6
  export { ModelBackend, ParameterBinding, Renderer, RendererKind, createCanvas2DRenderer, createMoc2Backend, createMoc3Backend, createQuadProgram, createRenderer, createWebGl2Renderer, createWebGpuRenderer, decodeMoc3, evaluateFrame, fingerprintSnapshot, parseCpuProgram, serializeCpuProgram } from '@doki-land/live2d-renderer';
6
7
 
7
8
  /** Cubism motion3 segment kinds (spec). */
@@ -157,36 +158,133 @@ declare function blendMotionLayers(layers: ReadonlyArray<{
157
158
  */
158
159
  declare function parseMotion3(json: unknown): Motion3Clip;
159
160
 
161
+ interface ActorModelSlotOptions {
162
+ backends: readonly ModelBackend[];
163
+ renderer: Renderer;
164
+ onProgress?: (payload: LoadProgress) => void;
165
+ onMotionStart?: (payload: {
166
+ group: string;
167
+ index: number;
168
+ slot: string;
169
+ }) => void;
170
+ onMotionFinish?: (payload: {
171
+ group: string;
172
+ index: number;
173
+ slot: string;
174
+ }) => void;
175
+ }
176
+ /** One loaded model + draw pass owned by an actor (not a renderer). */
177
+ declare class ActorModelSlot {
178
+ #private;
179
+ constructor(options: ActorModelSlotOptions);
180
+ get model(): InternalModel | null;
181
+ get drawPass(): ReturnType<Renderer["createModelDrawPass"]> | null;
182
+ ensureDrawPass(): ReturnType<Renderer["createModelDrawPass"]>;
183
+ load(source: ModelSource, resolver?: AssetResolver): Promise<InternalModel>;
184
+ setParameter(id: string, value: number): void;
185
+ listParameters(): readonly ParameterBinding[];
186
+ listMotionGroups(): Record<string, readonly _doki_land_live2d_core.MotionDefinition[]>;
187
+ playMotion(group: string, index?: number, options?: PlayMotionOptions): Promise<boolean>;
188
+ stopMotion(opts?: {
189
+ fade?: boolean;
190
+ slot?: string;
191
+ }): void;
192
+ listPlayingMotions(): ReadonlyArray<{
193
+ slot: string;
194
+ group: string;
195
+ index: number;
196
+ time: number;
197
+ priority: number;
198
+ }>;
199
+ update(deltaTimeSeconds: number): DrawableMesh[] | null;
200
+ hitTestModelCoords(modelX: number, modelY: number): string | null;
201
+ destroy(): void;
202
+ }
203
+
204
+ interface Live2dActorImplOptions {
205
+ id: string;
206
+ creationIndex: number;
207
+ backends: readonly ModelBackend[];
208
+ renderer: Renderer;
209
+ }
210
+ declare class Live2dActorImpl implements Live2dActor {
211
+ #private;
212
+ readonly id: string;
213
+ readonly creationIndex: number;
214
+ constructor(options: CreateActorOptions | undefined, shared: Live2dActorImplOptions);
215
+ get model(): InternalModel | null;
216
+ get visible(): boolean;
217
+ set visible(value: boolean);
218
+ get opacity(): number;
219
+ set opacity(value: number);
220
+ get layer(): string;
221
+ set layer(value: string);
222
+ get order(): number;
223
+ set order(value: number);
224
+ getTransform(): ActorTransform;
225
+ setTransform(patch: Partial<ActorTransform>): void;
226
+ load(source: Parameters<Live2dActor["load"]>[0], resolver?: Parameters<Live2dActor["load"]>[1]): Promise<InternalModel>;
227
+ setParameter(id: string, value: number): void;
228
+ lookAt(stageX: number, stageY: number): void;
229
+ /** Internal: evaluate motion/physics and cache drawables for render. */
230
+ update(deltaTimeSeconds: number): DrawableMesh[] | null;
231
+ get lastDrawables(): DrawableMesh[] | null;
232
+ get slot(): ActorModelSlot;
233
+ hitTestStage(stageX: number, stageY: number): Omit<ActorHit, "actor"> | null;
234
+ destroy(): void;
235
+ }
236
+
237
+ interface CreateLive2dStageFullOptions extends CreateLive2dStageOptions {
238
+ backends?: ModelBackend[];
239
+ renderer?: Renderer;
240
+ prefer?: RendererKind[];
241
+ }
242
+ type PointerListener = (event: StagePointerEvent) => void;
243
+ declare class Live2dStageImpl implements Live2dStage {
244
+ #private;
245
+ constructor(options?: CreateLive2dStageFullOptions);
246
+ get actors(): readonly Live2dActor[];
247
+ get pointerTracking(): PointerTrackingPolicy;
248
+ set pointerTracking(policy: PointerTrackingPolicy);
249
+ get renderer(): Renderer;
250
+ mount(canvas: HTMLCanvasElement): Promise<void>;
251
+ createActor(options?: CreateActorOptions): Live2dActor;
252
+ removeActor(actorOrId: Live2dActor | string): void;
253
+ defineLayers(layers: readonly string[]): void;
254
+ update(deltaTimeSeconds: number): void;
255
+ render(): void;
256
+ start(): void;
257
+ pause(): void;
258
+ resume(): void;
259
+ stop(): void;
260
+ hitTest(stageX: number, stageY: number): ActorHit | null;
261
+ hitTestAll(stageX: number, stageY: number): readonly ActorHit[];
262
+ addEventListener(type: "pointerdown" | "pointermove" | "pointerup", listener: PointerListener): void;
263
+ removeEventListener(type: "pointerdown" | "pointermove" | "pointerup", listener: PointerListener): void;
264
+ destroy(): void;
265
+ }
266
+ declare function createLive2dStage(options?: CreateLive2dStageFullOptions): Live2dStage;
267
+
160
268
  interface CreateLive2DOptions {
161
269
  backends?: ModelBackend[];
162
- /** Defaults to `createRenderer({ prefer })` (async fallback on initialize). */
163
270
  renderer?: Renderer;
164
- /**
165
- * Renderer try order when `renderer` is omitted.
166
- * Default: `["webgpu", "webgl2", "canvas2d"]`.
167
- */
168
271
  prefer?: RendererKind[];
272
+ updateMode?: "auto" | "manual";
169
273
  }
170
274
  interface Live2DRuntime extends Live2DSession {
171
275
  readonly renderer: Renderer;
172
276
  readonly backends: readonly ModelBackend[];
277
+ readonly stage: Live2dStageImpl;
278
+ readonly actor: Live2dActorImpl;
173
279
  setParameter(id: string, value: number): void;
174
280
  listParameters(): readonly ParameterBinding[];
175
- /** Hit-test the current model in normalized canvas coordinates (-1..1). */
176
281
  hitTest(x: number, y: number): string | null;
177
- /** Motion groups from the loaded model settings. */
178
- listMotionGroups(): Record<string, readonly MotionDefinition[]>;
179
- /**
180
- * Load and play a motion from `settings.motionGroups[group][index]`.
181
- * Returns false if priority rejects or the entry is missing.
182
- */
282
+ listMotionGroups(): Record<string, readonly _doki_land_live2d_core.MotionDefinition[]>;
183
283
  playMotion(group: string, index?: number, options?: PlayMotionOptions): Promise<boolean>;
184
- /** Fade out (default) or hard-stop. Optional slot; omit = all slots. */
185
284
  stopMotion(opts?: {
186
285
  fade?: boolean;
187
286
  slot?: string;
188
287
  }): void;
189
- /** Active motion slots (idle + tap can both appear). */
190
288
  listPlayingMotions(): ReadonlyArray<{
191
289
  slot: string;
192
290
  group: string;
@@ -194,16 +292,13 @@ interface Live2DRuntime extends Live2DSession {
194
292
  time: number;
195
293
  priority: number;
196
294
  }>;
197
- /**
198
- * Draw one frame and encode the canvas as PNG.
199
- * Works for Canvas2D and WebGL2 (`preserveDrawingBuffer`).
200
- */
201
295
  capturePng(opts?: {
202
296
  mimeType?: "image/png";
203
297
  quality?: number;
204
298
  }): Promise<Blob>;
205
299
  }
206
- /** Wire moc backends and a renderer into one session. */
300
+
301
+ /** Wire moc backends and a renderer into one single-actor session. */
207
302
  declare function createLive2D(options?: CreateLive2DOptions): Live2DRuntime;
208
303
 
209
304
  /**
@@ -228,4 +323,4 @@ declare function focusParameterUpdates(parameters: readonly ParameterBinding[],
228
323
 
229
324
  declare const LIVE2D_VERSION: "0.0.0";
230
325
 
231
- export { type CreateLive2DOptions, LIVE2D_VERSION, type Live2DRuntime, type Motion3Clip, type MotionApplySample, MotionPlayer, MotionPriority, type PlayMotionOptions, blendMotionLayers, createLive2D, evaluateCurve, evaluateMotion3, focusParameterUpdates, parseMotion3 };
326
+ export { type CreateLive2DOptions, type CreateLive2dStageFullOptions, LIVE2D_VERSION, type Live2DRuntime, type Motion3Clip, type MotionApplySample, MotionPlayer, MotionPriority, type PlayMotionOptions, blendMotionLayers, createLive2D, createLive2dStage, evaluateCurve, evaluateMotion3, focusParameterUpdates, parseMotion3 };