Back to Body Journal
SOURCE / PINNED RELEASE

Made of little things.

Body Journal

Release
e8049f8da4e2…
Author-recorded commit
61c04bf0e8aa…
License
LICENSE
Author’s source reference
nostr://npub182jczunncwe0jn6frpqwq3e0qjws7yqqnc3auccqv9nte2dnd63scjm4rf/wss%3A%2F%2Fgit.napplet.soy%2F/n-6c4554844c7

Archive hash verified: 4369d778da046a8b…. The source-to-build association is the author’s claim; it has not been independently rebuilt.

src/skeleton-data.ts
import { SKELETON_MODEL } from './layers.js';
export interface SkeletonPart {
  id: string; label: string; part: string; bone: number; tail: number;
  vertices: number; triangles: number; positions: number; indices: number;
}
export interface SkeletonData { parts: SkeletonPart[]; buffer: ArrayBuffer; start: number }
export function decodeSkeleton(buffer: ArrayBuffer): SkeletonData {
  const decoder = new TextDecoder(), view = new DataView(buffer);
  if (decoder.decode(new Uint8Array(buffer, 0, 8)) !== 'BJBONE01') throw new Error('Unsupported skeleton asset.');
  const length = view.getUint32(8, true), start = 12 + length;
  const meta = JSON.parse(decoder.decode(new Uint8Array(buffer, 12, length)));
  if (meta.id !== SKELETON_MODEL || !Array.isArray(meta.parts) || !meta.parts.length) throw new Error('Skeleton version mismatch.');
  return { parts: meta.parts, buffer, start };
}