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.
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 };
}
