diff --git a/html/app.js b/html/app.js new file mode 100644 index 0000000..c078f29 --- /dev/null +++ b/html/app.js @@ -0,0 +1,842 @@ +/* ========================================================================== + SpineViewer 插件介绍网站脚本 + - 主题切换、图片放大、滚动出现 + - 查看器交互演示:官方 Raptor 示例(Spine 4.3.75-beta 导出) + 仅支持 Spine 4.3:使用 4.3 官方运行时 + 插件同款 WebGL 光栅化器, + WebGL 不可用时自动回退到 Canvas(与插件查看器的回退行为相同)。 + ========================================================================== */ +(function () { + 'use strict'; + + var root = document.documentElement; + var viewerEl = document.getElementById('viewerDemo'); + + function clamp(v, min, max) { return Math.min(max, Math.max(min, v)); } + + /* ---------------- 主题切换 ---------------- */ + + var themeToggle = document.getElementById('themeToggle'); + if (themeToggle) { + themeToggle.addEventListener('click', function () { + var next = root.dataset.theme === 'dark' ? 'light' : 'dark'; + root.dataset.theme = next; + try { localStorage.setItem('sv-site-theme', next); } catch (e) {} + refreshViewerColors(); + }); + } + + /* ---------------- 滚动出现(带兜底,内容不会一直隐藏) ---------------- */ + + var revealEls = Array.prototype.slice.call(document.querySelectorAll('.reveal')); + var revealTick = 0; + + function revealInViewport() { + var vh = window.innerHeight || document.documentElement.clientHeight; + for (var i = 0; i < revealEls.length; i++) { + var el = revealEls[i]; + if (el.classList.contains('visible')) continue; + var rect = el.getBoundingClientRect(); + if (rect.top < vh * 0.92 && rect.bottom > 0) el.classList.add('visible'); + } + } + + function revealAll() { + revealEls.forEach(function (el) { el.classList.add('visible'); }); + } + + function scheduleReveal() { + if (revealTick) return; + revealTick = window.requestAnimationFrame(function () { + revealTick = 0; + revealInViewport(); + }); + } + + revealInViewport(); + window.addEventListener('scroll', scheduleReveal, { passive: true }); + window.addEventListener('resize', scheduleReveal); + document.addEventListener('visibilitychange', function () { + if (document.visibilityState === 'visible') revealInViewport(); + }); + // 兜底:后台标签页 / 未触发滚动时,稍后也把全部内容显示出来 + setTimeout(revealAll, 2000); + + /* ---------------- 图片放大 ---------------- */ + + var lightbox = document.getElementById('lightbox'); + var lightboxImg = lightbox ? lightbox.querySelector('img') : null; + + function closeLightbox() { + if (!lightbox || lightbox.hidden) return; + lightbox.hidden = true; + lightboxImg.removeAttribute('src'); + document.body.style.overflow = ''; + } + + if (lightbox) { + Array.prototype.forEach.call(document.querySelectorAll('img.zoomable'), function (img) { + img.addEventListener('click', function () { + lightboxImg.src = img.currentSrc || img.src; + lightboxImg.alt = img.alt || ''; + lightbox.hidden = false; + document.body.style.overflow = 'hidden'; + }); + }); + lightbox.addEventListener('click', closeLightbox); + window.addEventListener('keydown', function (e) { + if (e.key === 'Escape') closeLightbox(); + }); + } + + /* ==================================================================== + 查看器交互演示(官方 Raptor 示例 · Spine 4.3 运行时渲染) + ==================================================================== */ + + if (!viewerEl) return; + + var spine = window.spine; + var svLibs = window.__svLibs || {}; + var FPS = 30; + var EPS = 1e-6; + var RUNTIME_DIR = '4.3'; // 演示只使用 4.3 + var DEFAULT_ANIMATION = 'walk'; + var DEMO_FILES = { + json: 'assets/demo/raptor/raptor-pro.json', + atlas: 'assets/demo/raptor/raptor.atlas', + texture: 'assets/demo/raptor/raptor.png' + }; + + var stageEl = document.getElementById('demoStage'); + var canvas = document.getElementById('demoCanvas'); + var ctx = canvas.getContext('2d'); + + var playBtn = document.getElementById('demoPlay'); + var loopCheck = document.getElementById('demoLoop'); + var speedRange = document.getElementById('demoSpeed'); + var speedVal = document.getElementById('demoSpeedVal'); + var bgCheck = document.getElementById('demoBg'); + var reloadBtn = document.getElementById('demoReload'); + var skinSelect = document.getElementById('demoSkin'); + var animListEl = document.getElementById('demoAnimList'); + var statusEl = document.getElementById('demoStatus'); + var durationEl = document.getElementById('demoDuration'); + var rulerEl = document.getElementById('demoRuler'); + var timelineEl = document.getElementById('demoTimeline'); + var keysEl = document.getElementById('demoKeys'); + var readoutEl = document.getElementById('demoReadout'); + var versionEl = document.getElementById('demoVersion'); + + var state = { + playing: true, + loop: true, + speed: 1, + background: false, + seeking: false, + animIndex: 0, + panX: 0, + panY: 0, + zoom: 1 + }; + + if (window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches) { + state.playing = false; + } + + var runtime = { + data: null, + skeleton: null, + animState: null, + atlas: null, + texture: null, + renderer: null, + canvasOnly: false, + ready: false, + loading: false + }; + + var colors = { bg: '#1e1e1e' }; + var dpr = 1; + var fitScale = 1, fitCx = 0, fitCy = 0; + var statusTimer = 0; + var drawErrorReported = false; + var lastFrameTime = performance.now(); + var needsDraw = true; // 暂停或没有交互时不再重绘 + var frameHandle = 0; // rAF 句柄:空闲时停止循环,避免持续占用 CPU + + // 需要重绘时唤醒渲染循环 + function wake() { + needsDraw = true; + if (!frameHandle) frameHandle = requestAnimationFrame(tick); + } + + function refreshViewerColors() { + var cs = getComputedStyle(viewerEl); + colors.bg = (cs.getPropertyValue('--v-bg') || '#1e1e1e').trim(); + wake(); + } + + // 控制画布总像素,避免高分辨率屏上占用过多显存 + function pickDpr(width, height) { + var value = Math.min(window.devicePixelRatio || 1, 2); + var maxPixels = 900000; + if (width > 0 && height > 0 && width * height * value * value > maxPixels) { + value = Math.max(1, Math.sqrt(maxPixels / (width * height))); + } + return value; + } + + /* ---------------- 状态提示 ---------------- */ + + function setStatus(message, holdMs) { + statusEl.textContent = message; + statusEl.classList.add('show'); + clearTimeout(statusTimer); + statusTimer = 0; + if (holdMs > 0 && isFinite(holdMs)) { + statusTimer = setTimeout(function () { statusEl.classList.remove('show'); }, holdMs); + } + } + + /* ---------------- 时间与刻度(与查看器同算法) ---------------- */ + + function frameOf(seconds) { return Math.round((seconds || 0) * FPS); } + + function formatSeconds(seconds) { + var value = Math.max(0, Number(seconds) || 0); + if (value < 10) return value.toFixed(2) + ' 秒'; + if (value < 60) return value.toFixed(1) + ' 秒'; + var minutes = Math.floor(value / 60); + return minutes + ':' + (value % 60).toFixed(1).padStart(4, '0'); + } + + function niceTickInterval(totalSeconds) { + var target = totalSeconds / 8; + var choices = [1 / 30, 0.1, 0.2, 0.5, 1, 2, 5, 10, 15, 30, 60, 120, 300, 600]; + for (var i = 0; i < choices.length; i++) { + if (choices[i] >= target) return choices[i]; + } + return Math.pow(10, Math.ceil(Math.log10(target))); + } + + function currentAnimation() { + if (!runtime.data || !runtime.data.animations) return null; + return runtime.data.animations[state.animIndex] || null; + } + + function animationDuration(anim) { + if (!anim) return 0; + var declared = Number(anim.duration); + if (Number.isFinite(declared) && declared > EPS) return declared; + var times = collectKeyframeTimes(anim); + return times.length ? Math.max.apply(null, times) : 0; + } + + function isStatic() { return animationDuration(currentAnimation()) <= EPS; } + + function snapTimeToFrame(seconds) { + var duration = animationDuration(currentAnimation()); + var lastFrame = Math.max(0, frameOf(duration)); + var frame = clamp(Math.round((Number(seconds) || 0) * FPS), 0, lastFrame); + return frame / FPS; + } + + // 与查看器一致:收集各 timeline 的关键帧时间 + function collectKeyframeTimes(anim) { + if (!anim || !anim.timelines) return []; + var times = new Set(); + for (var i = 0; i < anim.timelines.length; i++) { + var tl = anim.timelines[i]; + var frames = tl && tl.frames; + if (!frames || !frames.length) continue; + try { + if (Array.isArray(frames[0])) { + for (var f = 0; f < frames.length; f++) { + var frame = frames[f]; + if (frame && Number.isFinite(frame[0])) times.add(frame[0]); + } + continue; + } + var frameCount = typeof tl.getFrameCount === 'function' ? tl.getFrameCount() : 0; + var entries = typeof tl.getFrameEntries === 'function' + ? tl.getFrameEntries() + : (frameCount > 0 ? Math.max(1, Math.round(frames.length / frameCount)) : 1); + for (var k = 0; k < frameCount; k++) { + var value = frames[k * entries]; + if (Number.isFinite(value)) times.add(value); + } + } catch (e) { /* 忽略异常的 timeline */ } + } + return Array.from(times).filter(function (time) { return time >= 0; }).sort(function (a, b) { return a - b; }); + } + + function renderTimeRuler() { + rulerEl.innerHTML = ''; + var duration = animationDuration(currentAnimation()); + if (duration <= EPS) { + var staticLabel = document.createElement('span'); + staticLabel.className = 'tick-label first'; + staticLabel.style.left = '0%'; + staticLabel.textContent = '0 秒(静帧)'; + rulerEl.appendChild(staticLabel); + return; + } + var major = niceTickInterval(duration); + var minor = major / 5; + var count = Math.floor(duration / minor); + // 窄屏下隔一个主刻度显示标签,避免文字互相叠压 + var skipLabels = rulerEl.clientWidth > 0 && rulerEl.clientWidth < 430 ? 2 : 1; + for (var i = 0; i <= count; i++) { + var value = Math.min(i * minor, duration); + var percent = (value / duration) * 100; + var isMajor = i % 5 === 0 || Math.abs(value - duration) < 1e-8; + var tick = document.createElement('span'); + tick.className = 'tick' + (isMajor ? ' major' : ''); + tick.style.left = percent + '%'; + rulerEl.appendChild(tick); + if (isMajor) { + var isEnd = Math.abs(value - duration) < 1e-8; + if (!isEnd && (i / 5) % skipLabels !== 0) continue; + var label = document.createElement('span'); + label.className = 'tick-label' + (i === 0 ? ' first' : (isEnd ? ' last' : '')); + label.style.left = percent + '%'; + label.textContent = value < 10 ? value.toFixed(1) + 's' : Math.round(value) + 's'; + rulerEl.appendChild(label); + } + if (Math.abs(value - duration) < 1e-8) break; + } + if (Math.abs(duration / minor - Math.round(duration / minor)) > 1e-8) { + var endTick = document.createElement('span'); + endTick.className = 'tick major'; + endTick.style.left = '100%'; + rulerEl.appendChild(endTick); + var endLabel = document.createElement('span'); + endLabel.className = 'tick-label last'; + endLabel.style.left = '100%'; + endLabel.textContent = duration < 10 ? duration.toFixed(2) + 's' : duration.toFixed(1) + 's'; + rulerEl.appendChild(endLabel); + } + } + + function renderKeyframes() { + keysEl.innerHTML = ''; + var anim = currentAnimation(); + var duration = animationDuration(anim); + if (!anim) return; + if (duration <= EPS) { + var span = document.createElement('span'); + span.style.left = '0%'; + span.title = '静帧姿势 · 第 1 帧'; + keysEl.appendChild(span); + return; + } + var sorted = collectKeyframeTimes(anim).filter(function (time) { return time <= duration; }); + // 限制数量,避免过多标记 + var maxMarkers = 200; + var step = Math.max(1, Math.ceil(sorted.length / maxMarkers)); + for (var i = 0; i < sorted.length; i += step) { + var keyframeTime = sorted[i]; + var mark = document.createElement('span'); + mark.style.left = (keyframeTime / duration) * 100 + '%'; + mark.title = '关键帧 · ' + formatSeconds(keyframeTime) + ' · 第 ' + frameOf(keyframeTime) + ' 帧'; + keysEl.appendChild(mark); + } + } + + // 仅支持 4.3:轨道查询使用 getTrack + function trackEntry() { + return runtime.animState ? (runtime.animState.getTrack(0) || null) : null; + } + + function currentTrackTime() { + var entry = trackEntry(); + if (!entry) return 0; + var raw = Number.isFinite(entry.trackTime) ? entry.trackTime : 0; + var duration = animationDuration(currentAnimation()); + if (state.loop && duration > EPS) return raw % duration; + return Math.max(0, Math.min(raw, duration)); + } + + function updateReadout() { + var duration = animationDuration(currentAnimation()); + if (duration <= EPS) { + readoutEl.textContent = '静帧 · 1 / 1 帧'; + if (!state.seeking) timelineEl.value = '0'; + return; + } + var time = clamp(currentTrackTime(), 0, duration); + readoutEl.textContent = formatSeconds(time) + ' / ' + formatSeconds(duration) + + ' · ' + frameOf(time) + ' / ' + frameOf(duration) + ' 帧'; + if (!state.seeking) timelineEl.value = String(clamp(time / duration, 0, 1)); + } + + function updatePlayButton() { + if (!runtime.ready || isStatic()) { + playBtn.textContent = runtime.ready ? '▮ 静帧' : '⏸ 暂停'; + playBtn.disabled = true; + return; + } + playBtn.disabled = false; + playBtn.textContent = state.playing ? '⏸ 暂停' : '▶ 播放'; + } + + function updateTimelineUI() { + var duration = animationDuration(currentAnimation()); + var staticAnim = duration <= EPS; + durationEl.textContent = staticAnim + ? '静帧 · 1 帧' + : '时长 ' + formatSeconds(duration) + ' · ' + frameOf(duration) + ' 帧'; + timelineEl.disabled = staticAnim; + timelineEl.value = '0'; + updatePlayButton(); + renderTimeRuler(); + renderKeyframes(); + updateReadout(); + } + + function highlightAnimationItem() { + Array.prototype.forEach.call(animListEl.children, function (item, i) { + item.classList.toggle('active', i === state.animIndex); + item.setAttribute('aria-selected', i === state.animIndex ? 'true' : 'false'); + }); + } + + function selectAnimation(index) { + state.animIndex = index; + var anim = currentAnimation(); + if (runtime.animState && anim) { + var entry = runtime.animState.setAnimation(0, anim.name, state.loop); + if (entry) entry.loop = state.loop; + } + highlightAnimationItem(); + updateTimelineUI(); + wake(); + } + + /* ---------------- 骨架姿态与世界变换(4.3 API) ---------------- */ + + function updateWorld() { + if (runtime.skeleton) runtime.skeleton.updateWorldTransform(spine.Physics.update); + } + + function applyPose() { + if (!runtime.animState || !runtime.skeleton) return; + runtime.animState.apply(runtime.skeleton); + updateWorld(); + } + + function getBounds(sk) { + if (!sk || typeof sk.getBoundsRect !== 'function') return null; + var rect = sk.getBoundsRect(); + if (!rect || !(rect.width > 0) || !(rect.height > 0)) return null; + return { x: rect.x, y: rect.y, width: rect.width, height: rect.height }; + } + + function fitToCanvas() { + if (!runtime.skeleton) return; + var bundle = getBounds(runtime.skeleton); + var cw = canvas.clientWidth, ch = canvas.clientHeight; + if (!bundle || !cw || !ch) { + fitScale = 1; fitCx = 0; fitCy = 0; + return; + } + // 自动适配并居中;顶部控制栏与底部时间轴是浮动面板,按其实际高度留出空间 + var toolbarEl = viewerEl.querySelector('.v-toolbar'); + var timelineBar = viewerEl.querySelector('.v-timeline'); + var padTop = (toolbarEl ? toolbarEl.offsetHeight : 46) + 24; + var padBottom = (timelineBar ? timelineBar.offsetHeight : 68) + 24; + var pad = 0.06; + var availW = cw * (1 - pad * 2); + var availH = Math.max(60, ch - padTop - padBottom); + var scale = Math.min(availW / bundle.width, availH / bundle.height); + fitScale = (isFinite(scale) && scale > 0) ? scale : 1; + fitCx = bundle.x + bundle.width / 2; + fitCy = bundle.y + bundle.height / 2 - ((padBottom - padTop) / 2) / fitScale; + } + + /* ---------------- 渲染 ---------------- */ + + function buildRenderer(context, allowWebGL) { + if (!svLibs.clipping || typeof svLibs.clipping.createRenderer !== 'function') throw new Error('渲染模块未加载'); + var renderer; + if (allowWebGL) { + renderer = svLibs.clipping.createRenderer(spine, context, RUNTIME_DIR); + } else { + // 临时停用 WebGL 光栅化附着,得到纯 Canvas 渲染器 + var rasterizer = svLibs.rasterizer || {}; + var originalAttach = rasterizer.attach; + rasterizer.attach = function (r) { return r; }; + try { renderer = svLibs.clipping.createRenderer(spine, context, RUNTIME_DIR); } + finally { if (originalAttach) rasterizer.attach = originalAttach; } + } + // 示例为普通 Alpha 导出(atlas 未标注 pma),预乘保持关闭 + renderer.premultipliedAlpha = false; + return renderer; + } + + function drawSkeletonSafely() { + try { + runtime.renderer.draw(runtime.skeleton); + } catch (e) { + if (!runtime.canvasOnly) { + // WebGL 光栅化不可用(缺少 WebGL、纹理受限等)时回退到 Canvas 路径 + runtime.canvasOnly = true; + console.warn('WebGL 光栅化不可用,已回退到 Canvas 渲染:', (e && e.message) || e); + try { if (runtime.renderer && runtime.renderer.dispose) runtime.renderer.dispose(); } catch (e2) { /* ignore */ } + runtime.renderer = buildRenderer(ctx, false); + runtime.renderer.draw(runtime.skeleton); + return; + } + if (!drawErrorReported) { + drawErrorReported = true; + console.error(e); + setStatus('渲染失败:' + ((e && e.message) || e), 0); + } + } + } + + function draw() { + var cw = canvas.clientWidth, ch = canvas.clientHeight; + if (!cw || !ch) return; + var pixelWidth = Math.round(cw * dpr), pixelHeight = Math.round(ch * dpr); + if (canvas.width !== pixelWidth) canvas.width = pixelWidth; + if (canvas.height !== pixelHeight) canvas.height = pixelHeight; + + ctx.setTransform(dpr, 0, 0, dpr, 0, 0); + ctx.clearRect(0, 0, cw, ch); + ctx.fillStyle = colors.bg; + ctx.fillRect(0, 0, cw, ch); + if (!runtime.ready || !runtime.skeleton || !runtime.renderer) return; + + // 与查看器相同:居中 + 缩放 + Y 翻转;panX/panY 为屏幕坐标偏移 + var scale = fitScale * state.zoom; + ctx.save(); + ctx.translate(cw / 2 + state.panX, ch / 2 + state.panY); + ctx.scale(scale, -scale); + ctx.translate(-fitCx, -fitCy); + if (state.background && svLibs.background) { + svLibs.background.drawCheckerboard(ctx, canvas.width, canvas.height); + } + drawSkeletonSafely(); + ctx.restore(); + } + + /* ---------------- 主循环 ---------------- */ + + function tick(now) { + frameHandle = 0; + var dt = Math.min(0.05, (now - lastFrameTime) / 1000); + lastFrameTime = now; + + var advancing = false; + if (runtime.ready) { + var duration = animationDuration(currentAnimation()); + advancing = state.playing && !state.seeking && state.speed > 0 && duration > EPS; + runtime.animState.timeScale = advancing ? state.speed : 0; + runtime.animState.update(dt); + runtime.animState.apply(runtime.skeleton); + updateWorld(); + if (advancing) needsDraw = true; + + // 非循环播放到结尾时停止推进(与查看器行为一致) + var entry = trackEntry(); + if (entry && !state.loop && duration > EPS && entry.trackTime >= duration - 1e-4 && state.playing) { + state.playing = false; + updatePlayButton(); + needsDraw = true; + advancing = false; + } + } + + if (needsDraw) { + draw(); + updateReadout(); + needsDraw = false; + } + // 播放中持续刷新;暂停或空闲时停在这里,等待 wake() 唤醒 + if (advancing) frameHandle = requestAnimationFrame(tick); + } + + /* ---------------- 控件事件 ---------------- */ + + function togglePlay() { + if (!runtime.ready || isStatic()) return; + var duration = animationDuration(currentAnimation()); + var entry = trackEntry(); + // 播放到结尾后再次播放:从头发起 + if (!state.playing && entry && duration > EPS && entry.trackTime >= duration - 1e-4) { + var anim = currentAnimation(); + runtime.animState.setAnimation(0, anim.name, state.loop); + var next = trackEntry(); + if (next) next.loop = state.loop; + } + state.playing = !state.playing; + updatePlayButton(); + wake(); + } + + playBtn.addEventListener('click', togglePlay); + + loopCheck.addEventListener('change', function () { + state.loop = loopCheck.checked; + var entry = trackEntry(); + if (entry) entry.loop = state.loop; + }); + + speedRange.addEventListener('input', function () { + state.speed = Number(speedRange.value); + speedVal.textContent = state.speed.toFixed(1) + 'x'; + }); + + bgCheck.addEventListener('change', function () { + state.background = bgCheck.checked; + wake(); + }); + + skinSelect.addEventListener('change', function () { + if (!runtime.skeleton) return; + runtime.skeleton.setSkinByName(skinSelect.value); + runtime.skeleton.setupPoseSlots(); + setStatus('皮肤:' + skinSelect.value, 1600); + wake(); + }); + + reloadBtn.addEventListener('click', function () { + state.panX = 0; + state.panY = 0; + state.zoom = 1; + if (runtime.ready) { + selectAnimation(state.animIndex); + fitToCanvas(); + } + setStatus('已重新加载目录', 1800); + }); + + // 时间轴:拖动时暂停推进,并按帧对齐(与查看器一致) + timelineEl.addEventListener('pointerdown', function () { state.seeking = true; }); + timelineEl.addEventListener('input', function () { + if (!runtime.ready || isStatic()) return; + state.seeking = true; + var duration = animationDuration(currentAnimation()); + var time = snapTimeToFrame(Number(timelineEl.value) * duration); + var entry = trackEntry(); + if (entry) entry.trackTime = time; + applyPose(); + updateReadout(); + wake(); + }); + timelineEl.addEventListener('change', function () { state.seeking = false; }); + window.addEventListener('pointerup', function () { state.seeking = false; }); + + // 画布:左键拖拽平移,滚轮缩放,右键回到中心 + var dragging = false, dragX = 0, dragY = 0, startPanX = 0, startPanY = 0; + + stageEl.addEventListener('pointerdown', function (e) { + if (e.button !== 0) return; + dragging = true; + dragX = e.clientX; + dragY = e.clientY; + startPanX = state.panX; + startPanY = state.panY; + stageEl.classList.add('dragging'); + if (stageEl.setPointerCapture) stageEl.setPointerCapture(e.pointerId); + }); + + stageEl.addEventListener('pointermove', function (e) { + if (!dragging) return; + state.panX = startPanX + (e.clientX - dragX); + state.panY = startPanY + (e.clientY - dragY); + wake(); + }); + + function endDrag() { + dragging = false; + stageEl.classList.remove('dragging'); + } + + stageEl.addEventListener('pointerup', endDrag); + stageEl.addEventListener('pointercancel', endDrag); + + stageEl.addEventListener('wheel', function (e) { + e.preventDefault(); + state.zoom = clamp(state.zoom * Math.exp(-e.deltaY * 0.0012), 0.3, 6); + wake(); + }, { passive: false }); + + stageEl.addEventListener('contextmenu', function (e) { + e.preventDefault(); + state.panX = 0; + state.panY = 0; + state.zoom = 1; + wake(); + setStatus('已回到画布中心', 1600); + }); + + // 空格:鼠标悬停或演示区聚焦时播放/暂停 + var hovering = false; + viewerEl.addEventListener('pointerenter', function () { hovering = true; }); + viewerEl.addEventListener('pointerleave', function () { hovering = false; }); + + window.addEventListener('keydown', function (e) { + if (e.code !== 'Space' && e.key !== ' ') return; + var active = document.activeElement; + if (active && viewerEl.contains(active) && active !== viewerEl && active.closest('button, select, input, summary, a')) return; + if (!hovering && (!active || !viewerEl.contains(active))) return; + e.preventDefault(); + togglePlay(); + }); + + /* ---------------- 示例数据加载 ---------------- */ + + function loadImage(src) { + return new Promise(function (resolve, reject) { + var image = new Image(); + image.onload = function () { resolve(image); }; + image.onerror = function () { reject(new Error('贴图加载失败')); }; + image.src = src; + }); + } + + function fetchText(url) { + return fetch(url).then(function (response) { + if (!response.ok) throw new Error('HTTP ' + response.status); + return response.text(); + }); + } + + // 内嵌副本按需加载:file:// 或原始文件读取失败时才会用到 + function ensureEmbeddedData() { + if (window.SPINE_DEMO_DATA) return Promise.resolve(window.SPINE_DEMO_DATA); + return new Promise(function (resolve, reject) { + var script = document.createElement('script'); + script.src = 'assets/demo/raptor/embedded.js'; + script.onload = function () { + if (window.SPINE_DEMO_DATA) resolve(window.SPINE_DEMO_DATA); + else reject(new Error('缺少内嵌示例数据')); + }; + script.onerror = function () { reject(new Error('缺少内嵌示例数据')); }; + document.head.appendChild(script); + }); + } + + // http 环境读取同目录下的原始文件;file:// 下浏览器禁止 fetch 本地文本,改用内嵌副本 + function loadDemoData() { + if (location.protocol === 'file:') { + return ensureEmbeddedData().then(function (embedded) { + return { data: embedded.data, atlas: embedded.atlas, texture: embedded.texture || DEMO_FILES.texture, source: 'embedded' }; + }); + } + return Promise.all([fetchText(DEMO_FILES.json), fetchText(DEMO_FILES.atlas)]).then(function (texts) { + return { data: JSON.parse(texts[0]), atlas: texts[1], texture: DEMO_FILES.texture, source: 'file' }; + }).catch(function () { + return ensureEmbeddedData().then(function (embedded) { + return { data: embedded.data, atlas: embedded.atlas, texture: embedded.texture || DEMO_FILES.texture, source: 'embedded' }; + }); + }); + } + + function fillSkinSelect() { + skinSelect.innerHTML = ''; + var skins = (runtime.data && runtime.data.skins) || []; + skins.forEach(function (skin) { + var option = document.createElement('option'); + option.value = skin.name; + option.textContent = skin.name; + skinSelect.appendChild(option); + }); + skinSelect.disabled = skins.length === 0; + } + + function fillAnimationList() { + animListEl.innerHTML = ''; + var animations = (runtime.data && runtime.data.animations) || []; + animations.forEach(function (anim, i) { + var item = document.createElement('button'); + item.type = 'button'; + item.className = 'v-anim-item'; + item.textContent = anim.name; + item.title = anim.name; + item.setAttribute('role', 'option'); + item.setAttribute('aria-selected', 'false'); + item.addEventListener('click', function () { selectAnimation(i); }); + animListEl.appendChild(item); + }); + } + + async function initDemo() { + if (runtime.ready || runtime.loading) return; + runtime.loading = true; + setStatus('正在加载官方示例 Raptor…', 0); + try { + if (!spine || typeof spine.SkeletonJson !== 'function') throw new Error('Spine 运行时未加载'); + var payload = await loadDemoData(); + var image = await loadImage(payload.texture); + + runtime.texture = new spine.CanvasTexture(image); + // 仅支持 4.3:TextureAtlas 构造器只接收文本,纹理通过 page.setTexture 绑定 + runtime.atlas = new spine.TextureAtlas(payload.atlas); + for (var p = 0; p < runtime.atlas.pages.length; p++) { + runtime.atlas.pages[p].setTexture(runtime.texture); + } + var skeletonJson = new spine.SkeletonJson(new spine.AtlasAttachmentLoader(runtime.atlas)); + runtime.data = skeletonJson.readSkeletonData(payload.data); + runtime.skeleton = new spine.Skeleton(runtime.data); + runtime.animState = new spine.AnimationState(new spine.AnimationStateData(runtime.data)); + runtime.renderer = buildRenderer(ctx, true); + + // 默认皮肤:优先使用数据声明的默认皮肤,没有则用列表第一个 + var defaultSkin = runtime.data.defaultSkin || (runtime.data.skins && runtime.data.skins[0]) || null; + fillSkinSelect(); + if (defaultSkin) { + runtime.skeleton.setSkin(defaultSkin); + skinSelect.value = defaultSkin.name; + } + runtime.skeleton.setupPoseSlots(); + + fillAnimationList(); + // 默认播放 walk + var walkIndex = 0; + for (var i = 0; i < runtime.data.animations.length; i++) { + if (runtime.data.animations[i].name === DEFAULT_ANIMATION) { walkIndex = i; break; } + } + state.animIndex = walkIndex; + selectAnimation(walkIndex); + // 与查看器一致:先应用姿态并更新世界变换,再按包围盒自动适配 + applyPose(); + + versionEl.textContent = 'Spine ' + (runtime.data.version || ''); + runtime.ready = true; + dpr = pickDpr(canvas.clientWidth, canvas.clientHeight); + fitToCanvas(); + updateTimelineUI(); + wake(); + setStatus('已加载官方示例 Raptor · ' + runtime.data.animations.length + ' 个动画 · ' + + (payload.source === 'embedded' ? '内嵌数据' : '本地文件'), 3200); + } catch (e) { + console.error(e); + setStatus('示例加载失败:' + ((e && e.message) || e), 0); + } finally { + runtime.loading = false; + } + } + + /* ---------------- 尺寸与启动 ---------------- */ + + function resize() { + dpr = pickDpr(canvas.clientWidth, canvas.clientHeight); + fitToCanvas(); + renderTimeRuler(); // 宽度变化时重新决定刻度标签密度 + wake(); + } + + if ('ResizeObserver' in window) { + new ResizeObserver(resize).observe(stageEl); + } else { + window.addEventListener('resize', resize); + } + + refreshViewerColors(); + dpr = pickDpr(canvas.clientWidth, canvas.clientHeight); + updatePlayButton(); + wake(); + initDemo(); +})(); diff --git a/html/assets/demo/raptor/LICENSE.txt b/html/assets/demo/raptor/LICENSE.txt new file mode 100644 index 0000000..517ff9f --- /dev/null +++ b/html/assets/demo/raptor/LICENSE.txt @@ -0,0 +1,26 @@ +Spine Runtimes License Agreement +Last updated April 5, 2025. Replaces all prior versions. + +Copyright (c) 2013-2025, Esoteric Software LLC + +Integration of the Spine Runtimes into software or otherwise creating +derivative works of the Spine Runtimes is permitted under the terms and +conditions of Section 2 of the Spine Editor License Agreement: +https://esotericsoftware.com/spine-editor-license + +Otherwise, it is permitted to integrate the Spine Runtimes into software +or otherwise create derivative works of the Spine Runtimes (collectively, +"Products"), provided that each user of the Products must obtain their own +Spine Editor license and redistribution of the Products in any form must +include this license and copyright notice. + +THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, +BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/html/assets/demo/raptor/embedded.js b/html/assets/demo/raptor/embedded.js new file mode 100644 index 0000000..d50d296 --- /dev/null +++ b/html/assets/demo/raptor/embedded.js @@ -0,0 +1,12 @@ +// 官方 Raptor 示例(Spine 4.3.75-beta 导出)的 JS 内嵌副本。 +// 用途:以 file:// 直接打开页面时,浏览器不允许 fetch 本地文本,本地图片也会污染画布, +// 这里预先内嵌 JSON、Atlas 与贴图的 data URL,保证离线与 file:// 场景下同样可以渲染。 +// 数据来源:Esoteric Software spine-runtimes 仓库 examples/raptor/export +// 固定提交:ba17cf88b198c6531c6c51d8d4e1e4b3c3ab47dd(Spine Runtimes License,见 LICENSE.txt)。 +window.SPINE_DEMO_DATA = { + name: "Raptor", + version: "4.3.75-beta", + data: {"skeleton":{"hash":"OKE722Fi+rc","spine":"4.3.75-beta","x":-809.163,"y":-73.5388,"width":1287.646,"height":1039.443,"images":"./images/","audio":null},"bones":[{"name":"root"},{"name":"hip","parent":"root","rotation":8.95755,"x":-122.52013,"y":392.648,"color":"fbff00ff"},{"name":"torso1","parent":"hip","length":126.26,"rotation":-4.98,"x":30.04,"y":-0.4,"color":"eaff00ff"},{"name":"saddle","parent":"torso1","length":50.92,"rotation":91.8,"x":25.310295,"y":70.64713,"color":"ff7300ff"},{"name":"spineboy-hip","parent":"saddle","length":0.53,"rotation":90.02,"x":81.88,"y":2.69,"color":"e8ff00ff"},{"name":"spineboy-torso","parent":"spineboy-hip","length":122.45,"rotation":-75.86,"x":1.05,"y":-2.11,"color":"e8ff00ff"},{"name":"torso2","parent":"torso1","length":121.2,"rotation":39.85,"x":126.26,"y":-0.38,"color":"e9ff00ff"},{"name":"neck","parent":"torso2","length":70.6,"rotation":41.38,"x":121.2,"y":0.35,"color":"eaff00ff"},{"name":"head","parent":"neck","length":105.51,"rotation":9.83,"x":70.6,"y":0.04,"color":"eaff00ff"},{"name":"horn-back","parent":"head","length":73.78,"rotation":44.32,"x":104.76395,"y":-242.01355,"color":"e07800ff"},{"name":"spineboy-back-arm-target","parent":"horn-back","rotation":-133.55,"x":232.68,"y":245.85,"inherit":"noScale","color":"ff3f00ff"},{"name":"back-arm","parent":"spineboy-torso","length":67.21,"rotation":-120.9,"x":96.33,"y":-38.47,"color":"e07800ff"},{"name":"back-bracer","parent":"back-arm","length":43.69,"rotation":17.48,"x":67.22,"y":-0.32,"color":"e07800ff"},{"name":"back-arm1","parent":"torso2","length":109.56,"rotation":-124.72,"x":83.67854,"y":-83.23534,"color":"e07800ff"},{"name":"back-arm2","parent":"back-arm1","length":85.8,"rotation":123.56,"x":109.57,"y":-0.01,"color":"e07800ff"},{"name":"back-foot-target","parent":"root","x":33.44,"y":30.82,"color":"ff3f00ff","icon":"ik"},{"name":"back-leg-target","parent":"back-foot-target","x":-127.51,"y":75.99,"color":"ff3f00ff","icon":"ik"},{"name":"back-leg1","parent":"hip","length":226.28,"rotation":-54.76,"x":55.19,"y":-71.25,"color":"e07800ff"},{"name":"back-leg2","parent":"back-leg1","length":172.59,"rotation":-92.25,"x":226.32,"y":0.23,"color":"e07800ff"},{"name":"back-leg3","parent":"back-leg2","length":103.05,"rotation":82.82,"x":172.32,"y":2.21,"color":"e07800ff"},{"name":"back-foot1","parent":"back-leg3","length":84.51,"rotation":75.43,"x":102.38,"y":-0.03,"color":"e07800ff"},{"name":"back-foot2","parent":"back-foot1","length":102.31,"rotation":-6.14,"x":84.5,"y":-0.35,"inherit":"noRotationOrReflection","color":"e07800ff"},{"name":"back-hand","parent":"back-arm2","length":45.81,"rotation":-76.28,"x":85.8,"y":0.11,"color":"e07800ff"},{"name":"back-hand2","parent":"spineboy-back-arm-target","length":41.98,"rotation":27.77738,"x":-0.02857208,"y":0.05377197,"inherit":"noRotationOrReflection","color":"e07800ff"},{"name":"spineboy-back-foot-target","parent":"saddle","x":-30.44,"y":-100.08,"color":"ff3f00ff"},{"name":"back-thigh","parent":"spineboy-hip","length":71.16,"rotation":160.75,"x":-9.57,"y":2.32,"color":"e07800ff"},{"name":"back-knee","parent":"back-thigh","length":97.17,"rotation":-54.98,"x":71.16,"y":-0.28,"color":"e07800ff"},{"name":"neck2","parent":"spineboy-torso","length":32.05,"rotation":-45.23,"x":113.44,"y":-15.22,"color":"e8ff00ff"},{"name":"head2","parent":"neck2","length":167.1939,"rotation":11.66,"x":25.68,"y":-0.77,"inherit":"noScale","color":"e7ff00ff"},{"name":"bone","parent":"head2","length":39.91506,"rotation":-35.22991,"x":166.09326,"y":-79.27026,"color":"e7ff00ff"},{"name":"bone2","parent":"bone","length":47.4192,"rotation":51.7975,"x":39.9151,"color":"e7ff00ff"},{"name":"bone3","parent":"head2","length":45.40962,"rotation":-12.343472,"x":179.80286,"y":-20.90898,"color":"e7ff00ff"},{"name":"bone4","parent":"bone3","length":43.31327,"rotation":42.0083,"x":44.63544,"y":0.303009,"color":"e7ff00ff"},{"name":"bone5","parent":"bone4","length":44.87501,"rotation":48.80142,"x":43.31311,"color":"e7ff00ff"},{"name":"horn-front","parent":"head","length":87.48,"rotation":49.36,"x":87.97336,"y":-235.14723,"color":"15ff00ff"},{"name":"spineboy-front-arm-target","parent":"horn-front","rotation":-138.6,"x":294.58,"y":234.18,"color":"ff3f00ff"},{"name":"front-arm","parent":"spineboy-torso","length":74.52,"rotation":-118.17,"x":101.38,"y":9.79,"color":"14ff00ff"},{"name":"front-bracer","parent":"front-arm","length":39.85,"rotation":20.31,"x":74.52,"y":-0.42,"color":"14ff00ff"},{"name":"front-arm1","parent":"torso2","length":109.99,"rotation":224.54,"x":73.00035,"y":-72.46397,"color":"15ff00ff"},{"name":"front-arm2","parent":"front-arm1","length":86.33,"rotation":105.24,"x":109.99,"y":0.2,"color":"15ff00ff"},{"name":"front-foot-target","parent":"root","rotation":-6.956577,"x":-45.8,"y":-28.67,"color":"ff3f00ff","icon":"ik"},{"name":"front-leg-target","parent":"front-foot-target","x":-106.06,"y":115.58,"color":"ff3f00ff","icon":"ik"},{"name":"front-leg1","parent":"hip","length":251.75,"rotation":-51.51,"x":27.36,"y":-28.28,"color":"15ff00ff"},{"name":"front-leg2","parent":"front-leg1","length":208.55,"rotation":261.94,"x":251.04,"y":0.16,"color":"15ff00ff"},{"name":"front-leg3","parent":"front-leg2","length":118.18,"rotation":85.46,"x":208.5,"y":-1.64,"color":"15ff00ff"},{"name":"front-foot1","parent":"front-leg3","length":57.79,"rotation":54.46,"x":118.2,"y":-0.79,"color":"15ff00ff"},{"name":"front-foot2","parent":"front-foot1","length":56.19,"rotation":-2.16,"x":57.79,"y":-0.02,"scaleX":0.731,"scaleY":0.823,"inherit":"onlyTranslation","color":"15ff00ff"},{"name":"front-foot3","parent":"front-foot2","length":129.88,"rotation":-2.7,"x":49.71,"y":20.66,"scaleX":1.155,"color":"15ff00ff"},{"name":"front-hand","parent":"front-arm2","length":47.56,"rotation":-56.83,"x":86.33,"y":0.06,"color":"15ff00ff"},{"name":"front-hand2","parent":"front-bracer","length":58.19,"rotation":17.31252,"x":42.71695,"y":-2.772095,"scaleX":1.0004373,"scaleY":1.0004373,"inherit":"onlyTranslation","color":"14ff00ff"},{"name":"spineboy-front-foot-target","parent":"saddle","x":-50.71,"y":-96.93,"color":"ff3f00ff"},{"name":"front-thigh","parent":"spineboy-hip","length":77.79,"rotation":163.34,"x":15.52,"y":17.02,"color":"14ff00ff"},{"name":"lower-leg","parent":"front-thigh","length":111.5,"rotation":-49.62,"x":77.93,"y":-0.11,"color":"14ff00ff"},{"name":"gun","parent":"spineboy-hip","length":181.35,"rotation":107.12,"x":16.86,"y":-7.89,"scaleX":0.816,"scaleY":0.816,"color":"ffffffff"},{"name":"jaw","parent":"head","length":203.76,"rotation":-129.5956,"x":49.10952,"y":-68.4647,"color":"ffff00ff"},{"name":"jaw-inside","parent":"jaw","x":94.69513,"y":33.64496,"color":"ffff00ff"},{"name":"saddle-strap-back","parent":"saddle","length":74.60266,"rotation":151.14,"x":-33.34,"y":87.33,"color":"ff7300ff"},{"name":"saddle-strap-front","parent":"saddle","length":154.2884,"rotation":-148.12,"x":-27.36,"y":-73.39,"color":"ff7300ff"},{"name":"stirrup","parent":"saddle","length":78.17,"rotation":-68.86,"x":-81.94,"y":-103.38,"color":"ff3f00ff"},{"name":"stirrup-strap1","parent":"saddle","length":43.7,"rotation":-135,"x":-20.38,"y":-29.37,"color":"ff7300ff"},{"name":"stirrup-strap2","parent":"stirrup-strap1","length":51.62,"rotation":9.39,"x":43.71,"color":"ff7300ff"},{"name":"tail1","parent":"hip","length":81.265,"rotation":153.61307,"x":-20.87,"y":6.87,"color":"eaff00ff"},{"name":"tail2","parent":"tail1","length":81.26,"rotation":10.41735,"x":81.265,"color":"eaff00ff"},{"name":"tail3","parent":"tail2","length":65.01,"rotation":12.181763,"x":81.26,"color":"eaff00ff"},{"name":"tail4","parent":"tail3","length":65.01,"x":65.00998,"color":"eaff00ff"},{"name":"tail5","parent":"tail4","length":70.53,"rotation":4.359924,"x":65.01,"color":"eaff00ff"},{"name":"tail6","parent":"tail5","length":70.53,"x":70.52988,"color":"eaff00ff"},{"name":"tail7","parent":"tail6","length":63.13,"rotation":2.347168,"x":70.53,"color":"eaff00ff"},{"name":"tail8","parent":"tail7","length":54.46,"rotation":0.9677505,"x":63.13,"color":"eaff00ff"},{"name":"tail9","parent":"tail8","length":49.21,"rotation":-1.2947845,"x":54.46,"color":"eaff00ff"},{"name":"tail10","parent":"tail9","length":45.53,"rotation":0.3612213,"x":49.21,"color":"eaff00ff"},{"name":"tongue1","parent":"head","length":55.12,"rotation":-129.04,"x":20.82,"y":-104.75,"color":"ffff00ff"},{"name":"tongue2","parent":"tongue1","length":44.67,"rotation":8.93,"x":55.6,"y":0.93,"color":"fff200ff"},{"name":"tongue3","parent":"tongue2","length":43.65,"rotation":12.86,"x":44.27,"y":-0.21,"color":"fff200ff"},{"name":"head-control","parent":"head","rotation":-95.03755,"x":42.32178,"y":-220.3306,"color":"219517ff","icon":"arrows"},{"name":"leg-control","parent":"front-leg1","rotation":53.14228,"x":172.97285,"y":4.163391,"color":"1d8020ff","icon":"arrows"}],"slots":[{"name":"back-hand","bone":"back-hand2","attachment":"back-hand"},{"name":"back-arm","bone":"back-arm","attachment":"back-arm"},{"name":"back-bracer","bone":"back-bracer","attachment":"back-bracer"},{"name":"back-knee","bone":"back-knee","attachment":"back-knee"},{"name":"raptor-jaw-inside","bone":"jaw-inside","color":"646464ff","attachment":"raptor-jaw2"},{"name":"raptor-mouth-inside","bone":"jaw","attachment":"raptor-mouth-inside"},{"name":"raptow-jaw-tooth","bone":"jaw","attachment":"raptor-jaw-tooth"},{"name":"raptor-horn-back","bone":"horn-back","attachment":"raptor-horn-back"},{"name":"raptor-tongue","bone":"tongue1","attachment":"raptor-tongue"},{"name":"raptor-hindleg-back","bone":"back-leg1","attachment":"raptor-hindleg-back"},{"name":"raptor-back-arm","bone":"back-arm1","attachment":"raptor-back-arm"},{"name":"back-thigh","bone":"back-thigh","attachment":"back-thigh"},{"name":"raptor-body","bone":"torso1","attachment":"raptor-body"},{"name":"raptor-saddle-strap-front","bone":"saddle-strap-front","attachment":"raptor-saddle-strap-front"},{"name":"raptor-saddle-strap-back","bone":"saddle-strap-back","attachment":"raptor-saddle-strap-back"},{"name":"raptor-saddle","bone":"saddle","attachment":"raptor-saddle-w-shadow"},{"name":"raptor-jaw","bone":"jaw","attachment":"raptor-jaw"},{"name":"raptor-front-arm","bone":"front-arm1","attachment":"raptor-front-arm"},{"name":"raptor-front-leg","bone":"front-leg1","attachment":"raptor-front-leg"},{"name":"neck","bone":"neck2","attachment":"neck"},{"name":"spineboy-torso","bone":"spineboy-torso","attachment":"torso"},{"name":"head","bone":"head2","attachment":"head"},{"name":"eyes-open","bone":"head2","attachment":"eyes-open"},{"name":"mouth-smile","bone":"head2","attachment":"mouth-smile"},{"name":"visor","bone":"head2","attachment":"visor"},{"name":"raptor-horn","bone":"horn-front","attachment":"raptor-horn"},{"name":"front-thigh","bone":"front-thigh","attachment":"front-thigh"},{"name":"stirrup-back","bone":"stirrup","attachment":"stirrup-back"},{"name":"lower-leg","bone":"lower-leg","attachment":"lower-leg"},{"name":"stirrup-strap","bone":"stirrup","attachment":"stirrup-strap"},{"name":"stirrup-front","bone":"stirrup","attachment":"stirrup-front"},{"name":"gun","bone":"gun","attachment":"gun-nohand"},{"name":"front-arm","bone":"front-arm","attachment":"front-arm"},{"name":"front-bracer","bone":"front-bracer","attachment":"front-bracer"},{"name":"front-hand","bone":"front-hand2","attachment":"front-hand"},{"name":"tail-shadow","bone":"torso1","color":"00000000"}],"constraints":[{"type":"ik","name":"front-leg-ik","target":"front-leg-target","bones":["front-leg1","front-leg2"],"bendPositive":false},{"type":"ik","name":"front-foot-ik","target":"front-foot-target","bones":["front-leg3","front-foot1"]},{"type":"ik","name":"back-leg-ik","target":"back-leg-target","bones":["back-leg1","back-leg2"],"bendPositive":false},{"type":"ik","name":"back-foot-ik","target":"back-foot-target","bones":["back-leg3","back-foot1"]},{"type":"ik","name":"spineboy-front-leg-ik","target":"spineboy-front-foot-target","bones":["front-thigh","lower-leg"],"bendPositive":false},{"type":"ik","name":"spineboy-back-leg-ik","target":"spineboy-back-foot-target","bones":["back-thigh","back-knee"],"bendPositive":false},{"type":"ik","name":"stirrup","target":"stirrup","bones":["stirrup-strap1","stirrup-strap2"],"bendPositive":false},{"type":"ik","name":"spineboy-front-arm-ik","target":"spineboy-front-arm-target","bones":["front-arm","front-bracer"]},{"type":"ik","name":"spineboy-back-arm-ik","target":"spineboy-back-arm-target","bones":["back-arm","back-bracer"],"bendPositive":false}],"skins":[{"name":"default","attachments":{"back-arm":{"back-arm":{"x":28.56735,"y":-12.031482,"rotation":16.76,"width":91,"height":49}},"back-bracer":{"back-bracer":{"x":13.2,"y":-4.28,"rotation":-0.73,"width":77,"height":55}},"back-hand":{"back-hand":{"x":18.61,"y":4.24,"rotation":-10.99,"width":72,"height":68}},"back-knee":{"back-knee":{"x":45.77,"y":20.47,"rotation":74.23,"width":97,"height":134}},"back-thigh":{"back-thigh":{"x":37.85,"y":-4.37,"rotation":19.25,"width":78,"height":47}},"eyes-open":{"eyes-open":{"x":93.24,"y":-25.45,"rotation":-70.58,"width":93,"height":89}},"front-arm":{"front-arm":{"x":33.67632,"y":-1.5277977,"rotation":14.02,"width":96,"height":51}},"front-bracer":{"front-bracer":{"x":11.68,"y":-1.37,"rotation":-6.28,"width":81,"height":58}},"front-hand":{"front-hand":{"x":35.7,"y":7.84,"rotation":-13.97,"width":82,"height":75},"front-open-hand":{"x":42.55,"y":4.62,"rotation":62.19,"width":86,"height":87},"gun":{"x":98.91,"y":22.98,"rotation":56.35,"width":213,"height":206}},"front-thigh":{"front-thigh":{"x":45.7,"y":-3.1,"rotation":16.66,"width":114,"height":58}},"gun":{"gun-nohand":{"x":54.64538,"y":-24.93315,"rotation":55.19504,"width":210,"height":203}},"head":{"head":{"type":"mesh","uvs":[0.7346124,0.04542315,0.8841381,0.1703323,0.889555,0.3197607,0.9112583,0.2746266,0.9461012,0.2021681,1,0.2989214,1,0.3455444,1,0.4508005,0.912488,0.5120558,0.845145,0.512067,0.8208988,0.596635,0.779146,0.6725744,0.7360463,0.7546382,0.8357142,0.7399401,0.847836,0.8452756,0.7549024,0.931014,0.6377253,1,0.3939432,1,0.14746737,0.8293528,0,0.5941853,0,0.3664461,0.09622984,0.2035285,0.2147428,0.14594176,0.4517929,0.15692776,0.5150894,0.12629694,0.5069992,0.0785296,0.4207856,0,0.562206,0,0.190548,0.3994857,0.2794247,0.3137335,0.7939577,0.4790041,0.76029,0.8599736,0.5342138,0.16964203,0.532072,0.04286435,0.6194852,0.08783679,0.7042377,0.16684856,0.6905317,0.431997,0.8559172,0.378615,0.4584449,0.3499711,0.4865759,0.301929,0.6630738,0.3506467,0.5843914,0.3944841,0.704681,0.2624155,0.5198546,0.21923983],"triangles":[23,24,32,32,24,34,35,34,0,34,25,33,34,24,25,33,27,34,34,27,0,25,26,33,33,26,27,32,35,42,35,0,1,32,34,35,36,40,37,40,42,37,37,42,2,40,43,42,2,42,1,43,32,42,42,35,1,7,37,6,37,2,6,6,2,5,2,3,5,3,4,5,8,37,7,10,36,30,10,11,36,15,16,31,18,12,17,38,18,28,12,31,16,12,41,36,41,12,18,41,18,38,38,28,29,15,31,14,12,16,17,14,31,13,31,12,13,18,19,28,12,36,11,19,20,28,29,28,21,38,39,41,28,20,21,39,43,40,38,29,39,21,22,29,29,22,39,22,23,39,39,23,43,43,23,32,41,39,40,10,30,9,41,40,36,8,9,37,9,30,37,30,36,37],"vertices":[2,32,58.33,-14.31,0.30205,33,-0.88,-20.72,0.69795,3,30,69.21,19.04,0.07711,31,87.24,-25.34,0.8077,32,14.49,-47.57,0.11518,3,29,43.19,28.99,0.10855,30,24.81,15.35,0.61823,31,50.15,-50.03,0.27322,1,30,38.53,10.15,1,1,30,60.57,1.79,1,1,30,32.5,-14.23,1,1,30,18.62,-14.92,1,2,29,45.01,-20.18,0.76042,30,-12.71,-16.48,0.23958,1,28,166.12,-105.42,1,1,28,160.05,-88.21,1,1,28,134.1,-90.39,1,1,28,108.99,-87.24,1,1,28,82.04,-84.36,1,1,28,95.16,-108.38,1,1,28,66.64,-121.91,1,1,28,34.17,-106.65,1,1,28,4.23,-83.54,1,1,28,-17.74,-21.23,1,1,28,8.01,58.67,1,1,28,60.82,119.66,1,1,28,124.82,142.22,1,1,28,179.28,133.77,1,1,28,206.14,109.19,1,3,28,224.42,47.51,0.55599,32,39.26,67.02,0.19527,33,47.76,47.19,0.24873,3,28,238.73,34.37,0.20521,32,45.19,48.52,0.20866,33,37.74,30.54,0.58612,2,32,59.59,48.14,0.05508,33,46.95,19.46,0.94492,1,33,79.02,11.41,1,1,33,46.15,-8.3,1,1,28,132.71,90.25,1,1,28,164.81,76.03,1,1,28,164.73,-71.85,1,1,28,54.62,-100.99,1,3,28,228.27,25.19,0.29316,32,31.56,45.72,0.3088,33,26.66,38.96,0.39805,1,33,46.59,6.85,1,2,32,51.44,18.64,0.07922,33,19.38,6.16,0.92078,1,32,24.18,0.23,1,1,28,168.62,-40.76,1,3,29,25.61,19.96,0.50536,30,6.84,23.59,0.2645,31,30.44,-51.51,0.23014,1,28,170.76,26.69,1,4,28,186.8,24.26,0.75057,31,-2.82,45.62,0.07609,32,-4.94,65.43,0.10488,33,17.45,79.4,0.06845,1,31,10.01,-2.69,1,1,28,169.6,-9.91,1,1,31,38.3,1.56,1,4,28,213.04,23.94,0.43153,31,22.88,50.92,0.09832,32,17.71,52.17,0.26174,33,22.39,53.63,0.20841],"hull":28,"edges":[10,8,4,2,2,0,0,54,52,54,52,50,50,48,48,46,46,44,44,42,42,40,40,56,56,58,60,18,18,16,16,14,38,40,38,36,36,34,32,34,32,30,30,62,62,28,28,26,26,24,24,22,22,20,20,18,28,30,48,64,50,66,66,54,0,68,68,48,66,68,2,70,70,64,68,70,72,60,10,12,12,14,4,12,4,6,6,8,10,6,14,74,4,74,74,72,58,76,78,76,78,44,80,78,72,82,82,76,80,82,80,74,70,84,84,80,4,84,64,86,86,78,84,86],"width":271,"height":298}},"lower-leg":{"lower-leg":{"x":76.2,"y":22.21,"rotation":66.28,"width":146,"height":195}},"mouth-smile":{"mouth-grind":{"x":27.659973,"y":-31.329987,"rotation":-70.58,"width":93,"height":59},"mouth-smile":{"x":27.66,"y":-31.33,"rotation":-70.58,"width":93,"height":59}},"neck":{"neck":{"x":15.1,"y":-1.67,"rotation":-58.92,"width":36,"height":41}},"raptor-back-arm":{"raptor-back-arm":{"type":"mesh","uvs":[0.38712,0.29362,0.31383,0.46513,0.29243,0.51522,0.32476,0.49311,0.57587,0.32139,0.63255,0.28263,0.71632,0.34508,0.94948,0.51888,0.94948,0.60129,1,0.65257,1,0.90624,0.95463,0.99934,0.88957,0.83205,0.80295,0.99999,0.75236,0.75696,0.6654,0.71301,0.62289,0.63243,0.58195,0.65032,0.22479,0.80641,0.07792,0.73315,0.07825,0.6655,0.07985,0.34307,0,0.29728,0,0,0.32335,0],"triangles":[6,15,16,5,6,16,5,16,4,6,7,15,16,17,4,8,15,7,14,15,8,12,14,8,12,8,9,12,9,10,11,12,10,13,14,12,17,3,4,19,20,2,18,19,2,18,2,3,18,3,17,21,22,23,24,21,23,0,21,24,1,21,0,1,20,21,2,20,1],"vertices":[2,13,36.95,33.31,0.91667,14,68.54,41.05,0.08333,2,13,66.02,20.36,0.76814,14,41.42,24.4,0.23186,2,13,74.51,16.58,0.64468,14,33.5,19.53,0.35532,2,13,70.89,21.97,0.29072,14,40,19.47,0.70928,3,13,42.78,63.9,0.11484,14,90.47,18.95,0.60855,22,-17.2,9.01,0.27661,2,14,101.86,18.84,0.45956,22,-14.39,20.05,0.54044,2,14,106.48,2.09,0.0625,22,2.98,20.56,0.9375,1,22,51.32,21.99,1,1,22,60.41,11.11,1,1,22,72.39,9.62,1,1,22,100.37,-23.87,1,1,22,104.96,-40.9,1,1,22,78.37,-25.62,1,1,22,86.06,-56.84,1,1,22,52.92,-30.05,1,2,14,62.25,-43.93,0.0625,22,37.19,-33.34,0.9375,2,14,64.89,-28.66,0.3125,22,22.99,-27.14,0.6875,2,14,57.7,-27.17,0.30612,22,19.84,-33.78,0.69388,2,13,124.19,3.84,0.19395,14,-5.1,-14.24,0.80605,2,13,110.78,-19.65,0.3125,14,-16.89,10.11,0.6875,2,13,99.15,-19.2,0.51614,14,-9.94,19.44,0.48386,2,13,43.73,-17.04,0.9375,14,23.18,63.93,0.0625,1,13,35.41,-29.78,1,1,13,-15.69,-28.02,1,1,13,-13.88,24.65,1],"hull":25,"edges":[44,46,44,42,38,36,32,30,30,28,28,26,24,22,18,16,16,14,46,48,38,4,6,4,6,36,42,40,40,38,4,2,2,0,40,2,10,32,36,34,34,32,10,8,8,6,34,8,14,12,12,10,12,30,18,20,22,20,26,24,48,0],"width":163,"height":172}},"raptor-body":{"raptor-body":{"type":"mesh","uvs":[0.8830523,0.02793763,0.9175824,0.05592221,0.9496977,0.09133435,0.9757344,0.13212638,0.9905453,0.17338754,0.9975896,0.22986567,0.9967843,0.2722596,0.993532,0.3128746,0.9839026,0.384772,0.9795633,0.3530713,0.9668674,0.38782185,0.9644184,0.3484111,0.9474193,0.38391465,0.9448883,0.3323768,0.9386028,0.3480761,0.9378383,0.3255926,0.9266673,0.3433345,0.9253941,0.3153849,0.9118165,0.3498946,0.9092546,0.2896327,0.8998436,0.279292,0.8751436,0.3397873,0.8622542,0.40837935,0.8742906,0.4581786,0.842722,0.5022554,0.81998,0.5962152,0.8169723,0.6864139,0.8195135,0.7069048,0.7869628,0.8218317,0.7428338,0.91135,0.686991,0.9758515,0.6243963,1,0.5884869,1,0.5146564,1,0.4912057,0.8367967,0.472703,0.7848821,0.4470737,0.7464372,0.4247158,0.721755,0.3965997,0.7093764,0.370433,0.6954772,0.3468392,0.684162,0.3237748,0.6759035,0.298771,0.6671107,0.2682682,0.655661,0.2402087,0.6444689,0.2153968,0.6330818,0.18744975,0.620256,0.1629976,0.6105588,0.13947907,0.601232,0.11930791,0.593918,0.09945348,0.586719,0.08096803,0.5823985,0.06076143,0.5822466,0.0425701,0.5814894,0.023884654,0.5825305,0,0.5845495,0,0.5629796,0.02089591,0.5504595,0.03793905,0.5397445,0.05634114,0.5269183,0.07459894,0.513058,0.09506576,0.4988121,0.11727748,0.4833357,0.1375028,0.4692433,0.1627729,0.451738,0.18781847,0.4343883,0.2130787,0.4189027,0.2387298,0.4031775,0.267346,0.385782,0.2968954,0.3672304,0.32578605,0.3501399,0.3572494,0.332937,0.3799154,0.32070225,0.4110286,0.3169557,0.4414496,0.2913691,0.4758391,0.28482935,0.4945335,0.3183195,0.5287962,0.3556892,0.6014388,0.4175627,0.6511592,0.41078,0.7084254,0.424461,0.7118011,0.2925007,0.7094593,0.19468226,0.7068305,0.08347955,0.7602334,0.019407805,0.7930115,0,0.8387518,0,0.0225816,0.5679001,0.04004997,0.5614114,0.05877378,0.5531159,0.07877007,0.5478622,0.09747399,0.5400992,0.12058886,0.5308609,0.14232916,0.526626,0.16642132,0.5230393,0.19162972,0.5213749,0.21770437,0.512414,0.24501455,0.5021788,0.2757729,0.495047,0.3014133,0.492425,0.3286014,0.4907681,0.3541026,0.4918753,0.38136765,0.493469,0.4082407,0.4949544,0.4413601,0.509464,0.4712217,0.5316874,0.4988624,0.5656781,0.5316186,0.6005403,0.606711,0.6748437,0.6856993,0.6724257,0.7506015,0.5943672,0.768864,0.4655705,0.7773012,0.3416086,0.7735483,0.22842404,0.8056047,0.0940074,0.8673608,0.07427144,0.9048387,0.17058964,0.9095971,0.1993311,0.9195905,0.21397166,0.9319284,0.20182796,0.9360822,0.17462817,0.9287293,0.1402951,0.9167224,0.1345479,0.9066701,0.14854056,0.9166299,0.09794877,0.898683,0.0951363,0.8803358,0.0940422,0.9308953,0.1152906,0.9399758,0.15741438,0.9421314,0.1747714,0.9434525,0.1964702,0.941915,0.20762804,0.92187,0.22801016,0.9047951,0.23488615,0.8898955,0.19847324,0.8874017,0.1691368,0.878313,0.12121982,0.5850038,0.8424266,0.6302353,0.8645973,0.6828363,0.8519184,0.729234,0.8045317,0.7589807,0.7632321,0.7851314,0.7034718,0.7853561,0.6782998,0.7814052,0.592774,0.9472084,0.11131486,0.9623616,0.1618001,0.9636721,0.19318393,0.9580635,0.2105216,0.9760027,0.1676291,0.980258,0.2217165,0.9803863,0.2646717,0.9793325,0.3161202,0.9639446,0.2589648,0.956484,0.3198186,0.9432022,0.2467812,0.9388563,0.28791535],"triangles":[134,135,116,107,34,35,106,107,35,106,35,36,105,106,36,78,107,77,77,107,106,76,77,106,76,106,105,76,105,75,116,135,123,134,116,117,123,122,121,123,121,120,116,123,120,130,119,120,119,117,120,126,123,136,122,125,124,125,122,126,155,20,133,20,21,112,19,20,156,133,118,132,131,132,118,122,124,127,133,113,134,131,130,148,155,131,148,130,129,147,129,128,146,17,18,19,129,146,147,1,124,125,136,114,126,16,17,15,154,17,156,2,127,124,155,148,150,145,127,2,146,128,3,148,147,150,2,124,1,151,156,153,152,154,156,13,154,11,147,149,4,11,12,13,11,154,152,4,149,3,8,9,7,111,22,23,22,112,21,112,81,113,81,82,113,113,82,114,82,83,114,83,84,114,84,85,114,114,86,115,114,85,86,115,0,1,115,86,0,10,11,9,11,152,9,9,152,7,7,152,6,6,152,151,6,151,5,5,151,150,150,4,5,150,147,4,146,3,149,145,2,3,151,153,150,152,156,151,126,114,115,135,113,114,147,146,149,1,125,115,145,3,128,13,15,154,153,155,150,13,14,15,15,17,154,20,112,113,125,126,115,148,130,147,156,155,153,127,145,128,20,113,133,127,128,121,17,19,156,135,114,136,132,131,155,120,128,129,155,133,132,131,118,119,118,117,119,156,20,155,131,119,130,133,117,118,130,120,129,122,123,126,117,116,120,121,122,127,120,121,128,113,135,134,135,136,123,133,134,117,24,111,23,111,112,22,111,80,112,112,80,81,110,107,78,30,139,29,139,140,29,29,140,28,140,108,109,140,141,28,28,141,27,27,141,142,140,109,141,141,109,142,142,26,27,142,143,26,142,109,143,26,143,25,109,110,143,110,144,143,143,144,25,109,108,110,110,79,80,79,110,78,25,144,24,110,111,144,110,80,111,144,111,24,108,34,107,30,31,138,138,31,32,138,32,137,32,33,137,33,34,137,138,139,30,138,137,139,139,137,140,108,140,137,137,34,108,110,108,107,37,105,36,104,105,37,104,37,38,38,103,104,105,104,75,103,73,104,104,73,74,75,104,74,38,39,103,39,102,103,40,102,39,101,102,40,73,103,72,101,71,102,72,103,102,72,102,71,101,40,41,100,101,41,100,41,42,100,42,99,69,100,99,71,101,70,69,70,100,101,100,70,42,43,99,99,43,98,43,44,98,98,44,97,98,97,67,99,98,68,68,98,67,99,68,69,44,45,97,97,45,96,45,46,96,96,46,95,96,95,65,97,96,66,96,65,66,97,66,67,46,47,95,95,47,94,47,48,94,94,48,93,94,93,63,95,94,64,94,63,64,95,64,65,48,49,93,93,49,92,92,49,91,49,50,91,91,61,92,93,92,62,92,61,62,93,62,63,50,90,91,51,89,90,50,51,90,51,52,89,89,59,90,59,60,90,90,60,91,60,61,91,55,87,54,55,56,87,54,87,53,52,88,89,87,88,53,52,53,88,56,57,87,87,57,88,57,58,88,88,58,89,58,59,89],"vertices":[2,8,142.31,-163.1,0.91085,74,-65.79,94.58,0.08915,2,8,129.87,-206.92,0.78514,74,-21.05,86.04,0.21486,2,8,113.94,-247.72,0.77045,74,21,73.75,0.22955,2,8,95.41,-280.88,0.81697,74,55.65,58.2,0.18303,2,8,76.47,-299.85,0.92186,74,76.21,41,0.07814,2,8,50.32,-309.1,0.93376,74,87.72,15.77,0.06624,2,8,30.6,-308.34,0.9245,74,88.7,-3.95,0.0755,2,8,11.66,-304.47,0.91842,74,86.51,-23.15,0.08158,2,8,-21.93,-292.74,0.98449,74,77.77,-57.64,0.01551,2,8,-7.26,-287.07,0.90726,74,70.83,-43.53,0.09274,2,8,-23.63,-271.23,0.89469,74,56.49,-61.23,0.10531,2,8,-5.35,-267.89,0.87252,74,51.57,-43.31,0.12748,2,8,-22.13,-246.63,0.90956,74,31.85,-61.9,0.09044,2,8,1.79,-243.11,0.79155,74,26.25,-38.38,0.20845,2,8,-5.62,-235.26,0.80291,74,19.09,-46.44,0.19709,2,8,4.82,-234.16,0.75452,74,17.07,-36.14,0.24548,2,8,-3.61,-220.15,0.7702,74,3.85,-45.77,0.2298,2,8,9.36,-218.37,0.69443,74,0.94,-33,0.30557,2,8,-6.91,-201.42,0.7716,74,-14.51,-50.7,0.2284,2,8,21.07,-197.82,0.52991,74,-20.56,-23.15,0.47009,2,8,25.72,-185.86,0.48384,74,-32.88,-19.56,0.51616,3,8,-2.82,-155.01,0.49549,54,99.81,14.95,0.1998,74,-61.14,-50.76,0.30472,3,8,-34.92,-139.14,0.52773,54,107.98,-19.92,0.45684,74,-74.17,-84.14,0.01543,2,8,-57.88,-154.65,0.552,54,134.55,-27.77,0.448,4,6,214.38,-86.5,0.416,7,12.5,-126.76,0.24294,8,-78.89,-115.02,0.17462,54,117.33,-69.19,0.16644,3,6,164.81,-103.2,0.46938,7,-35.73,-106.53,0.34058,54,123.6,-121.11,0.19004,3,6,135.98,-133.89,0.80096,7,-77.65,-110.49,0.11639,54,147.79,-155.59,0.08264,3,6,132.63,-143.37,0.82428,7,-86.43,-115.4,0.10285,54,156.4,-160.78,0.07287,1,6,67.3,-160.11,1,2,2,226.09,-123.55,0.23474,6,-2.28,-158.53,0.76526,3,2,156.49,-155.76,0.52831,6,-76.36,-138.65,0.37693,1,172.42,-169.15,0.09477,3,2,77.76,-169.48,0.67731,6,-145.59,-98.75,0.09201,1,92.8,-175.99,0.23068,3,2,32.4,-170.91,0.60686,61,-141.38,131.19,0.07586,1,47.48,-173.48,0.31728,3,2,-60.88,-173.87,0.39257,61,-55.62,167.98,0.26021,1,-45.7,-168.32,0.34722,4,62,-58.53,122.52,0.02965,2,-92.91,-98.95,0.15809,61,1.54,109.92,0.56291,1,-71.11,-90.91,0.24934,5,63,-87.14,125.38,0.01694,62,-30.38,104.17,0.12049,2,-117.05,-75.56,0.06243,61,32.55,96.96,0.67353,1,-93.12,-65.52,0.12661,5,63,-54.56,107.85,0.06533,62,5.17,93.91,0.35431,2,-149.99,-58.72,0.01512,61,69.37,93.3,0.52081,1,-124.48,-45.88,0.04444,4,64,-91.18,96.68,0.02003,63,-26.17,96.68,0.17282,62,35.28,88.98,0.56052,61,99.87,93.89,0.24663,4,64,-55.58,91.31,0.08871,63,9.43,91.31,0.37251,62,71.21,91.24,0.43883,61,134.8,102.61,0.09995,5,65,-80.72,91.6,0.01487,64,-22.44,85.2,0.21852,63,42.57,85.2,0.55905,62,104.89,92.27,0.18543,61,167.74,109.71,0.02213,4,65,-51.3,84.41,0.07099,64,7.44,80.26,0.46092,63,72.45,80.26,0.39268,62,135.14,93.74,0.07541,4,65,-22.46,78.67,0.2126,64,36.63,76.74,0.62934,63,101.64,76.74,0.13917,62,164.42,96.46,0.01889,4,66,-61.72,72.53,0.05014,65,8.81,72.53,0.49668,64,68.28,72.99,0.41049,63,133.29,72.99,0.04268,3,66,-23.6,64.7,0.21233,65,46.93,64.7,0.64547,64,106.89,68.09,0.1422,4,67,-56.68,59.57,0.00497,66,11.45,57.2,0.56359,65,81.98,57.2,0.40675,64,142.41,63.26,0.0247,4,68,-88.32,52.48,0.00856,67,-26.06,50.98,0.14719,66,42.4,49.87,0.68541,65,112.93,49.87,0.15884,4,68,-53.99,42.22,0.05573,67,8.43,41.3,0.39231,66,77.27,41.61,0.51595,65,147.8,41.61,0.036,5,69,-79.08,32.17,0.00731,68,-23.87,33.95,0.20888,67,38.69,33.54,0.55959,66,107.81,35.1,0.21646,65,178.34,35.1,0.00775,5,69,-49.94,24.87,0.05717,68,5.1,25.99,0.4278,67,67.79,26.07,0.45737,66,137.19,28.83,0.05638,65,207.72,28.83,0.00128,5,70,-74,19.39,0.00687,69,-24.91,18.93,0.21088,68,29.98,19.49,0.5528,67,92.78,19.99,0.22286,66,162.41,23.77,0.00659,4,70,-49.4,13.39,0.05569,69,-0.28,13.08,0.44113,68,54.48,13.08,0.43894,67,117.38,14,0.06424,4,70,-26.39,8.9,0.21474,69,22.77,8.73,0.56103,68,77.42,8.22,0.21699,67,140.4,9.52,0.00724,3,70,-1,6.11,0.49366,69,48.17,6.1,0.44664,68,102.76,5.01,0.05971,3,70,21.83,3.3,0.77042,69,71.02,3.44,0.22113,68,125.54,1.84,0.00845,2,70,45.36,1.27,0.92172,69,94.56,1.55,0.07828,2,70,75.48,-1.02,0.98437,69,124.7,-0.54,0.01563,2,70,74.41,-10.99,0.98712,69,123.69,-10.52,0.01288,2,70,47.53,-13.96,0.9286,69,96.83,-13.66,0.0714,3,70,25.58,-16.62,0.78026,69,74.89,-16.46,0.21218,68,128.96,-18.15,0.00756,4,70,1.81,-20.07,0.50456,69,51.15,-20.06,0.43841,68,105.14,-21.21,0.05555,67,168.62,-19.43,0.00148,4,70,-21.82,-24.02,0.2241,69,27.54,-24.16,0.55698,68,81.45,-24.77,0.20577,67,144.99,-23.39,0.01316,5,70,-48.25,-27.85,0.06037,69,1.14,-28.15,0.44261,68,54.96,-28.17,0.41953,67,118.56,-27.24,0.07662,66,190.11,-22.36,0.00087,5,70,-76.93,-32.01,0.00843,69,-27.52,-32.49,0.21461,68,26.21,-31.86,0.52853,67,89.88,-31.41,0.23794,66,161.62,-27.71,0.01048,5,69,-53.61,-36.45,0.05984,68,0.04,-35.22,0.4064,67,63.76,-35.22,0.46847,66,135.68,-32.58,0.06423,65,206.21,-32.58,0.00106,5,69,-86.21,-41.34,0.00821,68,-32.66,-39.38,0.19546,67,31.14,-39.93,0.57299,66,103.28,-38.62,0.21339,65,173.81,-38.62,0.00994,4,68,-65.07,-43.5,0.05047,67,-1.2,-44.59,0.45101,66,71.16,-44.6,0.43746,65,141.69,-44.6,0.06106,4,68,-97.64,-46.72,0.00724,67,-33.71,-48.36,0.20423,66,38.83,-49.7,0.58773,65,109.36,-49.7,0.2008,4,67,-66.72,-52.2,0.05217,66,6,-54.89,0.45622,65,76.53,-54.89,0.46325,64,145.49,-48.91,0.02835,3,66,-30.62,-60.6,0.17334,65,39.91,-60.6,0.683,64,109.41,-57.39,0.14366,4,66,-68.46,-66.77,0.0295,65,2.07,-66.77,0.50408,64,72.15,-66.42,0.40417,63,137.16,-66.42,0.06225,4,65,-34.88,-72.32,0.18739,64,35.73,-74.76,0.58778,63,100.73,-74.76,0.2056,62,195.5,-51.82,0.01923,4,65,-75.09,-77.7,0.04676,64,-3.96,-83.19,0.39617,63,61.05,-83.19,0.48167,62,158.49,-68.43,0.07539,3,64,-32.54,-89.19,0.14427,63,32.47,-89.19,0.63908,62,131.82,-80.33,0.21665,4,64,-71.85,-91.35,0.04785,63,-6.84,-91.35,0.40108,62,93.85,-90.74,0.50635,61,189.98,-72.27,0.04472,3,63,-45.16,-103.67,0.17783,62,58.99,-110.86,0.68949,61,159.33,-98.37,0.13269,4,63,-88.59,-107.18,0.06196,62,17.28,-123.46,0.5382,2,-120.43,156.97,0.01597,61,120.58,-118.3,0.38387,4,63,-112.39,-91.86,0.01664,62,-9.21,-113.51,0.31712,2,-96.32,142.15,0.06918,61,92.73,-113.3,0.59706,3,62,-55.3,-106.16,0.18947,2,-52.49,126.15,0.211,61,46.08,-114.41,0.59953,3,2,40.2,100.3,0.70054,6,-1.56,132.44,0.1247,61,-49.65,-124.17,0.17476,2,2,102.91,105.44,0.48476,6,49.88,96.2,0.51524,2,6,102.97,46.59,0.55391,7,16.89,46.74,0.44609,2,7,77.99,53.82,0.34839,8,16.46,51.73,0.65161,1,8,61.91,55.28,1,1,8,113.57,59.28,1,2,8,144.24,-7.82,0.89352,74,-220.64,82.87,0.10648,2,8,153.81,-49.13,0.88,74,-180.33,96.03,0.12,2,8,154.57,-106.94,0.91167,74,-122.81,101.86,0.08833,2,70,46.28,-5.67,0.88974,69,95.52,-5.38,0.11026,3,70,24,-6.32,0.78319,69,73.25,-6.17,0.21288,68,127.55,-7.82,0.00393,3,70,0.06,-7.63,0.4984,69,49.31,-7.63,0.45067,68,103.59,-8.74,0.05093,4,70,-25.34,-7.36,0.21021,69,23.92,-7.52,0.57916,68,78.21,-8.06,0.20281,67,141.46,-6.74,0.00782,4,70,-49.23,-8.43,0.05008,69,0.04,-8.74,0.44936,68,54.3,-8.74,0.44109,67,117.57,-7.82,0.05946,5,70,-78.74,-9.59,0.00411,69,-29.46,-10.08,0.20704,68,24.78,-9.42,0.55388,67,88.06,-9,0.22906,66,158.89,-5.38,0.0059,4,69,-57,-9.28,0.05054,68,-2.74,-7.99,0.42931,67,60.53,-8.04,0.46828,66,131.34,-5.55,0.05187,5,69,-87.47,-7.89,0.00416,68,-33.16,-5.91,0.19066,67,30.07,-6.47,0.59281,66,100.84,-5.23,0.20446,65,171.37,-5.23,0.00791,4,68,-64.88,-2.76,0.04806,67,-1.7,-3.86,0.44622,66,68.99,-3.93,0.45724,65,139.52,-3.93,0.04848,4,68,-98.1,-2.85,0.00302,67,-34.91,-4.51,0.16897,66,35.83,-5.93,0.6491,65,106.36,-5.93,0.17891,3,67,-69.74,-5.58,0.03488,66,1.08,-8.43,0.4896,65,71.61,-8.43,0.47552,4,67,-108.75,-4.75,0.00424,66,-37.94,-9.2,0.16984,65,32.59,-9.2,0.69137,64,98.21,-6.7,0.13455,2,65,0.17,-8.31,0.52543,64,65.82,-8.27,0.47457,3,65,-34.17,-6.83,0.18477,64,31.46,-9.41,0.62696,63,96.47,-9.41,0.18827,4,65,-66.3,-4.22,0.01263,64,-0.78,-9.24,0.46677,63,64.23,-9.24,0.48853,62,146,4.52,0.03206,3,64,-35.25,-8.87,0.22735,63,29.76,-8.87,0.65577,62,112.23,-2.39,0.11689,4,64,-69.22,-8.55,0.02776,63,-4.21,-8.55,0.41215,62,78.95,-9.25,0.52977,61,160.59,5.18,0.03032,3,63,-46.14,-2.26,0.12876,62,36.63,-11.94,0.70822,61,119.45,-5.12,0.16302,3,63,-84,7.67,0.04548,62,-2.46,-10.23,0.46291,61,80.69,-10.51,0.4916,4,62,-40.04,-2.56,0.20066,2,-87.22,27.36,0.04102,61,42.35,-9.75,0.69947,1,-54.47,34.43,0.05884,4,62,-84,4.08,0.06346,2,-45.32,12.47,0.1335,61,-2.09,-11.18,0.66178,1,-14.03,15.96,0.14126,1,2,50.64,-19.06,1,2,2,150.39,-14.78,0.14978,6,9.3,-26.52,0.85022,2,6,96.28,-48.49,0.94283,7,-50.98,-20.17,0.05717,4,6,151.36,-15.54,0.1938,7,12.13,-31.86,0.65264,54,35.04,-116.47,0.10585,74,-188.88,-122.43,0.0477,4,7,70.75,-31.76,0.42196,8,-5.28,-31.36,0.19392,54,5.95,-65.58,0.22877,74,-184.09,-64,0.15534,3,8,47.28,-25.92,0.60156,54,-31.67,-28.46,0.26709,74,-194.09,-12.11,0.13136,3,8,110.31,-65.62,0.66779,54,-41.11,45.43,0.13197,74,-160.06,54.14,0.20024,2,8,120.51,-143.55,0.72576,74,-83.35,71.14,0.27424,2,8,76.35,-191.51,0.55039,74,-31.7,31.36,0.44961,2,8,63.06,-197.7,0.57574,74,-24.37,18.67,0.42426,2,8,56.42,-210.42,0.59162,74,-11.11,13.17,0.40838,2,8,62.27,-225.94,0.54866,74,3.83,20.37,0.45134,2,8,74.99,-231.02,0.55882,74,7.78,33.48,0.44118,2,8,90.83,-221.52,0.5372,74,-3.08,48.42,0.4628,2,8,93.3,-206.31,0.54037,74,-18.44,49.55,0.45963,2,8,86.63,-193.69,0.56061,74,-30.43,41.8,0.43939,2,8,110.32,-205.97,0.55507,74,-20.28,66.47,0.44493,2,8,111.33,-183.27,0.52695,74,-42.98,65.49,0.47305,2,8,111.53,-160.07,0.56797,74,-66.1,63.65,0.43203,2,8,102.49,-224.1,0.57026,74,-1.52,60.27,0.42974,2,8,83.06,-235.84,0.54683,74,11.87,41.94,0.45317,2,8,75.02,-238.67,0.5345,74,15.4,34.18,0.4655,2,8,64.95,-240.47,0.52774,74,18.07,24.31,0.47226,2,8,59.74,-238.59,0.52019,74,16.66,18.96,0.47981,2,8,49.93,-213.38,0.51178,74,-7.59,6.97,0.48822,2,8,46.45,-191.85,0.53448,74,-28.74,1.61,0.46552,2,8,63.13,-172.79,0.45609,74,-49.18,16.56,0.54391,2,8,76.73,-169.46,0.47244,74,-53.69,29.81,0.52756,2,8,98.86,-157.68,0.53514,74,-67.37,50.82,0.46486,3,2,25.68,-97.82,0.63735,61,-108.45,65.59,0.06216,1,47.13,-100.08,0.30049,3,2,83.15,-106.32,0.72603,6,-100.98,-53.7,0.09811,1,103.65,-113.53,0.17585,3,2,149.42,-98.32,0.50192,6,-44.98,-90.03,0.42892,1,170.36,-111.32,0.06917,2,2,207.34,-74.44,0.18186,6,14.79,-108.81,0.81814,2,2,244.31,-54.06,0.05649,6,56.23,-116.86,0.94351,2,6,99.39,-115.34,0.92692,7,-92.84,-72.39,0.07308,3,6,106.83,-106.29,0.84981,7,-81.28,-70.52,0.08915,54,114.85,-178.52,0.06104,4,6,127.4,-71.89,0.69313,7,-43.11,-58.31,0.19154,54,85.35,-151.38,0.10631,74,-167.16,-179.69,0.00902,2,8,104.61,-244.7,0.66844,74,18.8,64.19,0.33156,2,8,81.39,-264.16,0.67294,74,40.23,42.76,0.32706,2,8,66.82,-266.01,0.65456,74,43.35,28.41,0.34544,2,8,58.66,-259.02,0.64393,74,37.11,19.68,0.35607,2,8,78.9,-281.43,0.75776,74,57.66,41.81,0.24224,2,8,53.83,-287.14,0.77384,74,65.54,17.33,0.22616,2,8,33.86,-287.57,0.80091,74,67.72,-2.53,0.19909,2,8,9.92,-286.55,0.89717,74,68.81,-26.47,0.10283,2,8,36.24,-266.75,0.70023,74,46.78,-1.99,0.29977,2,8,7.82,-257.69,0.78734,74,40.25,-31.09,0.21266,2,8,41.56,-240.46,0.5741,74,20.12,1.01,0.4259,2,8,22.36,-235.22,0.62581,74,16.58,-18.58,0.37419],"hull":87,"edges":[110,108,108,106,106,104,104,102,102,100,88,86,86,84,84,82,82,80,80,78,78,76,76,74,74,72,72,70,70,68,68,66,110,112,112,114,114,116,116,118,118,120,120,122,96,98,98,100,92,94,94,96,88,90,90,92,126,128,128,130,130,132,132,134,134,136,136,138,138,140,140,142,142,144,144,146,146,148,148,150,150,152,152,154,122,124,124,126,174,176,176,178,178,180,180,182,182,184,184,186,186,188,188,190,190,192,192,194,194,196,196,198,198,200,200,202,202,204,130,190,132,192,128,188,126,186,124,184,122,182,120,180,118,178,116,176,90,192,92,190,94,188,96,186,98,184,100,182,102,180,104,178,106,176,134,194,136,196,88,194,86,196,198,84,82,200,202,80,78,204,206,76,74,208,72,210,212,70,68,214,198,138,140,200,142,202,144,204,146,206,208,148,150,210,152,212,154,214,64,66,62,64,62,60,60,58,58,56,56,54,54,52,52,50,50,48,48,46,46,44,44,42,42,40,40,38,38,36,36,34,34,32,32,30,30,28,28,26,26,24,24,22,22,20,20,18,18,16,16,14,14,12,12,10,10,8,8,6,6,4,4,2,2,0,0,172,170,172,170,168,168,166,166,164,164,162,162,160,160,158,158,156,156,154,232,234,234,236,236,238,238,240,240,242,242,244,244,246,246,232,248,250,250,252,248,254,254,256,256,258,258,260,260,262,262,264,264,266,266,268,268,270,270,272],"width":1264,"height":465}},"raptor-front-arm":{"raptor-front-arm":{"type":"mesh","uvs":[0.39563,0.1396,0.38771,0.30213,0.31231,0.41784,0.27287,0.47836,0.33389,0.4507,0.5488,0.35329,0.64093,0.31153,0.73024,0.3653,1,0.5277,1,0.86607,0.93243,1,0.86176,0.80967,0.75576,0.99765,0.71748,1,0.70276,0.77443,0.62032,0.73448,0.58793,0.64519,0.53561,0.6582,0.13449,0.75798,0,0.69219,0.01846,0.56358,0.05499,0.30918,0,0.27863,0,0.12423,0,0,0.19596,0,0.40243,0,0.24536,0.19241,0.21679,0.0811],"triangles":[6,7,16,6,16,5,15,16,7,7,14,15,8,14,7,11,14,8,11,8,9,12,14,11,13,14,12,10,11,9,17,4,5,16,17,5,18,19,3,18,3,4,18,4,17,0,28,26,23,25,28,23,24,25,27,28,0,27,23,28,1,27,0,21,22,27,21,27,1,2,21,1,2,20,21,3,20,2,19,20,3,27,22,23,28,25,26],"vertices":[2,38,9.24,26.77,0.808,6,85.19,-98.03,0.192,1,38,35.87,35.63,1,2,38,61.98,28.62,0.84641,39,40.04,38.85,0.15359,2,38,77.67,27.28,0.34921,39,34.62,24.06,0.65079,3,38,73.77,39.05,0.10938,39,47.01,24.74,0.78124,48,-42.17,-19.42,0.10938,2,39,86.98,31.25,0.65079,48,-25.75,17.61,0.34921,2,39,103.84,34.49,0.34375,48,-19.24,33.5,0.65625,2,39,114.05,19.51,0.10938,48,-1.12,33.84,0.89062,1,48,53.62,34.88,1,1,48,96.03,-19.16,1,1,48,104.2,-47.32,1,1,48,71.34,-23.98,1,1,48,81.39,-64.61,1,1,48,76.81,-68.82,1,1,48,46.66,-34.26,1,2,39,73.14,-45.77,0.10938,48,31.14,-36.12,0.89062,2,39,73.98,-26.91,0.34375,48,15.82,-25.1,0.65625,2,39,65.11,-26.69,0.65079,48,10.78,-32.4,0.34921,3,38,134.76,4.51,0.10938,39,-2.35,-25.03,0.78124,48,-27.52,-87.96,0.10938,2,38,121.45,-16.1,0.34921,39,-18.74,-6.77,0.65079,2,38,96.94,-14.98,0.84641,39,-11.21,16.58,0.15359,1,38,45.47,-17.43,1,1,38,47.64,-32.91,1,2,38,12.11,-34.27,0.536,6,40.33,-56.53,0.464,2,38,-2.57,-46.21,0.536,6,42.42,-37.73,0.464,2,38,-7.4,-14.83,0.472,6,67.87,-56.7,0.528,2,38,-12.49,18.22,0.664,6,94.68,-76.69,0.336,1,38,18.79,4.26,1,2,38,0.95,-1.4,0.512,6,71.34,-72.13,0.488],"hull":27,"edges":[38,36,32,30,30,28,28,26,24,26,24,22,22,20,20,18,18,16,44,42,38,6,38,40,40,42,6,4,4,2,40,4,8,6,36,8,32,12,42,2,52,0,0,2,16,14,14,12,30,14,36,34,34,32,12,10,10,8,34,10,48,50,50,52,44,46,46,48,50,56,56,54],"width":162,"height":203}},"raptor-front-leg":{"raptor-front-leg":{"type":"mesh","uvs":[0.55117,0.17818,0.6279,0.36027,0.66711,0.4533,0.6488,0.51528,0.53554,0.56894,0.32335,0.66947,0.28674,0.72087,0.32539,0.80401,0.36258,0.80144,0.42056,0.79744,0.61015,0.78436,0.7335187,0.813354,0.84813,0.84029,1,0.93855,0.7320025,0.9234452,0.62439,0.91738,0.72813,1,0.58574,1,0.47085705,0.9824938,0.36708,0.96668,0.26307,0.95082,0.16267,0.93552,0.03859,0.72238,0,0.66947,0.0374,0.62999,0.1647,0.49563,0.23732,0.45681,0.2702,0.43923,0.28064,0.43365,0.223,0.40571,0.12565,0.35851,0,0.2976,0,0.1524,0,0,0.32132,0,0.32222,0.22778,0.44931,0.38031,0.47664,0.44362,0.4615,0.47375,0.35106,0.53247,0.20091,0.65257,0.18528,0.72148,0.25222,0.86314,0.30942,0.88124,0.55694,0.89613,0.55858,0.89208,0.47493,0.8534,0.6059,0.91526,0.39706,0.8913,0.1323,0.09352,0.36997,0.45346,0.37163,0.43828,0.32516,0.39424,0.2376,0.34426,0.34066,0.47415,0.5167736,0.9050346,0.0782149,0.2633345,0.05795925,0.13086465,0.09601473,0.05962839,0.2930331,0.03825483],"triangles":[14,12,13,14,11,12,14,15,11,11,15,10,55,44,47,44,45,47,10,15,45,15,47,45,55,46,44,44,46,45,45,46,10,46,9,10,48,9,46,48,8,9,16,17,15,17,47,15,18,55,17,17,55,47,19,48,18,18,48,55,20,43,19,19,43,48,48,46,55,48,43,8,21,42,20,20,42,43,21,41,42,21,22,41,43,7,8,43,42,7,42,6,7,42,41,6,23,24,22,22,24,41,41,40,6,41,24,40,6,40,5,5,39,4,5,40,39,39,26,54,39,40,26,24,25,40,40,25,26,39,38,4,4,38,3,39,50,38,39,54,50,38,37,3,3,37,2,26,27,54,54,27,50,50,51,38,38,51,37,27,28,50,50,28,51,56,57,49,32,33,57,57,58,49,57,33,58,49,58,59,59,58,34,34,58,33,59,34,0,32,57,56,37,1,2,51,36,37,37,36,1,28,52,51,51,52,36,28,29,52,29,53,52,29,30,53,36,52,35,52,53,35,36,0,1,36,35,0,31,56,30,30,56,53,53,56,35,31,32,56,56,49,35,35,59,0,49,59,35],"vertices":[2,42,128.03,88.47,0.85041,1,158.83,-71.92,0.14959,2,42,219.55,53.15,0.77988,43,-48.05,-38.59,0.22012,2,42,266.31,35.11,0.53545,43,-36.73,10.22,0.46455,2,42,286.89,9.8,0.35167,43,-14.56,34.15,0.64833,2,42,281.55,-41.24,0.09228,43,36.71,36,0.90772,3,42,271.54,-136.86,0.05787,43,132.77,39.48,0.71426,44,35,78.76,0.22788,3,43,158.22,55.17,0.5308,44,52.66,54.64,0.38143,45,7.02,85.54,0.08776,4,43,167.14,99.49,0.22977,44,97.55,49.25,0.37788,45,28.72,45.88,0.15198,46,-21.26,49.99,0.24037,4,44,102.57,62.61,0.26558,45,42.51,49.56,0.17568,46,-7.07,51.4,0.22874,47,-58.17,28.03,0.33001,4,44,109.72,83.4,0.11934,45,64.09,55.24,0.13984,46,15.13,53.52,0.16668,47,-36.1,31.19,0.57414,1,47,35.81,41.81,1,1,47,83.66,29.43,1,1,47,128.11,17.93,1,1,47,188.73,-29.42,1,2,46,145.37,-10.99,0.34248,47,84.02,-27.11,0.65752,2,46,93.3,-7.6,0.48,47,44.87,-26.18,0.52,2,46,133.18,-49.83,0.776,47,86.69,-66.48,0.224,2,46,78.79,-50.15,0.768,47,32.38,-69.36,0.232,2,46,35.36,-41.46,0.88989,47,-9.88,-62.73,0.11011,1,46,-4.92,-33.56,1,3,44,155.05,-5.14,0.35918,45,17.88,-32.51,0.30633,46,-44.62,-25.61,0.3345,4,43,254.98,126.28,0.10155,44,131.22,-36.21,0.54212,45,-21.25,-31.18,0.20873,46,-83.02,-17.98,0.1476,3,43,240.34,7.81,0.25587,44,11.94,-30.99,0.61615,45,-86.32,68.91,0.12798,2,43,239.27,-23.1,0.45486,44,-18.96,-32.37,0.54514,3,42,187.65,-209.74,0.09777,43,216.67,-33.36,0.58893,44,-30.98,-10.65,0.3133,2,42,163.86,-128.68,0.19603,43,139.75,-68.26,0.80397,3,42,165.75,-94.49,0.3178,43,105.59,-71.26,0.67648,75,-80.8,-39.34,0.00571,3,42,166.4,-79.07,0.45961,43,90.23,-72.77,0.53468,75,-67.92,-34.74,0.00571,3,42,166.49,-74.17,0.53171,43,85.43,-73.29,0.45686,75,-64.13,-33.63,0.01143,3,42,141.54,-82.47,0.7272,43,97.13,-96.82,0.26709,75,-86.02,-21.18,0.00571,3,42,99.76,-97.08,0.84471,43,117.34,-136.23,0.14529,75,-123.07,1.78,0.01,2,42,45.01,-114.56,0.83615,1,-51.09,-135.29,0.16385,2,42,-16.21,-74.77,0.53,1,-42.95,-58.39,0.47,1,1,-52.66,17.56,1,1,1,70.07,18.78,1,2,42,93.55,4.14,0.84985,75,-47.66,63.53,0.15015,3,42,185.14,-6.67,0.69958,43,15.99,-64.28,0.22749,75,0.73,-14.59,0.07292,3,42,217.11,-18.75,0.50337,43,23.47,-30.93,0.48663,75,9.65,-46.32,0.01,2,42,225.64,-32.92,0.32528,43,36.31,-20.51,0.67472,3,42,223,-84.74,0.2007,43,87.97,-15.86,0.79322,75,-43.91,-82.01,0.00607,3,42,235.62,-168.07,0.08091,43,168.7,8.29,0.57148,44,6.75,40.47,0.34761,3,43,191.8,35.81,0.32545,44,36.01,19.63,0.57243,45,-31.15,78.74,0.10211,4,43,206.64,111.54,0.10808,44,112.69,10.83,0.52068,45,6.26,11.23,0.23518,46,-49.03,19.43,0.13606,3,44,130.61,26.42,0.35068,45,29.36,5.72,0.28241,46,-27.13,10.26,0.36691,2,46,67.47,3.17,0.384,47,18.56,-16.63,0.616,1,47,19.07,-14.52,1,2,46,36.01,24.95,0.384,47,-13.89,3.64,0.616,2,46,86.23,-6.55,0.488,47,37.76,-25.46,0.512,4,44,151.19,56,0.22879,45,65.44,5.56,0.18425,46,8.45,4.28,0.45492,47,0,0,0.13205,3,42,-9.28,-17.51,0.21934,1,7.72,-30.86,0.74243,75,-126.22,130.87,0.03823,3,42,195.91,-53.82,0.42127,43,61.12,-47.06,0.57302,75,-30.92,-46.02,0.00571,3,42,190.1,-48.45,0.52927,43,56.62,-53.56,0.46502,75,-29.84,-39.6,0.00571,3,42,161.27,-48.26,0.74345,43,60.44,-82.13,0.18733,75,-47.3,-19.14,0.06922,3,42,120.38,-58.54,0.78619,43,76.31,-121.19,0.13381,75,-79.81,7.32,0.08,3,42,197.37,-69.23,0.33416,43,76.18,-43.47,0.66185,75,-43.15,-54,0.00398,4,44,167.22,97.41,0.10303,45,97.38,0.84,0.08297,46,54.09,-2.79,0.51764,47,4.74,-23.22,0.29636,3,42,49.5,-83.17,0.65468,1,-17.26,-114.16,0.26246,75,-142.18,45.76,0.08286,3,42,-9.83,-51.31,0.41164,1,-21.43,-46.95,0.57122,75,-153.07,111.17,0.01714,2,42,-31.44,-20.43,0.27617,1,-6.57,-12.31,0.72383,3,42,0.92,47.46,0.40628,1,68.18,-4.06,0.57468,75,-69.72,165.13,0.01904],"hull":35,"edges":[46,44,44,42,32,34,32,30,26,24,14,12,12,10,6,4,66,68,0,68,46,48,48,50,40,42,16,14,58,56,4,2,2,0,10,8,8,6,78,80,80,82,82,84,84,86,86,96,16,18,18,20,38,40,62,64,64,66,100,102,102,104,58,60,60,62,106,104,54,56,50,52,52,54,108,100,78,76,76,74,72,74,72,70,70,98,92,90,56,102,100,54,52,108,58,104,60,106,76,6,74,4,72,2,78,8,92,20,92,88,88,94,90,30,94,30,26,28,28,30,20,22,22,24,28,22,34,36,36,38,94,110,110,96,36,110,110,88,60,112,112,114,114,116,116,118,118,0],"width":382,"height":514}},"raptor-hindleg-back":{"raptor-hindleg-back":{"type":"mesh","uvs":[0.45041,0.09352,0.56934,0.23361,0.65294,0.47297,0.66354,0.50822,0.63175,0.54255,0.32384,0.69723,0.30069,0.73876,0.27934,0.77704,0.30417,0.83513,0.31059,0.85014,0.34101,0.85047,0.45165,0.85164,0.59556,0.81882,0.91177,0.92548,1,1,0.56337,0.96427,0.4835,0.98261,0.29879,0.98027,0.22808,0.98389,0.15998,0.98738,0.15424,0.95547,0.13895,0.87048,0.07371,0.78726,0,0.753,0,0.7049,0,0.671,0.11876,0.64653,0.16535,0.5266,0.28496,0.47398,0.29011,0.45774,0.29427,0.4446,0.20635,0.40396,0.06129,0.33691,0,0.25247,0,0,0.30793,0,0.276,0.20262,0.40398,0.31122,0.48439,0.45964,0.48318,0.48384,0.47029,0.51062,0.22698,0.67328,0.17142,0.7242,0.17122,0.78242,0.22996,0.89469,0.24677,0.90829,0.28672,0.9146,0.46583,0.91414],"triangles":[15,13,14,16,47,15,15,12,13,15,47,12,18,46,17,18,45,46,17,47,16,17,46,47,47,10,11,47,46,10,47,11,12,45,18,19,44,45,20,20,45,19,20,21,44,46,9,10,46,45,9,45,44,9,21,43,44,44,8,9,44,7,8,44,43,7,21,22,43,43,22,42,43,42,7,22,23,24,24,42,22,7,42,6,42,41,6,6,41,5,24,26,42,42,26,41,24,25,26,5,40,4,5,41,40,41,28,40,26,27,41,41,27,28,40,39,4,28,29,40,40,29,39,4,39,3,39,2,3,29,30,39,39,38,2,39,30,38,38,1,2,30,37,38,38,37,1,30,31,37,31,36,37,31,32,36,32,33,36,37,0,1,37,36,0,33,34,36,36,35,0,36,34,35],"vertices":[1,17,53.94,69.16,1,1,17,126.23,67.31,1,2,17,226.42,31.14,0.9375,18,-30.88,-1.11,0.0625,2,17,240.84,25.33,0.7,18,-25.65,13.52,0.3,2,17,246.67,8.06,0.3,18,-8.61,20.02,0.7,3,17,240.82,-115.25,0.0625,18,114.81,19.01,0.875,19,9.48,59.16,0.0625,2,18,131.07,29.69,0.7,19,22.12,44.36,0.3,2,18,146.07,39.54,0.3,19,33.76,30.71,0.7,3,18,152.6,65.01,0.12567,19,59.85,27.41,0.75203,20,15.86,48.05,0.1223,2,19,66.6,26.56,0.82916,20,16.73,41.31,0.17084,3,19,71.2,35.76,0.64716,20,26.79,39.17,0.1317,21,-67.33,18.96,0.22114,3,19,87.93,69.21,0.0625,20,63.37,31.39,0.675,21,-30.18,23.3,0.2625,2,20,113.82,35.72,0.10381,21,16.23,43.56,0.89619,1,21,128.14,12.02,1,1,21,161.85,-15.82,1,1,21,13.52,-19.72,1,2,20,62.98,-25.82,0.7,21,-12.23,-31.02,0.3,3,19,115.12,-1.34,0.08333,20,1.94,-12.66,0.83333,21,-74.27,-38.11,0.08333,2,19,106.11,-23.53,0.3,20,-21.81,-9.53,0.7,2,19,97.44,-44.91,0.7,20,-44.67,-6.51,0.3,2,19,84.26,-40.69,0.9375,20,-43.91,7.3,0.0625,1,19,49.19,-29.47,1,2,18,206.75,5.37,0.13333,19,7.44,-33.78,0.86667,2,18,219.64,-20.52,0.36111,19,-16.64,-49.81,0.63889,2,18,208.41,-37.83,0.72083,19,-35.22,-40.82,0.27917,2,18,200.49,-50.03,0.91667,19,-48.31,-34.49,0.08333,1,18,161.11,-36.98,1,2,17,150.1,-116.77,0.08333,18,119.88,-71.55,0.91667,2,17,154.99,-70.72,0.42846,18,73.68,-68.48,0.57154,2,17,150.31,-65.27,0.35605,18,68.43,-73.37,0.64395,2,17,146.52,-60.87,0.59148,18,64.18,-77.33,0.40852,2,17,115.13,-75.09,0.8446,18,79.61,-108.13,0.1554,1,17,63.33,-98.54,1,1,17,21.78,-94.56,1,1,17,-66.69,-32.05,1,1,17,-6.63,52.97,1,1,17,58.15,-6.01,1,1,17,121.17,2.44,1,1,17,188.87,-12.1,1,2,17,197.12,-18.43,0.7,18,19.79,-28.44,0.3,2,17,203.99,-28.62,0.3,18,29.7,-21.18,0.7,1,18,136.67,-7.43,1,2,18,164.32,0.67,0.7,19,-2.53,7.74,0.3,2,18,177.98,21.58,0.25,19,19.92,-3.2,0.75,1,19,71.94,-6.3,1,2,19,79.66,-3.72,0.7,20,-9.29,21.05,0.3,2,19,87.98,7.26,0.3125,20,3.43,15.76,0.6875,2,20,62.84,4.16,0.72917,21,-21.96,-2.67,0.27083],"hull":36,"edges":[66,68,66,64,56,54,54,52,52,50,46,44,44,42,34,32,32,30,30,28,28,26,26,24,24,22,10,8,8,6,6,4,4,2,2,0,68,70,0,70,46,48,48,50,14,12,12,10,60,58,58,56,42,40,40,38,18,16,16,14,22,20,20,18,38,36,36,34,60,62,62,64,68,72,72,74,74,76,76,78,78,80,80,82,82,84,84,86,16,88,86,88,18,90,90,38,88,90,20,92,92,36,90,92,92,94,94,22,94,32,30,24,88,40,86,14,84,12,82,10,82,52,48,84,44,86,78,6,4,76,80,8,80,56,58,78,76,60],"width":338,"height":429}},"raptor-horn":{"raptor-horn":{"type":"mesh","uvs":[0.2320153,0,0.3645552,0.3050978,0.3796721,0.2857785,0.4298346,0.4150413,0.4825494,0.4591996,0.4918112,0.375578,0.5426151,0.4336412,0.6274374,0.2237305,0.7268489,0.20157292,0.7115516,0.10296465,0.7436974,0.12629266,0.8715365,0.3269362,0.9265505,0.5884654,0.9514625,0.5829078,1,0.7979733,0.9985468,0.9160847,0.9566796,0.9066001,0.8954752,0.8405172,0.8574452,0.7156778,0.8117617,0.7108075,0.7914574,0.6416241,0.714598,0.6694834,0.7030812,0.721095,0.6640457,0.9195486,0.5713867,1,0.5126506,1,0.4074921,0.941782,0.3449897,0.801856,0.24959217,0.4946659,0.2394483,0.4213032,0.1576777,0.3774751,0.10301193,0.4385621,0.0715998,0.5418206,0.0634989,0.7233295,0.09680023,0.785812,0.19704853,0.703121,0.2084882,0.7070155,0.13611205,0.8718369,0.079402,0.956752,0.03745056,0.9278391,0,0.7270688,0,0.4923866,0.01820776,0.3757654,0.08923977,0.1600458,0.22169617,0.0859055,0.2123134,0.02037095,0.21550685,0,0.9339475,0.7494978,0.8407752,0.4721375,0.760784,0.4648366,0.7161605,0.5848157,0.5537296,0.7587875,0.4539151,0.6548708,0.3518486,0.5462127],"triangles":[17,18,47,0,45,46,44,45,0,8,9,10,1,44,0,8,10,11,30,43,44,29,30,44,31,42,43,1,29,44,30,31,43,4,5,6,49,8,11,48,49,11,28,29,1,32,42,31,41,42,32,53,28,1,12,48,11,49,50,7,49,7,8,6,7,50,20,49,48,50,49,20,52,3,4,6,50,51,21,50,20,18,19,20,48,18,20,48,47,18,21,22,50,32,40,41,33,40,32,47,48,12,22,51,50,4,6,51,52,4,51,47,13,14,53,27,28,1,2,3,53,1,3,37,34,35,37,35,36,16,47,14,17,47,16,23,51,22,39,40,33,39,33,34,38,39,34,53,52,27,52,53,3,25,26,52,26,27,52,37,38,34,51,25,52,24,25,51,23,24,51,47,12,13,15,16,14],"vertices":[1,34,281.61,81.74,1,1,34,213.35,84.72,1,1,34,211.41,78.74,1,2,34,184.08,81.47,0.99749,74,-201.91,110.55,0.00251,1,34,165.27,73.64,1,1,34,171.82,61.6,1,2,34,152.01,55.86,0.99978,74,-160.92,112.71,0.00022,2,34,152.05,10.45,0.99,74,-134.51,149.65,0.01,2,34,127.93,-16.63,0.98888,74,-99.14,157.63,0.01112,2,34,142.65,-24.37,0.97775,74,-106.6,172.5,0.02225,2,34,131.57,-29.57,0.9788,74,-94.56,170.26,0.0212,2,34,75.83,-37.63,0.97359,74,-44.55,144.38,0.02641,2,34,32.94,-20.65,0.93,74,-19.57,105.6,0.07,2,34,26.9,-27.43,0.9,74,-10.71,107.6,0.1,2,34,-9.24,-14.28,0.86,74,11.02,75.86,0.14,2,34,-21.6,-0.12,0.78,74,12.83,57.16,0.22,2,34,-9.42,9.08,0.84,74,-2.43,56.76,0.16,2,34,14.03,16.44,0.88122,74,-25.78,64.43,0.11878,2,34,37.64,11.23,0.93,74,-41.95,82.41,0.07,2,34,50.35,21.92,0.94,74,-58.5,81.12,0.06,2,34,63.22,18.84,0.95957,74,-67.18,91.12,0.04043,2,34,80.71,41.03,0.99714,74,-94.31,83.25,0.00286,1,34,78.21,49.9,1,1,34,67.2,82.69,1,1,34,83.22,114.91,1,1,34,98.88,129.38,1,1,34,133.2,148.49,1,1,34,164.96,147.54,1,1,34,223.55,135.17,1,1,34,234.17,129.11,1,1,34,260.7,144.13,1,1,34,268.68,164.73,1,1,34,265.91,184.53,1,1,34,248.48,207.72,1,1,34,232.86,206.82,1,1,34,215.06,172.46,1,1,34,211.59,170.1,1,1,34,213.1,207.18,1,1,34,219.05,231.06,1,1,34,233.36,238.02,1,1,34,265.01,223.8,1,1,34,290.33,196.4,1,1,34,298.06,178.29,1,1,34,302.4,135.6,1,1,34,275.09,94.31,1,1,34,284.66,88.97,1,1,34,286.01,85.81,1,2,34,13.6,-3.66,0.93,74,-13.73,80.52,0.07,1,34,68.37,-13.1,1,2,34,90.48,5.75,0.995,74,-81.72,117.62,0.005,2,34,89.43,30.76,0.995,74,-95.42,96.68,0.005,1,34,113.96,91.09,1,1,34,151.78,103.55,1,1,34,190.72,116,1],"hull":47,"edges":[0,92,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,18,20,20,22,22,24,24,26,26,28,30,32,32,34,36,38,38,40,40,42,42,44,44,46,46,48,48,50,50,52,52,54,54,56,56,58,60,62,62,64,64,66,66,68,68,70,70,72,72,74,74,76,76,78,78,80,80,82,82,84,84,86,86,88,88,90,90,92,28,30,16,18,34,36,58,60,96,94,96,98,98,100],"width":363,"height":159}},"raptor-horn-back":{"raptor-horn-back":{"x":121.43,"y":83.01,"rotation":-132.22,"width":351,"height":153}},"raptor-jaw":{"raptor-jaw":{"type":"mesh","uvs":[0.4361067,0.10281,0.5045727,0.2644637,0.5967342,0.3777679,0.6941603,0.4975443,0.7977112,0.5491686,0.9114874,0.598116,0.9999997,0.6361945,0.9930525,0.8562525,0.6760647,1,0.39520955,1,0.19457,0.89404,0.2161,0.6497,0,0.46112,0,0,0.2612472,0.00000998345,0.19457,0.29385,0.6067776,0.8124308,0.4289615,0.8893819,0.8600588,0.8027105,0.6478775,0.9300833,0.5834864,0.6241919,0.41195855,0.6975168,0.4615322,0.5192138,0.3598942,0.3663982,0.3256392,0.5423782],"triangles":[15,14,0,1,23,0,12,13,15,15,13,14,8,18,7,7,18,6,18,5,6,8,19,18,17,21,16,23,15,0,24,15,23,21,20,16,21,22,20,21,24,22,24,23,22,2,22,23,20,22,3,22,2,3,2,23,1,11,24,21,4,16,20,16,4,18,17,16,19,19,16,18,18,4,5,4,20,3,9,10,17,8,9,19,9,17,19,10,21,17,10,11,21,11,12,24,12,15,24],"vertices":[2,54,28.47,75.44,0.40489,74,-91.22,43.02,0.59511,2,54,66.98,65.83,0.54061,74,-64.96,13.27,0.45939,2,54,98.09,68.86,0.67457,74,-37.62,-1.88,0.32543,2,54,132.32,71.81,0.77891,74,-7.76,-18.87,0.22109,2,54,163.31,76.98,0.78694,74,20.7,-32.2,0.21306,2,54,190.52,90.03,0.78631,74,50.51,-36.88,0.21369,2,54,210.32,100.44,0.86507,74,72.72,-39.54,0.13493,1,54,238.9,67.81,1,2,54,234.83,1.64,0.98898,74,36.86,-134.8,0.01102,2,54,173.67,-58.3,0.98603,74,-47.5,-149.48,0.01397,1,54,125.49,-79.1,1,2,54,87.8,-40.51,0.77481,74,-108.13,-86.11,0.22519,3,54,-5.59,-78.2,0.30353,8,-21.32,-18.84,0.63716,74,-202.55,-73.18,0.05931,2,8,106.45,-6.22,0.98571,74,-224.49,48.7,0.01429,2,8,95.42,-85.63,0.62475,74,-144.43,44.69,0.37525,2,54,24.89,6.25,0.63522,74,-133.42,-11.92,0.36478,2,54,177.48,5.6,0.7446,74,-8.12,-99.01,0.2554,2,54,160.25,-36.54,0.86286,74,-46.21,-123.95,0.13714,2,54,216.48,51.69,0.84606,74,50.14,-83.17,0.15394,2,54,213.42,2.58,0.92571,74,19.76,-121.89,0.07429,2,54,138.62,31.33,0.63037,74,-25.53,-55.78,0.36963,2,54,124.75,-11.2,0.73167,74,-61.07,-82.94,0.26833,2,54,102.54,22.8,0.5705,74,-60.08,-42.34,0.4295,2,54,61.9,25.79,0.54075,74,-91.85,-16.83,0.45925,2,54,86.18,-5.32,0.63768,74,-89.5,-56.22,0.36232],"hull":15,"edges":[24,26,24,22,22,20,20,18,18,16,8,6,2,0,26,28,0,28,26,30,24,30,30,0,14,16,14,12,8,32,32,34,8,10,10,12,2,4,4,6],"width":252,"height":275}},"raptor-jaw-inside":{"raptor-jaw2":{"type":"mesh","path":"raptor-jaw","uvs":[0.4361067,0.10281,0.5045727,0.2644637,0.6941603,0.4975443,0.7977112,0.5491686,0.9999997,0.6361945,0.9930525,0.8562525,0.6760647,1,0.39520955,1,0.19457,0.89404,0.2161,0.6497,0,0.46112,0,0,0.2612472,0.00000998345,0.19457,0.29385,0.6067776,0.8124308,0.4289615,0.8893819],"triangles":[13,11,12,10,11,13,13,12,0,13,0,1,9,13,1,9,1,2,10,13,9,14,9,2,14,2,3,5,3,4,14,3,5,15,9,14,8,9,15,7,8,15,6,14,5,15,14,6,7,15,6],"vertices":[2,54,28.9,96.24,0.84,74,-73.48,56.29,0.16,2,54,65.84,86.82,0.84002,74,-48.4,27.58,0.15998,2,54,125.41,92.66,0.88641,74,3.97,-1.4,0.11359,2,54,151.38,98.09,0.83356,74,28.44,-11.66,0.16644,2,54,191.91,121,0.85174,74,74.81,-15.78,0.14826,2,54,227.3,89.29,0.83919,74,85.97,-61.97,0.16081,2,54,223.4,25.16,0.94641,74,46.37,-112.58,0.05359,2,54,176.27,-33.76,0.77848,74,-25.86,-134.36,0.22152,2,54,132.75,-53.77,0.70055,74,-73.05,-126.15,0.29945,2,54,94.17,-16.26,0.68436,74,-83.54,-73.38,0.31564,3,54,19.52,-38.44,0.28887,8,-3.76,-62.46,0.60639,74,-154.63,-56.39,0.10474,1,8,98.59,-46.15,1,2,8,110.02,-102.65,0.84736,74,-123.17,57.1,0.15264,2,54,31.25,29.22,0.82334,74,-109.57,-0.23,0.17666,2,54,171.54,28.72,0.86269,74,5.69,-80.23,0.13731,2,54,161.87,-12.64,0.71096,74,-25.74,-108.8,0.28904],"hull":13,"edges":[20,22,20,18,18,16,16,14,14,12,6,4,4,2,2,0,22,24,0,24,22,26,20,26,26,0,10,12,6,8,10,8,6,28,28,30],"width":252,"height":275}},"raptor-mouth-inside":{"raptor-mouth-inside":{"type":"mesh","uvs":[1,0.2901708,0.3721679,1,0,1,0,0,1,0],"triangles":[1,2,3,0,1,3,3,4,0],"vertices":[1,8,26.56,-211.68,1,1,54,130.45,-7.83,1,1,54,109.72,-24.21,1,1,8,47.22,-139.7,1,1,8,50.33,-210.63,1],"hull":5,"edges":[4,6,6,8,2,4,0,8,2,0],"width":71,"height":82}},"raptor-saddle":{"raptor-saddle-w-shadow":{"type":"mesh","uvs":[0.2851687,0.09748712,0.2689083,0.1471946,0.3243085,0.2889278,0.4506858,0.5279327,0.5607564,0.5621913,0.6993636,0.5350207,0.7156704,0.4487835,0.8379711,0.3637275,0.9127102,0.3471887,1,0.5362242,1,0.617714,0.9347877,0.829428,0.8752383,0.9601347,0.740987,1,0.2898378,0.9495954,0.12981683,0.8530382,0.1029457,0.6944349,0.1044914,0.6365652,0.20499033,0.6452009,0.09539534,0.4174135,0.001327455,0.3784141,0,0.2702627,0.11185617,0,0.1702127,0,0.24413365,0,0.46313465,0.9233212,0.5675508,0.8441542,0.9405592,0.6790604,0.9262991,0.4310634,0.2137001,0.18681794,0.18239355,0.2896332,0.21653177,0.3382445,0.3230655,0.4453539,0.3860594,0.5291085,0.3906913,0.5597112,0.365679,0.6031992,0.3823539,0.6241378,0.4397894,0.6917375,0.5389122,0.714287,0.6232128,0.7158975,0.7038079,0.6925429,0.7482742,0.6635508,0.7899613,0.6208682,0.8057098,0.5693269,0.7973724,0.540335,0.7566117,0.5121482,0.7278938,0.5153695,0.2063416,0.08375912,0.17577094,0.1288577,0.136863,0.1876471,0.11185077,0.2875084,0.1776237,0.3632098,0.2619244,0.4606551,0.3054643,0.5001165,0.3156544,0.5548792,0.810258,0.7038045,0.86992,0.6597587,0.8992743,0.5451668,0.8492496,0.4799348,0.8186791,0.43161485],"triangles":[47,23,24,47,24,0,47,22,23,1,47,0,48,47,1,29,48,1,48,49,22,47,48,22,49,48,29,21,22,49,50,21,49,29,1,2,30,49,29,30,29,2,50,49,30,31,30,2,51,50,30,51,30,31,20,21,50,19,20,50,19,50,51,8,9,28,7,8,28,59,7,28,32,31,2,2,3,32,7,59,6,52,31,32,51,31,52,58,59,28,53,52,32,45,6,59,45,59,58,46,6,45,33,53,32,3,33,32,46,5,6,44,45,58,57,58,28,57,28,9,44,58,57,54,53,33,34,33,3,54,33,34,43,44,57,35,54,34,57,9,10,46,44,43,44,46,45,36,35,34,52,19,51,19,52,18,54,52,53,54,18,52,56,43,57,27,56,57,42,43,56,46,42,5,43,42,46,41,5,42,10,27,57,3,36,34,37,3,4,37,36,3,40,5,41,4,5,40,16,17,18,55,42,56,41,42,55,38,37,4,39,38,4,40,39,4,27,55,56,11,55,27,11,27,10,26,38,39,15,16,18,26,25,37,26,37,38,14,18,37,35,18,54,36,18,35,37,18,36,14,37,25,15,18,14,12,55,11,55,13,40,55,40,41,13,55,12,26,39,40,13,26,40,25,26,13,14,25,13],"vertices":[262.59,79.92,244.74,92.82,188.83,69.76,114.07,26.79,102.07,-9.38,113.32,-54.32,145.78,-58.87,178.6,-97.98,185.38,-122.19,120.06,-152.19,84.63,-153.03,15.94,-134.16,-24.77,-117.84,-45.38,-70.46,-59.12,75.16,-24.15,128.17,35.11,138.33,56.81,138.33,54.35,105.5,138.9,143.23,152.8,174.24,193.34,175.62,295.51,141.56,295.96,122.54,296.53,98.45,-47.94,18.91,-17.46,-14.42,67.83,-136.04,154.04,-127.36,226.26,106.71,187.47,116.01,169.51,104.45,130.18,68.79,99.26,47.52,87.82,45.74,71.33,53.5,63.61,47.89,52.57,28.9,44.88,-3.61,44.93,-31.1,54.3,-57.16,65.51,-71.39,81.83,-84.6,101.28,-89.28,112.08,-86.31,122.33,-72.77,120.91,-63.44,264.84,110.02,247.7,119.59,225.36,131.75,187.73,139.02,159.85,116.91,123.97,88.58,109.51,74.04,89.06,70.23,41.99,-86.15,68.62,-111.21,111.05,-119.56,135.12,-102.68,153,-92.29],"hull":25,"edges":[44,42,40,42,40,38,38,36,36,34,34,32,32,30,30,28,28,50,50,52,52,26,26,24,24,22,22,54,54,20,20,18,18,56,56,16,16,14,14,12,12,10,10,8,8,6,6,4,4,2,2,0,0,48,26,28,20,22,16,18,2,58,58,60,60,62,62,64,64,66,66,68,68,70,70,72,72,74,74,76,76,78,78,80,80,82,82,84,84,86,86,88,88,90,90,92,92,10,44,46,46,48,46,94,94,96,96,98,98,100,100,102,102,104,104,106,106,108,108,36,110,112,112,114,114,116,116,118,118,14],"width":324,"height":341}},"raptor-saddle-strap-back":{"raptor-saddle-strap-back":{"x":78.45088,"y":-4.196441,"rotation":120.23926,"width":108,"height":148}},"raptor-saddle-strap-front":{"raptor-saddle-strap-front":{"x":128.83,"y":-4.72,"rotation":61.29,"width":114,"height":189}},"raptor-tongue":{"raptor-tongue":{"type":"mesh","uvs":[0.35242,0.21561,0.4794,0.44246,0.62072,0.61177,0.80563,0.75374,1,0.90297,1,1,0.8971,1,0.72055,0.92255,0.50668,0.82872,0.30402,0.70725,0.10537,0.57889,0,0.50622,0,0,0.26225,0],"triangles":[7,2,3,6,3,4,7,3,6,6,4,5,1,9,0,8,9,1,2,8,1,8,2,7,0,11,12,0,12,13,10,11,0,9,10,0],"vertices":[2,71,3.64,27.05,0.6875,72,-47.27,33.88,0.3125,3,71,39.1,19.46,0.3125,72,-13.42,20.87,0.625,73,-51.54,33.38,0.0625,3,71,71.56,19.03,0.0625,72,18.59,15.4,0.625,73,-21.56,20.92,0.3125,2,72,55.03,16.86,0.3125,73,14.29,14.24,0.6875,2,72,93.34,18.4,0.08333,73,51.98,7.21,0.91667,1,73,56.09,-4.51,1,2,72,85.07,-1.49,0.08333,73,39.49,-10.33,0.91667,2,72,54.23,-9.18,0.3125,73,7.71,-10.97,0.6875,3,71,75.14,-14.72,0.0625,72,16.87,-18.5,0.625,73,-30.77,-11.74,0.3125,3,71,38.8,-25.81,0.3125,72,-20.75,-23.8,0.625,73,-68.63,-8.54,0.0625,2,71,2.4,-35.78,0.6875,72,-58.25,-27.99,0.3125,2,71,-17.29,-40.63,0.91667,72,-78.46,-29.72,0.08333,1,71,-59.92,8.19,1,2,71,-26.14,37.69,0.91667,72,-75.02,49.02,0.08333],"hull":14,"edges":[22,24,10,12,10,8,24,26,16,4,18,16,2,4,18,2,22,20,0,26,20,0,0,2,12,14,14,16,4,6,6,8,14,6,20,18],"width":171,"height":128}},"raptow-jaw-tooth":{"raptor-jaw-tooth":{"type":"mesh","uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[1,54,275.87,107.8,1,2,54,235.58,46.93,0.94857,74,-85.57,-171.76,0.05143,2,54,155.53,99.92,0.94,74,-56.06,-80.4,0.06,1,54,195.82,160.79,1],"hull":4,"edges":[0,2,2,4,4,6,0,6],"width":73,"height":96}},"spineboy-torso":{"torso":{"x":55.88,"y":4.87,"rotation":-104.14,"width":108,"height":182}},"stirrup-back":{"stirrup-back":{"x":53.2,"y":31.34,"rotation":-21.13,"width":87,"height":69}},"stirrup-front":{"stirrup-front":{"x":36.14,"y":20.39,"rotation":-21.13,"width":89,"height":100}},"stirrup-strap":{"stirrup-strap":{"type":"mesh","uvs":[0.36823,0.27894,0.45738,0.38897,0.54452,0.49652,0.67872,0.59135,0.81977,0.69102,1,0.77344,1,1,0.77957,1,0.6373,0.8163,0.53364,0.72349,0.40534,0.60861,0.30886,0.52535,0.2105,0.44048,0,0.26245,0,0,0.30637,0,0.20242,0.23001],"triangles":[2,10,1,9,10,2,9,2,3,8,9,3,8,3,4,7,8,4,7,4,5,7,5,6,16,14,15,13,14,16,16,15,0,12,16,0,12,0,1,13,16,12,11,12,1,10,11,1],"vertices":[2,59,24.72,8.04,0.80345,60,-17.42,11.02,0.19655,2,59,37.95,8.04,0.59979,60,-4.37,8.87,0.40021,2,59,50.88,8.05,0.36895,60,8.39,6.77,0.63105,2,59,65.92,12.27,0.17748,60,23.92,8.48,0.82252,2,59,81.73,16.71,0.05943,60,40.24,10.28,0.94057,2,59,98.83,25.04,0.0121,60,58.47,15.72,0.9879,2,59,114.44,11.58,0.00191,60,71.67,-0.11,0.99809,2,59,100.47,-4.61,0.01818,60,55.25,-13.81,0.98182,2,59,78.8,-4.14,0.07488,60,33.95,-9.81,0.92512,2,59,65.83,-6.24,0.2028,60,20.81,-9.77,0.7972,2,59,49.79,-8.84,0.39972,60,4.56,-9.71,0.60028,2,59,37.94,-10.97,0.62658,60,-7.48,-9.89,0.37342,2,59,25.86,-13.15,0.82035,60,-19.76,-10.07,0.17965,2,59,0.25,-18.03,0.95289,60,-45.82,-10.7,0.04711,2,59,-17.84,-2.43,0.9771,60,-61.11,7.64,0.0229,2,59,1.58,20.07,0.94775,60,-38.29,26.68,0.05225,2,59,10.84,-1.24,0.9771,60,-32.63,4.14,0.0229],"hull":16,"edges":[28,30,30,0,12,10,8,10,12,14,14,16,26,28,24,26,26,32,32,30,20,22,22,24,0,2,2,4,4,6,6,8,16,18,18,20],"width":97,"height":91}},"tail-shadow":{"raptor-tail-shadow":{"type":"mesh","uvs":[1,0.5038733,0.8927635,1,0.8206947,0.9699304,0.7292686,0.922309,0.6408266,0.8762418,0.5498845,0.8366692,0.4710567,0.8002196,0.4012287,0.7783001,0.3223776,0.753211,0.25300685,0.7310743,0.20375143,0.718833,0.11753407,0.71414,0,0.7251878,0,0.6633773,0.10358384,0.572817,0.1820103,0.5127993,0.23533583,0.4751185,0.305547,0.42809924,0.3796754,0.3776941,0.448583,0.3281026,0.5198677,0.2798029,0.6100684,0.21367177,0.7072464,0.14608423,0.8010878,0.08081734,0.9013402,0],"triangles":[10,11,14,13,14,11,10,14,15,12,13,11,9,10,15,8,9,16,9,15,16,8,16,17,7,8,17,6,7,18,7,17,18,6,18,19,5,6,19,4,20,21,4,5,20,5,19,20,2,22,23,3,21,22,4,21,3,3,22,2,23,24,0,23,0,2,1,2,0],"vertices":[1,65,-0.16,6.41,1,2,65,42.4,61.67,0.7548,66,-28.13,61.67,0.2452,2,65,69.28,56.16,0.53679,66,-1.25,56.16,0.46321,3,65,103.42,48.48,0.13235,66,32.89,48.48,0.82952,67,-35.63,49.98,0.03813,3,65,136.1,39.06,0.00439,66,65.57,39.06,0.62467,67,-3.36,39.23,0.37094,3,66,99.5,32,0.0995,67,30.26,30.79,0.87982,68,-32.35,31.34,0.02068,3,66,129.1,26.76,0.00046,67,59.61,24.34,0.57172,68,-3.11,24.4,0.42782,2,67,85.42,18.44,0.04275,68,22.59,18.06,0.95725,2,68,51.63,10.96,0.64526,69,-3.07,10.89,0.35474,2,68,77.16,4.61,0.00246,69,22.59,5.12,0.99754,2,69,40.97,2.02,0.84959,70,-8.23,2.08,0.15041,1,70,23.84,-2.64,1,1,70,68.09,-5.25,1,1,70,68.64,-7.05,1,1,70,29.23,-12.51,1,2,69,48.26,-18.17,0.57427,70,-1.07,-18.16,0.42573,1,69,27.9,-20.81,1,2,68,55.03,-24.11,0.40024,69,1.11,-24.1,0.59976,3,67,90.24,-26.6,0.00715,68,26.65,-27.06,0.98709,69,-27.19,-27.68,0.00576,2,67,63.89,-30.1,0.5083,68,0.25,-30.11,0.4917,3,66,108.32,-33.03,0.01005,67,36.41,-34.55,0.9784,68,-27.3,-34.09,0.01155,2,66,74.22,-38.09,0.50429,67,2.13,-38.21,0.49571,3,65,107.88,-44.01,0.04245,66,37.35,-44.01,0.94684,67,-34.96,-42.61,0.01071,2,65,72.14,-50.49,0.52154,66,1.61,-50.49,0.47846,2,65,33.89,-58.82,0.93522,66,-36.64,-58.82,0.06478],"hull":25,"edges":[20,22,22,24,24,26,26,28,28,30,30,20,30,32,18,20,32,18,34,32,16,18,34,16,14,36,16,14,34,36,38,36,12,14,38,12,40,38,10,12,40,10,2,4,46,4,42,8,8,10,40,42,46,44,44,42,4,6,6,8,44,6,2,0,0,48,46,48],"width":377,"height":126}},"visor":{"visor":{"x":99.13,"y":6.51,"rotation":-70.58,"width":261,"height":168}}}}],"events":{"footstep":{}},"animations":{"gun-grab":{"slots":{"front-hand":{"attachment":[{"name":"front-open-hand"},{"time":0.23333333,"name":"gun"}]},"gun":{"attachment":[{"time":0.23333333}]}},"bones":{"front-arm":{"rotate":[{"curve":[0.025,0,0.08220983,-21.081696]},{"time":0.1,"value":-32,"curve":[0.1503909,-62.92622,0.21338578,-120.28917]},{"time":0.23333333,"value":-136.89,"curve":[0.2896056,-183.72116,0.3083333,-204.81]},{"time":0.3333333,"value":-204.81,"curve":[0.3833333,-204.81,0.4790689,-143.9026]},{"time":0.5333333,"value":-113.86,"curve":[0.562994,-97.43881,0.6333333,-56.75]},{"time":0.6666667,"value":-56.75}],"translate":[{"curve":[0.05833333,0,0.17274188,4.702995,0.05833333,0,0.175,-2.66]},{"time":0.23333333,"x":5.846542,"y":-2.66,"curve":[0.2575237,6.303093,0.3083333,6.84,0.2583333,-2.66,0.3083333,4.8]},{"time":0.3333333,"x":6.84,"y":4.8,"curve":[0.4166667,6.84,0.5833333,0,0.4166667,4.8,0.5833333,0]},{"time":0.6666667}]},"front-bracer":{"rotate":[{"curve":[0.05833333,0,0.2179034,76.69775]},{"time":0.23333333,"value":86.02,"curve":[0.267253,106.51314,0.3166667,114.95]},{"time":0.3333333,"value":114.95,"curve":[0.3833333,114.95,0.5151772,89.58005]},{"time":0.5333333,"value":81.86,"curve":[0.573774,64.6646,0.6333333,34.74]},{"time":0.6666667,"value":34.74}]},"front-hand2":{"rotate":[{"curve":[0.03333333,0,0.1,12.34]},{"time":0.13333334,"value":12.34,"curve":[0.15833333,12.34,0.20833333,-89.55]},{"time":0.23333333,"value":-89.55,"curve":[0.2694869,-89.03192,0.29868475,-89.02898]},{"time":0.3333333,"value":-79.79,"curve":[0.3967903,-62.86931,0.5833333,-10.18]},{"time":0.6666667,"value":-10.18}],"scale":[{"curve":[0.05833333,1,0.175,0.938,0.05833333,1,0.175,0.938]},{"time":0.23333333,"x":0.938,"y":0.938,"curve":[0.3416667,0.938,0.5583333,1,0.3416667,0.938,0.5583333,1]},{"time":0.6666667}]}},"ik":{"spineboy-front-arm-ik":[{"mix":0}]}},"gun-holster":{"slots":{"front-hand":{"attachment":[{"name":"gun"},{"time":0.3,"name":"front-open-hand"},{"time":0.6666667,"name":"front-hand"}]},"gun":{"attachment":[{},{"time":0.3,"name":"gun-nohand"}]}},"bones":{"front-arm":{"rotate":[{"value":-56.75,"curve":[0.04166667,-56.75,0.10367804,-197.52673]},{"time":0.16666667,"value":-197.8805,"curve":[0.22985075,-198.588,0.2666667,-143.09216]},{"time":0.3,"value":-143.09216,"curve":[0.3416667,-143.09216,0.425,-159.79407]},{"time":0.4666667,"value":-159.79407,"curve":[0.5166666,-159.79407,0.6166667,-25.24498]},{"time":0.6666667,"value":-25.24498}]},"front-bracer":{"rotate":[{"value":34.74,"curve":[0.04166667,34.74,0.1383027,83.36806]},{"time":0.16666667,"value":90.01028,"curve":[0.19547497,96.75655,0.3689841,112.83827]},{"time":0.4,"value":114.4371,"curve":[0.42188275,115.56515,0.45,116.10092]},{"time":0.4666667,"value":116.10092}]},"front-hand2":{"rotate":[{"value":-10.18,"curve":[0.04166667,-10.18,0.1316155,-79.17182]},{"time":0.16666667,"value":-84.76454,"curve":[0.2042644,-90.76359,0.2666667,-89.5203]},{"time":0.3,"value":-89.5203,"curve":[0.3416667,-89.5203,0.41145995,-56.53587]},{"time":0.4666667,"value":-35.36478,"curve":[0.5072452,-19.803425,0.6166667,0.1828537]},{"time":0.6666667,"value":0.1828537}],"translate":[{"curve":[0.01666667,0,0.05,-1.8167114,0.01666667,0,0.05,0.11190796]},{"time":0.06666667,"x":-1.8167114,"y":0.11190796}],"scale":[{"curve":[0.075,1,0.225,0.8883298,0.075,1,0.225,0.8883298]},{"time":0.3,"x":0.8883298,"y":0.8883298}]}},"ik":{"spineboy-front-arm-ik":[{"mix":0,"curve":"stepped"},{"time":0.4666667,"mix":0},{"time":0.6666667,"mix":0.996}]}},"jump":{"slots":{"mouth-smile":{"attachment":[{"time":0.13333334,"name":"mouth-grind"},{"time":0.9,"name":"mouth-smile"}]}},"bones":{"back-arm1":{"rotate":[{"curve":[0.03333333,0,0.1,41.829]},{"time":0.13333334,"value":41.829,"curve":[0.23333333,41.829,0.4333333,-19.760994]},{"time":0.5333333,"value":-19.760994,"curve":[0.6166667,-19.760994,0.8128164,7.85775]},{"time":0.8666667,"value":16.306156,"curve":[0.9224887,25.06391,0.9916667,39.62011]},{"time":1.0333333,"value":39.62011,"curve":[1.0666667,39.62011,1.1344527,36.98088]},{"time":1.1666666,"value":21.980946,"curve":[1.184377,13.734497,1.2416667,-14.43]},{"time":1.2666667,"value":-14.43,"curve":[1.3166667,-14.43,1.4166666,0]},{"time":1.4666667}]},"back-arm2":{"rotate":[{"curve":[0.03333333,0,0.12394547,-25.320557]},{"time":0.13333334,"value":-28.289993,"curve":[0.1783775,-42.53771,0.4083333,-75.93]},{"time":0.5,"value":-75.93,"curve":[0.5666666,-75.93,0.722417,-61.83999]},{"time":0.7666666,"value":-57.21051,"curve":[0.8338963,-50.17683,0.9916667,-38.17255]},{"time":1.0666667,"value":-38.17255,"curve":[1.1083333,-38.17255,1.176968,-49.67921]},{"time":1.2666667,"value":-49.35931,"curve":[1.3490245,-49.0656,1.475,0]},{"time":1.5333333}]},"back-foot-target":{"rotate":[{"time":0.3,"curve":[0.325,0,0.3859792,-31.842297]},{"time":0.4,"value":-41.64,"curve":[0.4195538,-55.30418,0.4581111,-86.03314]},{"time":0.4666667,"value":-86.03314,"curve":[0.475,-86.03314,0.5152747,-62.62698]},{"time":0.5333333,"value":-57.97,"curve":[0.6451504,-29.134336,1.025,-7.79]},{"time":1.0333333,"value":-7.79}],"translate":[{"x":99.37207,"curve":"stepped"},{"time":0.3,"x":99.37207,"curve":[0.35245055,97.70503,0.3490575,85.1468,0.4,0,0.3,0]},{"time":0.4,"x":83.3479,"curve":[0.41218135,83.24,0.4236354,87.01813,0.410921,0.19938447,0.4145411,-7.91345]},{"time":0.4333333,"x":92.06587,"y":-9.72683,"curve":[0.45063555,100.7847,0.4628767,124.20715,0.4488763,27.49708,0.4620255,103.34785]},{"time":0.4666667,"x":132.32715,"y":119.66616,"curve":[0.47647455,153.34036,0.5174084,239.6453,0.4757268,151.5211,0.5176002,382.6888]},{"time":0.5333333,"x":267.5061,"y":435.872,"curve":[0.5533992,302.6115,0.63208,352.2051,0.5573759,517.1436,0.6446792,683.9222]},{"time":0.6666667,"x":352.5156,"y":702.459,"curve":[0.7473774,353.2402,0.7973412,342.8478,0.745163,768.6361,0.7885567,768.6793]},{"time":0.8333333,"x":322.3952,"y":717.6737,"curve":[0.8662836,303.67105,0.932337,224.24954,0.8647492,681.8872,0.9359755,422.0504]},{"time":0.9666666,"x":220.4951,"y":293.734,"curve":[0.9886503,218.12817,1.0091237,314.5984,0.9868448,209.3714,1.023678,79.61865]},{"time":1.0333333,"x":318.9778}]},"back-foot2":{"rotate":[{"time":0.4333333,"curve":[0.4416667,0,0.4543986,-46.10022]},{"time":0.4666667,"value":-60.96311,"curve":[0.4745164,-70.4732,0.5166666,-76.4889]},{"time":0.5333333,"value":-76.4889,"curve":[0.5666666,-76.4889,0.6433796,-68.95593]},{"time":0.6666667,"value":-63.79,"curve":[0.7120937,-53.71259,0.8655898,-1.703009]},{"time":0.9333333,"value":16.34327,"curve":[0.9440443,19.1966,0.9833333,24.85]},{"time":1,"value":24.85,"curve":[1.0166667,24.85,1.0666667,11.068385]},{"time":1.0666667}]},"back-hand":{"rotate":[{"curve":[0.04555555,0,0.01704617,36.30731]},{"time":0.16666667,"value":36.25577,"curve":[0.2995558,36.22216,0.5354762,24.32593]},{"time":0.6666667,"value":24.21929,"curve":[0.7694893,24.26842,0.9069081,26.83148]},{"time":0.9666666,"value":31.869854,"curve":[1.023687,36.67736,1.1476643,55.22282]},{"time":1.2,"value":55.20023,"curve":[1.2955155,55.15903,1.4686667,0]},{"time":1.5333333}]},"back-leg-target":{"translate":[{"curve":[0.025,0,0.075,-35.36512,0.025,0,0.075,-16.419464]},{"time":0.1,"x":-35.36512,"y":-16.419464,"curve":[0.14125,-35.36512,0.2051875,-14.122425,0.14125,-16.419464,0.2141511,4.83593]},{"time":0.2666667,"x":-4.49427,"y":4.243248,"curve":[0.3173125,3.38331,0.36625,12.04432,0.3191162,3.651329,0.3752136,-33.42033]},{"time":0.4,"x":12.04432,"y":-42.7273,"curve":[0.4166667,12.04432,0.45,-46.16881,0.4125226,-47.42941,0.4538625,-76.2947]},{"time":0.4666667,"x":-46.16881,"y":-81.12202,"curve":[0.475,-46.16881,0.525,-38.35786,0.4988051,-93.2386,0.525,-96.10667]},{"time":0.5333333,"x":-38.35786,"y":-96.10667,"curve":[0.5666666,-38.35786,0.6333333,-55.57699,0.5666666,-96.10667,0.6425653,-67.82824]},{"time":0.6666667,"x":-55.57699,"y":-63.06306,"curve":[0.75,-55.57699,0.9072893,-56.88122,0.7361128,-49.33256,0.92131,-52.06205]},{"time":1,"x":-43.00437,"y":-42.05479,"curve":[1.0764648,-31.55921,1.10133,-19.948174,1.0840495,-31.365967,1.125148,-4.63678]},{"time":1.1333333,"x":-12.985786,"y":-3.971947,"curve":[1.1975242,0.9790268,1.2333333,0,1.1733154,-0.7245483,1.2333333,0]},{"time":1.2666667}]},"back-leg1":{"translate":[{},{"time":0.4666667,"x":-12.671936,"y":-22.45059},{"time":0.9}]},"bone":{"rotate":[{"curve":[0.025,0,0.075,-6.289631]},{"time":0.1,"value":-6.289631,"curve":[0.14166667,-6.289631,0.225,14.18848]},{"time":0.2666667,"value":14.18848,"curve":[0.2833333,14.18848,0.3247231,10.279467]},{"time":0.3333333,"value":9.737345,"curve":[0.3875348,6.324713,0.459748,4.230726]},{"time":0.5,"value":3.8217506,"curve":[0.5624884,3.186844,0.7000426,2.0530624]},{"time":0.7666666,"value":1.962452,"curve":[0.8250232,1.883091,0.9166667,4.616762]},{"time":0.9666666,"value":4.616762,"curve":[0.9833333,4.616762,1.022989,1.2032318]},{"time":1.0333333,"value":0.7067871,"curve":[1.0812907,-1.594757,1.1333333,-2.714676]},{"time":1.1666666,"value":-2.714676,"curve":[1.1916667,-2.714676,1.2458217,-1.9112282]},{"time":1.2666667,"value":-0.4920082,"curve":[1.2935314,1.3370552,1.2978646,3.185093]},{"time":1.3333334,"value":5.486637,"curve":[1.341754,6.033026,1.3833333,7.28915]},{"time":1.4,"value":7.28915,"curve":[1.425,7.28915,1.475,-2.7659225]},{"time":1.5,"value":-2.7659225}]},"bone2":{"rotate":[{"curve":[0.025,0,0.075,-6.289638]},{"time":0.1,"value":-6.289638,"curve":[0.14166667,-6.289638,0.225,14.188473]},{"time":0.2666667,"value":14.188473,"curve":[0.2833333,14.188473,0.323626,10.890934]},{"time":0.3333333,"value":10.086456,"curve":[0.3917131,5.248283,0.4710684,-0.3524017]},{"time":0.5,"value":-2.1329346,"curve":[0.5624884,-5.978657,0.7,-10.52438]},{"time":0.7666666,"value":-10.52438,"curve":[0.8166666,-10.52438,0.9289062,-8.77774]},{"time":0.9666666,"value":-6.831554,"curve":[0.9979573,-5.21883,1.026983,-2.3625145]},{"time":1.0333333,"value":-1.44746,"curve":[1.072934,4.259098,1.1333333,18.914204]},{"time":1.1666666,"value":18.914204,"curve":[1.1916667,18.914204,1.2595825,3.6300316]},{"time":1.2666667,"value":2.206341,"curve":[1.2833333,-1.1431618,1.3166667,-7.267822]},{"time":1.3333334,"value":-7.267822,"curve":[1.35,-7.267822,1.3833333,10.00975]},{"time":1.4,"value":10.00975,"curve":[1.425,10.00975,1.475,-2.765934]},{"time":1.5,"value":-2.765934}]},"bone3":{"rotate":[{"curve":[0.025,0,0.075,-6.289631]},{"time":0.1,"value":-6.289631,"curve":[0.14166667,-6.289631,0.225,14.18848]},{"time":0.2666667,"value":14.18848,"curve":[0.2833333,14.18848,0.3166667,5.372352]},{"time":0.3333333,"value":5.372352,"curve":[0.375,5.372352,0.4583333,17.56139]},{"time":0.5,"value":17.56139,"curve":[0.5666666,17.56139,0.7445883,7.046228]},{"time":0.7666666,"value":5.589907,"curve":[0.791597,3.945461,0.9443422,-7.504638]},{"time":0.9666666,"value":-8.54041,"curve":[0.9896008,-9.604465,1.0166667,-10.007282]},{"time":1.0333333,"value":-10.007282,"curve":[1.0666667,-10.007282,1.1521357,0.3392248]},{"time":1.1666666,"value":1.8385735,"curve":[1.17214,2.4033184,1.216597,5.05995]},{"time":1.2666667,"value":5.882174,"curve":[1.2802615,6.105422,1.3166667,6.21188]},{"time":1.3333334,"value":6.21188,"curve":[1.35,6.21188,1.3948607,1.507182]},{"time":1.4,"value":1.1401405,"curve":[1.427089,-0.7945032,1.475,-2.7659225]},{"time":1.5,"value":-2.7659225}]},"bone4":{"rotate":[{"curve":[0.025,0,0.075,-6.289638]},{"time":0.1,"value":-6.289638,"curve":[0.14166667,-6.289638,0.225,14.18848]},{"time":0.2666667,"value":14.18848,"curve":[0.2833333,14.18848,0.3237649,11.190044]},{"time":0.3333333,"value":10.51786,"curve":[0.3875348,6.710186,0.4705748,1.055607]},{"time":0.5,"value":-0.3975639,"curve":[0.5729341,-3.99942,0.7,-7.156898]},{"time":0.7666666,"value":-7.156898,"curve":[0.8166666,-7.156898,0.9166667,-7.610874]},{"time":0.9666666,"value":-7.610874,"curve":[0.9833333,-7.610874,1.0234058,-5.4183]},{"time":1.0333333,"value":-4.758869,"curve":[1.087558,-1.157013,1.1333333,13.056457]},{"time":1.1666666,"value":13.056457,"curve":[1.1916667,13.056457,1.2606175,3.4012375]},{"time":1.2666667,"value":2.206352,"curve":[1.2854226,-1.498417,1.3166667,-12.634403]},{"time":1.3333334,"value":-12.634403,"curve":[1.35,-12.634403,1.3833333,16.650467]},{"time":1.4,"value":16.650467,"curve":[1.425,16.650467,1.475,-2.7659225]},{"time":1.5,"value":-2.7659225}]},"bone5":{"rotate":[{"curve":[0.025,0,0.075,-6.289634]},{"time":0.1,"value":-6.289634,"curve":[0.14166667,-6.289634,0.225,14.18848]},{"time":0.2666667,"value":14.18848,"curve":[0.2833333,14.18848,0.3208515,9.811726]},{"time":0.3333333,"value":9.24015,"curve":[0.3984912,6.256424,0.4593686,4.299362]},{"time":0.5,"value":3.8217506,"curve":[0.5752088,2.937683,0.7,1.962452]},{"time":0.7666666,"value":1.962452,"curve":[0.8166666,1.962452,0.91026,-3.964092]},{"time":0.9666666,"value":-7.610874,"curve":[0.9770811,-8.284187,1.0166667,-10.007282]},{"time":1.0333333,"value":-10.007282,"curve":[1.0666667,-10.007282,1.1333333,6.479297]},{"time":1.1666666,"value":6.479297,"curve":[1.1916667,6.479297,1.253652,3.3109016]},{"time":1.2666667,"value":2.206352,"curve":[1.294011,-0.11432648,1.3166667,-11.56517]},{"time":1.3333334,"value":-11.56517,"curve":[1.3583333,-11.56517,1.4083333,5.159958]},{"time":1.4333333,"value":5.159958,"curve":[1.4583334,5.159958,1.5083333,-2.7659225]},{"time":1.5333333,"value":-2.7659225}]},"front-arm":{"translate":[{},{"time":0.4,"x":-5.672241,"y":-4.080057},{"time":0.5333333,"y":-4.23455},{"time":0.9,"x":-12.745728,"y":12.278811},{"time":1.2333333,"x":-4.44004,"y":-5.595478},{"time":1.5333333}],"scale":[{},{"time":0.4,"x":1.0571258},{"time":0.5333333,"x":1.1181092},{"time":0.6666667},{"time":1.3,"x":1.1053566},{"time":1.5333333}]},"front-arm1":{"rotate":[{"curve":[0.06666667,0,0.2,51.20999]},{"time":0.2666667,"value":51.20999,"curve":[0.325,51.20999,0.4416667,-38.70001]},{"time":0.5,"value":-38.70001,"curve":[0.5666666,-38.70001,0.7060193,24.96402]},{"time":0.7666666,"value":38.00668,"curve":[0.8542252,56.00764,0.9106227,62.1899]},{"time":1,"value":62.19,"curve":[1.083557,62.19002,1.1916667,-14.429996]},{"time":1.2333333,"value":-14.429996,"curve":[1.2916666,-14.429996,1.4083333,0]},{"time":1.4666667}]},"front-arm2":{"rotate":[{"curve":[0.03333333,0,0.1,18.420883]},{"time":0.13333334,"value":18.420883,"curve":[0.225,18.420883,0.4083333,-58.2645]},{"time":0.5,"value":-58.2645,"curve":[0.5666666,-58.2645,0.7021892,-38.97475]},{"time":0.7666666,"value":-16.614265,"curve":[0.8205378,2.0679855,0.9667136,12.726484]},{"time":1.0666667,"value":13.080076,"curve":[1.108317,13.227425,1.1916667,-56.15]},{"time":1.2333333,"value":-56.15,"curve":[1.2916666,-56.15,1.3556546,-0.7071762]},{"time":1.4666667}]},"front-foot-target":{"rotate":[{"time":0.3,"curve":[0.325,0,0.3931645,-4.590178]},{"time":0.4,"value":-6.98424,"curve":[0.42124185,-14.423975,0.45,-69.67]},{"time":0.4666667,"value":-69.67,"curve":[0.4833333,-69.67,0.509211,-21.19719]},{"time":0.5333333,"value":-12.81,"curve":[0.5620072,-2.8402815,0.6333333,5.74]},{"time":0.6666667,"value":5.74,"curve":[0.7416667,5.74,0.8916666,0]},{"time":0.9666666}],"translate":[{"x":-90.52827,"y":47.54584,"curve":[0.015489125,-146.87875,0.075,-246.15147,0.03616454,37.02503,0.075,33.44742]},{"time":0.1,"x":-246.15147,"y":33.44742,"curve":[0.15,-246.15147,0.375,-246.15147,0.15,33.44742,0.3490849,33.6321]},{"time":0.4,"x":-246.15147,"y":33.44742,"curve":[0.41259015,-243.99417,0.4471937,-223.1184,0.4128988,35.27067,0.4601272,361.90375]},{"time":0.4666667,"x":-179.60075,"y":397.5637,"curve":[0.4842317,-140.34676,0.5173209,16.954563,0.4774975,456.6243,0.49590915,549.3128]},{"time":0.5333333,"x":73.0332,"y":636.9726,"curve":[0.55744,157.4598,0.6060993,251.39223,0.560009,699.4558,0.6333458,735.9846]},{"time":0.6666667,"x":251.3922,"y":737.1598,"curve":[0.7959785,249.0362,0.9465167,141.00352,0.8096133,742.2015,0.9465167,234.2315]},{"time":0.9666666,"x":95.94,"y":36.5}]},"front-foot2":{"rotate":[{"time":0.4,"curve":[0.4027222,-10.047846,0.4161156,-43.77206]},{"time":0.4333333,"value":-53.55206,"curve":[0.4693293,-73.71084,0.5221111,-67.11486]},{"time":0.5333333,"value":-67.11486,"curve":[0.5915235,-68.52906,0.6125263,20.60742]},{"time":0.9333333,"value":24.85,"curve":[0.9583333,24.85,0.9888094,20.15226]},{"time":1}]},"front-foot3":{"rotate":[{"time":0.4,"curve":[0.4147741,0.1559279,0.4233781,-3.3939855]},{"time":0.4333333,"value":-8.313648,"curve":[0.43800765,-10.623618,0.4856242,-19.18488]},{"time":0.5333333,"value":-19.172787,"curve":[0.5810424,-19.16069,0.6371361,-15.861124]},{"time":0.6666667,"value":-13.74629,"curve":[0.7429142,-8.285828,0.8583333,10.78]},{"time":0.9333333,"value":10.78,"curve":[0.9583333,10.78,1.0220555,10.579647]},{"time":1.0333333,"value":0.3412788}]},"front-hand":{"rotate":[{"curve":[0.0761111,0,0.18457127,-8.9291]},{"time":0.3,"value":-8.936813,"curve":[0.3333706,-8.93905,0.3722201,38.13045]},{"time":0.4333333,"value":38.11117,"curve":[0.5163476,38.085,0.6528802,-22.01101]},{"time":0.6666667,"value":-27.75,"curve":[0.6932396,-38.81171,0.7498178,-52.48159]},{"time":0.8,"value":-52.37664,"curve":[0.8955155,-52.18455,1.0517163,10.934753]},{"time":1.0666667,"value":16.08321,"curve":[1.088356,23.552305,1.1519786,45.75642]},{"time":1.2,"value":46.02961,"curve":[1.251916,46.32494,1.269744,-12.737183]},{"time":1.3,"value":-12.675003,"curve":[1.3726296,-12.525734,1.4243333,0]},{"time":1.4666667}]},"front-hand2":{"rotate":[{},{"time":0.13333334,"value":-22.27054},{"time":0.2666667,"value":-16.905346},{"time":0.4333333,"value":-2.224981},{"time":0.6666667,"value":-6.946586}]},"front-leg-target":{"translate":[{"curve":[0.025,0,0.075,-33.08603,0.025,0,0.075,-31.343483]},{"time":0.1,"x":-33.08603,"y":-31.343483,"curve":[0.175,-33.08603,0.325,140.91324,0.175,-31.343483,0.325,51.54954]},{"time":0.4,"x":140.91324,"y":51.54954,"curve":[0.4337849,140.57893,0.4213938,10.149986,0.4349877,50.46297,0.4503434,16.001236]},{"time":0.4666667,"x":-11.122642,"y":4.780113,"curve":[0.5011374,-25.03229,0.585775,-45.1228,0.511164,-24.716896,0.5599576,-38.68668]},{"time":0.6666667,"x":-46.38054,"y":-40.57328,"curve":[0.74,-46.38054,0.9228388,-1.7451248,0.74,-40.57328,0.8961042,22.30417]},{"time":0.9666666,"x":-1.7244644,"y":20.95851,"curve":[0.992868,-1.7121124,0.9931955,-37.50713,0.9953803,20.410934,0.953971,-37.80713]},{"time":1.1,"x":-38.2682,"y":-35.92603,"curve":[1.1811795,-38.84668,1.2516667,44.94257,1.184194,-34.84146,1.2516667,5.483681]},{"time":1.3333334,"x":44.94257,"y":5.483681,"curve":[1.3833333,44.94257,1.4516666,0,1.3833333,5.483681,1.4516666,0]},{"time":1.5333333}]},"gun":{"rotate":[{},{"time":0.13333334,"value":15.28},{"time":0.4,"value":-53.41},{"time":0.7666666,"value":-63.35},{"time":1.0666667,"value":-29.92},{"time":1.3,"value":7.239998},{"time":1.4,"value":-3.7},{"time":1.4666667}]},"head":{"rotate":[{"curve":[0.03505763,-0.03365194,0.06923295,8.79646]},{"time":0.1,"value":9.412632,"curve":[0.1414455,10.240612,0.18923196,4.372643]},{"time":0.2,"value":3.229214,"curve":[0.22409774,0.6703372,0.369401,-14.74709]},{"time":0.4,"value":-19.236755,"curve":[0.4406888,-25.206884,0.4984135,-33.84248]},{"time":0.5333333,"value":-33.74492,"curve":[0.5805327,-33.61305,0.6141069,-28.696323]},{"time":0.6666667,"value":-28.63125,"curve":[0.7304774,-28.55225,0.8094596,-29.54262]},{"time":0.9,"value":-29.937616,"curve":[0.9481022,-30.147467,0.966936,-4.30948]},{"time":1,"value":-3.735237,"curve":[1.0320543,-3.1785336,1.0400202,-9.869615]},{"time":1.0666667,"value":-9.829565,"curve":[1.0942267,-9.788138,1.1568012,0.4223108]},{"time":1.2,"value":0.3623085,"curve":[1.237033,0.3108692,1.2491666,-5.1648]},{"time":1.2666667,"value":-5.1648,"curve":[1.2918334,-5.1648,1.3507247,3.755885]},{"time":1.4,"value":3.8968296,"curve":[1.4395118,4.00985,1.5085,0]},{"time":1.5333333}],"translate":[{"curve":[0.05,0,0.15018436,1.695427,0.05,0,0.15,-35.74241]},{"time":0.2,"x":2.517872,"y":-35.74241,"curve":[0.26383,3.571728,0.3416667,10.406754,0.2583333,-35.74241,0.3416667,-18.18716]},{"time":0.4,"x":10.406754,"y":-18.18716,"curve":[0.4583333,10.406754,0.6083333,26.321533,0.4583333,-18.18716,0.6083333,-20.793]},{"time":0.6666667,"x":26.321533,"y":-20.793,"curve":[0.75,26.321533,0.9166667,19.03595,0.75,-20.793,0.9166667,1.70395]},{"time":1,"x":19.03595,"y":1.70395}],"scale":[{"curve":[0.05,1,0.15,0.9846538,0.05,1,0.15,1.0486925]},{"time":0.2,"x":0.9846538,"y":1.0486925,"curve":[0.23333333,0.9846538,0.3,1,0.23333333,1.0486925,0.3,1]},{"time":0.3333333,"curve":[0.375,1,0.4583333,1.0658532,0.375,1,0.4583333,0.9446618]},{"time":0.5,"x":1.0658532,"y":0.9446618,"curve":[0.6029718,1.0658532,0.7001455,0.987006,0.6385755,0.9446618,0.8166666,1.0486925]},{"time":0.8666667,"x":0.9846538,"y":1.0486925,"curve":[0.878,0.9846538,0.9583455,1.0662344,0.9168404,1.0492805,0.9583556,0.9451558]},{"time":1,"x":1.0658532,"y":0.9446618,"curve":[1.044783,1.0654434,1.0613284,0.98583,1.0495664,0.9440737,1.0580918,1.0475163]},{"time":1.1,"x":0.9846538,"y":1.0486925,"curve":[1.189014,0.9828896,1.3628333,1,1.119425,1.0475165,1.3628333,1]},{"time":1.5333333}]},"head-control":{"translate":[{"curve":[0.1024278,0,0.22652973,-26.07893,0.05,0,0.2618621,97.74262]},{"time":0.4333333,"x":-26.09902,"y":97.29775,"curve":[0.6625342,-26.121284,0.8315986,-16.9805,0.6132514,96.83098,0.89164,22.953415]},{"time":0.9333333,"x":-14.02325,"y":11.078598,"curve":[0.985834,-12.497145,1.0348732,-10.471168,0.957361,4.235153,1.0583333,-31.97078]},{"time":1.1,"x":-8.272495,"y":-31.97078,"curve":[1.1634384,-6.130821,1.2653453,-3.6763954,1.1583333,-31.97078,1.275,24.45047]},{"time":1.3333334,"x":-2.266205,"y":24.45047,"curve":[1.4467424,0.08610153,1.4833333,0,1.3833333,24.45047,1.4833333,0]},{"time":1.5333333}]},"head2":{"rotate":[{"value":18.07678,"curve":[0.03333333,18.07678,0.10766412,24.734615]},{"time":0.13333334,"value":25.812656,"curve":[0.2061229,28.86963,0.2583333,29.658413]},{"time":0.3,"value":29.658413,"curve":[0.325,29.658413,0.3866193,27.38244]},{"time":0.4,"value":26.311893,"curve":[0.487511,19.310423,0.6058985,9.52941]},{"time":0.6333333,"value":7.395477,"curve":[0.6805848,3.720175,0.7607325,-1.9918404]},{"time":0.8333333,"value":-1.9808044,"curve":[0.8881725,-1.972468,0.9438551,1.2918777]},{"time":0.9666666,"value":3.210517,"curve":[1.005285,6.458637,1.0194412,15.10896]},{"time":1.0666667,"value":15.128687,"curve":[1.12486,15.152994,1.203522,13.956476]},{"time":1.2333333,"value":12.868113,"curve":[1.27148,11.475447,1.274936,9.977432]},{"time":1.3333334,"value":7.768884,"curve":[1.394467,5.456861,1.3931305,5.89737]},{"time":1.4333333,"value":5.855892,"curve":[1.4808393,5.806888,1.5166667,8.934134]},{"time":1.5333333,"value":8.934134}],"scale":[{"time":0.9,"curve":[0.9284444,1,0.962957,1.055678,0.9284444,1,0.962957,0.9775324]},{"time":1,"x":1.055678,"y":0.9775324,"curve":[1.0517157,1.055678,1.1096642,0.9514352,1.0517157,0.9775324,1.1096642,0.9971413]},{"time":1.1666666,"x":0.9419533,"y":1.0009675,"curve":[1.2673774,0.9255758,1.3669037,1,1.2673774,1.0075762,1.3669037,1]},{"time":1.4333333}]},"hip":{"rotate":[{"value":-4.48,"curve":[0.04939024,-9.71827,0.1,-13.95306]},{"time":0.13333334,"value":-13.95306,"curve":[0.2,-13.95306,0.3609725,5.795482]},{"time":0.4,"value":12.45618,"curve":[0.4384357,19.01588,0.5129018,31.527214]},{"time":0.6666667,"value":31.43167,"curve":[0.8206627,31.9094,0.9508505,2.177969]},{"time":0.9666666,"value":-4.26282,"curve":[0.9822982,-10.628548,1.013309,-18.685547]},{"time":1.0666667,"value":-18.59,"curve":[1.1083032,-18.51544,1.2916666,3.447695]},{"time":1.3333334,"value":3.447695,"curve":[1.3666667,3.447695,1.4453486,2.345166]},{"time":1.5333333,"value":-4.48}],"translate":[{"x":-47.55974,"y":48.49039,"curve":[0.04307268,-69.42832,0.1,-79.9077,0.03333333,48.49039,0.11114137,-39.50192]},{"time":0.13333334,"x":-79.9077,"y":-55.84988,"curve":[0.16613334,-79.9077,0.22519547,-76.37587,0.16183554,-76.84631,0.2170732,-91.16986]},{"time":0.2666667,"x":-52.46546,"y":-92.76247,"curve":[0.3118877,-26.393097,0.3802154,56.35566,0.3174495,-94.39322,0.359135,-58.95618]},{"time":0.4,"x":82.20362,"y":39.50983,"curve":[0.4262816,116.53996,0.5323888,203.27153,0.430452,112.88516,0.475249,649.6887]},{"time":0.6666667,"x":205.52113,"y":649.7935,"curve":[0.7752226,207.3398,0.8572947,58.94556,0.8788233,646.8324,0.9261009,440.0588]},{"time":0.9666666,"x":59.66729,"y":161.09656,"curve":[1.0261706,60.05994,1.0414842,72.89872,0.982374,53.86581,1.0042722,-91.4033]},{"time":1.0666667,"x":91.29805,"y":-91.59865,"curve":[1.0827485,103.0481,1.246271,238.61716,1.207365,-92.03922,1.23441,76.13248]},{"time":1.3333334,"x":238.12,"y":75.68278,"curve":[1.408282,237.692,1.5,213.2,1.41039,75.3325,1.4967587,49.77]},{"time":1.5333333,"x":213.2,"y":49.77}]},"horn-back":{"translate":[{"curve":[0.10833333,0,0.325,-3.26532,0.10833333,0,0.325,-12.119263]},{"time":0.4333333,"x":-3.26532,"y":-12.119263,"curve":[0.5583333,-3.26532,0.8083333,0,0.5583333,-12.119263,0.8083333,0]},{"time":0.9333333,"curve":[0.975,0,1.0583333,-2.83255,0.975,0,1.0583333,17.369934]},{"time":1.1,"x":-2.83255,"y":17.369934,"curve":[1.1583333,-2.83255,1.275,0.4928589,1.1583333,17.369934,1.275,6.929199]},{"time":1.3333334,"x":0.4928589,"y":6.929199,"curve":[1.3833333,0.4928589,1.4833333,0,1.3833333,6.929199,1.4833333,0]},{"time":1.5333333}]},"horn-front":{"translate":[{"curve":[0.10833333,0,0.325,-6.38739,0.10833333,0,0.325,23.94919]},{"time":0.4333333,"x":-6.38739,"y":23.94919,"curve":[0.5583333,-6.38739,0.8083333,3.02063,0.5583333,23.94919,0.8083333,-1.1099396]},{"time":0.9333333,"x":3.02063,"y":-1.1099396,"curve":[0.975,3.02063,1.0583333,4.308502,0.975,-1.1099396,1.0583333,-10.040283]},{"time":1.1,"x":4.308502,"y":-10.040283,"curve":[1.1583333,4.308502,1.275,3.715881,1.1583333,-10.040283,1.275,6.169494]},{"time":1.3333334,"x":3.715881,"y":6.169494,"curve":[1.3833333,3.715881,1.4833333,0,1.3833333,6.169494,1.4833333,0]},{"time":1.5333333}]},"jaw":{"rotate":[{"value":0.83},{"time":0.13333334,"value":6.621223},{"time":0.3333333,"value":-3.9759824},{"time":0.4666667,"value":-14.794998,"curve":[0.730679,-14.756192,0.7916667,3.2214966]},{"time":0.9,"value":3.2214966},{"time":0.9333333,"value":-3.14238},{"time":1.0666667,"value":12.0793},{"time":1.2333333,"value":-8.412506},{"time":1.5333333,"value":0.83}],"translate":[{"x":-10.21,"y":13.96,"curve":[0.04088889,-10.21,0.08613927,-23.5286,0.04088889,13.96,0.08613927,-6.685951]},{"time":0.13333334,"x":-23.5286,"y":-6.685951,"curve":[0.2329039,-23.5286,0.3466358,-43.28625,0.2329039,-6.685951,0.3466358,2.8982944]},{"time":0.4666667,"x":-42.09283,"y":4.748298,"curve":[0.60727,-40.69499,0.7565256,-33.91715,0.60727,6.915169,0.7565256,-13.5508]},{"time":0.9,"x":-28.39117,"y":-12.097076,"curve":[1.016279,-24.001684,1.129637,-30.307167,1.016279,-10.94233,1.129637,3.186041]},{"time":1.2333333,"x":-26.95498,"y":9.165527,"curve":[1.346955,-23.32345,1.449345,-10.21,1.346955,15.643305,1.449345,13.96]},{"time":1.5333333,"x":-10.21,"y":13.96}]},"leg-control":{"translate":[{"curve":[0.04983333,0,0.106145,0,0.04983333,0,0.106145,100.2165]},{"time":0.16666667,"y":100.2165,"curve":[0.1994284,0,0.23356053,0,0.1994284,100.2165,0.2419563,-19.30138]},{"time":0.2666667,"y":-25.60837,"curve":[0.3305002,0,0.3978914,0,0.3211843,-39.52325,0.3978914,-43.58241]},{"time":0.4666667,"y":-43.47263,"curve":[0.5215941,0,0.5777886,0,0.5215941,-43.38595,0.5975119,11.653577]},{"time":0.6333333,"y":23.702656,"curve":[0.7448424,0,0.8582521,0,0.7285396,55.72666,0.8582521,75.56955]},{"time":0.9666666,"y":71.9841,"curve":[0.9891702,0,1.0115097,0,0.9891702,71.25411,1.0115097,-46.63254]},{"time":1.0333333,"y":-48.46259,"curve":[1.091037,0,1.147299,0,1.091037,-53.22664,1.1263382,120.26613]},{"time":1.2,"y":118.83476,"curve":[1.2344044,0,1.2678287,0,1.2366675,118.12227,1.250649,-67.36244]},{"time":1.3,"y":-66.77322,"curve":[1.334946,0,1.368531,0,1.332617,-66.3838,1.367956,44.6007]},{"time":1.4,"y":40.56326,"curve":[1.448572,0,1.4930675,0,1.4206245,37.96463,1.4930675,0]},{"time":1.5333333}]},"neck":{"rotate":[{"curve":[0.05347558,0.000003814697,0.16924272,-1.431179]},{"time":0.2,"value":-2.0760975,"curve":[0.2717403,-3.5803585,0.3288883,-4.438534]},{"time":0.4,"value":-4.476152,"curve":[0.4733849,-4.514972,0.6158731,-2.461662]},{"time":0.6666667,"value":-1.0089474,"curve":[0.7281152,0.7485084,0.8805876,5.846359]},{"time":0.9666666,"value":5.852615,"curve":[1.039906,5.857933,1.169538,-1.6884766]},{"time":1.2666667,"value":-1.79,"curve":[1.3170222,-1.842636,1.4833333,0]},{"time":1.5333333}],"translate":[{"curve":[0.04240724,-1.8787003,0.13721284,-2.903992,0.0576817,3.231252,0.13288175,7.828142]},{"time":0.2,"x":-2.9347076,"y":7.9079,"curve":[0.262173,-2.965134,0.3374094,1.3502502,0.2616121,7.981115,0.3333333,-17.63]},{"time":0.4,"x":5.598118,"y":-17.63,"curve":[0.5009625,12.450165,0.6120144,22.87802,0.4666667,-17.63,0.6189623,-5.420392]},{"time":0.6666667,"x":25.241896,"y":-2.9,"curve":[0.7521593,28.93968,0.8505017,31.66464,0.7753615,2.8427334,0.8833333,5.364354]},{"time":0.9666666,"x":31.776207,"y":5.364354,"curve":[1.0828317,31.887756,1.2090677,25.92845,1.0675023,5.519572,1.169268,-13.51629]},{"time":1.2666667,"x":22.30998,"y":-13.237763,"curve":[1.338471,17.799133,1.432032,11.29499,1.3446953,-13.014626,1.4666667,0]},{"time":1.5333333}]},"neck2":{"rotate":[{"value":-0.7680626,"curve":[0.03333333,-0.7680626,0.1,15.96094]},{"time":0.13333334,"value":15.96094,"curve":[0.175,15.96094,0.2691706,11.97457]},{"time":0.3,"value":10.068562,"curve":[0.3404953,7.56496,0.3750928,4.106842]},{"time":0.4,"value":4.053291,"curve":[0.4680592,3.906975,0.5750458,8.426243]},{"time":0.6333333,"value":8.484882,"curve":[0.7302829,8.58242,0.8833333,-2.7666016]},{"time":0.9666666,"value":-2.7666016,"curve":[0.9916667,-2.7666016,1.046591,3.786907]},{"time":1.0666667,"value":5.450165,"curve":[1.0941862,7.730114,1.1916667,10.757904]},{"time":1.2333333,"value":10.757904,"curve":[1.2583333,10.757904,1.3163793,7.653534]},{"time":1.3666667,"value":7.604763,"curve":[1.416954,7.555996,1.5,12.245]},{"time":1.5333333,"value":12.245}]},"saddle":{"translate":[{"x":19.275055,"y":-10.708496}]},"saddle-strap-back":{"rotate":[{"value":-13.919876,"curve":[0.1191414,-14.07051,0.1852909,-17.287704]},{"time":0.2666667,"value":-17.26166,"curve":[0.325893,-17.24269,0.4666667,1.360092]},{"time":0.5333333,"value":1.360092,"curve":[0.5833333,1.360092,0.6856592,0.5847015]},{"time":0.7333333,"value":-2.103531,"curve":[0.77299,-4.339676,0.8833333,-27.93289]},{"time":0.9333333,"value":-27.93289,"curve":[0.9995833,-27.93289,1.12849,-14.596176]},{"time":1.2,"value":-13.793747,"curve":[1.305498,-12.609924,1.351664,-12.265778]},{"time":1.4333333,"value":-12.067566,"curve":[1.4796318,-11.9552,1.5083333,-14.426956]},{"time":1.5333333,"value":-14.426956}]},"saddle-strap-front":{"rotate":[{"curve":[0.06772222,0,0.1474087,0.591459]},{"time":0.23333333,"value":0.259079,"curve":[0.2864935,0.05770691,0.3636926,-2.8892975]},{"time":0.4,"value":-4.329941,"curve":[0.431961,-5.59811,0.4889065,-7.005408]},{"time":0.5333333,"value":-7.189316,"curve":[0.6217504,-7.544222,0.7482375,-0.5071716]},{"time":0.8,"value":1.715271,"curve":[0.8767981,5.012638,0.9311765,5.58139]},{"time":1,"value":5.618118,"curve":[1.039618,5.639262,1.113804,-0.9842424]},{"time":1.1666666,"value":-2.422226,"curve":[1.307446,-6.119897,1.4334126,-6.467254]},{"time":1.5333333,"value":-6.467254}]},"spineboy-front-arm-target":{"translate":[{"x":-0.4281616,"y":-9.009827},{"time":0.5},{"time":0.9666666,"x":-6.557892,"y":0.7037048},{"time":1.0666667,"x":12.253387,"y":-29.510223}]},"spineboy-front-foot-target":{"translate":[{"time":0.2666667},{"time":0.4333333,"x":19.718567,"y":-2.177307},{"time":0.5333333,"x":19.3869,"y":-3.070618},{"time":0.6666667,"x":-3.866028,"y":6.006531},{"time":1.0666667,"x":-10.922913,"y":4.868591},{"time":1.4666667}]},"spineboy-hip":{"translate":[{"curve":[0.03333333,0,0.07061785,12.380562,0.03333333,0,0.09875296,6.023815]},{"time":0.13333334,"x":18.46862,"y":5.610294,"curve":[0.18255045,23.24633,0.2850133,23.08951,0.1990939,4.823915,0.3081037,-11.168966]},{"time":0.3333333,"x":24.30155,"y":-23.550415,"curve":[0.4389544,26.95092,0.5532857,40.03147,0.3944341,-53.53569,0.572542,-55.53518]},{"time":0.6666667,"x":51.29906,"y":-55.19694,"curve":[0.740508,58.63727,0.9050695,68.29027,0.8531014,-54.52699,0.9393168,-42.26451]},{"time":1,"x":67.67545,"y":-37.86953,"curve":[1.0709656,67.2159,1.2159532,14.11535,1.054531,-33.92013,1.171435,-3.335044]},{"time":1.2666667,"x":10.38967,"y":-1.8260137,"curve":[1.3761553,2.346062,1.4666667,0,1.3383594,-0.6899779,1.4666667,0]},{"time":1.5333333}]},"spineboy-torso":{"rotate":[{"value":-4.784553,"curve":[0.03333333,-4.784553,0.08756773,-8.825928]},{"time":0.13333334,"value":-13.356808,"curve":[0.1792063,-17.898323,0.24173756,-26.07226]},{"time":0.2666667,"value":-31.39194,"curve":[0.3096485,-40.56392,0.3823504,-52.7289]},{"time":0.4666667,"value":-52.78943,"curve":[0.5741774,-52.86661,0.6149116,-44.37711]},{"time":0.6666667,"value":-36.05438,"curve":[0.7096492,-29.14234,0.9166667,9.178033]},{"time":1,"value":9.178033,"curve":[1.0583333,9.178033,1.1625733,-29.028183]},{"time":1.2333333,"value":-29.370766,"curve":[1.275,-29.370766,1.3774828,-9.74331]},{"time":1.4,"value":-7.980461,"curve":[1.4431034,-4.605987,1.5166667,-1.6949463]},{"time":1.5333333,"value":-1.6949463}]},"stirrup":{"rotate":[{},{"time":0.3,"value":-13.385666,"curve":"stepped"},{"time":0.9666666,"value":-13.385666},{"time":1.3333334}]},"tail1":{"rotate":[{"curve":[0.03287034,-0.7266083,0.1817244,-1.373693]},{"time":0.23333333,"value":-0.6767425,"curve":[0.3240415,0.5482025,0.3779942,4.696258]},{"time":0.4,"value":6.151978,"curve":[0.448504,9.360596,0.5232101,12.033417]},{"time":0.5666666,"value":12.048172,"curve":[0.7042468,12.09488,0.7643096,-9.785278]},{"time":0.9333333,"value":-9.74,"curve":[0.9839873,-9.726435,1.05373,-9.247772]},{"time":1.1,"value":-7.089081,"curve":[1.1733563,-3.66669,1.2793553,7.710052]},{"time":1.3333334,"value":7.674698,"curve":[1.4073514,7.626251,1.4913268,0]},{"time":1.5333333}]},"tail2":{"rotate":[{"curve":[0.031111114,0,0.08510702,-0.300545]},{"time":0.13333334,"value":-0.8772564,"curve":[0.2202842,-1.8775845,0.2550831,-7.43006]},{"time":0.3,"value":-7.43006,"curve":[0.325,-7.43006,0.366361,-7.051846]},{"time":0.4,"value":-5.892628,"curve":[0.433639,-4.73341,0.5055433,1.383686]},{"time":0.5333333,"value":1.7542953,"curve":[0.582281,2.407062,0.637103,3.110265]},{"time":0.7333333,"value":3.13869,"curve":[0.8143955,3.162634,0.9025146,0.4220686]},{"time":0.9333333,"value":-0.8334427,"curve":[0.9588247,-1.8719282,1.1056635,-7.132017]},{"time":1.1666666,"value":-7.069343,"curve":[1.205912,-7.029023,1.308478,4.718074]},{"time":1.4,"value":4.88549,"curve":[1.4523827,4.978307,1.500639,-6.456978]},{"time":1.5333333,"value":-6.456978}]},"tail3":{"rotate":[{"curve":[0.14323805,-0.06000659,0.2121792,-21.949875]},{"time":0.23333333,"value":-24.081154,"curve":[0.2577262,-26.538734,0.2833333,-26.630775]},{"time":0.3,"value":-26.630775,"curve":[0.325,-26.630775,0.3650703,-22.41479]},{"time":0.4,"value":-17.41577,"curve":[0.4632423,-8.364758,0.658268,0.6783142]},{"time":0.7666666,"value":0.9936981,"curve":[0.8390093,1.204176,0.910802,-6.876014]},{"time":0.9333333,"value":-7.945017,"curve":[0.999372,-11.07824,1.1005234,-12.029096]},{"time":1.1666666,"value":-11.939575,"curve":[1.23281,-11.850054,1.316891,-8.443453]},{"time":1.3333334,"value":-7.623953,"curve":[1.3997906,-4.311687,1.4833333,0]},{"time":1.5333333}]},"tail4":{"rotate":[{"value":6.72319,"curve":[0.018444445,6.72319,0.07240372,8.447402]},{"time":0.13333334,"value":8.079658,"curve":[0.2568993,7.33387,0.1611246,-3.2749064]},{"time":0.3,"value":-3.309633,"curve":[0.45527315,-3.348448,0.598814,7.468219]},{"time":0.7666666,"value":11.948583,"curve":[0.8036452,12.935624,0.8614923,14.26252]},{"time":0.9333333,"value":14.351345,"curve":[0.9628011,14.38778,0.9956852,14.413406]},{"time":1.0333333,"value":6.038603,"curve":[1.072194,-2.562548,1.116085,-11.417873]},{"time":1.1666666,"value":-11.396616,"curve":[1.2375096,-11.396616,1.3180643,-6.9504]},{"time":1.3333334,"value":-5.65272,"curve":[1.363634,-3.077556,1.5083333,3.647316]},{"time":1.5333333,"value":3.647316}]},"tail5":{"rotate":[{"value":6.72319,"curve":[0.01822222,6.72319,0.07690286,8.482862]},{"time":0.13333334,"value":5.569778,"curve":[0.21400374,1.4053636,0.24897794,-14.57616]},{"time":0.3,"value":-14.57616,"curve":[0.3412472,-14.520948,0.3601029,-12.872583]},{"time":0.4,"value":-10.37234,"curve":[0.4662488,-6.220704,0.4812019,6.108667]},{"time":0.7666666,"value":11.470898,"curve":[0.8313857,12.686594,0.8569777,12.877556]},{"time":0.9333333,"value":12.892343,"curve":[1.072503,12.919296,1.137411,-5.020143]},{"time":1.1666666,"value":-10.521278,"curve":[1.189477,-14.810457,1.2416667,-16.262796]},{"time":1.2666667,"value":-16.262796,"curve":[1.2916666,-16.262796,1.3441527,-10.567275]},{"time":1.3666667,"value":-7.389768,"curve":[1.387056,-4.512153,1.4679966,-0.3047509]},{"time":1.5333333}]},"tail6":{"rotate":[{"value":6.72319,"curve":[0.01733333,6.72319,0.07886396,14.924088]},{"time":0.13333334,"value":14.561707,"curve":[0.18564835,14.227201,0.22821733,8.636116]},{"time":0.23333333,"value":6.585541,"curve":[0.24529457,1.791268,0.3032479,-11.908432]},{"time":0.4,"value":-11.908432,"curve":[0.4739294,-11.908432,0.7020228,8.291633]},{"time":0.7666666,"value":12.945202,"curve":[0.8030987,15.567865,0.8446396,18.423435]},{"time":0.9333333,"value":18.635305,"curve":[1.0426456,18.896433,1.0798775,-11.400968]},{"time":1.1666666,"value":-11.613902,"curve":[1.236395,-11.437342,1.290008,-10.991858]},{"time":1.3333334,"value":-8.875732,"curve":[1.422881,-4.579358,1.4716552,2.969151]},{"time":1.5333333,"value":3.68774}]},"tail7":{"rotate":[{"value":6.72319,"curve":[0.04856597,6.723188,0.19310887,20.18909]},{"time":0.23333333,"value":20.18909,"curve":[0.24999997,20.18909,0.3250953,-13.058746]},{"time":0.4,"value":-13.058746,"curve":[0.4333333,-13.058746,0.4840606,-9.84144]},{"time":0.5333333,"value":-5.931482,"curve":[0.5861562,-1.739808,0.8224727,16.83142]},{"time":0.9333333,"value":16.851704,"curve":[0.9921694,16.86247,1.0350803,12.253622]},{"time":1.0666667,"value":7.162903,"curve":[1.129186,-2.7190814,1.165667,-16.97346]},{"time":1.2,"value":-16.509,"curve":[1.27324,-16.509,1.319482,-13.061638]},{"time":1.3666667,"value":-8.954494,"curve":[1.421236,-4.204542,1.5083333,0]},{"time":1.5333333}]},"tail8":{"rotate":[{"value":6.72319,"curve":[0.01822222,6.72319,0.178683,17.1448]},{"time":0.23333333,"value":17.1343,"curve":[0.2569108,17.197693,0.2880572,11.353744]},{"time":0.3,"value":9.005302,"curve":[0.3179721,5.471263,0.375,-14.470314]},{"time":0.4,"value":-14.470314,"curve":[0.4333333,-14.470314,0.4924329,-12.367708]},{"time":0.5333333,"value":-9.759455,"curve":[0.5752436,-6.726073,0.7321852,7.055005]},{"time":0.7666666,"value":9.18102,"curve":[0.808957,11.7885,0.8502483,14.28186]},{"time":0.9333333,"value":14.39803,"curve":[0.9800523,14.46335,1.026814,12.950827]},{"time":1.0666667,"value":6.470802,"curve":[1.1115044,-0.739366,1.1478443,-13.08259]},{"time":1.1666666,"value":-14.914372,"curve":[1.214801,-19.59876,1.2591246,-23.09006]},{"time":1.3,"value":-23.166473,"curve":[1.376154,-23.242884,1.5083333,-11.891228]},{"time":1.5333333,"value":-11.891228}]},"tail9":{"rotate":[{"value":6.72319,"curve":[0.03967961,6.72319,0.18518864,21.11507]},{"time":0.23333333,"value":21.24765,"curve":[0.2698413,21.34819,0.2835522,17.73857]},{"time":0.3,"value":14.562775,"curve":[0.3222607,10.26461,0.375,-13.058746]},{"time":0.4,"value":-13.058746,"curve":[0.4333333,-13.058746,0.5104303,-11.636218]},{"time":0.5333333,"value":-7.881337,"curve":[0.5791204,-0.3746886,0.7413781,21.142994]},{"time":0.7666666,"value":23.25365,"curve":[0.8190615,27.626684,0.8650785,31.030573]},{"time":0.9333333,"value":31.089256,"curve":[0.9747346,31.12485,1.0339192,24.26999]},{"time":1.0666667,"value":16.48204,"curve":[1.1207376,3.62299,1.1464382,-4.675533]},{"time":1.1666666,"value":-10.428966,"curve":[1.184621,-15.535625,1.2416667,-22.43407]},{"time":1.2666667,"value":-22.43407,"curve":[1.2916666,-22.43407,1.337793,-20.951736]},{"time":1.3666667,"value":-17.59012,"curve":[1.41179,-12.336625,1.5083333,0]},{"time":1.5333333}]},"tail10":{"rotate":[{"value":6.72319,"curve":[0.03793281,6.72319,0.19905053,10.822815]},{"time":0.23333333,"value":10.92908,"curve":[0.2565702,11.00111,0.2755669,11.071588]},{"time":0.3,"value":8.709663,"curve":[0.3350128,5.325014,0.3701347,-8.928152]},{"time":0.4,"value":-12.603508,"curve":[0.42502645,-15.683377,0.5,-18.92422]},{"time":0.5333333,"value":-18.92422,"curve":[0.5490755,-18.92422,0.6511296,2.649351]},{"time":0.7,"value":9.58937,"curve":[0.7246166,13.085142,0.7909734,16.415785]},{"time":0.8333333,"value":16.817863,"curve":[0.9561147,17.9833,1.0505657,10.262604]},{"time":1.0666667,"value":7.382777,"curve":[1.0984063,1.7057834,1.1302344,-23.722534]},{"time":1.1666666,"value":-26.2446,"curve":[1.198726,-28.46394,1.2416667,-29.22434]},{"time":1.2666667,"value":-29.22434,"curve":[1.2916666,-29.22434,1.3531867,-18.665724]},{"time":1.3666667,"value":-17.837833,"curve":[1.4083333,-15.27882,1.4916667,-11.1899]},{"time":1.5333333,"value":-11.1899}]},"tongue1":{"rotate":[{"curve":[0.1,0,0.3,9.373764]},{"time":0.4,"value":9.373764,"curve":[0.5,9.373764,0.7,17.47627]},{"time":0.8,"value":17.47627,"curve":[0.8666667,17.47627,1,22.438965]},{"time":1.0666667,"value":22.438965,"curve":[1.1166667,22.438965,1.2166667,-7.297119]},{"time":1.2666667,"value":-7.297119,"curve":[1.3333334,-7.297119,1.4666667,0]},{"time":1.5333333}]},"tongue2":{"rotate":[{"curve":[0.08333333,0,0.25,-16.66993]},{"time":0.3333333,"value":-16.66993,"curve":[0.3833333,-16.66993,0.4833333,-20.403053]},{"time":0.5333333,"value":-20.403053,"curve":[0.5916666,-20.403053,0.7083333,-5.901935]},{"time":0.7666666,"value":-5.901935}]},"tongue3":{"rotate":[{"curve":[0.08333333,0,0.25,-16.66993]},{"time":0.3333333,"value":-16.66993,"curve":[0.3833333,-16.66993,0.4833333,-32.414]},{"time":0.5333333,"value":-32.414,"curve":[0.5916666,-32.414,0.7083333,-4.63914]},{"time":0.7666666,"value":-4.63914,"curve":[0.8166666,-4.63914,0.9166667,9.342292]},{"time":0.9666666,"value":9.342292}]},"torso1":{"rotate":[{"curve":[0.11794363,0.132524,0.1351916,1.5466008]},{"time":0.2,"value":3.040212,"curve":[0.2434089,4.040639,0.325,5.401735]},{"time":0.3666667,"value":5.401735,"curve":[0.4666667,5.401735,0.5666666,-16.54183]},{"time":0.6666667,"value":-16.54183,"curve":[0.803765,-16.54183,0.8782087,9.246263]},{"time":0.9666666,"value":9.366684,"curve":[1.0533587,9.484702,1.130607,-2.0569606]},{"time":1.2,"value":-1.9473534,"curve":[1.291797,-1.8023586,1.303572,2.6802995]},{"time":1.3666667,"value":2.857041,"curve":[1.428809,3.031115,1.4716555,-0.1281481]},{"time":1.5333333}]},"torso2":{"rotate":[{"curve":[0.07589074,2.175148,0.15,3.872154]},{"time":0.2,"value":3.872154,"curve":[0.25,3.872154,0.3166667,-14.545755]},{"time":0.3666667,"value":-14.545755,"curve":[0.4333333,-14.545755,0.5487152,-7.291572]},{"time":0.6666667,"value":-0.636406,"curve":[0.725009,2.655434,0.8833333,10.900736]},{"time":0.9666666,"value":10.900736,"curve":[1.0946612,10.900736,1.1852387,-6.178741]},{"time":1.2666667,"value":-6.044891,"curve":[1.3795234,-5.859375,1.471437,-2.778843]},{"time":1.5333333}],"translate":[{"curve":[0.05,0,0.10503124,6.291206,0.05,0,0.15,-22.91757]},{"time":0.2,"x":9.669746,"y":-22.91757,"curve":[0.4167845,17.381935,0.775,24.07786,0.3916667,-22.91757,0.8063668,3.870802]},{"time":0.9666666,"x":24.07786,"y":4.459661,"curve":[1.0115278,24.07786,1.070595,23.75853,1.021868,4.662442,1.07746,-8.32658]},{"time":1.1333333,"x":20.45875,"y":-8.457632,"curve":[1.2207487,16.020254,1.3169906,10.45897,1.2100266,-8.637518,1.3519216,2.3454304]},{"time":1.4,"x":5.925117,"y":2.2693486,"curve":[1.4510212,3.1854095,1.49687,0,1.4677857,2.162084,1.4943796,0]},{"time":1.5333333}]}},"ik":{"front-leg-ik":[{"softness":37.3,"bendPositive":false},{"time":0.4333333,"softness":46.5,"bendPositive":false},{"time":0.8,"softness":15.1,"bendPositive":false}],"spineboy-back-arm-ik":[{}],"spineboy-front-arm-ik":[{"softness":15,"stretch":true}]},"drawOrder":[{"offsets":[{"slot":"raptor-horn","offset":4},{"slot":"front-thigh","offset":-5}]}]},"roar":{"slots":{"mouth-smile":{"attachment":[{"time":0.6333333,"name":"mouth-grind"},{"time":1.5666667,"name":"mouth-smile"}]}},"bones":{"back-arm":{"rotate":[{"value":44.83182}],"scale":[{"time":0.4666667},{"time":0.5666666,"x":1.088316},{"time":0.6666667,"x":1.311493},{"time":0.7666666,"x":1.2110946},{"time":1.2,"x":1.0078447},{"time":1.5666667,"x":1.137079},{"time":1.8333334}]},"back-arm1":{"rotate":[{"curve":[0.04166667,0,0.05576033,24.804146]},{"time":0.16666667,"value":25.18115,"curve":[0.3005948,25.636406,0.566413,11.557884]},{"time":0.6333333,"value":-5.848083,"curve":[0.6723763,-16.00313,0.7065114,-25.627747]},{"time":0.8,"value":-25.786453,"curve":[0.975,-25.786453,1.2953287,-26.779694]},{"time":1.5,"value":-12.935228,"curve":[1.5643666,-8.581314,1.825,13.784088]},{"time":1.9333333,"value":13.784088,"curve":[1.9833333,13.784088,2.083333,0]},{"time":2.1333334}]},"back-arm2":{"rotate":[{"curve":[0.05,0,0.08069675,-14.56717]},{"time":0.2,"value":-14.55378,"curve":[0.2868346,-14.544052,0.3884627,-2.0116196]},{"time":0.4666667,"value":-2.435631,"curve":[0.5299447,-2.7787094,0.5933625,-10.556877]},{"time":0.6,"value":-25.6643,"curve":[0.6208762,-73.18044,0.618549,-95.18236]},{"time":0.7666666,"value":-97.24427,"curve":[0.8469903,-98.36243,1.2787247,-103.18691]},{"time":1.5,"value":-77.44379,"curve":[1.5674026,-69.6022,1.7699687,-24.4667]},{"time":1.9333333,"value":-8.987038,"curve":[1.9591317,-6.542511,2.083333,0]},{"time":2.1333334}]},"back-bracer":{"rotate":[{"value":-108.61844}]},"back-foot1":{"rotate":[{"value":1.527237}]},"back-hand":{"rotate":[{"curve":[0.05,0,0.13647725,7.702537]},{"time":0.2,"value":19.14122,"curve":[0.2428106,26.850216,0.23712154,49.9317]},{"time":0.3,"value":49.97766,"curve":[0.4159832,50.06244,0.4149882,33.41905]},{"time":0.4666667,"value":33.94073,"curve":[0.5861683,35.14707,0.5569841,78.18217]},{"time":0.6,"value":78.76733,"curve":[0.6243418,79.09846,0.6387465,48.69674]},{"time":0.6666667,"value":37.71115,"curve":[0.7107546,20.36415,0.8043132,-1.7499275]},{"time":0.9666666,"value":-3.0006065,"curve":[1.1678864,-4.550705,1.3323512,-1.596115]},{"time":1.3666667,"value":1.793522,"curve":[1.4084166,5.917549,1.501802,36.78751]},{"time":1.5666667,"value":36.40139,"curve":[1.684931,35.6974,1.8997258,31.043934]},{"time":1.9333333,"value":27.24913,"curve":[1.998957,19.83928,2.083333,0]},{"time":2.1333334}]},"back-hand2":{"rotate":[{"value":-21.46227},{"time":0.2,"value":-21.92526},{"time":0.3,"value":-8.391707},{"time":0.4333333,"value":-5.38434},{"time":0.5333333,"value":-30.37677},{"time":0.6333333,"value":-55.56099},{"time":0.7,"value":-18.741364},{"time":0.7666666,"value":-20.26363},{"time":0.8333333,"value":-21.46227}]},"back-knee":{"rotate":[{"value":-8.233356}]},"back-leg-target":{"translate":[{},{"time":0.2,"x":5.576042,"y":4.017303},{"time":0.4666667,"x":-39.15084,"y":-10.184196,"curve":[0.5116938,-15.447058,0.5634237,1.2221756,0.5116938,9.9445,0.5634237,28.78541]},{"time":0.6333333,"x":17.09,"y":42.26},{"time":0.7333333,"x":30.54152,"y":59.3549},{"time":1.4666667,"x":31.18207,"y":60.16894,"curve":[1.5667496,24.16492,1.6070994,12.613607,1.563588,55.66654,1.613422,36.27173]},{"time":1.6666666,"x":-19.041023,"y":-0.5181885},{"time":2.1333334}]},"back-leg1":{"rotate":[{"value":-8.958302}]},"back-leg2":{"rotate":[{"value":-19.64937}]},"back-leg3":{"rotate":[{"value":19.47037}]},"back-thigh":{"rotate":[{"value":6.62973}]},"bone":{"rotate":[{"curve":[0.04166667,0,0.125,6.627846]},{"time":0.16666667,"value":6.627846,"curve":[0.19166666,6.627846,0.24166666,2.5385475]},{"time":0.2666667,"value":2.5385475,"curve":[0.3083333,2.5385475,0.4059933,11.70685]},{"time":0.4333333,"value":12.446875,"curve":[0.4905371,13.995237,0.5998325,14.86839]},{"time":0.7,"value":14.689136,"curve":[0.7252427,14.643963,0.775,-1.4022026]},{"time":0.8,"value":-1.4022026,"curve":[0.825,-1.4022026,0.8871867,5.017277]},{"time":0.9,"value":5.610195,"curve":[0.936381,7.293676,1,9.106674]},{"time":1.0333333,"value":9.106674,"curve":[1.0583333,9.106674,1.1083333,6.87953]},{"time":1.1333333,"value":6.87953,"curve":[1.1583333,6.87953,1.2083334,10.505276]},{"time":1.2333333,"value":10.505276,"curve":[1.2583333,10.505276,1.3083333,6.404121]},{"time":1.3333334,"value":6.404121,"curve":[1.3583333,6.404121,1.4083333,14.341953]},{"time":1.4333333,"value":14.341953,"curve":[1.45,14.341953,1.495604,0.9356422]},{"time":1.5,"value":0.4916267,"curve":[1.525,-2.033596,1.575,-5.847084]},{"time":1.6,"value":-5.847084,"curve":[1.625,-5.847084,1.675,4.872383]},{"time":1.7,"value":4.872383,"curve":[1.7166667,4.872383,1.75,-1.8023148]},{"time":1.7666667,"value":-1.8023148,"curve":[1.8166667,-1.8023148,1.9166666,13.564724]},{"time":1.9666667,"value":13.564724,"curve":[2.0083334,13.564724,2.091667,0]},{"time":2.1333334}]},"bone2":{"rotate":[{"curve":[0.04166667,0,0.1459393,-2.6859436]},{"time":0.16666667,"value":-4.334778,"curve":[0.2190952,-8.505405,0.2616683,-16.85917]},{"time":0.2666667,"value":-17.97653,"curve":[0.3083333,-27.29093,0.3916667,-48.50708]},{"time":0.4333333,"value":-48.50708,"curve":[0.5,-48.50708,0.6333333,6.486885]},{"time":0.7,"value":6.486885,"curve":[0.725,6.486885,0.7651629,3.579563]},{"time":0.8,"value":-1.4022255,"curve":[0.847517,-8.197285,0.875,-10.862804]},{"time":0.9,"value":-10.862804,"curve":[0.9333333,-10.862804,1,-4.945606]},{"time":1.0333333,"value":-4.945606,"curve":[1.0583333,-4.945606,1.1083333,-14.477093]},{"time":1.1333333,"value":-14.477093,"curve":[1.1583333,-14.477093,1.2083334,-10.43161]},{"time":1.2333333,"value":-10.43161,"curve":[1.2583333,-10.43161,1.3083333,-28.375816]},{"time":1.3333334,"value":-28.375816,"curve":[1.3583333,-28.375816,1.4298617,-14.40412]},{"time":1.4333333,"value":-13.27476,"curve":[1.45,-7.852947,1.4833333,0.49160385]},{"time":1.5,"value":0.49160385,"curve":[1.525,0.49160385,1.5940723,-14.844006]},{"time":1.6,"value":-15.951912,"curve":[1.6371905,-22.90296,1.675,-38.33978]},{"time":1.7,"value":-38.33978,"curve":[1.7166667,-38.33978,1.748715,-24.53755]},{"time":1.7666667,"value":-21.285084,"curve":[1.8096534,-13.496773,1.9019934,-4.200763]},{"time":1.9666667,"value":2.3645935,"curve":[2.000266,5.775471,2.021762,7.842472]},{"time":2.0666666,"value":8.120514,"curve":[2.099697,8.325035,2.1,0]},{"time":2.1333334}]},"bone3":{"rotate":[{"curve":[0.02458333,0,0.06367083,-0.3698256]},{"time":0.1,"value":-2.209563,"curve":[0.12549584,-3.488025,0.15481257,-5.638332]},{"time":0.16666667,"value":-6.06016,"curve":[0.2075937,-7.516557,0.24166666,-7.080471]},{"time":0.2666667,"value":-7.080471,"curve":[0.375,-7.080471,0.5583333,14.689136]},{"time":0.6666667,"value":14.689136,"curve":[0.6916666,14.689136,0.775,-1.4022026]},{"time":0.8,"value":-1.4022026,"curve":[0.8166666,-1.4022026,0.8833333,3.904814]},{"time":0.9,"value":3.904814,"curve":[0.9385,3.904814,0.979976,3.0251446]},{"time":1.0333333,"value":2.978839,"curve":[1.0761218,2.941707,1.1487386,3.424451]},{"time":1.1666666,"value":3.920725,"curve":[1.184573,4.416397,1.222312,5.939024]},{"time":1.2666667,"value":5.897762,"curve":[1.2988155,5.867857,1.3047442,0.4276934]},{"time":1.3666667,"value":0.3767977,"curve":[1.431534,0.3234816,1.4373486,2.115408]},{"time":1.4666667,"value":2.115408,"curve":[1.49125,2.115408,1.514032,-6.822418]},{"time":1.5666667,"value":-9.65152,"curve":[1.5823334,-10.493605,1.61625,-10.476328]},{"time":1.6333333,"value":-10.476328,"curve":[1.65,-10.476328,1.725485,-3.324537]},{"time":1.7666667,"value":-1.8023148,"curve":[1.7855794,-1.1032314,1.9318455,0.9890423]},{"time":1.9666667,"value":1.8085203,"curve":[1.988769,2.328684,2.0063674,6.831628]},{"time":2.033333,"value":6.850325,"curve":[2.064674,6.872057,2.108889,0]},{"time":2.1333334}]},"bone4":{"rotate":[{"curve":[0.02458333,0,0.06367083,0.799874]},{"time":0.1,"value":-1.0398636,"curve":[0.12549584,-2.3183255,0.15997256,-5.177444]},{"time":0.16666667,"value":-5.776626,"curve":[0.20690475,-9.37831,0.24166666,-15.669712]},{"time":0.2666667,"value":-15.669712,"curve":[0.375,-15.669712,0.5583333,14.689136]},{"time":0.6666667,"value":14.689136,"curve":[0.6916666,14.689136,0.775,-1.4022026]},{"time":0.8,"value":-1.4022026,"curve":[0.8166666,-1.4022026,0.8833333,3.904816]},{"time":0.9,"value":3.904816,"curve":[0.9385,3.904816,0.983928,2.936039]},{"time":1.0333333,"value":2.9974594,"curve":[1.0852644,3.062032,1.1328543,3.41]},{"time":1.1666666,"value":4.59806,"curve":[1.2126584,6.214069,1.234341,8.819682]},{"time":1.2666667,"value":8.270695,"curve":[1.3015395,7.69561,1.3130733,0.6607437]},{"time":1.3666667,"value":0.4349785,"curve":[1.4127164,0.2409847,1.4373486,2.995815]},{"time":1.4666667,"value":2.995815,"curve":[1.49125,2.995815,1.5152097,-15.253412]},{"time":1.5666667,"value":-15.034365,"curve":[1.6010917,-14.887817,1.6259278,-12.840826]},{"time":1.6333333,"value":-12.253935,"curve":[1.674381,-9.000805,1.75,-1.8023148]},{"time":1.7666667,"value":-1.8023148,"curve":[1.7843333,-1.8023148,1.8040764,-12.167263]},{"time":1.8333334,"value":-12.063026,"curve":[1.8719482,-11.925445,1.9351805,-3.195236]},{"time":1.9666667,"value":1.8085213,"curve":[1.98603,4.885757,2.0082295,10.054174]},{"time":2.033333,"value":9.691643,"curve":[2.070104,9.177082,2.0875554,0]},{"time":2.1333334}]},"bone5":{"rotate":[{"curve":[0.02458333,0,0.06207251,28.418266]},{"time":0.1,"value":28.60272,"curve":[0.14663687,28.829536,0.15251377,11.2621]},{"time":0.16666667,"value":7.144214,"curve":[0.1838935,2.131954,0.24166666,-3.087139]},{"time":0.2666667,"value":-3.087139,"curve":[0.375,-3.087139,0.5583333,14.68912]},{"time":0.6666667,"value":14.68912,"curve":[0.6916666,14.68912,0.775,-1.4022217]},{"time":0.8,"value":-1.4022217,"curve":[0.8166666,-1.4022217,0.8833333,3.9047966]},{"time":0.9,"value":3.9047966,"curve":[0.9385,3.9047966,0.9846858,-10.792965]},{"time":1.0333333,"value":-11.127247,"curve":[1.0761218,-11.411227,1.1306425,1.613019]},{"time":1.1666666,"value":9.659683,"curve":[1.175693,11.67591,1.222691,16.673485]},{"time":1.2666667,"value":17.418526,"curve":[1.2914054,17.837646,1.3251665,1.329235]},{"time":1.3666667,"value":1.7670593,"curve":[1.400026,2.119003,1.4373486,13.503124]},{"time":1.4666667,"value":13.503124,"curve":[1.49125,13.503124,1.5303375,12.523243]},{"time":1.5666667,"value":6.340107,"curve":[1.5921625,2.043352,1.624835,-8.501282]},{"time":1.6333333,"value":-9.290935,"curve":[1.6682856,-12.53864,1.751865,-12.66574]},{"time":1.7666667,"value":-13.331665,"curve":[1.7955415,-14.630745,1.7983146,-16.975534]},{"time":1.8333334,"value":-16.879663,"curve":[1.885077,-16.738,1.9303664,-6.628074]},{"time":1.9666667,"value":1.8085136,"curve":[1.9894737,7.109188,2.0082295,15.57751]},{"time":2.033333,"value":15.21498,"curve":[2.070104,14.700422,2.108889,0]},{"time":2.1333334}]},"front-arm":{"rotate":[{"value":-14.345,"curve":[0.13333334,-14.345,0.4,-19.57547]},{"time":0.5333333,"value":-19.57547}],"translate":[{"curve":[0.03333333,0,0.1,-7.24591,0.03333333,0,0.1,-6.081075]},{"time":0.13333334,"x":-7.24591,"y":-6.081075,"curve":[0.16666667,-7.24591,0.23333333,-9.897156,0.16666667,-6.081075,0.23333333,-6.360914]},{"time":0.2666667,"x":-9.897156,"y":-6.360914,"curve":[0.2916667,-9.897156,0.3416667,-18.75165,0.2916667,-6.360914,0.3416667,-3.9430676]},{"time":0.3666667,"x":-18.75165,"y":-3.9430676,"curve":[0.4416667,-18.75165,0.5916666,-6.673187,0.4416667,-3.9430676,0.6212339,-5.198413]},{"time":0.6666667,"x":-6.673187,"y":-5.492431,"curve":[0.7664252,-6.673187,0.8858117,-6.50348,0.9063248,-7.043378,0.861998,-6.665221]},{"time":1,"x":-6.31556,"y":-7.7124,"curve":[1.1417637,-6.088949,1.2768054,-5.836838,1.1533222,-8.87583,1.2768054,-10.039246]},{"time":1.3666667,"x":-5.836838,"y":-10.039246,"curve":[1.4148782,-5.836838,1.45202,-5.89273,1.4148782,-10.039246,1.4344852,-9.814247]},{"time":1.4666667,"x":-5.93441,"y":-9.67143,"curve":[1.5670122,-6.21994,1.619883,-6.673187,1.5104268,-9.47723,1.71028,-9.280952]},{"time":1.8,"x":-6.673187,"y":-9.264343,"curve":[1.8833333,-6.673187,2.05,0,1.883289,-9.248924,2.05,0]},{"time":2.1333334}],"scale":[{"curve":[0.03625,1,0.0830125,1.0244832,0.03625,1,0.0830125,1.000879]},{"time":0.13333334,"x":1.0244832,"y":1.000879,"curve":[0.2594875,1.0244832,0.41125,1,0.2594875,1.000879,0.41125,1]},{"time":0.5,"curve":[0.575,1,0.5916666,1.1919783,0.575,1,0.5916666,1]},{"time":0.6666667,"x":1.1919783,"curve":[0.75,1.1919783,0.8583333,1.080582,0.75,1,0.8583333,1]},{"time":0.9333333,"x":1.080582,"curve":[1.0166667,1.080582,0.9166667,1.084515,1.0166667,1,0.9166667,1]},{"time":1,"x":1.084515,"curve":[1.1,1.084515,1.2666667,1.0870733,1.1,1,1.2666667,1]},{"time":1.3666667,"x":1.0870733,"curve":[1.3753333,1.0870733,1.4178,1.125187,1.3753333,1,1.4178,1]},{"time":1.4666667,"x":1.1622182,"curve":[1.5016063,1.188197,1.675971,1.3540875,1.5016063,1,1.675971,1]},{"time":1.8,"x":1.301132,"curve":[1.841208,1.2844094,2.109333,1,1.841208,1,2.109333,1]},{"time":2.1333334}]},"front-arm1":{"rotate":[{"curve":[0.025,0,0.0512551,-14.243118]},{"time":0.1,"value":-14.366943,"curve":[0.20631526,-14.63701,0.2704254,25.5199]},{"time":0.3333333,"value":25.6,"curve":[0.4656447,25.76843,0.5275122,-35.51789]},{"time":0.7,"value":-35.62542,"curve":[0.7416612,-35.65138,0.8077097,-30.2666]},{"time":0.8333333,"value":-28.76002,"curve":[0.9560382,-21.54542,1.3416667,-18.16]},{"time":1.5,"value":-18.16,"curve":[1.6083333,-18.16,1.825,13.784122]},{"time":1.9333333,"value":13.784122,"curve":[1.9833333,13.784122,2.083333,0]},{"time":2.1333334}]},"front-arm2":{"rotate":[{"curve":[0.15696667,0,0.1658321,22.955605]},{"time":0.23333333,"value":23.11,"curve":[0.5199301,23.765465,0.522997,3.2425356]},{"time":0.5333333,"value":-3.344322,"curve":[0.5611264,-21.05543,0.6038524,-49.18643]},{"time":0.8,"value":-59.15373,"curve":[0.8963688,-64.05074,1.195063,-69.8212]},{"time":1.3333334,"value":-69.51422,"curve":[1.4072777,-69.35005,1.460179,-64.9392]},{"time":1.5,"value":-47.97177,"curve":[1.5251298,-37.26408,1.5995404,20.753876]},{"time":1.6666666,"value":20.781326,"curve":[1.801348,20.836433,1.8683333,-8.987038]},{"time":1.9333333,"value":-8.987038,"curve":[1.9833333,-8.987038,2.083333,0]},{"time":2.1333334}]},"front-bracer":{"rotate":[{"value":72.20586}]},"front-foot-target":{"rotate":[{"curve":[0.07355911,-0.0981903,0.09274935,-16.925985]},{"time":0.1,"value":-19.189384,"curve":[0.11665252,-24.38771,0.15654454,-24.352905]},{"time":0.2,"value":-24.35557,"curve":[0.2516303,-24.35874,0.3107313,-22.81149]},{"time":0.4333333,"value":-22.804256,"curve":[0.6276967,-22.79278,0.7755006,-25.557526]},{"time":1.2333333,"value":-25.57432,"curve":[1.378479,-25.57964,1.5249195,2.2360716]},{"time":1.7333333,"value":2.2360716,"curve":[1.7969532,2.479194,1.7320484,-17.38588]},{"time":1.8,"value":-17.1802,"curve":[1.923214,-16.80726,2.073043,0.16876037]},{"time":2.1333334}],"translate":[{"y":1.274002,"curve":[0.026612576,-0.4055481,0.05293025,-46.33741,0.02273081,3.933668,0.05,71.16673]},{"time":0.06666667,"x":-73.27261,"y":71.16673,"curve":[0.0881272,-115.35374,0.16946027,-316.4563,0.10296036,71.87606,0.17048255,60.50129]},{"time":0.2,"x":-392.1,"y":9.43,"curve":[0.23105556,-419.0889,0.23146926,-422.039,0.23105556,9.43,0.23146926,9.43]},{"time":0.2666667,"x":-422.039,"y":9.43,"curve":"stepped"},{"time":0.6,"x":-422.039,"y":9.43,"curve":[0.6434515,-422.039,0.6884264,-403.614,0.6434515,9.43,0.6884264,9.43]},{"time":0.7333333,"x":-403.614,"y":9.43,"curve":"stepped"},{"time":1.7333333,"x":-403.614,"y":9.43,"curve":[1.76868,-403.614,1.7925358,-341.6369,1.7677482,9.43,1.7833333,111.01566]},{"time":1.8,"x":-308.0508,"y":111.01566,"curve":[1.8132397,-248.4774,1.9,0,1.858401,109.78715,1.9275697,38.94682]},{"time":1.9333333,"curve":[1.9833333,0,2.083333,0.7619475,1.9833333,0,2.122445,0]},{"time":2.1333334,"y":1.274002}]},"front-foot1":{"rotate":[{"value":0.4036903}]},"front-foot2":{"rotate":[{},{"time":0.03333333,"value":-17.85156},{"time":0.06666667,"value":-27.506697},{"time":0.1,"value":-21.45238},{"time":0.13333334,"value":-12.421795},{"time":0.16666667,"value":-1.3631203},{"time":0.2,"value":-17.495495},{"time":0.6,"value":-17.42738},{"time":0.7,"value":-21.1251,"curve":"stepped"},{"time":1.7333333,"value":-21.1251},{"time":1.8,"value":-41.83182},{"time":1.8666667,"value":-1.1012764},{"time":1.9333333}]},"front-foot3":{"rotate":[{},{"time":0.03333333,"value":1.1986356},{"time":0.1,"value":8.931982},{"time":0.2,"value":26.93238,"curve":[0.21666667,26.93238,0.22403476,25.259447]},{"time":0.23333333,"value":16.322075,"curve":"stepped"},{"time":1.7333333,"value":16.322075},{"time":1.7666667,"value":24.81177},{"time":1.8,"value":-12.37024},{"time":1.8333334,"value":-17.658154},{"time":1.9,"value":9.39439},{"time":1.9333333,"value":16.110096},{"time":2}],"translate":[{"x":-29.67375,"curve":"stepped"},{"time":1.7333333,"x":-29.67375},{"time":1.8,"x":-34.02994,"y":8.948364},{"time":2.1333334,"x":-29.67375}]},"front-hand":{"rotate":[{"curve":[0.05,0,0.15,15.17069]},{"time":0.2,"value":15.17069,"curve":[0.4085695,14.82854,0.4031272,-26.61592]},{"time":0.5333333,"value":-25.79849,"curve":[0.6195894,-25.25698,0.647842,1.8753433]},{"time":0.8,"value":1.8753433,"curve":[0.9833336,1.8753433,1.4794304,-23.10372]},{"time":1.5333333,"value":-30.970856,"curve":[1.5743577,-36.95833,1.5905713,-46.2554]},{"time":1.6333333,"value":-46.05707,"curve":[1.749813,-45.51681,1.7617457,18.691124]},{"time":1.9333333,"value":19.030113,"curve":[1.9833093,19.12884,2.083333,0]},{"time":2.1333334}]},"front-hand2":{"rotate":[{},{"time":0.2,"value":-21.92526},{"time":0.3,"value":-23.28947},{"time":0.4333333,"value":-29.79552},{"time":0.5333333,"value":-36.61677},{"time":0.6333333,"value":-40.48547},{"time":0.7,"value":-38.28393},{"time":0.7666666,"value":-33.33423},{"time":0.8333333,"value":-28.06089},{"time":1.4333333,"value":-27.16889},{"time":1.5333333,"value":-27.62132},{"time":1.7}]},"front-leg-target":{"rotate":[{"value":-0.3053894}],"translate":[{"curve":[0.138232,0.68396,0.14357193,63.75062,0.09233884,0,0.14976613,21.48319]},{"time":0.2,"x":63.06023,"y":22.03322,"curve":[0.3150574,61.65251,0.29178715,-25.028305,0.3146747,23.28882,0.3558478,-56.93918]},{"time":0.5,"x":-29.09036,"y":-56.75119,"curve":[0.6006604,-31.05417,0.5826666,104.34286,0.5886485,-56.63558,0.5826665,47.2789]},{"time":0.7,"x":104.34286,"y":47.2789},{"time":1.3666667,"x":106.19848,"y":47.69879,"curve":[1.5378544,105.91507,1.6326667,88.97844,1.552329,49.59851,1.6326667,40.87745]},{"time":1.7333333,"x":49.49866,"y":28.707657,"curve":[1.8416667,7.012142,2.025,-0.5360243,1.8416667,15.611024,2.025,0]},{"time":2.1333334}]},"front-leg1":{"rotate":[{"value":-10.52735}]},"front-leg2":{"rotate":[{"value":-9.63385}]},"front-leg3":{"rotate":[{"value":3.656471}]},"front-thigh":{"rotate":[{"value":8.814423}]},"gun":{"rotate":[{"curve":[0.025,0,0.07500896,-16.45265]},{"time":0.1,"value":-16.38296,"curve":[0.18568917,-16.14402,0.2678633,-2.859978]},{"time":0.3,"value":-2.82988,"curve":[0.3418034,-2.790734,0.4272678,-27.5106]},{"time":0.4333333,"value":-29.46187,"curve":[0.5076235,-53.3608,0.6128694,-60.85408]},{"time":0.6333333,"value":-60.91527,"curve":[0.7110726,-61.1477,0.7339298,-27.933296]},{"time":0.7666666,"value":-23.26899,"curve":[0.7850312,-20.652443,0.8521218,-13.389814]},{"time":0.9,"value":-13.363335,"curve":[0.9515734,-13.334816,1.002456,-20.78779]},{"time":1.0333333,"value":-20.87345,"curve":[1.205604,-21.35131,1.4319195,-17.10016]},{"time":1.5,"value":-14.015717,"curve":[1.549316,-11.781418,1.65,15.39586]},{"time":1.7,"value":15.39586,"curve":[1.7333333,15.39586,1.799892,9.69941]},{"time":1.8333334,"value":2.780701,"curve":[1.875484,-5.939865,1.9084,-25.40219]},{"time":1.9333333,"value":-25.22766,"curve":[2.014783,-24.657516,2.108333,0]},{"time":2.1333334}],"translate":[{"time":0.2,"curve":[0.3083333,0,0.525,-18.37,0.3083333,0,0.525,-9.19]},{"time":0.6333333,"x":-18.37,"y":-9.19,"curve":[0.9,-18.37,1.4333333,0,0.9,-9.19,1.4333333,0]},{"time":1.7}]},"head":{"rotate":[{"curve":[0.0010997017,-4.960442,0.0500091,-6.662464]},{"time":0.06666667,"value":-6.57449,"curve":[0.2112182,-5.811066,0.17555113,34.04393]},{"time":0.2666667,"value":33.6522,"curve":[0.3351732,33.69676,0.4541272,12.93243]},{"time":0.5,"value":3.3714075,"curve":[0.5386284,-4.679718,0.5467235,-11.662772]},{"time":0.6,"value":-12.107006,"curve":[0.6452672,-11.689426,0.6017645,31.75396]},{"time":0.8,"value":31.509706,"curve":[0.85,31.509706,0.9166667,25.301516]},{"time":0.9666666,"value":25.301516,"curve":[1.075,25.301516,1.3916667,27.902]},{"time":1.5,"value":27.902,"curve":[1.55,27.902,1.7174023,-5.135035]},{"time":1.8,"value":-4.513868,"curve":[1.8605014,-4.191151,1.9493464,4.070065]},{"time":2.033333,"value":4.178705,"curve":[2.086846,4.247925,2.095634,2.9854374]},{"time":2.1333334}],"translate":[{"curve":[0.05,0,0.15,22.57737,0.05,0,0.15392877,-41.07136]},{"time":0.2,"x":22.74858,"y":-41.48271,"curve":[0.2998227,23.090397,0.3362562,-13.20263,0.3285272,-42.63028,0.3564223,19.914993]},{"time":0.5666666,"x":-12.04435,"y":21.06781,"curve":[0.6434108,-12.235908,0.6805745,19.674637,0.6247347,21.26449,0.6148299,-90.9574]},{"time":0.7,"x":20.10009,"y":-90.35684,"curve":[0.7184584,20.504364,0.75,16.57,0.7378014,-90.3283,0.75,-87.92]},{"time":0.7666666,"x":16.57,"y":-87.92,"curve":[0.7833333,16.57,0.8166666,18.74,0.7833333,-87.92,0.8166666,-87.42]},{"time":0.8333333,"x":18.74,"y":-87.42,"curve":[0.85,18.74,0.8833333,16.57,0.85,-87.42,0.8833333,-87.92]},{"time":0.9,"x":16.57,"y":-87.92,"curve":[0.9166667,16.57,0.95,18.74,0.9166667,-87.92,0.95,-87.42]},{"time":0.9666666,"x":18.74,"y":-87.42,"curve":[1.075,18.74,1.3916667,27.31,1.075,-87.42,1.3916667,-84.9]},{"time":1.5,"x":27.31,"y":-84.9,"curve":[1.5538093,27.31,1.6053282,-22.60115,1.5116667,-84.9,1.5748608,-102.52624]},{"time":1.7,"x":-22.584145,"y":-89.05743,"curve":[1.811934,-23.81355,1.8631604,9.942184,1.8407756,-71.21703,1.8469467,11.93096]},{"time":1.9666667,"x":10.7716,"y":13.345384,"curve":[2.0279496,11.26267,2.065163,-0.884285,2.0324254,14.122277,2.081728,7.516476]},{"time":2.1333334}],"shear":[{"time":0.6333333,"curve":[0.6538733,0,0.6699415,-0.1315315,0.6538733,0,0.6763605,0]},{"time":0.7,"x":-0.5634992,"curve":[0.7208961,-0.8637965,0.7437984,-1.238066,0.7214439,0,0.7437984,0]},{"time":0.7666666,"x":-1.238066,"curve":[0.7882563,-1.238066,0.8190062,-0.6942048,0.7882563,0,0.8106323,0]},{"time":0.8333333,"x":-0.47106585,"curve":[0.8797512,0.2518771,0.901422,0.4267737,0.866228,0,0.8998957,0]},{"time":0.9333333,"x":0.43144405,"curve":[0.9748649,0.43752205,1.016512,-0.4748798,0.9995353,0,1.0678046,0]},{"time":1.1333333,"x":-0.45549124,"curve":[1.2015603,-0.4441677,1.281746,-0.008604318,1.2164236,0,1.461882,0]},{"time":1.5}]},"head-control":{"translate":[{"curve":[0.05381425,0,0.19929634,-1.2534752,0.07238806,1.294098,0.19166666,-16.8103]},{"time":0.23333333,"x":-7.114204,"y":-16.8103,"curve":[0.32728025,-23.29067,0.378777,-49.72622,0.3166667,-16.8103,0.4519548,14.651718]},{"time":0.5666666,"x":-48.0404,"y":14.366135,"curve":[0.6529695,-47.79916,0.8261445,-35.85242,0.674158,14.09854,0.729015,-25.529755]},{"time":0.8333333,"x":-35.78864,"y":-25.529755,"curve":[0.8671444,-35.48867,0.9083333,-35.47534,0.8583333,-25.52974,0.9083333,-15.454315]},{"time":0.9333333,"x":-35.47534,"y":-15.454315,"curve":[0.9666666,-35.47534,1.0392787,-37.96733,0.9666666,-15.454315,1.0333333,-22.03647]},{"time":1.0666667,"x":-39.20141,"y":-22.03647,"curve":[1.1352447,-42.2915,1.1631423,-43.43309,1.1,-22.03647,1.1666666,-6.450027]},{"time":1.2,"x":-44.11977,"y":-6.450027,"curve":[1.2400514,-44.86596,1.325,-45.14981,1.2416667,-6.450027,1.2869395,-13.604294]},{"time":1.3666667,"x":-45.14981,"y":-13.607193,"curve":[1.4166666,-45.14981,1.5166667,-47.60654,1.4475684,-13.610153,1.508648,-1.8112488]},{"time":1.5666667,"x":-47.60654,"y":-1.6129303,"curve":[1.6166667,-47.60654,1.6711063,-48.29971,1.6531674,-1.3172913,1.7557036,-23.41063]},{"time":1.7666667,"x":-37.45297,"y":-28.41252,"curve":[1.791247,-34.66292,1.8135493,-20.74891,1.79612,-41.85084,1.804494,-47.93242]},{"time":1.8333334,"x":-18.6834,"y":-47.78464,"curve":[1.9201864,-9.877803,1.960976,-5.227234,1.906489,-47.40983,1.9518456,-34.08664]},{"time":2,"x":-3.409178,"y":-22.62454,"curve":[2.045041,-1.3107967,2.1,0,2.0131874,-19.485565,2.1,0]},{"time":2.1333334}]},"head2":{"rotate":[{"value":12.976063,"curve":[0.031235095,13.085802,0.05086188,13.29559]},{"time":0.06666667,"value":14.17861,"curve":[0.09282301,15.639965,0.2704128,32.4886]},{"time":0.3,"value":33.17519,"curve":[0.3371436,34.03713,0.3791717,21.477406]},{"time":0.4333333,"value":21.70699,"curve":[0.4946937,21.967087,0.5858333,55.79772]},{"time":0.6333333,"value":55.79773,"curve":[0.7130882,55.79773,0.8080742,48.07243]},{"time":0.9,"value":48.25334,"curve":[0.9504415,48.35261,0.991227,53.74363]},{"time":1.0333333,"value":53.36756,"curve":[1.057965,53.15471,1.0727323,47.28508]},{"time":1.1,"value":47.46718,"curve":[1.1885874,48.05876,1.1861522,51.2878]},{"time":1.2333333,"value":51.02413,"curve":[1.2651105,50.84653,1.3122728,48.13272]},{"time":1.3333334,"value":45.79242,"curve":[1.3590974,42.92945,1.4431423,33.1921]},{"time":1.5,"value":32.96265,"curve":[1.5551876,32.73994,1.5837576,45.97839]},{"time":1.6333333,"value":45.92313,"curve":[1.7063206,45.84178,1.747126,24.347095]},{"time":1.8,"value":15.57551,"curve":[1.857511,6.034656,1.9041667,0]},{"time":1.9333333,"curve":[1.9658333,0,2.0191505,17.18161]},{"time":2.0666666,"value":17.31042,"curve":[2.096739,17.39194,2.115833,12.976063]},{"time":2.1333334,"value":12.976063}],"scale":[{"time":0.4666667,"curve":[0.496832,1,0.5307627,0.9842182,0.496832,1,0.5307627,1.0399467]},{"time":0.5666666,"x":0.9842182,"y":1.0399467,"curve":[0.6181372,0.9842182,0.6841501,1.0432616,0.6181372,1.0399467,0.667902,0.9920755]},{"time":0.7333333,"x":1.0443496,"y":0.9901244,"curve":[0.7746143,1.0452626,0.843813,1,0.7665846,0.989133,0.843813,1]},{"time":0.9,"curve":"stepped"},{"time":1.4333333,"curve":[1.475,1,1.5628585,1.0006132,1.475,1,1.567962,1.0034766]},{"time":1.6,"x":1.0035667,"y":1.007643,"curve":[1.6508622,1.0076113,1.675,1.0164257,1.6367555,1.0124227,1.675,1.054742]},{"time":1.7,"x":1.0164257,"y":1.054742,"curve":[1.7583333,1.0164257,1.85384,1.0083466,1.7583333,1.054742,1.8810465,1.0138874]},{"time":1.9333333,"x":1.0035667,"y":1.007643,"curve":[1.980003,1.0007606,2.083333,1,1.9929557,1.0005224,2.083333,1]},{"time":2.1333334}]},"hip":{"rotate":[{"curve":[0.025,0,0.0606518,2.90411]},{"time":0.1,"value":2.9491296,"curve":[0.14979944,3.0061035,0.19174284,-10.892542]},{"time":0.2,"value":-14.11895,"curve":[0.223962,-23.48188,0.2378408,-33.20198]},{"time":0.3,"value":-33.39501,"curve":[0.4012419,-33.70941,0.4928114,-9.733124]},{"time":0.5666666,"value":-6.440478,"curve":[0.5894096,-5.426544,0.6833333,-0.43481445]},{"time":0.7,"value":-0.43481445,"curve":[0.7391666,-0.43481445,0.7775263,-6.756678]},{"time":0.8333333,"value":-6.779285,"curve":[0.9624623,-6.831599,1.16428,-5.77681]},{"time":1.4333333,"value":-5.931113,"curve":[1.5307704,-5.986992,1.5345666,-17.41743]},{"time":1.7,"value":-17.429377,"curve":[1.8075706,-17.49867,1.815981,3.250304]},{"time":1.9333333,"value":3.282818,"curve":[1.9875628,3.297845,2.083333,0]},{"time":2.1333334}],"translate":[{"y":0.4851379,"curve":[0.012365372,-0.4765312,0.05503584,34.36478,0.03308169,15.912347,0.07216156,19.981323]},{"time":0.1,"x":34.56999,"y":19.96994,"curve":[0.3002419,33.3496,0.260952,-337.4661,0.2703434,21.25104,0.4353404,-81.31452]},{"time":0.4666667,"x":-339.73895,"y":-103.87882,"curve":[0.5246017,-333.52765,0.5402984,-266.9045,0.518491,-141.20795,0.5479672,-146.44514]},{"time":0.5666666,"x":-207.10176,"y":-146.23865,"curve":[0.5774756,-182.58717,0.6046393,44.93373,0.6128553,-146.6739,0.6290074,-42.45691]},{"time":0.7,"x":44.98,"y":-16.55179,"curve":[0.729026,44.99409,0.751916,42.93177,0.7219465,-8.543488,0.75,-6.52]},{"time":0.7666666,"x":41.57,"y":-6.52,"curve":[0.800373,38.20195,0.8166666,35.92095,0.7833333,-6.52,0.8166666,-13.34]},{"time":0.8333333,"x":35.92095,"y":-13.34,"curve":[0.85,35.92095,0.8614938,39.13401,0.85,-13.34,0.8833333,-6.52]},{"time":0.9,"x":41.57,"y":-6.52,"curve":[0.9453781,44.44073,1.2757927,55.19168,0.9916667,-6.52,1.275,-29.35599]},{"time":1.3666667,"x":48.94403,"y":-29.35599,"curve":[1.579074,34.34088,1.6224434,-126.54304,1.5579567,-27.52278,1.6589493,-0.01800537]},{"time":1.7,"x":-127.63624,"y":26.2081,"curve":[1.7599056,-128.48067,1.7958957,-115.83005,1.7299405,45.33625,1.7876776,70.46658]},{"time":1.8666667,"x":-78.9473,"y":70.64606,"curve":[1.923766,-49.18949,2.035676,-1.0323358,1.949979,70.79224,2.0666666,-30.6041]},{"time":2.1333334,"y":0.4851379}]},"horn-back":{"rotate":[{"time":0.2},{"time":1.0333333,"value":7.62},{"time":1.9333333}],"translate":[{"time":1.6666666,"curve":[1.7083334,0,1.7916666,19.82782,1.7083334,0,1.7916666,22.58957]},{"time":1.8333334,"x":19.82782,"y":22.58957,"curve":[1.9083333,19.82782,2.0583334,0,1.9083333,22.58957,2.0583334,0]},{"time":2.1333334}]},"horn-front":{"rotate":[{"curve":[0.017666666,0,0.05208957,0.7273674]},{"time":0.06666667,"value":1.728073,"curve":[0.0840349,2.920396,0.10037883,4.719918]},{"time":0.13333334,"value":4.954506,"curve":[0.1615007,5.15501,0.18745004,4.302111]},{"time":0.2,"value":3.8866844,"curve":[0.2887338,0.9494352,0.477449,-6.846139]},{"time":0.6666667,"value":-6.057113,"curve":[0.809164,-5.48575,0.9527374,-3.355655]},{"time":1.0333333,"value":-2.655078,"curve":[1.2551023,-0.7273483,1.7083334,0]},{"time":1.9333333}],"translate":[{"time":1.4666667},{"time":1.9,"x":5.795044,"y":-14.310974},{"time":2.033333,"x":7.955078,"y":-4.521454},{"time":2.1333334}]},"jaw":{"rotate":[{"value":-1.1952972,"curve":[0.05,-1.1952972,0.1576554,0.5393066]},{"time":0.2,"value":1.8345795,"curve":[0.2728815,4.063926,0.4167385,15.62777]},{"time":0.4666667,"value":14.470276,"curve":[0.6517568,10.179253,0.5916666,-68.70428]},{"time":0.6666667,"value":-68.70428,"curve":[0.7314608,-68.51715,0.7671807,-42.63524]},{"time":0.8,"value":-42.44815,"curve":[0.8083333,-42.44813,0.8013388,-43.40864]},{"time":0.8333333,"value":-43.55141,"curve":[0.8575366,-43.55141,0.9055594,-39.81436]},{"time":0.9333333,"value":-39.72978,"curve":[0.9558046,-39.64542,1.01315,-42.10263]},{"time":1.0333333,"value":-42.02005,"curve":[1.0599163,-41.91127,1.0829667,-35.37761]},{"time":1.1333333,"value":-35.34122,"curve":[1.1687295,-35.31565,1.2195566,-36.84138]},{"time":1.2666667,"value":-36.73747,"curve":[1.3718338,-36.30948,1.54249,1.500862]},{"time":1.6,"value":-3.576889,"curve":[1.6199552,-3.978419,1.647059,-9.02411]},{"time":1.7,"value":-8.792313,"curve":[1.74826,-8.742847,1.8230644,3.6993394]},{"time":1.9333333,"value":4.732712,"curve":[1.951,5.044318,1.974909,-1.136814]},{"time":2,"value":-1.3419037,"curve":[2.047758,-1.7172565,2.1,-1.1952972]},{"time":2.1333334,"value":-1.1952972}],"translate":[{"x":-3.4399986,"y":2.510002,"curve":[0.1109852,-3.7392235,0.3912641,-39.93589,0.15502886,4.087734,0.2966205,-2.9754715]},{"time":0.4666667,"x":-56.44524,"y":-10.08204,"curve":[0.5265437,-69.24242,0.5605652,-75.25414,0.5771723,-15.370048,0.551274,-15.25428]},{"time":0.6,"x":-74.42703,"y":-14.686295,"curve":[0.6342845,-74.94536,0.6244342,-60.95444,0.6408756,-14.107864,0.65,23.06912]},{"time":0.6666667,"x":-53.44833,"y":23.06912,"curve":[0.7585141,-37.12397,1.391892,-28.49185,0.8916666,23.06912,1.375,19.61397]},{"time":1.6,"x":-21.33061,"y":16.78336,"curve":[1.7615534,-15.771376,1.825,-8.46948,1.624636,16.473427,1.7802166,6.334698]},{"time":1.8666667,"x":-8.46948,"y":-3.7701416,"curve":[1.9,-8.46948,1.9666667,-15.379066,1.9142407,-8.238594,1.9666667,-10.853378]},{"time":2,"x":-15.379066,"y":-10.853378,"curve":[2.033333,-15.379066,2.1,-3.4399986,2.033333,-10.853378,2.1,2.510002]},{"time":2.1333334,"x":-3.4399986,"y":2.510002}],"scale":[{"time":0.5666666,"curve":[0.5943895,1,0.6208333,0.9560776,0.6005588,1,0.6208333,1.0575278]},{"time":0.6333333,"x":0.9560776,"y":1.0575278,"curve":[0.6458333,0.9560776,0.6392696,0.9940754,0.6458333,1.0575278,0.6415478,1.0197484]},{"time":0.7}],"shear":[{"time":0.23333333,"curve":[0.2833333,0,0.3613967,-0.05349203,0.2833333,0,0.405078,-0.24694034]},{"time":0.4333333,"x":0.04460073,"y":-0.4713975,"curve":[0.4979945,0.1327733,0.5700468,0.5684042,0.48536065,-0.884698,0.5333333,-2.907349]},{"time":0.6333333,"x":0.5478031,"y":-2.907349,"curve":[0.7018387,0.5255032,0.7171954,0.32875645,0.6803062,-2.87235,0.7484596,-2.0913465]},{"time":0.8,"x":0.1984679,"y":-1.5850337,"curve":[0.8968305,0.04611016,1.025,0,0.8617343,-0.9785796,1.025,0]},{"time":1.1333333}]},"jaw-inside":{"rotate":[{},{"time":0.7666666,"value":13.77124},{"time":2.1333334}],"translate":[{},{"time":0.6,"x":-4.30423,"y":4.484619},{"time":0.7666666,"x":-23.59265,"y":-9.321472},{"time":2.1333334}],"scale":[{"time":0.6},{"time":0.7666666,"x":1.1188874},{"time":2.1333334}]},"leg-control":{"translate":[{"curve":[0.01666667,0,0.05,0,0.01666667,0,0.05,102.4327]},{"time":0.06666667,"y":102.4327,"curve":[0.1,0,0.15,0,0.1,102.4327,0.15,97.83137]},{"time":0.2,"y":93.23006,"curve":[0.22283334,0,0.2456667,0,0.22283334,91.12878,0.2456667,-33.33128]},{"time":0.2666667,"y":-34.99433,"curve":[0.2921909,0,0.3152222,0,0.2921909,-36.97301,0.3152222,84.02743]},{"time":0.3333333,"y":84.02743,"curve":[0.35,0,0.3833333,0,0.35,84.02743,0.3833333,22.16259]},{"time":0.4,"y":22.16259,"curve":[0.4666667,0,0.6,11.39688,0.4666667,22.16259,0.6,-252.93103]},{"time":0.6666667,"x":11.39688,"y":-252.93103,"curve":[0.7,11.39688,0.7666666,11.39688,0.7,-252.93103,0.7666666,-174.3925]},{"time":0.8,"x":11.39688,"y":-174.3925,"curve":[0.825,11.39688,0.875,11.39688,0.825,-174.3925,0.875,-201.78796]},{"time":0.9,"x":11.39688,"y":-201.78796,"curve":[0.925,11.39688,0.975,11.39688,0.925,-201.78796,0.975,-174.32727]},{"time":1,"x":11.39688,"y":-174.32727,"curve":[1.0333333,11.39688,1.1,11.39688,1.0333333,-174.32727,1.1,-221.2162]},{"time":1.1333333,"x":11.39688,"y":-221.2162,"curve":[1.1666666,11.39688,1.2333333,11.39688,1.1666666,-221.2162,1.2333333,-167.3592]},{"time":1.2666667,"x":11.39688,"y":-167.3592,"curve":[1.3083333,11.39688,1.3916667,11.39688,1.3083333,-167.3592,1.3916667,-214.55518]},{"time":1.4333333,"x":11.39688,"y":-214.55518,"curve":[1.5083333,11.39688,1.725,11.39688,1.5083333,-214.55518,1.725,48.39307]},{"time":1.8,"x":11.39688,"y":48.39307,"curve":[1.8569444,11.39688,1.952801,6.130762,1.8569444,48.39307,1.952801,-139.3068]},{"time":2.033333,"x":2.7603455,"y":-153.61813,"curve":[2.072199,1.198445,2.106944,0,2.072199,-160.2502,2.106944,0]},{"time":2.1333334}]},"lower-leg":{"rotate":[{"value":-12.658535}]},"neck":{"rotate":[{"curve":[0.05,0,0.11423018,-8.501202]},{"time":0.2,"value":-8.26,"curve":[0.2901589,-8.006446,0.537244,12.54909]},{"time":0.6333333,"value":13.44405,"curve":[0.7658652,14.67843,1.2734944,2.132954]},{"time":1.4666667,"value":-3.503719,"curve":[1.564852,-6.924317,1.655727,-11.018286]},{"time":1.7,"value":-10.742094,"curve":[1.788044,-10.19284,1.8519185,2.741184]},{"time":1.9333333,"value":2.877842,"curve":[1.9924266,2.977032,2.083333,0]},{"time":2.1333334}],"translate":[{"curve":[0.05,0,0.15,-20.088917,0.05,0,0.17443556,-0.2586219]},{"time":0.2,"x":-19.98364,"y":-1.4499054,"curve":[0.312,-19.74783,0.4632388,34.39558,0.2639209,-4.428573,0.474332,-34.98151]},{"time":0.6,"x":34.30374,"y":-34.86598,"curve":[0.6722458,34.25522,0.7416667,30.0226,0.637535,-34.83147,0.7416667,-21.31856]},{"time":0.8,"x":30.0226,"y":-21.31856,"curve":[0.8416666,30.0226,0.9916667,37.6581,0.8416666,-21.31856,0.9916667,-41.17795]},{"time":1.0333333,"x":37.6581,"y":-41.17795,"curve":[1.0833334,37.6581,1.1833333,23.600327,1.0833334,-41.17795,1.1833333,-0.6304756]},{"time":1.2333333,"x":23.600327,"y":-0.6304756,"curve":[1.2916666,23.600327,1.4083332,26.297134,1.2916666,-0.6304756,1.4083333,-26.61517]},{"time":1.4666667,"x":26.297134,"y":-26.61517,"curve":[1.5806197,26.297134,1.617727,17.2101,1.5,-26.61517,1.675,3.6429024]},{"time":1.7,"x":12.18019,"y":3.6429024,"curve":[1.773071,7.712845,1.8702505,4.403015,1.7583333,3.6429024,1.875,-4.901378]},{"time":1.9333333,"x":2.830345,"y":-4.901378,"curve":[2.000755,1.1495056,2.083333,0,1.9833333,-4.901378,2.083333,0]},{"time":2.1333334}]},"neck2":{"rotate":[{"value":0.016994476,"curve":[0.05,0.016994476,0.14395218,5.690305]},{"time":0.2,"value":9.941437,"curve":[0.27649775,15.743654,0.525,37.25]},{"time":0.6333333,"value":37.25,"curve":[0.8083333,37.25,1.1754525,37.20645]},{"time":1.3333334,"value":33.93432,"curve":[1.5433623,29.581404,1.659146,13.316275]},{"time":1.7,"value":11.08,"curve":[1.762146,7.678211,1.875,0]},{"time":1.9333333}]},"saddle":{"rotate":[{"value":-3.18412,"curve":[0.04166667,-3.18412,0.1319434,-3.3037186]},{"time":0.16666667,"value":-3.04187,"curve":[0.2776691,-2.2048035,0.5166666,8.86589]},{"time":0.6333333,"value":8.86589,"curve":[0.6833333,8.86589,0.7722983,-1.9192505]},{"time":0.8333333,"value":-2.369087,"curve":[0.8999712,-2.8602066,1.2583333,-3.18412]},{"time":1.4,"value":-3.18412,"curve":[1.4583334,-3.18412,1.575,-7.05896]},{"time":1.6333333,"value":-7.05896,"curve":[1.7145833,-7.05896,1.8599743,-0.11690044]},{"time":1.9666667,"value":-0.06554413,"curve":[2.050401,-0.025238037,2.0895834,-3.18412]},{"time":2.1333334,"value":-3.18412}],"translate":[{"x":12.676453,"y":-2.670715,"curve":[0.04166667,12.676453,0.125,22.75735,0.04166667,-2.670715,0.125,-3.363701]},{"time":0.16666667,"x":22.75735,"y":-3.363701,"curve":[0.2833333,22.75735,0.5166666,9.260864,0.2833333,-3.363701,0.5166666,-0.417099]},{"time":0.6333333,"x":9.260864,"y":-0.417099,"curve":[0.6583333,9.260864,0.7083333,12.676453,0.6583333,-0.417099,0.7083333,-2.670715]},{"time":0.7333333,"x":12.676453,"y":-2.670715}]},"saddle-strap-back":{"rotate":[{"value":-2.525406,"curve":[0.07927,-2.449173,0.302215,-25.09913]},{"time":0.3333333,"value":-25.810234,"curve":[0.3886423,-27.07413,0.48422995,-26.227615]},{"time":0.5333333,"value":-26.788666,"curve":[0.5609879,-27.10464,0.6083592,-31.99128]},{"time":0.6333333,"value":-31.97056,"curve":[0.7252362,-31.894325,0.7625385,-10.530502]},{"time":0.8333333,"value":-7.749542,"curve":[0.9107831,-4.707138,1.3083335,-5.821182]},{"time":1.4666667,"value":-5.821182,"curve":[1.540505,-5.821182,1.6316522,-4.145981]},{"time":1.7,"value":-4.139007,"curve":[1.765942,-4.132278,1.845152,-11.086716]},{"time":1.9333333,"value":-11.086716,"curve":[1.9833333,-11.086716,2.083333,-2.525406]},{"time":2.1333334,"value":-2.525406}],"translate":[{"curve":[0.08333333,0,0.25,11.685944,0.08333333,0,0.25,-2.8079224]},{"time":0.3333333,"x":11.685944,"y":-2.8079224,"curve":[0.4083333,11.685944,0.5583333,0,0.4083333,-2.8079224,0.5583333,0]},{"time":0.6333333}],"scale":[{"time":0.6333333,"curve":[0.65,1,0.6658395,1.075704,0.65,1,0.6833333,1]},{"time":0.7,"x":1.1026872,"curve":[0.7372303,1.1320953,0.8,1.1620117,0.7333333,1,0.8,1]},{"time":0.8333333,"x":1.1620117,"curve":[1.05,1.1620117,1.4833333,1,1.05,1,1.4833333,1]},{"time":1.7}]},"saddle-strap-front":{"rotate":[{"value":-0.3687134,"curve":[0.06666667,-0.3687134,0.2,-0.9502563]},{"time":0.2666667,"value":-0.9502563,"curve":[0.325,-0.9502563,0.465568,-15.04802]},{"time":0.5,"value":-17.948975,"curve":[0.5668571,-23.58177,0.6,-27.116135]},{"time":0.6333333,"value":-27.116135,"curve":[0.6583333,-27.116135,0.6881724,-23.12448]},{"time":0.7333333,"value":-18.55742,"curve":[0.7498251,-16.889633,0.8030894,-13.86647]},{"time":0.8333333,"value":-12.021576,"curve":[0.865879,-10.036285,0.9699611,-6.279612]},{"time":1.0666667,"value":-6.12828,"curve":[1.133444,-6.024558,1.203631,-10.675]},{"time":1.2666667,"value":-10.070923,"curve":[1.3935783,-8.87184,1.514389,-1.129486]},{"time":1.6,"value":-1.129486,"curve":[1.675,-1.129486,1.8251604,-6.561828]},{"time":1.9,"value":-6.680939,"curve":[1.9524262,-6.764389,1.9816535,-6.385666]},{"time":2,"value":-5.972305,"curve":[2.033333,-5.221267,2.1,-0.3687134]},{"time":2.1333334,"value":-0.3687134}],"translate":[{"curve":[0.125,0,0.375,-17.922974,0.125,0,0.375,-1.7483826]},{"time":0.5,"x":-17.922974,"y":-1.7483826,"curve":[0.5889166,-17.922974,0.706583,-7.057888,0.5889166,-1.7483826,0.706583,-4.507475]},{"time":0.8333333,"x":-2.895771,"y":-6.566284,"curve":[1.101917,5.81464,1.4139167,11.49472,1.101917,-10.874927,1.4139167,-16.29997]},{"time":1.6,"x":11.49472,"y":-16.29997,"curve":[1.7333333,11.49472,2,0,1.7333333,-16.29997,2,0]},{"time":2.1333334}]},"spineboy-back-arm-target":{"translate":[{},{"time":0.6333333,"x":56.17285,"y":-58.55765},{"time":0.8333333,"x":34.46844,"y":-59.19174},{"time":2.1333334}]},"spineboy-front-arm-target":{"translate":[{},{"time":0.06666667,"x":1.1109314,"y":-2.353485},{"time":0.3,"x":21.55603,"y":-45.66611},{"time":0.5666666,"x":2.231659,"y":-34.97969},{"time":0.7333333,"x":28.522797,"y":-47.75398},{"time":0.8333333,"x":24.520233,"y":-37.91605},{"time":1.5,"x":26.242554,"y":-38.24052},{"time":1.7,"x":-9.391785,"y":-0.721634},{"time":1.8666667,"x":1.0347595,"y":-21.85956},{"time":2.1333334}]},"spineboy-front-foot-target":{"translate":[{"curve":[0.075,0,0.225,12.32846,0.075,0,0.225,10.250122]},{"time":0.3,"x":12.32846,"y":10.250122,"curve":[0.7583333,12.32846,1.675,0,0.7583333,10.250122,1.675,0]},{"time":2.1333334}]},"spineboy-hip":{"rotate":[{"curve":[0.025,0,0.075,10.975075]},{"time":0.1,"value":10.975075,"curve":[0.1571389,10.975075,0.2381468,8.08097]},{"time":0.3333333,"value":8.019203,"curve":[0.3911966,7.981662,0.4323243,11.763657]},{"time":0.4666667,"value":11.658203,"curve":[0.490896,11.583817,0.504019,11.396133]},{"time":0.5333333,"value":7.386024,"curve":[0.5767045,1.4529953,0.6273814,-5.499061]},{"time":0.7,"value":-7.465202,"curve":[0.8214968,-10.75473,0.9166667,-11.15635]},{"time":1,"value":-11.15635,"curve":[1.1295,-11.15635,1.3588493,3.637728]},{"time":1.5333333,"value":3.428917,"curve":[1.6031814,3.8860855,1.6369804,-25.964615]},{"time":1.7,"value":-25.964615,"curve":[1.8109115,-26.325603,1.881232,9.14779]},{"time":1.9666667,"value":9.049103,"curve":[2.0341785,8.971115,2.091667,0]},{"time":2.1333334}],"translate":[{"curve":[0.025,0,0.0750543,-3.136368,0.025,0,0.075,4.234972]},{"time":0.1,"x":-2.693077,"y":4.234972,"curve":[0.13118437,-2.1389084,0.16675417,3.2739944,0.125,4.234972,0.18315905,-2.9779205]},{"time":0.2,"x":17.128235,"y":-6.44475,"curve":[0.21355218,22.775703,0.275,27.632156,0.2347403,-13.59629,0.2737288,-24.334436]},{"time":0.3,"x":27.632156,"y":-24.78338,"curve":[0.3416667,27.632156,0.425,23.613594,0.3488699,-25.6185,0.4411776,-8.743953]},{"time":0.4666667,"x":23.613594,"y":-8.316032,"curve":[0.4833333,23.613594,0.5077151,20.91887,0.4860615,-7.990429,0.5077435,-37.58042]},{"time":0.5333333,"x":35.41964,"y":-44.36167,"curve":[0.5514662,45.68353,0.6083333,70.80553,0.569191,-53.86384,0.6160268,-66.97786]},{"time":0.6333333,"x":70.80553,"y":-72.81343,"curve":[0.65,70.80553,0.6794299,65.63902,0.6479056,-77.72706,0.6713121,-76.48233]},{"time":0.7,"x":62.90897,"y":-76.9076,"curve":[0.7253783,59.54078,0.775,59.8592,0.7296516,-77.34714,0.775,-54.30123]},{"time":0.8,"x":59.8592,"y":-54.30123,"curve":[0.825,59.8592,0.8674762,59.93467,0.825,-54.30123,0.8653466,-55.33016]},{"time":0.9,"x":60.78867,"y":-56.68705,"curve":[0.946225,62.00243,0.9617326,62.29215,0.9232765,-57.59847,0.9506787,-57.62002]},{"time":1,"x":63.78164,"y":-57.73004,"curve":[1.0380933,65.26436,1.105943,68.28405,1.058015,-57.85946,1.0996855,-57.62626]},{"time":1.1333333,"x":69.44236,"y":-57.41059,"curve":[1.2166407,72.9653,1.3333334,77.1307,1.2256802,-56.81868,1.3161285,-55.55365]},{"time":1.4,"x":77.1307,"y":-53.65258,"curve":[1.4333333,77.1307,1.4669805,73.12392,1.436667,-52.82147,1.491791,-50.9065]},{"time":1.5333333,"x":63.40513,"y":-49.52053,"curve":[1.5486218,61.16582,1.5968766,46.67382,1.576237,-48.08916,1.5991575,-47.25112]},{"time":1.6333333,"x":38.85876,"y":-45.65013,"curve":[1.6874287,27.26255,1.7222604,20.803436,1.6766307,-43.62183,1.7102222,-40.67176]},{"time":1.7333333,"x":19.46388,"y":-38.00181,"curve":[1.8030117,11.670115,1.885289,5.585575,1.7583796,-35.10831,1.888417,-14.526795]},{"time":1.9333333,"x":4.111786,"y":-7.783424,"curve":[2.006447,1.868988,2.083333,0,1.9600667,-3.769878,2.083333,0]},{"time":2.1333334}]},"spineboy-torso":{"rotate":[{"curve":[0.02442371,-0.09488678,0.08789796,-27.72589]},{"time":0.16666667,"value":-27.924904,"curve":[0.1931936,-27.99193,0.21629296,-27.440636]},{"time":0.23333333,"value":-27.418823,"curve":[0.2924649,-27.34311,0.4000425,-40.99694]},{"time":0.4333333,"value":-47.90156,"curve":[0.481162,-57.82136,0.5777577,-76.33443]},{"time":0.6333333,"value":-81.71565,"curve":[0.6556626,-83.87773,0.6691941,-84.83832]},{"time":0.7,"value":-84.83832,"curve":[0.7333333,-84.8383,0.8,-60.20763]},{"time":0.8333333,"value":-60.20763,"curve":[0.85,-60.20763,0.8732216,-68.31703]},{"time":0.9,"value":-68.28526,"curve":[0.9334992,-68.24553,0.9584856,-64.03485]},{"time":1,"value":-63.96951,"curve":[1.084946,-63.83581,1.2126592,-69.61822]},{"time":1.2666667,"value":-69.4731,"curve":[1.4203016,-69.06029,1.4793247,-59.78715]},{"time":1.5,"value":-54.97464,"curve":[1.5238898,-49.41391,1.645433,-25.872715]},{"time":1.7,"value":-18.445045,"curve":[1.7513837,-11.450745,1.8784248,0]},{"time":2.1333334}]},"stirrup":{"rotate":[{},{"time":0.4333333,"value":-19.63491},{"time":0.8333333,"value":-15.176086},{"time":1.3333334,"value":-5.959549},{"time":1.7666667,"value":-18.15761},{"time":2.1333334}],"translate":[{},{"time":0.4333333,"x":-1.4482117,"y":16.308197,"curve":"stepped"},{"time":1,"x":-1.4482117,"y":16.308197},{"time":2.1333334}]},"stirrup-strap1":{"rotate":[{"value":5.247009}]},"stirrup-strap2":{"rotate":[{"value":-9.39}]},"tail1":{"rotate":[{"curve":[0.0978559,0.12860107,0.203588,-14.757523]},{"time":0.2666667,"value":-14.69107,"curve":[0.45318645,-14.494492,0.5776548,19.55391]},{"time":0.9333333,"value":19.85483,"curve":[1.0803045,19.97901,1.3275964,16.455597]},{"time":1.4333333,"value":9.050812,"curve":[1.5321765,2.128784,1.5645107,-5.760986]},{"time":1.7,"value":-5.737469,"curve":[1.7389126,-5.730705,1.7705745,1.0766144]},{"time":1.8,"value":1.0630646,"curve":[1.8527672,1.0387664,1.955696,-1.6554356]},{"time":2,"value":-1.8114014,"curve":[2.0386894,-1.9476166,2.0797145,-0.0704922]},{"time":2.1333334}]},"tail2":{"rotate":[{"value":-4.334617,"curve":[0.02724747,-1.911229,0.12374917,3.511161]},{"time":0.16666667,"value":6.451683,"curve":[0.2112617,9.507147,0.2775513,10.890963]},{"time":0.3333333,"value":10.986828,"curve":[0.3921465,11.087904,0.38456345,-13.607336]},{"time":0.5,"value":-13.56498,"curve":[0.6143275,-13.52303,0.6361688,-5.753505]},{"time":0.7,"value":-5.758773,"curve":[0.7866581,-5.765921,0.8312959,-10.171103]},{"time":0.9666666,"value":-10.45861,"curve":[1.0723695,-10.683107,1.278833,-8.292423]},{"time":1.3333334,"value":-6.230982,"curve":[1.3893162,-4.11347,1.509047,5.52527]},{"time":1.5333333,"value":9.74646,"curve":[1.5510274,12.821835,1.6192383,27.29642]},{"time":1.6666666,"value":27.26047,"curve":[1.7335726,27.20975,1.762923,9.86193]},{"time":1.8,"value":5.304016,"curve":[1.836345,0.8360586,1.9264506,-9.619552]},{"time":2,"value":-9.489013,"curve":[2.070545,-9.363805,2.091495,-7.253569]},{"time":2.1333334,"value":-4.334617}],"translate":[{"curve":[0.13333334,0,0.4354529,3.441078,0.13333334,0,0.4,0]},{"time":0.5333333,"x":11.881638,"curve":[0.6178824,19.17257,0.840354,41.29581,0.575,0,0.8483064,4.024023]},{"time":0.9666666,"x":41.27171,"y":4.027927,"curve":[1.7800908,41.11648,1.7631627,0.2543793,1.212752,4.030815,1.847584,0.08121013]},{"time":2.1333334}]},"tail3":{"rotate":[{"value":-4.662086,"curve":[0.052957,-3.481148,0.2095054,0.2170353]},{"time":0.2666667,"value":0.22995853,"curve":[0.3313325,0.24457836,0.3368851,-16.206703]},{"time":0.4333333,"value":-16.22443,"curve":[0.5209878,-16.24054,0.5648685,-5.717047]},{"time":0.6666667,"value":-5.725787,"curve":[0.7433082,-5.732372,0.8051463,-9.292898]},{"time":0.8333333,"value":-9.892672,"curve":[0.878223,-10.847854,0.9296847,-11.712997]},{"time":1,"value":-11.849365,"curve":[1.0318416,-11.91013,1.0653205,-10.914192]},{"time":1.1,"value":-10.92153,"curve":[1.1419426,-10.930406,1.1901885,-11.137112]},{"time":1.2333333,"value":-11.211578,"curve":[1.268129,-11.269394,1.2958336,-10.85394]},{"time":1.3333334,"value":-10.843727,"curve":[1.3887686,-10.828629,1.4219222,-12.908347]},{"time":1.4666667,"value":-12.89989,"curve":[1.523473,-12.88915,1.5937836,0.8304853]},{"time":1.6666666,"value":0.9101486,"curve":[1.7215647,0.9701543,1.7630044,-1.008135]},{"time":1.8,"value":-2.9211044,"curve":[1.8370997,-4.839475,1.8893325,-7.185627]},{"time":1.9666667,"value":-7.213832,"curve":[2.038514,-7.240037,2.081385,-5.697861]},{"time":2.1333334,"value":-4.662086}]},"tail4":{"rotate":[{"value":13.37375,"curve":[0.03333333,13.37375,0.10114305,11.829378]},{"time":0.13333334,"value":11.77562,"curve":[0.2006853,11.66315,0.23333333,16.72581]},{"time":0.2666667,"value":16.72581,"curve":[0.2886389,16.72581,0.3161206,16.018597]},{"time":0.3333333,"value":13.791368,"curve":[0.3907864,6.357286,0.4564329,-4.318534]},{"time":0.4666667,"value":-5.606641,"curve":[0.4818689,-7.520118,0.4993798,-10.142548]},{"time":0.5666666,"value":-10.331833,"curve":[0.5757944,-10.35751,0.6156,-10.007652]},{"time":0.6666667,"value":-8.025093,"curve":[0.7809284,-3.746934,0.9350675,3.3823264]},{"time":1,"value":4.134959,"curve":[1.03331,4.521056,1.062827,4.535159]},{"time":1.1333333,"value":4.553679,"curve":[1.1756355,4.564716,1.2207355,4.124315]},{"time":1.2666667,"value":4.178894,"curve":[1.3493437,4.27714,1.4169655,4.993682]},{"time":1.4333333,"value":5.830837,"curve":[1.4655674,7.479477,1.55739,19.48691]},{"time":1.6333333,"value":19.565987,"curve":[1.7754866,19.714,1.8569134,7.438119]},{"time":1.9666667,"value":7.459961,"curve":[2.044623,7.475476,2.091667,13.37375]},{"time":2.1333334,"value":13.37375}]},"tail5":{"rotate":[{"value":5.295868,"curve":[0.03588034,7.506984,0.23333333,22.33003]},{"time":0.2666667,"value":22.33003,"curve":[0.325,22.33003,0.4138873,-17.460617]},{"time":0.5,"value":-17.34297,"curve":[0.5543965,-17.26865,0.6219154,-8.556446]},{"time":0.6666667,"value":-3.29901,"curve":[0.6802347,-1.7580376,0.718115,2.892038]},{"time":0.8,"value":2.987808,"curve":[0.870196,3.069906,0.877712,-6.268285]},{"time":0.9333333,"value":-6.300298,"curve":[0.9527651,-6.311482,1.021759,-0.18395662]},{"time":1.0666667,"value":-0.19351697,"curve":[1.141287,-0.20940447,1.247132,-1.6653378]},{"time":1.3333334,"value":-1.6762238,"curve":[1.4453996,-1.6903772,1.53279,6.198437]},{"time":1.6333333,"value":6.153686,"curve":[1.7826977,6.08721,1.7961364,2.2979746]},{"time":1.9333333,"value":2.266754,"curve":[2.022455,2.4080124,2.089926,3.957275]},{"time":2.1333334,"value":5.295868}]},"tail6":{"rotate":[{"value":5.295868,"curve":[0.02594737,7.490011,0.149726,12.895835]},{"time":0.2,"value":17.26678,"curve":[0.2511039,21.70988,0.291438,24.53427]},{"time":0.3333333,"value":24.59404,"curve":[0.4030219,24.69348,0.3764442,-22.00688]},{"time":0.5333333,"value":-21.871376,"curve":[0.6012933,-21.81268,0.6974703,-13.33023]},{"time":0.7333333,"value":-10.10777,"curve":[0.7480975,-8.781152,0.8634988,4.362808]},{"time":0.9333333,"value":4.218385,"curve":[0.9738322,4.13463,1.062874,1.2221974]},{"time":1.1,"value":1.3224597,"curve":[1.1447858,1.44341,1.195616,6.120721]},{"time":1.2333333,"value":6.081132,"curve":[1.2788322,6.033375,1.3242416,-4.694775]},{"time":1.4333333,"value":-5.047866,"curve":[1.505085,-5.280101,1.608364,-1.447765]},{"time":1.6333333,"value":0.09803596,"curve":[1.6470526,0.9473765,1.721972,20.385527]},{"time":1.8,"value":20.34411,"curve":[1.8877468,20.297533,1.8782744,-3.596811]},{"time":2,"value":-3.5828874,"curve":[2.055051,-3.576591,2.120787,3.565635]},{"time":2.1333334,"value":5.295868}]},"tail7":{"rotate":[{"value":-10.887794,"curve":[0.0235312,-9.389612,0.08252365,2.5369706]},{"time":0.1,"value":5.375089,"curve":[0.12042414,8.69192,0.2007472,19.39497]},{"time":0.2666667,"value":19.386515,"curve":[0.3258515,19.378923,0.3730606,10.74694]},{"time":0.4,"value":6.644067,"curve":[0.4249138,2.849691,0.5273042,-17.301966]},{"time":0.6,"value":-17.314266,"curve":[0.7291205,-17.336113,0.7506107,6.296881]},{"time":0.8,"value":6.384072,"curve":[0.8680016,6.504122,0.9142229,-11.691764]},{"time":0.9666666,"value":-11.401011,"curve":[0.994957,-11.244166,1.0443107,-1.318622]},{"time":1.1,"value":-1.443137,"curve":[1.1428783,-1.5390085,1.1802417,-10.371634]},{"time":1.2666667,"value":-10.233667,"curve":[1.2945107,-10.189218,1.340382,-3.842218]},{"time":1.4333333,"value":-4.097252,"curve":[1.552895,-4.425299,1.584771,-16.607723]},{"time":1.6333333,"value":-16.61046,"curve":[1.6880262,-16.61354,1.69559,23.73841]},{"time":1.7333333,"value":23.7084,"curve":[1.7978796,23.65709,1.8703463,16.49545]},{"time":1.9,"value":10.294264,"curve":[1.922576,5.57317,1.9778734,-13.058318]},{"time":2.0666666,"value":-13.0309,"curve":[2.0811255,-13.05818,2.1061864,-12.375843]},{"time":2.1333334,"value":-10.887794}]},"tail8":{"rotate":[{"value":-10.887794,"curve":[0.08107672,-11.054156,0.1474136,13.076495]},{"time":0.16666667,"value":15.430672,"curve":[0.18629894,17.831213,0.2684161,21.76858]},{"time":0.3333333,"value":21.830173,"curve":[0.4715358,21.9613,0.4540574,-21.065117]},{"time":0.5,"value":-21.252335,"curve":[0.543718,-20.58008,0.551063,-10.782255]},{"time":0.6,"value":-10.87898,"curve":[0.618422,-10.915388,0.6512221,-17.90029]},{"time":0.6666667,"value":-17.69105,"curve":[0.6935866,-17.32635,0.7954044,1.2363343]},{"time":0.8333333,"value":3.931407,"curve":[0.8584394,5.715341,0.8859028,7.580194]},{"time":0.9333333,"value":7.553411,"curve":[0.9822417,7.525797,0.9483679,-9.490816]},{"time":1.0333333,"value":-9.58653,"curve":[1.0830605,-9.642548,1.1002713,-4.470876]},{"time":1.1333333,"value":-4.44548,"curve":[1.195046,-4.398073,1.1977456,-11.21634]},{"time":1.2666667,"value":-11.137595,"curve":[1.3138967,-11.083633,1.35857,-8.006507]},{"time":1.4666667,"value":-8.414444,"curve":[1.5228763,-8.62657,1.6033622,-26.324766]},{"time":1.6666666,"value":-26.15625,"curve":[1.7016213,-26.0632,1.7289083,19.383307]},{"time":1.8,"value":19.13954,"curve":[1.8624176,18.925514,1.9556353,-1.6937034]},{"time":1.9666667,"value":-3.180139,"curve":[2.005982,-8.477783,2.091667,-10.763137]},{"time":2.1333334,"value":-10.887794}]},"tail9":{"rotate":[{"value":-10.887794,"curve":[0.03333333,-10.887794,0.10921884,-16.09655]},{"time":0.16666667,"value":-15.685898,"curve":[0.1996396,-15.450197,0.2629067,23.99578]},{"time":0.3,"value":23.954754,"curve":[0.3411885,23.9092,0.3799172,20.42121]},{"time":0.4,"value":13.7229,"curve":[0.4362244,1.6408377,0.469307,-22.41737]},{"time":0.5666666,"value":-22.06399,"curve":[0.5924227,-21.970505,0.6186272,-12.649518]},{"time":0.6333333,"value":-12.971626,"curve":[0.6491,-13.316966,0.6724581,-23.186893]},{"time":0.7333333,"value":-23.76969,"curve":[0.7525905,-23.95405,0.7838073,18.09805]},{"time":0.8333333,"value":18.042545,"curve":[0.8964938,17.97176,0.9680453,-8.436413]},{"time":1.0666667,"value":-8.29769,"curve":[1.101658,-8.248473,1.1466887,1.3191142]},{"time":1.2,"value":1.292991,"curve":[1.2250096,1.2807344,1.263972,-9.041816]},{"time":1.3333334,"value":-9.068048,"curve":[1.359453,-9.077927,1.3669448,-0.797507]},{"time":1.4,"value":-0.9342342,"curve":[1.4503263,-1.1424005,1.4846607,-13.554214]},{"time":1.5333333,"value":-13.671535,"curve":[1.5892377,-13.806288,1.5917895,-4.954113]},{"time":1.6333333,"value":-4.902163,"curve":[1.658858,-4.870241,1.6722444,-6.817098]},{"time":1.7,"value":-6.850044,"curve":[1.731827,-6.887824,1.740983,23.578936]},{"time":1.8,"value":23.61334,"curve":[1.8554654,23.64568,1.9417305,-2.5390525]},{"time":1.9666667,"value":-7.743812,"curve":[1.9793396,-10.38897,2.030337,-19.23341]},{"time":2.0666666,"value":-19.56235,"curve":[2.0921624,-19.79093,2.11625,-10.887794]},{"time":2.1333334,"value":-10.887794}]},"tail10":{"rotate":[{"value":-10.887794,"curve":[0.03333333,-10.887794,0.11136228,-30.73444]},{"time":0.16666667,"value":-30.89851,"curve":[0.22909766,-31.08372,0.3345717,27.398733]},{"time":0.4,"value":27.60249,"curve":[0.4387912,27.72329,0.5239871,-27.926867]},{"time":0.5666666,"value":-27.875336,"curve":[0.6204422,-27.810406,0.6638464,-24.25439]},{"time":0.7,"value":-20.92544,"curve":[0.7340456,-17.79059,0.8142069,5.463101]},{"time":0.8333333,"value":13.09425,"curve":[0.8421618,16.61665,0.8702538,28.266706]},{"time":0.9,"value":28.51031,"curve":[0.947181,28.896694,0.9849344,-19.50522]},{"time":1,"value":-22.1182,"curve":[1.0099136,-23.83762,1.0382355,-31.086596]},{"time":1.0666667,"value":-31.14413,"curve":[1.103398,-31.218464,1.1330265,19.54861]},{"time":1.1666666,"value":19.349985,"curve":[1.200527,19.15007,1.213024,-14.839756]},{"time":1.3,"value":-14.9352,"curve":[1.3470044,-14.98678,1.3702636,11.365088]},{"time":1.4,"value":11.305338,"curve":[1.432146,11.240744,1.522879,-27.58582]},{"time":1.5333333,"value":-31.267727,"curve":[1.565316,-42.53161,1.5879034,-42.01016]},{"time":1.6,"value":-42.00538,"curve":[1.6398517,-41.98963,1.7533908,-25.24106]},{"time":1.7666667,"value":-18.253075,"curve":[1.778062,-12.25486,1.820261,14.243736]},{"time":1.9,"value":14.817352,"curve":[1.9286662,14.807444,2.040982,-14.29617]},{"time":2.0666666,"value":-14.14857,"curve":[2.095677,-13.981855,2.1099014,-10.932808]},{"time":2.1333334,"value":-10.887794}]},"tongue1":{"rotate":[{"value":16.24782,"curve":[0.05,16.24782,0.19731694,16.23678]},{"time":0.2,"value":15.93148,"curve":[0.2439535,10.930195,0.329788,-0.6917724]},{"time":0.3666667,"value":-0.5769348,"curve":[0.4322018,-0.3728638,0.4807069,1.3966093]},{"time":0.5333333,"value":5.312149,"curve":[0.5405704,5.850595,0.5695072,25.10503]},{"time":0.6,"value":28.19681,"curve":[0.611314,29.32109,0.6226902,14.346]},{"time":0.6333333,"value":15.321213,"curve":[0.6605025,17.810677,0.6833333,18.18604]},{"time":0.7,"value":18.18604,"curve":[0.7333333,18.18604,0.8,13.377785]},{"time":0.8333333,"value":13.377785,"curve":[0.8666667,13.377785,0.9374908,14.838348]},{"time":0.9666666,"value":15.714684,"curve":[1.0189596,17.28539,1.044851,19.006424]},{"time":1.0666667,"value":20.57366,"curve":[1.0844607,21.852005,1.148314,23.511024]},{"time":1.1666666,"value":23.291855,"curve":[1.2196977,22.65854,1.2416667,16.58261]},{"time":1.2666667,"value":16.58261,"curve":[1.2833333,16.58261,1.3274583,19.59871]},{"time":1.3333334,"value":19.857155,"curve":[1.3760072,21.73437,1.4083333,22.43627]},{"time":1.4333333,"value":22.43627,"curve":[1.4583334,22.43627,1.4809203,19.05636]},{"time":1.5333333,"value":19.01325,"curve":[1.574961,18.979027,1.6555326,22.901566]},{"time":1.7,"value":22.93474,"curve":[1.7762256,22.99161,1.875,16.24782]},{"time":1.9333333,"value":16.24782}],"translate":[{"x":-22.370605,"y":13.319153}],"scale":[{"time":0.2,"curve":[0.3,1,0.5,1.16,0.3,1,0.5,1]},{"time":0.6,"x":1.16,"curve":[0.875,1.16,1.425,1,0.875,1,1.425,1]},{"time":1.7}]},"tongue2":{"rotate":[{"curve":[0.04166667,0,0.19166666,-3.1849895]},{"time":0.2,"value":-3.1849895,"curve":[0.21666667,-3.1849895,0.25,52.29479]},{"time":0.2666667,"value":52.29479,"curve":[0.3333333,52.29479,0.5064866,33.60704]},{"time":0.5333333,"value":17.71193,"curve":[0.5453267,10.61101,0.5746622,-38.38264]},{"time":0.6,"value":-63.26466,"curve":[0.61311,-75.70568,0.625,-74.25346]},{"time":0.6333333,"value":-74.25346,"curve":[0.65,-74.25346,0.6663462,-50.56634]},{"time":0.7,"value":-42.92049,"curve":[0.71541,-39.41947,0.8025017,-33.618]},{"time":0.8333333,"value":-32.9709,"curve":[0.8835494,-31.91696,0.933775,-31.56175]},{"time":0.9666666,"value":-31.285515,"curve":[1.012301,-30.902264,1.0505092,-29.9249]},{"time":1.0666667,"value":-28.950514,"curve":[1.1047976,-26.65101,1.1416667,-20.34272]},{"time":1.1666666,"value":-20.34272,"curve":[1.1916667,-20.34272,1.2416667,-24.25518]},{"time":1.2666667,"value":-24.25518,"curve":[1.2833333,-24.25518,1.3166667,-19.867897]},{"time":1.3333334,"value":-19.867897,"curve":[1.3583333,-19.867897,1.4278275,-21.71007]},{"time":1.4333333,"value":-22.109135,"curve":[1.4806095,-25.535713,1.5083333,-36.17261]},{"time":1.5333333,"value":-36.17261,"curve":[1.575,-36.17261,1.6484838,-17.577244]},{"time":1.7,"value":-13.317122,"curve":[1.7479416,-9.352608,1.8611164,-3.444435]},{"time":1.9333333,"value":-1.5409312,"curve":[1.9748166,-0.4475107,2.083333,0]},{"time":2.1333334}],"translate":[{"time":0.2,"curve":[0.2833333,0,0.423484,-0.5401063,0.2833333,0,0.43526375,0.9640003]},{"time":0.5333333,"x":6.19,"y":1.3931373,"curve":[0.5673533,8.274288,0.6325031,45.2633,0.555443,1.4898853,0.619764,1.67]},{"time":0.6666667,"x":57.07409,"y":1.67,"curve":[0.7060151,70.67735,0.7596168,94.13946,0.729206,1.67,0.7641628,1.67]},{"time":0.8333333,"x":94.08713,"y":1.67,"curve":[1.2097106,93.82004,1.097769,7.053627,1.1950715,1.67,1.6756943,1.67]},{"time":1.9333333,"x":6.189998,"y":1.67,"curve":[1.9833333,6.13832,2.083333,0,1.9833333,1.67,2.083333,0]},{"time":2.1333334}]},"tongue3":{"rotate":[{"curve":[0.04166667,0,0.14152163,-1.2927217]},{"time":0.2,"value":4.21148,"curve":[0.2093745,5.093838,0.25,52.29478]},{"time":0.2666667,"value":52.29478,"curve":[0.3333333,52.29478,0.49132445,43.05017]},{"time":0.5333333,"value":17.71193,"curve":[0.5511885,6.942348,0.5773143,-41.43917]},{"time":0.6,"value":-50.21929,"curve":[0.6128715,-55.01668,0.6245,-24.1038]},{"time":0.6333333,"value":-24.1038,"curve":[0.65,-24.1038,0.6833333,52.66652]},{"time":0.7,"value":52.66652,"curve":[0.7333333,52.66652,0.8,-50.9084]},{"time":0.8333333,"value":-50.9084,"curve":[0.8666667,-50.9084,0.9333333,36.54382]},{"time":0.9666666,"value":36.54382,"curve":[0.9916667,36.54382,1.0416666,-47.3406]},{"time":1.0666667,"value":-47.3406,"curve":[1.0916667,-47.3406,1.1416667,5.527171]},{"time":1.1666666,"value":5.527171,"curve":[1.1916667,5.527171,1.2417243,-19.24623]},{"time":1.2666667,"value":-19.93944,"curve":[1.298459,-20.823017,1.31335,-13.204636]},{"time":1.3333334,"value":-2.025341,"curve":[1.368133,17.442665,1.4083333,54.04343]},{"time":1.4333333,"value":54.04343,"curve":[1.4583334,54.04343,1.5187422,43.78913]},{"time":1.5333333,"value":35.48856,"curve":[1.5814824,8.097644,1.6583333,-36.24051]},{"time":1.7,"value":-36.24051,"curve":[1.7583333,-36.24051,1.875,13.613646]},{"time":1.9333333,"value":13.613646,"curve":[1.9833333,13.613646,2.083333,0]},{"time":2.1333334}],"translate":[{"time":0.2,"curve":[0.2833333,0,0.45,11.48,0.2833333,0,0.45,3.7]},{"time":0.5333333,"x":11.48,"y":3.7},{"time":2.1333334}]},"torso1":{"rotate":[{"curve":[0.02902778,0,0.03566468,-1.3995876]},{"time":0.1,"value":-1.4109492,"curve":[0.142555,-1.4184647,0.2874364,10.795073]},{"time":0.3333333,"value":10.72547,"curve":[0.478584,10.5129,0.5312275,6.789645]},{"time":0.6,"curve":[0.6242153,-2.585026,0.6792565,-4.751965]},{"time":0.7,"value":-4.898565,"curve":[0.722874,-5.060221,0.75,-2.596887]},{"time":0.7666666,"value":-2.596887,"curve":[0.7833333,-2.596887,0.8141343,-4.719164]},{"time":0.8333333,"value":-4.699416,"curve":[0.857571,-4.674486,0.8573818,-1.2003026]},{"time":0.9,"value":-1.1323304,"curve":[0.9264381,-1.0901637,1,-3.267856]},{"time":1.0333333,"value":-3.267856,"curve":[1.061183,-3.267856,1.1000997,0.2480283]},{"time":1.1333333,"value":0.23838186,"curve":[1.1791456,0.2250843,1.1988786,-1.3642936]},{"time":1.2333333,"value":-1.3622813,"curve":[1.294822,-1.3586903,1.2897446,1.4917893]},{"time":1.3666667,"value":1.4711127,"curve":[1.4093144,1.459649,1.464303,-1.366084]},{"time":1.5,"value":-1.360941,"curve":[1.6066422,-1.3003783,1.7543604,1.3907976]},{"time":1.9666667,"value":1.3565898,"curve":[2.0083334,1.3565898,2.091667,0]},{"time":2.1333334}]},"torso2":{"rotate":[{"curve":[0.09296644,0.5980453,0.15008903,1.5964775]},{"time":0.2,"value":1.607876,"curve":[0.2903165,1.628498,0.346398,-1.8958054]},{"time":0.3666667,"value":-3.525261,"curve":[0.3887001,-5.296585,0.5075546,-20.035727]},{"time":0.5333333,"value":-22.31965,"curve":[0.5591856,-24.61009,0.5960847,-27.56911]},{"time":0.7,"value":-27.53514,"curve":[0.7584508,-27.528994,0.7544388,-20.484827]},{"time":0.8,"value":-20.35981,"curve":[0.8310718,-20.27455,0.8507162,-21.291487]},{"time":0.9,"value":-21.25256,"curve":[0.9631203,-21.2027,1.021381,-14.888342]},{"time":1.0666667,"value":-14.924967,"curve":[1.1410786,-14.985147,1.167264,-18.094925]},{"time":1.2666667,"value":-18.02506,"curve":[1.3846258,-17.942156,1.6047806,-5.075062]},{"time":1.6666666,"value":-5.020702,"curve":[1.7139707,-4.979152,1.7511934,-7.533794]},{"time":1.8,"value":-7.522522,"curve":[1.9610817,-6.978143,2.05,-0.5360762]},{"time":2.1333334}],"translate":[{"curve":[0.05,0,0.1674811,10.499336,0.05,0,0.15,15.962555]},{"time":0.2,"x":12.61811,"y":15.962555,"curve":[0.2643063,16.80802,0.35,19.15876,0.25,15.962555,0.3718661,-12.74114]},{"time":0.4,"x":19.15876,"y":-15.960267,"curve":[0.45,19.15876,0.5649978,14.265984,0.46044815,-22.876825,0.55,-27.558535]},{"time":0.6,"x":13.67115,"y":-27.558535,"curve":[0.655033,12.735908,0.7070002,12.17092,0.6416666,-27.558535,0.7027367,-24.234194]},{"time":0.7666666,"x":12.05494,"y":-14.93271,"curve":[0.7979205,11.99418,0.817345,12.593483,0.8109325,-8.492263,0.8166666,0.8691613]},{"time":0.8333333,"x":13.399864,"y":0.8691613,"curve":[0.8666646,15.08094,0.8771947,16.880226,0.8583333,0.8691613,0.9083333,-11.58551]},{"time":0.9333333,"x":18.37174,"y":-11.58551,"curve":[0.9568554,18.99668,1.0114112,19.963844,0.9583333,-11.58551,1.0083333,-1.9014903]},{"time":1.0333333,"x":20.164146,"y":-1.9014903,"curve":[1.072327,20.52044,1.1615318,20.9477,1.075,-1.9014903,1.1583333,-5.890229]},{"time":1.2,"x":21.21438,"y":-5.890229,"curve":[1.244967,21.526115,1.375,25.98818,1.2583333,-5.890229,1.375,3.452758]},{"time":1.4333333,"x":25.98818,"y":3.452758,"curve":[1.5,25.98818,1.6454855,25.801323,1.5,3.452758,1.6462573,1.310396]},{"time":1.7,"x":25.17965,"y":0.9491566,"curve":[1.7835643,24.22669,2.025,0,1.8160793,0.16891345,2.025,0]},{"time":2.1333334}],"scale":[{"time":0.5333333,"curve":[0.55,1,0.6569302,1.0902072,0.55,1,0.6833333,0.9656651]},{"time":0.7,"x":1.0933114,"y":0.9656651,"curve":[0.772071,1.0908703,0.8,0.9875225,0.7736851,0.9681063,0.8,1.0428554]},{"time":0.8333333,"x":0.9875225,"y":1.0428554,"curve":[0.8666667,0.9875225,0.9826021,1.001655,0.8666667,1.0428554,0.9913633,0.9991726]},{"time":1.1333333}]}},"ik":{"front-leg-ik":[{"softness":73.5,"bendPositive":false}],"spineboy-back-arm-ik":[{"softness":15.4,"stretch":true}],"spineboy-front-arm-ik":[{"softness":15,"stretch":true}],"spineboy-front-leg-ik":[{"softness":19.9,"bendPositive":false}]},"drawOrder":[{"offsets":[{"slot":"raptor-horn","offset":4},{"slot":"front-thigh","offset":-5}]}]},"walk":{"slots":{"raptor-jaw-inside":{"rgba":[{"color":"646464ff"},{"time":0.6333333,"color":"808080ff"},{"time":1.2666667,"color":"646464ff"}]},"tail-shadow":{"rgba":[{"color":"00000000","curve":[0.15833333,0,0.4416667,0,0.15833333,0,0.4416667,0,0.15833333,0,0.4416667,0,0.15833333,0,0.4411699,0.2010742]},{"time":0.6,"color":"00000033","curve":[0.6333333,0,1.075,0,0.6333333,0,1.075,0,0.6333333,0,1.075,0,0.805408,0.19957875,1.075,0]},{"time":1.2333333,"color":"00000000"}],"attachment":[{"name":"raptor-tail-shadow"}]}},"bones":{"back-arm1":{"rotate":[{"value":36.77227,"curve":[0.2751137,36.57336,0.4642867,23.84649]},{"time":0.6333333,"value":23.85933,"curve":[0.8913822,23.90906,1.0346487,36.67918]},{"time":1.2666667,"value":36.77227}],"translate":[{"x":-20.37006,"y":-12.602356,"curve":[0.09166667,-20.37006,0.5666666,-30.845356,0.2495509,-12.158897,0.5083181,-9.489815]},{"time":0.6333333,"x":-30.845356,"y":-9.15722,"curve":[0.725,-30.845356,1.142931,-20.5053,0.7936452,-9.15722,1.085896,-12.804863]},{"time":1.2666667,"x":-20.37006,"y":-12.602356}]},"back-arm2":{"rotate":[{"value":-28.1269,"curve":[0.31985295,-28.065,0.43374065,0.4225082]},{"time":0.6333333,"value":0.3060379,"curve":[0.9411928,0.12635803,0.9680537,-27.94835]},{"time":1.2666667,"value":-28.1269}]},"back-foot-target":{"rotate":[{"value":-80.7545,"curve":[0.197792,-90.07873,0.22761606,-92.20424]},{"time":0.3666667,"value":-92.33972,"curve":[0.4201446,-92.39182,0.5166666,-45.34135]},{"time":0.5666666,"value":-45.34135,"curve":[0.6548621,-45.71139,1.0972697,-71.90266]},{"time":1.2666667,"value":-80.7545}],"translate":[{"x":-187.60617,"y":-15.47,"curve":[0.0494824,-223.6526,0.09322976,-245.68074,0.09157905,-17.15011,0.09478014,-1.0526447]},{"time":0.13333334,"x":-245.95016,"y":31.30358,"curve":[0.1660778,-245.37894,0.3148446,6.478641,0.17254086,64.20898,0.2277822,125.6373]},{"time":0.3666667,"x":86.50425,"y":124.4033,"curve":[0.3819116,110.04597,0.5175013,358.2166,0.4621489,123.16925,0.5493082,44.44737]},{"time":0.5666666,"x":361.9186,"y":29.90748,"curve":[0.5833333,361.9186,0.5794058,373.34015,0.597161,4.36466,0.602749,0.794281]},{"time":0.6333333,"x":316.7191,"y":-26.42},{"time":1.2666667,"x":-187.60617,"y":-15.47}]},"back-foot2":{"rotate":[{"curve":[0.01933333,0,0.04569689,0.6839003]},{"time":0.06666667,"value":-2.419204,"curve":[0.12680645,-11.889185,0.157155,-75.22167]},{"time":0.3,"value":-74.34938,"curve":[0.3715805,-74.40403,0.4402023,-55.44566]},{"time":0.4666667,"value":-38.50927,"curve":[0.4882117,-24.721115,0.5115831,30.13671]},{"time":0.6,"value":30.17,"curve":[0.6305232,30.181494,0.649115,17.16436]},{"time":0.6666667,"value":2.0999985,"curve":[0.7583333,2.0999985,1.2,0]},{"time":1.2666667}]},"back-hand":{"rotate":[{"value":-26.17079,"curve":[0.07692923,-26.22664,0.16470756,-15.076256]},{"time":0.2666667,"value":-15.067184,"curve":[0.3481869,-15.05993,0.5140942,-27.32135]},{"time":0.6333333,"value":-27.36962,"curve":[0.7447146,-27.36962,0.8441372,-14.986847]},{"time":1,"value":-15.022926,"curve":[1.116652,-15.049934,1.1043887,-26.339195]},{"time":1.2666667,"value":-26.17079}]},"back-leg-target":{"rotate":[{"value":2.3937035}],"translate":[{"x":-24.542854,"y":15.120003,"curve":[0.1353987,-24.48733,0.4168997,-40.42364,0.1205001,14.560837,0.3273902,-140.88464]},{"time":0.5666666,"x":-40.21,"y":-141.76224,"curve":[0.7051599,-40.01246,1.1466547,-24.388237,0.939121,-143.1283,1.1215413,15.120003]},{"time":1.2666667,"x":-24.542854,"y":15.120003}]},"bone":{"rotate":[{"value":1.999298,"curve":[0.031073196,3.384813,0.07503068,4.994367]},{"time":0.1,"value":5.00645,"curve":[0.19372344,5.05181,0.3982888,-0.8754844]},{"time":0.4666667,"value":-0.8263778,"curve":[0.5376015,-0.7754288,0.6714164,4.88233]},{"time":0.7333333,"value":4.88059,"curve":[0.8463365,4.877414,1.031504,-0.5746498]},{"time":1.1,"value":-0.5746498,"curve":[1.1416665,-0.5746498,1.20122,0.03919983]},{"time":1.2666667,"value":1.999298}]},"bone2":{"rotate":[{"curve":[0.01860466,-8.93029,0.06168555,-21.67378]},{"time":0.13333334,"value":-21.67378,"curve":[0.22966486,-21.67378,0.345699,21.38647]},{"time":0.4666667,"value":21.3175,"curve":[0.6390813,21.21919,0.6260325,-21.469444]},{"time":0.7666666,"value":-21.67378,"curve":[0.8629582,-21.813686,1.0129615,21.010893]},{"time":1.1,"value":21.3175,"curve":[1.2040967,21.68421,1.2447762,9.93652]},{"time":1.2666667}]},"bone3":{"rotate":[{"curve":[0.08333333,0,0.25,11.453667]},{"time":0.3333333,"value":11.453667,"curve":[0.4074411,11.393172,0.547011,0.263032]},{"time":0.6333333,"value":0.1823721,"curve":[0.7083333,0.1823721,0.8583333,11.290013]},{"time":0.9333333,"value":11.290013,"curve":[1.0166667,11.290013,1.1833333,0]},{"time":1.2666667}]},"bone4":{"rotate":[{"curve":[0,-6.150852,0.04389891,-10.864002]},{"time":0.1,"value":-11.057623,"curve":[0.16141137,-11.26957,0.266952,10.58989]},{"time":0.3666667,"value":10.49433,"curve":[0.5537008,10.315102,0.6026342,-10.610802]},{"time":0.7333333,"value":-10.980152,"curve":[0.7818655,-10.933067,0.9490458,10.300083]},{"time":1.0333333,"value":10.414295,"curve":[1.1438903,10.564106,1.2548946,4.549141]},{"time":1.2666667}]},"bone5":{"rotate":[{"value":6.228813,"curve":[0.04166667,3.4108195,0.10526004,3.0240364]},{"time":0.16666667,"value":3.0313225,"curve":[0.2218738,3.037876,0.3339632,11.982197]},{"time":0.4333333,"value":11.933948,"curve":[0.560912,11.871998,0.661861,3.233929]},{"time":0.8,"value":3.21698,"curve":[0.8488318,3.210987,1.0157125,11.919857]},{"time":1.1,"value":12.03407,"curve":[1.1622804,12.118462,1.2226174,9.20795]},{"time":1.2666667,"value":6.228813}]},"front-arm":{"translate":[{"y":-5.279691},{"time":0.13333334,"x":-3.608452,"y":-8.364366},{"time":0.3666667,"x":-8.0522,"y":-5.529993},{"time":0.6333333},{"time":1,"x":-7.446411,"y":-1.9905353},{"time":1.2666667,"y":-5.279691}]},"front-arm1":{"rotate":[{"value":-348.3543,"curve":[0.3052788,-348.3922,0.451661,-330.099]},{"time":0.6333333,"value":-329.4464,"curve":[0.9265742,-329.6639,0.991685,-347.9243]},{"time":1.2666667,"value":-348.3543}],"translate":[{"x":8.892433,"y":9.557137,"curve":[0.06524852,11.506714,0.2761018,24.327354,0.11106679,9.616207,0.3016772,1.6694565]},{"time":0.3666667,"x":24.1,"y":-1.4700012,"curve":[0.4792544,23.817375,0.5445565,23.42357,0.4238247,-4.231148,0.5334853,-7.490936]},{"time":0.6333333,"x":20.65,"y":-7.550003,"curve":[0.7235996,17.82991,0.9083333,4.354172,0.7249648,-7.604202,0.9025225,-1.55587]},{"time":1,"x":4.354172,"y":2.308952,"curve":[1.0583333,4.354172,1.196691,6.136856,1.0522636,4.381111,1.169647,9.439003]},{"time":1.2666667,"x":8.892433,"y":9.557137}]},"front-arm2":{"rotate":[{"value":20.464874,"curve":[0.09166667,20.464874,0.2901846,10.443047]},{"time":0.3666667,"value":4.663872,"curve":[0.4926862,-4.85846,0.5396588,-10.999512]},{"time":0.6333333,"value":-11.137123,"curve":[0.724848,-11.27156,0.933885,1.2197342]},{"time":1,"value":6.770675,"curve":[1.0417145,10.272995,1.150302,20.25846]},{"time":1.2666667,"value":20.464874}]},"front-bracer":{"rotate":[{"value":52.98509}]},"front-foot-target":{"rotate":[{"curve":[0.09166667,0,0.2698408,-32.52907]},{"time":0.3666667,"value":-51.26,"curve":[0.41139075,-59.91185,0.5585254,-84.03918]},{"time":0.6333333,"value":-84.28566,"curve":[1.183196,-83.7927,1.1289008,0.2464752]},{"time":1.2666667}],"translate":[{"x":381.9205,"y":36.5},{"time":0.6333333,"x":-134.71953,"y":37.42},{"time":0.7,"x":-171.194,"y":126.0673,"curve":[0.7333333,-171.194,0.7978563,-142.13623,0.7404295,182.6274,0.8,238.01]},{"time":0.8333333,"x":-70.40814,"y":238.01,"curve":[0.8453391,-46.1346,1.125,418.073,0.9831165,235.61917,1.129386,141.4286]},{"time":1.1666666,"x":418.073,"y":115.17888,"curve":[1.1916667,418.073,1.230794,404.2506,1.2024548,89.98013,1.2004335,84.9607]},{"time":1.2666667,"x":381.9205,"y":36.5}]},"front-foot2":{"rotate":[{"value":36.9},{"time":0.06666667,"value":7.880001},{"time":0.13333334,"value":4.67},{"time":0.5,"value":6.807376,"curve":[0.5716704,7.036451,0.6047582,6.969624]},{"time":0.6333333,"value":6.253876,"curve":[0.6857226,4.192831,0.708209,-105.8836]},{"time":0.8,"value":-104.63252,"curve":[0.9552174,-102.90247,1.1883248,34.6422]},{"time":1.2666667,"value":36.9}]},"front-foot3":{"rotate":[{"value":-1.65},{"time":0.1,"value":-3.94,"curve":[0.15833333,-3.94,0.3083333,-3.82]},{"time":0.3666667,"value":-3.82,"curve":[0.4333333,-3.82,0.5113345,-6.363767]},{"time":0.6333333,"value":-6.61921,"curve":[0.7008976,-7.046915,0.6874541,24.835247]},{"time":0.7333333,"value":25.102686,"curve":[0.7664444,25.102686,0.820545,-23.090506]},{"time":0.8666667,"value":-22.95808,"curve":[0.9753489,-22.64603,1.1394945,10.93]},{"time":1.2,"value":10.93,"curve":[1.2166667,10.93,1.2666667,5.946402]},{"time":1.2666667,"value":-1.6499994}]},"front-hand":{"rotate":[{"value":-60.69881,"curve":[0.3177126,-60.67625,0.4418697,-5.997547]},{"time":0.6333333,"value":-6.016456,"curve":[0.8469497,-6.037544,1.0756748,-60.23875]},{"time":1.2666667,"value":-60.69881}]},"front-hand2":{"rotate":[{"curve":[0.09166667,0,0.275,15.623224]},{"time":0.3666667,"value":15.623224,"curve":[0.4333333,15.623224,0.5666666,0]},{"time":0.6333333,"curve":[0.7333333,0,0.9333333,15.623224]},{"time":1.0333333,"value":15.623224,"curve":[1.0916667,15.623224,1.2083334,0]},{"time":1.2666667}]},"front-leg-target":{"translate":[{"x":-18.050003,"y":-2.8899994,"curve":[0.13470036,-18.70137,0.2855579,-40.73442,0.1714735,-2.563446,0.4156601,-51.2885]},{"time":0.5333333,"x":-42.2,"y":-52.26814,"curve":[0.5583333,-42.2,0.5684561,-44.03053,0.5583333,-52.26814,0.6083333,-22.52066]},{"time":0.6333333,"x":-36.87021,"y":-22.52066,"curve":[0.7023075,-29.257713,0.7833333,-26.3168,0.6833333,-22.52066,0.7633683,-44.02504]},{"time":0.8333333,"x":-26.3168,"y":-72.36592,"curve":[0.875,-26.3168,0.9385923,-42.97911,0.854641,-80.9971,0.9160584,-109.88352]},{"time":1,"x":-42.64162,"y":-109.9932,"curve":[1.1756015,-42.56187,1.220981,-18.421425,1.1800725,-110.24288,1.2170283,-3.3893585]},{"time":1.2666667,"x":-18.050003,"y":-2.8899994}]},"front-leg1":{"translate":[{"curve":[0.01666667,0,0.29999775,0.007919312,0.01666667,0,0.2927009,13.19618]},{"time":0.3666667,"x":-0.2714291,"y":13.897142,"curve":[0.4596978,-0.6612377,0.5477885,-1.216528,0.4404044,14.595942,0.5700379,15.769645]},{"time":0.6333333,"x":-2.2484016,"y":16.951767,"curve":[0.7050308,-3.113245,0.7833333,-4.75,0.6974753,18.149706,0.7833333,31.94]},{"time":0.8333333,"x":-4.75,"y":31.94,"curve":[0.875,-4.75,0.9632657,-4.498554,0.875,31.94,0.9853957,27.755686]},{"time":1,"x":-3.799999,"y":25.551996,"curve":[1.0702482,-2.464119,1.2,0,1.0330793,20.56057,1.2,0]},{"time":1.2666667}]},"gun":{"rotate":[{"value":-11.68,"curve":[0.02970148,-14.01435,0.17744137,-31.1601]},{"time":0.3,"value":-31.1601,"curve":[0.3678933,-31.1601,0.4750371,-9.464455]},{"time":0.5333333,"value":-9.582458,"curve":[0.736516,-9.99376,0.7699748,-31.38497]},{"time":0.9333333,"value":-31.11078,"curve":[0.9916667,-31.11078,1.1083333,-9.582458]},{"time":1.1666666,"value":-9.582458,"curve":[1.1916667,-9.582458,1.236022,-9.68399]},{"time":1.2666667,"value":-11.68}],"translate":[{"curve":[0.04186909,-0.3429089,0.09751463,-0.4470978,0.03866152,-4.021851,0.09751463,-6.859924]},{"time":0.13333334,"x":-0.4470978,"y":-6.859924,"curve":[0.1944011,-0.4470978,0.2561737,2.356039,0.1944011,-6.859924,0.244508,6.35043]},{"time":0.3333333,"x":2.353485,"y":6.160433,"curve":[0.4393211,2.3499775,0.5788303,0.45575905,0.4178534,5.979644,0.6001606,2.061847]},{"time":0.6333333,"curve":[0.6681897,-0.2914734,0.730848,-0.4470978,0.6788887,-2.8315005,0.730848,-6.859924]},{"time":0.7666666,"x":-0.4470978,"y":-6.859924,"curve":[0.8277344,-0.4470978,0.8895222,2.34824,0.8277344,-6.859924,0.8992217,6.266166]},{"time":0.9666666,"x":2.353485,"y":6.160433,"curve":[1.0532614,2.359371,1.213408,0.5143623,1.0512458,6.027837,1.226406,2.27905]},{"time":1.2666667}]},"head":{"rotate":[{"value":21.274855,"curve":[0.12058244,21.364525,0.1184093,5.37204]},{"time":0.3333333,"value":5.735791,"curve":[0.4433765,5.922034,0.5787602,20.65485]},{"time":0.6333333,"value":20.70968,"curve":[0.7611931,20.68365,0.7996347,6.015712]},{"time":1.0333333,"value":5.75913,"curve":[1.1011235,5.804011,1.2083334,21.574686]},{"time":1.2666667,"value":21.274855}],"translate":[{"x":9.884033,"y":-21.52525,"curve":[0.06566875,2.903137,0.1512837,-2.115349,0.05001664,-24.494816,0.1388225,-28.7171]},{"time":0.2,"x":-1.6820602,"y":-28.935524,"curve":[0.2811785,-0.9600367,0.3920217,24.71124,0.27777705,-29.213217,0.3704268,-7.392608]},{"time":0.4666667,"x":24.75985,"y":-6.792869,"curve":[0.645338,24.69495,0.667969,-1.209282,0.6218952,-7.063366,0.5969664,-30.919186]},{"time":0.8,"x":-1.4664993,"y":-30.779877,"curve":[0.8897908,-1.6414337,0.9788804,25.365837,0.8773802,-30.73315,0.9698719,-7.00832]},{"time":1.0666667,"x":25.27207,"y":-6.863761,"curve":[1.1473452,25.185913,1.2166667,15.199268,1.1408687,-6.752945,1.2166667,-18.55667]},{"time":1.2666667,"x":9.884033,"y":-21.52525}]},"head-control":{"translate":[{"y":-55.09682,"curve":[0.06296037,-1.7489548,0.2530094,-5.829174,0.09166667,-55.09682,0.297739,-20.004807]},{"time":0.3666667,"x":-5.847704,"y":-6.978775,"curve":[0.4368972,-5.85915,0.5390354,-2.8872566,0.4401274,6.903946,0.5666666,28.14827]},{"time":0.6333333,"y":28.14827,"curve":[0.7090387,2.317989,0.8583333,5.697609,0.7083333,28.14827,0.866757,1.1488342]},{"time":0.9333333,"x":5.697609,"y":-12.053162,"curve":[1.0166667,5.697609,1.156956,2.642784,1.0199082,-29.220886,1.1833333,-55.09682]},{"time":1.2666667,"y":-55.09682}]},"head2":{"rotate":[{"value":11.965183,"curve":[0.02053961,10.45928,0.10389923,4.488307]},{"time":0.16666667,"value":4.554021,"curve":[0.3115668,4.705723,0.4189195,14.202978]},{"time":0.5,"value":14.111456,"curve":[0.6707888,13.918667,0.686192,4.541626]},{"time":0.8,"value":4.560859,"curve":[0.9529416,4.586709,1.0294284,14.201435]},{"time":1.1333333,"value":14.13289,"curve":[1.1862036,14.098017,1.21358,14.027103]},{"time":1.2666667,"value":11.965183}],"scale":[{"curve":[0.010758295,0.9947252,0.12239203,0.9853887,0.05517141,1.007293,0.10432172,1.0107343]},{"time":0.16666667,"x":0.9853889,"y":1.0117892,"curve":[0.2559391,0.9853887,0.414819,1.0137043,0.24533863,1.0131205,0.4193878,0.9876572]},{"time":0.5,"x":1.0132115,"y":0.987503,"curve":[0.5789549,1.0127547,0.6934946,0.9883253,0.6197251,0.9883393,0.7132047,1.0137718]},{"time":0.8,"x":0.9881615,"y":1.0137718,"curve":[0.8808987,0.988037,1.0748347,1.0139225,0.9078752,1.0137718,1.03306,0.9882846]},{"time":1.1333333,"x":1.0140564,"y":0.9886105,"curve":[1.1809644,1.0141655,1.2004086,1.011187,1.1643105,0.9887113,1.2299683,0.9953828]},{"time":1.2666667}]},"hip":{"rotate":[{"value":-4.78,"curve":[0.03315207,-4.179543,0.05,-3.99]},{"time":0.06666667,"value":-3.99,"curve":[0.14166667,-3.99,0.2916667,-12.5]},{"time":0.3666667,"value":-12.5,"curve":[0.476646,-12.564807,0.5837143,-4.054806]},{"time":0.7,"value":-3.99,"curve":[0.774925,-3.889672,0.925,-12.5]},{"time":1,"value":-12.5,"curve":[1.0666667,-12.5,1.2164855,-6.075722]},{"time":1.2666667,"value":-4.78}],"translate":[{"x":161.93,"y":34.04648,"curve":[0.021663107,155.35313,0.04673144,146.41267,0.020906735,20.48131,0.0394334,1.4023743]},{"time":0.06666667,"x":146.25424,"y":1.6794033,"curve":[0.12398995,146.16403,0.2904279,209.86478,0.18021815,2.7588806,0.2938974,142.08176]},{"time":0.4,"x":209.50116,"y":140.6938,"curve":[0.5618468,208.9641,0.624449,145.3463,0.5370388,141.96414,0.6304372,4.690185]},{"time":0.7,"x":145.67137,"y":2.0613,"curve":[0.7449199,145.86047,0.9283995,209.1926,0.8177478,3.050873,0.9500598,138.66245]},{"time":1.0333333,"x":209.1926,"y":139.2958,"curve":[1.1,209.1926,1.2205307,175.021,1.1296455,140.39883,1.2354026,58.97227]},{"time":1.2666667,"x":161.93,"y":34.04648}]},"horn-back":{"translate":[{"x":7.008415,"y":42.92354},{"time":0.3666667,"x":13.16552,"y":33.39233},{"time":0.6333333,"x":7.683769,"y":13.937637},{"time":1,"x":12.256722,"y":35.06},{"time":1.2666667,"x":7.008415,"y":42.92354}]},"horn-front":{"translate":[{"x":3.4573364,"y":-20.11804,"curve":[0.09166667,3.4573364,0.24345203,3.408188,0.09166667,-20.11804,0.2919663,-6.077728]},{"time":0.3666667,"x":3.5718384,"y":-1.2432556,"curve":[0.4066855,3.625,0.5666666,5.088135,0.4841425,6.359573,0.5666666,11.01358]},{"time":0.6333333,"x":5.088135,"y":11.01358,"curve":[0.725,5.088135,0.807027,2.7413025,0.725,11.01358,0.9176634,-0.07673645]},{"time":1,"x":2.770729,"y":-5.869293,"curve":[1.11613,2.7884216,1.2,3.4573364,1.0492874,-9.336792,1.2,-20.11804]},{"time":1.2666667,"x":3.4573364,"y":-20.11804}]},"jaw":{"rotate":[{"value":-9.458115,"curve":[0.08768604,-9.546616,0.3389893,-16.627274]},{"time":0.3666667,"value":-17.51494,"curve":[0.5616483,-23.768356,0.8000142,-23.237793]},{"time":0.8333333,"value":-23.224945,"curve":[0.962639,-23.175095,1.179313,-9.55783]},{"time":1.2666667,"value":-9.458115}],"translate":[{"x":-0.3358765,"y":-2.024353,"curve":[0.09166667,-0.3358765,0.275,0.7922478,0.09166667,-2.024353,0.275,9.468575]},{"time":0.3666667,"x":0.7922478,"y":9.468575,"curve":[0.425,0.7922478,0.575,0.9279175,0.425,9.468575,0.575065,6.035702]},{"time":0.6333333,"x":0.9279175,"y":6.085632,"curve":[0.6416666,0.9279175,0.7833333,0.7922478,0.7144362,6.15514,0.7833333,9.468575]},{"time":0.8333333,"x":0.7922478,"y":9.468575,"curve":[0.875,0.7922478,0.9583333,0.5666237,0.875,9.468575,0.9786387,7.853359]},{"time":1,"x":0.5666237,"y":7.169987,"curve":[1.0666667,0.5666237,1.2,-0.3358765,1.083094,4.511741,1.2,-2.024353]},{"time":1.2666667,"x":-0.3358765,"y":-2.024353}]},"jaw-inside":{"translate":[{"x":-8.339294,"y":-3.21582},{"time":0.6333333,"x":1.170807,"y":-1.5958252},{"time":1.2666667,"x":-8.339294,"y":-3.21582}]},"leg-control":{"translate":[{"curve":[0.02111111,0,0.0480276,3.267441,0.02111111,0,0.04362963,-99.76404]},{"time":0.06666667,"x":5.158233,"y":-99.76404,"curve":[0.09920977,8.459518,0.14546436,12.653183,0.08886913,-99.76404,0.1337662,67.18008]},{"time":0.16666667,"x":12.653183,"y":68.39085,"curve":[0.18828437,12.653183,0.25088155,7.236313,0.2111131,70.02651,0.2439366,-68.22906]},{"time":0.2666667,"x":4.95192,"y":-68.18617,"curve":[0.3236963,-3.3012695,0.33720225,-4.957217,0.30744675,-68.1099,0.3290526,-15.355207]},{"time":0.3666667,"x":-10.48857,"y":-14.911427,"curve":[0.40419,-17.528475,0.441248,-25.50986,0.4157393,-14.332446,0.4844752,-84.77563]},{"time":0.5,"x":-25.50986,"y":-101.7088,"curve":[0.566226,-25.50986,0.6335304,-23.993734,0.5431273,-148.7484,0.6335304,-191.80615]},{"time":0.7,"x":-21.81238,"y":-183.42784,"curve":[0.915158,-14.77674,1.1233455,0,0.915158,-156.40485,1.1233455,0]},{"time":1.2666667}]},"neck":{"rotate":[{"value":-22.13334,"curve":[0.09166667,-22.13334,0.275,-4.118175]},{"time":0.3666667,"value":-4.118175,"curve":[0.4333333,-4.118175,0.5666666,-22.13334]},{"time":0.6333333,"value":-22.13334,"curve":[0.725,-22.13334,0.9083333,-4.118175]},{"time":1,"value":-4.118175,"curve":[1.0666667,-4.118175,1.2,-22.13334]},{"time":1.2666667,"value":-22.13334}],"translate":[{"x":19.46004,"y":-14.286346,"curve":[0.04558742,22.70909,0.06399933,24.671616,0.02704574,-20.08078,0.06715042,-33.27293]},{"time":0.1,"x":24.6978,"y":-32.70565,"curve":[0.1214681,24.713425,0.18671043,5.343391,0.13593443,-32.0851,0.2070543,-18.93289]},{"time":0.23333333,"x":5.158996,"y":-13.232106,"curve":[0.28747395,4.94486,0.3367798,5.542755,0.273578,-4.501727,0.3321389,3.9830856]},{"time":0.3666667,"x":7.203415,"y":3.9830856,"curve":[0.4261627,10.509308,0.5747927,18.600327,0.4333333,3.9830856,0.5995387,-8.703547]},{"time":0.6333333,"x":21.663956,"y":-14.286346,"curve":[0.6675498,23.454636,0.6968386,24.532734,0.6683312,-20.06792,0.6973053,-32.36167]},{"time":0.7333333,"x":24.6978,"y":-32.70565,"curve":[0.7884747,24.947235,0.8200386,4.987503,0.7818705,-33.16905,0.8292017,-21.819904]},{"time":0.8666667,"x":5.158996,"y":-13.232106,"curve":[0.9208073,5.358091,0.955146,6.02005,0.8972422,-6.223532,0.9654722,3.9830856]},{"time":1,"x":7.70517,"y":3.9830856,"curve":[1.0456064,9.41855,1.170333,14.79837,1.0666667,3.9830856,1.227244,-5.966134]},{"time":1.2666667,"x":19.46004,"y":-14.286346}]},"neck2":{"rotate":[{"value":24.685726}],"translate":[{"x":-6.838989,"y":-1.7964182,"curve":[0.16400003,-6.453499,0.2562653,-6.417572,0.09166667,-1.7964182,0.3083333,-0.4491119]},{"time":0.4,"x":-6.237396,"y":-0.4491119,"curve":[0.5138484,-6.094681,0.5666666,-6.027038,0.4666667,-0.4491119,0.5666666,-1.8072176]},{"time":0.6333333,"x":-6.027038,"y":-1.8072176,"curve":[0.725,-6.027038,0.9083333,-10.81253,0.725,-1.8072176,0.9083333,-0.3485422]},{"time":1,"x":-10.81253,"y":-0.3485422,"curve":[1.0666667,-10.81253,1.1371014,-7.648514,1.0666667,-0.3485422,1.2,-1.7964182]},{"time":1.2666667,"x":-6.838989,"y":-1.7964182}]},"saddle":{"rotate":[{"value":-2.519997},{"time":0.3666667,"value":-4.169998},{"time":0.6333333,"value":-3.8499985},{"time":1,"value":-3.0999985},{"time":1.2666667,"value":-2.519997}],"translate":[{"x":5.86557,"y":-0.06344604},{"time":0.3666667,"curve":[0.3766667,-0.0112,0.4166667,-0.04,0.3766667,1.6576,0.4166667,5.92]},{"time":0.4333333,"x":-0.04,"y":5.92,"curve":[0.5175333,-0.04,0.6033333,-6.87858,0.5175333,5.92,0.6033333,1.376739]},{"time":0.6333333,"x":-8.80741,"y":0.0953064},{"time":0.7,"x":-7.833587,"y":-2.2728424},{"time":1,"curve":[1.01,-0.0112,1.05,-0.04,1.01,1.6576,1.05,5.92]},{"time":1.0666667,"x":-0.04,"y":5.92,"curve":[1.1508667,-0.04,1.2366666,4.566344,1.1508667,5.92,1.2366666,1.252912]},{"time":1.2666667,"x":5.86557,"y":-0.06344604}]},"saddle-strap-back":{"rotate":[{"value":-5.12381,"curve":[0.04216666,-5.12381,0.10373,-2.696792]},{"time":0.16666667,"value":0.8940124,"curve":[0.24093667,5.109304,0.3171667,10.588943]},{"time":0.3666667,"value":10.588943,"curve":[0.4333333,10.588943,0.5666666,0.7240143]},{"time":0.6333333,"value":0.7240143,"curve":[0.7333333,0.7240143,0.9333333,7.719559]},{"time":1.0333333,"value":7.719559,"curve":[1.0916667,7.719559,1.2083334,-5.12381]},{"time":1.2666667,"value":-5.12381}]},"saddle-strap-front":{"rotate":[{"value":3.650116,"curve":[0.09077778,3.650116,0.2327672,5.424713]},{"time":0.3666667,"value":5.407486,"curve":[0.4496838,5.396807,0.5657778,3.4880676]},{"time":0.6333333,"value":3.4880676,"curve":[0.7315,3.4880676,0.889561,5.389618]},{"time":1.0333333,"value":5.383438,"curve":[1.1119697,5.380044,1.2065,3.650116]},{"time":1.2666667,"value":3.650116}]},"spineboy-front-arm-target":{"translate":[{},{"time":0.3666667,"x":-12.14261,"y":8.934753},{"time":0.6333333},{"time":1,"x":-10.793426,"y":7.942001},{"time":1.2666667}]},"spineboy-hip":{"translate":[{"x":53.69341,"y":-49.21124,"curve":[0.11769108,53.51966,0.275,16.14621,0.09166667,-49.21124,0.275,-32.5618]},{"time":0.3666667,"x":16.14621,"y":-32.5618,"curve":[0.4333333,16.14621,0.5416667,53.47405,0.4333333,-32.5618,0.5666666,-49.21124]},{"time":0.6333333,"x":53.69341,"y":-49.21124,"curve":[0.7415355,53.95237,0.9083333,15.733093,0.725,-49.21124,0.9083333,-29.735693]},{"time":1,"x":15.733093,"y":-29.735693,"curve":[1.0666667,15.733093,1.1097857,54.44884,1.0666667,-29.735693,1.2,-49.21124]},{"time":1.2666667,"x":53.69341,"y":-49.21124}]},"spineboy-torso":{"rotate":[{"value":-37.55338,"curve":[0.09166667,-37.55338,0.275,-12.196495]},{"time":0.3666667,"value":-12.196495,"curve":[0.4981333,-12.196495,0.5666666,-37.66431]},{"time":0.6333333,"value":-37.66431,"curve":[0.725,-37.66431,0.9083333,-12.19107]},{"time":1,"value":-12.19107,"curve":[1.1314666,-12.19107,1.2,-37.55338]},{"time":1.2666667,"value":-37.55338}]},"stirrup":{"rotate":[{"value":-17.15001},{"time":0.3666667,"value":-11.14209},{"time":0.6333333,"value":-6.946197},{"time":1,"value":-11.843376},{"time":1.2666667,"value":-17.15001}],"translate":[{"x":8.979996,"y":4.989998},{"time":0.3666667,"x":4.849998,"y":1},{"time":0.6333333,"x":7.760002,"y":-2.989998},{"time":1,"x":4.849998,"y":1},{"time":1.2666667,"x":8.979996,"y":4.989998}]},"tail1":{"rotate":[{"value":-1.8103027,"curve":[0.09077778,-1.8103027,0.2075785,12.325684]},{"time":0.3333333,"value":12.325684,"curve":[0.4306667,12.325684,0.532,-1.8103027]},{"time":0.6333333,"value":-1.8103027,"curve":[0.7354583,-1.8103027,0.8375833,11.618011]},{"time":0.9333333,"value":11.618011,"curve":[1.0604454,11.618011,1.1764166,-1.8103027]},{"time":1.2666667,"value":-1.8103027}]},"tail2":{"rotate":[{"value":-12.174447,"curve":[0.09061592,-12.174447,0.2071621,-1.4521945]},{"time":0.3333333,"value":-1.4521945,"curve":[0.4407013,-1.4521945,0.5546578,-12.174447]},{"time":0.6666667,"value":-12.174447,"curve":[0.8959415,-12.174447,0.8738287,-1.4521945]},{"time":1,"value":-1.4521945,"curve":[1.107368,-1.4521945,1.1167778,-12.174447]},{"time":1.2666667,"value":-12.174447}]},"tail3":{"rotate":[{"value":-7.148086,"curve":[0.08333333,-7.148086,0.25,0.58007]},{"time":0.3333333,"value":0.58007,"curve":[0.4083333,0.58007,0.5583333,-7.148086]},{"time":0.6333333,"value":-7.148086,"curve":[0.7166666,-7.148086,0.8833333,0.7493095]},{"time":0.9666666,"value":0.7493095,"curve":[1.0416666,0.7493095,1.1916667,-7.148086]},{"time":1.2666667,"value":-7.148086}],"translate":[{"curve":[0.15833333,0,0.475,-9.865417,0.15833333,0,0.475,-0.8689575]},{"time":0.6333333,"x":-9.865417,"y":-0.8689575,"curve":[0.7916667,-9.865417,1.1083333,0,0.7916667,-0.8689575,1.1083333,0]},{"time":1.2666667}]},"tail4":{"rotate":[{"value":-3.830568,"curve":[0.012565867,-4.228246,0.02358335,-4.527534]},{"time":0.03333333,"value":-4.527534,"curve":[0.06777777,-4.527534,0.11645926,-3.132301]},{"time":0.16666667,"value":-0.3900641,"curve":[0.2402074,3.502143,0.31777775,9.152358]},{"time":0.3666667,"value":9.152358,"curve":[0.4416667,9.152358,0.5916666,-4.527534]},{"time":0.6666667,"value":-4.527534,"curve":[0.75,-4.527534,0.9166667,8.9962]},{"time":1,"value":8.9962,"curve":[1.06525,8.9962,1.1872675,-1.169178]},{"time":1.2666667,"value":-3.830568}],"translate":[{"curve":[0.15833333,0,0.475,-4.061783,0.15833333,0,0.475,0.3216248]},{"time":0.6333333,"x":-4.061783,"y":0.3216248,"curve":[0.7916667,-4.061783,1.1083333,0,0.7916667,0.3216248,1.1083333,0]},{"time":1.2666667}]},"tail5":{"rotate":[{"value":-7.24438,"curve":[0.02572581,-8.78431,0.04841665,-9.895447]},{"time":0.06666667,"value":-9.895447,"curve":[0.09333333,-9.895447,0.12853333,-9.010598]},{"time":0.16666667,"value":-6.602956,"curve":[0.24813335,-1.4867158,0.3433333,7.392887]},{"time":0.4,"value":7.392887,"curve":[0.475,7.392887,0.625,-9.895447]},{"time":0.7,"value":-9.895447,"curve":[0.7833333,-9.895447,0.95,7.290088]},{"time":1.0333333,"value":7.290088,"curve":[1.0900834,7.290088,1.189774,-2.455831]},{"time":1.2666667,"value":-7.24438}],"translate":[{"curve":[0.15833333,0,0.475,-7.547943,0.15833333,0,0.475,0.7315063]},{"time":0.6333333,"x":-7.547943,"y":0.7315063,"curve":[0.7916667,-7.547943,1.1083333,0,0.7916667,0.7315063,1.1083333,0]},{"time":1.2666667}]},"tail6":{"rotate":[{"value":-4.21581,"curve":[0.03831253,-7.402938,0.07375005,-9.895447]},{"time":0.1,"value":-9.895447,"curve":[0.11888888,-9.895447,0.14205927,-9.788292]},{"time":0.16666667,"value":-8.21584,"curve":[0.2546074,-2.851003,0.3688889,9.892714]},{"time":0.4333333,"value":9.892714,"curve":[0.5083333,9.892714,0.6583333,-9.895447]},{"time":0.7333333,"value":-9.895447,"curve":[0.8166666,-9.895447,0.9833333,10.11791]},{"time":1.0666667,"value":10.11791,"curve":[1.1154168,10.11791,1.1958542,1.7031398]},{"time":1.2666667,"value":-4.21581}],"translate":[{"curve":[0.15833333,0,0.475,-9.06314,0.15833333,0,0.475,1.581024]},{"time":0.6333333,"x":-9.06314,"y":1.581024,"curve":[0.7916667,-9.06314,1.1083333,0,0.7916667,1.581024,1.1083333,0]},{"time":1.2666667}]},"tail7":{"rotate":[{"value":-0.7597948,"curve":[0.05064583,-5.530134,0.0995833,-9.895447]},{"time":0.13333334,"value":-9.895447,"curve":[0.1436111,-9.895447,0.1551565,-10.453577]},{"time":0.16666667,"value":-9.888296,"curve":[0.2565102,-5.870215,0.3936111,11.299836]},{"time":0.4666667,"value":11.299836,"curve":[0.5416667,11.299836,0.6916666,-9.895447]},{"time":0.7666666,"value":-9.895447,"curve":[0.85,-9.895447,1.0166667,11.520222]},{"time":1.1,"value":11.520222,"curve":[1.14125,11.520222,1.2051874,5.070621]},{"time":1.2666667,"value":-0.7597948}],"translate":[{"curve":[0.15833333,0,0.475,-9.928223,0.15833333,0,0.475,1.3155823]},{"time":0.6333333,"x":-9.928223,"y":1.3155823,"curve":[0.7916667,-9.928223,1.1083333,0,0.7916667,1.3155823,1.1083333,0]},{"time":1.2666667}]},"tail8":{"rotate":[{"value":4.706924,"curve":[0.06225331,-2.193073,0.1256667,-10.790222]},{"time":0.16666667,"value":-10.790222,"curve":[0.25,-10.790222,0.4166667,16.46313]},{"time":0.5,"value":16.46313,"curve":[0.575,16.46313,0.725,-9.895447]},{"time":0.8,"value":-9.895447,"curve":[0.8833333,-9.895447,1.05,15.57028]},{"time":1.1333333,"value":15.57028,"curve":[1.1673334,15.57028,1.2167467,10.428873]},{"time":1.2666667,"value":4.706924}],"translate":[{"curve":[0.15833333,0,0.475,-12.56659,0.15833333,0,0.475,1.97406]},{"time":0.6333333,"x":-12.56659,"y":1.97406,"curve":[0.7916667,-12.56659,1.1083333,0,0.7916667,1.97406,1.1083333,0]},{"time":1.2666667}]},"tail9":{"rotate":[{"value":7.954827,"curve":[0.0716367,1.8706818,0.15149994,-6.790797]},{"time":0.2,"value":-6.790797,"curve":[0.2833333,-6.790797,0.45,15.07934]},{"time":0.5333333,"value":15.07934,"curve":[0.6083333,15.07934,0.7583333,-6.790797]},{"time":0.8333333,"value":-6.790797,"curve":[0.9166667,-6.790797,1.0833334,13.797668]},{"time":1.1666666,"value":13.797668,"curve":[1.1931666,13.797668,1.22903,11.279154]},{"time":1.2666667,"value":7.954827}],"translate":[{"curve":[0.15833333,0,0.475,-15.361816,0.15833333,0,0.475,2.182373]},{"time":0.6333333,"x":-15.361816,"y":2.182373,"curve":[0.7916667,-15.361816,1.1083333,0,0.7916667,2.182373,1.1083333,0]},{"time":1.2666667}]},"tail10":{"rotate":[{"value":8.87108,"curve":[0.07776998,3.9554815,0.17683335,-5.977947]},{"time":0.23333333,"value":-5.977947,"curve":[0.3166667,-5.977947,0.4833333,10.93023]},{"time":0.5666666,"value":10.93023,"curve":[0.6416666,10.93023,0.7916667,-5.977947]},{"time":0.8666667,"value":-5.977947,"curve":[0.95,-5.977947,1.1166667,11.579513]},{"time":1.2,"value":11.579513,"curve":[1.2185,11.579513,1.2415633,10.480614]},{"time":1.2666667,"value":8.87108}],"translate":[{"curve":[0.15833333,0,0.475,-19.29547,0.15833333,0,0.475,1.897644]},{"time":0.6333333,"x":-19.29547,"y":1.897644,"curve":[0.7916667,-19.29547,1.1083333,0,0.7916667,1.897644,1.1083333,0]},{"time":1.2666667}]},"tongue1":{"rotate":[{"value":21.55374},{"time":0.8,"value":0.0812912},{"time":1.2666667,"value":21.55374}]},"tongue2":{"rotate":[{"value":-16.01506,"curve":[0.2858496,-15.881577,0.4154335,-3.201469]},{"time":0.6333333,"value":-3.20948,"curve":[0.9875164,-3.2225046,1.1015027,-16.11903]},{"time":1.2666667,"value":-16.01506}]},"tongue3":{"rotate":[{"value":-16.01506,"curve":[0.0273629,-12.15427,0.12291182,0.4920931]},{"time":0.23333333,"value":0.4397631,"curve":[0.457,0.333766,0.862269,-36.41787]},{"time":1.0666667,"value":-36.41415,"curve":[1.167866,-36.4123,1.2482436,-19.41688]},{"time":1.2666667,"value":-16.01506}]},"torso1":{"rotate":[{"value":7.22,"curve":[0.04785992,7.928309,0.07164217,8.37728]},{"time":0.13333334,"value":8.389486,"curve":[0.20155734,8.402986,0.30219445,2.443026]},{"time":0.3666667,"value":2.443026,"curve":[0.4333333,2.443026,0.5880664,6.893369]},{"time":0.6,"value":7.22,"curve":[0.617535,7.699942,0.6831788,8.434774]},{"time":0.7333333,"value":8.43319,"curve":[0.8295607,8.430148,0.9098333,2.417546]},{"time":0.9666666,"value":2.417546,"curve":[1.0333333,2.417546,1.2116188,6.061397]},{"time":1.2666667,"value":7.22}]},"torso2":{"rotate":[{"value":-4.186195,"curve":[0.09166667,-4.186195,0.275,-2.53706]},{"time":0.3666667,"value":-2.53706,"curve":[0.4333333,-2.53706,0.5666666,-4.186195]},{"time":0.6333333,"value":-4.186195,"curve":[0.725,-4.186195,0.9083333,-2.568886]},{"time":1,"value":-2.568886,"curve":[1.0666667,-2.568886,1.2,-4.186195]},{"time":1.2666667,"value":-4.186195}],"translate":[{"curve":[0.08749752,-1.8736343,0.13084796,-1.5673752,0.09798698,9.87882,0.13084796,12.61029]},{"time":0.16666667,"x":-1.5673752,"y":12.61029,"curve":[0.246255,-1.5673752,0.2783954,8.503754,0.246255,12.61029,0.2577581,-10.384242]},{"time":0.3666667,"x":8.37577,"y":-10.237813,"curve":[0.4532149,8.250267,0.5807821,1.8093643,0.44091815,-10.13798,0.5975399,-3.482858]},{"time":0.6333333,"x":0.08921814,"curve":[0.6660422,-0.98143,0.7641812,-1.4781494,0.6674635,3.321018,0.7641812,12.61029]},{"time":0.8,"x":-1.4781494,"y":12.61029,"curve":[0.8795883,-1.4781494,0.9374772,8.503754,0.8795883,12.61029,0.906822,-10.400143]},{"time":1.0333333,"x":8.37577,"y":-10.237813,"curve":[1.1199117,8.262276,1.2183137,2.6766205,1.1010463,-10.150926,1.1945745,-5.210807]},{"time":1.2666667}]}},"ik":{"back-leg-ik":[{"softness":66.9,"bendPositive":false}],"spineboy-back-arm-ik":[{}],"spineboy-front-arm-ik":[{"softness":14.4,"stretch":true}]},"events":[{"time":0.6333333,"name":"footstep"},{"time":1.2666667,"name":"footstep"}]}}}, + atlas: "raptor.png\n\tsize: 1024, 512\n\tfilter: Linear, Linear\n\tscale: 0.5\nback-arm\n\tbounds: 206, 49, 46, 25\nback-bracer\n\tbounds: 498, 42, 39, 28\nback-hand\n\tbounds: 400, 55, 36, 34\nback-knee\n\tbounds: 498, 72, 49, 67\nback-thigh\n\tbounds: 254, 40, 39, 24\neyes-open\n\tbounds: 232, 328, 47, 45\nfront-arm\n\tbounds: 350, 63, 48, 26\nfront-bracer\n\tbounds: 163, 56, 41, 29\nfront-hand\n\tbounds: 956, 231, 41, 38\nfront-open-hand\n\tbounds: 770, 329, 43, 44\nfront-thigh\n\tbounds: 897, 240, 57, 29\ngun\n\tbounds: 915, 106, 107, 103\ngun-nohand\n\tbounds: 916, 271, 105, 102\nhead\n\tbounds: 626, 81, 136, 149\nlower-leg\n\tbounds: 551, 42, 73, 98\nmouth-grind\n\tbounds: 2, 64, 47, 30\nmouth-smile\n\tbounds: 841, 127, 47, 30\nneck\n\tbounds: 281, 352, 18, 21\nraptor-back-arm\n\tbounds: 80, 11, 82, 86\nraptor-body\n\tbounds: 2, 140, 632, 233\nraptor-front-arm\n\tbounds: 911, 2, 81, 102\nraptor-front-leg\n\tbounds: 524, 182, 191, 257\n\trotate: 90\nraptor-hindleg-back\n\tbounds: 745, 158, 169, 215\n\trotate: 180\nraptor-horn\n\tbounds: 2, 293, 182, 80\nraptor-horn-back\n\tbounds: 174, 123, 176, 77\nraptor-jaw\n\tbounds: 772, 35, 126, 138\n\trotate: 270\nraptor-jaw-tooth\n\tbounds: 686, 242, 37, 48\nraptor-mouth-inside\n\tbounds: 755, 39, 36, 41\nraptor-saddle-strap-back\n\tbounds: 626, 26, 54, 74\nraptor-saddle-strap-front\n\tbounds: 2, 96, 57, 95\nraptor-saddle-w-shadow\n\tbounds: 2, 88, 162, 171\n\trotate: 90\nraptor-tail-shadow\n\tbounds: 159, 58, 189, 63\nraptor-tongue\n\tbounds: 685, 33, 86, 64\nstirrup-back\n\tbounds: 783, 204, 44, 35\nstirrup-front\n\tbounds: 185, 323, 45, 50\nstirrup-strap\n\tbounds: 636, 217, 49, 46\ntorso\n\tbounds: 442, 48, 54, 91\nvisor\n\tbounds: 356, 91, 131, 84\n\trotate: 90\n", + texture: "data:image/png;base64,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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHiN+v8oR66OBiVVUAAAAABJRU5ErkJggg==" +}; diff --git a/html/assets/demo/raptor/raptor-pro.json b/html/assets/demo/raptor/raptor-pro.json new file mode 100644 index 0000000..27456d6 --- /dev/null +++ b/html/assets/demo/raptor/raptor-pro.json @@ -0,0 +1,9186 @@ +{ +"skeleton": { + "hash": "OKE722Fi+rc", + "spine": "4.3.75-beta", + "x": -809.163, + "y": -73.5388, + "width": 1287.646, + "height": 1039.443, + "images": "./images/", + "audio": null +}, +"bones": [ + { "name": "root" }, + { "name": "hip", "parent": "root", "rotation": 8.95755, "x": -122.52013, "y": 392.648, "color": "fbff00ff" }, + { + "name": "torso1", + "parent": "hip", + "length": 126.26, + "rotation": -4.98, + "x": 30.04, + "y": -0.4, + "color": "eaff00ff" + }, + { + "name": "saddle", + "parent": "torso1", + "length": 50.92, + "rotation": 91.8, + "x": 25.310295, + "y": 70.64713, + "color": "ff7300ff" + }, + { + "name": "spineboy-hip", + "parent": "saddle", + "length": 0.53, + "rotation": 90.02, + "x": 81.88, + "y": 2.69, + "color": "e8ff00ff" + }, + { + "name": "spineboy-torso", + "parent": "spineboy-hip", + "length": 122.45, + "rotation": -75.86, + "x": 1.05, + "y": -2.11, + "color": "e8ff00ff" + }, + { + "name": "torso2", + "parent": "torso1", + "length": 121.2, + "rotation": 39.85, + "x": 126.26, + "y": -0.38, + "color": "e9ff00ff" + }, + { + "name": "neck", + "parent": "torso2", + "length": 70.6, + "rotation": 41.38, + "x": 121.2, + "y": 0.35, + "color": "eaff00ff" + }, + { + "name": "head", + "parent": "neck", + "length": 105.51, + "rotation": 9.83, + "x": 70.6, + "y": 0.04, + "color": "eaff00ff" + }, + { + "name": "horn-back", + "parent": "head", + "length": 73.78, + "rotation": 44.32, + "x": 104.76395, + "y": -242.01355, + "color": "e07800ff" + }, + { + "name": "spineboy-back-arm-target", + "parent": "horn-back", + "rotation": -133.55, + "x": 232.68, + "y": 245.85, + "inherit": "noScale", + "color": "ff3f00ff" + }, + { + "name": "back-arm", + "parent": "spineboy-torso", + "length": 67.21, + "rotation": -120.9, + "x": 96.33, + "y": -38.47, + "color": "e07800ff" + }, + { + "name": "back-bracer", + "parent": "back-arm", + "length": 43.69, + "rotation": 17.48, + "x": 67.22, + "y": -0.32, + "color": "e07800ff" + }, + { + "name": "back-arm1", + "parent": "torso2", + "length": 109.56, + "rotation": -124.72, + "x": 83.67854, + "y": -83.23534, + "color": "e07800ff" + }, + { + "name": "back-arm2", + "parent": "back-arm1", + "length": 85.8, + "rotation": 123.56, + "x": 109.57, + "y": -0.01, + "color": "e07800ff" + }, + { "name": "back-foot-target", "parent": "root", "x": 33.44, "y": 30.82, "color": "ff3f00ff", "icon": "ik" }, + { "name": "back-leg-target", "parent": "back-foot-target", "x": -127.51, "y": 75.99, "color": "ff3f00ff", "icon": "ik" }, + { + "name": "back-leg1", + "parent": "hip", + "length": 226.28, + "rotation": -54.76, + "x": 55.19, + "y": -71.25, + "color": "e07800ff" + }, + { + "name": "back-leg2", + "parent": "back-leg1", + "length": 172.59, + "rotation": -92.25, + "x": 226.32, + "y": 0.23, + "color": "e07800ff" + }, + { + "name": "back-leg3", + "parent": "back-leg2", + "length": 103.05, + "rotation": 82.82, + "x": 172.32, + "y": 2.21, + "color": "e07800ff" + }, + { + "name": "back-foot1", + "parent": "back-leg3", + "length": 84.51, + "rotation": 75.43, + "x": 102.38, + "y": -0.03, + "color": "e07800ff" + }, + { + "name": "back-foot2", + "parent": "back-foot1", + "length": 102.31, + "rotation": -6.14, + "x": 84.5, + "y": -0.35, + "inherit": "noRotationOrReflection", + "color": "e07800ff" + }, + { + "name": "back-hand", + "parent": "back-arm2", + "length": 45.81, + "rotation": -76.28, + "x": 85.8, + "y": 0.11, + "color": "e07800ff" + }, + { + "name": "back-hand2", + "parent": "spineboy-back-arm-target", + "length": 41.98, + "rotation": 27.77738, + "x": -0.02857208, + "y": 0.05377197, + "inherit": "noRotationOrReflection", + "color": "e07800ff" + }, + { "name": "spineboy-back-foot-target", "parent": "saddle", "x": -30.44, "y": -100.08, "color": "ff3f00ff" }, + { + "name": "back-thigh", + "parent": "spineboy-hip", + "length": 71.16, + "rotation": 160.75, + "x": -9.57, + "y": 2.32, + "color": "e07800ff" + }, + { + "name": "back-knee", + "parent": "back-thigh", + "length": 97.17, + "rotation": -54.98, + "x": 71.16, + "y": -0.28, + "color": "e07800ff" + }, + { + "name": "neck2", + "parent": "spineboy-torso", + "length": 32.05, + "rotation": -45.23, + "x": 113.44, + "y": -15.22, + "color": "e8ff00ff" + }, + { + "name": "head2", + "parent": "neck2", + "length": 167.1939, + "rotation": 11.66, + "x": 25.68, + "y": -0.77, + "inherit": "noScale", + "color": "e7ff00ff" + }, + { + "name": "bone", + "parent": "head2", + "length": 39.91506, + "rotation": -35.22991, + "x": 166.09326, + "y": -79.27026, + "color": "e7ff00ff" + }, + { "name": "bone2", "parent": "bone", "length": 47.4192, "rotation": 51.7975, "x": 39.9151, "color": "e7ff00ff" }, + { + "name": "bone3", + "parent": "head2", + "length": 45.40962, + "rotation": -12.343472, + "x": 179.80286, + "y": -20.90898, + "color": "e7ff00ff" + }, + { + "name": "bone4", + "parent": "bone3", + "length": 43.31327, + "rotation": 42.0083, + "x": 44.63544, + "y": 0.303009, + "color": "e7ff00ff" + }, + { "name": "bone5", "parent": "bone4", "length": 44.87501, "rotation": 48.80142, "x": 43.31311, "color": "e7ff00ff" }, + { + "name": "horn-front", + "parent": "head", + "length": 87.48, + "rotation": 49.36, + "x": 87.97336, + "y": -235.14723, + "color": "15ff00ff" + }, + { "name": "spineboy-front-arm-target", "parent": "horn-front", "rotation": -138.6, "x": 294.58, "y": 234.18, "color": "ff3f00ff" }, + { + "name": "front-arm", + "parent": "spineboy-torso", + "length": 74.52, + "rotation": -118.17, + "x": 101.38, + "y": 9.79, + "color": "14ff00ff" + }, + { + "name": "front-bracer", + "parent": "front-arm", + "length": 39.85, + "rotation": 20.31, + "x": 74.52, + "y": -0.42, + "color": "14ff00ff" + }, + { + "name": "front-arm1", + "parent": "torso2", + "length": 109.99, + "rotation": 224.54, + "x": 73.00035, + "y": -72.46397, + "color": "15ff00ff" + }, + { + "name": "front-arm2", + "parent": "front-arm1", + "length": 86.33, + "rotation": 105.24, + "x": 109.99, + "y": 0.2, + "color": "15ff00ff" + }, + { + "name": "front-foot-target", + "parent": "root", + "rotation": -6.956577, + "x": -45.8, + "y": -28.67, + "color": "ff3f00ff", + "icon": "ik" + }, + { "name": "front-leg-target", "parent": "front-foot-target", "x": -106.06, "y": 115.58, "color": "ff3f00ff", "icon": "ik" }, + { + "name": "front-leg1", + "parent": "hip", + "length": 251.75, + "rotation": -51.51, + "x": 27.36, + "y": -28.28, + "color": "15ff00ff" + }, + { + "name": "front-leg2", + "parent": "front-leg1", + "length": 208.55, + "rotation": 261.94, + "x": 251.04, + "y": 0.16, + "color": "15ff00ff" + }, + { + "name": "front-leg3", + "parent": "front-leg2", + "length": 118.18, + "rotation": 85.46, + "x": 208.5, + "y": -1.64, + "color": "15ff00ff" + }, + { + "name": "front-foot1", + "parent": "front-leg3", + "length": 57.79, + "rotation": 54.46, + "x": 118.2, + "y": -0.79, + "color": "15ff00ff" + }, + { + "name": "front-foot2", + "parent": "front-foot1", + "length": 56.19, + "rotation": -2.16, + "x": 57.79, + "y": -0.02, + "scaleX": 0.731, + "scaleY": 0.823, + "inherit": "onlyTranslation", + "color": "15ff00ff" + }, + { + "name": "front-foot3", + "parent": "front-foot2", + "length": 129.88, + "rotation": -2.7, + "x": 49.71, + "y": 20.66, + "scaleX": 1.155, + "color": "15ff00ff" + }, + { + "name": "front-hand", + "parent": "front-arm2", + "length": 47.56, + "rotation": -56.83, + "x": 86.33, + "y": 0.06, + "color": "15ff00ff" + }, + { + "name": "front-hand2", + "parent": "front-bracer", + "length": 58.19, + "rotation": 17.31252, + "x": 42.71695, + "y": -2.772095, + "scaleX": 1.0004373, + "scaleY": 1.0004373, + "inherit": "onlyTranslation", + "color": "14ff00ff" + }, + { "name": "spineboy-front-foot-target", "parent": "saddle", "x": -50.71, "y": -96.93, "color": "ff3f00ff" }, + { + "name": "front-thigh", + "parent": "spineboy-hip", + "length": 77.79, + "rotation": 163.34, + "x": 15.52, + "y": 17.02, + "color": "14ff00ff" + }, + { + "name": "lower-leg", + "parent": "front-thigh", + "length": 111.5, + "rotation": -49.62, + "x": 77.93, + "y": -0.11, + "color": "14ff00ff" + }, + { + "name": "gun", + "parent": "spineboy-hip", + "length": 181.35, + "rotation": 107.12, + "x": 16.86, + "y": -7.89, + "scaleX": 0.816, + "scaleY": 0.816, + "color": "ffffffff" + }, + { + "name": "jaw", + "parent": "head", + "length": 203.76, + "rotation": -129.5956, + "x": 49.10952, + "y": -68.4647, + "color": "ffff00ff" + }, + { "name": "jaw-inside", "parent": "jaw", "x": 94.69513, "y": 33.64496, "color": "ffff00ff" }, + { + "name": "saddle-strap-back", + "parent": "saddle", + "length": 74.60266, + "rotation": 151.14, + "x": -33.34, + "y": 87.33, + "color": "ff7300ff" + }, + { + "name": "saddle-strap-front", + "parent": "saddle", + "length": 154.2884, + "rotation": -148.12, + "x": -27.36, + "y": -73.39, + "color": "ff7300ff" + }, + { + "name": "stirrup", + "parent": "saddle", + "length": 78.17, + "rotation": -68.86, + "x": -81.94, + "y": -103.38, + "color": "ff3f00ff" + }, + { + "name": "stirrup-strap1", + "parent": "saddle", + "length": 43.7, + "rotation": -135, + "x": -20.38, + "y": -29.37, + "color": "ff7300ff" + }, + { "name": "stirrup-strap2", "parent": "stirrup-strap1", "length": 51.62, "rotation": 9.39, "x": 43.71, "color": "ff7300ff" }, + { + "name": "tail1", + "parent": "hip", + "length": 81.265, + "rotation": 153.61307, + "x": -20.87, + "y": 6.87, + "color": "eaff00ff" + }, + { "name": "tail2", "parent": "tail1", "length": 81.26, "rotation": 10.41735, "x": 81.265, "color": "eaff00ff" }, + { "name": "tail3", "parent": "tail2", "length": 65.01, "rotation": 12.181763, "x": 81.26, "color": "eaff00ff" }, + { "name": "tail4", "parent": "tail3", "length": 65.01, "x": 65.00998, "color": "eaff00ff" }, + { "name": "tail5", "parent": "tail4", "length": 70.53, "rotation": 4.359924, "x": 65.01, "color": "eaff00ff" }, + { "name": "tail6", "parent": "tail5", "length": 70.53, "x": 70.52988, "color": "eaff00ff" }, + { "name": "tail7", "parent": "tail6", "length": 63.13, "rotation": 2.347168, "x": 70.53, "color": "eaff00ff" }, + { "name": "tail8", "parent": "tail7", "length": 54.46, "rotation": 0.9677505, "x": 63.13, "color": "eaff00ff" }, + { "name": "tail9", "parent": "tail8", "length": 49.21, "rotation": -1.2947845, "x": 54.46, "color": "eaff00ff" }, + { "name": "tail10", "parent": "tail9", "length": 45.53, "rotation": 0.3612213, "x": 49.21, "color": "eaff00ff" }, + { + "name": "tongue1", + "parent": "head", + "length": 55.12, + "rotation": -129.04, + "x": 20.82, + "y": -104.75, + "color": "ffff00ff" + }, + { + "name": "tongue2", + "parent": "tongue1", + "length": 44.67, + "rotation": 8.93, + "x": 55.6, + "y": 0.93, + "color": "fff200ff" + }, + { + "name": "tongue3", + "parent": "tongue2", + "length": 43.65, + "rotation": 12.86, + "x": 44.27, + "y": -0.21, + "color": "fff200ff" + }, + { + "name": "head-control", + "parent": "head", + "rotation": -95.03755, + "x": 42.32178, + "y": -220.3306, + "color": "219517ff", + "icon": "arrows" + }, + { + "name": "leg-control", + "parent": "front-leg1", + "rotation": 53.14228, + "x": 172.97285, + "y": 4.163391, + "color": "1d8020ff", + "icon": "arrows" + } +], +"slots": [ + { "name": "back-hand", "bone": "back-hand2", "attachment": "back-hand" }, + { "name": "back-arm", "bone": "back-arm", "attachment": "back-arm" }, + { "name": "back-bracer", "bone": "back-bracer", "attachment": "back-bracer" }, + { "name": "back-knee", "bone": "back-knee", "attachment": "back-knee" }, + { "name": "raptor-jaw-inside", "bone": "jaw-inside", "color": "646464ff", "attachment": "raptor-jaw2" }, + { "name": "raptor-mouth-inside", "bone": "jaw", "attachment": "raptor-mouth-inside" }, + { "name": "raptow-jaw-tooth", "bone": "jaw", "attachment": "raptor-jaw-tooth" }, + { "name": "raptor-horn-back", "bone": "horn-back", "attachment": "raptor-horn-back" }, + { "name": "raptor-tongue", "bone": "tongue1", "attachment": "raptor-tongue" }, + { "name": "raptor-hindleg-back", "bone": "back-leg1", "attachment": "raptor-hindleg-back" }, + { "name": "raptor-back-arm", "bone": "back-arm1", "attachment": "raptor-back-arm" }, + { "name": "back-thigh", "bone": "back-thigh", "attachment": "back-thigh" }, + { "name": "raptor-body", "bone": "torso1", "attachment": "raptor-body" }, + { "name": "raptor-saddle-strap-front", "bone": "saddle-strap-front", "attachment": "raptor-saddle-strap-front" }, + { "name": "raptor-saddle-strap-back", "bone": "saddle-strap-back", "attachment": "raptor-saddle-strap-back" }, + { "name": "raptor-saddle", "bone": "saddle", "attachment": "raptor-saddle-w-shadow" }, + { "name": "raptor-jaw", "bone": "jaw", "attachment": "raptor-jaw" }, + { "name": "raptor-front-arm", "bone": "front-arm1", "attachment": "raptor-front-arm" }, + { "name": "raptor-front-leg", "bone": "front-leg1", "attachment": "raptor-front-leg" }, + { "name": "neck", "bone": "neck2", "attachment": "neck" }, + { "name": "spineboy-torso", "bone": "spineboy-torso", "attachment": "torso" }, + { "name": "head", "bone": "head2", "attachment": "head" }, + { "name": "eyes-open", "bone": "head2", "attachment": "eyes-open" }, + { "name": "mouth-smile", "bone": "head2", "attachment": "mouth-smile" }, + { "name": "visor", "bone": "head2", "attachment": "visor" }, + { "name": "raptor-horn", "bone": "horn-front", "attachment": "raptor-horn" }, + { "name": "front-thigh", "bone": "front-thigh", "attachment": "front-thigh" }, + { "name": "stirrup-back", "bone": "stirrup", "attachment": "stirrup-back" }, + { "name": "lower-leg", "bone": "lower-leg", "attachment": "lower-leg" }, + { "name": "stirrup-strap", "bone": "stirrup", "attachment": "stirrup-strap" }, + { "name": "stirrup-front", "bone": "stirrup", "attachment": "stirrup-front" }, + { "name": "gun", "bone": "gun", "attachment": "gun-nohand" }, + { "name": "front-arm", "bone": "front-arm", "attachment": "front-arm" }, + { "name": "front-bracer", "bone": "front-bracer", "attachment": "front-bracer" }, + { "name": "front-hand", "bone": "front-hand2", "attachment": "front-hand" }, + { "name": "tail-shadow", "bone": "torso1", "color": "00000000" } +], +"constraints": [ + { + "type": "ik", + "name": "front-leg-ik", + "target": "front-leg-target", + "bones": [ "front-leg1", "front-leg2" ], + "bendPositive": false + }, + { + "type": "ik", + "name": "front-foot-ik", + "target": "front-foot-target", + "bones": [ "front-leg3", "front-foot1" ] + }, + { + "type": "ik", + "name": "back-leg-ik", + "target": "back-leg-target", + "bones": [ "back-leg1", "back-leg2" ], + "bendPositive": false + }, + { + "type": "ik", + "name": "back-foot-ik", + "target": "back-foot-target", + "bones": [ "back-leg3", "back-foot1" ] + }, + { + "type": "ik", + "name": "spineboy-front-leg-ik", + "target": "spineboy-front-foot-target", + "bones": [ "front-thigh", "lower-leg" ], + "bendPositive": false + }, + { + "type": "ik", + "name": "spineboy-back-leg-ik", + "target": "spineboy-back-foot-target", + "bones": [ "back-thigh", "back-knee" ], + "bendPositive": false + }, + { + "type": "ik", + "name": "stirrup", + "target": "stirrup", + "bones": [ "stirrup-strap1", "stirrup-strap2" ], + "bendPositive": false + }, + { + "type": "ik", + "name": "spineboy-front-arm-ik", + "target": "spineboy-front-arm-target", + "bones": [ "front-arm", "front-bracer" ] + }, + { + "type": "ik", + "name": "spineboy-back-arm-ik", + "target": "spineboy-back-arm-target", + "bones": [ "back-arm", "back-bracer" ], + "bendPositive": false + } +], +"skins": [ + { + "name": "default", + "attachments": { + "back-arm": { + "back-arm": { "x": 28.56735, "y": -12.031482, "rotation": 16.76, "width": 91, "height": 49 } + }, + "back-bracer": { + "back-bracer": { "x": 13.2, "y": -4.28, "rotation": -0.73, "width": 77, "height": 55 } + }, + "back-hand": { + "back-hand": { "x": 18.61, "y": 4.24, "rotation": -10.99, "width": 72, "height": 68 } + }, + "back-knee": { + "back-knee": { "x": 45.77, "y": 20.47, "rotation": 74.23, "width": 97, "height": 134 } + }, + "back-thigh": { + "back-thigh": { "x": 37.85, "y": -4.37, "rotation": 19.25, "width": 78, "height": 47 } + }, + "eyes-open": { + "eyes-open": { "x": 93.24, "y": -25.45, "rotation": -70.58, "width": 93, "height": 89 } + }, + "front-arm": { + "front-arm": { "x": 33.67632, "y": -1.5277977, "rotation": 14.02, "width": 96, "height": 51 } + }, + "front-bracer": { + "front-bracer": { "x": 11.68, "y": -1.37, "rotation": -6.28, "width": 81, "height": 58 } + }, + "front-hand": { + "front-hand": { "x": 35.7, "y": 7.84, "rotation": -13.97, "width": 82, "height": 75 }, + "front-open-hand": { "x": 42.55, "y": 4.62, "rotation": 62.19, "width": 86, "height": 87 }, + "gun": { "x": 98.91, "y": 22.98, "rotation": 56.35, "width": 213, "height": 206 } + }, + "front-thigh": { + "front-thigh": { "x": 45.7, "y": -3.1, "rotation": 16.66, "width": 114, "height": 58 } + }, + "gun": { + "gun-nohand": { "x": 54.64538, "y": -24.93315, "rotation": 55.19504, "width": 210, "height": 203 } + }, + "head": { + "head": { + "type": "mesh", + "uvs": [ 0.7346124, 0.04542315, 0.8841381, 0.1703323, 0.889555, 0.3197607, 0.9112583, 0.2746266, 0.9461012, 0.2021681, 1, 0.2989214, 1, 0.3455444, 1, 0.4508005, 0.912488, 0.5120558, 0.845145, 0.512067, 0.8208988, 0.596635, 0.779146, 0.6725744, 0.7360463, 0.7546382, 0.8357142, 0.7399401, 0.847836, 0.8452756, 0.7549024, 0.931014, 0.6377253, 1, 0.3939432, 1, 0.14746737, 0.8293528, 0, 0.5941853, 0, 0.3664461, 0.09622984, 0.2035285, 0.2147428, 0.14594176, 0.4517929, 0.15692776, 0.5150894, 0.12629694, 0.5069992, 0.0785296, 0.4207856, 0, 0.562206, 0, 0.190548, 0.3994857, 0.2794247, 0.3137335, 0.7939577, 0.4790041, 0.76029, 0.8599736, 0.5342138, 0.16964203, 0.532072, 0.04286435, 0.6194852, 0.08783679, 0.7042377, 0.16684856, 0.6905317, 0.431997, 0.8559172, 0.378615, 0.4584449, 0.3499711, 0.4865759, 0.301929, 0.6630738, 0.3506467, 0.5843914, 0.3944841, 0.704681, 0.2624155, 0.5198546, 0.21923983 ], + "triangles": [ 23, 24, 32, 32, 24, 34, 35, 34, 0, 34, 25, 33, 34, 24, 25, 33, 27, 34, 34, 27, 0, 25, 26, 33, 33, 26, 27, 32, 35, 42, 35, 0, 1, 32, 34, 35, 36, 40, 37, 40, 42, 37, 37, 42, 2, 40, 43, 42, 2, 42, 1, 43, 32, 42, 42, 35, 1, 7, 37, 6, 37, 2, 6, 6, 2, 5, 2, 3, 5, 3, 4, 5, 8, 37, 7, 10, 36, 30, 10, 11, 36, 15, 16, 31, 18, 12, 17, 38, 18, 28, 12, 31, 16, 12, 41, 36, 41, 12, 18, 41, 18, 38, 38, 28, 29, 15, 31, 14, 12, 16, 17, 14, 31, 13, 31, 12, 13, 18, 19, 28, 12, 36, 11, 19, 20, 28, 29, 28, 21, 38, 39, 41, 28, 20, 21, 39, 43, 40, 38, 29, 39, 21, 22, 29, 29, 22, 39, 22, 23, 39, 39, 23, 43, 43, 23, 32, 41, 39, 40, 10, 30, 9, 41, 40, 36, 8, 9, 37, 9, 30, 37, 30, 36, 37 ], + "vertices": [ 2.0, 32.0, 58.33, -14.31, 0.30205, 33.0, -0.88, -20.72, 0.69795, 3.0, 30.0, 69.21, 19.04, 0.07711, 31.0, 87.24, -25.34, 0.8077, 32.0, 14.49, -47.57, 0.11518, 3.0, 29.0, 43.19, 28.99, 0.10855, 30.0, 24.81, 15.35, 0.61823, 31.0, 50.15, -50.03, 0.27322, 1.0, 30.0, 38.53, 10.15, 1.0, 1.0, 30.0, 60.57, 1.79, 1.0, 1.0, 30.0, 32.5, -14.23, 1.0, 1.0, 30.0, 18.62, -14.92, 1.0, 2.0, 29.0, 45.01, -20.18, 0.76042, 30.0, -12.71, -16.48, 0.23958, 1.0, 28.0, 166.12, -105.42, 1.0, 1.0, 28.0, 160.05, -88.21, 1.0, 1.0, 28.0, 134.1, -90.39, 1.0, 1.0, 28.0, 108.99, -87.24, 1.0, 1.0, 28.0, 82.04, -84.36, 1.0, 1.0, 28.0, 95.16, -108.38, 1.0, 1.0, 28.0, 66.64, -121.91, 1.0, 1.0, 28.0, 34.17, -106.65, 1.0, 1.0, 28.0, 4.23, -83.54, 1.0, 1.0, 28.0, -17.74, -21.23, 1.0, 1.0, 28.0, 8.01, 58.67, 1.0, 1.0, 28.0, 60.82, 119.66, 1.0, 1.0, 28.0, 124.82, 142.22, 1.0, 1.0, 28.0, 179.28, 133.77, 1.0, 1.0, 28.0, 206.14, 109.19, 1.0, 3.0, 28.0, 224.42, 47.51, 0.55599, 32.0, 39.26, 67.02, 0.19527, 33.0, 47.76, 47.19, 0.24873, 3.0, 28.0, 238.73, 34.37, 0.20521, 32.0, 45.19, 48.52, 0.20866, 33.0, 37.74, 30.54, 0.58612, 2.0, 32.0, 59.59, 48.14, 0.05508, 33.0, 46.95, 19.46, 0.94492, 1.0, 33.0, 79.02, 11.41, 1.0, 1.0, 33.0, 46.15, -8.3, 1.0, 1.0, 28.0, 132.71, 90.25, 1.0, 1.0, 28.0, 164.81, 76.03, 1.0, 1.0, 28.0, 164.73, -71.85, 1.0, 1.0, 28.0, 54.62, -100.99, 1.0, 3.0, 28.0, 228.27, 25.19, 0.29316, 32.0, 31.56, 45.72, 0.3088, 33.0, 26.66, 38.96, 0.39805, 1.0, 33.0, 46.59, 6.85, 1.0, 2.0, 32.0, 51.44, 18.64, 0.07922, 33.0, 19.38, 6.16, 0.92078, 1.0, 32.0, 24.18, 0.23, 1.0, 1.0, 28.0, 168.62, -40.76, 1.0, 3.0, 29.0, 25.61, 19.96, 0.50536, 30.0, 6.84, 23.59, 0.2645, 31.0, 30.44, -51.51, 0.23014, 1.0, 28.0, 170.76, 26.69, 1.0, 4.0, 28.0, 186.8, 24.26, 0.75057, 31.0, -2.82, 45.62, 0.07609, 32.0, -4.94, 65.43, 0.10488, 33.0, 17.45, 79.4, 0.06845, 1.0, 31.0, 10.01, -2.69, 1.0, 1.0, 28.0, 169.6, -9.91, 1.0, 1.0, 31.0, 38.3, 1.56, 1.0, 4.0, 28.0, 213.04, 23.94, 0.43153, 31.0, 22.88, 50.92, 0.09832, 32.0, 17.71, 52.17, 0.26174, 33.0, 22.39, 53.63, 0.20841 ], + "hull": 28, + "edges": [ 10, 8, 4, 2, 2, 0, 0, 54, 52, 54, 52, 50, 50, 48, 48, 46, 46, 44, 44, 42, 42, 40, 40, 56, 56, 58, 60, 18, 18, 16, 16, 14, 38, 40, 38, 36, 36, 34, 32, 34, 32, 30, 30, 62, 62, 28, 28, 26, 26, 24, 24, 22, 22, 20, 20, 18, 28, 30, 48, 64, 50, 66, 66, 54, 0, 68, 68, 48, 66, 68, 2, 70, 70, 64, 68, 70, 72, 60, 10, 12, 12, 14, 4, 12, 4, 6, 6, 8, 10, 6, 14, 74, 4, 74, 74, 72, 58, 76, 78, 76, 78, 44, 80, 78, 72, 82, 82, 76, 80, 82, 80, 74, 70, 84, 84, 80, 4, 84, 64, 86, 86, 78, 84, 86 ], + "width": 271.0, + "height": 298.0 + } + }, + "lower-leg": { + "lower-leg": { "x": 76.2, "y": 22.21, "rotation": 66.28, "width": 146, "height": 195 } + }, + "mouth-smile": { + "mouth-grind": { "x": 27.659973, "y": -31.329987, "rotation": -70.58, "width": 93, "height": 59 }, + "mouth-smile": { "x": 27.66, "y": -31.33, "rotation": -70.58, "width": 93, "height": 59 } + }, + "neck": { + "neck": { "x": 15.1, "y": -1.67, "rotation": -58.92, "width": 36, "height": 41 } + }, + "raptor-back-arm": { + "raptor-back-arm": { + "type": "mesh", + "uvs": [ 0.38712, 0.29362, 0.31383, 0.46513, 0.29243, 0.51522, 0.32476, 0.49311, 0.57587, 0.32139, 0.63255, 0.28263, 0.71632, 0.34508, 0.94948, 0.51888, 0.94948, 0.60129, 1, 0.65257, 1, 0.90624, 0.95463, 0.99934, 0.88957, 0.83205, 0.80295, 0.99999, 0.75236, 0.75696, 0.6654, 0.71301, 0.62289, 0.63243, 0.58195, 0.65032, 0.22479, 0.80641, 0.07792, 0.73315, 0.07825, 0.6655, 0.07985, 0.34307, 0, 0.29728, 0, 0, 0.32335, 0 ], + "triangles": [ 6, 15, 16, 5, 6, 16, 5, 16, 4, 6, 7, 15, 16, 17, 4, 8, 15, 7, 14, 15, 8, 12, 14, 8, 12, 8, 9, 12, 9, 10, 11, 12, 10, 13, 14, 12, 17, 3, 4, 19, 20, 2, 18, 19, 2, 18, 2, 3, 18, 3, 17, 21, 22, 23, 24, 21, 23, 0, 21, 24, 1, 21, 0, 1, 20, 21, 2, 20, 1 ], + "vertices": [ 2.0, 13.0, 36.95, 33.31, 0.91667, 14.0, 68.54, 41.05, 0.08333, 2.0, 13.0, 66.02, 20.36, 0.76814, 14.0, 41.42, 24.4, 0.23186, 2.0, 13.0, 74.51, 16.58, 0.64468, 14.0, 33.5, 19.53, 0.35532, 2.0, 13.0, 70.89, 21.97, 0.29072, 14.0, 40.0, 19.47, 0.70928, 3.0, 13.0, 42.78, 63.9, 0.11484, 14.0, 90.47, 18.95, 0.60855, 22.0, -17.2, 9.01, 0.27661, 2.0, 14.0, 101.86, 18.84, 0.45956, 22.0, -14.39, 20.05, 0.54044, 2.0, 14.0, 106.48, 2.09, 0.0625, 22.0, 2.98, 20.56, 0.9375, 1.0, 22.0, 51.32, 21.99, 1.0, 1.0, 22.0, 60.41, 11.11, 1.0, 1.0, 22.0, 72.39, 9.62, 1.0, 1.0, 22.0, 100.37, -23.87, 1.0, 1.0, 22.0, 104.96, -40.9, 1.0, 1.0, 22.0, 78.37, -25.62, 1.0, 1.0, 22.0, 86.06, -56.84, 1.0, 1.0, 22.0, 52.92, -30.05, 1.0, 2.0, 14.0, 62.25, -43.93, 0.0625, 22.0, 37.19, -33.34, 0.9375, 2.0, 14.0, 64.89, -28.66, 0.3125, 22.0, 22.99, -27.14, 0.6875, 2.0, 14.0, 57.7, -27.17, 0.30612, 22.0, 19.84, -33.78, 0.69388, 2.0, 13.0, 124.19, 3.84, 0.19395, 14.0, -5.1, -14.24, 0.80605, 2.0, 13.0, 110.78, -19.65, 0.3125, 14.0, -16.89, 10.11, 0.6875, 2.0, 13.0, 99.15, -19.2, 0.51614, 14.0, -9.94, 19.44, 0.48386, 2.0, 13.0, 43.73, -17.04, 0.9375, 14.0, 23.18, 63.93, 0.0625, 1.0, 13.0, 35.41, -29.78, 1.0, 1.0, 13.0, -15.69, -28.02, 1.0, 1.0, 13.0, -13.88, 24.65, 1.0 ], + "hull": 25, + "edges": [ 44, 46, 44, 42, 38, 36, 32, 30, 30, 28, 28, 26, 24, 22, 18, 16, 16, 14, 46, 48, 38, 4, 6, 4, 6, 36, 42, 40, 40, 38, 4, 2, 2, 0, 40, 2, 10, 32, 36, 34, 34, 32, 10, 8, 8, 6, 34, 8, 14, 12, 12, 10, 12, 30, 18, 20, 22, 20, 26, 24, 48, 0 ], + "width": 163.0, + "height": 172.0 + } + }, + "raptor-body": { + "raptor-body": { + "type": "mesh", + "uvs": [ 0.8830523, 0.02793763, 0.9175824, 0.05592221, 0.9496977, 0.09133435, 0.9757344, 0.13212638, 0.9905453, 0.17338754, 0.9975896, 0.22986567, 0.9967843, 0.2722596, 0.993532, 0.3128746, 0.9839026, 0.384772, 0.9795633, 0.3530713, 0.9668674, 0.38782185, 0.9644184, 0.3484111, 0.9474193, 0.38391465, 0.9448883, 0.3323768, 0.9386028, 0.3480761, 0.9378383, 0.3255926, 0.9266673, 0.3433345, 0.9253941, 0.3153849, 0.9118165, 0.3498946, 0.9092546, 0.2896327, 0.8998436, 0.279292, 0.8751436, 0.3397873, 0.8622542, 0.40837935, 0.8742906, 0.4581786, 0.842722, 0.5022554, 0.81998, 0.5962152, 0.8169723, 0.6864139, 0.8195135, 0.7069048, 0.7869628, 0.8218317, 0.7428338, 0.91135, 0.686991, 0.9758515, 0.6243963, 1, 0.5884869, 1, 0.5146564, 1, 0.4912057, 0.8367967, 0.472703, 0.7848821, 0.4470737, 0.7464372, 0.4247158, 0.721755, 0.3965997, 0.7093764, 0.370433, 0.6954772, 0.3468392, 0.684162, 0.3237748, 0.6759035, 0.298771, 0.6671107, 0.2682682, 0.655661, 0.2402087, 0.6444689, 0.2153968, 0.6330818, 0.18744975, 0.620256, 0.1629976, 0.6105588, 0.13947907, 0.601232, 0.11930791, 0.593918, 0.09945348, 0.586719, 0.08096803, 0.5823985, 0.06076143, 0.5822466, 0.0425701, 0.5814894, 0.023884654, 0.5825305, 0, 0.5845495, 0, 0.5629796, 0.02089591, 0.5504595, 0.03793905, 0.5397445, 0.05634114, 0.5269183, 0.07459894, 0.513058, 0.09506576, 0.4988121, 0.11727748, 0.4833357, 0.1375028, 0.4692433, 0.1627729, 0.451738, 0.18781847, 0.4343883, 0.2130787, 0.4189027, 0.2387298, 0.4031775, 0.267346, 0.385782, 0.2968954, 0.3672304, 0.32578605, 0.3501399, 0.3572494, 0.332937, 0.3799154, 0.32070225, 0.4110286, 0.3169557, 0.4414496, 0.2913691, 0.4758391, 0.28482935, 0.4945335, 0.3183195, 0.5287962, 0.3556892, 0.6014388, 0.4175627, 0.6511592, 0.41078, 0.7084254, 0.424461, 0.7118011, 0.2925007, 0.7094593, 0.19468226, 0.7068305, 0.08347955, 0.7602334, 0.019407805, 0.7930115, 0, 0.8387518, 0, 0.0225816, 0.5679001, 0.04004997, 0.5614114, 0.05877378, 0.5531159, 0.07877007, 0.5478622, 0.09747399, 0.5400992, 0.12058886, 0.5308609, 0.14232916, 0.526626, 0.16642132, 0.5230393, 0.19162972, 0.5213749, 0.21770437, 0.512414, 0.24501455, 0.5021788, 0.2757729, 0.495047, 0.3014133, 0.492425, 0.3286014, 0.4907681, 0.3541026, 0.4918753, 0.38136765, 0.493469, 0.4082407, 0.4949544, 0.4413601, 0.509464, 0.4712217, 0.5316874, 0.4988624, 0.5656781, 0.5316186, 0.6005403, 0.606711, 0.6748437, 0.6856993, 0.6724257, 0.7506015, 0.5943672, 0.768864, 0.4655705, 0.7773012, 0.3416086, 0.7735483, 0.22842404, 0.8056047, 0.0940074, 0.8673608, 0.07427144, 0.9048387, 0.17058964, 0.9095971, 0.1993311, 0.9195905, 0.21397166, 0.9319284, 0.20182796, 0.9360822, 0.17462817, 0.9287293, 0.1402951, 0.9167224, 0.1345479, 0.9066701, 0.14854056, 0.9166299, 0.09794877, 0.898683, 0.0951363, 0.8803358, 0.0940422, 0.9308953, 0.1152906, 0.9399758, 0.15741438, 0.9421314, 0.1747714, 0.9434525, 0.1964702, 0.941915, 0.20762804, 0.92187, 0.22801016, 0.9047951, 0.23488615, 0.8898955, 0.19847324, 0.8874017, 0.1691368, 0.878313, 0.12121982, 0.5850038, 0.8424266, 0.6302353, 0.8645973, 0.6828363, 0.8519184, 0.729234, 0.8045317, 0.7589807, 0.7632321, 0.7851314, 0.7034718, 0.7853561, 0.6782998, 0.7814052, 0.592774, 0.9472084, 0.11131486, 0.9623616, 0.1618001, 0.9636721, 0.19318393, 0.9580635, 0.2105216, 0.9760027, 0.1676291, 0.980258, 0.2217165, 0.9803863, 0.2646717, 0.9793325, 0.3161202, 0.9639446, 0.2589648, 0.956484, 0.3198186, 0.9432022, 0.2467812, 0.9388563, 0.28791535 ], + "triangles": [ 134, 135, 116, 107, 34, 35, 106, 107, 35, 106, 35, 36, 105, 106, 36, 78, 107, 77, 77, 107, 106, 76, 77, 106, 76, 106, 105, 76, 105, 75, 116, 135, 123, 134, 116, 117, 123, 122, 121, 123, 121, 120, 116, 123, 120, 130, 119, 120, 119, 117, 120, 126, 123, 136, 122, 125, 124, 125, 122, 126, 155, 20, 133, 20, 21, 112, 19, 20, 156, 133, 118, 132, 131, 132, 118, 122, 124, 127, 133, 113, 134, 131, 130, 148, 155, 131, 148, 130, 129, 147, 129, 128, 146, 17, 18, 19, 129, 146, 147, 1, 124, 125, 136, 114, 126, 16, 17, 15, 154, 17, 156, 2, 127, 124, 155, 148, 150, 145, 127, 2, 146, 128, 3, 148, 147, 150, 2, 124, 1, 151, 156, 153, 152, 154, 156, 13, 154, 11, 147, 149, 4, 11, 12, 13, 11, 154, 152, 4, 149, 3, 8, 9, 7, 111, 22, 23, 22, 112, 21, 112, 81, 113, 81, 82, 113, 113, 82, 114, 82, 83, 114, 83, 84, 114, 84, 85, 114, 114, 86, 115, 114, 85, 86, 115, 0, 1, 115, 86, 0, 10, 11, 9, 11, 152, 9, 9, 152, 7, 7, 152, 6, 6, 152, 151, 6, 151, 5, 5, 151, 150, 150, 4, 5, 150, 147, 4, 146, 3, 149, 145, 2, 3, 151, 153, 150, 152, 156, 151, 126, 114, 115, 135, 113, 114, 147, 146, 149, 1, 125, 115, 145, 3, 128, 13, 15, 154, 153, 155, 150, 13, 14, 15, 15, 17, 154, 20, 112, 113, 125, 126, 115, 148, 130, 147, 156, 155, 153, 127, 145, 128, 20, 113, 133, 127, 128, 121, 17, 19, 156, 135, 114, 136, 132, 131, 155, 120, 128, 129, 155, 133, 132, 131, 118, 119, 118, 117, 119, 156, 20, 155, 131, 119, 130, 133, 117, 118, 130, 120, 129, 122, 123, 126, 117, 116, 120, 121, 122, 127, 120, 121, 128, 113, 135, 134, 135, 136, 123, 133, 134, 117, 24, 111, 23, 111, 112, 22, 111, 80, 112, 112, 80, 81, 110, 107, 78, 30, 139, 29, 139, 140, 29, 29, 140, 28, 140, 108, 109, 140, 141, 28, 28, 141, 27, 27, 141, 142, 140, 109, 141, 141, 109, 142, 142, 26, 27, 142, 143, 26, 142, 109, 143, 26, 143, 25, 109, 110, 143, 110, 144, 143, 143, 144, 25, 109, 108, 110, 110, 79, 80, 79, 110, 78, 25, 144, 24, 110, 111, 144, 110, 80, 111, 144, 111, 24, 108, 34, 107, 30, 31, 138, 138, 31, 32, 138, 32, 137, 32, 33, 137, 33, 34, 137, 138, 139, 30, 138, 137, 139, 139, 137, 140, 108, 140, 137, 137, 34, 108, 110, 108, 107, 37, 105, 36, 104, 105, 37, 104, 37, 38, 38, 103, 104, 105, 104, 75, 103, 73, 104, 104, 73, 74, 75, 104, 74, 38, 39, 103, 39, 102, 103, 40, 102, 39, 101, 102, 40, 73, 103, 72, 101, 71, 102, 72, 103, 102, 72, 102, 71, 101, 40, 41, 100, 101, 41, 100, 41, 42, 100, 42, 99, 69, 100, 99, 71, 101, 70, 69, 70, 100, 101, 100, 70, 42, 43, 99, 99, 43, 98, 43, 44, 98, 98, 44, 97, 98, 97, 67, 99, 98, 68, 68, 98, 67, 99, 68, 69, 44, 45, 97, 97, 45, 96, 45, 46, 96, 96, 46, 95, 96, 95, 65, 97, 96, 66, 96, 65, 66, 97, 66, 67, 46, 47, 95, 95, 47, 94, 47, 48, 94, 94, 48, 93, 94, 93, 63, 95, 94, 64, 94, 63, 64, 95, 64, 65, 48, 49, 93, 93, 49, 92, 92, 49, 91, 49, 50, 91, 91, 61, 92, 93, 92, 62, 92, 61, 62, 93, 62, 63, 50, 90, 91, 51, 89, 90, 50, 51, 90, 51, 52, 89, 89, 59, 90, 59, 60, 90, 90, 60, 91, 60, 61, 91, 55, 87, 54, 55, 56, 87, 54, 87, 53, 52, 88, 89, 87, 88, 53, 52, 53, 88, 56, 57, 87, 87, 57, 88, 57, 58, 88, 88, 58, 89, 58, 59, 89 ], + "vertices": [ 2.0, 8.0, 142.31, -163.1, 0.91085, 74.0, -65.79, 94.58, 0.08915, 2.0, 8.0, 129.87, -206.92, 0.78514, 74.0, -21.05, 86.04, 0.21486, 2.0, 8.0, 113.94, -247.72, 0.77045, 74.0, 21.0, 73.75, 0.22955, 2.0, 8.0, 95.41, -280.88, 0.81697, 74.0, 55.65, 58.2, 0.18303, 2.0, 8.0, 76.47, -299.85, 0.92186, 74.0, 76.21, 41.0, 0.07814, 2.0, 8.0, 50.32, -309.1, 0.93376, 74.0, 87.72, 15.77, 0.06624, 2.0, 8.0, 30.6, -308.34, 0.9245, 74.0, 88.7, -3.95, 0.0755, 2.0, 8.0, 11.66, -304.47, 0.91842, 74.0, 86.51, -23.15, 0.08158, 2.0, 8.0, -21.93, -292.74, 0.98449, 74.0, 77.77, -57.64, 0.01551, 2.0, 8.0, -7.26, -287.07, 0.90726, 74.0, 70.83, -43.53, 0.09274, 2.0, 8.0, -23.63, -271.23, 0.89469, 74.0, 56.49, -61.23, 0.10531, 2.0, 8.0, -5.35, -267.89, 0.87252, 74.0, 51.57, -43.31, 0.12748, 2.0, 8.0, -22.13, -246.63, 0.90956, 74.0, 31.85, -61.9, 0.09044, 2.0, 8.0, 1.79, -243.11, 0.79155, 74.0, 26.25, -38.38, 0.20845, 2.0, 8.0, -5.62, -235.26, 0.80291, 74.0, 19.09, -46.44, 0.19709, 2.0, 8.0, 4.82, -234.16, 0.75452, 74.0, 17.07, -36.14, 0.24548, 2.0, 8.0, -3.61, -220.15, 0.7702, 74.0, 3.85, -45.77, 0.2298, 2.0, 8.0, 9.36, -218.37, 0.69443, 74.0, 0.94, -33.0, 0.30557, 2.0, 8.0, -6.91, -201.42, 0.7716, 74.0, -14.51, -50.7, 0.2284, 2.0, 8.0, 21.07, -197.82, 0.52991, 74.0, -20.56, -23.15, 0.47009, 2.0, 8.0, 25.72, -185.86, 0.48384, 74.0, -32.88, -19.56, 0.51616, 3.0, 8.0, -2.82, -155.01, 0.49549, 54.0, 99.81, 14.95, 0.1998, 74.0, -61.14, -50.76, 0.30472, 3.0, 8.0, -34.92, -139.14, 0.52773, 54.0, 107.98, -19.92, 0.45684, 74.0, -74.17, -84.14, 0.01543, 2.0, 8.0, -57.88, -154.65, 0.552, 54.0, 134.55, -27.77, 0.448, 4.0, 6.0, 214.38, -86.5, 0.416, 7.0, 12.5, -126.76, 0.24294, 8.0, -78.89, -115.02, 0.17462, 54.0, 117.33, -69.19, 0.16644, 3.0, 6.0, 164.81, -103.2, 0.46938, 7.0, -35.73, -106.53, 0.34058, 54.0, 123.6, -121.11, 0.19004, 3.0, 6.0, 135.98, -133.89, 0.80096, 7.0, -77.65, -110.49, 0.11639, 54.0, 147.79, -155.59, 0.08264, 3.0, 6.0, 132.63, -143.37, 0.82428, 7.0, -86.43, -115.4, 0.10285, 54.0, 156.4, -160.78, 0.07287, 1.0, 6.0, 67.3, -160.11, 1.0, 2.0, 2.0, 226.09, -123.55, 0.23474, 6.0, -2.28, -158.53, 0.76526, 3.0, 2.0, 156.49, -155.76, 0.52831, 6.0, -76.36, -138.65, 0.37693, 1.0, 172.42, -169.15, 0.09477, 3.0, 2.0, 77.76, -169.48, 0.67731, 6.0, -145.59, -98.75, 0.09201, 1.0, 92.8, -175.99, 0.23068, 3.0, 2.0, 32.4, -170.91, 0.60686, 61.0, -141.38, 131.19, 0.07586, 1.0, 47.48, -173.48, 0.31728, 3.0, 2.0, -60.88, -173.87, 0.39257, 61.0, -55.62, 167.98, 0.26021, 1.0, -45.7, -168.32, 0.34722, 4.0, 62.0, -58.53, 122.52, 0.02965, 2.0, -92.91, -98.95, 0.15809, 61.0, 1.54, 109.92, 0.56291, 1.0, -71.11, -90.91, 0.24934, 5.0, 63.0, -87.14, 125.38, 0.01694, 62.0, -30.38, 104.17, 0.12049, 2.0, -117.05, -75.56, 0.06243, 61.0, 32.55, 96.96, 0.67353, 1.0, -93.12, -65.52, 0.12661, 5.0, 63.0, -54.56, 107.85, 0.06533, 62.0, 5.17, 93.91, 0.35431, 2.0, -149.99, -58.72, 0.01512, 61.0, 69.37, 93.3, 0.52081, 1.0, -124.48, -45.88, 0.04444, 4.0, 64.0, -91.18, 96.68, 0.02003, 63.0, -26.17, 96.68, 0.17282, 62.0, 35.28, 88.98, 0.56052, 61.0, 99.87, 93.89, 0.24663, 4.0, 64.0, -55.58, 91.31, 0.08871, 63.0, 9.43, 91.31, 0.37251, 62.0, 71.21, 91.24, 0.43883, 61.0, 134.8, 102.61, 0.09995, 5.0, 65.0, -80.72, 91.6, 0.01487, 64.0, -22.44, 85.2, 0.21852, 63.0, 42.57, 85.2, 0.55905, 62.0, 104.89, 92.27, 0.18543, 61.0, 167.74, 109.71, 0.02213, 4.0, 65.0, -51.3, 84.41, 0.07099, 64.0, 7.44, 80.26, 0.46092, 63.0, 72.45, 80.26, 0.39268, 62.0, 135.14, 93.74, 0.07541, 4.0, 65.0, -22.46, 78.67, 0.2126, 64.0, 36.63, 76.74, 0.62934, 63.0, 101.64, 76.74, 0.13917, 62.0, 164.42, 96.46, 0.01889, 4.0, 66.0, -61.72, 72.53, 0.05014, 65.0, 8.81, 72.53, 0.49668, 64.0, 68.28, 72.99, 0.41049, 63.0, 133.29, 72.99, 0.04268, 3.0, 66.0, -23.6, 64.7, 0.21233, 65.0, 46.93, 64.7, 0.64547, 64.0, 106.89, 68.09, 0.1422, 4.0, 67.0, -56.68, 59.57, 0.00497, 66.0, 11.45, 57.2, 0.56359, 65.0, 81.98, 57.2, 0.40675, 64.0, 142.41, 63.26, 0.0247, 4.0, 68.0, -88.32, 52.48, 0.00856, 67.0, -26.06, 50.98, 0.14719, 66.0, 42.4, 49.87, 0.68541, 65.0, 112.93, 49.87, 0.15884, 4.0, 68.0, -53.99, 42.22, 0.05573, 67.0, 8.43, 41.3, 0.39231, 66.0, 77.27, 41.61, 0.51595, 65.0, 147.8, 41.61, 0.036, 5.0, 69.0, -79.08, 32.17, 0.00731, 68.0, -23.87, 33.95, 0.20888, 67.0, 38.69, 33.54, 0.55959, 66.0, 107.81, 35.1, 0.21646, 65.0, 178.34, 35.1, 0.00775, 5.0, 69.0, -49.94, 24.87, 0.05717, 68.0, 5.1, 25.99, 0.4278, 67.0, 67.79, 26.07, 0.45737, 66.0, 137.19, 28.83, 0.05638, 65.0, 207.72, 28.83, 0.00128, 5.0, 70.0, -74.0, 19.39, 0.00687, 69.0, -24.91, 18.93, 0.21088, 68.0, 29.98, 19.49, 0.5528, 67.0, 92.78, 19.99, 0.22286, 66.0, 162.41, 23.77, 0.00659, 4.0, 70.0, -49.4, 13.39, 0.05569, 69.0, -0.28, 13.08, 0.44113, 68.0, 54.48, 13.08, 0.43894, 67.0, 117.38, 14.0, 0.06424, 4.0, 70.0, -26.39, 8.9, 0.21474, 69.0, 22.77, 8.73, 0.56103, 68.0, 77.42, 8.22, 0.21699, 67.0, 140.4, 9.52, 0.00724, 3.0, 70.0, -1.0, 6.11, 0.49366, 69.0, 48.17, 6.1, 0.44664, 68.0, 102.76, 5.01, 0.05971, 3.0, 70.0, 21.83, 3.3, 0.77042, 69.0, 71.02, 3.44, 0.22113, 68.0, 125.54, 1.84, 0.00845, 2.0, 70.0, 45.36, 1.27, 0.92172, 69.0, 94.56, 1.55, 0.07828, 2.0, 70.0, 75.48, -1.02, 0.98437, 69.0, 124.7, -0.54, 0.01563, 2.0, 70.0, 74.41, -10.99, 0.98712, 69.0, 123.69, -10.52, 0.01288, 2.0, 70.0, 47.53, -13.96, 0.9286, 69.0, 96.83, -13.66, 0.0714, 3.0, 70.0, 25.58, -16.62, 0.78026, 69.0, 74.89, -16.46, 0.21218, 68.0, 128.96, -18.15, 0.00756, 4.0, 70.0, 1.81, -20.07, 0.50456, 69.0, 51.15, -20.06, 0.43841, 68.0, 105.14, -21.21, 0.05555, 67.0, 168.62, -19.43, 0.00148, 4.0, 70.0, -21.82, -24.02, 0.2241, 69.0, 27.54, -24.16, 0.55698, 68.0, 81.45, -24.77, 0.20577, 67.0, 144.99, -23.39, 0.01316, 5.0, 70.0, -48.25, -27.85, 0.06037, 69.0, 1.14, -28.15, 0.44261, 68.0, 54.96, -28.17, 0.41953, 67.0, 118.56, -27.24, 0.07662, 66.0, 190.11, -22.36, 8.7E-4, 5.0, 70.0, -76.93, -32.01, 0.00843, 69.0, -27.52, -32.49, 0.21461, 68.0, 26.21, -31.86, 0.52853, 67.0, 89.88, -31.41, 0.23794, 66.0, 161.62, -27.71, 0.01048, 5.0, 69.0, -53.61, -36.45, 0.05984, 68.0, 0.04, -35.22, 0.4064, 67.0, 63.76, -35.22, 0.46847, 66.0, 135.68, -32.58, 0.06423, 65.0, 206.21, -32.58, 0.00106, 5.0, 69.0, -86.21, -41.34, 0.00821, 68.0, -32.66, -39.38, 0.19546, 67.0, 31.14, -39.93, 0.57299, 66.0, 103.28, -38.62, 0.21339, 65.0, 173.81, -38.62, 0.00994, 4.0, 68.0, -65.07, -43.5, 0.05047, 67.0, -1.2, -44.59, 0.45101, 66.0, 71.16, -44.6, 0.43746, 65.0, 141.69, -44.6, 0.06106, 4.0, 68.0, -97.64, -46.72, 0.00724, 67.0, -33.71, -48.36, 0.20423, 66.0, 38.83, -49.7, 0.58773, 65.0, 109.36, -49.7, 0.2008, 4.0, 67.0, -66.72, -52.2, 0.05217, 66.0, 6.0, -54.89, 0.45622, 65.0, 76.53, -54.89, 0.46325, 64.0, 145.49, -48.91, 0.02835, 3.0, 66.0, -30.62, -60.6, 0.17334, 65.0, 39.91, -60.6, 0.683, 64.0, 109.41, -57.39, 0.14366, 4.0, 66.0, -68.46, -66.77, 0.0295, 65.0, 2.07, -66.77, 0.50408, 64.0, 72.15, -66.42, 0.40417, 63.0, 137.16, -66.42, 0.06225, 4.0, 65.0, -34.88, -72.32, 0.18739, 64.0, 35.73, -74.76, 0.58778, 63.0, 100.73, -74.76, 0.2056, 62.0, 195.5, -51.82, 0.01923, 4.0, 65.0, -75.09, -77.7, 0.04676, 64.0, -3.96, -83.19, 0.39617, 63.0, 61.05, -83.19, 0.48167, 62.0, 158.49, -68.43, 0.07539, 3.0, 64.0, -32.54, -89.19, 0.14427, 63.0, 32.47, -89.19, 0.63908, 62.0, 131.82, -80.33, 0.21665, 4.0, 64.0, -71.85, -91.35, 0.04785, 63.0, -6.84, -91.35, 0.40108, 62.0, 93.85, -90.74, 0.50635, 61.0, 189.98, -72.27, 0.04472, 3.0, 63.0, -45.16, -103.67, 0.17783, 62.0, 58.99, -110.86, 0.68949, 61.0, 159.33, -98.37, 0.13269, 4.0, 63.0, -88.59, -107.18, 0.06196, 62.0, 17.28, -123.46, 0.5382, 2.0, -120.43, 156.97, 0.01597, 61.0, 120.58, -118.3, 0.38387, 4.0, 63.0, -112.39, -91.86, 0.01664, 62.0, -9.21, -113.51, 0.31712, 2.0, -96.32, 142.15, 0.06918, 61.0, 92.73, -113.3, 0.59706, 3.0, 62.0, -55.3, -106.16, 0.18947, 2.0, -52.49, 126.15, 0.211, 61.0, 46.08, -114.41, 0.59953, 3.0, 2.0, 40.2, 100.3, 0.70054, 6.0, -1.56, 132.44, 0.1247, 61.0, -49.65, -124.17, 0.17476, 2.0, 2.0, 102.91, 105.44, 0.48476, 6.0, 49.88, 96.2, 0.51524, 2.0, 6.0, 102.97, 46.59, 0.55391, 7.0, 16.89, 46.74, 0.44609, 2.0, 7.0, 77.99, 53.82, 0.34839, 8.0, 16.46, 51.73, 0.65161, 1.0, 8.0, 61.91, 55.28, 1.0, 1.0, 8.0, 113.57, 59.28, 1.0, 2.0, 8.0, 144.24, -7.82, 0.89352, 74.0, -220.64, 82.87, 0.10648, 2.0, 8.0, 153.81, -49.13, 0.88, 74.0, -180.33, 96.03, 0.12, 2.0, 8.0, 154.57, -106.94, 0.91167, 74.0, -122.81, 101.86, 0.08833, 2.0, 70.0, 46.28, -5.67, 0.88974, 69.0, 95.52, -5.38, 0.11026, 3.0, 70.0, 24.0, -6.32, 0.78319, 69.0, 73.25, -6.17, 0.21288, 68.0, 127.55, -7.82, 0.00393, 3.0, 70.0, 0.06, -7.63, 0.4984, 69.0, 49.31, -7.63, 0.45067, 68.0, 103.59, -8.74, 0.05093, 4.0, 70.0, -25.34, -7.36, 0.21021, 69.0, 23.92, -7.52, 0.57916, 68.0, 78.21, -8.06, 0.20281, 67.0, 141.46, -6.74, 0.00782, 4.0, 70.0, -49.23, -8.43, 0.05008, 69.0, 0.04, -8.74, 0.44936, 68.0, 54.3, -8.74, 0.44109, 67.0, 117.57, -7.82, 0.05946, 5.0, 70.0, -78.74, -9.59, 0.00411, 69.0, -29.46, -10.08, 0.20704, 68.0, 24.78, -9.42, 0.55388, 67.0, 88.06, -9.0, 0.22906, 66.0, 158.89, -5.38, 0.0059, 4.0, 69.0, -57.0, -9.28, 0.05054, 68.0, -2.74, -7.99, 0.42931, 67.0, 60.53, -8.04, 0.46828, 66.0, 131.34, -5.55, 0.05187, 5.0, 69.0, -87.47, -7.89, 0.00416, 68.0, -33.16, -5.91, 0.19066, 67.0, 30.07, -6.47, 0.59281, 66.0, 100.84, -5.23, 0.20446, 65.0, 171.37, -5.23, 0.00791, 4.0, 68.0, -64.88, -2.76, 0.04806, 67.0, -1.7, -3.86, 0.44622, 66.0, 68.99, -3.93, 0.45724, 65.0, 139.52, -3.93, 0.04848, 4.0, 68.0, -98.1, -2.85, 0.00302, 67.0, -34.91, -4.51, 0.16897, 66.0, 35.83, -5.93, 0.6491, 65.0, 106.36, -5.93, 0.17891, 3.0, 67.0, -69.74, -5.58, 0.03488, 66.0, 1.08, -8.43, 0.4896, 65.0, 71.61, -8.43, 0.47552, 4.0, 67.0, -108.75, -4.75, 0.00424, 66.0, -37.94, -9.2, 0.16984, 65.0, 32.59, -9.2, 0.69137, 64.0, 98.21, -6.7, 0.13455, 2.0, 65.0, 0.17, -8.31, 0.52543, 64.0, 65.82, -8.27, 0.47457, 3.0, 65.0, -34.17, -6.83, 0.18477, 64.0, 31.46, -9.41, 0.62696, 63.0, 96.47, -9.41, 0.18827, 4.0, 65.0, -66.3, -4.22, 0.01263, 64.0, -0.78, -9.24, 0.46677, 63.0, 64.23, -9.24, 0.48853, 62.0, 146.0, 4.52, 0.03206, 3.0, 64.0, -35.25, -8.87, 0.22735, 63.0, 29.76, -8.87, 0.65577, 62.0, 112.23, -2.39, 0.11689, 4.0, 64.0, -69.22, -8.55, 0.02776, 63.0, -4.21, -8.55, 0.41215, 62.0, 78.95, -9.25, 0.52977, 61.0, 160.59, 5.18, 0.03032, 3.0, 63.0, -46.14, -2.26, 0.12876, 62.0, 36.63, -11.94, 0.70822, 61.0, 119.45, -5.12, 0.16302, 3.0, 63.0, -84.0, 7.67, 0.04548, 62.0, -2.46, -10.23, 0.46291, 61.0, 80.69, -10.51, 0.4916, 4.0, 62.0, -40.04, -2.56, 0.20066, 2.0, -87.22, 27.36, 0.04102, 61.0, 42.35, -9.75, 0.69947, 1.0, -54.47, 34.43, 0.05884, 4.0, 62.0, -84.0, 4.08, 0.06346, 2.0, -45.32, 12.47, 0.1335, 61.0, -2.09, -11.18, 0.66178, 1.0, -14.03, 15.96, 0.14126, 1.0, 2.0, 50.64, -19.06, 1.0, 2.0, 2.0, 150.39, -14.78, 0.14978, 6.0, 9.3, -26.52, 0.85022, 2.0, 6.0, 96.28, -48.49, 0.94283, 7.0, -50.98, -20.17, 0.05717, 4.0, 6.0, 151.36, -15.54, 0.1938, 7.0, 12.13, -31.86, 0.65264, 54.0, 35.04, -116.47, 0.10585, 74.0, -188.88, -122.43, 0.0477, 4.0, 7.0, 70.75, -31.76, 0.42196, 8.0, -5.28, -31.36, 0.19392, 54.0, 5.95, -65.58, 0.22877, 74.0, -184.09, -64.0, 0.15534, 3.0, 8.0, 47.28, -25.92, 0.60156, 54.0, -31.67, -28.46, 0.26709, 74.0, -194.09, -12.11, 0.13136, 3.0, 8.0, 110.31, -65.62, 0.66779, 54.0, -41.11, 45.43, 0.13197, 74.0, -160.06, 54.14, 0.20024, 2.0, 8.0, 120.51, -143.55, 0.72576, 74.0, -83.35, 71.14, 0.27424, 2.0, 8.0, 76.35, -191.51, 0.55039, 74.0, -31.7, 31.36, 0.44961, 2.0, 8.0, 63.06, -197.7, 0.57574, 74.0, -24.37, 18.67, 0.42426, 2.0, 8.0, 56.42, -210.42, 0.59162, 74.0, -11.11, 13.17, 0.40838, 2.0, 8.0, 62.27, -225.94, 0.54866, 74.0, 3.83, 20.37, 0.45134, 2.0, 8.0, 74.99, -231.02, 0.55882, 74.0, 7.78, 33.48, 0.44118, 2.0, 8.0, 90.83, -221.52, 0.5372, 74.0, -3.08, 48.42, 0.4628, 2.0, 8.0, 93.3, -206.31, 0.54037, 74.0, -18.44, 49.55, 0.45963, 2.0, 8.0, 86.63, -193.69, 0.56061, 74.0, -30.43, 41.8, 0.43939, 2.0, 8.0, 110.32, -205.97, 0.55507, 74.0, -20.28, 66.47, 0.44493, 2.0, 8.0, 111.33, -183.27, 0.52695, 74.0, -42.98, 65.49, 0.47305, 2.0, 8.0, 111.53, -160.07, 0.56797, 74.0, -66.1, 63.65, 0.43203, 2.0, 8.0, 102.49, -224.1, 0.57026, 74.0, -1.52, 60.27, 0.42974, 2.0, 8.0, 83.06, -235.84, 0.54683, 74.0, 11.87, 41.94, 0.45317, 2.0, 8.0, 75.02, -238.67, 0.5345, 74.0, 15.4, 34.18, 0.4655, 2.0, 8.0, 64.95, -240.47, 0.52774, 74.0, 18.07, 24.31, 0.47226, 2.0, 8.0, 59.74, -238.59, 0.52019, 74.0, 16.66, 18.96, 0.47981, 2.0, 8.0, 49.93, -213.38, 0.51178, 74.0, -7.59, 6.97, 0.48822, 2.0, 8.0, 46.45, -191.85, 0.53448, 74.0, -28.74, 1.61, 0.46552, 2.0, 8.0, 63.13, -172.79, 0.45609, 74.0, -49.18, 16.56, 0.54391, 2.0, 8.0, 76.73, -169.46, 0.47244, 74.0, -53.69, 29.81, 0.52756, 2.0, 8.0, 98.86, -157.68, 0.53514, 74.0, -67.37, 50.82, 0.46486, 3.0, 2.0, 25.68, -97.82, 0.63735, 61.0, -108.45, 65.59, 0.06216, 1.0, 47.13, -100.08, 0.30049, 3.0, 2.0, 83.15, -106.32, 0.72603, 6.0, -100.98, -53.7, 0.09811, 1.0, 103.65, -113.53, 0.17585, 3.0, 2.0, 149.42, -98.32, 0.50192, 6.0, -44.98, -90.03, 0.42892, 1.0, 170.36, -111.32, 0.06917, 2.0, 2.0, 207.34, -74.44, 0.18186, 6.0, 14.79, -108.81, 0.81814, 2.0, 2.0, 244.31, -54.06, 0.05649, 6.0, 56.23, -116.86, 0.94351, 2.0, 6.0, 99.39, -115.34, 0.92692, 7.0, -92.84, -72.39, 0.07308, 3.0, 6.0, 106.83, -106.29, 0.84981, 7.0, -81.28, -70.52, 0.08915, 54.0, 114.85, -178.52, 0.06104, 4.0, 6.0, 127.4, -71.89, 0.69313, 7.0, -43.11, -58.31, 0.19154, 54.0, 85.35, -151.38, 0.10631, 74.0, -167.16, -179.69, 0.00902, 2.0, 8.0, 104.61, -244.7, 0.66844, 74.0, 18.8, 64.19, 0.33156, 2.0, 8.0, 81.39, -264.16, 0.67294, 74.0, 40.23, 42.76, 0.32706, 2.0, 8.0, 66.82, -266.01, 0.65456, 74.0, 43.35, 28.41, 0.34544, 2.0, 8.0, 58.66, -259.02, 0.64393, 74.0, 37.11, 19.68, 0.35607, 2.0, 8.0, 78.9, -281.43, 0.75776, 74.0, 57.66, 41.81, 0.24224, 2.0, 8.0, 53.83, -287.14, 0.77384, 74.0, 65.54, 17.33, 0.22616, 2.0, 8.0, 33.86, -287.57, 0.80091, 74.0, 67.72, -2.53, 0.19909, 2.0, 8.0, 9.92, -286.55, 0.89717, 74.0, 68.81, -26.47, 0.10283, 2.0, 8.0, 36.24, -266.75, 0.70023, 74.0, 46.78, -1.99, 0.29977, 2.0, 8.0, 7.82, -257.69, 0.78734, 74.0, 40.25, -31.09, 0.21266, 2.0, 8.0, 41.56, -240.46, 0.5741, 74.0, 20.12, 1.01, 0.4259, 2.0, 8.0, 22.36, -235.22, 0.62581, 74.0, 16.58, -18.58, 0.37419 ], + "hull": 87, + "edges": [ 110, 108, 108, 106, 106, 104, 104, 102, 102, 100, 88, 86, 86, 84, 84, 82, 82, 80, 80, 78, 78, 76, 76, 74, 74, 72, 72, 70, 70, 68, 68, 66, 110, 112, 112, 114, 114, 116, 116, 118, 118, 120, 120, 122, 96, 98, 98, 100, 92, 94, 94, 96, 88, 90, 90, 92, 126, 128, 128, 130, 130, 132, 132, 134, 134, 136, 136, 138, 138, 140, 140, 142, 142, 144, 144, 146, 146, 148, 148, 150, 150, 152, 152, 154, 122, 124, 124, 126, 174, 176, 176, 178, 178, 180, 180, 182, 182, 184, 184, 186, 186, 188, 188, 190, 190, 192, 192, 194, 194, 196, 196, 198, 198, 200, 200, 202, 202, 204, 130, 190, 132, 192, 128, 188, 126, 186, 124, 184, 122, 182, 120, 180, 118, 178, 116, 176, 90, 192, 92, 190, 94, 188, 96, 186, 98, 184, 100, 182, 102, 180, 104, 178, 106, 176, 134, 194, 136, 196, 88, 194, 86, 196, 198, 84, 82, 200, 202, 80, 78, 204, 206, 76, 74, 208, 72, 210, 212, 70, 68, 214, 198, 138, 140, 200, 142, 202, 144, 204, 146, 206, 208, 148, 150, 210, 152, 212, 154, 214, 64, 66, 62, 64, 62, 60, 60, 58, 58, 56, 56, 54, 54, 52, 52, 50, 50, 48, 48, 46, 46, 44, 44, 42, 42, 40, 40, 38, 38, 36, 36, 34, 34, 32, 32, 30, 30, 28, 28, 26, 26, 24, 24, 22, 22, 20, 20, 18, 18, 16, 16, 14, 14, 12, 12, 10, 10, 8, 8, 6, 6, 4, 4, 2, 2, 0, 0, 172, 170, 172, 170, 168, 168, 166, 166, 164, 164, 162, 162, 160, 160, 158, 158, 156, 156, 154, 232, 234, 234, 236, 236, 238, 238, 240, 240, 242, 242, 244, 244, 246, 246, 232, 248, 250, 250, 252, 248, 254, 254, 256, 256, 258, 258, 260, 260, 262, 262, 264, 264, 266, 266, 268, 268, 270, 270, 272 ], + "width": 1264.0, + "height": 465.0 + } + }, + "raptor-front-arm": { + "raptor-front-arm": { + "type": "mesh", + "uvs": [ 0.39563, 0.1396, 0.38771, 0.30213, 0.31231, 0.41784, 0.27287, 0.47836, 0.33389, 0.4507, 0.5488, 0.35329, 0.64093, 0.31153, 0.73024, 0.3653, 1, 0.5277, 1, 0.86607, 0.93243, 1, 0.86176, 0.80967, 0.75576, 0.99765, 0.71748, 1, 0.70276, 0.77443, 0.62032, 0.73448, 0.58793, 0.64519, 0.53561, 0.6582, 0.13449, 0.75798, 0, 0.69219, 0.01846, 0.56358, 0.05499, 0.30918, 0, 0.27863, 0, 0.12423, 0, 0, 0.19596, 0, 0.40243, 0, 0.24536, 0.19241, 0.21679, 0.0811 ], + "triangles": [ 6, 7, 16, 6, 16, 5, 15, 16, 7, 7, 14, 15, 8, 14, 7, 11, 14, 8, 11, 8, 9, 12, 14, 11, 13, 14, 12, 10, 11, 9, 17, 4, 5, 16, 17, 5, 18, 19, 3, 18, 3, 4, 18, 4, 17, 0, 28, 26, 23, 25, 28, 23, 24, 25, 27, 28, 0, 27, 23, 28, 1, 27, 0, 21, 22, 27, 21, 27, 1, 2, 21, 1, 2, 20, 21, 3, 20, 2, 19, 20, 3, 27, 22, 23, 28, 25, 26 ], + "vertices": [ 2.0, 38.0, 9.24, 26.77, 0.808, 6.0, 85.19, -98.03, 0.192, 1.0, 38.0, 35.87, 35.63, 1.0, 2.0, 38.0, 61.98, 28.62, 0.84641, 39.0, 40.04, 38.85, 0.15359, 2.0, 38.0, 77.67, 27.28, 0.34921, 39.0, 34.62, 24.06, 0.65079, 3.0, 38.0, 73.77, 39.05, 0.10938, 39.0, 47.01, 24.74, 0.78124, 48.0, -42.17, -19.42, 0.10938, 2.0, 39.0, 86.98, 31.25, 0.65079, 48.0, -25.75, 17.61, 0.34921, 2.0, 39.0, 103.84, 34.49, 0.34375, 48.0, -19.24, 33.5, 0.65625, 2.0, 39.0, 114.05, 19.51, 0.10938, 48.0, -1.12, 33.84, 0.89062, 1.0, 48.0, 53.62, 34.88, 1.0, 1.0, 48.0, 96.03, -19.16, 1.0, 1.0, 48.0, 104.2, -47.32, 1.0, 1.0, 48.0, 71.34, -23.98, 1.0, 1.0, 48.0, 81.39, -64.61, 1.0, 1.0, 48.0, 76.81, -68.82, 1.0, 1.0, 48.0, 46.66, -34.26, 1.0, 2.0, 39.0, 73.14, -45.77, 0.10938, 48.0, 31.14, -36.12, 0.89062, 2.0, 39.0, 73.98, -26.91, 0.34375, 48.0, 15.82, -25.1, 0.65625, 2.0, 39.0, 65.11, -26.69, 0.65079, 48.0, 10.78, -32.4, 0.34921, 3.0, 38.0, 134.76, 4.51, 0.10938, 39.0, -2.35, -25.03, 0.78124, 48.0, -27.52, -87.96, 0.10938, 2.0, 38.0, 121.45, -16.1, 0.34921, 39.0, -18.74, -6.77, 0.65079, 2.0, 38.0, 96.94, -14.98, 0.84641, 39.0, -11.21, 16.58, 0.15359, 1.0, 38.0, 45.47, -17.43, 1.0, 1.0, 38.0, 47.64, -32.91, 1.0, 2.0, 38.0, 12.11, -34.27, 0.536, 6.0, 40.33, -56.53, 0.464, 2.0, 38.0, -2.57, -46.21, 0.536, 6.0, 42.42, -37.73, 0.464, 2.0, 38.0, -7.4, -14.83, 0.472, 6.0, 67.87, -56.7, 0.528, 2.0, 38.0, -12.49, 18.22, 0.664, 6.0, 94.68, -76.69, 0.336, 1.0, 38.0, 18.79, 4.26, 1.0, 2.0, 38.0, 0.95, -1.4, 0.512, 6.0, 71.34, -72.13, 0.488 ], + "hull": 27, + "edges": [ 38, 36, 32, 30, 30, 28, 28, 26, 24, 26, 24, 22, 22, 20, 20, 18, 18, 16, 44, 42, 38, 6, 38, 40, 40, 42, 6, 4, 4, 2, 40, 4, 8, 6, 36, 8, 32, 12, 42, 2, 52, 0, 0, 2, 16, 14, 14, 12, 30, 14, 36, 34, 34, 32, 12, 10, 10, 8, 34, 10, 48, 50, 50, 52, 44, 46, 46, 48, 50, 56, 56, 54 ], + "width": 162.0, + "height": 203.0 + } + }, + "raptor-front-leg": { + "raptor-front-leg": { + "type": "mesh", + "uvs": [ 0.55117, 0.17818, 0.6279, 0.36027, 0.66711, 0.4533, 0.6488, 0.51528, 0.53554, 0.56894, 0.32335, 0.66947, 0.28674, 0.72087, 0.32539, 0.80401, 0.36258, 0.80144, 0.42056, 0.79744, 0.61015, 0.78436, 0.7335187, 0.813354, 0.84813, 0.84029, 1, 0.93855, 0.7320025, 0.9234452, 0.62439, 0.91738, 0.72813, 1, 0.58574, 1, 0.47085705, 0.9824938, 0.36708, 0.96668, 0.26307, 0.95082, 0.16267, 0.93552, 0.03859, 0.72238, 0, 0.66947, 0.0374, 0.62999, 0.1647, 0.49563, 0.23732, 0.45681, 0.2702, 0.43923, 0.28064, 0.43365, 0.223, 0.40571, 0.12565, 0.35851, 0, 0.2976, 0, 0.1524, 0, 0, 0.32132, 0, 0.32222, 0.22778, 0.44931, 0.38031, 0.47664, 0.44362, 0.4615, 0.47375, 0.35106, 0.53247, 0.20091, 0.65257, 0.18528, 0.72148, 0.25222, 0.86314, 0.30942, 0.88124, 0.55694, 0.89613, 0.55858, 0.89208, 0.47493, 0.8534, 0.6059, 0.91526, 0.39706, 0.8913, 0.1323, 0.09352, 0.36997, 0.45346, 0.37163, 0.43828, 0.32516, 0.39424, 0.2376, 0.34426, 0.34066, 0.47415, 0.5167736, 0.9050346, 0.0782149, 0.2633345, 0.05795925, 0.13086465, 0.09601473, 0.05962839, 0.2930331, 0.03825483 ], + "triangles": [ 14, 12, 13, 14, 11, 12, 14, 15, 11, 11, 15, 10, 55, 44, 47, 44, 45, 47, 10, 15, 45, 15, 47, 45, 55, 46, 44, 44, 46, 45, 45, 46, 10, 46, 9, 10, 48, 9, 46, 48, 8, 9, 16, 17, 15, 17, 47, 15, 18, 55, 17, 17, 55, 47, 19, 48, 18, 18, 48, 55, 20, 43, 19, 19, 43, 48, 48, 46, 55, 48, 43, 8, 21, 42, 20, 20, 42, 43, 21, 41, 42, 21, 22, 41, 43, 7, 8, 43, 42, 7, 42, 6, 7, 42, 41, 6, 23, 24, 22, 22, 24, 41, 41, 40, 6, 41, 24, 40, 6, 40, 5, 5, 39, 4, 5, 40, 39, 39, 26, 54, 39, 40, 26, 24, 25, 40, 40, 25, 26, 39, 38, 4, 4, 38, 3, 39, 50, 38, 39, 54, 50, 38, 37, 3, 3, 37, 2, 26, 27, 54, 54, 27, 50, 50, 51, 38, 38, 51, 37, 27, 28, 50, 50, 28, 51, 56, 57, 49, 32, 33, 57, 57, 58, 49, 57, 33, 58, 49, 58, 59, 59, 58, 34, 34, 58, 33, 59, 34, 0, 32, 57, 56, 37, 1, 2, 51, 36, 37, 37, 36, 1, 28, 52, 51, 51, 52, 36, 28, 29, 52, 29, 53, 52, 29, 30, 53, 36, 52, 35, 52, 53, 35, 36, 0, 1, 36, 35, 0, 31, 56, 30, 30, 56, 53, 53, 56, 35, 31, 32, 56, 56, 49, 35, 35, 59, 0, 49, 59, 35 ], + "vertices": [ 2.0, 42.0, 128.03, 88.47, 0.85041, 1.0, 158.83, -71.92, 0.14959, 2.0, 42.0, 219.55, 53.15, 0.77988, 43.0, -48.05, -38.59, 0.22012, 2.0, 42.0, 266.31, 35.11, 0.53545, 43.0, -36.73, 10.22, 0.46455, 2.0, 42.0, 286.89, 9.8, 0.35167, 43.0, -14.56, 34.15, 0.64833, 2.0, 42.0, 281.55, -41.24, 0.09228, 43.0, 36.71, 36.0, 0.90772, 3.0, 42.0, 271.54, -136.86, 0.05787, 43.0, 132.77, 39.48, 0.71426, 44.0, 35.0, 78.76, 0.22788, 3.0, 43.0, 158.22, 55.17, 0.5308, 44.0, 52.66, 54.64, 0.38143, 45.0, 7.02, 85.54, 0.08776, 4.0, 43.0, 167.14, 99.49, 0.22977, 44.0, 97.55, 49.25, 0.37788, 45.0, 28.72, 45.88, 0.15198, 46.0, -21.26, 49.99, 0.24037, 4.0, 44.0, 102.57, 62.61, 0.26558, 45.0, 42.51, 49.56, 0.17568, 46.0, -7.07, 51.4, 0.22874, 47.0, -58.17, 28.03, 0.33001, 4.0, 44.0, 109.72, 83.4, 0.11934, 45.0, 64.09, 55.24, 0.13984, 46.0, 15.13, 53.52, 0.16668, 47.0, -36.1, 31.19, 0.57414, 1.0, 47.0, 35.81, 41.81, 1.0, 1.0, 47.0, 83.66, 29.43, 1.0, 1.0, 47.0, 128.11, 17.93, 1.0, 1.0, 47.0, 188.73, -29.42, 1.0, 2.0, 46.0, 145.37, -10.99, 0.34248, 47.0, 84.02, -27.11, 0.65752, 2.0, 46.0, 93.3, -7.6, 0.48, 47.0, 44.87, -26.18, 0.52, 2.0, 46.0, 133.18, -49.83, 0.776, 47.0, 86.69, -66.48, 0.224, 2.0, 46.0, 78.79, -50.15, 0.768, 47.0, 32.38, -69.36, 0.232, 2.0, 46.0, 35.36, -41.46, 0.88989, 47.0, -9.88, -62.73, 0.11011, 1.0, 46.0, -4.92, -33.56, 1.0, 3.0, 44.0, 155.05, -5.14, 0.35918, 45.0, 17.88, -32.51, 0.30633, 46.0, -44.62, -25.61, 0.3345, 4.0, 43.0, 254.98, 126.28, 0.10155, 44.0, 131.22, -36.21, 0.54212, 45.0, -21.25, -31.18, 0.20873, 46.0, -83.02, -17.98, 0.1476, 3.0, 43.0, 240.34, 7.81, 0.25587, 44.0, 11.94, -30.99, 0.61615, 45.0, -86.32, 68.91, 0.12798, 2.0, 43.0, 239.27, -23.1, 0.45486, 44.0, -18.96, -32.37, 0.54514, 3.0, 42.0, 187.65, -209.74, 0.09777, 43.0, 216.67, -33.36, 0.58893, 44.0, -30.98, -10.65, 0.3133, 2.0, 42.0, 163.86, -128.68, 0.19603, 43.0, 139.75, -68.26, 0.80397, 3.0, 42.0, 165.75, -94.49, 0.3178, 43.0, 105.59, -71.26, 0.67648, 75.0, -80.8, -39.34, 0.00571, 3.0, 42.0, 166.4, -79.07, 0.45961, 43.0, 90.23, -72.77, 0.53468, 75.0, -67.92, -34.74, 0.00571, 3.0, 42.0, 166.49, -74.17, 0.53171, 43.0, 85.43, -73.29, 0.45686, 75.0, -64.13, -33.63, 0.01143, 3.0, 42.0, 141.54, -82.47, 0.7272, 43.0, 97.13, -96.82, 0.26709, 75.0, -86.02, -21.18, 0.00571, 3.0, 42.0, 99.76, -97.08, 0.84471, 43.0, 117.34, -136.23, 0.14529, 75.0, -123.07, 1.78, 0.01, 2.0, 42.0, 45.01, -114.56, 0.83615, 1.0, -51.09, -135.29, 0.16385, 2.0, 42.0, -16.21, -74.77, 0.53, 1.0, -42.95, -58.39, 0.47, 1.0, 1.0, -52.66, 17.56, 1.0, 1.0, 1.0, 70.07, 18.78, 1.0, 2.0, 42.0, 93.55, 4.14, 0.84985, 75.0, -47.66, 63.53, 0.15015, 3.0, 42.0, 185.14, -6.67, 0.69958, 43.0, 15.99, -64.28, 0.22749, 75.0, 0.73, -14.59, 0.07292, 3.0, 42.0, 217.11, -18.75, 0.50337, 43.0, 23.47, -30.93, 0.48663, 75.0, 9.65, -46.32, 0.01, 2.0, 42.0, 225.64, -32.92, 0.32528, 43.0, 36.31, -20.51, 0.67472, 3.0, 42.0, 223.0, -84.74, 0.2007, 43.0, 87.97, -15.86, 0.79322, 75.0, -43.91, -82.01, 0.00607, 3.0, 42.0, 235.62, -168.07, 0.08091, 43.0, 168.7, 8.29, 0.57148, 44.0, 6.75, 40.47, 0.34761, 3.0, 43.0, 191.8, 35.81, 0.32545, 44.0, 36.01, 19.63, 0.57243, 45.0, -31.15, 78.74, 0.10211, 4.0, 43.0, 206.64, 111.54, 0.10808, 44.0, 112.69, 10.83, 0.52068, 45.0, 6.26, 11.23, 0.23518, 46.0, -49.03, 19.43, 0.13606, 3.0, 44.0, 130.61, 26.42, 0.35068, 45.0, 29.36, 5.72, 0.28241, 46.0, -27.13, 10.26, 0.36691, 2.0, 46.0, 67.47, 3.17, 0.384, 47.0, 18.56, -16.63, 0.616, 1.0, 47.0, 19.07, -14.52, 1.0, 2.0, 46.0, 36.01, 24.95, 0.384, 47.0, -13.89, 3.64, 0.616, 2.0, 46.0, 86.23, -6.55, 0.488, 47.0, 37.76, -25.46, 0.512, 4.0, 44.0, 151.19, 56.0, 0.22879, 45.0, 65.44, 5.56, 0.18425, 46.0, 8.45, 4.28, 0.45492, 47.0, 0.0, 0.0, 0.13205, 3.0, 42.0, -9.28, -17.51, 0.21934, 1.0, 7.72, -30.86, 0.74243, 75.0, -126.22, 130.87, 0.03823, 3.0, 42.0, 195.91, -53.82, 0.42127, 43.0, 61.12, -47.06, 0.57302, 75.0, -30.92, -46.02, 0.00571, 3.0, 42.0, 190.1, -48.45, 0.52927, 43.0, 56.62, -53.56, 0.46502, 75.0, -29.84, -39.6, 0.00571, 3.0, 42.0, 161.27, -48.26, 0.74345, 43.0, 60.44, -82.13, 0.18733, 75.0, -47.3, -19.14, 0.06922, 3.0, 42.0, 120.38, -58.54, 0.78619, 43.0, 76.31, -121.19, 0.13381, 75.0, -79.81, 7.32, 0.08, 3.0, 42.0, 197.37, -69.23, 0.33416, 43.0, 76.18, -43.47, 0.66185, 75.0, -43.15, -54.0, 0.00398, 4.0, 44.0, 167.22, 97.41, 0.10303, 45.0, 97.38, 0.84, 0.08297, 46.0, 54.09, -2.79, 0.51764, 47.0, 4.74, -23.22, 0.29636, 3.0, 42.0, 49.5, -83.17, 0.65468, 1.0, -17.26, -114.16, 0.26246, 75.0, -142.18, 45.76, 0.08286, 3.0, 42.0, -9.83, -51.31, 0.41164, 1.0, -21.43, -46.95, 0.57122, 75.0, -153.07, 111.17, 0.01714, 2.0, 42.0, -31.44, -20.43, 0.27617, 1.0, -6.57, -12.31, 0.72383, 3.0, 42.0, 0.92, 47.46, 0.40628, 1.0, 68.18, -4.06, 0.57468, 75.0, -69.72, 165.13, 0.01904 ], + "hull": 35, + "edges": [ 46, 44, 44, 42, 32, 34, 32, 30, 26, 24, 14, 12, 12, 10, 6, 4, 66, 68, 0, 68, 46, 48, 48, 50, 40, 42, 16, 14, 58, 56, 4, 2, 2, 0, 10, 8, 8, 6, 78, 80, 80, 82, 82, 84, 84, 86, 86, 96, 16, 18, 18, 20, 38, 40, 62, 64, 64, 66, 100, 102, 102, 104, 58, 60, 60, 62, 106, 104, 54, 56, 50, 52, 52, 54, 108, 100, 78, 76, 76, 74, 72, 74, 72, 70, 70, 98, 92, 90, 56, 102, 100, 54, 52, 108, 58, 104, 60, 106, 76, 6, 74, 4, 72, 2, 78, 8, 92, 20, 92, 88, 88, 94, 90, 30, 94, 30, 26, 28, 28, 30, 20, 22, 22, 24, 28, 22, 34, 36, 36, 38, 94, 110, 110, 96, 36, 110, 110, 88, 60, 112, 112, 114, 114, 116, 116, 118, 118, 0 ], + "width": 382.0, + "height": 514.0 + } + }, + "raptor-hindleg-back": { + "raptor-hindleg-back": { + "type": "mesh", + "uvs": [ 0.45041, 0.09352, 0.56934, 0.23361, 0.65294, 0.47297, 0.66354, 0.50822, 0.63175, 0.54255, 0.32384, 0.69723, 0.30069, 0.73876, 0.27934, 0.77704, 0.30417, 0.83513, 0.31059, 0.85014, 0.34101, 0.85047, 0.45165, 0.85164, 0.59556, 0.81882, 0.91177, 0.92548, 1, 1, 0.56337, 0.96427, 0.4835, 0.98261, 0.29879, 0.98027, 0.22808, 0.98389, 0.15998, 0.98738, 0.15424, 0.95547, 0.13895, 0.87048, 0.07371, 0.78726, 0, 0.753, 0, 0.7049, 0, 0.671, 0.11876, 0.64653, 0.16535, 0.5266, 0.28496, 0.47398, 0.29011, 0.45774, 0.29427, 0.4446, 0.20635, 0.40396, 0.06129, 0.33691, 0, 0.25247, 0, 0, 0.30793, 0, 0.276, 0.20262, 0.40398, 0.31122, 0.48439, 0.45964, 0.48318, 0.48384, 0.47029, 0.51062, 0.22698, 0.67328, 0.17142, 0.7242, 0.17122, 0.78242, 0.22996, 0.89469, 0.24677, 0.90829, 0.28672, 0.9146, 0.46583, 0.91414 ], + "triangles": [ 15, 13, 14, 16, 47, 15, 15, 12, 13, 15, 47, 12, 18, 46, 17, 18, 45, 46, 17, 47, 16, 17, 46, 47, 47, 10, 11, 47, 46, 10, 47, 11, 12, 45, 18, 19, 44, 45, 20, 20, 45, 19, 20, 21, 44, 46, 9, 10, 46, 45, 9, 45, 44, 9, 21, 43, 44, 44, 8, 9, 44, 7, 8, 44, 43, 7, 21, 22, 43, 43, 22, 42, 43, 42, 7, 22, 23, 24, 24, 42, 22, 7, 42, 6, 42, 41, 6, 6, 41, 5, 24, 26, 42, 42, 26, 41, 24, 25, 26, 5, 40, 4, 5, 41, 40, 41, 28, 40, 26, 27, 41, 41, 27, 28, 40, 39, 4, 28, 29, 40, 40, 29, 39, 4, 39, 3, 39, 2, 3, 29, 30, 39, 39, 38, 2, 39, 30, 38, 38, 1, 2, 30, 37, 38, 38, 37, 1, 30, 31, 37, 31, 36, 37, 31, 32, 36, 32, 33, 36, 37, 0, 1, 37, 36, 0, 33, 34, 36, 36, 35, 0, 36, 34, 35 ], + "vertices": [ 1.0, 17.0, 53.94, 69.16, 1.0, 1.0, 17.0, 126.23, 67.31, 1.0, 2.0, 17.0, 226.42, 31.14, 0.9375, 18.0, -30.88, -1.11, 0.0625, 2.0, 17.0, 240.84, 25.33, 0.7, 18.0, -25.65, 13.52, 0.3, 2.0, 17.0, 246.67, 8.06, 0.3, 18.0, -8.61, 20.02, 0.7, 3.0, 17.0, 240.82, -115.25, 0.0625, 18.0, 114.81, 19.01, 0.875, 19.0, 9.48, 59.16, 0.0625, 2.0, 18.0, 131.07, 29.69, 0.7, 19.0, 22.12, 44.36, 0.3, 2.0, 18.0, 146.07, 39.54, 0.3, 19.0, 33.76, 30.71, 0.7, 3.0, 18.0, 152.6, 65.01, 0.12567, 19.0, 59.85, 27.41, 0.75203, 20.0, 15.86, 48.05, 0.1223, 2.0, 19.0, 66.6, 26.56, 0.82916, 20.0, 16.73, 41.31, 0.17084, 3.0, 19.0, 71.2, 35.76, 0.64716, 20.0, 26.79, 39.17, 0.1317, 21.0, -67.33, 18.96, 0.22114, 3.0, 19.0, 87.93, 69.21, 0.0625, 20.0, 63.37, 31.39, 0.675, 21.0, -30.18, 23.3, 0.2625, 2.0, 20.0, 113.82, 35.72, 0.10381, 21.0, 16.23, 43.56, 0.89619, 1.0, 21.0, 128.14, 12.02, 1.0, 1.0, 21.0, 161.85, -15.82, 1.0, 1.0, 21.0, 13.52, -19.72, 1.0, 2.0, 20.0, 62.98, -25.82, 0.7, 21.0, -12.23, -31.02, 0.3, 3.0, 19.0, 115.12, -1.34, 0.08333, 20.0, 1.94, -12.66, 0.83333, 21.0, -74.27, -38.11, 0.08333, 2.0, 19.0, 106.11, -23.53, 0.3, 20.0, -21.81, -9.53, 0.7, 2.0, 19.0, 97.44, -44.91, 0.7, 20.0, -44.67, -6.51, 0.3, 2.0, 19.0, 84.26, -40.69, 0.9375, 20.0, -43.91, 7.3, 0.0625, 1.0, 19.0, 49.19, -29.47, 1.0, 2.0, 18.0, 206.75, 5.37, 0.13333, 19.0, 7.44, -33.78, 0.86667, 2.0, 18.0, 219.64, -20.52, 0.36111, 19.0, -16.64, -49.81, 0.63889, 2.0, 18.0, 208.41, -37.83, 0.72083, 19.0, -35.22, -40.82, 0.27917, 2.0, 18.0, 200.49, -50.03, 0.91667, 19.0, -48.31, -34.49, 0.08333, 1.0, 18.0, 161.11, -36.98, 1.0, 2.0, 17.0, 150.1, -116.77, 0.08333, 18.0, 119.88, -71.55, 0.91667, 2.0, 17.0, 154.99, -70.72, 0.42846, 18.0, 73.68, -68.48, 0.57154, 2.0, 17.0, 150.31, -65.27, 0.35605, 18.0, 68.43, -73.37, 0.64395, 2.0, 17.0, 146.52, -60.87, 0.59148, 18.0, 64.18, -77.33, 0.40852, 2.0, 17.0, 115.13, -75.09, 0.8446, 18.0, 79.61, -108.13, 0.1554, 1.0, 17.0, 63.33, -98.54, 1.0, 1.0, 17.0, 21.78, -94.56, 1.0, 1.0, 17.0, -66.69, -32.05, 1.0, 1.0, 17.0, -6.63, 52.97, 1.0, 1.0, 17.0, 58.15, -6.01, 1.0, 1.0, 17.0, 121.17, 2.44, 1.0, 1.0, 17.0, 188.87, -12.1, 1.0, 2.0, 17.0, 197.12, -18.43, 0.7, 18.0, 19.79, -28.44, 0.3, 2.0, 17.0, 203.99, -28.62, 0.3, 18.0, 29.7, -21.18, 0.7, 1.0, 18.0, 136.67, -7.43, 1.0, 2.0, 18.0, 164.32, 0.67, 0.7, 19.0, -2.53, 7.74, 0.3, 2.0, 18.0, 177.98, 21.58, 0.25, 19.0, 19.92, -3.2, 0.75, 1.0, 19.0, 71.94, -6.3, 1.0, 2.0, 19.0, 79.66, -3.72, 0.7, 20.0, -9.29, 21.05, 0.3, 2.0, 19.0, 87.98, 7.26, 0.3125, 20.0, 3.43, 15.76, 0.6875, 2.0, 20.0, 62.84, 4.16, 0.72917, 21.0, -21.96, -2.67, 0.27083 ], + "hull": 36, + "edges": [ 66, 68, 66, 64, 56, 54, 54, 52, 52, 50, 46, 44, 44, 42, 34, 32, 32, 30, 30, 28, 28, 26, 26, 24, 24, 22, 10, 8, 8, 6, 6, 4, 4, 2, 2, 0, 68, 70, 0, 70, 46, 48, 48, 50, 14, 12, 12, 10, 60, 58, 58, 56, 42, 40, 40, 38, 18, 16, 16, 14, 22, 20, 20, 18, 38, 36, 36, 34, 60, 62, 62, 64, 68, 72, 72, 74, 74, 76, 76, 78, 78, 80, 80, 82, 82, 84, 84, 86, 16, 88, 86, 88, 18, 90, 90, 38, 88, 90, 20, 92, 92, 36, 90, 92, 92, 94, 94, 22, 94, 32, 30, 24, 88, 40, 86, 14, 84, 12, 82, 10, 82, 52, 48, 84, 44, 86, 78, 6, 4, 76, 80, 8, 80, 56, 58, 78, 76, 60 ], + "width": 338.0, + "height": 429.0 + } + }, + "raptor-horn": { + "raptor-horn": { + "type": "mesh", + "uvs": [ 0.2320153, 0, 0.3645552, 0.3050978, 0.3796721, 0.2857785, 0.4298346, 0.4150413, 0.4825494, 0.4591996, 0.4918112, 0.375578, 0.5426151, 0.4336412, 0.6274374, 0.2237305, 0.7268489, 0.20157292, 0.7115516, 0.10296465, 0.7436974, 0.12629266, 0.8715365, 0.3269362, 0.9265505, 0.5884654, 0.9514625, 0.5829078, 1, 0.7979733, 0.9985468, 0.9160847, 0.9566796, 0.9066001, 0.8954752, 0.8405172, 0.8574452, 0.7156778, 0.8117617, 0.7108075, 0.7914574, 0.6416241, 0.714598, 0.6694834, 0.7030812, 0.721095, 0.6640457, 0.9195486, 0.5713867, 1, 0.5126506, 1, 0.4074921, 0.941782, 0.3449897, 0.801856, 0.24959217, 0.4946659, 0.2394483, 0.4213032, 0.1576777, 0.3774751, 0.10301193, 0.4385621, 0.0715998, 0.5418206, 0.0634989, 0.7233295, 0.09680023, 0.785812, 0.19704853, 0.703121, 0.2084882, 0.7070155, 0.13611205, 0.8718369, 0.079402, 0.956752, 0.03745056, 0.9278391, 0, 0.7270688, 0, 0.4923866, 0.01820776, 0.3757654, 0.08923977, 0.1600458, 0.22169617, 0.0859055, 0.2123134, 0.02037095, 0.21550685, 0, 0.9339475, 0.7494978, 0.8407752, 0.4721375, 0.760784, 0.4648366, 0.7161605, 0.5848157, 0.5537296, 0.7587875, 0.4539151, 0.6548708, 0.3518486, 0.5462127 ], + "triangles": [ 17, 18, 47, 0, 45, 46, 44, 45, 0, 8, 9, 10, 1, 44, 0, 8, 10, 11, 30, 43, 44, 29, 30, 44, 31, 42, 43, 1, 29, 44, 30, 31, 43, 4, 5, 6, 49, 8, 11, 48, 49, 11, 28, 29, 1, 32, 42, 31, 41, 42, 32, 53, 28, 1, 12, 48, 11, 49, 50, 7, 49, 7, 8, 6, 7, 50, 20, 49, 48, 50, 49, 20, 52, 3, 4, 6, 50, 51, 21, 50, 20, 18, 19, 20, 48, 18, 20, 48, 47, 18, 21, 22, 50, 32, 40, 41, 33, 40, 32, 47, 48, 12, 22, 51, 50, 4, 6, 51, 52, 4, 51, 47, 13, 14, 53, 27, 28, 1, 2, 3, 53, 1, 3, 37, 34, 35, 37, 35, 36, 16, 47, 14, 17, 47, 16, 23, 51, 22, 39, 40, 33, 39, 33, 34, 38, 39, 34, 53, 52, 27, 52, 53, 3, 25, 26, 52, 26, 27, 52, 37, 38, 34, 51, 25, 52, 24, 25, 51, 23, 24, 51, 47, 12, 13, 15, 16, 14 ], + "vertices": [ 1.0, 34.0, 281.61, 81.74, 1.0, 1.0, 34.0, 213.35, 84.72, 1.0, 1.0, 34.0, 211.41, 78.74, 1.0, 2.0, 34.0, 184.08, 81.47, 0.99749, 74.0, -201.91, 110.55, 0.00251, 1.0, 34.0, 165.27, 73.64, 1.0, 1.0, 34.0, 171.82, 61.6, 1.0, 2.0, 34.0, 152.01, 55.86, 0.99978, 74.0, -160.92, 112.71, 2.2E-4, 2.0, 34.0, 152.05, 10.45, 0.99, 74.0, -134.51, 149.65, 0.01, 2.0, 34.0, 127.93, -16.63, 0.98888, 74.0, -99.14, 157.63, 0.01112, 2.0, 34.0, 142.65, -24.37, 0.97775, 74.0, -106.6, 172.5, 0.02225, 2.0, 34.0, 131.57, -29.57, 0.9788, 74.0, -94.56, 170.26, 0.0212, 2.0, 34.0, 75.83, -37.63, 0.97359, 74.0, -44.55, 144.38, 0.02641, 2.0, 34.0, 32.94, -20.65, 0.93, 74.0, -19.57, 105.6, 0.07, 2.0, 34.0, 26.9, -27.43, 0.9, 74.0, -10.71, 107.6, 0.1, 2.0, 34.0, -9.24, -14.28, 0.86, 74.0, 11.02, 75.86, 0.14, 2.0, 34.0, -21.6, -0.12, 0.78, 74.0, 12.83, 57.16, 0.22, 2.0, 34.0, -9.42, 9.08, 0.84, 74.0, -2.43, 56.76, 0.16, 2.0, 34.0, 14.03, 16.44, 0.88122, 74.0, -25.78, 64.43, 0.11878, 2.0, 34.0, 37.64, 11.23, 0.93, 74.0, -41.95, 82.41, 0.07, 2.0, 34.0, 50.35, 21.92, 0.94, 74.0, -58.5, 81.12, 0.06, 2.0, 34.0, 63.22, 18.84, 0.95957, 74.0, -67.18, 91.12, 0.04043, 2.0, 34.0, 80.71, 41.03, 0.99714, 74.0, -94.31, 83.25, 0.00286, 1.0, 34.0, 78.21, 49.9, 1.0, 1.0, 34.0, 67.2, 82.69, 1.0, 1.0, 34.0, 83.22, 114.91, 1.0, 1.0, 34.0, 98.88, 129.38, 1.0, 1.0, 34.0, 133.2, 148.49, 1.0, 1.0, 34.0, 164.96, 147.54, 1.0, 1.0, 34.0, 223.55, 135.17, 1.0, 1.0, 34.0, 234.17, 129.11, 1.0, 1.0, 34.0, 260.7, 144.13, 1.0, 1.0, 34.0, 268.68, 164.73, 1.0, 1.0, 34.0, 265.91, 184.53, 1.0, 1.0, 34.0, 248.48, 207.72, 1.0, 1.0, 34.0, 232.86, 206.82, 1.0, 1.0, 34.0, 215.06, 172.46, 1.0, 1.0, 34.0, 211.59, 170.1, 1.0, 1.0, 34.0, 213.1, 207.18, 1.0, 1.0, 34.0, 219.05, 231.06, 1.0, 1.0, 34.0, 233.36, 238.02, 1.0, 1.0, 34.0, 265.01, 223.8, 1.0, 1.0, 34.0, 290.33, 196.4, 1.0, 1.0, 34.0, 298.06, 178.29, 1.0, 1.0, 34.0, 302.4, 135.6, 1.0, 1.0, 34.0, 275.09, 94.31, 1.0, 1.0, 34.0, 284.66, 88.97, 1.0, 1.0, 34.0, 286.01, 85.81, 1.0, 2.0, 34.0, 13.6, -3.66, 0.93, 74.0, -13.73, 80.52, 0.07, 1.0, 34.0, 68.37, -13.1, 1.0, 2.0, 34.0, 90.48, 5.75, 0.995, 74.0, -81.72, 117.62, 0.005, 2.0, 34.0, 89.43, 30.76, 0.995, 74.0, -95.42, 96.68, 0.005, 1.0, 34.0, 113.96, 91.09, 1.0, 1.0, 34.0, 151.78, 103.55, 1.0, 1.0, 34.0, 190.72, 116.0, 1.0 ], + "hull": 47, + "edges": [ 0, 92, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 30, 32, 32, 34, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 50, 50, 52, 52, 54, 54, 56, 56, 58, 60, 62, 62, 64, 64, 66, 66, 68, 68, 70, 70, 72, 72, 74, 74, 76, 76, 78, 78, 80, 80, 82, 82, 84, 84, 86, 86, 88, 88, 90, 90, 92, 28, 30, 16, 18, 34, 36, 58, 60, 96, 94, 96, 98, 98, 100 ], + "width": 363.0, + "height": 159.0 + } + }, + "raptor-horn-back": { + "raptor-horn-back": { "x": 121.43, "y": 83.01, "rotation": -132.22, "width": 351, "height": 153 } + }, + "raptor-jaw": { + "raptor-jaw": { + "type": "mesh", + "uvs": [ 0.4361067, 0.10281, 0.5045727, 0.2644637, 0.5967342, 0.3777679, 0.6941603, 0.4975443, 0.7977112, 0.5491686, 0.9114874, 0.598116, 0.9999997, 0.6361945, 0.9930525, 0.8562525, 0.6760647, 1, 0.39520955, 1, 0.19457, 0.89404, 0.2161, 0.6497, 0, 0.46112, 0, 0, 0.2612472, 9.98345E-6, 0.19457, 0.29385, 0.6067776, 0.8124308, 0.4289615, 0.8893819, 0.8600588, 0.8027105, 0.6478775, 0.9300833, 0.5834864, 0.6241919, 0.41195855, 0.6975168, 0.4615322, 0.5192138, 0.3598942, 0.3663982, 0.3256392, 0.5423782 ], + "triangles": [ 15, 14, 0, 1, 23, 0, 12, 13, 15, 15, 13, 14, 8, 18, 7, 7, 18, 6, 18, 5, 6, 8, 19, 18, 17, 21, 16, 23, 15, 0, 24, 15, 23, 21, 20, 16, 21, 22, 20, 21, 24, 22, 24, 23, 22, 2, 22, 23, 20, 22, 3, 22, 2, 3, 2, 23, 1, 11, 24, 21, 4, 16, 20, 16, 4, 18, 17, 16, 19, 19, 16, 18, 18, 4, 5, 4, 20, 3, 9, 10, 17, 8, 9, 19, 9, 17, 19, 10, 21, 17, 10, 11, 21, 11, 12, 24, 12, 15, 24 ], + "vertices": [ 2.0, 54.0, 28.47, 75.44, 0.40489, 74.0, -91.22, 43.02, 0.59511, 2.0, 54.0, 66.98, 65.83, 0.54061, 74.0, -64.96, 13.27, 0.45939, 2.0, 54.0, 98.09, 68.86, 0.67457, 74.0, -37.62, -1.88, 0.32543, 2.0, 54.0, 132.32, 71.81, 0.77891, 74.0, -7.76, -18.87, 0.22109, 2.0, 54.0, 163.31, 76.98, 0.78694, 74.0, 20.7, -32.2, 0.21306, 2.0, 54.0, 190.52, 90.03, 0.78631, 74.0, 50.51, -36.88, 0.21369, 2.0, 54.0, 210.32, 100.44, 0.86507, 74.0, 72.72, -39.54, 0.13493, 1.0, 54.0, 238.9, 67.81, 1.0, 2.0, 54.0, 234.83, 1.64, 0.98898, 74.0, 36.86, -134.8, 0.01102, 2.0, 54.0, 173.67, -58.3, 0.98603, 74.0, -47.5, -149.48, 0.01397, 1.0, 54.0, 125.49, -79.1, 1.0, 2.0, 54.0, 87.8, -40.51, 0.77481, 74.0, -108.13, -86.11, 0.22519, 3.0, 54.0, -5.59, -78.2, 0.30353, 8.0, -21.32, -18.84, 0.63716, 74.0, -202.55, -73.18, 0.05931, 2.0, 8.0, 106.45, -6.22, 0.98571, 74.0, -224.49, 48.7, 0.01429, 2.0, 8.0, 95.42, -85.63, 0.62475, 74.0, -144.43, 44.69, 0.37525, 2.0, 54.0, 24.89, 6.25, 0.63522, 74.0, -133.42, -11.92, 0.36478, 2.0, 54.0, 177.48, 5.6, 0.7446, 74.0, -8.12, -99.01, 0.2554, 2.0, 54.0, 160.25, -36.54, 0.86286, 74.0, -46.21, -123.95, 0.13714, 2.0, 54.0, 216.48, 51.69, 0.84606, 74.0, 50.14, -83.17, 0.15394, 2.0, 54.0, 213.42, 2.58, 0.92571, 74.0, 19.76, -121.89, 0.07429, 2.0, 54.0, 138.62, 31.33, 0.63037, 74.0, -25.53, -55.78, 0.36963, 2.0, 54.0, 124.75, -11.2, 0.73167, 74.0, -61.07, -82.94, 0.26833, 2.0, 54.0, 102.54, 22.8, 0.5705, 74.0, -60.08, -42.34, 0.4295, 2.0, 54.0, 61.9, 25.79, 0.54075, 74.0, -91.85, -16.83, 0.45925, 2.0, 54.0, 86.18, -5.32, 0.63768, 74.0, -89.5, -56.22, 0.36232 ], + "hull": 15, + "edges": [ 24, 26, 24, 22, 22, 20, 20, 18, 18, 16, 8, 6, 2, 0, 26, 28, 0, 28, 26, 30, 24, 30, 30, 0, 14, 16, 14, 12, 8, 32, 32, 34, 8, 10, 10, 12, 2, 4, 4, 6 ], + "width": 252.0, + "height": 275.0 + } + }, + "raptor-jaw-inside": { + "raptor-jaw2": { + "type": "mesh", + "path": "raptor-jaw", + "uvs": [ 0.4361067, 0.10281, 0.5045727, 0.2644637, 0.6941603, 0.4975443, 0.7977112, 0.5491686, 0.9999997, 0.6361945, 0.9930525, 0.8562525, 0.6760647, 1, 0.39520955, 1, 0.19457, 0.89404, 0.2161, 0.6497, 0, 0.46112, 0, 0, 0.2612472, 9.98345E-6, 0.19457, 0.29385, 0.6067776, 0.8124308, 0.4289615, 0.8893819 ], + "triangles": [ 13, 11, 12, 10, 11, 13, 13, 12, 0, 13, 0, 1, 9, 13, 1, 9, 1, 2, 10, 13, 9, 14, 9, 2, 14, 2, 3, 5, 3, 4, 14, 3, 5, 15, 9, 14, 8, 9, 15, 7, 8, 15, 6, 14, 5, 15, 14, 6, 7, 15, 6 ], + "vertices": [ 2.0, 54.0, 28.9, 96.24, 0.84, 74.0, -73.48, 56.29, 0.16, 2.0, 54.0, 65.84, 86.82, 0.84002, 74.0, -48.4, 27.58, 0.15998, 2.0, 54.0, 125.41, 92.66, 0.88641, 74.0, 3.97, -1.4, 0.11359, 2.0, 54.0, 151.38, 98.09, 0.83356, 74.0, 28.44, -11.66, 0.16644, 2.0, 54.0, 191.91, 121.0, 0.85174, 74.0, 74.81, -15.78, 0.14826, 2.0, 54.0, 227.3, 89.29, 0.83919, 74.0, 85.97, -61.97, 0.16081, 2.0, 54.0, 223.4, 25.16, 0.94641, 74.0, 46.37, -112.58, 0.05359, 2.0, 54.0, 176.27, -33.76, 0.77848, 74.0, -25.86, -134.36, 0.22152, 2.0, 54.0, 132.75, -53.77, 0.70055, 74.0, -73.05, -126.15, 0.29945, 2.0, 54.0, 94.17, -16.26, 0.68436, 74.0, -83.54, -73.38, 0.31564, 3.0, 54.0, 19.52, -38.44, 0.28887, 8.0, -3.76, -62.46, 0.60639, 74.0, -154.63, -56.39, 0.10474, 1.0, 8.0, 98.59, -46.15, 1.0, 2.0, 8.0, 110.02, -102.65, 0.84736, 74.0, -123.17, 57.1, 0.15264, 2.0, 54.0, 31.25, 29.22, 0.82334, 74.0, -109.57, -0.23, 0.17666, 2.0, 54.0, 171.54, 28.72, 0.86269, 74.0, 5.69, -80.23, 0.13731, 2.0, 54.0, 161.87, -12.64, 0.71096, 74.0, -25.74, -108.8, 0.28904 ], + "hull": 13, + "edges": [ 20, 22, 20, 18, 18, 16, 16, 14, 14, 12, 6, 4, 4, 2, 2, 0, 22, 24, 0, 24, 22, 26, 20, 26, 26, 0, 10, 12, 6, 8, 10, 8, 6, 28, 28, 30 ], + "width": 252.0, + "height": 275.0 + } + }, + "raptor-mouth-inside": { + "raptor-mouth-inside": { + "type": "mesh", + "uvs": [ 1, 0.2901708, 0.3721679, 1, 0, 1, 0, 0, 1, 0 ], + "triangles": [ 1, 2, 3, 0, 1, 3, 3, 4, 0 ], + "vertices": [ 1.0, 8.0, 26.56, -211.68, 1.0, 1.0, 54.0, 130.45, -7.83, 1.0, 1.0, 54.0, 109.72, -24.21, 1.0, 1.0, 8.0, 47.22, -139.7, 1.0, 1.0, 8.0, 50.33, -210.63, 1.0 ], + "hull": 5, + "edges": [ 4, 6, 6, 8, 2, 4, 0, 8, 2, 0 ], + "width": 71.0, + "height": 82.0 + } + }, + "raptor-saddle": { + "raptor-saddle-w-shadow": { + "type": "mesh", + "uvs": [ 0.2851687, 0.09748712, 0.2689083, 0.1471946, 0.3243085, 0.2889278, 0.4506858, 0.5279327, 0.5607564, 0.5621913, 0.6993636, 0.5350207, 0.7156704, 0.4487835, 0.8379711, 0.3637275, 0.9127102, 0.3471887, 1, 0.5362242, 1, 0.617714, 0.9347877, 0.829428, 0.8752383, 0.9601347, 0.740987, 1, 0.2898378, 0.9495954, 0.12981683, 0.8530382, 0.1029457, 0.6944349, 0.1044914, 0.6365652, 0.20499033, 0.6452009, 0.09539534, 0.4174135, 0.001327455, 0.3784141, 0, 0.2702627, 0.11185617, 0, 0.1702127, 0, 0.24413365, 0, 0.46313465, 0.9233212, 0.5675508, 0.8441542, 0.9405592, 0.6790604, 0.9262991, 0.4310634, 0.2137001, 0.18681794, 0.18239355, 0.2896332, 0.21653177, 0.3382445, 0.3230655, 0.4453539, 0.3860594, 0.5291085, 0.3906913, 0.5597112, 0.365679, 0.6031992, 0.3823539, 0.6241378, 0.4397894, 0.6917375, 0.5389122, 0.714287, 0.6232128, 0.7158975, 0.7038079, 0.6925429, 0.7482742, 0.6635508, 0.7899613, 0.6208682, 0.8057098, 0.5693269, 0.7973724, 0.540335, 0.7566117, 0.5121482, 0.7278938, 0.5153695, 0.2063416, 0.08375912, 0.17577094, 0.1288577, 0.136863, 0.1876471, 0.11185077, 0.2875084, 0.1776237, 0.3632098, 0.2619244, 0.4606551, 0.3054643, 0.5001165, 0.3156544, 0.5548792, 0.810258, 0.7038045, 0.86992, 0.6597587, 0.8992743, 0.5451668, 0.8492496, 0.4799348, 0.8186791, 0.43161485 ], + "triangles": [ 47, 23, 24, 47, 24, 0, 47, 22, 23, 1, 47, 0, 48, 47, 1, 29, 48, 1, 48, 49, 22, 47, 48, 22, 49, 48, 29, 21, 22, 49, 50, 21, 49, 29, 1, 2, 30, 49, 29, 30, 29, 2, 50, 49, 30, 31, 30, 2, 51, 50, 30, 51, 30, 31, 20, 21, 50, 19, 20, 50, 19, 50, 51, 8, 9, 28, 7, 8, 28, 59, 7, 28, 32, 31, 2, 2, 3, 32, 7, 59, 6, 52, 31, 32, 51, 31, 52, 58, 59, 28, 53, 52, 32, 45, 6, 59, 45, 59, 58, 46, 6, 45, 33, 53, 32, 3, 33, 32, 46, 5, 6, 44, 45, 58, 57, 58, 28, 57, 28, 9, 44, 58, 57, 54, 53, 33, 34, 33, 3, 54, 33, 34, 43, 44, 57, 35, 54, 34, 57, 9, 10, 46, 44, 43, 44, 46, 45, 36, 35, 34, 52, 19, 51, 19, 52, 18, 54, 52, 53, 54, 18, 52, 56, 43, 57, 27, 56, 57, 42, 43, 56, 46, 42, 5, 43, 42, 46, 41, 5, 42, 10, 27, 57, 3, 36, 34, 37, 3, 4, 37, 36, 3, 40, 5, 41, 4, 5, 40, 16, 17, 18, 55, 42, 56, 41, 42, 55, 38, 37, 4, 39, 38, 4, 40, 39, 4, 27, 55, 56, 11, 55, 27, 11, 27, 10, 26, 38, 39, 15, 16, 18, 26, 25, 37, 26, 37, 38, 14, 18, 37, 35, 18, 54, 36, 18, 35, 37, 18, 36, 14, 37, 25, 15, 18, 14, 12, 55, 11, 55, 13, 40, 55, 40, 41, 13, 55, 12, 26, 39, 40, 13, 26, 40, 25, 26, 13, 14, 25, 13 ], + "vertices": [ 262.59, 79.92, 244.74, 92.82, 188.83, 69.76, 114.07, 26.79, 102.07, -9.38, 113.32, -54.32, 145.78, -58.87, 178.6, -97.98, 185.38, -122.19, 120.06, -152.19, 84.63, -153.03, 15.94, -134.16, -24.77, -117.84, -45.38, -70.46, -59.12, 75.16, -24.15, 128.17, 35.11, 138.33, 56.81, 138.33, 54.35, 105.5, 138.9, 143.23, 152.8, 174.24, 193.34, 175.62, 295.51, 141.56, 295.96, 122.54, 296.53, 98.45, -47.94, 18.91, -17.46, -14.42, 67.83, -136.04, 154.04, -127.36, 226.26, 106.71, 187.47, 116.01, 169.51, 104.45, 130.18, 68.79, 99.26, 47.52, 87.82, 45.74, 71.33, 53.5, 63.61, 47.89, 52.57, 28.9, 44.88, -3.61, 44.93, -31.1, 54.3, -57.16, 65.51, -71.39, 81.83, -84.6, 101.28, -89.28, 112.08, -86.31, 122.33, -72.77, 120.91, -63.44, 264.84, 110.02, 247.7, 119.59, 225.36, 131.75, 187.73, 139.02, 159.85, 116.91, 123.97, 88.58, 109.51, 74.04, 89.06, 70.23, 41.99, -86.15, 68.62, -111.21, 111.05, -119.56, 135.12, -102.68, 153.0, -92.29 ], + "hull": 25, + "edges": [ 44, 42, 40, 42, 40, 38, 38, 36, 36, 34, 34, 32, 32, 30, 30, 28, 28, 50, 50, 52, 52, 26, 26, 24, 24, 22, 22, 54, 54, 20, 20, 18, 18, 56, 56, 16, 16, 14, 14, 12, 12, 10, 10, 8, 8, 6, 6, 4, 4, 2, 2, 0, 0, 48, 26, 28, 20, 22, 16, 18, 2, 58, 58, 60, 60, 62, 62, 64, 64, 66, 66, 68, 68, 70, 70, 72, 72, 74, 74, 76, 76, 78, 78, 80, 80, 82, 82, 84, 84, 86, 86, 88, 88, 90, 90, 92, 92, 10, 44, 46, 46, 48, 46, 94, 94, 96, 96, 98, 98, 100, 100, 102, 102, 104, 104, 106, 106, 108, 108, 36, 110, 112, 112, 114, 114, 116, 116, 118, 118, 14 ], + "width": 324.0, + "height": 341.0 + } + }, + "raptor-saddle-strap-back": { + "raptor-saddle-strap-back": { "x": 78.45088, "y": -4.196441, "rotation": 120.23926, "width": 108, "height": 148 } + }, + "raptor-saddle-strap-front": { + "raptor-saddle-strap-front": { "x": 128.83, "y": -4.72, "rotation": 61.29, "width": 114, "height": 189 } + }, + "raptor-tongue": { + "raptor-tongue": { + "type": "mesh", + "uvs": [ 0.35242, 0.21561, 0.4794, 0.44246, 0.62072, 0.61177, 0.80563, 0.75374, 1, 0.90297, 1, 1, 0.8971, 1, 0.72055, 0.92255, 0.50668, 0.82872, 0.30402, 0.70725, 0.10537, 0.57889, 0, 0.50622, 0, 0, 0.26225, 0 ], + "triangles": [ 7, 2, 3, 6, 3, 4, 7, 3, 6, 6, 4, 5, 1, 9, 0, 8, 9, 1, 2, 8, 1, 8, 2, 7, 0, 11, 12, 0, 12, 13, 10, 11, 0, 9, 10, 0 ], + "vertices": [ 2.0, 71.0, 3.64, 27.05, 0.6875, 72.0, -47.27, 33.88, 0.3125, 3.0, 71.0, 39.1, 19.46, 0.3125, 72.0, -13.42, 20.87, 0.625, 73.0, -51.54, 33.38, 0.0625, 3.0, 71.0, 71.56, 19.03, 0.0625, 72.0, 18.59, 15.4, 0.625, 73.0, -21.56, 20.92, 0.3125, 2.0, 72.0, 55.03, 16.86, 0.3125, 73.0, 14.29, 14.24, 0.6875, 2.0, 72.0, 93.34, 18.4, 0.08333, 73.0, 51.98, 7.21, 0.91667, 1.0, 73.0, 56.09, -4.51, 1.0, 2.0, 72.0, 85.07, -1.49, 0.08333, 73.0, 39.49, -10.33, 0.91667, 2.0, 72.0, 54.23, -9.18, 0.3125, 73.0, 7.71, -10.97, 0.6875, 3.0, 71.0, 75.14, -14.72, 0.0625, 72.0, 16.87, -18.5, 0.625, 73.0, -30.77, -11.74, 0.3125, 3.0, 71.0, 38.8, -25.81, 0.3125, 72.0, -20.75, -23.8, 0.625, 73.0, -68.63, -8.54, 0.0625, 2.0, 71.0, 2.4, -35.78, 0.6875, 72.0, -58.25, -27.99, 0.3125, 2.0, 71.0, -17.29, -40.63, 0.91667, 72.0, -78.46, -29.72, 0.08333, 1.0, 71.0, -59.92, 8.19, 1.0, 2.0, 71.0, -26.14, 37.69, 0.91667, 72.0, -75.02, 49.02, 0.08333 ], + "hull": 14, + "edges": [ 22, 24, 10, 12, 10, 8, 24, 26, 16, 4, 18, 16, 2, 4, 18, 2, 22, 20, 0, 26, 20, 0, 0, 2, 12, 14, 14, 16, 4, 6, 6, 8, 14, 6, 20, 18 ], + "width": 171.0, + "height": 128.0 + } + }, + "raptow-jaw-tooth": { + "raptor-jaw-tooth": { + "type": "mesh", + "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], + "triangles": [ 1, 2, 3, 1, 3, 0 ], + "vertices": [ 1.0, 54.0, 275.87, 107.8, 1.0, 2.0, 54.0, 235.58, 46.93, 0.94857, 74.0, -85.57, -171.76, 0.05143, 2.0, 54.0, 155.53, 99.92, 0.94, 74.0, -56.06, -80.4, 0.06, 1.0, 54.0, 195.82, 160.79, 1.0 ], + "hull": 4, + "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], + "width": 73.0, + "height": 96.0 + } + }, + "spineboy-torso": { + "torso": { "x": 55.88, "y": 4.87, "rotation": -104.14, "width": 108, "height": 182 } + }, + "stirrup-back": { + "stirrup-back": { "x": 53.2, "y": 31.34, "rotation": -21.13, "width": 87, "height": 69 } + }, + "stirrup-front": { + "stirrup-front": { "x": 36.14, "y": 20.39, "rotation": -21.13, "width": 89, "height": 100 } + }, + "stirrup-strap": { + "stirrup-strap": { + "type": "mesh", + "uvs": [ 0.36823, 0.27894, 0.45738, 0.38897, 0.54452, 0.49652, 0.67872, 0.59135, 0.81977, 0.69102, 1, 0.77344, 1, 1, 0.77957, 1, 0.6373, 0.8163, 0.53364, 0.72349, 0.40534, 0.60861, 0.30886, 0.52535, 0.2105, 0.44048, 0, 0.26245, 0, 0, 0.30637, 0, 0.20242, 0.23001 ], + "triangles": [ 2, 10, 1, 9, 10, 2, 9, 2, 3, 8, 9, 3, 8, 3, 4, 7, 8, 4, 7, 4, 5, 7, 5, 6, 16, 14, 15, 13, 14, 16, 16, 15, 0, 12, 16, 0, 12, 0, 1, 13, 16, 12, 11, 12, 1, 10, 11, 1 ], + "vertices": [ 2.0, 59.0, 24.72, 8.04, 0.80345, 60.0, -17.42, 11.02, 0.19655, 2.0, 59.0, 37.95, 8.04, 0.59979, 60.0, -4.37, 8.87, 0.40021, 2.0, 59.0, 50.88, 8.05, 0.36895, 60.0, 8.39, 6.77, 0.63105, 2.0, 59.0, 65.92, 12.27, 0.17748, 60.0, 23.92, 8.48, 0.82252, 2.0, 59.0, 81.73, 16.71, 0.05943, 60.0, 40.24, 10.28, 0.94057, 2.0, 59.0, 98.83, 25.04, 0.0121, 60.0, 58.47, 15.72, 0.9879, 2.0, 59.0, 114.44, 11.58, 0.00191, 60.0, 71.67, -0.11, 0.99809, 2.0, 59.0, 100.47, -4.61, 0.01818, 60.0, 55.25, -13.81, 0.98182, 2.0, 59.0, 78.8, -4.14, 0.07488, 60.0, 33.95, -9.81, 0.92512, 2.0, 59.0, 65.83, -6.24, 0.2028, 60.0, 20.81, -9.77, 0.7972, 2.0, 59.0, 49.79, -8.84, 0.39972, 60.0, 4.56, -9.71, 0.60028, 2.0, 59.0, 37.94, -10.97, 0.62658, 60.0, -7.48, -9.89, 0.37342, 2.0, 59.0, 25.86, -13.15, 0.82035, 60.0, -19.76, -10.07, 0.17965, 2.0, 59.0, 0.25, -18.03, 0.95289, 60.0, -45.82, -10.7, 0.04711, 2.0, 59.0, -17.84, -2.43, 0.9771, 60.0, -61.11, 7.64, 0.0229, 2.0, 59.0, 1.58, 20.07, 0.94775, 60.0, -38.29, 26.68, 0.05225, 2.0, 59.0, 10.84, -1.24, 0.9771, 60.0, -32.63, 4.14, 0.0229 ], + "hull": 16, + "edges": [ 28, 30, 30, 0, 12, 10, 8, 10, 12, 14, 14, 16, 26, 28, 24, 26, 26, 32, 32, 30, 20, 22, 22, 24, 0, 2, 2, 4, 4, 6, 6, 8, 16, 18, 18, 20 ], + "width": 97.0, + "height": 91.0 + } + }, + "tail-shadow": { + "raptor-tail-shadow": { + "type": "mesh", + "uvs": [ 1, 0.5038733, 0.8927635, 1, 0.8206947, 0.9699304, 0.7292686, 0.922309, 0.6408266, 0.8762418, 0.5498845, 0.8366692, 0.4710567, 0.8002196, 0.4012287, 0.7783001, 0.3223776, 0.753211, 0.25300685, 0.7310743, 0.20375143, 0.718833, 0.11753407, 0.71414, 0, 0.7251878, 0, 0.6633773, 0.10358384, 0.572817, 0.1820103, 0.5127993, 0.23533583, 0.4751185, 0.305547, 0.42809924, 0.3796754, 0.3776941, 0.448583, 0.3281026, 0.5198677, 0.2798029, 0.6100684, 0.21367177, 0.7072464, 0.14608423, 0.8010878, 0.08081734, 0.9013402, 0 ], + "triangles": [ 10, 11, 14, 13, 14, 11, 10, 14, 15, 12, 13, 11, 9, 10, 15, 8, 9, 16, 9, 15, 16, 8, 16, 17, 7, 8, 17, 6, 7, 18, 7, 17, 18, 6, 18, 19, 5, 6, 19, 4, 20, 21, 4, 5, 20, 5, 19, 20, 2, 22, 23, 3, 21, 22, 4, 21, 3, 3, 22, 2, 23, 24, 0, 23, 0, 2, 1, 2, 0 ], + "vertices": [ 1.0, 65.0, -0.16, 6.41, 1.0, 2.0, 65.0, 42.4, 61.67, 0.7548, 66.0, -28.13, 61.67, 0.2452, 2.0, 65.0, 69.28, 56.16, 0.53679, 66.0, -1.25, 56.16, 0.46321, 3.0, 65.0, 103.42, 48.48, 0.13235, 66.0, 32.89, 48.48, 0.82952, 67.0, -35.63, 49.98, 0.03813, 3.0, 65.0, 136.1, 39.06, 0.00439, 66.0, 65.57, 39.06, 0.62467, 67.0, -3.36, 39.23, 0.37094, 3.0, 66.0, 99.5, 32.0, 0.0995, 67.0, 30.26, 30.79, 0.87982, 68.0, -32.35, 31.34, 0.02068, 3.0, 66.0, 129.1, 26.76, 4.6E-4, 67.0, 59.61, 24.34, 0.57172, 68.0, -3.11, 24.4, 0.42782, 2.0, 67.0, 85.42, 18.44, 0.04275, 68.0, 22.59, 18.06, 0.95725, 2.0, 68.0, 51.63, 10.96, 0.64526, 69.0, -3.07, 10.89, 0.35474, 2.0, 68.0, 77.16, 4.61, 0.00246, 69.0, 22.59, 5.12, 0.99754, 2.0, 69.0, 40.97, 2.02, 0.84959, 70.0, -8.23, 2.08, 0.15041, 1.0, 70.0, 23.84, -2.64, 1.0, 1.0, 70.0, 68.09, -5.25, 1.0, 1.0, 70.0, 68.64, -7.05, 1.0, 1.0, 70.0, 29.23, -12.51, 1.0, 2.0, 69.0, 48.26, -18.17, 0.57427, 70.0, -1.07, -18.16, 0.42573, 1.0, 69.0, 27.9, -20.81, 1.0, 2.0, 68.0, 55.03, -24.11, 0.40024, 69.0, 1.11, -24.1, 0.59976, 3.0, 67.0, 90.24, -26.6, 0.00715, 68.0, 26.65, -27.06, 0.98709, 69.0, -27.19, -27.68, 0.00576, 2.0, 67.0, 63.89, -30.1, 0.5083, 68.0, 0.25, -30.11, 0.4917, 3.0, 66.0, 108.32, -33.03, 0.01005, 67.0, 36.41, -34.55, 0.9784, 68.0, -27.3, -34.09, 0.01155, 2.0, 66.0, 74.22, -38.09, 0.50429, 67.0, 2.13, -38.21, 0.49571, 3.0, 65.0, 107.88, -44.01, 0.04245, 66.0, 37.35, -44.01, 0.94684, 67.0, -34.96, -42.61, 0.01071, 2.0, 65.0, 72.14, -50.49, 0.52154, 66.0, 1.61, -50.49, 0.47846, 2.0, 65.0, 33.89, -58.82, 0.93522, 66.0, -36.64, -58.82, 0.06478 ], + "hull": 25, + "edges": [ 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 20, 30, 32, 18, 20, 32, 18, 34, 32, 16, 18, 34, 16, 14, 36, 16, 14, 34, 36, 38, 36, 12, 14, 38, 12, 40, 38, 10, 12, 40, 10, 2, 4, 46, 4, 42, 8, 8, 10, 40, 42, 46, 44, 44, 42, 4, 6, 6, 8, 44, 6, 2, 0, 0, 48, 46, 48 ], + "width": 377.0, + "height": 126.0 + } + }, + "visor": { + "visor": { "x": 99.13, "y": 6.51, "rotation": -70.58, "width": 261, "height": 168 } + } + } + } +], +"events": { + "footstep": {} +}, +"animations": { + "gun-grab": { + "slots": { + "front-hand": { + "attachment": [ + { "name": "front-open-hand" }, + { "time": 0.23333333, "name": "gun" } + ] + }, + "gun": { + "attachment": [ + { "time": 0.23333333 } + ] + } + }, + "bones": { + "front-arm": { + "rotate": [ + { + "curve": [ 0.025, 0, 0.08220983, -21.081696 ] + }, + { + "time": 0.1, + "value": -32, + "curve": [ 0.1503909, -62.92622, 0.21338578, -120.28917 ] + }, + { + "time": 0.23333333, + "value": -136.89, + "curve": [ 0.2896056, -183.72116, 0.3083333, -204.81 ] + }, + { + "time": 0.3333333, + "value": -204.81, + "curve": [ 0.3833333, -204.81, 0.4790689, -143.9026 ] + }, + { + "time": 0.5333333, + "value": -113.86, + "curve": [ 0.562994, -97.43881, 0.6333333, -56.75 ] + }, + { "time": 0.6666667, "value": -56.75 } + ], + "translate": [ + { + "curve": [ 0.05833333, 0, 0.17274188, 4.702995, 0.05833333, 0, 0.175, -2.66 ] + }, + { + "time": 0.23333333, + "x": 5.846542, + "y": -2.66, + "curve": [ 0.2575237, 6.303093, 0.3083333, 6.84, 0.2583333, -2.66, 0.3083333, 4.8 ] + }, + { + "time": 0.3333333, + "x": 6.84, + "y": 4.8, + "curve": [ 0.4166667, 6.84, 0.5833333, 0, 0.4166667, 4.8, 0.5833333, 0 ] + }, + { "time": 0.6666667 } + ] + }, + "front-bracer": { + "rotate": [ + { + "curve": [ 0.05833333, 0, 0.2179034, 76.69775 ] + }, + { + "time": 0.23333333, + "value": 86.02, + "curve": [ 0.267253, 106.51314, 0.3166667, 114.95 ] + }, + { + "time": 0.3333333, + "value": 114.95, + "curve": [ 0.3833333, 114.95, 0.5151772, 89.58005 ] + }, + { + "time": 0.5333333, + "value": 81.86, + "curve": [ 0.573774, 64.6646, 0.6333333, 34.74 ] + }, + { "time": 0.6666667, "value": 34.74 } + ] + }, + "front-hand2": { + "rotate": [ + { + "curve": [ 0.03333333, 0, 0.1, 12.34 ] + }, + { + "time": 0.13333334, + "value": 12.34, + "curve": [ 0.15833333, 12.34, 0.20833333, -89.55 ] + }, + { + "time": 0.23333333, + "value": -89.55, + "curve": [ 0.2694869, -89.03192, 0.29868475, -89.02898 ] + }, + { + "time": 0.3333333, + "value": -79.79, + "curve": [ 0.3967903, -62.86931, 0.5833333, -10.18 ] + }, + { "time": 0.6666667, "value": -10.18 } + ], + "scale": [ + { + "curve": [ 0.05833333, 1, 0.175, 0.938, 0.05833333, 1, 0.175, 0.938 ] + }, + { + "time": 0.23333333, + "x": 0.938, + "y": 0.938, + "curve": [ 0.3416667, 0.938, 0.5583333, 1, 0.3416667, 0.938, 0.5583333, 1 ] + }, + { "time": 0.6666667 } + ] + } + }, + "ik": { + "spineboy-front-arm-ik": [ + { "mix": 0 } + ] + } + }, + "gun-holster": { + "slots": { + "front-hand": { + "attachment": [ + { "name": "gun" }, + { "time": 0.3, "name": "front-open-hand" }, + { "time": 0.6666667, "name": "front-hand" } + ] + }, + "gun": { + "attachment": [ + {}, + { "time": 0.3, "name": "gun-nohand" } + ] + } + }, + "bones": { + "front-arm": { + "rotate": [ + { + "value": -56.75, + "curve": [ 0.04166667, -56.75, 0.10367804, -197.52673 ] + }, + { + "time": 0.16666667, + "value": -197.8805, + "curve": [ 0.22985075, -198.588, 0.2666667, -143.09216 ] + }, + { + "time": 0.3, + "value": -143.09216, + "curve": [ 0.3416667, -143.09216, 0.425, -159.79407 ] + }, + { + "time": 0.4666667, + "value": -159.79407, + "curve": [ 0.5166666, -159.79407, 0.6166667, -25.24498 ] + }, + { "time": 0.6666667, "value": -25.24498 } + ] + }, + "front-bracer": { + "rotate": [ + { + "value": 34.74, + "curve": [ 0.04166667, 34.74, 0.1383027, 83.36806 ] + }, + { + "time": 0.16666667, + "value": 90.01028, + "curve": [ 0.19547497, 96.75655, 0.3689841, 112.83827 ] + }, + { + "time": 0.4, + "value": 114.4371, + "curve": [ 0.42188275, 115.56515, 0.45, 116.10092 ] + }, + { "time": 0.4666667, "value": 116.10092 } + ] + }, + "front-hand2": { + "rotate": [ + { + "value": -10.18, + "curve": [ 0.04166667, -10.18, 0.1316155, -79.17182 ] + }, + { + "time": 0.16666667, + "value": -84.76454, + "curve": [ 0.2042644, -90.76359, 0.2666667, -89.5203 ] + }, + { + "time": 0.3, + "value": -89.5203, + "curve": [ 0.3416667, -89.5203, 0.41145995, -56.53587 ] + }, + { + "time": 0.4666667, + "value": -35.36478, + "curve": [ 0.5072452, -19.803425, 0.6166667, 0.1828537 ] + }, + { "time": 0.6666667, "value": 0.1828537 } + ], + "translate": [ + { + "curve": [ 0.01666667, 0, 0.05, -1.8167114, 0.01666667, 0, 0.05, 0.11190796 ] + }, + { "time": 0.06666667, "x": -1.8167114, "y": 0.11190796 } + ], + "scale": [ + { + "curve": [ 0.075, 1, 0.225, 0.8883298, 0.075, 1, 0.225, 0.8883298 ] + }, + { "time": 0.3, "x": 0.8883298, "y": 0.8883298 } + ] + } + }, + "ik": { + "spineboy-front-arm-ik": [ + { "mix": 0, "curve": "stepped" }, + { "time": 0.4666667, "mix": 0 }, + { "time": 0.6666667, "mix": 0.996 } + ] + } + }, + "jump": { + "slots": { + "mouth-smile": { + "attachment": [ + { "time": 0.13333334, "name": "mouth-grind" }, + { "time": 0.9, "name": "mouth-smile" } + ] + } + }, + "bones": { + "back-arm1": { + "rotate": [ + { + "curve": [ 0.03333333, 0, 0.1, 41.829 ] + }, + { + "time": 0.13333334, + "value": 41.829, + "curve": [ 0.23333333, 41.829, 0.4333333, -19.760994 ] + }, + { + "time": 0.5333333, + "value": -19.760994, + "curve": [ 0.6166667, -19.760994, 0.8128164, 7.85775 ] + }, + { + "time": 0.8666667, + "value": 16.306156, + "curve": [ 0.9224887, 25.06391, 0.9916667, 39.62011 ] + }, + { + "time": 1.0333333, + "value": 39.62011, + "curve": [ 1.0666667, 39.62011, 1.1344527, 36.98088 ] + }, + { + "time": 1.1666666, + "value": 21.980946, + "curve": [ 1.184377, 13.734497, 1.2416667, -14.43 ] + }, + { + "time": 1.2666667, + "value": -14.43, + "curve": [ 1.3166667, -14.43, 1.4166666, 0 ] + }, + { "time": 1.4666667 } + ] + }, + "back-arm2": { + "rotate": [ + { + "curve": [ 0.03333333, 0, 0.12394547, -25.320557 ] + }, + { + "time": 0.13333334, + "value": -28.289993, + "curve": [ 0.1783775, -42.53771, 0.4083333, -75.93 ] + }, + { + "time": 0.5, + "value": -75.93, + "curve": [ 0.5666666, -75.93, 0.722417, -61.83999 ] + }, + { + "time": 0.7666666, + "value": -57.21051, + "curve": [ 0.8338963, -50.17683, 0.9916667, -38.17255 ] + }, + { + "time": 1.0666667, + "value": -38.17255, + "curve": [ 1.1083333, -38.17255, 1.176968, -49.67921 ] + }, + { + "time": 1.2666667, + "value": -49.35931, + "curve": [ 1.3490245, -49.0656, 1.475, 0 ] + }, + { "time": 1.5333333 } + ] + }, + "back-foot-target": { + "rotate": [ + { + "time": 0.3, + "curve": [ 0.325, 0, 0.3859792, -31.842297 ] + }, + { + "time": 0.4, + "value": -41.64, + "curve": [ 0.4195538, -55.30418, 0.4581111, -86.03314 ] + }, + { + "time": 0.4666667, + "value": -86.03314, + "curve": [ 0.475, -86.03314, 0.5152747, -62.62698 ] + }, + { + "time": 0.5333333, + "value": -57.97, + "curve": [ 0.6451504, -29.134336, 1.025, -7.79 ] + }, + { "time": 1.0333333, "value": -7.79 } + ], + "translate": [ + { "x": 99.37207, "curve": "stepped" }, + { + "time": 0.3, + "x": 99.37207, + "curve": [ 0.35245055, 97.70503, 0.3490575, 85.1468, 0.4, 0, 0.3, 0 ] + }, + { + "time": 0.4, + "x": 83.3479, + "curve": [ 0.41218135, 83.24, 0.4236354, 87.01813, 0.410921, 0.19938447, 0.4145411, -7.91345 ] + }, + { + "time": 0.4333333, + "x": 92.06587, + "y": -9.72683, + "curve": [ 0.45063555, 100.7847, 0.4628767, 124.20715, 0.4488763, 27.49708, 0.4620255, 103.34785 ] + }, + { + "time": 0.4666667, + "x": 132.32715, + "y": 119.66616, + "curve": [ 0.47647455, 153.34036, 0.5174084, 239.6453, 0.4757268, 151.5211, 0.5176002, 382.6888 ] + }, + { + "time": 0.5333333, + "x": 267.5061, + "y": 435.872, + "curve": [ 0.5533992, 302.6115, 0.63208, 352.2051, 0.5573759, 517.1436, 0.6446792, 683.9222 ] + }, + { + "time": 0.6666667, + "x": 352.5156, + "y": 702.459, + "curve": [ 0.7473774, 353.2402, 0.7973412, 342.8478, 0.745163, 768.6361, 0.7885567, 768.6793 ] + }, + { + "time": 0.8333333, + "x": 322.3952, + "y": 717.6737, + "curve": [ 0.8662836, 303.67105, 0.932337, 224.24954, 0.8647492, 681.8872, 0.9359755, 422.0504 ] + }, + { + "time": 0.9666666, + "x": 220.4951, + "y": 293.734, + "curve": [ 0.9886503, 218.12817, 1.0091237, 314.5984, 0.9868448, 209.3714, 1.023678, 79.61865 ] + }, + { "time": 1.0333333, "x": 318.9778 } + ] + }, + "back-foot2": { + "rotate": [ + { + "time": 0.4333333, + "curve": [ 0.4416667, 0, 0.4543986, -46.10022 ] + }, + { + "time": 0.4666667, + "value": -60.96311, + "curve": [ 0.4745164, -70.4732, 0.5166666, -76.4889 ] + }, + { + "time": 0.5333333, + "value": -76.4889, + "curve": [ 0.5666666, -76.4889, 0.6433796, -68.95593 ] + }, + { + "time": 0.6666667, + "value": -63.79, + "curve": [ 0.7120937, -53.71259, 0.8655898, -1.703009 ] + }, + { + "time": 0.9333333, + "value": 16.34327, + "curve": [ 0.9440443, 19.1966, 0.9833333, 24.85 ] + }, + { + "time": 1, + "value": 24.85, + "curve": [ 1.0166667, 24.85, 1.0666667, 11.068385 ] + }, + { "time": 1.0666667 } + ] + }, + "back-hand": { + "rotate": [ + { + "curve": [ 0.04555555, 0, 0.01704617, 36.30731 ] + }, + { + "time": 0.16666667, + "value": 36.25577, + "curve": [ 0.2995558, 36.22216, 0.5354762, 24.32593 ] + }, + { + "time": 0.6666667, + "value": 24.21929, + "curve": [ 0.7694893, 24.26842, 0.9069081, 26.83148 ] + }, + { + "time": 0.9666666, + "value": 31.869854, + "curve": [ 1.023687, 36.67736, 1.1476643, 55.22282 ] + }, + { + "time": 1.2, + "value": 55.20023, + "curve": [ 1.2955155, 55.15903, 1.4686667, 0 ] + }, + { "time": 1.5333333 } + ] + }, + "back-leg-target": { + "translate": [ + { + "curve": [ 0.025, 0, 0.075, -35.36512, 0.025, 0, 0.075, -16.419464 ] + }, + { + "time": 0.1, + "x": -35.36512, + "y": -16.419464, + "curve": [ 0.14125, -35.36512, 0.2051875, -14.122425, 0.14125, -16.419464, 0.2141511, 4.83593 ] + }, + { + "time": 0.2666667, + "x": -4.49427, + "y": 4.243248, + "curve": [ 0.3173125, 3.38331, 0.36625, 12.04432, 0.3191162, 3.651329, 0.3752136, -33.42033 ] + }, + { + "time": 0.4, + "x": 12.04432, + "y": -42.7273, + "curve": [ 0.4166667, 12.04432, 0.45, -46.16881, 0.4125226, -47.42941, 0.4538625, -76.2947 ] + }, + { + "time": 0.4666667, + "x": -46.16881, + "y": -81.12202, + "curve": [ 0.475, -46.16881, 0.525, -38.35786, 0.4988051, -93.2386, 0.525, -96.10667 ] + }, + { + "time": 0.5333333, + "x": -38.35786, + "y": -96.10667, + "curve": [ 0.5666666, -38.35786, 0.6333333, -55.57699, 0.5666666, -96.10667, 0.6425653, -67.82824 ] + }, + { + "time": 0.6666667, + "x": -55.57699, + "y": -63.06306, + "curve": [ 0.75, -55.57699, 0.9072893, -56.88122, 0.7361128, -49.33256, 0.92131, -52.06205 ] + }, + { + "time": 1, + "x": -43.00437, + "y": -42.05479, + "curve": [ 1.0764648, -31.55921, 1.10133, -19.948174, 1.0840495, -31.365967, 1.125148, -4.63678 ] + }, + { + "time": 1.1333333, + "x": -12.985786, + "y": -3.971947, + "curve": [ 1.1975242, 0.9790268, 1.2333333, 0, 1.1733154, -0.7245483, 1.2333333, 0 ] + }, + { "time": 1.2666667 } + ] + }, + "back-leg1": { + "translate": [ + {}, + { "time": 0.4666667, "x": -12.671936, "y": -22.45059 }, + { "time": 0.9 } + ] + }, + "bone": { + "rotate": [ + { + "curve": [ 0.025, 0, 0.075, -6.289631 ] + }, + { + "time": 0.1, + "value": -6.289631, + "curve": [ 0.14166667, -6.289631, 0.225, 14.18848 ] + }, + { + "time": 0.2666667, + "value": 14.18848, + "curve": [ 0.2833333, 14.18848, 0.3247231, 10.279467 ] + }, + { + "time": 0.3333333, + "value": 9.737345, + "curve": [ 0.3875348, 6.324713, 0.459748, 4.230726 ] + }, + { + "time": 0.5, + "value": 3.8217506, + "curve": [ 0.5624884, 3.186844, 0.7000426, 2.0530624 ] + }, + { + "time": 0.7666666, + "value": 1.962452, + "curve": [ 0.8250232, 1.883091, 0.9166667, 4.616762 ] + }, + { + "time": 0.9666666, + "value": 4.616762, + "curve": [ 0.9833333, 4.616762, 1.022989, 1.2032318 ] + }, + { + "time": 1.0333333, + "value": 0.7067871, + "curve": [ 1.0812907, -1.594757, 1.1333333, -2.714676 ] + }, + { + "time": 1.1666666, + "value": -2.714676, + "curve": [ 1.1916667, -2.714676, 1.2458217, -1.9112282 ] + }, + { + "time": 1.2666667, + "value": -0.4920082, + "curve": [ 1.2935314, 1.3370552, 1.2978646, 3.185093 ] + }, + { + "time": 1.3333334, + "value": 5.486637, + "curve": [ 1.341754, 6.033026, 1.3833333, 7.28915 ] + }, + { + "time": 1.4, + "value": 7.28915, + "curve": [ 1.425, 7.28915, 1.475, -2.7659225 ] + }, + { "time": 1.5, "value": -2.7659225 } + ] + }, + "bone2": { + "rotate": [ + { + "curve": [ 0.025, 0, 0.075, -6.289638 ] + }, + { + "time": 0.1, + "value": -6.289638, + "curve": [ 0.14166667, -6.289638, 0.225, 14.188473 ] + }, + { + "time": 0.2666667, + "value": 14.188473, + "curve": [ 0.2833333, 14.188473, 0.323626, 10.890934 ] + }, + { + "time": 0.3333333, + "value": 10.086456, + "curve": [ 0.3917131, 5.248283, 0.4710684, -0.3524017 ] + }, + { + "time": 0.5, + "value": -2.1329346, + "curve": [ 0.5624884, -5.978657, 0.7, -10.52438 ] + }, + { + "time": 0.7666666, + "value": -10.52438, + "curve": [ 0.8166666, -10.52438, 0.9289062, -8.77774 ] + }, + { + "time": 0.9666666, + "value": -6.831554, + "curve": [ 0.9979573, -5.21883, 1.026983, -2.3625145 ] + }, + { + "time": 1.0333333, + "value": -1.44746, + "curve": [ 1.072934, 4.259098, 1.1333333, 18.914204 ] + }, + { + "time": 1.1666666, + "value": 18.914204, + "curve": [ 1.1916667, 18.914204, 1.2595825, 3.6300316 ] + }, + { + "time": 1.2666667, + "value": 2.206341, + "curve": [ 1.2833333, -1.1431618, 1.3166667, -7.267822 ] + }, + { + "time": 1.3333334, + "value": -7.267822, + "curve": [ 1.35, -7.267822, 1.3833333, 10.00975 ] + }, + { + "time": 1.4, + "value": 10.00975, + "curve": [ 1.425, 10.00975, 1.475, -2.765934 ] + }, + { "time": 1.5, "value": -2.765934 } + ] + }, + "bone3": { + "rotate": [ + { + "curve": [ 0.025, 0, 0.075, -6.289631 ] + }, + { + "time": 0.1, + "value": -6.289631, + "curve": [ 0.14166667, -6.289631, 0.225, 14.18848 ] + }, + { + "time": 0.2666667, + "value": 14.18848, + "curve": [ 0.2833333, 14.18848, 0.3166667, 5.372352 ] + }, + { + "time": 0.3333333, + "value": 5.372352, + "curve": [ 0.375, 5.372352, 0.4583333, 17.56139 ] + }, + { + "time": 0.5, + "value": 17.56139, + "curve": [ 0.5666666, 17.56139, 0.7445883, 7.046228 ] + }, + { + "time": 0.7666666, + "value": 5.589907, + "curve": [ 0.791597, 3.945461, 0.9443422, -7.504638 ] + }, + { + "time": 0.9666666, + "value": -8.54041, + "curve": [ 0.9896008, -9.604465, 1.0166667, -10.007282 ] + }, + { + "time": 1.0333333, + "value": -10.007282, + "curve": [ 1.0666667, -10.007282, 1.1521357, 0.3392248 ] + }, + { + "time": 1.1666666, + "value": 1.8385735, + "curve": [ 1.17214, 2.4033184, 1.216597, 5.05995 ] + }, + { + "time": 1.2666667, + "value": 5.882174, + "curve": [ 1.2802615, 6.105422, 1.3166667, 6.21188 ] + }, + { + "time": 1.3333334, + "value": 6.21188, + "curve": [ 1.35, 6.21188, 1.3948607, 1.507182 ] + }, + { + "time": 1.4, + "value": 1.1401405, + "curve": [ 1.427089, -0.7945032, 1.475, -2.7659225 ] + }, + { "time": 1.5, "value": -2.7659225 } + ] + }, + "bone4": { + "rotate": [ + { + "curve": [ 0.025, 0, 0.075, -6.289638 ] + }, + { + "time": 0.1, + "value": -6.289638, + "curve": [ 0.14166667, -6.289638, 0.225, 14.18848 ] + }, + { + "time": 0.2666667, + "value": 14.18848, + "curve": [ 0.2833333, 14.18848, 0.3237649, 11.190044 ] + }, + { + "time": 0.3333333, + "value": 10.51786, + "curve": [ 0.3875348, 6.710186, 0.4705748, 1.055607 ] + }, + { + "time": 0.5, + "value": -0.3975639, + "curve": [ 0.5729341, -3.99942, 0.7, -7.156898 ] + }, + { + "time": 0.7666666, + "value": -7.156898, + "curve": [ 0.8166666, -7.156898, 0.9166667, -7.610874 ] + }, + { + "time": 0.9666666, + "value": -7.610874, + "curve": [ 0.9833333, -7.610874, 1.0234058, -5.4183 ] + }, + { + "time": 1.0333333, + "value": -4.758869, + "curve": [ 1.087558, -1.157013, 1.1333333, 13.056457 ] + }, + { + "time": 1.1666666, + "value": 13.056457, + "curve": [ 1.1916667, 13.056457, 1.2606175, 3.4012375 ] + }, + { + "time": 1.2666667, + "value": 2.206352, + "curve": [ 1.2854226, -1.498417, 1.3166667, -12.634403 ] + }, + { + "time": 1.3333334, + "value": -12.634403, + "curve": [ 1.35, -12.634403, 1.3833333, 16.650467 ] + }, + { + "time": 1.4, + "value": 16.650467, + "curve": [ 1.425, 16.650467, 1.475, -2.7659225 ] + }, + { "time": 1.5, "value": -2.7659225 } + ] + }, + "bone5": { + "rotate": [ + { + "curve": [ 0.025, 0, 0.075, -6.289634 ] + }, + { + "time": 0.1, + "value": -6.289634, + "curve": [ 0.14166667, -6.289634, 0.225, 14.18848 ] + }, + { + "time": 0.2666667, + "value": 14.18848, + "curve": [ 0.2833333, 14.18848, 0.3208515, 9.811726 ] + }, + { + "time": 0.3333333, + "value": 9.24015, + "curve": [ 0.3984912, 6.256424, 0.4593686, 4.299362 ] + }, + { + "time": 0.5, + "value": 3.8217506, + "curve": [ 0.5752088, 2.937683, 0.7, 1.962452 ] + }, + { + "time": 0.7666666, + "value": 1.962452, + "curve": [ 0.8166666, 1.962452, 0.91026, -3.964092 ] + }, + { + "time": 0.9666666, + "value": -7.610874, + "curve": [ 0.9770811, -8.284187, 1.0166667, -10.007282 ] + }, + { + "time": 1.0333333, + "value": -10.007282, + "curve": [ 1.0666667, -10.007282, 1.1333333, 6.479297 ] + }, + { + "time": 1.1666666, + "value": 6.479297, + "curve": [ 1.1916667, 6.479297, 1.253652, 3.3109016 ] + }, + { + "time": 1.2666667, + "value": 2.206352, + "curve": [ 1.294011, -0.11432648, 1.3166667, -11.56517 ] + }, + { + "time": 1.3333334, + "value": -11.56517, + "curve": [ 1.3583333, -11.56517, 1.4083333, 5.159958 ] + }, + { + "time": 1.4333333, + "value": 5.159958, + "curve": [ 1.4583334, 5.159958, 1.5083333, -2.7659225 ] + }, + { "time": 1.5333333, "value": -2.7659225 } + ] + }, + "front-arm": { + "translate": [ + {}, + { "time": 0.4, "x": -5.672241, "y": -4.080057 }, + { "time": 0.5333333, "y": -4.23455 }, + { "time": 0.9, "x": -12.745728, "y": 12.278811 }, + { "time": 1.2333333, "x": -4.44004, "y": -5.595478 }, + { "time": 1.5333333 } + ], + "scale": [ + {}, + { "time": 0.4, "x": 1.0571258 }, + { "time": 0.5333333, "x": 1.1181092 }, + { "time": 0.6666667 }, + { "time": 1.3, "x": 1.1053566 }, + { "time": 1.5333333 } + ] + }, + "front-arm1": { + "rotate": [ + { + "curve": [ 0.06666667, 0, 0.2, 51.20999 ] + }, + { + "time": 0.2666667, + "value": 51.20999, + "curve": [ 0.325, 51.20999, 0.4416667, -38.70001 ] + }, + { + "time": 0.5, + "value": -38.70001, + "curve": [ 0.5666666, -38.70001, 0.7060193, 24.96402 ] + }, + { + "time": 0.7666666, + "value": 38.00668, + "curve": [ 0.8542252, 56.00764, 0.9106227, 62.1899 ] + }, + { + "time": 1, + "value": 62.19, + "curve": [ 1.083557, 62.19002, 1.1916667, -14.429996 ] + }, + { + "time": 1.2333333, + "value": -14.429996, + "curve": [ 1.2916666, -14.429996, 1.4083333, 0 ] + }, + { "time": 1.4666667 } + ] + }, + "front-arm2": { + "rotate": [ + { + "curve": [ 0.03333333, 0, 0.1, 18.420883 ] + }, + { + "time": 0.13333334, + "value": 18.420883, + "curve": [ 0.225, 18.420883, 0.4083333, -58.2645 ] + }, + { + "time": 0.5, + "value": -58.2645, + "curve": [ 0.5666666, -58.2645, 0.7021892, -38.97475 ] + }, + { + "time": 0.7666666, + "value": -16.614265, + "curve": [ 0.8205378, 2.0679855, 0.9667136, 12.726484 ] + }, + { + "time": 1.0666667, + "value": 13.080076, + "curve": [ 1.108317, 13.227425, 1.1916667, -56.15 ] + }, + { + "time": 1.2333333, + "value": -56.15, + "curve": [ 1.2916666, -56.15, 1.3556546, -0.7071762 ] + }, + { "time": 1.4666667 } + ] + }, + "front-foot-target": { + "rotate": [ + { + "time": 0.3, + "curve": [ 0.325, 0, 0.3931645, -4.590178 ] + }, + { + "time": 0.4, + "value": -6.98424, + "curve": [ 0.42124185, -14.423975, 0.45, -69.67 ] + }, + { + "time": 0.4666667, + "value": -69.67, + "curve": [ 0.4833333, -69.67, 0.509211, -21.19719 ] + }, + { + "time": 0.5333333, + "value": -12.81, + "curve": [ 0.5620072, -2.8402815, 0.6333333, 5.74 ] + }, + { + "time": 0.6666667, + "value": 5.74, + "curve": [ 0.7416667, 5.74, 0.8916666, 0 ] + }, + { "time": 0.9666666 } + ], + "translate": [ + { + "x": -90.52827, + "y": 47.54584, + "curve": [ 0.015489125, -146.87875, 0.075, -246.15147, 0.03616454, 37.02503, 0.075, 33.44742 ] + }, + { + "time": 0.1, + "x": -246.15147, + "y": 33.44742, + "curve": [ 0.15, -246.15147, 0.375, -246.15147, 0.15, 33.44742, 0.3490849, 33.6321 ] + }, + { + "time": 0.4, + "x": -246.15147, + "y": 33.44742, + "curve": [ 0.41259015, -243.99417, 0.4471937, -223.1184, 0.4128988, 35.27067, 0.4601272, 361.90375 ] + }, + { + "time": 0.4666667, + "x": -179.60075, + "y": 397.5637, + "curve": [ 0.4842317, -140.34676, 0.5173209, 16.954563, 0.4774975, 456.6243, 0.49590915, 549.3128 ] + }, + { + "time": 0.5333333, + "x": 73.0332, + "y": 636.9726, + "curve": [ 0.55744, 157.4598, 0.6060993, 251.39223, 0.560009, 699.4558, 0.6333458, 735.9846 ] + }, + { + "time": 0.6666667, + "x": 251.3922, + "y": 737.1598, + "curve": [ 0.7959785, 249.0362, 0.9465167, 141.00352, 0.8096133, 742.2015, 0.9465167, 234.2315 ] + }, + { "time": 0.9666666, "x": 95.94, "y": 36.5 } + ] + }, + "front-foot2": { + "rotate": [ + { + "time": 0.4, + "curve": [ 0.4027222, -10.047846, 0.4161156, -43.77206 ] + }, + { + "time": 0.4333333, + "value": -53.55206, + "curve": [ 0.4693293, -73.71084, 0.5221111, -67.11486 ] + }, + { + "time": 0.5333333, + "value": -67.11486, + "curve": [ 0.5915235, -68.52906, 0.6125263, 20.60742 ] + }, + { + "time": 0.9333333, + "value": 24.85, + "curve": [ 0.9583333, 24.85, 0.9888094, 20.15226 ] + }, + { "time": 1 } + ] + }, + "front-foot3": { + "rotate": [ + { + "time": 0.4, + "curve": [ 0.4147741, 0.1559279, 0.4233781, -3.3939855 ] + }, + { + "time": 0.4333333, + "value": -8.313648, + "curve": [ 0.43800765, -10.623618, 0.4856242, -19.18488 ] + }, + { + "time": 0.5333333, + "value": -19.172787, + "curve": [ 0.5810424, -19.16069, 0.6371361, -15.861124 ] + }, + { + "time": 0.6666667, + "value": -13.74629, + "curve": [ 0.7429142, -8.285828, 0.8583333, 10.78 ] + }, + { + "time": 0.9333333, + "value": 10.78, + "curve": [ 0.9583333, 10.78, 1.0220555, 10.579647 ] + }, + { "time": 1.0333333, "value": 0.3412788 } + ] + }, + "front-hand": { + "rotate": [ + { + "curve": [ 0.0761111, 0, 0.18457127, -8.9291 ] + }, + { + "time": 0.3, + "value": -8.936813, + "curve": [ 0.3333706, -8.93905, 0.3722201, 38.13045 ] + }, + { + "time": 0.4333333, + "value": 38.11117, + "curve": [ 0.5163476, 38.085, 0.6528802, -22.01101 ] + }, + { + "time": 0.6666667, + "value": -27.75, + "curve": [ 0.6932396, -38.81171, 0.7498178, -52.48159 ] + }, + { + "time": 0.8, + "value": -52.37664, + "curve": [ 0.8955155, -52.18455, 1.0517163, 10.934753 ] + }, + { + "time": 1.0666667, + "value": 16.08321, + "curve": [ 1.088356, 23.552305, 1.1519786, 45.75642 ] + }, + { + "time": 1.2, + "value": 46.02961, + "curve": [ 1.251916, 46.32494, 1.269744, -12.737183 ] + }, + { + "time": 1.3, + "value": -12.675003, + "curve": [ 1.3726296, -12.525734, 1.4243333, 0 ] + }, + { "time": 1.4666667 } + ] + }, + "front-hand2": { + "rotate": [ + {}, + { "time": 0.13333334, "value": -22.27054 }, + { "time": 0.2666667, "value": -16.905346 }, + { "time": 0.4333333, "value": -2.224981 }, + { "time": 0.6666667, "value": -6.946586 } + ] + }, + "front-leg-target": { + "translate": [ + { + "curve": [ 0.025, 0, 0.075, -33.08603, 0.025, 0, 0.075, -31.343483 ] + }, + { + "time": 0.1, + "x": -33.08603, + "y": -31.343483, + "curve": [ 0.175, -33.08603, 0.325, 140.91324, 0.175, -31.343483, 0.325, 51.54954 ] + }, + { + "time": 0.4, + "x": 140.91324, + "y": 51.54954, + "curve": [ 0.4337849, 140.57893, 0.4213938, 10.149986, 0.4349877, 50.46297, 0.4503434, 16.001236 ] + }, + { + "time": 0.4666667, + "x": -11.122642, + "y": 4.780113, + "curve": [ 0.5011374, -25.03229, 0.585775, -45.1228, 0.511164, -24.716896, 0.5599576, -38.68668 ] + }, + { + "time": 0.6666667, + "x": -46.38054, + "y": -40.57328, + "curve": [ 0.74, -46.38054, 0.9228388, -1.7451248, 0.74, -40.57328, 0.8961042, 22.30417 ] + }, + { + "time": 0.9666666, + "x": -1.7244644, + "y": 20.95851, + "curve": [ 0.992868, -1.7121124, 0.9931955, -37.50713, 0.9953803, 20.410934, 0.953971, -37.80713 ] + }, + { + "time": 1.1, + "x": -38.2682, + "y": -35.92603, + "curve": [ 1.1811795, -38.84668, 1.2516667, 44.94257, 1.184194, -34.84146, 1.2516667, 5.483681 ] + }, + { + "time": 1.3333334, + "x": 44.94257, + "y": 5.483681, + "curve": [ 1.3833333, 44.94257, 1.4516666, 0, 1.3833333, 5.483681, 1.4516666, 0 ] + }, + { "time": 1.5333333 } + ] + }, + "gun": { + "rotate": [ + {}, + { "time": 0.13333334, "value": 15.28 }, + { "time": 0.4, "value": -53.41 }, + { "time": 0.7666666, "value": -63.35 }, + { "time": 1.0666667, "value": -29.92 }, + { "time": 1.3, "value": 7.239998 }, + { "time": 1.4, "value": -3.7 }, + { "time": 1.4666667 } + ] + }, + "head": { + "rotate": [ + { + "curve": [ 0.03505763, -0.03365194, 0.06923295, 8.79646 ] + }, + { + "time": 0.1, + "value": 9.412632, + "curve": [ 0.1414455, 10.240612, 0.18923196, 4.372643 ] + }, + { + "time": 0.2, + "value": 3.229214, + "curve": [ 0.22409774, 0.6703372, 0.369401, -14.74709 ] + }, + { + "time": 0.4, + "value": -19.236755, + "curve": [ 0.4406888, -25.206884, 0.4984135, -33.84248 ] + }, + { + "time": 0.5333333, + "value": -33.74492, + "curve": [ 0.5805327, -33.61305, 0.6141069, -28.696323 ] + }, + { + "time": 0.6666667, + "value": -28.63125, + "curve": [ 0.7304774, -28.55225, 0.8094596, -29.54262 ] + }, + { + "time": 0.9, + "value": -29.937616, + "curve": [ 0.9481022, -30.147467, 0.966936, -4.30948 ] + }, + { + "time": 1, + "value": -3.735237, + "curve": [ 1.0320543, -3.1785336, 1.0400202, -9.869615 ] + }, + { + "time": 1.0666667, + "value": -9.829565, + "curve": [ 1.0942267, -9.788138, 1.1568012, 0.4223108 ] + }, + { + "time": 1.2, + "value": 0.3623085, + "curve": [ 1.237033, 0.3108692, 1.2491666, -5.1648 ] + }, + { + "time": 1.2666667, + "value": -5.1648, + "curve": [ 1.2918334, -5.1648, 1.3507247, 3.755885 ] + }, + { + "time": 1.4, + "value": 3.8968296, + "curve": [ 1.4395118, 4.00985, 1.5085, 0 ] + }, + { "time": 1.5333333 } + ], + "translate": [ + { + "curve": [ 0.05, 0, 0.15018436, 1.695427, 0.05, 0, 0.15, -35.74241 ] + }, + { + "time": 0.2, + "x": 2.517872, + "y": -35.74241, + "curve": [ 0.26383, 3.571728, 0.3416667, 10.406754, 0.2583333, -35.74241, 0.3416667, -18.18716 ] + }, + { + "time": 0.4, + "x": 10.406754, + "y": -18.18716, + "curve": [ 0.4583333, 10.406754, 0.6083333, 26.321533, 0.4583333, -18.18716, 0.6083333, -20.793 ] + }, + { + "time": 0.6666667, + "x": 26.321533, + "y": -20.793, + "curve": [ 0.75, 26.321533, 0.9166667, 19.03595, 0.75, -20.793, 0.9166667, 1.70395 ] + }, + { "time": 1, "x": 19.03595, "y": 1.70395 } + ], + "scale": [ + { + "curve": [ 0.05, 1, 0.15, 0.9846538, 0.05, 1, 0.15, 1.0486925 ] + }, + { + "time": 0.2, + "x": 0.9846538, + "y": 1.0486925, + "curve": [ 0.23333333, 0.9846538, 0.3, 1, 0.23333333, 1.0486925, 0.3, 1 ] + }, + { + "time": 0.3333333, + "curve": [ 0.375, 1, 0.4583333, 1.0658532, 0.375, 1, 0.4583333, 0.9446618 ] + }, + { + "time": 0.5, + "x": 1.0658532, + "y": 0.9446618, + "curve": [ 0.6029718, 1.0658532, 0.7001455, 0.987006, 0.6385755, 0.9446618, 0.8166666, 1.0486925 ] + }, + { + "time": 0.8666667, + "x": 0.9846538, + "y": 1.0486925, + "curve": [ 0.878, 0.9846538, 0.9583455, 1.0662344, 0.9168404, 1.0492805, 0.9583556, 0.9451558 ] + }, + { + "time": 1, + "x": 1.0658532, + "y": 0.9446618, + "curve": [ 1.044783, 1.0654434, 1.0613284, 0.98583, 1.0495664, 0.9440737, 1.0580918, 1.0475163 ] + }, + { + "time": 1.1, + "x": 0.9846538, + "y": 1.0486925, + "curve": [ 1.189014, 0.9828896, 1.3628333, 1, 1.119425, 1.0475165, 1.3628333, 1 ] + }, + { "time": 1.5333333 } + ] + }, + "head-control": { + "translate": [ + { + "curve": [ 0.1024278, 0, 0.22652973, -26.07893, 0.05, 0, 0.2618621, 97.74262 ] + }, + { + "time": 0.4333333, + "x": -26.09902, + "y": 97.29775, + "curve": [ 0.6625342, -26.121284, 0.8315986, -16.9805, 0.6132514, 96.83098, 0.89164, 22.953415 ] + }, + { + "time": 0.9333333, + "x": -14.02325, + "y": 11.078598, + "curve": [ 0.985834, -12.497145, 1.0348732, -10.471168, 0.957361, 4.235153, 1.0583333, -31.97078 ] + }, + { + "time": 1.1, + "x": -8.272495, + "y": -31.97078, + "curve": [ 1.1634384, -6.130821, 1.2653453, -3.6763954, 1.1583333, -31.97078, 1.275, 24.45047 ] + }, + { + "time": 1.3333334, + "x": -2.266205, + "y": 24.45047, + "curve": [ 1.4467424, 0.08610153, 1.4833333, 0, 1.3833333, 24.45047, 1.4833333, 0 ] + }, + { "time": 1.5333333 } + ] + }, + "head2": { + "rotate": [ + { + "value": 18.07678, + "curve": [ 0.03333333, 18.07678, 0.10766412, 24.734615 ] + }, + { + "time": 0.13333334, + "value": 25.812656, + "curve": [ 0.2061229, 28.86963, 0.2583333, 29.658413 ] + }, + { + "time": 0.3, + "value": 29.658413, + "curve": [ 0.325, 29.658413, 0.3866193, 27.38244 ] + }, + { + "time": 0.4, + "value": 26.311893, + "curve": [ 0.487511, 19.310423, 0.6058985, 9.52941 ] + }, + { + "time": 0.6333333, + "value": 7.395477, + "curve": [ 0.6805848, 3.720175, 0.7607325, -1.9918404 ] + }, + { + "time": 0.8333333, + "value": -1.9808044, + "curve": [ 0.8881725, -1.972468, 0.9438551, 1.2918777 ] + }, + { + "time": 0.9666666, + "value": 3.210517, + "curve": [ 1.005285, 6.458637, 1.0194412, 15.10896 ] + }, + { + "time": 1.0666667, + "value": 15.128687, + "curve": [ 1.12486, 15.152994, 1.203522, 13.956476 ] + }, + { + "time": 1.2333333, + "value": 12.868113, + "curve": [ 1.27148, 11.475447, 1.274936, 9.977432 ] + }, + { + "time": 1.3333334, + "value": 7.768884, + "curve": [ 1.394467, 5.456861, 1.3931305, 5.89737 ] + }, + { + "time": 1.4333333, + "value": 5.855892, + "curve": [ 1.4808393, 5.806888, 1.5166667, 8.934134 ] + }, + { "time": 1.5333333, "value": 8.934134 } + ], + "scale": [ + { + "time": 0.9, + "curve": [ 0.9284444, 1, 0.962957, 1.055678, 0.9284444, 1, 0.962957, 0.9775324 ] + }, + { + "time": 1, + "x": 1.055678, + "y": 0.9775324, + "curve": [ 1.0517157, 1.055678, 1.1096642, 0.9514352, 1.0517157, 0.9775324, 1.1096642, 0.9971413 ] + }, + { + "time": 1.1666666, + "x": 0.9419533, + "y": 1.0009675, + "curve": [ 1.2673774, 0.9255758, 1.3669037, 1, 1.2673774, 1.0075762, 1.3669037, 1 ] + }, + { "time": 1.4333333 } + ] + }, + "hip": { + "rotate": [ + { + "value": -4.48, + "curve": [ 0.04939024, -9.71827, 0.1, -13.95306 ] + }, + { + "time": 0.13333334, + "value": -13.95306, + "curve": [ 0.2, -13.95306, 0.3609725, 5.795482 ] + }, + { + "time": 0.4, + "value": 12.45618, + "curve": [ 0.4384357, 19.01588, 0.5129018, 31.527214 ] + }, + { + "time": 0.6666667, + "value": 31.43167, + "curve": [ 0.8206627, 31.9094, 0.9508505, 2.177969 ] + }, + { + "time": 0.9666666, + "value": -4.26282, + "curve": [ 0.9822982, -10.628548, 1.013309, -18.685547 ] + }, + { + "time": 1.0666667, + "value": -18.59, + "curve": [ 1.1083032, -18.51544, 1.2916666, 3.447695 ] + }, + { + "time": 1.3333334, + "value": 3.447695, + "curve": [ 1.3666667, 3.447695, 1.4453486, 2.345166 ] + }, + { "time": 1.5333333, "value": -4.48 } + ], + "translate": [ + { + "x": -47.55974, + "y": 48.49039, + "curve": [ 0.04307268, -69.42832, 0.1, -79.9077, 0.03333333, 48.49039, 0.11114137, -39.50192 ] + }, + { + "time": 0.13333334, + "x": -79.9077, + "y": -55.84988, + "curve": [ 0.16613334, -79.9077, 0.22519547, -76.37587, 0.16183554, -76.84631, 0.2170732, -91.16986 ] + }, + { + "time": 0.2666667, + "x": -52.46546, + "y": -92.76247, + "curve": [ 0.3118877, -26.393097, 0.3802154, 56.35566, 0.3174495, -94.39322, 0.359135, -58.95618 ] + }, + { + "time": 0.4, + "x": 82.20362, + "y": 39.50983, + "curve": [ 0.4262816, 116.53996, 0.5323888, 203.27153, 0.430452, 112.88516, 0.475249, 649.6887 ] + }, + { + "time": 0.6666667, + "x": 205.52113, + "y": 649.7935, + "curve": [ 0.7752226, 207.3398, 0.8572947, 58.94556, 0.8788233, 646.8324, 0.9261009, 440.0588 ] + }, + { + "time": 0.9666666, + "x": 59.66729, + "y": 161.09656, + "curve": [ 1.0261706, 60.05994, 1.0414842, 72.89872, 0.982374, 53.86581, 1.0042722, -91.4033 ] + }, + { + "time": 1.0666667, + "x": 91.29805, + "y": -91.59865, + "curve": [ 1.0827485, 103.0481, 1.246271, 238.61716, 1.207365, -92.03922, 1.23441, 76.13248 ] + }, + { + "time": 1.3333334, + "x": 238.12, + "y": 75.68278, + "curve": [ 1.408282, 237.692, 1.5, 213.2, 1.41039, 75.3325, 1.4967587, 49.77 ] + }, + { "time": 1.5333333, "x": 213.2, "y": 49.77 } + ] + }, + "horn-back": { + "translate": [ + { + "curve": [ 0.10833333, 0, 0.325, -3.26532, 0.10833333, 0, 0.325, -12.119263 ] + }, + { + "time": 0.4333333, + "x": -3.26532, + "y": -12.119263, + "curve": [ 0.5583333, -3.26532, 0.8083333, 0, 0.5583333, -12.119263, 0.8083333, 0 ] + }, + { + "time": 0.9333333, + "curve": [ 0.975, 0, 1.0583333, -2.83255, 0.975, 0, 1.0583333, 17.369934 ] + }, + { + "time": 1.1, + "x": -2.83255, + "y": 17.369934, + "curve": [ 1.1583333, -2.83255, 1.275, 0.4928589, 1.1583333, 17.369934, 1.275, 6.929199 ] + }, + { + "time": 1.3333334, + "x": 0.4928589, + "y": 6.929199, + "curve": [ 1.3833333, 0.4928589, 1.4833333, 0, 1.3833333, 6.929199, 1.4833333, 0 ] + }, + { "time": 1.5333333 } + ] + }, + "horn-front": { + "translate": [ + { + "curve": [ 0.10833333, 0, 0.325, -6.38739, 0.10833333, 0, 0.325, 23.94919 ] + }, + { + "time": 0.4333333, + "x": -6.38739, + "y": 23.94919, + "curve": [ 0.5583333, -6.38739, 0.8083333, 3.02063, 0.5583333, 23.94919, 0.8083333, -1.1099396 ] + }, + { + "time": 0.9333333, + "x": 3.02063, + "y": -1.1099396, + "curve": [ 0.975, 3.02063, 1.0583333, 4.308502, 0.975, -1.1099396, 1.0583333, -10.040283 ] + }, + { + "time": 1.1, + "x": 4.308502, + "y": -10.040283, + "curve": [ 1.1583333, 4.308502, 1.275, 3.715881, 1.1583333, -10.040283, 1.275, 6.169494 ] + }, + { + "time": 1.3333334, + "x": 3.715881, + "y": 6.169494, + "curve": [ 1.3833333, 3.715881, 1.4833333, 0, 1.3833333, 6.169494, 1.4833333, 0 ] + }, + { "time": 1.5333333 } + ] + }, + "jaw": { + "rotate": [ + { "value": 0.83 }, + { "time": 0.13333334, "value": 6.621223 }, + { "time": 0.3333333, "value": -3.9759824 }, + { + "time": 0.4666667, + "value": -14.794998, + "curve": [ 0.730679, -14.756192, 0.7916667, 3.2214966 ] + }, + { "time": 0.9, "value": 3.2214966 }, + { "time": 0.9333333, "value": -3.14238 }, + { "time": 1.0666667, "value": 12.0793 }, + { "time": 1.2333333, "value": -8.412506 }, + { "time": 1.5333333, "value": 0.83 } + ], + "translate": [ + { + "x": -10.21, + "y": 13.96, + "curve": [ 0.04088889, -10.21, 0.08613927, -23.5286, 0.04088889, 13.96, 0.08613927, -6.685951 ] + }, + { + "time": 0.13333334, + "x": -23.5286, + "y": -6.685951, + "curve": [ 0.2329039, -23.5286, 0.3466358, -43.28625, 0.2329039, -6.685951, 0.3466358, 2.8982944 ] + }, + { + "time": 0.4666667, + "x": -42.09283, + "y": 4.748298, + "curve": [ 0.60727, -40.69499, 0.7565256, -33.91715, 0.60727, 6.915169, 0.7565256, -13.5508 ] + }, + { + "time": 0.9, + "x": -28.39117, + "y": -12.097076, + "curve": [ 1.016279, -24.001684, 1.129637, -30.307167, 1.016279, -10.94233, 1.129637, 3.186041 ] + }, + { + "time": 1.2333333, + "x": -26.95498, + "y": 9.165527, + "curve": [ 1.346955, -23.32345, 1.449345, -10.21, 1.346955, 15.643305, 1.449345, 13.96 ] + }, + { "time": 1.5333333, "x": -10.21, "y": 13.96 } + ] + }, + "leg-control": { + "translate": [ + { + "curve": [ 0.04983333, 0, 0.106145, 0, 0.04983333, 0, 0.106145, 100.2165 ] + }, + { + "time": 0.16666667, + "y": 100.2165, + "curve": [ 0.1994284, 0, 0.23356053, 0, 0.1994284, 100.2165, 0.2419563, -19.30138 ] + }, + { + "time": 0.2666667, + "y": -25.60837, + "curve": [ 0.3305002, 0, 0.3978914, 0, 0.3211843, -39.52325, 0.3978914, -43.58241 ] + }, + { + "time": 0.4666667, + "y": -43.47263, + "curve": [ 0.5215941, 0, 0.5777886, 0, 0.5215941, -43.38595, 0.5975119, 11.653577 ] + }, + { + "time": 0.6333333, + "y": 23.702656, + "curve": [ 0.7448424, 0, 0.8582521, 0, 0.7285396, 55.72666, 0.8582521, 75.56955 ] + }, + { + "time": 0.9666666, + "y": 71.9841, + "curve": [ 0.9891702, 0, 1.0115097, 0, 0.9891702, 71.25411, 1.0115097, -46.63254 ] + }, + { + "time": 1.0333333, + "y": -48.46259, + "curve": [ 1.091037, 0, 1.147299, 0, 1.091037, -53.22664, 1.1263382, 120.26613 ] + }, + { + "time": 1.2, + "y": 118.83476, + "curve": [ 1.2344044, 0, 1.2678287, 0, 1.2366675, 118.12227, 1.250649, -67.36244 ] + }, + { + "time": 1.3, + "y": -66.77322, + "curve": [ 1.334946, 0, 1.368531, 0, 1.332617, -66.3838, 1.367956, 44.6007 ] + }, + { + "time": 1.4, + "y": 40.56326, + "curve": [ 1.448572, 0, 1.4930675, 0, 1.4206245, 37.96463, 1.4930675, 0 ] + }, + { "time": 1.5333333 } + ] + }, + "neck": { + "rotate": [ + { + "curve": [ 0.05347558, 3.814697E-6, 0.16924272, -1.431179 ] + }, + { + "time": 0.2, + "value": -2.0760975, + "curve": [ 0.2717403, -3.5803585, 0.3288883, -4.438534 ] + }, + { + "time": 0.4, + "value": -4.476152, + "curve": [ 0.4733849, -4.514972, 0.6158731, -2.461662 ] + }, + { + "time": 0.6666667, + "value": -1.0089474, + "curve": [ 0.7281152, 0.7485084, 0.8805876, 5.846359 ] + }, + { + "time": 0.9666666, + "value": 5.852615, + "curve": [ 1.039906, 5.857933, 1.169538, -1.6884766 ] + }, + { + "time": 1.2666667, + "value": -1.79, + "curve": [ 1.3170222, -1.842636, 1.4833333, 0 ] + }, + { "time": 1.5333333 } + ], + "translate": [ + { + "curve": [ 0.04240724, -1.8787003, 0.13721284, -2.903992, 0.0576817, 3.231252, 0.13288175, 7.828142 ] + }, + { + "time": 0.2, + "x": -2.9347076, + "y": 7.9079, + "curve": [ 0.262173, -2.965134, 0.3374094, 1.3502502, 0.2616121, 7.981115, 0.3333333, -17.63 ] + }, + { + "time": 0.4, + "x": 5.598118, + "y": -17.63, + "curve": [ 0.5009625, 12.450165, 0.6120144, 22.87802, 0.4666667, -17.63, 0.6189623, -5.420392 ] + }, + { + "time": 0.6666667, + "x": 25.241896, + "y": -2.9, + "curve": [ 0.7521593, 28.93968, 0.8505017, 31.66464, 0.7753615, 2.8427334, 0.8833333, 5.364354 ] + }, + { + "time": 0.9666666, + "x": 31.776207, + "y": 5.364354, + "curve": [ 1.0828317, 31.887756, 1.2090677, 25.92845, 1.0675023, 5.519572, 1.169268, -13.51629 ] + }, + { + "time": 1.2666667, + "x": 22.30998, + "y": -13.237763, + "curve": [ 1.338471, 17.799133, 1.432032, 11.29499, 1.3446953, -13.014626, 1.4666667, 0 ] + }, + { "time": 1.5333333 } + ] + }, + "neck2": { + "rotate": [ + { + "value": -0.7680626, + "curve": [ 0.03333333, -0.7680626, 0.1, 15.96094 ] + }, + { + "time": 0.13333334, + "value": 15.96094, + "curve": [ 0.175, 15.96094, 0.2691706, 11.97457 ] + }, + { + "time": 0.3, + "value": 10.068562, + "curve": [ 0.3404953, 7.56496, 0.3750928, 4.106842 ] + }, + { + "time": 0.4, + "value": 4.053291, + "curve": [ 0.4680592, 3.906975, 0.5750458, 8.426243 ] + }, + { + "time": 0.6333333, + "value": 8.484882, + "curve": [ 0.7302829, 8.58242, 0.8833333, -2.7666016 ] + }, + { + "time": 0.9666666, + "value": -2.7666016, + "curve": [ 0.9916667, -2.7666016, 1.046591, 3.786907 ] + }, + { + "time": 1.0666667, + "value": 5.450165, + "curve": [ 1.0941862, 7.730114, 1.1916667, 10.757904 ] + }, + { + "time": 1.2333333, + "value": 10.757904, + "curve": [ 1.2583333, 10.757904, 1.3163793, 7.653534 ] + }, + { + "time": 1.3666667, + "value": 7.604763, + "curve": [ 1.416954, 7.555996, 1.5, 12.245 ] + }, + { "time": 1.5333333, "value": 12.245 } + ] + }, + "saddle": { + "translate": [ + { "x": 19.275055, "y": -10.708496 } + ] + }, + "saddle-strap-back": { + "rotate": [ + { + "value": -13.919876, + "curve": [ 0.1191414, -14.07051, 0.1852909, -17.287704 ] + }, + { + "time": 0.2666667, + "value": -17.26166, + "curve": [ 0.325893, -17.24269, 0.4666667, 1.360092 ] + }, + { + "time": 0.5333333, + "value": 1.360092, + "curve": [ 0.5833333, 1.360092, 0.6856592, 0.5847015 ] + }, + { + "time": 0.7333333, + "value": -2.103531, + "curve": [ 0.77299, -4.339676, 0.8833333, -27.93289 ] + }, + { + "time": 0.9333333, + "value": -27.93289, + "curve": [ 0.9995833, -27.93289, 1.12849, -14.596176 ] + }, + { + "time": 1.2, + "value": -13.793747, + "curve": [ 1.305498, -12.609924, 1.351664, -12.265778 ] + }, + { + "time": 1.4333333, + "value": -12.067566, + "curve": [ 1.4796318, -11.9552, 1.5083333, -14.426956 ] + }, + { "time": 1.5333333, "value": -14.426956 } + ] + }, + "saddle-strap-front": { + "rotate": [ + { + "curve": [ 0.06772222, 0, 0.1474087, 0.591459 ] + }, + { + "time": 0.23333333, + "value": 0.259079, + "curve": [ 0.2864935, 0.05770691, 0.3636926, -2.8892975 ] + }, + { + "time": 0.4, + "value": -4.329941, + "curve": [ 0.431961, -5.59811, 0.4889065, -7.005408 ] + }, + { + "time": 0.5333333, + "value": -7.189316, + "curve": [ 0.6217504, -7.544222, 0.7482375, -0.5071716 ] + }, + { + "time": 0.8, + "value": 1.715271, + "curve": [ 0.8767981, 5.012638, 0.9311765, 5.58139 ] + }, + { + "time": 1, + "value": 5.618118, + "curve": [ 1.039618, 5.639262, 1.113804, -0.9842424 ] + }, + { + "time": 1.1666666, + "value": -2.422226, + "curve": [ 1.307446, -6.119897, 1.4334126, -6.467254 ] + }, + { "time": 1.5333333, "value": -6.467254 } + ] + }, + "spineboy-front-arm-target": { + "translate": [ + { "x": -0.4281616, "y": -9.009827 }, + { "time": 0.5 }, + { "time": 0.9666666, "x": -6.557892, "y": 0.7037048 }, + { "time": 1.0666667, "x": 12.253387, "y": -29.510223 } + ] + }, + "spineboy-front-foot-target": { + "translate": [ + { "time": 0.2666667 }, + { "time": 0.4333333, "x": 19.718567, "y": -2.177307 }, + { "time": 0.5333333, "x": 19.3869, "y": -3.070618 }, + { "time": 0.6666667, "x": -3.866028, "y": 6.006531 }, + { "time": 1.0666667, "x": -10.922913, "y": 4.868591 }, + { "time": 1.4666667 } + ] + }, + "spineboy-hip": { + "translate": [ + { + "curve": [ 0.03333333, 0, 0.07061785, 12.380562, 0.03333333, 0, 0.09875296, 6.023815 ] + }, + { + "time": 0.13333334, + "x": 18.46862, + "y": 5.610294, + "curve": [ 0.18255045, 23.24633, 0.2850133, 23.08951, 0.1990939, 4.823915, 0.3081037, -11.168966 ] + }, + { + "time": 0.3333333, + "x": 24.30155, + "y": -23.550415, + "curve": [ 0.4389544, 26.95092, 0.5532857, 40.03147, 0.3944341, -53.53569, 0.572542, -55.53518 ] + }, + { + "time": 0.6666667, + "x": 51.29906, + "y": -55.19694, + "curve": [ 0.740508, 58.63727, 0.9050695, 68.29027, 0.8531014, -54.52699, 0.9393168, -42.26451 ] + }, + { + "time": 1, + "x": 67.67545, + "y": -37.86953, + "curve": [ 1.0709656, 67.2159, 1.2159532, 14.11535, 1.054531, -33.92013, 1.171435, -3.335044 ] + }, + { + "time": 1.2666667, + "x": 10.38967, + "y": -1.8260137, + "curve": [ 1.3761553, 2.346062, 1.4666667, 0, 1.3383594, -0.6899779, 1.4666667, 0 ] + }, + { "time": 1.5333333 } + ] + }, + "spineboy-torso": { + "rotate": [ + { + "value": -4.784553, + "curve": [ 0.03333333, -4.784553, 0.08756773, -8.825928 ] + }, + { + "time": 0.13333334, + "value": -13.356808, + "curve": [ 0.1792063, -17.898323, 0.24173756, -26.07226 ] + }, + { + "time": 0.2666667, + "value": -31.39194, + "curve": [ 0.3096485, -40.56392, 0.3823504, -52.7289 ] + }, + { + "time": 0.4666667, + "value": -52.78943, + "curve": [ 0.5741774, -52.86661, 0.6149116, -44.37711 ] + }, + { + "time": 0.6666667, + "value": -36.05438, + "curve": [ 0.7096492, -29.14234, 0.9166667, 9.178033 ] + }, + { + "time": 1, + "value": 9.178033, + "curve": [ 1.0583333, 9.178033, 1.1625733, -29.028183 ] + }, + { + "time": 1.2333333, + "value": -29.370766, + "curve": [ 1.275, -29.370766, 1.3774828, -9.74331 ] + }, + { + "time": 1.4, + "value": -7.980461, + "curve": [ 1.4431034, -4.605987, 1.5166667, -1.6949463 ] + }, + { "time": 1.5333333, "value": -1.6949463 } + ] + }, + "stirrup": { + "rotate": [ + {}, + { "time": 0.3, "value": -13.385666, "curve": "stepped" }, + { "time": 0.9666666, "value": -13.385666 }, + { "time": 1.3333334 } + ] + }, + "tail1": { + "rotate": [ + { + "curve": [ 0.03287034, -0.7266083, 0.1817244, -1.373693 ] + }, + { + "time": 0.23333333, + "value": -0.6767425, + "curve": [ 0.3240415, 0.5482025, 0.3779942, 4.696258 ] + }, + { + "time": 0.4, + "value": 6.151978, + "curve": [ 0.448504, 9.360596, 0.5232101, 12.033417 ] + }, + { + "time": 0.5666666, + "value": 12.048172, + "curve": [ 0.7042468, 12.09488, 0.7643096, -9.785278 ] + }, + { + "time": 0.9333333, + "value": -9.74, + "curve": [ 0.9839873, -9.726435, 1.05373, -9.247772 ] + }, + { + "time": 1.1, + "value": -7.089081, + "curve": [ 1.1733563, -3.66669, 1.2793553, 7.710052 ] + }, + { + "time": 1.3333334, + "value": 7.674698, + "curve": [ 1.4073514, 7.626251, 1.4913268, 0 ] + }, + { "time": 1.5333333 } + ] + }, + "tail2": { + "rotate": [ + { + "curve": [ 0.031111114, 0, 0.08510702, -0.300545 ] + }, + { + "time": 0.13333334, + "value": -0.8772564, + "curve": [ 0.2202842, -1.8775845, 0.2550831, -7.43006 ] + }, + { + "time": 0.3, + "value": -7.43006, + "curve": [ 0.325, -7.43006, 0.366361, -7.051846 ] + }, + { + "time": 0.4, + "value": -5.892628, + "curve": [ 0.433639, -4.73341, 0.5055433, 1.383686 ] + }, + { + "time": 0.5333333, + "value": 1.7542953, + "curve": [ 0.582281, 2.407062, 0.637103, 3.110265 ] + }, + { + "time": 0.7333333, + "value": 3.13869, + "curve": [ 0.8143955, 3.162634, 0.9025146, 0.4220686 ] + }, + { + "time": 0.9333333, + "value": -0.8334427, + "curve": [ 0.9588247, -1.8719282, 1.1056635, -7.132017 ] + }, + { + "time": 1.1666666, + "value": -7.069343, + "curve": [ 1.205912, -7.029023, 1.308478, 4.718074 ] + }, + { + "time": 1.4, + "value": 4.88549, + "curve": [ 1.4523827, 4.978307, 1.500639, -6.456978 ] + }, + { "time": 1.5333333, "value": -6.456978 } + ] + }, + "tail3": { + "rotate": [ + { + "curve": [ 0.14323805, -0.06000659, 0.2121792, -21.949875 ] + }, + { + "time": 0.23333333, + "value": -24.081154, + "curve": [ 0.2577262, -26.538734, 0.2833333, -26.630775 ] + }, + { + "time": 0.3, + "value": -26.630775, + "curve": [ 0.325, -26.630775, 0.3650703, -22.41479 ] + }, + { + "time": 0.4, + "value": -17.41577, + "curve": [ 0.4632423, -8.364758, 0.658268, 0.6783142 ] + }, + { + "time": 0.7666666, + "value": 0.9936981, + "curve": [ 0.8390093, 1.204176, 0.910802, -6.876014 ] + }, + { + "time": 0.9333333, + "value": -7.945017, + "curve": [ 0.999372, -11.07824, 1.1005234, -12.029096 ] + }, + { + "time": 1.1666666, + "value": -11.939575, + "curve": [ 1.23281, -11.850054, 1.316891, -8.443453 ] + }, + { + "time": 1.3333334, + "value": -7.623953, + "curve": [ 1.3997906, -4.311687, 1.4833333, 0 ] + }, + { "time": 1.5333333 } + ] + }, + "tail4": { + "rotate": [ + { + "value": 6.72319, + "curve": [ 0.018444445, 6.72319, 0.07240372, 8.447402 ] + }, + { + "time": 0.13333334, + "value": 8.079658, + "curve": [ 0.2568993, 7.33387, 0.1611246, -3.2749064 ] + }, + { + "time": 0.3, + "value": -3.309633, + "curve": [ 0.45527315, -3.348448, 0.598814, 7.468219 ] + }, + { + "time": 0.7666666, + "value": 11.948583, + "curve": [ 0.8036452, 12.935624, 0.8614923, 14.26252 ] + }, + { + "time": 0.9333333, + "value": 14.351345, + "curve": [ 0.9628011, 14.38778, 0.9956852, 14.413406 ] + }, + { + "time": 1.0333333, + "value": 6.038603, + "curve": [ 1.072194, -2.562548, 1.116085, -11.417873 ] + }, + { + "time": 1.1666666, + "value": -11.396616, + "curve": [ 1.2375096, -11.396616, 1.3180643, -6.9504 ] + }, + { + "time": 1.3333334, + "value": -5.65272, + "curve": [ 1.363634, -3.077556, 1.5083333, 3.647316 ] + }, + { "time": 1.5333333, "value": 3.647316 } + ] + }, + "tail5": { + "rotate": [ + { + "value": 6.72319, + "curve": [ 0.01822222, 6.72319, 0.07690286, 8.482862 ] + }, + { + "time": 0.13333334, + "value": 5.569778, + "curve": [ 0.21400374, 1.4053636, 0.24897794, -14.57616 ] + }, + { + "time": 0.3, + "value": -14.57616, + "curve": [ 0.3412472, -14.520948, 0.3601029, -12.872583 ] + }, + { + "time": 0.4, + "value": -10.37234, + "curve": [ 0.4662488, -6.220704, 0.4812019, 6.108667 ] + }, + { + "time": 0.7666666, + "value": 11.470898, + "curve": [ 0.8313857, 12.686594, 0.8569777, 12.877556 ] + }, + { + "time": 0.9333333, + "value": 12.892343, + "curve": [ 1.072503, 12.919296, 1.137411, -5.020143 ] + }, + { + "time": 1.1666666, + "value": -10.521278, + "curve": [ 1.189477, -14.810457, 1.2416667, -16.262796 ] + }, + { + "time": 1.2666667, + "value": -16.262796, + "curve": [ 1.2916666, -16.262796, 1.3441527, -10.567275 ] + }, + { + "time": 1.3666667, + "value": -7.389768, + "curve": [ 1.387056, -4.512153, 1.4679966, -0.3047509 ] + }, + { "time": 1.5333333 } + ] + }, + "tail6": { + "rotate": [ + { + "value": 6.72319, + "curve": [ 0.01733333, 6.72319, 0.07886396, 14.924088 ] + }, + { + "time": 0.13333334, + "value": 14.561707, + "curve": [ 0.18564835, 14.227201, 0.22821733, 8.636116 ] + }, + { + "time": 0.23333333, + "value": 6.585541, + "curve": [ 0.24529457, 1.791268, 0.3032479, -11.908432 ] + }, + { + "time": 0.4, + "value": -11.908432, + "curve": [ 0.4739294, -11.908432, 0.7020228, 8.291633 ] + }, + { + "time": 0.7666666, + "value": 12.945202, + "curve": [ 0.8030987, 15.567865, 0.8446396, 18.423435 ] + }, + { + "time": 0.9333333, + "value": 18.635305, + "curve": [ 1.0426456, 18.896433, 1.0798775, -11.400968 ] + }, + { + "time": 1.1666666, + "value": -11.613902, + "curve": [ 1.236395, -11.437342, 1.290008, -10.991858 ] + }, + { + "time": 1.3333334, + "value": -8.875732, + "curve": [ 1.422881, -4.579358, 1.4716552, 2.969151 ] + }, + { "time": 1.5333333, "value": 3.68774 } + ] + }, + "tail7": { + "rotate": [ + { + "value": 6.72319, + "curve": [ 0.04856597, 6.723188, 0.19310887, 20.18909 ] + }, + { + "time": 0.23333333, + "value": 20.18909, + "curve": [ 0.24999997, 20.18909, 0.3250953, -13.058746 ] + }, + { + "time": 0.4, + "value": -13.058746, + "curve": [ 0.4333333, -13.058746, 0.4840606, -9.84144 ] + }, + { + "time": 0.5333333, + "value": -5.931482, + "curve": [ 0.5861562, -1.739808, 0.8224727, 16.83142 ] + }, + { + "time": 0.9333333, + "value": 16.851704, + "curve": [ 0.9921694, 16.86247, 1.0350803, 12.253622 ] + }, + { + "time": 1.0666667, + "value": 7.162903, + "curve": [ 1.129186, -2.7190814, 1.165667, -16.97346 ] + }, + { + "time": 1.2, + "value": -16.509, + "curve": [ 1.27324, -16.509, 1.319482, -13.061638 ] + }, + { + "time": 1.3666667, + "value": -8.954494, + "curve": [ 1.421236, -4.204542, 1.5083333, 0 ] + }, + { "time": 1.5333333 } + ] + }, + "tail8": { + "rotate": [ + { + "value": 6.72319, + "curve": [ 0.01822222, 6.72319, 0.178683, 17.1448 ] + }, + { + "time": 0.23333333, + "value": 17.1343, + "curve": [ 0.2569108, 17.197693, 0.2880572, 11.353744 ] + }, + { + "time": 0.3, + "value": 9.005302, + "curve": [ 0.3179721, 5.471263, 0.375, -14.470314 ] + }, + { + "time": 0.4, + "value": -14.470314, + "curve": [ 0.4333333, -14.470314, 0.4924329, -12.367708 ] + }, + { + "time": 0.5333333, + "value": -9.759455, + "curve": [ 0.5752436, -6.726073, 0.7321852, 7.055005 ] + }, + { + "time": 0.7666666, + "value": 9.18102, + "curve": [ 0.808957, 11.7885, 0.8502483, 14.28186 ] + }, + { + "time": 0.9333333, + "value": 14.39803, + "curve": [ 0.9800523, 14.46335, 1.026814, 12.950827 ] + }, + { + "time": 1.0666667, + "value": 6.470802, + "curve": [ 1.1115044, -0.739366, 1.1478443, -13.08259 ] + }, + { + "time": 1.1666666, + "value": -14.914372, + "curve": [ 1.214801, -19.59876, 1.2591246, -23.09006 ] + }, + { + "time": 1.3, + "value": -23.166473, + "curve": [ 1.376154, -23.242884, 1.5083333, -11.891228 ] + }, + { "time": 1.5333333, "value": -11.891228 } + ] + }, + "tail9": { + "rotate": [ + { + "value": 6.72319, + "curve": [ 0.03967961, 6.72319, 0.18518864, 21.11507 ] + }, + { + "time": 0.23333333, + "value": 21.24765, + "curve": [ 0.2698413, 21.34819, 0.2835522, 17.73857 ] + }, + { + "time": 0.3, + "value": 14.562775, + "curve": [ 0.3222607, 10.26461, 0.375, -13.058746 ] + }, + { + "time": 0.4, + "value": -13.058746, + "curve": [ 0.4333333, -13.058746, 0.5104303, -11.636218 ] + }, + { + "time": 0.5333333, + "value": -7.881337, + "curve": [ 0.5791204, -0.3746886, 0.7413781, 21.142994 ] + }, + { + "time": 0.7666666, + "value": 23.25365, + "curve": [ 0.8190615, 27.626684, 0.8650785, 31.030573 ] + }, + { + "time": 0.9333333, + "value": 31.089256, + "curve": [ 0.9747346, 31.12485, 1.0339192, 24.26999 ] + }, + { + "time": 1.0666667, + "value": 16.48204, + "curve": [ 1.1207376, 3.62299, 1.1464382, -4.675533 ] + }, + { + "time": 1.1666666, + "value": -10.428966, + "curve": [ 1.184621, -15.535625, 1.2416667, -22.43407 ] + }, + { + "time": 1.2666667, + "value": -22.43407, + "curve": [ 1.2916666, -22.43407, 1.337793, -20.951736 ] + }, + { + "time": 1.3666667, + "value": -17.59012, + "curve": [ 1.41179, -12.336625, 1.5083333, 0 ] + }, + { "time": 1.5333333 } + ] + }, + "tail10": { + "rotate": [ + { + "value": 6.72319, + "curve": [ 0.03793281, 6.72319, 0.19905053, 10.822815 ] + }, + { + "time": 0.23333333, + "value": 10.92908, + "curve": [ 0.2565702, 11.00111, 0.2755669, 11.071588 ] + }, + { + "time": 0.3, + "value": 8.709663, + "curve": [ 0.3350128, 5.325014, 0.3701347, -8.928152 ] + }, + { + "time": 0.4, + "value": -12.603508, + "curve": [ 0.42502645, -15.683377, 0.5, -18.92422 ] + }, + { + "time": 0.5333333, + "value": -18.92422, + "curve": [ 0.5490755, -18.92422, 0.6511296, 2.649351 ] + }, + { + "time": 0.7, + "value": 9.58937, + "curve": [ 0.7246166, 13.085142, 0.7909734, 16.415785 ] + }, + { + "time": 0.8333333, + "value": 16.817863, + "curve": [ 0.9561147, 17.9833, 1.0505657, 10.262604 ] + }, + { + "time": 1.0666667, + "value": 7.382777, + "curve": [ 1.0984063, 1.7057834, 1.1302344, -23.722534 ] + }, + { + "time": 1.1666666, + "value": -26.2446, + "curve": [ 1.198726, -28.46394, 1.2416667, -29.22434 ] + }, + { + "time": 1.2666667, + "value": -29.22434, + "curve": [ 1.2916666, -29.22434, 1.3531867, -18.665724 ] + }, + { + "time": 1.3666667, + "value": -17.837833, + "curve": [ 1.4083333, -15.27882, 1.4916667, -11.1899 ] + }, + { "time": 1.5333333, "value": -11.1899 } + ] + }, + "tongue1": { + "rotate": [ + { + "curve": [ 0.1, 0, 0.3, 9.373764 ] + }, + { + "time": 0.4, + "value": 9.373764, + "curve": [ 0.5, 9.373764, 0.7, 17.47627 ] + }, + { + "time": 0.8, + "value": 17.47627, + "curve": [ 0.8666667, 17.47627, 1, 22.438965 ] + }, + { + "time": 1.0666667, + "value": 22.438965, + "curve": [ 1.1166667, 22.438965, 1.2166667, -7.297119 ] + }, + { + "time": 1.2666667, + "value": -7.297119, + "curve": [ 1.3333334, -7.297119, 1.4666667, 0 ] + }, + { "time": 1.5333333 } + ] + }, + "tongue2": { + "rotate": [ + { + "curve": [ 0.08333333, 0, 0.25, -16.66993 ] + }, + { + "time": 0.3333333, + "value": -16.66993, + "curve": [ 0.3833333, -16.66993, 0.4833333, -20.403053 ] + }, + { + "time": 0.5333333, + "value": -20.403053, + "curve": [ 0.5916666, -20.403053, 0.7083333, -5.901935 ] + }, + { "time": 0.7666666, "value": -5.901935 } + ] + }, + "tongue3": { + "rotate": [ + { + "curve": [ 0.08333333, 0, 0.25, -16.66993 ] + }, + { + "time": 0.3333333, + "value": -16.66993, + "curve": [ 0.3833333, -16.66993, 0.4833333, -32.414 ] + }, + { + "time": 0.5333333, + "value": -32.414, + "curve": [ 0.5916666, -32.414, 0.7083333, -4.63914 ] + }, + { + "time": 0.7666666, + "value": -4.63914, + "curve": [ 0.8166666, -4.63914, 0.9166667, 9.342292 ] + }, + { "time": 0.9666666, "value": 9.342292 } + ] + }, + "torso1": { + "rotate": [ + { + "curve": [ 0.11794363, 0.132524, 0.1351916, 1.5466008 ] + }, + { + "time": 0.2, + "value": 3.040212, + "curve": [ 0.2434089, 4.040639, 0.325, 5.401735 ] + }, + { + "time": 0.3666667, + "value": 5.401735, + "curve": [ 0.4666667, 5.401735, 0.5666666, -16.54183 ] + }, + { + "time": 0.6666667, + "value": -16.54183, + "curve": [ 0.803765, -16.54183, 0.8782087, 9.246263 ] + }, + { + "time": 0.9666666, + "value": 9.366684, + "curve": [ 1.0533587, 9.484702, 1.130607, -2.0569606 ] + }, + { + "time": 1.2, + "value": -1.9473534, + "curve": [ 1.291797, -1.8023586, 1.303572, 2.6802995 ] + }, + { + "time": 1.3666667, + "value": 2.857041, + "curve": [ 1.428809, 3.031115, 1.4716555, -0.1281481 ] + }, + { "time": 1.5333333 } + ] + }, + "torso2": { + "rotate": [ + { + "curve": [ 0.07589074, 2.175148, 0.15, 3.872154 ] + }, + { + "time": 0.2, + "value": 3.872154, + "curve": [ 0.25, 3.872154, 0.3166667, -14.545755 ] + }, + { + "time": 0.3666667, + "value": -14.545755, + "curve": [ 0.4333333, -14.545755, 0.5487152, -7.291572 ] + }, + { + "time": 0.6666667, + "value": -0.636406, + "curve": [ 0.725009, 2.655434, 0.8833333, 10.900736 ] + }, + { + "time": 0.9666666, + "value": 10.900736, + "curve": [ 1.0946612, 10.900736, 1.1852387, -6.178741 ] + }, + { + "time": 1.2666667, + "value": -6.044891, + "curve": [ 1.3795234, -5.859375, 1.471437, -2.778843 ] + }, + { "time": 1.5333333 } + ], + "translate": [ + { + "curve": [ 0.05, 0, 0.10503124, 6.291206, 0.05, 0, 0.15, -22.91757 ] + }, + { + "time": 0.2, + "x": 9.669746, + "y": -22.91757, + "curve": [ 0.4167845, 17.381935, 0.775, 24.07786, 0.3916667, -22.91757, 0.8063668, 3.870802 ] + }, + { + "time": 0.9666666, + "x": 24.07786, + "y": 4.459661, + "curve": [ 1.0115278, 24.07786, 1.070595, 23.75853, 1.021868, 4.662442, 1.07746, -8.32658 ] + }, + { + "time": 1.1333333, + "x": 20.45875, + "y": -8.457632, + "curve": [ 1.2207487, 16.020254, 1.3169906, 10.45897, 1.2100266, -8.637518, 1.3519216, 2.3454304 ] + }, + { + "time": 1.4, + "x": 5.925117, + "y": 2.2693486, + "curve": [ 1.4510212, 3.1854095, 1.49687, 0, 1.4677857, 2.162084, 1.4943796, 0 ] + }, + { "time": 1.5333333 } + ] + } + }, + "ik": { + "front-leg-ik": [ + { "softness": 37.3, "bendPositive": false }, + { "time": 0.4333333, "softness": 46.5, "bendPositive": false }, + { "time": 0.8, "softness": 15.1, "bendPositive": false } + ], + "spineboy-back-arm-ik": [ + {} + ], + "spineboy-front-arm-ik": [ + { "softness": 15, "stretch": true } + ] + }, + "drawOrder": [ + { + "offsets": [ + { "slot": "raptor-horn", "offset": 4 }, + { "slot": "front-thigh", "offset": -5 } + ] + } + ] + }, + "roar": { + "slots": { + "mouth-smile": { + "attachment": [ + { "time": 0.6333333, "name": "mouth-grind" }, + { "time": 1.5666667, "name": "mouth-smile" } + ] + } + }, + "bones": { + "back-arm": { + "rotate": [ + { "value": 44.83182 } + ], + "scale": [ + { "time": 0.4666667 }, + { "time": 0.5666666, "x": 1.088316 }, + { "time": 0.6666667, "x": 1.311493 }, + { "time": 0.7666666, "x": 1.2110946 }, + { "time": 1.2, "x": 1.0078447 }, + { "time": 1.5666667, "x": 1.137079 }, + { "time": 1.8333334 } + ] + }, + "back-arm1": { + "rotate": [ + { + "curve": [ 0.04166667, 0, 0.05576033, 24.804146 ] + }, + { + "time": 0.16666667, + "value": 25.18115, + "curve": [ 0.3005948, 25.636406, 0.566413, 11.557884 ] + }, + { + "time": 0.6333333, + "value": -5.848083, + "curve": [ 0.6723763, -16.00313, 0.7065114, -25.627747 ] + }, + { + "time": 0.8, + "value": -25.786453, + "curve": [ 0.975, -25.786453, 1.2953287, -26.779694 ] + }, + { + "time": 1.5, + "value": -12.935228, + "curve": [ 1.5643666, -8.581314, 1.825, 13.784088 ] + }, + { + "time": 1.9333333, + "value": 13.784088, + "curve": [ 1.9833333, 13.784088, 2.083333, 0 ] + }, + { "time": 2.1333334 } + ] + }, + "back-arm2": { + "rotate": [ + { + "curve": [ 0.05, 0, 0.08069675, -14.56717 ] + }, + { + "time": 0.2, + "value": -14.55378, + "curve": [ 0.2868346, -14.544052, 0.3884627, -2.0116196 ] + }, + { + "time": 0.4666667, + "value": -2.435631, + "curve": [ 0.5299447, -2.7787094, 0.5933625, -10.556877 ] + }, + { + "time": 0.6, + "value": -25.6643, + "curve": [ 0.6208762, -73.18044, 0.618549, -95.18236 ] + }, + { + "time": 0.7666666, + "value": -97.24427, + "curve": [ 0.8469903, -98.36243, 1.2787247, -103.18691 ] + }, + { + "time": 1.5, + "value": -77.44379, + "curve": [ 1.5674026, -69.6022, 1.7699687, -24.4667 ] + }, + { + "time": 1.9333333, + "value": -8.987038, + "curve": [ 1.9591317, -6.542511, 2.083333, 0 ] + }, + { "time": 2.1333334 } + ] + }, + "back-bracer": { + "rotate": [ + { "value": -108.61844 } + ] + }, + "back-foot1": { + "rotate": [ + { "value": 1.527237 } + ] + }, + "back-hand": { + "rotate": [ + { + "curve": [ 0.05, 0, 0.13647725, 7.702537 ] + }, + { + "time": 0.2, + "value": 19.14122, + "curve": [ 0.2428106, 26.850216, 0.23712154, 49.9317 ] + }, + { + "time": 0.3, + "value": 49.97766, + "curve": [ 0.4159832, 50.06244, 0.4149882, 33.41905 ] + }, + { + "time": 0.4666667, + "value": 33.94073, + "curve": [ 0.5861683, 35.14707, 0.5569841, 78.18217 ] + }, + { + "time": 0.6, + "value": 78.76733, + "curve": [ 0.6243418, 79.09846, 0.6387465, 48.69674 ] + }, + { + "time": 0.6666667, + "value": 37.71115, + "curve": [ 0.7107546, 20.36415, 0.8043132, -1.7499275 ] + }, + { + "time": 0.9666666, + "value": -3.0006065, + "curve": [ 1.1678864, -4.550705, 1.3323512, -1.596115 ] + }, + { + "time": 1.3666667, + "value": 1.793522, + "curve": [ 1.4084166, 5.917549, 1.501802, 36.78751 ] + }, + { + "time": 1.5666667, + "value": 36.40139, + "curve": [ 1.684931, 35.6974, 1.8997258, 31.043934 ] + }, + { + "time": 1.9333333, + "value": 27.24913, + "curve": [ 1.998957, 19.83928, 2.083333, 0 ] + }, + { "time": 2.1333334 } + ] + }, + "back-hand2": { + "rotate": [ + { "value": -21.46227 }, + { "time": 0.2, "value": -21.92526 }, + { "time": 0.3, "value": -8.391707 }, + { "time": 0.4333333, "value": -5.38434 }, + { "time": 0.5333333, "value": -30.37677 }, + { "time": 0.6333333, "value": -55.56099 }, + { "time": 0.7, "value": -18.741364 }, + { "time": 0.7666666, "value": -20.26363 }, + { "time": 0.8333333, "value": -21.46227 } + ] + }, + "back-knee": { + "rotate": [ + { "value": -8.233356 } + ] + }, + "back-leg-target": { + "translate": [ + {}, + { "time": 0.2, "x": 5.576042, "y": 4.017303 }, + { + "time": 0.4666667, + "x": -39.15084, + "y": -10.184196, + "curve": [ 0.5116938, -15.447058, 0.5634237, 1.2221756, 0.5116938, 9.9445, 0.5634237, 28.78541 ] + }, + { "time": 0.6333333, "x": 17.09, "y": 42.26 }, + { "time": 0.7333333, "x": 30.54152, "y": 59.3549 }, + { + "time": 1.4666667, + "x": 31.18207, + "y": 60.16894, + "curve": [ 1.5667496, 24.16492, 1.6070994, 12.613607, 1.563588, 55.66654, 1.613422, 36.27173 ] + }, + { "time": 1.6666666, "x": -19.041023, "y": -0.5181885 }, + { "time": 2.1333334 } + ] + }, + "back-leg1": { + "rotate": [ + { "value": -8.958302 } + ] + }, + "back-leg2": { + "rotate": [ + { "value": -19.64937 } + ] + }, + "back-leg3": { + "rotate": [ + { "value": 19.47037 } + ] + }, + "back-thigh": { + "rotate": [ + { "value": 6.62973 } + ] + }, + "bone": { + "rotate": [ + { + "curve": [ 0.04166667, 0, 0.125, 6.627846 ] + }, + { + "time": 0.16666667, + "value": 6.627846, + "curve": [ 0.19166666, 6.627846, 0.24166666, 2.5385475 ] + }, + { + "time": 0.2666667, + "value": 2.5385475, + "curve": [ 0.3083333, 2.5385475, 0.4059933, 11.70685 ] + }, + { + "time": 0.4333333, + "value": 12.446875, + "curve": [ 0.4905371, 13.995237, 0.5998325, 14.86839 ] + }, + { + "time": 0.7, + "value": 14.689136, + "curve": [ 0.7252427, 14.643963, 0.775, -1.4022026 ] + }, + { + "time": 0.8, + "value": -1.4022026, + "curve": [ 0.825, -1.4022026, 0.8871867, 5.017277 ] + }, + { + "time": 0.9, + "value": 5.610195, + "curve": [ 0.936381, 7.293676, 1, 9.106674 ] + }, + { + "time": 1.0333333, + "value": 9.106674, + "curve": [ 1.0583333, 9.106674, 1.1083333, 6.87953 ] + }, + { + "time": 1.1333333, + "value": 6.87953, + "curve": [ 1.1583333, 6.87953, 1.2083334, 10.505276 ] + }, + { + "time": 1.2333333, + "value": 10.505276, + "curve": [ 1.2583333, 10.505276, 1.3083333, 6.404121 ] + }, + { + "time": 1.3333334, + "value": 6.404121, + "curve": [ 1.3583333, 6.404121, 1.4083333, 14.341953 ] + }, + { + "time": 1.4333333, + "value": 14.341953, + "curve": [ 1.45, 14.341953, 1.495604, 0.9356422 ] + }, + { + "time": 1.5, + "value": 0.4916267, + "curve": [ 1.525, -2.033596, 1.575, -5.847084 ] + }, + { + "time": 1.6, + "value": -5.847084, + "curve": [ 1.625, -5.847084, 1.675, 4.872383 ] + }, + { + "time": 1.7, + "value": 4.872383, + "curve": [ 1.7166667, 4.872383, 1.75, -1.8023148 ] + }, + { + "time": 1.7666667, + "value": -1.8023148, + "curve": [ 1.8166667, -1.8023148, 1.9166666, 13.564724 ] + }, + { + "time": 1.9666667, + "value": 13.564724, + "curve": [ 2.0083334, 13.564724, 2.091667, 0 ] + }, + { "time": 2.1333334 } + ] + }, + "bone2": { + "rotate": [ + { + "curve": [ 0.04166667, 0, 0.1459393, -2.6859436 ] + }, + { + "time": 0.16666667, + "value": -4.334778, + "curve": [ 0.2190952, -8.505405, 0.2616683, -16.85917 ] + }, + { + "time": 0.2666667, + "value": -17.97653, + "curve": [ 0.3083333, -27.29093, 0.3916667, -48.50708 ] + }, + { + "time": 0.4333333, + "value": -48.50708, + "curve": [ 0.5, -48.50708, 0.6333333, 6.486885 ] + }, + { + "time": 0.7, + "value": 6.486885, + "curve": [ 0.725, 6.486885, 0.7651629, 3.579563 ] + }, + { + "time": 0.8, + "value": -1.4022255, + "curve": [ 0.847517, -8.197285, 0.875, -10.862804 ] + }, + { + "time": 0.9, + "value": -10.862804, + "curve": [ 0.9333333, -10.862804, 1, -4.945606 ] + }, + { + "time": 1.0333333, + "value": -4.945606, + "curve": [ 1.0583333, -4.945606, 1.1083333, -14.477093 ] + }, + { + "time": 1.1333333, + "value": -14.477093, + "curve": [ 1.1583333, -14.477093, 1.2083334, -10.43161 ] + }, + { + "time": 1.2333333, + "value": -10.43161, + "curve": [ 1.2583333, -10.43161, 1.3083333, -28.375816 ] + }, + { + "time": 1.3333334, + "value": -28.375816, + "curve": [ 1.3583333, -28.375816, 1.4298617, -14.40412 ] + }, + { + "time": 1.4333333, + "value": -13.27476, + "curve": [ 1.45, -7.852947, 1.4833333, 0.49160385 ] + }, + { + "time": 1.5, + "value": 0.49160385, + "curve": [ 1.525, 0.49160385, 1.5940723, -14.844006 ] + }, + { + "time": 1.6, + "value": -15.951912, + "curve": [ 1.6371905, -22.90296, 1.675, -38.33978 ] + }, + { + "time": 1.7, + "value": -38.33978, + "curve": [ 1.7166667, -38.33978, 1.748715, -24.53755 ] + }, + { + "time": 1.7666667, + "value": -21.285084, + "curve": [ 1.8096534, -13.496773, 1.9019934, -4.200763 ] + }, + { + "time": 1.9666667, + "value": 2.3645935, + "curve": [ 2.000266, 5.775471, 2.021762, 7.842472 ] + }, + { + "time": 2.0666666, + "value": 8.120514, + "curve": [ 2.099697, 8.325035, 2.1, 0 ] + }, + { "time": 2.1333334 } + ] + }, + "bone3": { + "rotate": [ + { + "curve": [ 0.02458333, 0, 0.06367083, -0.3698256 ] + }, + { + "time": 0.1, + "value": -2.209563, + "curve": [ 0.12549584, -3.488025, 0.15481257, -5.638332 ] + }, + { + "time": 0.16666667, + "value": -6.06016, + "curve": [ 0.2075937, -7.516557, 0.24166666, -7.080471 ] + }, + { + "time": 0.2666667, + "value": -7.080471, + "curve": [ 0.375, -7.080471, 0.5583333, 14.689136 ] + }, + { + "time": 0.6666667, + "value": 14.689136, + "curve": [ 0.6916666, 14.689136, 0.775, -1.4022026 ] + }, + { + "time": 0.8, + "value": -1.4022026, + "curve": [ 0.8166666, -1.4022026, 0.8833333, 3.904814 ] + }, + { + "time": 0.9, + "value": 3.904814, + "curve": [ 0.9385, 3.904814, 0.979976, 3.0251446 ] + }, + { + "time": 1.0333333, + "value": 2.978839, + "curve": [ 1.0761218, 2.941707, 1.1487386, 3.424451 ] + }, + { + "time": 1.1666666, + "value": 3.920725, + "curve": [ 1.184573, 4.416397, 1.222312, 5.939024 ] + }, + { + "time": 1.2666667, + "value": 5.897762, + "curve": [ 1.2988155, 5.867857, 1.3047442, 0.4276934 ] + }, + { + "time": 1.3666667, + "value": 0.3767977, + "curve": [ 1.431534, 0.3234816, 1.4373486, 2.115408 ] + }, + { + "time": 1.4666667, + "value": 2.115408, + "curve": [ 1.49125, 2.115408, 1.514032, -6.822418 ] + }, + { + "time": 1.5666667, + "value": -9.65152, + "curve": [ 1.5823334, -10.493605, 1.61625, -10.476328 ] + }, + { + "time": 1.6333333, + "value": -10.476328, + "curve": [ 1.65, -10.476328, 1.725485, -3.324537 ] + }, + { + "time": 1.7666667, + "value": -1.8023148, + "curve": [ 1.7855794, -1.1032314, 1.9318455, 0.9890423 ] + }, + { + "time": 1.9666667, + "value": 1.8085203, + "curve": [ 1.988769, 2.328684, 2.0063674, 6.831628 ] + }, + { + "time": 2.033333, + "value": 6.850325, + "curve": [ 2.064674, 6.872057, 2.108889, 0 ] + }, + { "time": 2.1333334 } + ] + }, + "bone4": { + "rotate": [ + { + "curve": [ 0.02458333, 0, 0.06367083, 0.799874 ] + }, + { + "time": 0.1, + "value": -1.0398636, + "curve": [ 0.12549584, -2.3183255, 0.15997256, -5.177444 ] + }, + { + "time": 0.16666667, + "value": -5.776626, + "curve": [ 0.20690475, -9.37831, 0.24166666, -15.669712 ] + }, + { + "time": 0.2666667, + "value": -15.669712, + "curve": [ 0.375, -15.669712, 0.5583333, 14.689136 ] + }, + { + "time": 0.6666667, + "value": 14.689136, + "curve": [ 0.6916666, 14.689136, 0.775, -1.4022026 ] + }, + { + "time": 0.8, + "value": -1.4022026, + "curve": [ 0.8166666, -1.4022026, 0.8833333, 3.904816 ] + }, + { + "time": 0.9, + "value": 3.904816, + "curve": [ 0.9385, 3.904816, 0.983928, 2.936039 ] + }, + { + "time": 1.0333333, + "value": 2.9974594, + "curve": [ 1.0852644, 3.062032, 1.1328543, 3.41 ] + }, + { + "time": 1.1666666, + "value": 4.59806, + "curve": [ 1.2126584, 6.214069, 1.234341, 8.819682 ] + }, + { + "time": 1.2666667, + "value": 8.270695, + "curve": [ 1.3015395, 7.69561, 1.3130733, 0.6607437 ] + }, + { + "time": 1.3666667, + "value": 0.4349785, + "curve": [ 1.4127164, 0.2409847, 1.4373486, 2.995815 ] + }, + { + "time": 1.4666667, + "value": 2.995815, + "curve": [ 1.49125, 2.995815, 1.5152097, -15.253412 ] + }, + { + "time": 1.5666667, + "value": -15.034365, + "curve": [ 1.6010917, -14.887817, 1.6259278, -12.840826 ] + }, + { + "time": 1.6333333, + "value": -12.253935, + "curve": [ 1.674381, -9.000805, 1.75, -1.8023148 ] + }, + { + "time": 1.7666667, + "value": -1.8023148, + "curve": [ 1.7843333, -1.8023148, 1.8040764, -12.167263 ] + }, + { + "time": 1.8333334, + "value": -12.063026, + "curve": [ 1.8719482, -11.925445, 1.9351805, -3.195236 ] + }, + { + "time": 1.9666667, + "value": 1.8085213, + "curve": [ 1.98603, 4.885757, 2.0082295, 10.054174 ] + }, + { + "time": 2.033333, + "value": 9.691643, + "curve": [ 2.070104, 9.177082, 2.0875554, 0 ] + }, + { "time": 2.1333334 } + ] + }, + "bone5": { + "rotate": [ + { + "curve": [ 0.02458333, 0, 0.06207251, 28.418266 ] + }, + { + "time": 0.1, + "value": 28.60272, + "curve": [ 0.14663687, 28.829536, 0.15251377, 11.2621 ] + }, + { + "time": 0.16666667, + "value": 7.144214, + "curve": [ 0.1838935, 2.131954, 0.24166666, -3.087139 ] + }, + { + "time": 0.2666667, + "value": -3.087139, + "curve": [ 0.375, -3.087139, 0.5583333, 14.68912 ] + }, + { + "time": 0.6666667, + "value": 14.68912, + "curve": [ 0.6916666, 14.68912, 0.775, -1.4022217 ] + }, + { + "time": 0.8, + "value": -1.4022217, + "curve": [ 0.8166666, -1.4022217, 0.8833333, 3.9047966 ] + }, + { + "time": 0.9, + "value": 3.9047966, + "curve": [ 0.9385, 3.9047966, 0.9846858, -10.792965 ] + }, + { + "time": 1.0333333, + "value": -11.127247, + "curve": [ 1.0761218, -11.411227, 1.1306425, 1.613019 ] + }, + { + "time": 1.1666666, + "value": 9.659683, + "curve": [ 1.175693, 11.67591, 1.222691, 16.673485 ] + }, + { + "time": 1.2666667, + "value": 17.418526, + "curve": [ 1.2914054, 17.837646, 1.3251665, 1.329235 ] + }, + { + "time": 1.3666667, + "value": 1.7670593, + "curve": [ 1.400026, 2.119003, 1.4373486, 13.503124 ] + }, + { + "time": 1.4666667, + "value": 13.503124, + "curve": [ 1.49125, 13.503124, 1.5303375, 12.523243 ] + }, + { + "time": 1.5666667, + "value": 6.340107, + "curve": [ 1.5921625, 2.043352, 1.624835, -8.501282 ] + }, + { + "time": 1.6333333, + "value": -9.290935, + "curve": [ 1.6682856, -12.53864, 1.751865, -12.66574 ] + }, + { + "time": 1.7666667, + "value": -13.331665, + "curve": [ 1.7955415, -14.630745, 1.7983146, -16.975534 ] + }, + { + "time": 1.8333334, + "value": -16.879663, + "curve": [ 1.885077, -16.738, 1.9303664, -6.628074 ] + }, + { + "time": 1.9666667, + "value": 1.8085136, + "curve": [ 1.9894737, 7.109188, 2.0082295, 15.57751 ] + }, + { + "time": 2.033333, + "value": 15.21498, + "curve": [ 2.070104, 14.700422, 2.108889, 0 ] + }, + { "time": 2.1333334 } + ] + }, + "front-arm": { + "rotate": [ + { + "value": -14.345, + "curve": [ 0.13333334, -14.345, 0.4, -19.57547 ] + }, + { "time": 0.5333333, "value": -19.57547 } + ], + "translate": [ + { + "curve": [ 0.03333333, 0, 0.1, -7.24591, 0.03333333, 0, 0.1, -6.081075 ] + }, + { + "time": 0.13333334, + "x": -7.24591, + "y": -6.081075, + "curve": [ 0.16666667, -7.24591, 0.23333333, -9.897156, 0.16666667, -6.081075, 0.23333333, -6.360914 ] + }, + { + "time": 0.2666667, + "x": -9.897156, + "y": -6.360914, + "curve": [ 0.2916667, -9.897156, 0.3416667, -18.75165, 0.2916667, -6.360914, 0.3416667, -3.9430676 ] + }, + { + "time": 0.3666667, + "x": -18.75165, + "y": -3.9430676, + "curve": [ 0.4416667, -18.75165, 0.5916666, -6.673187, 0.4416667, -3.9430676, 0.6212339, -5.198413 ] + }, + { + "time": 0.6666667, + "x": -6.673187, + "y": -5.492431, + "curve": [ 0.7664252, -6.673187, 0.8858117, -6.50348, 0.9063248, -7.043378, 0.861998, -6.665221 ] + }, + { + "time": 1, + "x": -6.31556, + "y": -7.7124, + "curve": [ 1.1417637, -6.088949, 1.2768054, -5.836838, 1.1533222, -8.87583, 1.2768054, -10.039246 ] + }, + { + "time": 1.3666667, + "x": -5.836838, + "y": -10.039246, + "curve": [ 1.4148782, -5.836838, 1.45202, -5.89273, 1.4148782, -10.039246, 1.4344852, -9.814247 ] + }, + { + "time": 1.4666667, + "x": -5.93441, + "y": -9.67143, + "curve": [ 1.5670122, -6.21994, 1.619883, -6.673187, 1.5104268, -9.47723, 1.71028, -9.280952 ] + }, + { + "time": 1.8, + "x": -6.673187, + "y": -9.264343, + "curve": [ 1.8833333, -6.673187, 2.05, 0, 1.883289, -9.248924, 2.05, 0 ] + }, + { "time": 2.1333334 } + ], + "scale": [ + { + "curve": [ 0.03625, 1, 0.0830125, 1.0244832, 0.03625, 1, 0.0830125, 1.000879 ] + }, + { + "time": 0.13333334, + "x": 1.0244832, + "y": 1.000879, + "curve": [ 0.2594875, 1.0244832, 0.41125, 1, 0.2594875, 1.000879, 0.41125, 1 ] + }, + { + "time": 0.5, + "curve": [ 0.575, 1, 0.5916666, 1.1919783, 0.575, 1, 0.5916666, 1 ] + }, + { + "time": 0.6666667, + "x": 1.1919783, + "curve": [ 0.75, 1.1919783, 0.8583333, 1.080582, 0.75, 1, 0.8583333, 1 ] + }, + { + "time": 0.9333333, + "x": 1.080582, + "curve": [ 1.0166667, 1.080582, 0.9166667, 1.084515, 1.0166667, 1, 0.9166667, 1 ] + }, + { + "time": 1, + "x": 1.084515, + "curve": [ 1.1, 1.084515, 1.2666667, 1.0870733, 1.1, 1, 1.2666667, 1 ] + }, + { + "time": 1.3666667, + "x": 1.0870733, + "curve": [ 1.3753333, 1.0870733, 1.4178, 1.125187, 1.3753333, 1, 1.4178, 1 ] + }, + { + "time": 1.4666667, + "x": 1.1622182, + "curve": [ 1.5016063, 1.188197, 1.675971, 1.3540875, 1.5016063, 1, 1.675971, 1 ] + }, + { + "time": 1.8, + "x": 1.301132, + "curve": [ 1.841208, 1.2844094, 2.109333, 1, 1.841208, 1, 2.109333, 1 ] + }, + { "time": 2.1333334 } + ] + }, + "front-arm1": { + "rotate": [ + { + "curve": [ 0.025, 0, 0.0512551, -14.243118 ] + }, + { + "time": 0.1, + "value": -14.366943, + "curve": [ 0.20631526, -14.63701, 0.2704254, 25.5199 ] + }, + { + "time": 0.3333333, + "value": 25.6, + "curve": [ 0.4656447, 25.76843, 0.5275122, -35.51789 ] + }, + { + "time": 0.7, + "value": -35.62542, + "curve": [ 0.7416612, -35.65138, 0.8077097, -30.2666 ] + }, + { + "time": 0.8333333, + "value": -28.76002, + "curve": [ 0.9560382, -21.54542, 1.3416667, -18.16 ] + }, + { + "time": 1.5, + "value": -18.16, + "curve": [ 1.6083333, -18.16, 1.825, 13.784122 ] + }, + { + "time": 1.9333333, + "value": 13.784122, + "curve": [ 1.9833333, 13.784122, 2.083333, 0 ] + }, + { "time": 2.1333334 } + ] + }, + "front-arm2": { + "rotate": [ + { + "curve": [ 0.15696667, 0, 0.1658321, 22.955605 ] + }, + { + "time": 0.23333333, + "value": 23.11, + "curve": [ 0.5199301, 23.765465, 0.522997, 3.2425356 ] + }, + { + "time": 0.5333333, + "value": -3.344322, + "curve": [ 0.5611264, -21.05543, 0.6038524, -49.18643 ] + }, + { + "time": 0.8, + "value": -59.15373, + "curve": [ 0.8963688, -64.05074, 1.195063, -69.8212 ] + }, + { + "time": 1.3333334, + "value": -69.51422, + "curve": [ 1.4072777, -69.35005, 1.460179, -64.9392 ] + }, + { + "time": 1.5, + "value": -47.97177, + "curve": [ 1.5251298, -37.26408, 1.5995404, 20.753876 ] + }, + { + "time": 1.6666666, + "value": 20.781326, + "curve": [ 1.801348, 20.836433, 1.8683333, -8.987038 ] + }, + { + "time": 1.9333333, + "value": -8.987038, + "curve": [ 1.9833333, -8.987038, 2.083333, 0 ] + }, + { "time": 2.1333334 } + ] + }, + "front-bracer": { + "rotate": [ + { "value": 72.20586 } + ] + }, + "front-foot-target": { + "rotate": [ + { + "curve": [ 0.07355911, -0.0981903, 0.09274935, -16.925985 ] + }, + { + "time": 0.1, + "value": -19.189384, + "curve": [ 0.11665252, -24.38771, 0.15654454, -24.352905 ] + }, + { + "time": 0.2, + "value": -24.35557, + "curve": [ 0.2516303, -24.35874, 0.3107313, -22.81149 ] + }, + { + "time": 0.4333333, + "value": -22.804256, + "curve": [ 0.6276967, -22.79278, 0.7755006, -25.557526 ] + }, + { + "time": 1.2333333, + "value": -25.57432, + "curve": [ 1.378479, -25.57964, 1.5249195, 2.2360716 ] + }, + { + "time": 1.7333333, + "value": 2.2360716, + "curve": [ 1.7969532, 2.479194, 1.7320484, -17.38588 ] + }, + { + "time": 1.8, + "value": -17.1802, + "curve": [ 1.923214, -16.80726, 2.073043, 0.16876037 ] + }, + { "time": 2.1333334 } + ], + "translate": [ + { + "y": 1.274002, + "curve": [ 0.026612576, -0.4055481, 0.05293025, -46.33741, 0.02273081, 3.933668, 0.05, 71.16673 ] + }, + { + "time": 0.06666667, + "x": -73.27261, + "y": 71.16673, + "curve": [ 0.0881272, -115.35374, 0.16946027, -316.4563, 0.10296036, 71.87606, 0.17048255, 60.50129 ] + }, + { + "time": 0.2, + "x": -392.1, + "y": 9.43, + "curve": [ 0.23105556, -419.0889, 0.23146926, -422.039, 0.23105556, 9.43, 0.23146926, 9.43 ] + }, + { "time": 0.2666667, "x": -422.039, "y": 9.43, "curve": "stepped" }, + { + "time": 0.6, + "x": -422.039, + "y": 9.43, + "curve": [ 0.6434515, -422.039, 0.6884264, -403.614, 0.6434515, 9.43, 0.6884264, 9.43 ] + }, + { "time": 0.7333333, "x": -403.614, "y": 9.43, "curve": "stepped" }, + { + "time": 1.7333333, + "x": -403.614, + "y": 9.43, + "curve": [ 1.76868, -403.614, 1.7925358, -341.6369, 1.7677482, 9.43, 1.7833333, 111.01566 ] + }, + { + "time": 1.8, + "x": -308.0508, + "y": 111.01566, + "curve": [ 1.8132397, -248.4774, 1.9, 0, 1.858401, 109.78715, 1.9275697, 38.94682 ] + }, + { + "time": 1.9333333, + "curve": [ 1.9833333, 0, 2.083333, 0.7619475, 1.9833333, 0, 2.122445, 0 ] + }, + { "time": 2.1333334, "y": 1.274002 } + ] + }, + "front-foot1": { + "rotate": [ + { "value": 0.4036903 } + ] + }, + "front-foot2": { + "rotate": [ + {}, + { "time": 0.03333333, "value": -17.85156 }, + { "time": 0.06666667, "value": -27.506697 }, + { "time": 0.1, "value": -21.45238 }, + { "time": 0.13333334, "value": -12.421795 }, + { "time": 0.16666667, "value": -1.3631203 }, + { "time": 0.2, "value": -17.495495 }, + { "time": 0.6, "value": -17.42738 }, + { "time": 0.7, "value": -21.1251, "curve": "stepped" }, + { "time": 1.7333333, "value": -21.1251 }, + { "time": 1.8, "value": -41.83182 }, + { "time": 1.8666667, "value": -1.1012764 }, + { "time": 1.9333333 } + ] + }, + "front-foot3": { + "rotate": [ + {}, + { "time": 0.03333333, "value": 1.1986356 }, + { "time": 0.1, "value": 8.931982 }, + { + "time": 0.2, + "value": 26.93238, + "curve": [ 0.21666667, 26.93238, 0.22403476, 25.259447 ] + }, + { "time": 0.23333333, "value": 16.322075, "curve": "stepped" }, + { "time": 1.7333333, "value": 16.322075 }, + { "time": 1.7666667, "value": 24.81177 }, + { "time": 1.8, "value": -12.37024 }, + { "time": 1.8333334, "value": -17.658154 }, + { "time": 1.9, "value": 9.39439 }, + { "time": 1.9333333, "value": 16.110096 }, + { "time": 2 } + ], + "translate": [ + { "x": -29.67375, "curve": "stepped" }, + { "time": 1.7333333, "x": -29.67375 }, + { "time": 1.8, "x": -34.02994, "y": 8.948364 }, + { "time": 2.1333334, "x": -29.67375 } + ] + }, + "front-hand": { + "rotate": [ + { + "curve": [ 0.05, 0, 0.15, 15.17069 ] + }, + { + "time": 0.2, + "value": 15.17069, + "curve": [ 0.4085695, 14.82854, 0.4031272, -26.61592 ] + }, + { + "time": 0.5333333, + "value": -25.79849, + "curve": [ 0.6195894, -25.25698, 0.647842, 1.8753433 ] + }, + { + "time": 0.8, + "value": 1.8753433, + "curve": [ 0.9833336, 1.8753433, 1.4794304, -23.10372 ] + }, + { + "time": 1.5333333, + "value": -30.970856, + "curve": [ 1.5743577, -36.95833, 1.5905713, -46.2554 ] + }, + { + "time": 1.6333333, + "value": -46.05707, + "curve": [ 1.749813, -45.51681, 1.7617457, 18.691124 ] + }, + { + "time": 1.9333333, + "value": 19.030113, + "curve": [ 1.9833093, 19.12884, 2.083333, 0 ] + }, + { "time": 2.1333334 } + ] + }, + "front-hand2": { + "rotate": [ + {}, + { "time": 0.2, "value": -21.92526 }, + { "time": 0.3, "value": -23.28947 }, + { "time": 0.4333333, "value": -29.79552 }, + { "time": 0.5333333, "value": -36.61677 }, + { "time": 0.6333333, "value": -40.48547 }, + { "time": 0.7, "value": -38.28393 }, + { "time": 0.7666666, "value": -33.33423 }, + { "time": 0.8333333, "value": -28.06089 }, + { "time": 1.4333333, "value": -27.16889 }, + { "time": 1.5333333, "value": -27.62132 }, + { "time": 1.7 } + ] + }, + "front-leg-target": { + "rotate": [ + { "value": -0.3053894 } + ], + "translate": [ + { + "curve": [ 0.138232, 0.68396, 0.14357193, 63.75062, 0.09233884, 0, 0.14976613, 21.48319 ] + }, + { + "time": 0.2, + "x": 63.06023, + "y": 22.03322, + "curve": [ 0.3150574, 61.65251, 0.29178715, -25.028305, 0.3146747, 23.28882, 0.3558478, -56.93918 ] + }, + { + "time": 0.5, + "x": -29.09036, + "y": -56.75119, + "curve": [ 0.6006604, -31.05417, 0.5826666, 104.34286, 0.5886485, -56.63558, 0.5826665, 47.2789 ] + }, + { "time": 0.7, "x": 104.34286, "y": 47.2789 }, + { + "time": 1.3666667, + "x": 106.19848, + "y": 47.69879, + "curve": [ 1.5378544, 105.91507, 1.6326667, 88.97844, 1.552329, 49.59851, 1.6326667, 40.87745 ] + }, + { + "time": 1.7333333, + "x": 49.49866, + "y": 28.707657, + "curve": [ 1.8416667, 7.012142, 2.025, -0.5360243, 1.8416667, 15.611024, 2.025, 0 ] + }, + { "time": 2.1333334 } + ] + }, + "front-leg1": { + "rotate": [ + { "value": -10.52735 } + ] + }, + "front-leg2": { + "rotate": [ + { "value": -9.63385 } + ] + }, + "front-leg3": { + "rotate": [ + { "value": 3.656471 } + ] + }, + "front-thigh": { + "rotate": [ + { "value": 8.814423 } + ] + }, + "gun": { + "rotate": [ + { + "curve": [ 0.025, 0, 0.07500896, -16.45265 ] + }, + { + "time": 0.1, + "value": -16.38296, + "curve": [ 0.18568917, -16.14402, 0.2678633, -2.859978 ] + }, + { + "time": 0.3, + "value": -2.82988, + "curve": [ 0.3418034, -2.790734, 0.4272678, -27.5106 ] + }, + { + "time": 0.4333333, + "value": -29.46187, + "curve": [ 0.5076235, -53.3608, 0.6128694, -60.85408 ] + }, + { + "time": 0.6333333, + "value": -60.91527, + "curve": [ 0.7110726, -61.1477, 0.7339298, -27.933296 ] + }, + { + "time": 0.7666666, + "value": -23.26899, + "curve": [ 0.7850312, -20.652443, 0.8521218, -13.389814 ] + }, + { + "time": 0.9, + "value": -13.363335, + "curve": [ 0.9515734, -13.334816, 1.002456, -20.78779 ] + }, + { + "time": 1.0333333, + "value": -20.87345, + "curve": [ 1.205604, -21.35131, 1.4319195, -17.10016 ] + }, + { + "time": 1.5, + "value": -14.015717, + "curve": [ 1.549316, -11.781418, 1.65, 15.39586 ] + }, + { + "time": 1.7, + "value": 15.39586, + "curve": [ 1.7333333, 15.39586, 1.799892, 9.69941 ] + }, + { + "time": 1.8333334, + "value": 2.780701, + "curve": [ 1.875484, -5.939865, 1.9084, -25.40219 ] + }, + { + "time": 1.9333333, + "value": -25.22766, + "curve": [ 2.014783, -24.657516, 2.108333, 0 ] + }, + { "time": 2.1333334 } + ], + "translate": [ + { + "time": 0.2, + "curve": [ 0.3083333, 0, 0.525, -18.37, 0.3083333, 0, 0.525, -9.19 ] + }, + { + "time": 0.6333333, + "x": -18.37, + "y": -9.19, + "curve": [ 0.9, -18.37, 1.4333333, 0, 0.9, -9.19, 1.4333333, 0 ] + }, + { "time": 1.7 } + ] + }, + "head": { + "rotate": [ + { + "curve": [ 0.0010997017, -4.960442, 0.0500091, -6.662464 ] + }, + { + "time": 0.06666667, + "value": -6.57449, + "curve": [ 0.2112182, -5.811066, 0.17555113, 34.04393 ] + }, + { + "time": 0.2666667, + "value": 33.6522, + "curve": [ 0.3351732, 33.69676, 0.4541272, 12.93243 ] + }, + { + "time": 0.5, + "value": 3.3714075, + "curve": [ 0.5386284, -4.679718, 0.5467235, -11.662772 ] + }, + { + "time": 0.6, + "value": -12.107006, + "curve": [ 0.6452672, -11.689426, 0.6017645, 31.75396 ] + }, + { + "time": 0.8, + "value": 31.509706, + "curve": [ 0.85, 31.509706, 0.9166667, 25.301516 ] + }, + { + "time": 0.9666666, + "value": 25.301516, + "curve": [ 1.075, 25.301516, 1.3916667, 27.902 ] + }, + { + "time": 1.5, + "value": 27.902, + "curve": [ 1.55, 27.902, 1.7174023, -5.135035 ] + }, + { + "time": 1.8, + "value": -4.513868, + "curve": [ 1.8605014, -4.191151, 1.9493464, 4.070065 ] + }, + { + "time": 2.033333, + "value": 4.178705, + "curve": [ 2.086846, 4.247925, 2.095634, 2.9854374 ] + }, + { "time": 2.1333334 } + ], + "translate": [ + { + "curve": [ 0.05, 0, 0.15, 22.57737, 0.05, 0, 0.15392877, -41.07136 ] + }, + { + "time": 0.2, + "x": 22.74858, + "y": -41.48271, + "curve": [ 0.2998227, 23.090397, 0.3362562, -13.20263, 0.3285272, -42.63028, 0.3564223, 19.914993 ] + }, + { + "time": 0.5666666, + "x": -12.04435, + "y": 21.06781, + "curve": [ 0.6434108, -12.235908, 0.6805745, 19.674637, 0.6247347, 21.26449, 0.6148299, -90.9574 ] + }, + { + "time": 0.7, + "x": 20.10009, + "y": -90.35684, + "curve": [ 0.7184584, 20.504364, 0.75, 16.57, 0.7378014, -90.3283, 0.75, -87.92 ] + }, + { + "time": 0.7666666, + "x": 16.57, + "y": -87.92, + "curve": [ 0.7833333, 16.57, 0.8166666, 18.74, 0.7833333, -87.92, 0.8166666, -87.42 ] + }, + { + "time": 0.8333333, + "x": 18.74, + "y": -87.42, + "curve": [ 0.85, 18.74, 0.8833333, 16.57, 0.85, -87.42, 0.8833333, -87.92 ] + }, + { + "time": 0.9, + "x": 16.57, + "y": -87.92, + "curve": [ 0.9166667, 16.57, 0.95, 18.74, 0.9166667, -87.92, 0.95, -87.42 ] + }, + { + "time": 0.9666666, + "x": 18.74, + "y": -87.42, + "curve": [ 1.075, 18.74, 1.3916667, 27.31, 1.075, -87.42, 1.3916667, -84.9 ] + }, + { + "time": 1.5, + "x": 27.31, + "y": -84.9, + "curve": [ 1.5538093, 27.31, 1.6053282, -22.60115, 1.5116667, -84.9, 1.5748608, -102.52624 ] + }, + { + "time": 1.7, + "x": -22.584145, + "y": -89.05743, + "curve": [ 1.811934, -23.81355, 1.8631604, 9.942184, 1.8407756, -71.21703, 1.8469467, 11.93096 ] + }, + { + "time": 1.9666667, + "x": 10.7716, + "y": 13.345384, + "curve": [ 2.0279496, 11.26267, 2.065163, -0.884285, 2.0324254, 14.122277, 2.081728, 7.516476 ] + }, + { "time": 2.1333334 } + ], + "shear": [ + { + "time": 0.6333333, + "curve": [ 0.6538733, 0, 0.6699415, -0.1315315, 0.6538733, 0, 0.6763605, 0 ] + }, + { + "time": 0.7, + "x": -0.5634992, + "curve": [ 0.7208961, -0.8637965, 0.7437984, -1.238066, 0.7214439, 0, 0.7437984, 0 ] + }, + { + "time": 0.7666666, + "x": -1.238066, + "curve": [ 0.7882563, -1.238066, 0.8190062, -0.6942048, 0.7882563, 0, 0.8106323, 0 ] + }, + { + "time": 0.8333333, + "x": -0.47106585, + "curve": [ 0.8797512, 0.2518771, 0.901422, 0.4267737, 0.866228, 0, 0.8998957, 0 ] + }, + { + "time": 0.9333333, + "x": 0.43144405, + "curve": [ 0.9748649, 0.43752205, 1.016512, -0.4748798, 0.9995353, 0, 1.0678046, 0 ] + }, + { + "time": 1.1333333, + "x": -0.45549124, + "curve": [ 1.2015603, -0.4441677, 1.281746, -0.008604318, 1.2164236, 0, 1.461882, 0 ] + }, + { "time": 1.5 } + ] + }, + "head-control": { + "translate": [ + { + "curve": [ 0.05381425, 0, 0.19929634, -1.2534752, 0.07238806, 1.294098, 0.19166666, -16.8103 ] + }, + { + "time": 0.23333333, + "x": -7.114204, + "y": -16.8103, + "curve": [ 0.32728025, -23.29067, 0.378777, -49.72622, 0.3166667, -16.8103, 0.4519548, 14.651718 ] + }, + { + "time": 0.5666666, + "x": -48.0404, + "y": 14.366135, + "curve": [ 0.6529695, -47.79916, 0.8261445, -35.85242, 0.674158, 14.09854, 0.729015, -25.529755 ] + }, + { + "time": 0.8333333, + "x": -35.78864, + "y": -25.529755, + "curve": [ 0.8671444, -35.48867, 0.9083333, -35.47534, 0.8583333, -25.52974, 0.9083333, -15.454315 ] + }, + { + "time": 0.9333333, + "x": -35.47534, + "y": -15.454315, + "curve": [ 0.9666666, -35.47534, 1.0392787, -37.96733, 0.9666666, -15.454315, 1.0333333, -22.03647 ] + }, + { + "time": 1.0666667, + "x": -39.20141, + "y": -22.03647, + "curve": [ 1.1352447, -42.2915, 1.1631423, -43.43309, 1.1, -22.03647, 1.1666666, -6.450027 ] + }, + { + "time": 1.2, + "x": -44.11977, + "y": -6.450027, + "curve": [ 1.2400514, -44.86596, 1.325, -45.14981, 1.2416667, -6.450027, 1.2869395, -13.604294 ] + }, + { + "time": 1.3666667, + "x": -45.14981, + "y": -13.607193, + "curve": [ 1.4166666, -45.14981, 1.5166667, -47.60654, 1.4475684, -13.610153, 1.508648, -1.8112488 ] + }, + { + "time": 1.5666667, + "x": -47.60654, + "y": -1.6129303, + "curve": [ 1.6166667, -47.60654, 1.6711063, -48.29971, 1.6531674, -1.3172913, 1.7557036, -23.41063 ] + }, + { + "time": 1.7666667, + "x": -37.45297, + "y": -28.41252, + "curve": [ 1.791247, -34.66292, 1.8135493, -20.74891, 1.79612, -41.85084, 1.804494, -47.93242 ] + }, + { + "time": 1.8333334, + "x": -18.6834, + "y": -47.78464, + "curve": [ 1.9201864, -9.877803, 1.960976, -5.227234, 1.906489, -47.40983, 1.9518456, -34.08664 ] + }, + { + "time": 2, + "x": -3.409178, + "y": -22.62454, + "curve": [ 2.045041, -1.3107967, 2.1, 0, 2.0131874, -19.485565, 2.1, 0 ] + }, + { "time": 2.1333334 } + ] + }, + "head2": { + "rotate": [ + { + "value": 12.976063, + "curve": [ 0.031235095, 13.085802, 0.05086188, 13.29559 ] + }, + { + "time": 0.06666667, + "value": 14.17861, + "curve": [ 0.09282301, 15.639965, 0.2704128, 32.4886 ] + }, + { + "time": 0.3, + "value": 33.17519, + "curve": [ 0.3371436, 34.03713, 0.3791717, 21.477406 ] + }, + { + "time": 0.4333333, + "value": 21.70699, + "curve": [ 0.4946937, 21.967087, 0.5858333, 55.79772 ] + }, + { + "time": 0.6333333, + "value": 55.79773, + "curve": [ 0.7130882, 55.79773, 0.8080742, 48.07243 ] + }, + { + "time": 0.9, + "value": 48.25334, + "curve": [ 0.9504415, 48.35261, 0.991227, 53.74363 ] + }, + { + "time": 1.0333333, + "value": 53.36756, + "curve": [ 1.057965, 53.15471, 1.0727323, 47.28508 ] + }, + { + "time": 1.1, + "value": 47.46718, + "curve": [ 1.1885874, 48.05876, 1.1861522, 51.2878 ] + }, + { + "time": 1.2333333, + "value": 51.02413, + "curve": [ 1.2651105, 50.84653, 1.3122728, 48.13272 ] + }, + { + "time": 1.3333334, + "value": 45.79242, + "curve": [ 1.3590974, 42.92945, 1.4431423, 33.1921 ] + }, + { + "time": 1.5, + "value": 32.96265, + "curve": [ 1.5551876, 32.73994, 1.5837576, 45.97839 ] + }, + { + "time": 1.6333333, + "value": 45.92313, + "curve": [ 1.7063206, 45.84178, 1.747126, 24.347095 ] + }, + { + "time": 1.8, + "value": 15.57551, + "curve": [ 1.857511, 6.034656, 1.9041667, 0 ] + }, + { + "time": 1.9333333, + "curve": [ 1.9658333, 0, 2.0191505, 17.18161 ] + }, + { + "time": 2.0666666, + "value": 17.31042, + "curve": [ 2.096739, 17.39194, 2.115833, 12.976063 ] + }, + { "time": 2.1333334, "value": 12.976063 } + ], + "scale": [ + { + "time": 0.4666667, + "curve": [ 0.496832, 1, 0.5307627, 0.9842182, 0.496832, 1, 0.5307627, 1.0399467 ] + }, + { + "time": 0.5666666, + "x": 0.9842182, + "y": 1.0399467, + "curve": [ 0.6181372, 0.9842182, 0.6841501, 1.0432616, 0.6181372, 1.0399467, 0.667902, 0.9920755 ] + }, + { + "time": 0.7333333, + "x": 1.0443496, + "y": 0.9901244, + "curve": [ 0.7746143, 1.0452626, 0.843813, 1, 0.7665846, 0.989133, 0.843813, 1 ] + }, + { "time": 0.9, "curve": "stepped" }, + { + "time": 1.4333333, + "curve": [ 1.475, 1, 1.5628585, 1.0006132, 1.475, 1, 1.567962, 1.0034766 ] + }, + { + "time": 1.6, + "x": 1.0035667, + "y": 1.007643, + "curve": [ 1.6508622, 1.0076113, 1.675, 1.0164257, 1.6367555, 1.0124227, 1.675, 1.054742 ] + }, + { + "time": 1.7, + "x": 1.0164257, + "y": 1.054742, + "curve": [ 1.7583333, 1.0164257, 1.85384, 1.0083466, 1.7583333, 1.054742, 1.8810465, 1.0138874 ] + }, + { + "time": 1.9333333, + "x": 1.0035667, + "y": 1.007643, + "curve": [ 1.980003, 1.0007606, 2.083333, 1, 1.9929557, 1.0005224, 2.083333, 1 ] + }, + { "time": 2.1333334 } + ] + }, + "hip": { + "rotate": [ + { + "curve": [ 0.025, 0, 0.0606518, 2.90411 ] + }, + { + "time": 0.1, + "value": 2.9491296, + "curve": [ 0.14979944, 3.0061035, 0.19174284, -10.892542 ] + }, + { + "time": 0.2, + "value": -14.11895, + "curve": [ 0.223962, -23.48188, 0.2378408, -33.20198 ] + }, + { + "time": 0.3, + "value": -33.39501, + "curve": [ 0.4012419, -33.70941, 0.4928114, -9.733124 ] + }, + { + "time": 0.5666666, + "value": -6.440478, + "curve": [ 0.5894096, -5.426544, 0.6833333, -0.43481445 ] + }, + { + "time": 0.7, + "value": -0.43481445, + "curve": [ 0.7391666, -0.43481445, 0.7775263, -6.756678 ] + }, + { + "time": 0.8333333, + "value": -6.779285, + "curve": [ 0.9624623, -6.831599, 1.16428, -5.77681 ] + }, + { + "time": 1.4333333, + "value": -5.931113, + "curve": [ 1.5307704, -5.986992, 1.5345666, -17.41743 ] + }, + { + "time": 1.7, + "value": -17.429377, + "curve": [ 1.8075706, -17.49867, 1.815981, 3.250304 ] + }, + { + "time": 1.9333333, + "value": 3.282818, + "curve": [ 1.9875628, 3.297845, 2.083333, 0 ] + }, + { "time": 2.1333334 } + ], + "translate": [ + { + "y": 0.4851379, + "curve": [ 0.012365372, -0.4765312, 0.05503584, 34.36478, 0.03308169, 15.912347, 0.07216156, 19.981323 ] + }, + { + "time": 0.1, + "x": 34.56999, + "y": 19.96994, + "curve": [ 0.3002419, 33.3496, 0.260952, -337.4661, 0.2703434, 21.25104, 0.4353404, -81.31452 ] + }, + { + "time": 0.4666667, + "x": -339.73895, + "y": -103.87882, + "curve": [ 0.5246017, -333.52765, 0.5402984, -266.9045, 0.518491, -141.20795, 0.5479672, -146.44514 ] + }, + { + "time": 0.5666666, + "x": -207.10176, + "y": -146.23865, + "curve": [ 0.5774756, -182.58717, 0.6046393, 44.93373, 0.6128553, -146.6739, 0.6290074, -42.45691 ] + }, + { + "time": 0.7, + "x": 44.98, + "y": -16.55179, + "curve": [ 0.729026, 44.99409, 0.751916, 42.93177, 0.7219465, -8.543488, 0.75, -6.52 ] + }, + { + "time": 0.7666666, + "x": 41.57, + "y": -6.52, + "curve": [ 0.800373, 38.20195, 0.8166666, 35.92095, 0.7833333, -6.52, 0.8166666, -13.34 ] + }, + { + "time": 0.8333333, + "x": 35.92095, + "y": -13.34, + "curve": [ 0.85, 35.92095, 0.8614938, 39.13401, 0.85, -13.34, 0.8833333, -6.52 ] + }, + { + "time": 0.9, + "x": 41.57, + "y": -6.52, + "curve": [ 0.9453781, 44.44073, 1.2757927, 55.19168, 0.9916667, -6.52, 1.275, -29.35599 ] + }, + { + "time": 1.3666667, + "x": 48.94403, + "y": -29.35599, + "curve": [ 1.579074, 34.34088, 1.6224434, -126.54304, 1.5579567, -27.52278, 1.6589493, -0.01800537 ] + }, + { + "time": 1.7, + "x": -127.63624, + "y": 26.2081, + "curve": [ 1.7599056, -128.48067, 1.7958957, -115.83005, 1.7299405, 45.33625, 1.7876776, 70.46658 ] + }, + { + "time": 1.8666667, + "x": -78.9473, + "y": 70.64606, + "curve": [ 1.923766, -49.18949, 2.035676, -1.0323358, 1.949979, 70.79224, 2.0666666, -30.6041 ] + }, + { "time": 2.1333334, "y": 0.4851379 } + ] + }, + "horn-back": { + "rotate": [ + { "time": 0.2 }, + { "time": 1.0333333, "value": 7.62 }, + { "time": 1.9333333 } + ], + "translate": [ + { + "time": 1.6666666, + "curve": [ 1.7083334, 0, 1.7916666, 19.82782, 1.7083334, 0, 1.7916666, 22.58957 ] + }, + { + "time": 1.8333334, + "x": 19.82782, + "y": 22.58957, + "curve": [ 1.9083333, 19.82782, 2.0583334, 0, 1.9083333, 22.58957, 2.0583334, 0 ] + }, + { "time": 2.1333334 } + ] + }, + "horn-front": { + "rotate": [ + { + "curve": [ 0.017666666, 0, 0.05208957, 0.7273674 ] + }, + { + "time": 0.06666667, + "value": 1.728073, + "curve": [ 0.0840349, 2.920396, 0.10037883, 4.719918 ] + }, + { + "time": 0.13333334, + "value": 4.954506, + "curve": [ 0.1615007, 5.15501, 0.18745004, 4.302111 ] + }, + { + "time": 0.2, + "value": 3.8866844, + "curve": [ 0.2887338, 0.9494352, 0.477449, -6.846139 ] + }, + { + "time": 0.6666667, + "value": -6.057113, + "curve": [ 0.809164, -5.48575, 0.9527374, -3.355655 ] + }, + { + "time": 1.0333333, + "value": -2.655078, + "curve": [ 1.2551023, -0.7273483, 1.7083334, 0 ] + }, + { "time": 1.9333333 } + ], + "translate": [ + { "time": 1.4666667 }, + { "time": 1.9, "x": 5.795044, "y": -14.310974 }, + { "time": 2.033333, "x": 7.955078, "y": -4.521454 }, + { "time": 2.1333334 } + ] + }, + "jaw": { + "rotate": [ + { + "value": -1.1952972, + "curve": [ 0.05, -1.1952972, 0.1576554, 0.5393066 ] + }, + { + "time": 0.2, + "value": 1.8345795, + "curve": [ 0.2728815, 4.063926, 0.4167385, 15.62777 ] + }, + { + "time": 0.4666667, + "value": 14.470276, + "curve": [ 0.6517568, 10.179253, 0.5916666, -68.70428 ] + }, + { + "time": 0.6666667, + "value": -68.70428, + "curve": [ 0.7314608, -68.51715, 0.7671807, -42.63524 ] + }, + { + "time": 0.8, + "value": -42.44815, + "curve": [ 0.8083333, -42.44813, 0.8013388, -43.40864 ] + }, + { + "time": 0.8333333, + "value": -43.55141, + "curve": [ 0.8575366, -43.55141, 0.9055594, -39.81436 ] + }, + { + "time": 0.9333333, + "value": -39.72978, + "curve": [ 0.9558046, -39.64542, 1.01315, -42.10263 ] + }, + { + "time": 1.0333333, + "value": -42.02005, + "curve": [ 1.0599163, -41.91127, 1.0829667, -35.37761 ] + }, + { + "time": 1.1333333, + "value": -35.34122, + "curve": [ 1.1687295, -35.31565, 1.2195566, -36.84138 ] + }, + { + "time": 1.2666667, + "value": -36.73747, + "curve": [ 1.3718338, -36.30948, 1.54249, 1.500862 ] + }, + { + "time": 1.6, + "value": -3.576889, + "curve": [ 1.6199552, -3.978419, 1.647059, -9.02411 ] + }, + { + "time": 1.7, + "value": -8.792313, + "curve": [ 1.74826, -8.742847, 1.8230644, 3.6993394 ] + }, + { + "time": 1.9333333, + "value": 4.732712, + "curve": [ 1.951, 5.044318, 1.974909, -1.136814 ] + }, + { + "time": 2, + "value": -1.3419037, + "curve": [ 2.047758, -1.7172565, 2.1, -1.1952972 ] + }, + { "time": 2.1333334, "value": -1.1952972 } + ], + "translate": [ + { + "x": -3.4399986, + "y": 2.510002, + "curve": [ 0.1109852, -3.7392235, 0.3912641, -39.93589, 0.15502886, 4.087734, 0.2966205, -2.9754715 ] + }, + { + "time": 0.4666667, + "x": -56.44524, + "y": -10.08204, + "curve": [ 0.5265437, -69.24242, 0.5605652, -75.25414, 0.5771723, -15.370048, 0.551274, -15.25428 ] + }, + { + "time": 0.6, + "x": -74.42703, + "y": -14.686295, + "curve": [ 0.6342845, -74.94536, 0.6244342, -60.95444, 0.6408756, -14.107864, 0.65, 23.06912 ] + }, + { + "time": 0.6666667, + "x": -53.44833, + "y": 23.06912, + "curve": [ 0.7585141, -37.12397, 1.391892, -28.49185, 0.8916666, 23.06912, 1.375, 19.61397 ] + }, + { + "time": 1.6, + "x": -21.33061, + "y": 16.78336, + "curve": [ 1.7615534, -15.771376, 1.825, -8.46948, 1.624636, 16.473427, 1.7802166, 6.334698 ] + }, + { + "time": 1.8666667, + "x": -8.46948, + "y": -3.7701416, + "curve": [ 1.9, -8.46948, 1.9666667, -15.379066, 1.9142407, -8.238594, 1.9666667, -10.853378 ] + }, + { + "time": 2, + "x": -15.379066, + "y": -10.853378, + "curve": [ 2.033333, -15.379066, 2.1, -3.4399986, 2.033333, -10.853378, 2.1, 2.510002 ] + }, + { "time": 2.1333334, "x": -3.4399986, "y": 2.510002 } + ], + "scale": [ + { + "time": 0.5666666, + "curve": [ 0.5943895, 1, 0.6208333, 0.9560776, 0.6005588, 1, 0.6208333, 1.0575278 ] + }, + { + "time": 0.6333333, + "x": 0.9560776, + "y": 1.0575278, + "curve": [ 0.6458333, 0.9560776, 0.6392696, 0.9940754, 0.6458333, 1.0575278, 0.6415478, 1.0197484 ] + }, + { "time": 0.7 } + ], + "shear": [ + { + "time": 0.23333333, + "curve": [ 0.2833333, 0, 0.3613967, -0.05349203, 0.2833333, 0, 0.405078, -0.24694034 ] + }, + { + "time": 0.4333333, + "x": 0.04460073, + "y": -0.4713975, + "curve": [ 0.4979945, 0.1327733, 0.5700468, 0.5684042, 0.48536065, -0.884698, 0.5333333, -2.907349 ] + }, + { + "time": 0.6333333, + "x": 0.5478031, + "y": -2.907349, + "curve": [ 0.7018387, 0.5255032, 0.7171954, 0.32875645, 0.6803062, -2.87235, 0.7484596, -2.0913465 ] + }, + { + "time": 0.8, + "x": 0.1984679, + "y": -1.5850337, + "curve": [ 0.8968305, 0.04611016, 1.025, 0, 0.8617343, -0.9785796, 1.025, 0 ] + }, + { "time": 1.1333333 } + ] + }, + "jaw-inside": { + "rotate": [ + {}, + { "time": 0.7666666, "value": 13.77124 }, + { "time": 2.1333334 } + ], + "translate": [ + {}, + { "time": 0.6, "x": -4.30423, "y": 4.484619 }, + { "time": 0.7666666, "x": -23.59265, "y": -9.321472 }, + { "time": 2.1333334 } + ], + "scale": [ + { "time": 0.6 }, + { "time": 0.7666666, "x": 1.1188874 }, + { "time": 2.1333334 } + ] + }, + "leg-control": { + "translate": [ + { + "curve": [ 0.01666667, 0, 0.05, 0, 0.01666667, 0, 0.05, 102.4327 ] + }, + { + "time": 0.06666667, + "y": 102.4327, + "curve": [ 0.1, 0, 0.15, 0, 0.1, 102.4327, 0.15, 97.83137 ] + }, + { + "time": 0.2, + "y": 93.23006, + "curve": [ 0.22283334, 0, 0.2456667, 0, 0.22283334, 91.12878, 0.2456667, -33.33128 ] + }, + { + "time": 0.2666667, + "y": -34.99433, + "curve": [ 0.2921909, 0, 0.3152222, 0, 0.2921909, -36.97301, 0.3152222, 84.02743 ] + }, + { + "time": 0.3333333, + "y": 84.02743, + "curve": [ 0.35, 0, 0.3833333, 0, 0.35, 84.02743, 0.3833333, 22.16259 ] + }, + { + "time": 0.4, + "y": 22.16259, + "curve": [ 0.4666667, 0, 0.6, 11.39688, 0.4666667, 22.16259, 0.6, -252.93103 ] + }, + { + "time": 0.6666667, + "x": 11.39688, + "y": -252.93103, + "curve": [ 0.7, 11.39688, 0.7666666, 11.39688, 0.7, -252.93103, 0.7666666, -174.3925 ] + }, + { + "time": 0.8, + "x": 11.39688, + "y": -174.3925, + "curve": [ 0.825, 11.39688, 0.875, 11.39688, 0.825, -174.3925, 0.875, -201.78796 ] + }, + { + "time": 0.9, + "x": 11.39688, + "y": -201.78796, + "curve": [ 0.925, 11.39688, 0.975, 11.39688, 0.925, -201.78796, 0.975, -174.32727 ] + }, + { + "time": 1, + "x": 11.39688, + "y": -174.32727, + "curve": [ 1.0333333, 11.39688, 1.1, 11.39688, 1.0333333, -174.32727, 1.1, -221.2162 ] + }, + { + "time": 1.1333333, + "x": 11.39688, + "y": -221.2162, + "curve": [ 1.1666666, 11.39688, 1.2333333, 11.39688, 1.1666666, -221.2162, 1.2333333, -167.3592 ] + }, + { + "time": 1.2666667, + "x": 11.39688, + "y": -167.3592, + "curve": [ 1.3083333, 11.39688, 1.3916667, 11.39688, 1.3083333, -167.3592, 1.3916667, -214.55518 ] + }, + { + "time": 1.4333333, + "x": 11.39688, + "y": -214.55518, + "curve": [ 1.5083333, 11.39688, 1.725, 11.39688, 1.5083333, -214.55518, 1.725, 48.39307 ] + }, + { + "time": 1.8, + "x": 11.39688, + "y": 48.39307, + "curve": [ 1.8569444, 11.39688, 1.952801, 6.130762, 1.8569444, 48.39307, 1.952801, -139.3068 ] + }, + { + "time": 2.033333, + "x": 2.7603455, + "y": -153.61813, + "curve": [ 2.072199, 1.198445, 2.106944, 0, 2.072199, -160.2502, 2.106944, 0 ] + }, + { "time": 2.1333334 } + ] + }, + "lower-leg": { + "rotate": [ + { "value": -12.658535 } + ] + }, + "neck": { + "rotate": [ + { + "curve": [ 0.05, 0, 0.11423018, -8.501202 ] + }, + { + "time": 0.2, + "value": -8.26, + "curve": [ 0.2901589, -8.006446, 0.537244, 12.54909 ] + }, + { + "time": 0.6333333, + "value": 13.44405, + "curve": [ 0.7658652, 14.67843, 1.2734944, 2.132954 ] + }, + { + "time": 1.4666667, + "value": -3.503719, + "curve": [ 1.564852, -6.924317, 1.655727, -11.018286 ] + }, + { + "time": 1.7, + "value": -10.742094, + "curve": [ 1.788044, -10.19284, 1.8519185, 2.741184 ] + }, + { + "time": 1.9333333, + "value": 2.877842, + "curve": [ 1.9924266, 2.977032, 2.083333, 0 ] + }, + { "time": 2.1333334 } + ], + "translate": [ + { + "curve": [ 0.05, 0, 0.15, -20.088917, 0.05, 0, 0.17443556, -0.2586219 ] + }, + { + "time": 0.2, + "x": -19.98364, + "y": -1.4499054, + "curve": [ 0.312, -19.74783, 0.4632388, 34.39558, 0.2639209, -4.428573, 0.474332, -34.98151 ] + }, + { + "time": 0.6, + "x": 34.30374, + "y": -34.86598, + "curve": [ 0.6722458, 34.25522, 0.7416667, 30.0226, 0.637535, -34.83147, 0.7416667, -21.31856 ] + }, + { + "time": 0.8, + "x": 30.0226, + "y": -21.31856, + "curve": [ 0.8416666, 30.0226, 0.9916667, 37.6581, 0.8416666, -21.31856, 0.9916667, -41.17795 ] + }, + { + "time": 1.0333333, + "x": 37.6581, + "y": -41.17795, + "curve": [ 1.0833334, 37.6581, 1.1833333, 23.600327, 1.0833334, -41.17795, 1.1833333, -0.6304756 ] + }, + { + "time": 1.2333333, + "x": 23.600327, + "y": -0.6304756, + "curve": [ 1.2916666, 23.600327, 1.4083332, 26.297134, 1.2916666, -0.6304756, 1.4083333, -26.61517 ] + }, + { + "time": 1.4666667, + "x": 26.297134, + "y": -26.61517, + "curve": [ 1.5806197, 26.297134, 1.617727, 17.2101, 1.5, -26.61517, 1.675, 3.6429024 ] + }, + { + "time": 1.7, + "x": 12.18019, + "y": 3.6429024, + "curve": [ 1.773071, 7.712845, 1.8702505, 4.403015, 1.7583333, 3.6429024, 1.875, -4.901378 ] + }, + { + "time": 1.9333333, + "x": 2.830345, + "y": -4.901378, + "curve": [ 2.000755, 1.1495056, 2.083333, 0, 1.9833333, -4.901378, 2.083333, 0 ] + }, + { "time": 2.1333334 } + ] + }, + "neck2": { + "rotate": [ + { + "value": 0.016994476, + "curve": [ 0.05, 0.016994476, 0.14395218, 5.690305 ] + }, + { + "time": 0.2, + "value": 9.941437, + "curve": [ 0.27649775, 15.743654, 0.525, 37.25 ] + }, + { + "time": 0.6333333, + "value": 37.25, + "curve": [ 0.8083333, 37.25, 1.1754525, 37.20645 ] + }, + { + "time": 1.3333334, + "value": 33.93432, + "curve": [ 1.5433623, 29.581404, 1.659146, 13.316275 ] + }, + { + "time": 1.7, + "value": 11.08, + "curve": [ 1.762146, 7.678211, 1.875, 0 ] + }, + { "time": 1.9333333 } + ] + }, + "saddle": { + "rotate": [ + { + "value": -3.18412, + "curve": [ 0.04166667, -3.18412, 0.1319434, -3.3037186 ] + }, + { + "time": 0.16666667, + "value": -3.04187, + "curve": [ 0.2776691, -2.2048035, 0.5166666, 8.86589 ] + }, + { + "time": 0.6333333, + "value": 8.86589, + "curve": [ 0.6833333, 8.86589, 0.7722983, -1.9192505 ] + }, + { + "time": 0.8333333, + "value": -2.369087, + "curve": [ 0.8999712, -2.8602066, 1.2583333, -3.18412 ] + }, + { + "time": 1.4, + "value": -3.18412, + "curve": [ 1.4583334, -3.18412, 1.575, -7.05896 ] + }, + { + "time": 1.6333333, + "value": -7.05896, + "curve": [ 1.7145833, -7.05896, 1.8599743, -0.11690044 ] + }, + { + "time": 1.9666667, + "value": -0.06554413, + "curve": [ 2.050401, -0.025238037, 2.0895834, -3.18412 ] + }, + { "time": 2.1333334, "value": -3.18412 } + ], + "translate": [ + { + "x": 12.676453, + "y": -2.670715, + "curve": [ 0.04166667, 12.676453, 0.125, 22.75735, 0.04166667, -2.670715, 0.125, -3.363701 ] + }, + { + "time": 0.16666667, + "x": 22.75735, + "y": -3.363701, + "curve": [ 0.2833333, 22.75735, 0.5166666, 9.260864, 0.2833333, -3.363701, 0.5166666, -0.417099 ] + }, + { + "time": 0.6333333, + "x": 9.260864, + "y": -0.417099, + "curve": [ 0.6583333, 9.260864, 0.7083333, 12.676453, 0.6583333, -0.417099, 0.7083333, -2.670715 ] + }, + { "time": 0.7333333, "x": 12.676453, "y": -2.670715 } + ] + }, + "saddle-strap-back": { + "rotate": [ + { + "value": -2.525406, + "curve": [ 0.07927, -2.449173, 0.302215, -25.09913 ] + }, + { + "time": 0.3333333, + "value": -25.810234, + "curve": [ 0.3886423, -27.07413, 0.48422995, -26.227615 ] + }, + { + "time": 0.5333333, + "value": -26.788666, + "curve": [ 0.5609879, -27.10464, 0.6083592, -31.99128 ] + }, + { + "time": 0.6333333, + "value": -31.97056, + "curve": [ 0.7252362, -31.894325, 0.7625385, -10.530502 ] + }, + { + "time": 0.8333333, + "value": -7.749542, + "curve": [ 0.9107831, -4.707138, 1.3083335, -5.821182 ] + }, + { + "time": 1.4666667, + "value": -5.821182, + "curve": [ 1.540505, -5.821182, 1.6316522, -4.145981 ] + }, + { + "time": 1.7, + "value": -4.139007, + "curve": [ 1.765942, -4.132278, 1.845152, -11.086716 ] + }, + { + "time": 1.9333333, + "value": -11.086716, + "curve": [ 1.9833333, -11.086716, 2.083333, -2.525406 ] + }, + { "time": 2.1333334, "value": -2.525406 } + ], + "translate": [ + { + "curve": [ 0.08333333, 0, 0.25, 11.685944, 0.08333333, 0, 0.25, -2.8079224 ] + }, + { + "time": 0.3333333, + "x": 11.685944, + "y": -2.8079224, + "curve": [ 0.4083333, 11.685944, 0.5583333, 0, 0.4083333, -2.8079224, 0.5583333, 0 ] + }, + { "time": 0.6333333 } + ], + "scale": [ + { + "time": 0.6333333, + "curve": [ 0.65, 1, 0.6658395, 1.075704, 0.65, 1, 0.6833333, 1 ] + }, + { + "time": 0.7, + "x": 1.1026872, + "curve": [ 0.7372303, 1.1320953, 0.8, 1.1620117, 0.7333333, 1, 0.8, 1 ] + }, + { + "time": 0.8333333, + "x": 1.1620117, + "curve": [ 1.05, 1.1620117, 1.4833333, 1, 1.05, 1, 1.4833333, 1 ] + }, + { "time": 1.7 } + ] + }, + "saddle-strap-front": { + "rotate": [ + { + "value": -0.3687134, + "curve": [ 0.06666667, -0.3687134, 0.2, -0.9502563 ] + }, + { + "time": 0.2666667, + "value": -0.9502563, + "curve": [ 0.325, -0.9502563, 0.465568, -15.04802 ] + }, + { + "time": 0.5, + "value": -17.948975, + "curve": [ 0.5668571, -23.58177, 0.6, -27.116135 ] + }, + { + "time": 0.6333333, + "value": -27.116135, + "curve": [ 0.6583333, -27.116135, 0.6881724, -23.12448 ] + }, + { + "time": 0.7333333, + "value": -18.55742, + "curve": [ 0.7498251, -16.889633, 0.8030894, -13.86647 ] + }, + { + "time": 0.8333333, + "value": -12.021576, + "curve": [ 0.865879, -10.036285, 0.9699611, -6.279612 ] + }, + { + "time": 1.0666667, + "value": -6.12828, + "curve": [ 1.133444, -6.024558, 1.203631, -10.675 ] + }, + { + "time": 1.2666667, + "value": -10.070923, + "curve": [ 1.3935783, -8.87184, 1.514389, -1.129486 ] + }, + { + "time": 1.6, + "value": -1.129486, + "curve": [ 1.675, -1.129486, 1.8251604, -6.561828 ] + }, + { + "time": 1.9, + "value": -6.680939, + "curve": [ 1.9524262, -6.764389, 1.9816535, -6.385666 ] + }, + { + "time": 2, + "value": -5.972305, + "curve": [ 2.033333, -5.221267, 2.1, -0.3687134 ] + }, + { "time": 2.1333334, "value": -0.3687134 } + ], + "translate": [ + { + "curve": [ 0.125, 0, 0.375, -17.922974, 0.125, 0, 0.375, -1.7483826 ] + }, + { + "time": 0.5, + "x": -17.922974, + "y": -1.7483826, + "curve": [ 0.5889166, -17.922974, 0.706583, -7.057888, 0.5889166, -1.7483826, 0.706583, -4.507475 ] + }, + { + "time": 0.8333333, + "x": -2.895771, + "y": -6.566284, + "curve": [ 1.101917, 5.81464, 1.4139167, 11.49472, 1.101917, -10.874927, 1.4139167, -16.29997 ] + }, + { + "time": 1.6, + "x": 11.49472, + "y": -16.29997, + "curve": [ 1.7333333, 11.49472, 2, 0, 1.7333333, -16.29997, 2, 0 ] + }, + { "time": 2.1333334 } + ] + }, + "spineboy-back-arm-target": { + "translate": [ + {}, + { "time": 0.6333333, "x": 56.17285, "y": -58.55765 }, + { "time": 0.8333333, "x": 34.46844, "y": -59.19174 }, + { "time": 2.1333334 } + ] + }, + "spineboy-front-arm-target": { + "translate": [ + {}, + { "time": 0.06666667, "x": 1.1109314, "y": -2.353485 }, + { "time": 0.3, "x": 21.55603, "y": -45.66611 }, + { "time": 0.5666666, "x": 2.231659, "y": -34.97969 }, + { "time": 0.7333333, "x": 28.522797, "y": -47.75398 }, + { "time": 0.8333333, "x": 24.520233, "y": -37.91605 }, + { "time": 1.5, "x": 26.242554, "y": -38.24052 }, + { "time": 1.7, "x": -9.391785, "y": -0.721634 }, + { "time": 1.8666667, "x": 1.0347595, "y": -21.85956 }, + { "time": 2.1333334 } + ] + }, + "spineboy-front-foot-target": { + "translate": [ + { + "curve": [ 0.075, 0, 0.225, 12.32846, 0.075, 0, 0.225, 10.250122 ] + }, + { + "time": 0.3, + "x": 12.32846, + "y": 10.250122, + "curve": [ 0.7583333, 12.32846, 1.675, 0, 0.7583333, 10.250122, 1.675, 0 ] + }, + { "time": 2.1333334 } + ] + }, + "spineboy-hip": { + "rotate": [ + { + "curve": [ 0.025, 0, 0.075, 10.975075 ] + }, + { + "time": 0.1, + "value": 10.975075, + "curve": [ 0.1571389, 10.975075, 0.2381468, 8.08097 ] + }, + { + "time": 0.3333333, + "value": 8.019203, + "curve": [ 0.3911966, 7.981662, 0.4323243, 11.763657 ] + }, + { + "time": 0.4666667, + "value": 11.658203, + "curve": [ 0.490896, 11.583817, 0.504019, 11.396133 ] + }, + { + "time": 0.5333333, + "value": 7.386024, + "curve": [ 0.5767045, 1.4529953, 0.6273814, -5.499061 ] + }, + { + "time": 0.7, + "value": -7.465202, + "curve": [ 0.8214968, -10.75473, 0.9166667, -11.15635 ] + }, + { + "time": 1, + "value": -11.15635, + "curve": [ 1.1295, -11.15635, 1.3588493, 3.637728 ] + }, + { + "time": 1.5333333, + "value": 3.428917, + "curve": [ 1.6031814, 3.8860855, 1.6369804, -25.964615 ] + }, + { + "time": 1.7, + "value": -25.964615, + "curve": [ 1.8109115, -26.325603, 1.881232, 9.14779 ] + }, + { + "time": 1.9666667, + "value": 9.049103, + "curve": [ 2.0341785, 8.971115, 2.091667, 0 ] + }, + { "time": 2.1333334 } + ], + "translate": [ + { + "curve": [ 0.025, 0, 0.0750543, -3.136368, 0.025, 0, 0.075, 4.234972 ] + }, + { + "time": 0.1, + "x": -2.693077, + "y": 4.234972, + "curve": [ 0.13118437, -2.1389084, 0.16675417, 3.2739944, 0.125, 4.234972, 0.18315905, -2.9779205 ] + }, + { + "time": 0.2, + "x": 17.128235, + "y": -6.44475, + "curve": [ 0.21355218, 22.775703, 0.275, 27.632156, 0.2347403, -13.59629, 0.2737288, -24.334436 ] + }, + { + "time": 0.3, + "x": 27.632156, + "y": -24.78338, + "curve": [ 0.3416667, 27.632156, 0.425, 23.613594, 0.3488699, -25.6185, 0.4411776, -8.743953 ] + }, + { + "time": 0.4666667, + "x": 23.613594, + "y": -8.316032, + "curve": [ 0.4833333, 23.613594, 0.5077151, 20.91887, 0.4860615, -7.990429, 0.5077435, -37.58042 ] + }, + { + "time": 0.5333333, + "x": 35.41964, + "y": -44.36167, + "curve": [ 0.5514662, 45.68353, 0.6083333, 70.80553, 0.569191, -53.86384, 0.6160268, -66.97786 ] + }, + { + "time": 0.6333333, + "x": 70.80553, + "y": -72.81343, + "curve": [ 0.65, 70.80553, 0.6794299, 65.63902, 0.6479056, -77.72706, 0.6713121, -76.48233 ] + }, + { + "time": 0.7, + "x": 62.90897, + "y": -76.9076, + "curve": [ 0.7253783, 59.54078, 0.775, 59.8592, 0.7296516, -77.34714, 0.775, -54.30123 ] + }, + { + "time": 0.8, + "x": 59.8592, + "y": -54.30123, + "curve": [ 0.825, 59.8592, 0.8674762, 59.93467, 0.825, -54.30123, 0.8653466, -55.33016 ] + }, + { + "time": 0.9, + "x": 60.78867, + "y": -56.68705, + "curve": [ 0.946225, 62.00243, 0.9617326, 62.29215, 0.9232765, -57.59847, 0.9506787, -57.62002 ] + }, + { + "time": 1, + "x": 63.78164, + "y": -57.73004, + "curve": [ 1.0380933, 65.26436, 1.105943, 68.28405, 1.058015, -57.85946, 1.0996855, -57.62626 ] + }, + { + "time": 1.1333333, + "x": 69.44236, + "y": -57.41059, + "curve": [ 1.2166407, 72.9653, 1.3333334, 77.1307, 1.2256802, -56.81868, 1.3161285, -55.55365 ] + }, + { + "time": 1.4, + "x": 77.1307, + "y": -53.65258, + "curve": [ 1.4333333, 77.1307, 1.4669805, 73.12392, 1.436667, -52.82147, 1.491791, -50.9065 ] + }, + { + "time": 1.5333333, + "x": 63.40513, + "y": -49.52053, + "curve": [ 1.5486218, 61.16582, 1.5968766, 46.67382, 1.576237, -48.08916, 1.5991575, -47.25112 ] + }, + { + "time": 1.6333333, + "x": 38.85876, + "y": -45.65013, + "curve": [ 1.6874287, 27.26255, 1.7222604, 20.803436, 1.6766307, -43.62183, 1.7102222, -40.67176 ] + }, + { + "time": 1.7333333, + "x": 19.46388, + "y": -38.00181, + "curve": [ 1.8030117, 11.670115, 1.885289, 5.585575, 1.7583796, -35.10831, 1.888417, -14.526795 ] + }, + { + "time": 1.9333333, + "x": 4.111786, + "y": -7.783424, + "curve": [ 2.006447, 1.868988, 2.083333, 0, 1.9600667, -3.769878, 2.083333, 0 ] + }, + { "time": 2.1333334 } + ] + }, + "spineboy-torso": { + "rotate": [ + { + "curve": [ 0.02442371, -0.09488678, 0.08789796, -27.72589 ] + }, + { + "time": 0.16666667, + "value": -27.924904, + "curve": [ 0.1931936, -27.99193, 0.21629296, -27.440636 ] + }, + { + "time": 0.23333333, + "value": -27.418823, + "curve": [ 0.2924649, -27.34311, 0.4000425, -40.99694 ] + }, + { + "time": 0.4333333, + "value": -47.90156, + "curve": [ 0.481162, -57.82136, 0.5777577, -76.33443 ] + }, + { + "time": 0.6333333, + "value": -81.71565, + "curve": [ 0.6556626, -83.87773, 0.6691941, -84.83832 ] + }, + { + "time": 0.7, + "value": -84.83832, + "curve": [ 0.7333333, -84.8383, 0.8, -60.20763 ] + }, + { + "time": 0.8333333, + "value": -60.20763, + "curve": [ 0.85, -60.20763, 0.8732216, -68.31703 ] + }, + { + "time": 0.9, + "value": -68.28526, + "curve": [ 0.9334992, -68.24553, 0.9584856, -64.03485 ] + }, + { + "time": 1, + "value": -63.96951, + "curve": [ 1.084946, -63.83581, 1.2126592, -69.61822 ] + }, + { + "time": 1.2666667, + "value": -69.4731, + "curve": [ 1.4203016, -69.06029, 1.4793247, -59.78715 ] + }, + { + "time": 1.5, + "value": -54.97464, + "curve": [ 1.5238898, -49.41391, 1.645433, -25.872715 ] + }, + { + "time": 1.7, + "value": -18.445045, + "curve": [ 1.7513837, -11.450745, 1.8784248, 0 ] + }, + { "time": 2.1333334 } + ] + }, + "stirrup": { + "rotate": [ + {}, + { "time": 0.4333333, "value": -19.63491 }, + { "time": 0.8333333, "value": -15.176086 }, + { "time": 1.3333334, "value": -5.959549 }, + { "time": 1.7666667, "value": -18.15761 }, + { "time": 2.1333334 } + ], + "translate": [ + {}, + { "time": 0.4333333, "x": -1.4482117, "y": 16.308197, "curve": "stepped" }, + { "time": 1, "x": -1.4482117, "y": 16.308197 }, + { "time": 2.1333334 } + ] + }, + "stirrup-strap1": { + "rotate": [ + { "value": 5.247009 } + ] + }, + "stirrup-strap2": { + "rotate": [ + { "value": -9.39 } + ] + }, + "tail1": { + "rotate": [ + { + "curve": [ 0.0978559, 0.12860107, 0.203588, -14.757523 ] + }, + { + "time": 0.2666667, + "value": -14.69107, + "curve": [ 0.45318645, -14.494492, 0.5776548, 19.55391 ] + }, + { + "time": 0.9333333, + "value": 19.85483, + "curve": [ 1.0803045, 19.97901, 1.3275964, 16.455597 ] + }, + { + "time": 1.4333333, + "value": 9.050812, + "curve": [ 1.5321765, 2.128784, 1.5645107, -5.760986 ] + }, + { + "time": 1.7, + "value": -5.737469, + "curve": [ 1.7389126, -5.730705, 1.7705745, 1.0766144 ] + }, + { + "time": 1.8, + "value": 1.0630646, + "curve": [ 1.8527672, 1.0387664, 1.955696, -1.6554356 ] + }, + { + "time": 2, + "value": -1.8114014, + "curve": [ 2.0386894, -1.9476166, 2.0797145, -0.0704922 ] + }, + { "time": 2.1333334 } + ] + }, + "tail2": { + "rotate": [ + { + "value": -4.334617, + "curve": [ 0.02724747, -1.911229, 0.12374917, 3.511161 ] + }, + { + "time": 0.16666667, + "value": 6.451683, + "curve": [ 0.2112617, 9.507147, 0.2775513, 10.890963 ] + }, + { + "time": 0.3333333, + "value": 10.986828, + "curve": [ 0.3921465, 11.087904, 0.38456345, -13.607336 ] + }, + { + "time": 0.5, + "value": -13.56498, + "curve": [ 0.6143275, -13.52303, 0.6361688, -5.753505 ] + }, + { + "time": 0.7, + "value": -5.758773, + "curve": [ 0.7866581, -5.765921, 0.8312959, -10.171103 ] + }, + { + "time": 0.9666666, + "value": -10.45861, + "curve": [ 1.0723695, -10.683107, 1.278833, -8.292423 ] + }, + { + "time": 1.3333334, + "value": -6.230982, + "curve": [ 1.3893162, -4.11347, 1.509047, 5.52527 ] + }, + { + "time": 1.5333333, + "value": 9.74646, + "curve": [ 1.5510274, 12.821835, 1.6192383, 27.29642 ] + }, + { + "time": 1.6666666, + "value": 27.26047, + "curve": [ 1.7335726, 27.20975, 1.762923, 9.86193 ] + }, + { + "time": 1.8, + "value": 5.304016, + "curve": [ 1.836345, 0.8360586, 1.9264506, -9.619552 ] + }, + { + "time": 2, + "value": -9.489013, + "curve": [ 2.070545, -9.363805, 2.091495, -7.253569 ] + }, + { "time": 2.1333334, "value": -4.334617 } + ], + "translate": [ + { + "curve": [ 0.13333334, 0, 0.4354529, 3.441078, 0.13333334, 0, 0.4, 0 ] + }, + { + "time": 0.5333333, + "x": 11.881638, + "curve": [ 0.6178824, 19.17257, 0.840354, 41.29581, 0.575, 0, 0.8483064, 4.024023 ] + }, + { + "time": 0.9666666, + "x": 41.27171, + "y": 4.027927, + "curve": [ 1.7800908, 41.11648, 1.7631627, 0.2543793, 1.212752, 4.030815, 1.847584, 0.08121013 ] + }, + { "time": 2.1333334 } + ] + }, + "tail3": { + "rotate": [ + { + "value": -4.662086, + "curve": [ 0.052957, -3.481148, 0.2095054, 0.2170353 ] + }, + { + "time": 0.2666667, + "value": 0.22995853, + "curve": [ 0.3313325, 0.24457836, 0.3368851, -16.206703 ] + }, + { + "time": 0.4333333, + "value": -16.22443, + "curve": [ 0.5209878, -16.24054, 0.5648685, -5.717047 ] + }, + { + "time": 0.6666667, + "value": -5.725787, + "curve": [ 0.7433082, -5.732372, 0.8051463, -9.292898 ] + }, + { + "time": 0.8333333, + "value": -9.892672, + "curve": [ 0.878223, -10.847854, 0.9296847, -11.712997 ] + }, + { + "time": 1, + "value": -11.849365, + "curve": [ 1.0318416, -11.91013, 1.0653205, -10.914192 ] + }, + { + "time": 1.1, + "value": -10.92153, + "curve": [ 1.1419426, -10.930406, 1.1901885, -11.137112 ] + }, + { + "time": 1.2333333, + "value": -11.211578, + "curve": [ 1.268129, -11.269394, 1.2958336, -10.85394 ] + }, + { + "time": 1.3333334, + "value": -10.843727, + "curve": [ 1.3887686, -10.828629, 1.4219222, -12.908347 ] + }, + { + "time": 1.4666667, + "value": -12.89989, + "curve": [ 1.523473, -12.88915, 1.5937836, 0.8304853 ] + }, + { + "time": 1.6666666, + "value": 0.9101486, + "curve": [ 1.7215647, 0.9701543, 1.7630044, -1.008135 ] + }, + { + "time": 1.8, + "value": -2.9211044, + "curve": [ 1.8370997, -4.839475, 1.8893325, -7.185627 ] + }, + { + "time": 1.9666667, + "value": -7.213832, + "curve": [ 2.038514, -7.240037, 2.081385, -5.697861 ] + }, + { "time": 2.1333334, "value": -4.662086 } + ] + }, + "tail4": { + "rotate": [ + { + "value": 13.37375, + "curve": [ 0.03333333, 13.37375, 0.10114305, 11.829378 ] + }, + { + "time": 0.13333334, + "value": 11.77562, + "curve": [ 0.2006853, 11.66315, 0.23333333, 16.72581 ] + }, + { + "time": 0.2666667, + "value": 16.72581, + "curve": [ 0.2886389, 16.72581, 0.3161206, 16.018597 ] + }, + { + "time": 0.3333333, + "value": 13.791368, + "curve": [ 0.3907864, 6.357286, 0.4564329, -4.318534 ] + }, + { + "time": 0.4666667, + "value": -5.606641, + "curve": [ 0.4818689, -7.520118, 0.4993798, -10.142548 ] + }, + { + "time": 0.5666666, + "value": -10.331833, + "curve": [ 0.5757944, -10.35751, 0.6156, -10.007652 ] + }, + { + "time": 0.6666667, + "value": -8.025093, + "curve": [ 0.7809284, -3.746934, 0.9350675, 3.3823264 ] + }, + { + "time": 1, + "value": 4.134959, + "curve": [ 1.03331, 4.521056, 1.062827, 4.535159 ] + }, + { + "time": 1.1333333, + "value": 4.553679, + "curve": [ 1.1756355, 4.564716, 1.2207355, 4.124315 ] + }, + { + "time": 1.2666667, + "value": 4.178894, + "curve": [ 1.3493437, 4.27714, 1.4169655, 4.993682 ] + }, + { + "time": 1.4333333, + "value": 5.830837, + "curve": [ 1.4655674, 7.479477, 1.55739, 19.48691 ] + }, + { + "time": 1.6333333, + "value": 19.565987, + "curve": [ 1.7754866, 19.714, 1.8569134, 7.438119 ] + }, + { + "time": 1.9666667, + "value": 7.459961, + "curve": [ 2.044623, 7.475476, 2.091667, 13.37375 ] + }, + { "time": 2.1333334, "value": 13.37375 } + ] + }, + "tail5": { + "rotate": [ + { + "value": 5.295868, + "curve": [ 0.03588034, 7.506984, 0.23333333, 22.33003 ] + }, + { + "time": 0.2666667, + "value": 22.33003, + "curve": [ 0.325, 22.33003, 0.4138873, -17.460617 ] + }, + { + "time": 0.5, + "value": -17.34297, + "curve": [ 0.5543965, -17.26865, 0.6219154, -8.556446 ] + }, + { + "time": 0.6666667, + "value": -3.29901, + "curve": [ 0.6802347, -1.7580376, 0.718115, 2.892038 ] + }, + { + "time": 0.8, + "value": 2.987808, + "curve": [ 0.870196, 3.069906, 0.877712, -6.268285 ] + }, + { + "time": 0.9333333, + "value": -6.300298, + "curve": [ 0.9527651, -6.311482, 1.021759, -0.18395662 ] + }, + { + "time": 1.0666667, + "value": -0.19351697, + "curve": [ 1.141287, -0.20940447, 1.247132, -1.6653378 ] + }, + { + "time": 1.3333334, + "value": -1.6762238, + "curve": [ 1.4453996, -1.6903772, 1.53279, 6.198437 ] + }, + { + "time": 1.6333333, + "value": 6.153686, + "curve": [ 1.7826977, 6.08721, 1.7961364, 2.2979746 ] + }, + { + "time": 1.9333333, + "value": 2.266754, + "curve": [ 2.022455, 2.4080124, 2.089926, 3.957275 ] + }, + { "time": 2.1333334, "value": 5.295868 } + ] + }, + "tail6": { + "rotate": [ + { + "value": 5.295868, + "curve": [ 0.02594737, 7.490011, 0.149726, 12.895835 ] + }, + { + "time": 0.2, + "value": 17.26678, + "curve": [ 0.2511039, 21.70988, 0.291438, 24.53427 ] + }, + { + "time": 0.3333333, + "value": 24.59404, + "curve": [ 0.4030219, 24.69348, 0.3764442, -22.00688 ] + }, + { + "time": 0.5333333, + "value": -21.871376, + "curve": [ 0.6012933, -21.81268, 0.6974703, -13.33023 ] + }, + { + "time": 0.7333333, + "value": -10.10777, + "curve": [ 0.7480975, -8.781152, 0.8634988, 4.362808 ] + }, + { + "time": 0.9333333, + "value": 4.218385, + "curve": [ 0.9738322, 4.13463, 1.062874, 1.2221974 ] + }, + { + "time": 1.1, + "value": 1.3224597, + "curve": [ 1.1447858, 1.44341, 1.195616, 6.120721 ] + }, + { + "time": 1.2333333, + "value": 6.081132, + "curve": [ 1.2788322, 6.033375, 1.3242416, -4.694775 ] + }, + { + "time": 1.4333333, + "value": -5.047866, + "curve": [ 1.505085, -5.280101, 1.608364, -1.447765 ] + }, + { + "time": 1.6333333, + "value": 0.09803596, + "curve": [ 1.6470526, 0.9473765, 1.721972, 20.385527 ] + }, + { + "time": 1.8, + "value": 20.34411, + "curve": [ 1.8877468, 20.297533, 1.8782744, -3.596811 ] + }, + { + "time": 2, + "value": -3.5828874, + "curve": [ 2.055051, -3.576591, 2.120787, 3.565635 ] + }, + { "time": 2.1333334, "value": 5.295868 } + ] + }, + "tail7": { + "rotate": [ + { + "value": -10.887794, + "curve": [ 0.0235312, -9.389612, 0.08252365, 2.5369706 ] + }, + { + "time": 0.1, + "value": 5.375089, + "curve": [ 0.12042414, 8.69192, 0.2007472, 19.39497 ] + }, + { + "time": 0.2666667, + "value": 19.386515, + "curve": [ 0.3258515, 19.378923, 0.3730606, 10.74694 ] + }, + { + "time": 0.4, + "value": 6.644067, + "curve": [ 0.4249138, 2.849691, 0.5273042, -17.301966 ] + }, + { + "time": 0.6, + "value": -17.314266, + "curve": [ 0.7291205, -17.336113, 0.7506107, 6.296881 ] + }, + { + "time": 0.8, + "value": 6.384072, + "curve": [ 0.8680016, 6.504122, 0.9142229, -11.691764 ] + }, + { + "time": 0.9666666, + "value": -11.401011, + "curve": [ 0.994957, -11.244166, 1.0443107, -1.318622 ] + }, + { + "time": 1.1, + "value": -1.443137, + "curve": [ 1.1428783, -1.5390085, 1.1802417, -10.371634 ] + }, + { + "time": 1.2666667, + "value": -10.233667, + "curve": [ 1.2945107, -10.189218, 1.340382, -3.842218 ] + }, + { + "time": 1.4333333, + "value": -4.097252, + "curve": [ 1.552895, -4.425299, 1.584771, -16.607723 ] + }, + { + "time": 1.6333333, + "value": -16.61046, + "curve": [ 1.6880262, -16.61354, 1.69559, 23.73841 ] + }, + { + "time": 1.7333333, + "value": 23.7084, + "curve": [ 1.7978796, 23.65709, 1.8703463, 16.49545 ] + }, + { + "time": 1.9, + "value": 10.294264, + "curve": [ 1.922576, 5.57317, 1.9778734, -13.058318 ] + }, + { + "time": 2.0666666, + "value": -13.0309, + "curve": [ 2.0811255, -13.05818, 2.1061864, -12.375843 ] + }, + { "time": 2.1333334, "value": -10.887794 } + ] + }, + "tail8": { + "rotate": [ + { + "value": -10.887794, + "curve": [ 0.08107672, -11.054156, 0.1474136, 13.076495 ] + }, + { + "time": 0.16666667, + "value": 15.430672, + "curve": [ 0.18629894, 17.831213, 0.2684161, 21.76858 ] + }, + { + "time": 0.3333333, + "value": 21.830173, + "curve": [ 0.4715358, 21.9613, 0.4540574, -21.065117 ] + }, + { + "time": 0.5, + "value": -21.252335, + "curve": [ 0.543718, -20.58008, 0.551063, -10.782255 ] + }, + { + "time": 0.6, + "value": -10.87898, + "curve": [ 0.618422, -10.915388, 0.6512221, -17.90029 ] + }, + { + "time": 0.6666667, + "value": -17.69105, + "curve": [ 0.6935866, -17.32635, 0.7954044, 1.2363343 ] + }, + { + "time": 0.8333333, + "value": 3.931407, + "curve": [ 0.8584394, 5.715341, 0.8859028, 7.580194 ] + }, + { + "time": 0.9333333, + "value": 7.553411, + "curve": [ 0.9822417, 7.525797, 0.9483679, -9.490816 ] + }, + { + "time": 1.0333333, + "value": -9.58653, + "curve": [ 1.0830605, -9.642548, 1.1002713, -4.470876 ] + }, + { + "time": 1.1333333, + "value": -4.44548, + "curve": [ 1.195046, -4.398073, 1.1977456, -11.21634 ] + }, + { + "time": 1.2666667, + "value": -11.137595, + "curve": [ 1.3138967, -11.083633, 1.35857, -8.006507 ] + }, + { + "time": 1.4666667, + "value": -8.414444, + "curve": [ 1.5228763, -8.62657, 1.6033622, -26.324766 ] + }, + { + "time": 1.6666666, + "value": -26.15625, + "curve": [ 1.7016213, -26.0632, 1.7289083, 19.383307 ] + }, + { + "time": 1.8, + "value": 19.13954, + "curve": [ 1.8624176, 18.925514, 1.9556353, -1.6937034 ] + }, + { + "time": 1.9666667, + "value": -3.180139, + "curve": [ 2.005982, -8.477783, 2.091667, -10.763137 ] + }, + { "time": 2.1333334, "value": -10.887794 } + ] + }, + "tail9": { + "rotate": [ + { + "value": -10.887794, + "curve": [ 0.03333333, -10.887794, 0.10921884, -16.09655 ] + }, + { + "time": 0.16666667, + "value": -15.685898, + "curve": [ 0.1996396, -15.450197, 0.2629067, 23.99578 ] + }, + { + "time": 0.3, + "value": 23.954754, + "curve": [ 0.3411885, 23.9092, 0.3799172, 20.42121 ] + }, + { + "time": 0.4, + "value": 13.7229, + "curve": [ 0.4362244, 1.6408377, 0.469307, -22.41737 ] + }, + { + "time": 0.5666666, + "value": -22.06399, + "curve": [ 0.5924227, -21.970505, 0.6186272, -12.649518 ] + }, + { + "time": 0.6333333, + "value": -12.971626, + "curve": [ 0.6491, -13.316966, 0.6724581, -23.186893 ] + }, + { + "time": 0.7333333, + "value": -23.76969, + "curve": [ 0.7525905, -23.95405, 0.7838073, 18.09805 ] + }, + { + "time": 0.8333333, + "value": 18.042545, + "curve": [ 0.8964938, 17.97176, 0.9680453, -8.436413 ] + }, + { + "time": 1.0666667, + "value": -8.29769, + "curve": [ 1.101658, -8.248473, 1.1466887, 1.3191142 ] + }, + { + "time": 1.2, + "value": 1.292991, + "curve": [ 1.2250096, 1.2807344, 1.263972, -9.041816 ] + }, + { + "time": 1.3333334, + "value": -9.068048, + "curve": [ 1.359453, -9.077927, 1.3669448, -0.797507 ] + }, + { + "time": 1.4, + "value": -0.9342342, + "curve": [ 1.4503263, -1.1424005, 1.4846607, -13.554214 ] + }, + { + "time": 1.5333333, + "value": -13.671535, + "curve": [ 1.5892377, -13.806288, 1.5917895, -4.954113 ] + }, + { + "time": 1.6333333, + "value": -4.902163, + "curve": [ 1.658858, -4.870241, 1.6722444, -6.817098 ] + }, + { + "time": 1.7, + "value": -6.850044, + "curve": [ 1.731827, -6.887824, 1.740983, 23.578936 ] + }, + { + "time": 1.8, + "value": 23.61334, + "curve": [ 1.8554654, 23.64568, 1.9417305, -2.5390525 ] + }, + { + "time": 1.9666667, + "value": -7.743812, + "curve": [ 1.9793396, -10.38897, 2.030337, -19.23341 ] + }, + { + "time": 2.0666666, + "value": -19.56235, + "curve": [ 2.0921624, -19.79093, 2.11625, -10.887794 ] + }, + { "time": 2.1333334, "value": -10.887794 } + ] + }, + "tail10": { + "rotate": [ + { + "value": -10.887794, + "curve": [ 0.03333333, -10.887794, 0.11136228, -30.73444 ] + }, + { + "time": 0.16666667, + "value": -30.89851, + "curve": [ 0.22909766, -31.08372, 0.3345717, 27.398733 ] + }, + { + "time": 0.4, + "value": 27.60249, + "curve": [ 0.4387912, 27.72329, 0.5239871, -27.926867 ] + }, + { + "time": 0.5666666, + "value": -27.875336, + "curve": [ 0.6204422, -27.810406, 0.6638464, -24.25439 ] + }, + { + "time": 0.7, + "value": -20.92544, + "curve": [ 0.7340456, -17.79059, 0.8142069, 5.463101 ] + }, + { + "time": 0.8333333, + "value": 13.09425, + "curve": [ 0.8421618, 16.61665, 0.8702538, 28.266706 ] + }, + { + "time": 0.9, + "value": 28.51031, + "curve": [ 0.947181, 28.896694, 0.9849344, -19.50522 ] + }, + { + "time": 1, + "value": -22.1182, + "curve": [ 1.0099136, -23.83762, 1.0382355, -31.086596 ] + }, + { + "time": 1.0666667, + "value": -31.14413, + "curve": [ 1.103398, -31.218464, 1.1330265, 19.54861 ] + }, + { + "time": 1.1666666, + "value": 19.349985, + "curve": [ 1.200527, 19.15007, 1.213024, -14.839756 ] + }, + { + "time": 1.3, + "value": -14.9352, + "curve": [ 1.3470044, -14.98678, 1.3702636, 11.365088 ] + }, + { + "time": 1.4, + "value": 11.305338, + "curve": [ 1.432146, 11.240744, 1.522879, -27.58582 ] + }, + { + "time": 1.5333333, + "value": -31.267727, + "curve": [ 1.565316, -42.53161, 1.5879034, -42.01016 ] + }, + { + "time": 1.6, + "value": -42.00538, + "curve": [ 1.6398517, -41.98963, 1.7533908, -25.24106 ] + }, + { + "time": 1.7666667, + "value": -18.253075, + "curve": [ 1.778062, -12.25486, 1.820261, 14.243736 ] + }, + { + "time": 1.9, + "value": 14.817352, + "curve": [ 1.9286662, 14.807444, 2.040982, -14.29617 ] + }, + { + "time": 2.0666666, + "value": -14.14857, + "curve": [ 2.095677, -13.981855, 2.1099014, -10.932808 ] + }, + { "time": 2.1333334, "value": -10.887794 } + ] + }, + "tongue1": { + "rotate": [ + { + "value": 16.24782, + "curve": [ 0.05, 16.24782, 0.19731694, 16.23678 ] + }, + { + "time": 0.2, + "value": 15.93148, + "curve": [ 0.2439535, 10.930195, 0.329788, -0.6917724 ] + }, + { + "time": 0.3666667, + "value": -0.5769348, + "curve": [ 0.4322018, -0.3728638, 0.4807069, 1.3966093 ] + }, + { + "time": 0.5333333, + "value": 5.312149, + "curve": [ 0.5405704, 5.850595, 0.5695072, 25.10503 ] + }, + { + "time": 0.6, + "value": 28.19681, + "curve": [ 0.611314, 29.32109, 0.6226902, 14.346 ] + }, + { + "time": 0.6333333, + "value": 15.321213, + "curve": [ 0.6605025, 17.810677, 0.6833333, 18.18604 ] + }, + { + "time": 0.7, + "value": 18.18604, + "curve": [ 0.7333333, 18.18604, 0.8, 13.377785 ] + }, + { + "time": 0.8333333, + "value": 13.377785, + "curve": [ 0.8666667, 13.377785, 0.9374908, 14.838348 ] + }, + { + "time": 0.9666666, + "value": 15.714684, + "curve": [ 1.0189596, 17.28539, 1.044851, 19.006424 ] + }, + { + "time": 1.0666667, + "value": 20.57366, + "curve": [ 1.0844607, 21.852005, 1.148314, 23.511024 ] + }, + { + "time": 1.1666666, + "value": 23.291855, + "curve": [ 1.2196977, 22.65854, 1.2416667, 16.58261 ] + }, + { + "time": 1.2666667, + "value": 16.58261, + "curve": [ 1.2833333, 16.58261, 1.3274583, 19.59871 ] + }, + { + "time": 1.3333334, + "value": 19.857155, + "curve": [ 1.3760072, 21.73437, 1.4083333, 22.43627 ] + }, + { + "time": 1.4333333, + "value": 22.43627, + "curve": [ 1.4583334, 22.43627, 1.4809203, 19.05636 ] + }, + { + "time": 1.5333333, + "value": 19.01325, + "curve": [ 1.574961, 18.979027, 1.6555326, 22.901566 ] + }, + { + "time": 1.7, + "value": 22.93474, + "curve": [ 1.7762256, 22.99161, 1.875, 16.24782 ] + }, + { "time": 1.9333333, "value": 16.24782 } + ], + "translate": [ + { "x": -22.370605, "y": 13.319153 } + ], + "scale": [ + { + "time": 0.2, + "curve": [ 0.3, 1, 0.5, 1.16, 0.3, 1, 0.5, 1 ] + }, + { + "time": 0.6, + "x": 1.16, + "curve": [ 0.875, 1.16, 1.425, 1, 0.875, 1, 1.425, 1 ] + }, + { "time": 1.7 } + ] + }, + "tongue2": { + "rotate": [ + { + "curve": [ 0.04166667, 0, 0.19166666, -3.1849895 ] + }, + { + "time": 0.2, + "value": -3.1849895, + "curve": [ 0.21666667, -3.1849895, 0.25, 52.29479 ] + }, + { + "time": 0.2666667, + "value": 52.29479, + "curve": [ 0.3333333, 52.29479, 0.5064866, 33.60704 ] + }, + { + "time": 0.5333333, + "value": 17.71193, + "curve": [ 0.5453267, 10.61101, 0.5746622, -38.38264 ] + }, + { + "time": 0.6, + "value": -63.26466, + "curve": [ 0.61311, -75.70568, 0.625, -74.25346 ] + }, + { + "time": 0.6333333, + "value": -74.25346, + "curve": [ 0.65, -74.25346, 0.6663462, -50.56634 ] + }, + { + "time": 0.7, + "value": -42.92049, + "curve": [ 0.71541, -39.41947, 0.8025017, -33.618 ] + }, + { + "time": 0.8333333, + "value": -32.9709, + "curve": [ 0.8835494, -31.91696, 0.933775, -31.56175 ] + }, + { + "time": 0.9666666, + "value": -31.285515, + "curve": [ 1.012301, -30.902264, 1.0505092, -29.9249 ] + }, + { + "time": 1.0666667, + "value": -28.950514, + "curve": [ 1.1047976, -26.65101, 1.1416667, -20.34272 ] + }, + { + "time": 1.1666666, + "value": -20.34272, + "curve": [ 1.1916667, -20.34272, 1.2416667, -24.25518 ] + }, + { + "time": 1.2666667, + "value": -24.25518, + "curve": [ 1.2833333, -24.25518, 1.3166667, -19.867897 ] + }, + { + "time": 1.3333334, + "value": -19.867897, + "curve": [ 1.3583333, -19.867897, 1.4278275, -21.71007 ] + }, + { + "time": 1.4333333, + "value": -22.109135, + "curve": [ 1.4806095, -25.535713, 1.5083333, -36.17261 ] + }, + { + "time": 1.5333333, + "value": -36.17261, + "curve": [ 1.575, -36.17261, 1.6484838, -17.577244 ] + }, + { + "time": 1.7, + "value": -13.317122, + "curve": [ 1.7479416, -9.352608, 1.8611164, -3.444435 ] + }, + { + "time": 1.9333333, + "value": -1.5409312, + "curve": [ 1.9748166, -0.4475107, 2.083333, 0 ] + }, + { "time": 2.1333334 } + ], + "translate": [ + { + "time": 0.2, + "curve": [ 0.2833333, 0, 0.423484, -0.5401063, 0.2833333, 0, 0.43526375, 0.9640003 ] + }, + { + "time": 0.5333333, + "x": 6.19, + "y": 1.3931373, + "curve": [ 0.5673533, 8.274288, 0.6325031, 45.2633, 0.555443, 1.4898853, 0.619764, 1.67 ] + }, + { + "time": 0.6666667, + "x": 57.07409, + "y": 1.67, + "curve": [ 0.7060151, 70.67735, 0.7596168, 94.13946, 0.729206, 1.67, 0.7641628, 1.67 ] + }, + { + "time": 0.8333333, + "x": 94.08713, + "y": 1.67, + "curve": [ 1.2097106, 93.82004, 1.097769, 7.053627, 1.1950715, 1.67, 1.6756943, 1.67 ] + }, + { + "time": 1.9333333, + "x": 6.189998, + "y": 1.67, + "curve": [ 1.9833333, 6.13832, 2.083333, 0, 1.9833333, 1.67, 2.083333, 0 ] + }, + { "time": 2.1333334 } + ] + }, + "tongue3": { + "rotate": [ + { + "curve": [ 0.04166667, 0, 0.14152163, -1.2927217 ] + }, + { + "time": 0.2, + "value": 4.21148, + "curve": [ 0.2093745, 5.093838, 0.25, 52.29478 ] + }, + { + "time": 0.2666667, + "value": 52.29478, + "curve": [ 0.3333333, 52.29478, 0.49132445, 43.05017 ] + }, + { + "time": 0.5333333, + "value": 17.71193, + "curve": [ 0.5511885, 6.942348, 0.5773143, -41.43917 ] + }, + { + "time": 0.6, + "value": -50.21929, + "curve": [ 0.6128715, -55.01668, 0.6245, -24.1038 ] + }, + { + "time": 0.6333333, + "value": -24.1038, + "curve": [ 0.65, -24.1038, 0.6833333, 52.66652 ] + }, + { + "time": 0.7, + "value": 52.66652, + "curve": [ 0.7333333, 52.66652, 0.8, -50.9084 ] + }, + { + "time": 0.8333333, + "value": -50.9084, + "curve": [ 0.8666667, -50.9084, 0.9333333, 36.54382 ] + }, + { + "time": 0.9666666, + "value": 36.54382, + "curve": [ 0.9916667, 36.54382, 1.0416666, -47.3406 ] + }, + { + "time": 1.0666667, + "value": -47.3406, + "curve": [ 1.0916667, -47.3406, 1.1416667, 5.527171 ] + }, + { + "time": 1.1666666, + "value": 5.527171, + "curve": [ 1.1916667, 5.527171, 1.2417243, -19.24623 ] + }, + { + "time": 1.2666667, + "value": -19.93944, + "curve": [ 1.298459, -20.823017, 1.31335, -13.204636 ] + }, + { + "time": 1.3333334, + "value": -2.025341, + "curve": [ 1.368133, 17.442665, 1.4083333, 54.04343 ] + }, + { + "time": 1.4333333, + "value": 54.04343, + "curve": [ 1.4583334, 54.04343, 1.5187422, 43.78913 ] + }, + { + "time": 1.5333333, + "value": 35.48856, + "curve": [ 1.5814824, 8.097644, 1.6583333, -36.24051 ] + }, + { + "time": 1.7, + "value": -36.24051, + "curve": [ 1.7583333, -36.24051, 1.875, 13.613646 ] + }, + { + "time": 1.9333333, + "value": 13.613646, + "curve": [ 1.9833333, 13.613646, 2.083333, 0 ] + }, + { "time": 2.1333334 } + ], + "translate": [ + { + "time": 0.2, + "curve": [ 0.2833333, 0, 0.45, 11.48, 0.2833333, 0, 0.45, 3.7 ] + }, + { "time": 0.5333333, "x": 11.48, "y": 3.7 }, + { "time": 2.1333334 } + ] + }, + "torso1": { + "rotate": [ + { + "curve": [ 0.02902778, 0, 0.03566468, -1.3995876 ] + }, + { + "time": 0.1, + "value": -1.4109492, + "curve": [ 0.142555, -1.4184647, 0.2874364, 10.795073 ] + }, + { + "time": 0.3333333, + "value": 10.72547, + "curve": [ 0.478584, 10.5129, 0.5312275, 6.789645 ] + }, + { + "time": 0.6, + "curve": [ 0.6242153, -2.585026, 0.6792565, -4.751965 ] + }, + { + "time": 0.7, + "value": -4.898565, + "curve": [ 0.722874, -5.060221, 0.75, -2.596887 ] + }, + { + "time": 0.7666666, + "value": -2.596887, + "curve": [ 0.7833333, -2.596887, 0.8141343, -4.719164 ] + }, + { + "time": 0.8333333, + "value": -4.699416, + "curve": [ 0.857571, -4.674486, 0.8573818, -1.2003026 ] + }, + { + "time": 0.9, + "value": -1.1323304, + "curve": [ 0.9264381, -1.0901637, 1, -3.267856 ] + }, + { + "time": 1.0333333, + "value": -3.267856, + "curve": [ 1.061183, -3.267856, 1.1000997, 0.2480283 ] + }, + { + "time": 1.1333333, + "value": 0.23838186, + "curve": [ 1.1791456, 0.2250843, 1.1988786, -1.3642936 ] + }, + { + "time": 1.2333333, + "value": -1.3622813, + "curve": [ 1.294822, -1.3586903, 1.2897446, 1.4917893 ] + }, + { + "time": 1.3666667, + "value": 1.4711127, + "curve": [ 1.4093144, 1.459649, 1.464303, -1.366084 ] + }, + { + "time": 1.5, + "value": -1.360941, + "curve": [ 1.6066422, -1.3003783, 1.7543604, 1.3907976 ] + }, + { + "time": 1.9666667, + "value": 1.3565898, + "curve": [ 2.0083334, 1.3565898, 2.091667, 0 ] + }, + { "time": 2.1333334 } + ] + }, + "torso2": { + "rotate": [ + { + "curve": [ 0.09296644, 0.5980453, 0.15008903, 1.5964775 ] + }, + { + "time": 0.2, + "value": 1.607876, + "curve": [ 0.2903165, 1.628498, 0.346398, -1.8958054 ] + }, + { + "time": 0.3666667, + "value": -3.525261, + "curve": [ 0.3887001, -5.296585, 0.5075546, -20.035727 ] + }, + { + "time": 0.5333333, + "value": -22.31965, + "curve": [ 0.5591856, -24.61009, 0.5960847, -27.56911 ] + }, + { + "time": 0.7, + "value": -27.53514, + "curve": [ 0.7584508, -27.528994, 0.7544388, -20.484827 ] + }, + { + "time": 0.8, + "value": -20.35981, + "curve": [ 0.8310718, -20.27455, 0.8507162, -21.291487 ] + }, + { + "time": 0.9, + "value": -21.25256, + "curve": [ 0.9631203, -21.2027, 1.021381, -14.888342 ] + }, + { + "time": 1.0666667, + "value": -14.924967, + "curve": [ 1.1410786, -14.985147, 1.167264, -18.094925 ] + }, + { + "time": 1.2666667, + "value": -18.02506, + "curve": [ 1.3846258, -17.942156, 1.6047806, -5.075062 ] + }, + { + "time": 1.6666666, + "value": -5.020702, + "curve": [ 1.7139707, -4.979152, 1.7511934, -7.533794 ] + }, + { + "time": 1.8, + "value": -7.522522, + "curve": [ 1.9610817, -6.978143, 2.05, -0.5360762 ] + }, + { "time": 2.1333334 } + ], + "translate": [ + { + "curve": [ 0.05, 0, 0.1674811, 10.499336, 0.05, 0, 0.15, 15.962555 ] + }, + { + "time": 0.2, + "x": 12.61811, + "y": 15.962555, + "curve": [ 0.2643063, 16.80802, 0.35, 19.15876, 0.25, 15.962555, 0.3718661, -12.74114 ] + }, + { + "time": 0.4, + "x": 19.15876, + "y": -15.960267, + "curve": [ 0.45, 19.15876, 0.5649978, 14.265984, 0.46044815, -22.876825, 0.55, -27.558535 ] + }, + { + "time": 0.6, + "x": 13.67115, + "y": -27.558535, + "curve": [ 0.655033, 12.735908, 0.7070002, 12.17092, 0.6416666, -27.558535, 0.7027367, -24.234194 ] + }, + { + "time": 0.7666666, + "x": 12.05494, + "y": -14.93271, + "curve": [ 0.7979205, 11.99418, 0.817345, 12.593483, 0.8109325, -8.492263, 0.8166666, 0.8691613 ] + }, + { + "time": 0.8333333, + "x": 13.399864, + "y": 0.8691613, + "curve": [ 0.8666646, 15.08094, 0.8771947, 16.880226, 0.8583333, 0.8691613, 0.9083333, -11.58551 ] + }, + { + "time": 0.9333333, + "x": 18.37174, + "y": -11.58551, + "curve": [ 0.9568554, 18.99668, 1.0114112, 19.963844, 0.9583333, -11.58551, 1.0083333, -1.9014903 ] + }, + { + "time": 1.0333333, + "x": 20.164146, + "y": -1.9014903, + "curve": [ 1.072327, 20.52044, 1.1615318, 20.9477, 1.075, -1.9014903, 1.1583333, -5.890229 ] + }, + { + "time": 1.2, + "x": 21.21438, + "y": -5.890229, + "curve": [ 1.244967, 21.526115, 1.375, 25.98818, 1.2583333, -5.890229, 1.375, 3.452758 ] + }, + { + "time": 1.4333333, + "x": 25.98818, + "y": 3.452758, + "curve": [ 1.5, 25.98818, 1.6454855, 25.801323, 1.5, 3.452758, 1.6462573, 1.310396 ] + }, + { + "time": 1.7, + "x": 25.17965, + "y": 0.9491566, + "curve": [ 1.7835643, 24.22669, 2.025, 0, 1.8160793, 0.16891345, 2.025, 0 ] + }, + { "time": 2.1333334 } + ], + "scale": [ + { + "time": 0.5333333, + "curve": [ 0.55, 1, 0.6569302, 1.0902072, 0.55, 1, 0.6833333, 0.9656651 ] + }, + { + "time": 0.7, + "x": 1.0933114, + "y": 0.9656651, + "curve": [ 0.772071, 1.0908703, 0.8, 0.9875225, 0.7736851, 0.9681063, 0.8, 1.0428554 ] + }, + { + "time": 0.8333333, + "x": 0.9875225, + "y": 1.0428554, + "curve": [ 0.8666667, 0.9875225, 0.9826021, 1.001655, 0.8666667, 1.0428554, 0.9913633, 0.9991726 ] + }, + { "time": 1.1333333 } + ] + } + }, + "ik": { + "front-leg-ik": [ + { "softness": 73.5, "bendPositive": false } + ], + "spineboy-back-arm-ik": [ + { "softness": 15.4, "stretch": true } + ], + "spineboy-front-arm-ik": [ + { "softness": 15, "stretch": true } + ], + "spineboy-front-leg-ik": [ + { "softness": 19.9, "bendPositive": false } + ] + }, + "drawOrder": [ + { + "offsets": [ + { "slot": "raptor-horn", "offset": 4 }, + { "slot": "front-thigh", "offset": -5 } + ] + } + ] + }, + "walk": { + "slots": { + "raptor-jaw-inside": { + "rgba": [ + { "color": "646464ff" }, + { "time": 0.6333333, "color": "808080ff" }, + { "time": 1.2666667, "color": "646464ff" } + ] + }, + "tail-shadow": { + "rgba": [ + { + "color": "00000000", + "curve": [ 0.15833333, 0, 0.4416667, 0, 0.15833333, 0, 0.4416667, 0, 0.15833333, 0, 0.4416667, 0, 0.15833333, 0, 0.4411699, 0.2010742 ] + }, + { + "time": 0.6, + "color": "00000033", + "curve": [ 0.6333333, 0, 1.075, 0, 0.6333333, 0, 1.075, 0, 0.6333333, 0, 1.075, 0, 0.805408, 0.19957875, 1.075, 0 ] + }, + { "time": 1.2333333, "color": "00000000" } + ], + "attachment": [ + { "name": "raptor-tail-shadow" } + ] + } + }, + "bones": { + "back-arm1": { + "rotate": [ + { + "value": 36.77227, + "curve": [ 0.2751137, 36.57336, 0.4642867, 23.84649 ] + }, + { + "time": 0.6333333, + "value": 23.85933, + "curve": [ 0.8913822, 23.90906, 1.0346487, 36.67918 ] + }, + { "time": 1.2666667, "value": 36.77227 } + ], + "translate": [ + { + "x": -20.37006, + "y": -12.602356, + "curve": [ 0.09166667, -20.37006, 0.5666666, -30.845356, 0.2495509, -12.158897, 0.5083181, -9.489815 ] + }, + { + "time": 0.6333333, + "x": -30.845356, + "y": -9.15722, + "curve": [ 0.725, -30.845356, 1.142931, -20.5053, 0.7936452, -9.15722, 1.085896, -12.804863 ] + }, + { "time": 1.2666667, "x": -20.37006, "y": -12.602356 } + ] + }, + "back-arm2": { + "rotate": [ + { + "value": -28.1269, + "curve": [ 0.31985295, -28.065, 0.43374065, 0.4225082 ] + }, + { + "time": 0.6333333, + "value": 0.3060379, + "curve": [ 0.9411928, 0.12635803, 0.9680537, -27.94835 ] + }, + { "time": 1.2666667, "value": -28.1269 } + ] + }, + "back-foot-target": { + "rotate": [ + { + "value": -80.7545, + "curve": [ 0.197792, -90.07873, 0.22761606, -92.20424 ] + }, + { + "time": 0.3666667, + "value": -92.33972, + "curve": [ 0.4201446, -92.39182, 0.5166666, -45.34135 ] + }, + { + "time": 0.5666666, + "value": -45.34135, + "curve": [ 0.6548621, -45.71139, 1.0972697, -71.90266 ] + }, + { "time": 1.2666667, "value": -80.7545 } + ], + "translate": [ + { + "x": -187.60617, + "y": -15.47, + "curve": [ 0.0494824, -223.6526, 0.09322976, -245.68074, 0.09157905, -17.15011, 0.09478014, -1.0526447 ] + }, + { + "time": 0.13333334, + "x": -245.95016, + "y": 31.30358, + "curve": [ 0.1660778, -245.37894, 0.3148446, 6.478641, 0.17254086, 64.20898, 0.2277822, 125.6373 ] + }, + { + "time": 0.3666667, + "x": 86.50425, + "y": 124.4033, + "curve": [ 0.3819116, 110.04597, 0.5175013, 358.2166, 0.4621489, 123.16925, 0.5493082, 44.44737 ] + }, + { + "time": 0.5666666, + "x": 361.9186, + "y": 29.90748, + "curve": [ 0.5833333, 361.9186, 0.5794058, 373.34015, 0.597161, 4.36466, 0.602749, 0.794281 ] + }, + { "time": 0.6333333, "x": 316.7191, "y": -26.42 }, + { "time": 1.2666667, "x": -187.60617, "y": -15.47 } + ] + }, + "back-foot2": { + "rotate": [ + { + "curve": [ 0.01933333, 0, 0.04569689, 0.6839003 ] + }, + { + "time": 0.06666667, + "value": -2.419204, + "curve": [ 0.12680645, -11.889185, 0.157155, -75.22167 ] + }, + { + "time": 0.3, + "value": -74.34938, + "curve": [ 0.3715805, -74.40403, 0.4402023, -55.44566 ] + }, + { + "time": 0.4666667, + "value": -38.50927, + "curve": [ 0.4882117, -24.721115, 0.5115831, 30.13671 ] + }, + { + "time": 0.6, + "value": 30.17, + "curve": [ 0.6305232, 30.181494, 0.649115, 17.16436 ] + }, + { + "time": 0.6666667, + "value": 2.0999985, + "curve": [ 0.7583333, 2.0999985, 1.2, 0 ] + }, + { "time": 1.2666667 } + ] + }, + "back-hand": { + "rotate": [ + { + "value": -26.17079, + "curve": [ 0.07692923, -26.22664, 0.16470756, -15.076256 ] + }, + { + "time": 0.2666667, + "value": -15.067184, + "curve": [ 0.3481869, -15.05993, 0.5140942, -27.32135 ] + }, + { + "time": 0.6333333, + "value": -27.36962, + "curve": [ 0.7447146, -27.36962, 0.8441372, -14.986847 ] + }, + { + "time": 1, + "value": -15.022926, + "curve": [ 1.116652, -15.049934, 1.1043887, -26.339195 ] + }, + { "time": 1.2666667, "value": -26.17079 } + ] + }, + "back-leg-target": { + "rotate": [ + { "value": 2.3937035 } + ], + "translate": [ + { + "x": -24.542854, + "y": 15.120003, + "curve": [ 0.1353987, -24.48733, 0.4168997, -40.42364, 0.1205001, 14.560837, 0.3273902, -140.88464 ] + }, + { + "time": 0.5666666, + "x": -40.21, + "y": -141.76224, + "curve": [ 0.7051599, -40.01246, 1.1466547, -24.388237, 0.939121, -143.1283, 1.1215413, 15.120003 ] + }, + { "time": 1.2666667, "x": -24.542854, "y": 15.120003 } + ] + }, + "bone": { + "rotate": [ + { + "value": 1.999298, + "curve": [ 0.031073196, 3.384813, 0.07503068, 4.994367 ] + }, + { + "time": 0.1, + "value": 5.00645, + "curve": [ 0.19372344, 5.05181, 0.3982888, -0.8754844 ] + }, + { + "time": 0.4666667, + "value": -0.8263778, + "curve": [ 0.5376015, -0.7754288, 0.6714164, 4.88233 ] + }, + { + "time": 0.7333333, + "value": 4.88059, + "curve": [ 0.8463365, 4.877414, 1.031504, -0.5746498 ] + }, + { + "time": 1.1, + "value": -0.5746498, + "curve": [ 1.1416665, -0.5746498, 1.20122, 0.03919983 ] + }, + { "time": 1.2666667, "value": 1.999298 } + ] + }, + "bone2": { + "rotate": [ + { + "curve": [ 0.01860466, -8.93029, 0.06168555, -21.67378 ] + }, + { + "time": 0.13333334, + "value": -21.67378, + "curve": [ 0.22966486, -21.67378, 0.345699, 21.38647 ] + }, + { + "time": 0.4666667, + "value": 21.3175, + "curve": [ 0.6390813, 21.21919, 0.6260325, -21.469444 ] + }, + { + "time": 0.7666666, + "value": -21.67378, + "curve": [ 0.8629582, -21.813686, 1.0129615, 21.010893 ] + }, + { + "time": 1.1, + "value": 21.3175, + "curve": [ 1.2040967, 21.68421, 1.2447762, 9.93652 ] + }, + { "time": 1.2666667 } + ] + }, + "bone3": { + "rotate": [ + { + "curve": [ 0.08333333, 0, 0.25, 11.453667 ] + }, + { + "time": 0.3333333, + "value": 11.453667, + "curve": [ 0.4074411, 11.393172, 0.547011, 0.263032 ] + }, + { + "time": 0.6333333, + "value": 0.1823721, + "curve": [ 0.7083333, 0.1823721, 0.8583333, 11.290013 ] + }, + { + "time": 0.9333333, + "value": 11.290013, + "curve": [ 1.0166667, 11.290013, 1.1833333, 0 ] + }, + { "time": 1.2666667 } + ] + }, + "bone4": { + "rotate": [ + { + "curve": [ 0, -6.150852, 0.04389891, -10.864002 ] + }, + { + "time": 0.1, + "value": -11.057623, + "curve": [ 0.16141137, -11.26957, 0.266952, 10.58989 ] + }, + { + "time": 0.3666667, + "value": 10.49433, + "curve": [ 0.5537008, 10.315102, 0.6026342, -10.610802 ] + }, + { + "time": 0.7333333, + "value": -10.980152, + "curve": [ 0.7818655, -10.933067, 0.9490458, 10.300083 ] + }, + { + "time": 1.0333333, + "value": 10.414295, + "curve": [ 1.1438903, 10.564106, 1.2548946, 4.549141 ] + }, + { "time": 1.2666667 } + ] + }, + "bone5": { + "rotate": [ + { + "value": 6.228813, + "curve": [ 0.04166667, 3.4108195, 0.10526004, 3.0240364 ] + }, + { + "time": 0.16666667, + "value": 3.0313225, + "curve": [ 0.2218738, 3.037876, 0.3339632, 11.982197 ] + }, + { + "time": 0.4333333, + "value": 11.933948, + "curve": [ 0.560912, 11.871998, 0.661861, 3.233929 ] + }, + { + "time": 0.8, + "value": 3.21698, + "curve": [ 0.8488318, 3.210987, 1.0157125, 11.919857 ] + }, + { + "time": 1.1, + "value": 12.03407, + "curve": [ 1.1622804, 12.118462, 1.2226174, 9.20795 ] + }, + { "time": 1.2666667, "value": 6.228813 } + ] + }, + "front-arm": { + "translate": [ + { "y": -5.279691 }, + { "time": 0.13333334, "x": -3.608452, "y": -8.364366 }, + { "time": 0.3666667, "x": -8.0522, "y": -5.529993 }, + { "time": 0.6333333 }, + { "time": 1, "x": -7.446411, "y": -1.9905353 }, + { "time": 1.2666667, "y": -5.279691 } + ] + }, + "front-arm1": { + "rotate": [ + { + "value": -348.3543, + "curve": [ 0.3052788, -348.3922, 0.451661, -330.099 ] + }, + { + "time": 0.6333333, + "value": -329.4464, + "curve": [ 0.9265742, -329.6639, 0.991685, -347.9243 ] + }, + { "time": 1.2666667, "value": -348.3543 } + ], + "translate": [ + { + "x": 8.892433, + "y": 9.557137, + "curve": [ 0.06524852, 11.506714, 0.2761018, 24.327354, 0.11106679, 9.616207, 0.3016772, 1.6694565 ] + }, + { + "time": 0.3666667, + "x": 24.1, + "y": -1.4700012, + "curve": [ 0.4792544, 23.817375, 0.5445565, 23.42357, 0.4238247, -4.231148, 0.5334853, -7.490936 ] + }, + { + "time": 0.6333333, + "x": 20.65, + "y": -7.550003, + "curve": [ 0.7235996, 17.82991, 0.9083333, 4.354172, 0.7249648, -7.604202, 0.9025225, -1.55587 ] + }, + { + "time": 1, + "x": 4.354172, + "y": 2.308952, + "curve": [ 1.0583333, 4.354172, 1.196691, 6.136856, 1.0522636, 4.381111, 1.169647, 9.439003 ] + }, + { "time": 1.2666667, "x": 8.892433, "y": 9.557137 } + ] + }, + "front-arm2": { + "rotate": [ + { + "value": 20.464874, + "curve": [ 0.09166667, 20.464874, 0.2901846, 10.443047 ] + }, + { + "time": 0.3666667, + "value": 4.663872, + "curve": [ 0.4926862, -4.85846, 0.5396588, -10.999512 ] + }, + { + "time": 0.6333333, + "value": -11.137123, + "curve": [ 0.724848, -11.27156, 0.933885, 1.2197342 ] + }, + { + "time": 1, + "value": 6.770675, + "curve": [ 1.0417145, 10.272995, 1.150302, 20.25846 ] + }, + { "time": 1.2666667, "value": 20.464874 } + ] + }, + "front-bracer": { + "rotate": [ + { "value": 52.98509 } + ] + }, + "front-foot-target": { + "rotate": [ + { + "curve": [ 0.09166667, 0, 0.2698408, -32.52907 ] + }, + { + "time": 0.3666667, + "value": -51.26, + "curve": [ 0.41139075, -59.91185, 0.5585254, -84.03918 ] + }, + { + "time": 0.6333333, + "value": -84.28566, + "curve": [ 1.183196, -83.7927, 1.1289008, 0.2464752 ] + }, + { "time": 1.2666667 } + ], + "translate": [ + { "x": 381.9205, "y": 36.5 }, + { "time": 0.6333333, "x": -134.71953, "y": 37.42 }, + { + "time": 0.7, + "x": -171.194, + "y": 126.0673, + "curve": [ 0.7333333, -171.194, 0.7978563, -142.13623, 0.7404295, 182.6274, 0.8, 238.01 ] + }, + { + "time": 0.8333333, + "x": -70.40814, + "y": 238.01, + "curve": [ 0.8453391, -46.1346, 1.125, 418.073, 0.9831165, 235.61917, 1.129386, 141.4286 ] + }, + { + "time": 1.1666666, + "x": 418.073, + "y": 115.17888, + "curve": [ 1.1916667, 418.073, 1.230794, 404.2506, 1.2024548, 89.98013, 1.2004335, 84.9607 ] + }, + { "time": 1.2666667, "x": 381.9205, "y": 36.5 } + ] + }, + "front-foot2": { + "rotate": [ + { "value": 36.9 }, + { "time": 0.06666667, "value": 7.880001 }, + { "time": 0.13333334, "value": 4.67 }, + { + "time": 0.5, + "value": 6.807376, + "curve": [ 0.5716704, 7.036451, 0.6047582, 6.969624 ] + }, + { + "time": 0.6333333, + "value": 6.253876, + "curve": [ 0.6857226, 4.192831, 0.708209, -105.8836 ] + }, + { + "time": 0.8, + "value": -104.63252, + "curve": [ 0.9552174, -102.90247, 1.1883248, 34.6422 ] + }, + { "time": 1.2666667, "value": 36.9 } + ] + }, + "front-foot3": { + "rotate": [ + { "value": -1.65 }, + { + "time": 0.1, + "value": -3.94, + "curve": [ 0.15833333, -3.94, 0.3083333, -3.82 ] + }, + { + "time": 0.3666667, + "value": -3.82, + "curve": [ 0.4333333, -3.82, 0.5113345, -6.363767 ] + }, + { + "time": 0.6333333, + "value": -6.61921, + "curve": [ 0.7008976, -7.046915, 0.6874541, 24.835247 ] + }, + { + "time": 0.7333333, + "value": 25.102686, + "curve": [ 0.7664444, 25.102686, 0.820545, -23.090506 ] + }, + { + "time": 0.8666667, + "value": -22.95808, + "curve": [ 0.9753489, -22.64603, 1.1394945, 10.93 ] + }, + { + "time": 1.2, + "value": 10.93, + "curve": [ 1.2166667, 10.93, 1.2666667, 5.946402 ] + }, + { "time": 1.2666667, "value": -1.6499994 } + ] + }, + "front-hand": { + "rotate": [ + { + "value": -60.69881, + "curve": [ 0.3177126, -60.67625, 0.4418697, -5.997547 ] + }, + { + "time": 0.6333333, + "value": -6.016456, + "curve": [ 0.8469497, -6.037544, 1.0756748, -60.23875 ] + }, + { "time": 1.2666667, "value": -60.69881 } + ] + }, + "front-hand2": { + "rotate": [ + { + "curve": [ 0.09166667, 0, 0.275, 15.623224 ] + }, + { + "time": 0.3666667, + "value": 15.623224, + "curve": [ 0.4333333, 15.623224, 0.5666666, 0 ] + }, + { + "time": 0.6333333, + "curve": [ 0.7333333, 0, 0.9333333, 15.623224 ] + }, + { + "time": 1.0333333, + "value": 15.623224, + "curve": [ 1.0916667, 15.623224, 1.2083334, 0 ] + }, + { "time": 1.2666667 } + ] + }, + "front-leg-target": { + "translate": [ + { + "x": -18.050003, + "y": -2.8899994, + "curve": [ 0.13470036, -18.70137, 0.2855579, -40.73442, 0.1714735, -2.563446, 0.4156601, -51.2885 ] + }, + { + "time": 0.5333333, + "x": -42.2, + "y": -52.26814, + "curve": [ 0.5583333, -42.2, 0.5684561, -44.03053, 0.5583333, -52.26814, 0.6083333, -22.52066 ] + }, + { + "time": 0.6333333, + "x": -36.87021, + "y": -22.52066, + "curve": [ 0.7023075, -29.257713, 0.7833333, -26.3168, 0.6833333, -22.52066, 0.7633683, -44.02504 ] + }, + { + "time": 0.8333333, + "x": -26.3168, + "y": -72.36592, + "curve": [ 0.875, -26.3168, 0.9385923, -42.97911, 0.854641, -80.9971, 0.9160584, -109.88352 ] + }, + { + "time": 1, + "x": -42.64162, + "y": -109.9932, + "curve": [ 1.1756015, -42.56187, 1.220981, -18.421425, 1.1800725, -110.24288, 1.2170283, -3.3893585 ] + }, + { "time": 1.2666667, "x": -18.050003, "y": -2.8899994 } + ] + }, + "front-leg1": { + "translate": [ + { + "curve": [ 0.01666667, 0, 0.29999775, 0.007919312, 0.01666667, 0, 0.2927009, 13.19618 ] + }, + { + "time": 0.3666667, + "x": -0.2714291, + "y": 13.897142, + "curve": [ 0.4596978, -0.6612377, 0.5477885, -1.216528, 0.4404044, 14.595942, 0.5700379, 15.769645 ] + }, + { + "time": 0.6333333, + "x": -2.2484016, + "y": 16.951767, + "curve": [ 0.7050308, -3.113245, 0.7833333, -4.75, 0.6974753, 18.149706, 0.7833333, 31.94 ] + }, + { + "time": 0.8333333, + "x": -4.75, + "y": 31.94, + "curve": [ 0.875, -4.75, 0.9632657, -4.498554, 0.875, 31.94, 0.9853957, 27.755686 ] + }, + { + "time": 1, + "x": -3.799999, + "y": 25.551996, + "curve": [ 1.0702482, -2.464119, 1.2, 0, 1.0330793, 20.56057, 1.2, 0 ] + }, + { "time": 1.2666667 } + ] + }, + "gun": { + "rotate": [ + { + "value": -11.68, + "curve": [ 0.02970148, -14.01435, 0.17744137, -31.1601 ] + }, + { + "time": 0.3, + "value": -31.1601, + "curve": [ 0.3678933, -31.1601, 0.4750371, -9.464455 ] + }, + { + "time": 0.5333333, + "value": -9.582458, + "curve": [ 0.736516, -9.99376, 0.7699748, -31.38497 ] + }, + { + "time": 0.9333333, + "value": -31.11078, + "curve": [ 0.9916667, -31.11078, 1.1083333, -9.582458 ] + }, + { + "time": 1.1666666, + "value": -9.582458, + "curve": [ 1.1916667, -9.582458, 1.236022, -9.68399 ] + }, + { "time": 1.2666667, "value": -11.68 } + ], + "translate": [ + { + "curve": [ 0.04186909, -0.3429089, 0.09751463, -0.4470978, 0.03866152, -4.021851, 0.09751463, -6.859924 ] + }, + { + "time": 0.13333334, + "x": -0.4470978, + "y": -6.859924, + "curve": [ 0.1944011, -0.4470978, 0.2561737, 2.356039, 0.1944011, -6.859924, 0.244508, 6.35043 ] + }, + { + "time": 0.3333333, + "x": 2.353485, + "y": 6.160433, + "curve": [ 0.4393211, 2.3499775, 0.5788303, 0.45575905, 0.4178534, 5.979644, 0.6001606, 2.061847 ] + }, + { + "time": 0.6333333, + "curve": [ 0.6681897, -0.2914734, 0.730848, -0.4470978, 0.6788887, -2.8315005, 0.730848, -6.859924 ] + }, + { + "time": 0.7666666, + "x": -0.4470978, + "y": -6.859924, + "curve": [ 0.8277344, -0.4470978, 0.8895222, 2.34824, 0.8277344, -6.859924, 0.8992217, 6.266166 ] + }, + { + "time": 0.9666666, + "x": 2.353485, + "y": 6.160433, + "curve": [ 1.0532614, 2.359371, 1.213408, 0.5143623, 1.0512458, 6.027837, 1.226406, 2.27905 ] + }, + { "time": 1.2666667 } + ] + }, + "head": { + "rotate": [ + { + "value": 21.274855, + "curve": [ 0.12058244, 21.364525, 0.1184093, 5.37204 ] + }, + { + "time": 0.3333333, + "value": 5.735791, + "curve": [ 0.4433765, 5.922034, 0.5787602, 20.65485 ] + }, + { + "time": 0.6333333, + "value": 20.70968, + "curve": [ 0.7611931, 20.68365, 0.7996347, 6.015712 ] + }, + { + "time": 1.0333333, + "value": 5.75913, + "curve": [ 1.1011235, 5.804011, 1.2083334, 21.574686 ] + }, + { "time": 1.2666667, "value": 21.274855 } + ], + "translate": [ + { + "x": 9.884033, + "y": -21.52525, + "curve": [ 0.06566875, 2.903137, 0.1512837, -2.115349, 0.05001664, -24.494816, 0.1388225, -28.7171 ] + }, + { + "time": 0.2, + "x": -1.6820602, + "y": -28.935524, + "curve": [ 0.2811785, -0.9600367, 0.3920217, 24.71124, 0.27777705, -29.213217, 0.3704268, -7.392608 ] + }, + { + "time": 0.4666667, + "x": 24.75985, + "y": -6.792869, + "curve": [ 0.645338, 24.69495, 0.667969, -1.209282, 0.6218952, -7.063366, 0.5969664, -30.919186 ] + }, + { + "time": 0.8, + "x": -1.4664993, + "y": -30.779877, + "curve": [ 0.8897908, -1.6414337, 0.9788804, 25.365837, 0.8773802, -30.73315, 0.9698719, -7.00832 ] + }, + { + "time": 1.0666667, + "x": 25.27207, + "y": -6.863761, + "curve": [ 1.1473452, 25.185913, 1.2166667, 15.199268, 1.1408687, -6.752945, 1.2166667, -18.55667 ] + }, + { "time": 1.2666667, "x": 9.884033, "y": -21.52525 } + ] + }, + "head-control": { + "translate": [ + { + "y": -55.09682, + "curve": [ 0.06296037, -1.7489548, 0.2530094, -5.829174, 0.09166667, -55.09682, 0.297739, -20.004807 ] + }, + { + "time": 0.3666667, + "x": -5.847704, + "y": -6.978775, + "curve": [ 0.4368972, -5.85915, 0.5390354, -2.8872566, 0.4401274, 6.903946, 0.5666666, 28.14827 ] + }, + { + "time": 0.6333333, + "y": 28.14827, + "curve": [ 0.7090387, 2.317989, 0.8583333, 5.697609, 0.7083333, 28.14827, 0.866757, 1.1488342 ] + }, + { + "time": 0.9333333, + "x": 5.697609, + "y": -12.053162, + "curve": [ 1.0166667, 5.697609, 1.156956, 2.642784, 1.0199082, -29.220886, 1.1833333, -55.09682 ] + }, + { "time": 1.2666667, "y": -55.09682 } + ] + }, + "head2": { + "rotate": [ + { + "value": 11.965183, + "curve": [ 0.02053961, 10.45928, 0.10389923, 4.488307 ] + }, + { + "time": 0.16666667, + "value": 4.554021, + "curve": [ 0.3115668, 4.705723, 0.4189195, 14.202978 ] + }, + { + "time": 0.5, + "value": 14.111456, + "curve": [ 0.6707888, 13.918667, 0.686192, 4.541626 ] + }, + { + "time": 0.8, + "value": 4.560859, + "curve": [ 0.9529416, 4.586709, 1.0294284, 14.201435 ] + }, + { + "time": 1.1333333, + "value": 14.13289, + "curve": [ 1.1862036, 14.098017, 1.21358, 14.027103 ] + }, + { "time": 1.2666667, "value": 11.965183 } + ], + "scale": [ + { + "curve": [ 0.010758295, 0.9947252, 0.12239203, 0.9853887, 0.05517141, 1.007293, 0.10432172, 1.0107343 ] + }, + { + "time": 0.16666667, + "x": 0.9853889, + "y": 1.0117892, + "curve": [ 0.2559391, 0.9853887, 0.414819, 1.0137043, 0.24533863, 1.0131205, 0.4193878, 0.9876572 ] + }, + { + "time": 0.5, + "x": 1.0132115, + "y": 0.987503, + "curve": [ 0.5789549, 1.0127547, 0.6934946, 0.9883253, 0.6197251, 0.9883393, 0.7132047, 1.0137718 ] + }, + { + "time": 0.8, + "x": 0.9881615, + "y": 1.0137718, + "curve": [ 0.8808987, 0.988037, 1.0748347, 1.0139225, 0.9078752, 1.0137718, 1.03306, 0.9882846 ] + }, + { + "time": 1.1333333, + "x": 1.0140564, + "y": 0.9886105, + "curve": [ 1.1809644, 1.0141655, 1.2004086, 1.011187, 1.1643105, 0.9887113, 1.2299683, 0.9953828 ] + }, + { "time": 1.2666667 } + ] + }, + "hip": { + "rotate": [ + { + "value": -4.78, + "curve": [ 0.03315207, -4.179543, 0.05, -3.99 ] + }, + { + "time": 0.06666667, + "value": -3.99, + "curve": [ 0.14166667, -3.99, 0.2916667, -12.5 ] + }, + { + "time": 0.3666667, + "value": -12.5, + "curve": [ 0.476646, -12.564807, 0.5837143, -4.054806 ] + }, + { + "time": 0.7, + "value": -3.99, + "curve": [ 0.774925, -3.889672, 0.925, -12.5 ] + }, + { + "time": 1, + "value": -12.5, + "curve": [ 1.0666667, -12.5, 1.2164855, -6.075722 ] + }, + { "time": 1.2666667, "value": -4.78 } + ], + "translate": [ + { + "x": 161.93, + "y": 34.04648, + "curve": [ 0.021663107, 155.35313, 0.04673144, 146.41267, 0.020906735, 20.48131, 0.0394334, 1.4023743 ] + }, + { + "time": 0.06666667, + "x": 146.25424, + "y": 1.6794033, + "curve": [ 0.12398995, 146.16403, 0.2904279, 209.86478, 0.18021815, 2.7588806, 0.2938974, 142.08176 ] + }, + { + "time": 0.4, + "x": 209.50116, + "y": 140.6938, + "curve": [ 0.5618468, 208.9641, 0.624449, 145.3463, 0.5370388, 141.96414, 0.6304372, 4.690185 ] + }, + { + "time": 0.7, + "x": 145.67137, + "y": 2.0613, + "curve": [ 0.7449199, 145.86047, 0.9283995, 209.1926, 0.8177478, 3.050873, 0.9500598, 138.66245 ] + }, + { + "time": 1.0333333, + "x": 209.1926, + "y": 139.2958, + "curve": [ 1.1, 209.1926, 1.2205307, 175.021, 1.1296455, 140.39883, 1.2354026, 58.97227 ] + }, + { "time": 1.2666667, "x": 161.93, "y": 34.04648 } + ] + }, + "horn-back": { + "translate": [ + { "x": 7.008415, "y": 42.92354 }, + { "time": 0.3666667, "x": 13.16552, "y": 33.39233 }, + { "time": 0.6333333, "x": 7.683769, "y": 13.937637 }, + { "time": 1, "x": 12.256722, "y": 35.06 }, + { "time": 1.2666667, "x": 7.008415, "y": 42.92354 } + ] + }, + "horn-front": { + "translate": [ + { + "x": 3.4573364, + "y": -20.11804, + "curve": [ 0.09166667, 3.4573364, 0.24345203, 3.408188, 0.09166667, -20.11804, 0.2919663, -6.077728 ] + }, + { + "time": 0.3666667, + "x": 3.5718384, + "y": -1.2432556, + "curve": [ 0.4066855, 3.625, 0.5666666, 5.088135, 0.4841425, 6.359573, 0.5666666, 11.01358 ] + }, + { + "time": 0.6333333, + "x": 5.088135, + "y": 11.01358, + "curve": [ 0.725, 5.088135, 0.807027, 2.7413025, 0.725, 11.01358, 0.9176634, -0.07673645 ] + }, + { + "time": 1, + "x": 2.770729, + "y": -5.869293, + "curve": [ 1.11613, 2.7884216, 1.2, 3.4573364, 1.0492874, -9.336792, 1.2, -20.11804 ] + }, + { "time": 1.2666667, "x": 3.4573364, "y": -20.11804 } + ] + }, + "jaw": { + "rotate": [ + { + "value": -9.458115, + "curve": [ 0.08768604, -9.546616, 0.3389893, -16.627274 ] + }, + { + "time": 0.3666667, + "value": -17.51494, + "curve": [ 0.5616483, -23.768356, 0.8000142, -23.237793 ] + }, + { + "time": 0.8333333, + "value": -23.224945, + "curve": [ 0.962639, -23.175095, 1.179313, -9.55783 ] + }, + { "time": 1.2666667, "value": -9.458115 } + ], + "translate": [ + { + "x": -0.3358765, + "y": -2.024353, + "curve": [ 0.09166667, -0.3358765, 0.275, 0.7922478, 0.09166667, -2.024353, 0.275, 9.468575 ] + }, + { + "time": 0.3666667, + "x": 0.7922478, + "y": 9.468575, + "curve": [ 0.425, 0.7922478, 0.575, 0.9279175, 0.425, 9.468575, 0.575065, 6.035702 ] + }, + { + "time": 0.6333333, + "x": 0.9279175, + "y": 6.085632, + "curve": [ 0.6416666, 0.9279175, 0.7833333, 0.7922478, 0.7144362, 6.15514, 0.7833333, 9.468575 ] + }, + { + "time": 0.8333333, + "x": 0.7922478, + "y": 9.468575, + "curve": [ 0.875, 0.7922478, 0.9583333, 0.5666237, 0.875, 9.468575, 0.9786387, 7.853359 ] + }, + { + "time": 1, + "x": 0.5666237, + "y": 7.169987, + "curve": [ 1.0666667, 0.5666237, 1.2, -0.3358765, 1.083094, 4.511741, 1.2, -2.024353 ] + }, + { "time": 1.2666667, "x": -0.3358765, "y": -2.024353 } + ] + }, + "jaw-inside": { + "translate": [ + { "x": -8.339294, "y": -3.21582 }, + { "time": 0.6333333, "x": 1.170807, "y": -1.5958252 }, + { "time": 1.2666667, "x": -8.339294, "y": -3.21582 } + ] + }, + "leg-control": { + "translate": [ + { + "curve": [ 0.02111111, 0, 0.0480276, 3.267441, 0.02111111, 0, 0.04362963, -99.76404 ] + }, + { + "time": 0.06666667, + "x": 5.158233, + "y": -99.76404, + "curve": [ 0.09920977, 8.459518, 0.14546436, 12.653183, 0.08886913, -99.76404, 0.1337662, 67.18008 ] + }, + { + "time": 0.16666667, + "x": 12.653183, + "y": 68.39085, + "curve": [ 0.18828437, 12.653183, 0.25088155, 7.236313, 0.2111131, 70.02651, 0.2439366, -68.22906 ] + }, + { + "time": 0.2666667, + "x": 4.95192, + "y": -68.18617, + "curve": [ 0.3236963, -3.3012695, 0.33720225, -4.957217, 0.30744675, -68.1099, 0.3290526, -15.355207 ] + }, + { + "time": 0.3666667, + "x": -10.48857, + "y": -14.911427, + "curve": [ 0.40419, -17.528475, 0.441248, -25.50986, 0.4157393, -14.332446, 0.4844752, -84.77563 ] + }, + { + "time": 0.5, + "x": -25.50986, + "y": -101.7088, + "curve": [ 0.566226, -25.50986, 0.6335304, -23.993734, 0.5431273, -148.7484, 0.6335304, -191.80615 ] + }, + { + "time": 0.7, + "x": -21.81238, + "y": -183.42784, + "curve": [ 0.915158, -14.77674, 1.1233455, 0, 0.915158, -156.40485, 1.1233455, 0 ] + }, + { "time": 1.2666667 } + ] + }, + "neck": { + "rotate": [ + { + "value": -22.13334, + "curve": [ 0.09166667, -22.13334, 0.275, -4.118175 ] + }, + { + "time": 0.3666667, + "value": -4.118175, + "curve": [ 0.4333333, -4.118175, 0.5666666, -22.13334 ] + }, + { + "time": 0.6333333, + "value": -22.13334, + "curve": [ 0.725, -22.13334, 0.9083333, -4.118175 ] + }, + { + "time": 1, + "value": -4.118175, + "curve": [ 1.0666667, -4.118175, 1.2, -22.13334 ] + }, + { "time": 1.2666667, "value": -22.13334 } + ], + "translate": [ + { + "x": 19.46004, + "y": -14.286346, + "curve": [ 0.04558742, 22.70909, 0.06399933, 24.671616, 0.02704574, -20.08078, 0.06715042, -33.27293 ] + }, + { + "time": 0.1, + "x": 24.6978, + "y": -32.70565, + "curve": [ 0.1214681, 24.713425, 0.18671043, 5.343391, 0.13593443, -32.0851, 0.2070543, -18.93289 ] + }, + { + "time": 0.23333333, + "x": 5.158996, + "y": -13.232106, + "curve": [ 0.28747395, 4.94486, 0.3367798, 5.542755, 0.273578, -4.501727, 0.3321389, 3.9830856 ] + }, + { + "time": 0.3666667, + "x": 7.203415, + "y": 3.9830856, + "curve": [ 0.4261627, 10.509308, 0.5747927, 18.600327, 0.4333333, 3.9830856, 0.5995387, -8.703547 ] + }, + { + "time": 0.6333333, + "x": 21.663956, + "y": -14.286346, + "curve": [ 0.6675498, 23.454636, 0.6968386, 24.532734, 0.6683312, -20.06792, 0.6973053, -32.36167 ] + }, + { + "time": 0.7333333, + "x": 24.6978, + "y": -32.70565, + "curve": [ 0.7884747, 24.947235, 0.8200386, 4.987503, 0.7818705, -33.16905, 0.8292017, -21.819904 ] + }, + { + "time": 0.8666667, + "x": 5.158996, + "y": -13.232106, + "curve": [ 0.9208073, 5.358091, 0.955146, 6.02005, 0.8972422, -6.223532, 0.9654722, 3.9830856 ] + }, + { + "time": 1, + "x": 7.70517, + "y": 3.9830856, + "curve": [ 1.0456064, 9.41855, 1.170333, 14.79837, 1.0666667, 3.9830856, 1.227244, -5.966134 ] + }, + { "time": 1.2666667, "x": 19.46004, "y": -14.286346 } + ] + }, + "neck2": { + "rotate": [ + { "value": 24.685726 } + ], + "translate": [ + { + "x": -6.838989, + "y": -1.7964182, + "curve": [ 0.16400003, -6.453499, 0.2562653, -6.417572, 0.09166667, -1.7964182, 0.3083333, -0.4491119 ] + }, + { + "time": 0.4, + "x": -6.237396, + "y": -0.4491119, + "curve": [ 0.5138484, -6.094681, 0.5666666, -6.027038, 0.4666667, -0.4491119, 0.5666666, -1.8072176 ] + }, + { + "time": 0.6333333, + "x": -6.027038, + "y": -1.8072176, + "curve": [ 0.725, -6.027038, 0.9083333, -10.81253, 0.725, -1.8072176, 0.9083333, -0.3485422 ] + }, + { + "time": 1, + "x": -10.81253, + "y": -0.3485422, + "curve": [ 1.0666667, -10.81253, 1.1371014, -7.648514, 1.0666667, -0.3485422, 1.2, -1.7964182 ] + }, + { "time": 1.2666667, "x": -6.838989, "y": -1.7964182 } + ] + }, + "saddle": { + "rotate": [ + { "value": -2.519997 }, + { "time": 0.3666667, "value": -4.169998 }, + { "time": 0.6333333, "value": -3.8499985 }, + { "time": 1, "value": -3.0999985 }, + { "time": 1.2666667, "value": -2.519997 } + ], + "translate": [ + { "x": 5.86557, "y": -0.06344604 }, + { + "time": 0.3666667, + "curve": [ 0.3766667, -0.0112, 0.4166667, -0.04, 0.3766667, 1.6576, 0.4166667, 5.92 ] + }, + { + "time": 0.4333333, + "x": -0.04, + "y": 5.92, + "curve": [ 0.5175333, -0.04, 0.6033333, -6.87858, 0.5175333, 5.92, 0.6033333, 1.376739 ] + }, + { "time": 0.6333333, "x": -8.80741, "y": 0.0953064 }, + { "time": 0.7, "x": -7.833587, "y": -2.2728424 }, + { + "time": 1, + "curve": [ 1.01, -0.0112, 1.05, -0.04, 1.01, 1.6576, 1.05, 5.92 ] + }, + { + "time": 1.0666667, + "x": -0.04, + "y": 5.92, + "curve": [ 1.1508667, -0.04, 1.2366666, 4.566344, 1.1508667, 5.92, 1.2366666, 1.252912 ] + }, + { "time": 1.2666667, "x": 5.86557, "y": -0.06344604 } + ] + }, + "saddle-strap-back": { + "rotate": [ + { + "value": -5.12381, + "curve": [ 0.04216666, -5.12381, 0.10373, -2.696792 ] + }, + { + "time": 0.16666667, + "value": 0.8940124, + "curve": [ 0.24093667, 5.109304, 0.3171667, 10.588943 ] + }, + { + "time": 0.3666667, + "value": 10.588943, + "curve": [ 0.4333333, 10.588943, 0.5666666, 0.7240143 ] + }, + { + "time": 0.6333333, + "value": 0.7240143, + "curve": [ 0.7333333, 0.7240143, 0.9333333, 7.719559 ] + }, + { + "time": 1.0333333, + "value": 7.719559, + "curve": [ 1.0916667, 7.719559, 1.2083334, -5.12381 ] + }, + { "time": 1.2666667, "value": -5.12381 } + ] + }, + "saddle-strap-front": { + "rotate": [ + { + "value": 3.650116, + "curve": [ 0.09077778, 3.650116, 0.2327672, 5.424713 ] + }, + { + "time": 0.3666667, + "value": 5.407486, + "curve": [ 0.4496838, 5.396807, 0.5657778, 3.4880676 ] + }, + { + "time": 0.6333333, + "value": 3.4880676, + "curve": [ 0.7315, 3.4880676, 0.889561, 5.389618 ] + }, + { + "time": 1.0333333, + "value": 5.383438, + "curve": [ 1.1119697, 5.380044, 1.2065, 3.650116 ] + }, + { "time": 1.2666667, "value": 3.650116 } + ] + }, + "spineboy-front-arm-target": { + "translate": [ + {}, + { "time": 0.3666667, "x": -12.14261, "y": 8.934753 }, + { "time": 0.6333333 }, + { "time": 1, "x": -10.793426, "y": 7.942001 }, + { "time": 1.2666667 } + ] + }, + "spineboy-hip": { + "translate": [ + { + "x": 53.69341, + "y": -49.21124, + "curve": [ 0.11769108, 53.51966, 0.275, 16.14621, 0.09166667, -49.21124, 0.275, -32.5618 ] + }, + { + "time": 0.3666667, + "x": 16.14621, + "y": -32.5618, + "curve": [ 0.4333333, 16.14621, 0.5416667, 53.47405, 0.4333333, -32.5618, 0.5666666, -49.21124 ] + }, + { + "time": 0.6333333, + "x": 53.69341, + "y": -49.21124, + "curve": [ 0.7415355, 53.95237, 0.9083333, 15.733093, 0.725, -49.21124, 0.9083333, -29.735693 ] + }, + { + "time": 1, + "x": 15.733093, + "y": -29.735693, + "curve": [ 1.0666667, 15.733093, 1.1097857, 54.44884, 1.0666667, -29.735693, 1.2, -49.21124 ] + }, + { "time": 1.2666667, "x": 53.69341, "y": -49.21124 } + ] + }, + "spineboy-torso": { + "rotate": [ + { + "value": -37.55338, + "curve": [ 0.09166667, -37.55338, 0.275, -12.196495 ] + }, + { + "time": 0.3666667, + "value": -12.196495, + "curve": [ 0.4981333, -12.196495, 0.5666666, -37.66431 ] + }, + { + "time": 0.6333333, + "value": -37.66431, + "curve": [ 0.725, -37.66431, 0.9083333, -12.19107 ] + }, + { + "time": 1, + "value": -12.19107, + "curve": [ 1.1314666, -12.19107, 1.2, -37.55338 ] + }, + { "time": 1.2666667, "value": -37.55338 } + ] + }, + "stirrup": { + "rotate": [ + { "value": -17.15001 }, + { "time": 0.3666667, "value": -11.14209 }, + { "time": 0.6333333, "value": -6.946197 }, + { "time": 1, "value": -11.843376 }, + { "time": 1.2666667, "value": -17.15001 } + ], + "translate": [ + { "x": 8.979996, "y": 4.989998 }, + { "time": 0.3666667, "x": 4.849998, "y": 1 }, + { "time": 0.6333333, "x": 7.760002, "y": -2.989998 }, + { "time": 1, "x": 4.849998, "y": 1 }, + { "time": 1.2666667, "x": 8.979996, "y": 4.989998 } + ] + }, + "tail1": { + "rotate": [ + { + "value": -1.8103027, + "curve": [ 0.09077778, -1.8103027, 0.2075785, 12.325684 ] + }, + { + "time": 0.3333333, + "value": 12.325684, + "curve": [ 0.4306667, 12.325684, 0.532, -1.8103027 ] + }, + { + "time": 0.6333333, + "value": -1.8103027, + "curve": [ 0.7354583, -1.8103027, 0.8375833, 11.618011 ] + }, + { + "time": 0.9333333, + "value": 11.618011, + "curve": [ 1.0604454, 11.618011, 1.1764166, -1.8103027 ] + }, + { "time": 1.2666667, "value": -1.8103027 } + ] + }, + "tail2": { + "rotate": [ + { + "value": -12.174447, + "curve": [ 0.09061592, -12.174447, 0.2071621, -1.4521945 ] + }, + { + "time": 0.3333333, + "value": -1.4521945, + "curve": [ 0.4407013, -1.4521945, 0.5546578, -12.174447 ] + }, + { + "time": 0.6666667, + "value": -12.174447, + "curve": [ 0.8959415, -12.174447, 0.8738287, -1.4521945 ] + }, + { + "time": 1, + "value": -1.4521945, + "curve": [ 1.107368, -1.4521945, 1.1167778, -12.174447 ] + }, + { "time": 1.2666667, "value": -12.174447 } + ] + }, + "tail3": { + "rotate": [ + { + "value": -7.148086, + "curve": [ 0.08333333, -7.148086, 0.25, 0.58007 ] + }, + { + "time": 0.3333333, + "value": 0.58007, + "curve": [ 0.4083333, 0.58007, 0.5583333, -7.148086 ] + }, + { + "time": 0.6333333, + "value": -7.148086, + "curve": [ 0.7166666, -7.148086, 0.8833333, 0.7493095 ] + }, + { + "time": 0.9666666, + "value": 0.7493095, + "curve": [ 1.0416666, 0.7493095, 1.1916667, -7.148086 ] + }, + { "time": 1.2666667, "value": -7.148086 } + ], + "translate": [ + { + "curve": [ 0.15833333, 0, 0.475, -9.865417, 0.15833333, 0, 0.475, -0.8689575 ] + }, + { + "time": 0.6333333, + "x": -9.865417, + "y": -0.8689575, + "curve": [ 0.7916667, -9.865417, 1.1083333, 0, 0.7916667, -0.8689575, 1.1083333, 0 ] + }, + { "time": 1.2666667 } + ] + }, + "tail4": { + "rotate": [ + { + "value": -3.830568, + "curve": [ 0.012565867, -4.228246, 0.02358335, -4.527534 ] + }, + { + "time": 0.03333333, + "value": -4.527534, + "curve": [ 0.06777777, -4.527534, 0.11645926, -3.132301 ] + }, + { + "time": 0.16666667, + "value": -0.3900641, + "curve": [ 0.2402074, 3.502143, 0.31777775, 9.152358 ] + }, + { + "time": 0.3666667, + "value": 9.152358, + "curve": [ 0.4416667, 9.152358, 0.5916666, -4.527534 ] + }, + { + "time": 0.6666667, + "value": -4.527534, + "curve": [ 0.75, -4.527534, 0.9166667, 8.9962 ] + }, + { + "time": 1, + "value": 8.9962, + "curve": [ 1.06525, 8.9962, 1.1872675, -1.169178 ] + }, + { "time": 1.2666667, "value": -3.830568 } + ], + "translate": [ + { + "curve": [ 0.15833333, 0, 0.475, -4.061783, 0.15833333, 0, 0.475, 0.3216248 ] + }, + { + "time": 0.6333333, + "x": -4.061783, + "y": 0.3216248, + "curve": [ 0.7916667, -4.061783, 1.1083333, 0, 0.7916667, 0.3216248, 1.1083333, 0 ] + }, + { "time": 1.2666667 } + ] + }, + "tail5": { + "rotate": [ + { + "value": -7.24438, + "curve": [ 0.02572581, -8.78431, 0.04841665, -9.895447 ] + }, + { + "time": 0.06666667, + "value": -9.895447, + "curve": [ 0.09333333, -9.895447, 0.12853333, -9.010598 ] + }, + { + "time": 0.16666667, + "value": -6.602956, + "curve": [ 0.24813335, -1.4867158, 0.3433333, 7.392887 ] + }, + { + "time": 0.4, + "value": 7.392887, + "curve": [ 0.475, 7.392887, 0.625, -9.895447 ] + }, + { + "time": 0.7, + "value": -9.895447, + "curve": [ 0.7833333, -9.895447, 0.95, 7.290088 ] + }, + { + "time": 1.0333333, + "value": 7.290088, + "curve": [ 1.0900834, 7.290088, 1.189774, -2.455831 ] + }, + { "time": 1.2666667, "value": -7.24438 } + ], + "translate": [ + { + "curve": [ 0.15833333, 0, 0.475, -7.547943, 0.15833333, 0, 0.475, 0.7315063 ] + }, + { + "time": 0.6333333, + "x": -7.547943, + "y": 0.7315063, + "curve": [ 0.7916667, -7.547943, 1.1083333, 0, 0.7916667, 0.7315063, 1.1083333, 0 ] + }, + { "time": 1.2666667 } + ] + }, + "tail6": { + "rotate": [ + { + "value": -4.21581, + "curve": [ 0.03831253, -7.402938, 0.07375005, -9.895447 ] + }, + { + "time": 0.1, + "value": -9.895447, + "curve": [ 0.11888888, -9.895447, 0.14205927, -9.788292 ] + }, + { + "time": 0.16666667, + "value": -8.21584, + "curve": [ 0.2546074, -2.851003, 0.3688889, 9.892714 ] + }, + { + "time": 0.4333333, + "value": 9.892714, + "curve": [ 0.5083333, 9.892714, 0.6583333, -9.895447 ] + }, + { + "time": 0.7333333, + "value": -9.895447, + "curve": [ 0.8166666, -9.895447, 0.9833333, 10.11791 ] + }, + { + "time": 1.0666667, + "value": 10.11791, + "curve": [ 1.1154168, 10.11791, 1.1958542, 1.7031398 ] + }, + { "time": 1.2666667, "value": -4.21581 } + ], + "translate": [ + { + "curve": [ 0.15833333, 0, 0.475, -9.06314, 0.15833333, 0, 0.475, 1.581024 ] + }, + { + "time": 0.6333333, + "x": -9.06314, + "y": 1.581024, + "curve": [ 0.7916667, -9.06314, 1.1083333, 0, 0.7916667, 1.581024, 1.1083333, 0 ] + }, + { "time": 1.2666667 } + ] + }, + "tail7": { + "rotate": [ + { + "value": -0.7597948, + "curve": [ 0.05064583, -5.530134, 0.0995833, -9.895447 ] + }, + { + "time": 0.13333334, + "value": -9.895447, + "curve": [ 0.1436111, -9.895447, 0.1551565, -10.453577 ] + }, + { + "time": 0.16666667, + "value": -9.888296, + "curve": [ 0.2565102, -5.870215, 0.3936111, 11.299836 ] + }, + { + "time": 0.4666667, + "value": 11.299836, + "curve": [ 0.5416667, 11.299836, 0.6916666, -9.895447 ] + }, + { + "time": 0.7666666, + "value": -9.895447, + "curve": [ 0.85, -9.895447, 1.0166667, 11.520222 ] + }, + { + "time": 1.1, + "value": 11.520222, + "curve": [ 1.14125, 11.520222, 1.2051874, 5.070621 ] + }, + { "time": 1.2666667, "value": -0.7597948 } + ], + "translate": [ + { + "curve": [ 0.15833333, 0, 0.475, -9.928223, 0.15833333, 0, 0.475, 1.3155823 ] + }, + { + "time": 0.6333333, + "x": -9.928223, + "y": 1.3155823, + "curve": [ 0.7916667, -9.928223, 1.1083333, 0, 0.7916667, 1.3155823, 1.1083333, 0 ] + }, + { "time": 1.2666667 } + ] + }, + "tail8": { + "rotate": [ + { + "value": 4.706924, + "curve": [ 0.06225331, -2.193073, 0.1256667, -10.790222 ] + }, + { + "time": 0.16666667, + "value": -10.790222, + "curve": [ 0.25, -10.790222, 0.4166667, 16.46313 ] + }, + { + "time": 0.5, + "value": 16.46313, + "curve": [ 0.575, 16.46313, 0.725, -9.895447 ] + }, + { + "time": 0.8, + "value": -9.895447, + "curve": [ 0.8833333, -9.895447, 1.05, 15.57028 ] + }, + { + "time": 1.1333333, + "value": 15.57028, + "curve": [ 1.1673334, 15.57028, 1.2167467, 10.428873 ] + }, + { "time": 1.2666667, "value": 4.706924 } + ], + "translate": [ + { + "curve": [ 0.15833333, 0, 0.475, -12.56659, 0.15833333, 0, 0.475, 1.97406 ] + }, + { + "time": 0.6333333, + "x": -12.56659, + "y": 1.97406, + "curve": [ 0.7916667, -12.56659, 1.1083333, 0, 0.7916667, 1.97406, 1.1083333, 0 ] + }, + { "time": 1.2666667 } + ] + }, + "tail9": { + "rotate": [ + { + "value": 7.954827, + "curve": [ 0.0716367, 1.8706818, 0.15149994, -6.790797 ] + }, + { + "time": 0.2, + "value": -6.790797, + "curve": [ 0.2833333, -6.790797, 0.45, 15.07934 ] + }, + { + "time": 0.5333333, + "value": 15.07934, + "curve": [ 0.6083333, 15.07934, 0.7583333, -6.790797 ] + }, + { + "time": 0.8333333, + "value": -6.790797, + "curve": [ 0.9166667, -6.790797, 1.0833334, 13.797668 ] + }, + { + "time": 1.1666666, + "value": 13.797668, + "curve": [ 1.1931666, 13.797668, 1.22903, 11.279154 ] + }, + { "time": 1.2666667, "value": 7.954827 } + ], + "translate": [ + { + "curve": [ 0.15833333, 0, 0.475, -15.361816, 0.15833333, 0, 0.475, 2.182373 ] + }, + { + "time": 0.6333333, + "x": -15.361816, + "y": 2.182373, + "curve": [ 0.7916667, -15.361816, 1.1083333, 0, 0.7916667, 2.182373, 1.1083333, 0 ] + }, + { "time": 1.2666667 } + ] + }, + "tail10": { + "rotate": [ + { + "value": 8.87108, + "curve": [ 0.07776998, 3.9554815, 0.17683335, -5.977947 ] + }, + { + "time": 0.23333333, + "value": -5.977947, + "curve": [ 0.3166667, -5.977947, 0.4833333, 10.93023 ] + }, + { + "time": 0.5666666, + "value": 10.93023, + "curve": [ 0.6416666, 10.93023, 0.7916667, -5.977947 ] + }, + { + "time": 0.8666667, + "value": -5.977947, + "curve": [ 0.95, -5.977947, 1.1166667, 11.579513 ] + }, + { + "time": 1.2, + "value": 11.579513, + "curve": [ 1.2185, 11.579513, 1.2415633, 10.480614 ] + }, + { "time": 1.2666667, "value": 8.87108 } + ], + "translate": [ + { + "curve": [ 0.15833333, 0, 0.475, -19.29547, 0.15833333, 0, 0.475, 1.897644 ] + }, + { + "time": 0.6333333, + "x": -19.29547, + "y": 1.897644, + "curve": [ 0.7916667, -19.29547, 1.1083333, 0, 0.7916667, 1.897644, 1.1083333, 0 ] + }, + { "time": 1.2666667 } + ] + }, + "tongue1": { + "rotate": [ + { "value": 21.55374 }, + { "time": 0.8, "value": 0.0812912 }, + { "time": 1.2666667, "value": 21.55374 } + ] + }, + "tongue2": { + "rotate": [ + { + "value": -16.01506, + "curve": [ 0.2858496, -15.881577, 0.4154335, -3.201469 ] + }, + { + "time": 0.6333333, + "value": -3.20948, + "curve": [ 0.9875164, -3.2225046, 1.1015027, -16.11903 ] + }, + { "time": 1.2666667, "value": -16.01506 } + ] + }, + "tongue3": { + "rotate": [ + { + "value": -16.01506, + "curve": [ 0.0273629, -12.15427, 0.12291182, 0.4920931 ] + }, + { + "time": 0.23333333, + "value": 0.4397631, + "curve": [ 0.457, 0.333766, 0.862269, -36.41787 ] + }, + { + "time": 1.0666667, + "value": -36.41415, + "curve": [ 1.167866, -36.4123, 1.2482436, -19.41688 ] + }, + { "time": 1.2666667, "value": -16.01506 } + ] + }, + "torso1": { + "rotate": [ + { + "value": 7.22, + "curve": [ 0.04785992, 7.928309, 0.07164217, 8.37728 ] + }, + { + "time": 0.13333334, + "value": 8.389486, + "curve": [ 0.20155734, 8.402986, 0.30219445, 2.443026 ] + }, + { + "time": 0.3666667, + "value": 2.443026, + "curve": [ 0.4333333, 2.443026, 0.5880664, 6.893369 ] + }, + { + "time": 0.6, + "value": 7.22, + "curve": [ 0.617535, 7.699942, 0.6831788, 8.434774 ] + }, + { + "time": 0.7333333, + "value": 8.43319, + "curve": [ 0.8295607, 8.430148, 0.9098333, 2.417546 ] + }, + { + "time": 0.9666666, + "value": 2.417546, + "curve": [ 1.0333333, 2.417546, 1.2116188, 6.061397 ] + }, + { "time": 1.2666667, "value": 7.22 } + ] + }, + "torso2": { + "rotate": [ + { + "value": -4.186195, + "curve": [ 0.09166667, -4.186195, 0.275, -2.53706 ] + }, + { + "time": 0.3666667, + "value": -2.53706, + "curve": [ 0.4333333, -2.53706, 0.5666666, -4.186195 ] + }, + { + "time": 0.6333333, + "value": -4.186195, + "curve": [ 0.725, -4.186195, 0.9083333, -2.568886 ] + }, + { + "time": 1, + "value": -2.568886, + "curve": [ 1.0666667, -2.568886, 1.2, -4.186195 ] + }, + { "time": 1.2666667, "value": -4.186195 } + ], + "translate": [ + { + "curve": [ 0.08749752, -1.8736343, 0.13084796, -1.5673752, 0.09798698, 9.87882, 0.13084796, 12.61029 ] + }, + { + "time": 0.16666667, + "x": -1.5673752, + "y": 12.61029, + "curve": [ 0.246255, -1.5673752, 0.2783954, 8.503754, 0.246255, 12.61029, 0.2577581, -10.384242 ] + }, + { + "time": 0.3666667, + "x": 8.37577, + "y": -10.237813, + "curve": [ 0.4532149, 8.250267, 0.5807821, 1.8093643, 0.44091815, -10.13798, 0.5975399, -3.482858 ] + }, + { + "time": 0.6333333, + "x": 0.08921814, + "curve": [ 0.6660422, -0.98143, 0.7641812, -1.4781494, 0.6674635, 3.321018, 0.7641812, 12.61029 ] + }, + { + "time": 0.8, + "x": -1.4781494, + "y": 12.61029, + "curve": [ 0.8795883, -1.4781494, 0.9374772, 8.503754, 0.8795883, 12.61029, 0.906822, -10.400143 ] + }, + { + "time": 1.0333333, + "x": 8.37577, + "y": -10.237813, + "curve": [ 1.1199117, 8.262276, 1.2183137, 2.6766205, 1.1010463, -10.150926, 1.1945745, -5.210807 ] + }, + { "time": 1.2666667 } + ] + } + }, + "ik": { + "back-leg-ik": [ + { "softness": 66.9, "bendPositive": false } + ], + "spineboy-back-arm-ik": [ + {} + ], + "spineboy-front-arm-ik": [ + { "softness": 14.4, "stretch": true } + ] + }, + "events": [ + { "time": 0.6333333, "name": "footstep" }, + { "time": 1.2666667, "name": "footstep" } + ] + } +} +} \ No newline at end of file diff --git a/html/assets/demo/raptor/raptor.atlas b/html/assets/demo/raptor/raptor.atlas new file mode 100644 index 0000000..92387eb --- /dev/null +++ b/html/assets/demo/raptor/raptor.atlas @@ -0,0 +1,85 @@ +raptor.png + size: 1024, 512 + filter: Linear, Linear + scale: 0.5 +back-arm + bounds: 206, 49, 46, 25 +back-bracer + bounds: 498, 42, 39, 28 +back-hand + bounds: 400, 55, 36, 34 +back-knee + bounds: 498, 72, 49, 67 +back-thigh + bounds: 254, 40, 39, 24 +eyes-open + bounds: 232, 328, 47, 45 +front-arm + bounds: 350, 63, 48, 26 +front-bracer + bounds: 163, 56, 41, 29 +front-hand + bounds: 956, 231, 41, 38 +front-open-hand + bounds: 770, 329, 43, 44 +front-thigh + bounds: 897, 240, 57, 29 +gun + bounds: 915, 106, 107, 103 +gun-nohand + bounds: 916, 271, 105, 102 +head + bounds: 626, 81, 136, 149 +lower-leg + bounds: 551, 42, 73, 98 +mouth-grind + bounds: 2, 64, 47, 30 +mouth-smile + bounds: 841, 127, 47, 30 +neck + bounds: 281, 352, 18, 21 +raptor-back-arm + bounds: 80, 11, 82, 86 +raptor-body + bounds: 2, 140, 632, 233 +raptor-front-arm + bounds: 911, 2, 81, 102 +raptor-front-leg + bounds: 524, 182, 191, 257 + rotate: 90 +raptor-hindleg-back + bounds: 745, 158, 169, 215 + rotate: 180 +raptor-horn + bounds: 2, 293, 182, 80 +raptor-horn-back + bounds: 174, 123, 176, 77 +raptor-jaw + bounds: 772, 35, 126, 138 + rotate: 270 +raptor-jaw-tooth + bounds: 686, 242, 37, 48 +raptor-mouth-inside + bounds: 755, 39, 36, 41 +raptor-saddle-strap-back + bounds: 626, 26, 54, 74 +raptor-saddle-strap-front + bounds: 2, 96, 57, 95 +raptor-saddle-w-shadow + bounds: 2, 88, 162, 171 + rotate: 90 +raptor-tail-shadow + bounds: 159, 58, 189, 63 +raptor-tongue + bounds: 685, 33, 86, 64 +stirrup-back + bounds: 783, 204, 44, 35 +stirrup-front + bounds: 185, 323, 45, 50 +stirrup-strap + bounds: 636, 217, 49, 46 +torso + bounds: 442, 48, 54, 91 +visor + bounds: 356, 91, 131, 84 + rotate: 90 diff --git a/html/assets/demo/raptor/raptor.png b/html/assets/demo/raptor/raptor.png new file mode 100644 index 0000000..d5a282d Binary files /dev/null and b/html/assets/demo/raptor/raptor.png differ diff --git a/html/assets/logo-spineviewer.png b/html/assets/logo-spineviewer.png new file mode 100644 index 0000000..4ef2ca1 Binary files /dev/null and b/html/assets/logo-spineviewer.png differ diff --git a/html/assets/spine-badge.png b/html/assets/spine-badge.png new file mode 100644 index 0000000..422f11a Binary files /dev/null and b/html/assets/spine-badge.png differ diff --git a/html/assets/spine/spine-background.js b/html/assets/spine/spine-background.js new file mode 100644 index 0000000..1c705d5 --- /dev/null +++ b/html/assets/spine/spine-background.js @@ -0,0 +1,25 @@ +'use strict'; +const patterns = new WeakMap(); + +// Called with the same world-to-canvas transform used to draw the skeleton. +function drawCheckerboard(ctx, width, height) { + let pattern = patterns.get(ctx); + if (!pattern) { + const tile = ctx.canvas.ownerDocument.createElement('canvas'); + tile.width = tile.height = 100; + const paint = tile.getContext('2d'); + paint.fillStyle = '#505052'; paint.fillRect(0, 0, 100, 100); + paint.fillStyle = '#5a5a5c'; paint.fillRect(0, 0, 50, 50); paint.fillRect(50, 50, 50, 50); + pattern = ctx.createPattern(tile, 'repeat'); patterns.set(ctx, pattern); + } + const m = ctx.getTransform().inverse(); + const corners = [[0,0], [width,0], [width,height], [0,height]].map(([x,y]) => [m.a*x+m.c*y+m.e, m.b*x+m.d*y+m.f]); + const xs = corners.map(p => p[0]), ys = corners.map(p => p[1]); + const x = Math.min(...xs), y = Math.min(...ys); + if (!Number.isFinite(x + y)) return; + ctx.save(); + try { ctx.imageSmoothingEnabled = false; ctx.fillStyle = pattern; ctx.fillRect(x, y, Math.max(...xs)-x, Math.max(...ys)-y); } + finally { ctx.restore(); } +} + +module.exports = { drawCheckerboard }; diff --git a/html/assets/spine/spine-canvas-4.3.js b/html/assets/spine/spine-canvas-4.3.js new file mode 100644 index 0000000..e7405c6 --- /dev/null +++ b/html/assets/spine/spine-canvas-4.3.js @@ -0,0 +1,13723 @@ +"use strict"; +var spine = (() => { + var __defProp = Object.defineProperty; + var __getOwnPropDesc = Object.getOwnPropertyDescriptor; + var __getOwnPropNames = Object.getOwnPropertyNames; + var __hasOwnProp = Object.prototype.hasOwnProperty; + var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); + }; + var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; + }; + var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + + // spine-canvas/src/index.ts + var index_exports = {}; + __export(index_exports, { + ATTACH_RETAIN: () => ATTACH_RETAIN, + ATTACH_SETUP: () => ATTACH_SETUP, + AlphaTimeline: () => AlphaTimeline, + Animation: () => Animation, + AnimationState: () => AnimationState, + AnimationStateAdapter: () => AnimationStateAdapter, + AnimationStateData: () => AnimationStateData, + AssetCache: () => AssetCache, + AssetManager: () => AssetManager, + AssetManagerBase: () => AssetManagerBase, + AtlasAttachmentLoader: () => AtlasAttachmentLoader, + Attachment: () => Attachment, + AttachmentTimeline: () => AttachmentTimeline, + BinaryInput: () => BinaryInput, + BlendMode: () => BlendMode, + Bone: () => Bone, + BoneData: () => BoneData, + BonePose: () => BonePose, + BoneTimeline1: () => BoneTimeline1, + BoneTimeline2: () => BoneTimeline2, + BoundingBoxAttachment: () => BoundingBoxAttachment, + CURRENT: () => CURRENT, + CanvasTexture: () => CanvasTexture, + ClippingAttachment: () => ClippingAttachment, + Color: () => Color, + Constraint: () => Constraint, + ConstraintData: () => ConstraintData, + ConstraintTimeline1: () => ConstraintTimeline1, + CurveTimeline: () => CurveTimeline, + CurveTimeline1: () => CurveTimeline1, + DebugUtils: () => DebugUtils, + DeformTimeline: () => DeformTimeline, + Downloader: () => Downloader, + DrawOrder: () => DrawOrder, + DrawOrderFolderTimeline: () => DrawOrderFolderTimeline, + DrawOrderTimeline: () => DrawOrderTimeline, + Event: () => Event, + EventData: () => EventData, + EventQueue: () => EventQueue, + EventTimeline: () => EventTimeline, + EventType: () => EventType, + FIRST: () => FIRST, + FakeTexture: () => FakeTexture, + FromProperty: () => FromProperty, + FromRotate: () => FromRotate, + FromScaleX: () => FromScaleX, + FromScaleY: () => FromScaleY, + FromShearY: () => FromShearY, + FromX: () => FromX, + FromY: () => FromY, + HOLD: () => HOLD, + IkConstraint: () => IkConstraint, + IkConstraintData: () => IkConstraintData, + IkConstraintPose: () => IkConstraintPose, + IkConstraintTimeline: () => IkConstraintTimeline, + Inherit: () => Inherit, + InheritTimeline: () => InheritTimeline, + IntSet: () => IntSet, + Interpolation: () => Interpolation, + MODE: () => MODE, + MathUtils: () => MathUtils, + MeshAttachment: () => MeshAttachment, + MixFrom: () => MixFrom, + PathAttachment: () => PathAttachment, + PathConstraint: () => PathConstraint, + PathConstraintData: () => PathConstraintData, + PathConstraintMixTimeline: () => PathConstraintMixTimeline, + PathConstraintPose: () => PathConstraintPose, + PathConstraintPositionTimeline: () => PathConstraintPositionTimeline, + PathConstraintSpacingTimeline: () => PathConstraintSpacingTimeline, + Physics: () => Physics, + PhysicsConstraint: () => PhysicsConstraint, + PhysicsConstraintDampingTimeline: () => PhysicsConstraintDampingTimeline, + PhysicsConstraintData: () => PhysicsConstraintData, + PhysicsConstraintGravityTimeline: () => PhysicsConstraintGravityTimeline, + PhysicsConstraintInertiaTimeline: () => PhysicsConstraintInertiaTimeline, + PhysicsConstraintMassTimeline: () => PhysicsConstraintMassTimeline, + PhysicsConstraintMixTimeline: () => PhysicsConstraintMixTimeline, + PhysicsConstraintPose: () => PhysicsConstraintPose, + PhysicsConstraintResetTimeline: () => PhysicsConstraintResetTimeline, + PhysicsConstraintStrengthTimeline: () => PhysicsConstraintStrengthTimeline, + PhysicsConstraintTimeline: () => PhysicsConstraintTimeline, + PhysicsConstraintWindTimeline: () => PhysicsConstraintWindTimeline, + PointAttachment: () => PointAttachment, + Pool: () => Pool, + Posed: () => Posed, + PosedActive: () => PosedActive, + PosedData: () => PosedData, + PositionMode: () => PositionMode, + Pow: () => Pow, + PowOut: () => PowOut, + Property: () => Property, + RGB2Timeline: () => RGB2Timeline, + RGBA2Timeline: () => RGBA2Timeline, + RGBATimeline: () => RGBATimeline, + RGBTimeline: () => RGBTimeline, + RegionAttachment: () => RegionAttachment, + RotateMode: () => RotateMode, + RotateTimeline: () => RotateTimeline, + SETUP: () => SETUP, + ScaleTimeline: () => ScaleTimeline, + ScaleXTimeline: () => ScaleXTimeline, + ScaleYMode: () => ScaleYMode, + ScaleYTimeline: () => ScaleYTimeline, + Sequence: () => Sequence, + SequenceMode: () => SequenceMode, + SequenceModeValues: () => SequenceModeValues, + SequenceTimeline: () => SequenceTimeline, + ShearTimeline: () => ShearTimeline, + ShearXTimeline: () => ShearXTimeline, + ShearYTimeline: () => ShearYTimeline, + Skeleton: () => Skeleton, + SkeletonBinary: () => SkeletonBinary, + SkeletonBounds: () => SkeletonBounds, + SkeletonClipping: () => SkeletonClipping, + SkeletonData: () => SkeletonData, + SkeletonJson: () => SkeletonJson, + SkeletonPhysicsMovement: () => SkeletonPhysicsMovement, + SkeletonRenderer: () => SkeletonRenderer, + SkeletonRendererCore: () => SkeletonRendererCore, + Skin: () => Skin, + SkinEntry: () => SkinEntry, + Slider: () => Slider, + SliderData: () => SliderData, + SliderMixTimeline: () => SliderMixTimeline, + SliderPose: () => SliderPose, + SliderTimeline: () => SliderTimeline, + Slot: () => Slot, + SlotCurveTimeline: () => SlotCurveTimeline, + SlotData: () => SlotData, + SlotPose: () => SlotPose, + SpacingMode: () => SpacingMode, + StringSet: () => StringSet, + Texture: () => Texture, + TextureAtlas: () => TextureAtlas, + TextureAtlasPage: () => TextureAtlasPage, + TextureAtlasRegion: () => TextureAtlasRegion, + TextureFilter: () => TextureFilter, + TextureRegion: () => TextureRegion, + TextureWrap: () => TextureWrap, + TimeKeeper: () => TimeKeeper, + Timeline: () => Timeline, + ToProperty: () => ToProperty, + ToRotate: () => ToRotate, + ToScaleX: () => ToScaleX, + ToScaleY: () => ToScaleY, + ToShearY: () => ToShearY, + ToX: () => ToX, + ToY: () => ToY, + TrackEntry: () => TrackEntry, + TransformConstraint: () => TransformConstraint, + TransformConstraintData: () => TransformConstraintData, + TransformConstraintPose: () => TransformConstraintPose, + TransformConstraintTimeline: () => TransformConstraintTimeline, + TranslateTimeline: () => TranslateTimeline, + TranslateXTimeline: () => TranslateXTimeline, + TranslateYTimeline: () => TranslateYTimeline, + Triangulator: () => Triangulator, + Utils: () => Utils, + Vector2: () => Vector2, + VertexAttachment: () => VertexAttachment, + WindowedMean: () => WindowedMean, + isBoneTimeline: () => isBoneTimeline, + isConstraintTimeline: () => isConstraintTimeline, + isSlotTimeline: () => isSlotTimeline + }); + + // spine-core/src/Utils.ts + var IntSet = class { + array = []; + add(value) { + const contains = this.contains(value); + this.array[value | 0] = value | 0; + return !contains; + } + contains(value) { + return this.array[value | 0] !== void 0; + } + remove(value) { + this.array[value | 0] = void 0; + } + clear() { + this.array.length = 0; + } + }; + var StringSet = class { + entries = {}; + size = 0; + add(value) { + const contains = this.entries[value]; + this.entries[value] = true; + if (!contains) { + this.size++; + return true; + } + return false; + } + addAll(values) { + const oldSize = this.size; + for (let i = 0, n = values.length; i < n; i++) + this.add(values[i]); + return oldSize !== this.size; + } + contains(value) { + return this.entries[value]; + } + clear() { + this.entries = {}; + this.size = 0; + } + }; + var Color = class _Color { + constructor(r = 0, g = 0, b = 0, a = 0) { + this.r = r; + this.g = g; + this.b = b; + this.a = a; + } + static WHITE = new _Color(1, 1, 1, 1); + static RED = new _Color(1, 0, 0, 1); + static GREEN = new _Color(0, 1, 0, 1); + static BLUE = new _Color(0, 0, 1, 1); + static MAGENTA = new _Color(1, 0, 1, 1); + set(r, g, b, a) { + this.r = r; + this.g = g; + this.b = b; + this.a = a; + return this.clamp(); + } + setFromColor(c) { + this.r = c.r; + this.g = c.g; + this.b = c.b; + this.a = c.a; + return this; + } + setFromString(hex) { + hex = hex.charAt(0) === "#" ? hex.substr(1) : hex; + this.r = parseInt(hex.substr(0, 2), 16) / 255; + this.g = parseInt(hex.substr(2, 2), 16) / 255; + this.b = parseInt(hex.substr(4, 2), 16) / 255; + this.a = hex.length !== 8 ? 1 : parseInt(hex.substr(6, 2), 16) / 255; + return this; + } + add(r, g, b, a) { + this.r += r; + this.g += g; + this.b += b; + this.a += a; + return this.clamp(); + } + clamp() { + if (this.r < 0) this.r = 0; + else if (this.r > 1) this.r = 1; + if (this.g < 0) this.g = 0; + else if (this.g > 1) this.g = 1; + if (this.b < 0) this.b = 0; + else if (this.b > 1) this.b = 1; + if (this.a < 0) this.a = 0; + else if (this.a > 1) this.a = 1; + return this; + } + static rgba8888ToColor(color, value) { + color.r = ((value & 4278190080) >>> 24) / 255; + color.g = ((value & 16711680) >>> 16) / 255; + color.b = ((value & 65280) >>> 8) / 255; + color.a = (value & 255) / 255; + } + static rgb888ToColor(color, value) { + color.r = ((value & 16711680) >>> 16) / 255; + color.g = ((value & 65280) >>> 8) / 255; + color.b = (value & 255) / 255; + } + toRgb888() { + const hex = (x) => `0${(x * 255).toString(16)}`.slice(-2); + return Number(`0x${hex(this.r)}${hex(this.g)}${hex(this.b)}`); + } + static fromString(hex, color = new _Color()) { + return color.setFromString(hex); + } + }; + var MathUtils = class _MathUtils { + static epsilon = 1e-5; + static epsilon2 = _MathUtils.epsilon * _MathUtils.epsilon; + // biome-ignore lint/suspicious/noApproximativeNumericConstant: reference runtime + static PI = 3.1415927; + static PI2 = _MathUtils.PI * 2; + static invPI2 = 1 / _MathUtils.PI2; + static radiansToDegrees = 180 / _MathUtils.PI; + static radDeg = _MathUtils.radiansToDegrees; + static degreesToRadians = _MathUtils.PI / 180; + static degRad = _MathUtils.degreesToRadians; + static clamp(value, min, max) { + if (value < min) return min; + if (value > max) return max; + return value; + } + static cosDeg(degrees) { + return Math.cos(degrees * _MathUtils.degRad); + } + static sinDeg(degrees) { + return Math.sin(degrees * _MathUtils.degRad); + } + static atan2Deg(y, x) { + return Math.atan2(y, x) * _MathUtils.radDeg; + } + static signum(value) { + return value > 0 ? 1 : value < 0 ? -1 : 0; + } + static toInt(x) { + return x > 0 ? Math.floor(x) : Math.ceil(x); + } + static cbrt(x) { + const y = Math.pow(Math.abs(x), 1 / 3); + return x < 0 ? -y : y; + } + static randomTriangular(min, max) { + return _MathUtils.randomTriangularWith(min, max, (min + max) * 0.5); + } + static randomTriangularWith(min, max, mode) { + const u = Math.random(); + const d = max - min; + if (u <= (mode - min) / d) return min + Math.sqrt(u * d * (mode - min)); + return max - Math.sqrt((1 - u) * d * (max - mode)); + } + static isPowerOfTwo(value) { + return value && (value & value - 1) === 0; + } + }; + var Interpolation = class _Interpolation { + static linear = new class extends _Interpolation { + applyInternal(a) { + return a; + } + }(); + /** Aka "smoothstep". */ + static smooth = new class extends _Interpolation { + applyInternal(a) { + return a * a * (3 - 2 * a); + } + }(); + /** Slow, then fast. */ + static slowFast = new class extends _Interpolation { + applyInternal(a) { + return a * a; + } + }(); + /** Fast, then slow. */ + static fastSlow = new class extends _Interpolation { + applyInternal(a) { + return (a - 1) * (a - 1) * -1 + 1; + } + }(); + static circle = new class extends _Interpolation { + applyInternal(a) { + if (a <= 0.5) { + a *= 2; + return (1 - Math.sqrt(1 - a * a)) / 2; + } + a--; + a *= 2; + return (Math.sqrt(1 - a * a) + 1) / 2; + } + }(); + apply(start, end, a) { + if (end === void 0 || a === void 0) return this.applyInternal(start); + return start + (end - start) * this.applyInternal(a); + } + }; + var Pow = class extends Interpolation { + power = 2; + constructor(power) { + super(); + this.power = power; + } + applyInternal(a) { + if (a <= 0.5) return Math.pow(a * 2, this.power) / 2; + return Math.pow((a - 1) * 2, this.power) / (this.power % 2 === 0 ? -2 : 2) + 1; + } + }; + var PowOut = class extends Pow { + constructor(power) { + super(power); + } + applyInternal(a) { + return Math.pow(a - 1, this.power) * (this.power % 2 === 0 ? -1 : 1) + 1; + } + }; + var Utils = class _Utils { + static SUPPORTS_TYPED_ARRAYS = typeof Float32Array !== "undefined"; + static arrayCopy(source, sourceStart, dest, destStart, numElements) { + for (let i = sourceStart, j = destStart; i < sourceStart + numElements; i++, j++) { + dest[j] = source[i]; + } + } + static arrayFill(array, fromIndex, toIndex, value) { + for (let i = fromIndex; i < toIndex; i++) + array[i] = value; + } + // biome-ignore lint/suspicious/noExplicitAny: ok any in this case + static setArraySize(array, size, value = 0) { + const oldSize = array.length; + if (oldSize === size) return array; + array.length = size; + if (oldSize < size) { + for (let i = oldSize; i < size; i++) array[i] = value; + } + return array; + } + // biome-ignore lint/suspicious/noExplicitAny: ok any in this case + static ensureArrayCapacity(array, size, value = 0) { + if (array.length >= size) return array; + return _Utils.setArraySize(array, size, value); + } + static newArray(size, defaultValue) { + const array = []; + for (let i = 0; i < size; i++) array[i] = defaultValue; + return array; + } + static newFloatArray(size) { + if (_Utils.SUPPORTS_TYPED_ARRAYS) + return new Float32Array(size); + else { + const array = []; + for (let i = 0; i < array.length; i++) array[i] = 0; + return array; + } + } + static newShortArray(size) { + if (_Utils.SUPPORTS_TYPED_ARRAYS) + return new Int16Array(size); + else { + const array = []; + for (let i = 0; i < array.length; i++) array[i] = 0; + return array; + } + } + static toFloatArray(array) { + return _Utils.SUPPORTS_TYPED_ARRAYS ? new Float32Array(array) : array; + } + static toSinglePrecision(value) { + return _Utils.SUPPORTS_TYPED_ARRAYS ? Math.fround(value) : value; + } + // This function is used to fix WebKit 602 specific issue described at https://esotericsoftware.com/forum/d/10109-ios-10-disappearing-graphics + static webkit602BugfixHelper(alpha) { + } + static contains(array, element, identity = true) { + for (let i = 0; i < array.length; i++) + if (array[i] === element) return true; + return false; + } + // biome-ignore lint/suspicious/noExplicitAny: ok any in this case + static enumValue(type, name) { + return type[name[0].toUpperCase() + name.slice(1)]; + } + }; + var DebugUtils = class { + static logBones(skeleton) { + for (let i = 0; i < skeleton.bones.length; i++) { + const bone = skeleton.bones[i].appliedPose; + console.log(`${bone.bone.data.name}, ${bone.a}, ${bone.b}, ${bone.c}, ${bone.d}, ${bone.worldX}, ${bone.worldY}`); + } + } + }; + var Pool = class { + items = []; + instantiator; + constructor(instantiator) { + this.instantiator = instantiator; + } + obtain() { + return this.items.length > 0 ? this.items.pop() : this.instantiator(); + } + free(item) { + item.reset?.(); + this.items.push(item); + } + freeAll(items) { + for (let i = 0; i < items.length; i++) + this.free(items[i]); + } + clear() { + this.items.length = 0; + } + }; + var Vector2 = class { + constructor(x = 0, y = 0) { + this.x = x; + this.y = y; + } + set(x, y) { + this.x = x; + this.y = y; + return this; + } + length() { + const x = this.x; + const y = this.y; + return Math.sqrt(x * x + y * y); + } + normalize() { + const len = this.length(); + if (len !== 0) { + this.x /= len; + this.y /= len; + } + return this; + } + }; + var TimeKeeper = class { + maxDelta = 0.064; + framesPerSecond = 0; + delta = 0; + totalTime = 0; + lastTime = Date.now() / 1e3; + frameCount = 0; + frameTime = 0; + update() { + const now = Date.now() / 1e3; + this.delta = now - this.lastTime; + this.frameTime += this.delta; + this.totalTime += this.delta; + if (this.delta > this.maxDelta) this.delta = this.maxDelta; + this.lastTime = now; + this.frameCount++; + if (this.frameTime > 1) { + this.framesPerSecond = this.frameCount / this.frameTime; + this.frameTime = 0; + this.frameCount = 0; + } + } + }; + var WindowedMean = class { + values; + addedValues = 0; + lastValue = 0; + mean = 0; + dirty = true; + constructor(windowSize = 32) { + this.values = new Array(windowSize); + } + hasEnoughData() { + return this.addedValues >= this.values.length; + } + addValue(value) { + if (this.addedValues < this.values.length) this.addedValues++; + this.values[this.lastValue++] = value; + if (this.lastValue > this.values.length - 1) this.lastValue = 0; + this.dirty = true; + } + getMean() { + if (this.hasEnoughData()) { + if (this.dirty) { + let mean = 0; + for (let i = 0; i < this.values.length; i++) + mean += this.values[i]; + this.mean = mean / this.values.length; + this.dirty = false; + } + return this.mean; + } + return 0; + } + }; + + // spine-core/src/Texture.ts + var Texture = class { + _image; + constructor(image) { + this._image = image; + } + getImage() { + return this._image; + } + }; + var TextureFilter = /* @__PURE__ */ ((TextureFilter2) => { + TextureFilter2[TextureFilter2["Nearest"] = 9728] = "Nearest"; + TextureFilter2[TextureFilter2["Linear"] = 9729] = "Linear"; + TextureFilter2[TextureFilter2["MipMap"] = 9987] = "MipMap"; + TextureFilter2[TextureFilter2["MipMapNearestNearest"] = 9984] = "MipMapNearestNearest"; + TextureFilter2[TextureFilter2["MipMapLinearNearest"] = 9985] = "MipMapLinearNearest"; + TextureFilter2[TextureFilter2["MipMapNearestLinear"] = 9986] = "MipMapNearestLinear"; + TextureFilter2[TextureFilter2["MipMapLinearLinear"] = 9987] = "MipMapLinearLinear"; + return TextureFilter2; + })(TextureFilter || {}); + var TextureWrap = /* @__PURE__ */ ((TextureWrap2) => { + TextureWrap2[TextureWrap2["MirroredRepeat"] = 33648] = "MirroredRepeat"; + TextureWrap2[TextureWrap2["ClampToEdge"] = 33071] = "ClampToEdge"; + TextureWrap2[TextureWrap2["Repeat"] = 10497] = "Repeat"; + return TextureWrap2; + })(TextureWrap || {}); + var TextureRegion = class { + texture; + u = 0; + v = 0; + u2 = 0; + v2 = 0; + width = 0; + height = 0; + degrees = 0; + offsetX = 0; + offsetY = 0; + originalWidth = 0; + originalHeight = 0; + }; + var FakeTexture = class extends Texture { + setFilters(minFilter, magFilter) { + } + setWraps(uWrap, vWrap) { + } + dispose() { + } + }; + + // spine-core/src/TextureAtlas.ts + var TextureAtlas = class { + pages = []; + regions = []; + constructor(atlasText) { + const reader = new TextureAtlasReader(atlasText); + const entry = new Array(4); + const pageFields = {}; + pageFields.size = (page2) => { + page2.width = parseInt(entry[1]); + page2.height = parseInt(entry[2]); + }; + pageFields.format = () => { + }; + pageFields.filter = (page2) => { + page2.minFilter = Utils.enumValue(TextureFilter, entry[1]); + page2.magFilter = Utils.enumValue(TextureFilter, entry[2]); + }; + pageFields.repeat = (page2) => { + if (entry[1].indexOf("x") !== -1) page2.uWrap = 10497 /* Repeat */; + if (entry[1].indexOf("y") !== -1) page2.vWrap = 10497 /* Repeat */; + }; + pageFields.pma = (page2) => { + page2.pma = entry[1] === "true"; + }; + var regionFields = {}; + regionFields.xy = (region) => { + region.x = parseInt(entry[1]); + region.y = parseInt(entry[2]); + }; + regionFields.size = (region) => { + region.width = parseInt(entry[1]); + region.height = parseInt(entry[2]); + }; + regionFields.bounds = (region) => { + region.x = parseInt(entry[1]); + region.y = parseInt(entry[2]); + region.width = parseInt(entry[3]); + region.height = parseInt(entry[4]); + }; + regionFields.offset = (region) => { + region.offsetX = parseInt(entry[1]); + region.offsetY = parseInt(entry[2]); + }; + regionFields.orig = (region) => { + region.originalWidth = parseInt(entry[1]); + region.originalHeight = parseInt(entry[2]); + }; + regionFields.offsets = (region) => { + region.offsetX = parseInt(entry[1]); + region.offsetY = parseInt(entry[2]); + region.originalWidth = parseInt(entry[3]); + region.originalHeight = parseInt(entry[4]); + }; + regionFields.rotate = (region) => { + const value = entry[1]; + if (value === "true") + region.degrees = 90; + else if (value !== "false") + region.degrees = parseInt(value); + }; + regionFields.index = (region) => { + region.index = parseInt(entry[1]); + }; + let line = reader.readLine(); + while (line && line.trim().length === 0) + line = reader.readLine(); + while (true) { + if (!line || line.trim().length === 0) break; + if (reader.readEntry(entry, line) === 0) break; + line = reader.readLine(); + } + let page = null; + let names = null; + let values = null; + while (true) { + if (line === null) break; + if (line.trim().length === 0) { + page = null; + line = reader.readLine(); + } else if (!page) { + page = new TextureAtlasPage(line.trim()); + while (true) { + if (reader.readEntry(entry, line = reader.readLine()) === 0) break; + const field = pageFields[entry[0]]; + if (field) field(page); + } + this.pages.push(page); + } else { + const region = new TextureAtlasRegion(page, line); + while (true) { + const count = reader.readEntry(entry, line = reader.readLine()); + if (count === 0) break; + const field = regionFields[entry[0]]; + if (field) + field(region); + else { + if (!names) names = []; + if (!values) values = []; + names.push(entry[0]); + const entryValues = []; + for (let i = 0; i < count; i++) + entryValues.push(parseInt(entry[i + 1])); + values.push(entryValues); + } + } + if (region.originalWidth === 0 && region.originalHeight === 0) { + region.originalWidth = region.width; + region.originalHeight = region.height; + } + if (names && names.length > 0 && values && values.length > 0) { + region.names = names; + region.values = values; + names = null; + values = null; + } + region.u = region.x / page.width; + region.v = region.y / page.height; + if (region.degrees === 90) { + region.u2 = (region.x + region.height) / page.width; + region.v2 = (region.y + region.width) / page.height; + } else { + region.u2 = (region.x + region.width) / page.width; + region.v2 = (region.y + region.height) / page.height; + } + this.regions.push(region); + } + } + } + findRegion(name) { + for (let i = 0; i < this.regions.length; i++) { + if (this.regions[i].name === name) { + return this.regions[i]; + } + } + return null; + } + setTextures(assetManager, pathPrefix = "") { + for (const page of this.pages) + page.setTexture(assetManager.get(pathPrefix + page.name)); + } + dispose() { + for (let i = 0; i < this.pages.length; i++) { + this.pages[i].texture?.dispose(); + } + } + }; + var TextureAtlasReader = class { + lines; + index = 0; + constructor(text) { + this.lines = text.split(/\r\n|\r|\n/); + } + readLine() { + if (this.index >= this.lines.length) + return null; + return this.lines[this.index++]; + } + readEntry(entry, line) { + if (!line) return 0; + line = line.trim(); + if (line.length === 0) return 0; + const colon = line.indexOf(":"); + if (colon === -1) return 0; + entry[0] = line.substr(0, colon).trim(); + for (let i = 1, lastMatch = colon + 1; ; i++) { + const comma = line.indexOf(",", lastMatch); + if (comma === -1) { + entry[i] = line.substr(lastMatch).trim(); + return i; + } + entry[i] = line.substr(lastMatch, comma - lastMatch).trim(); + lastMatch = comma + 1; + if (i === 4) return 4; + } + } + }; + var TextureAtlasPage = class { + name; + minFilter = 9728 /* Nearest */; + magFilter = 9728 /* Nearest */; + uWrap = 33071 /* ClampToEdge */; + vWrap = 33071 /* ClampToEdge */; + texture = null; + width = 0; + height = 0; + pma = false; + regions = []; + constructor(name) { + this.name = name; + } + setTexture(texture) { + this.texture = texture; + texture.setFilters(this.minFilter, this.magFilter); + texture.setWraps(this.uWrap, this.vWrap); + for (const region of this.regions) + region.texture = texture; + } + }; + var TextureAtlasRegion = class extends TextureRegion { + page; + name; + x = 0; + y = 0; + offsetX = 0; + offsetY = 0; + originalWidth = 0; + originalHeight = 0; + index = 0; + degrees = 0; + names = null; + values = null; + constructor(page, name) { + super(); + this.page = page; + this.name = name; + page.regions.push(this); + } + }; + + // spine-core/src/attachments/Attachment.ts + var Attachment = class _Attachment { + static empty = []; + name; + /** Timelines for the timeline attachment are also applied to this attachment. + * @return May be null if no attachment-specific timelines should be applied. */ + timelineAttachment; + /** Slots that can have attachments whose {@link timelineAttachment} is this attachment. */ + timelineSlots = _Attachment.empty; + constructor(name) { + if (!name) throw new Error("name cannot be null."); + this.name = name; + this.timelineAttachment = this; + } + /** Returns true if the {@code slotIndex} or any {@link timelineSlots} have an attachment whose {@link timelineAttachment} is + * this attachment. + * @param slots The {@link Skeleton.slots}. + * @param slotIndex The timeline's primary slot index. */ + isTimelineActive(slots, slotIndex, appliedPose) { + let slot = slots[slotIndex]; + if (slot.bone.isActive()) { + const other = (appliedPose ? slot.getAppliedPose() : slot.getPose()).getAttachment(); + if (other != null && other.timelineAttachment === this) return true; + } + for (let i = 0, n = this.timelineSlots.length; i < n; i++) { + slot = slots[this.timelineSlots[i]]; + if (!slot.bone.isActive()) continue; + const other = (appliedPose ? slot.getAppliedPose() : slot.getPose()).getAttachment(); + if (other != null && other.timelineAttachment === this) return true; + } + return false; + } + }; + var VertexAttachment = class _VertexAttachment extends Attachment { + static nextID = 0; + /** The unique ID for this attachment. */ + id = _VertexAttachment.nextID++; + /** The bones that affect the {@link vertices}. The entries are, for each vertex, the number of bones affecting the vertex + * followed by that many bone indices, which is {@link Skeleton.getBones} index. Null if this attachment has no weights. */ + bones = null; + /** The vertex positions in the bone's coordinate system. For a non-weighted attachment, the values are `x,y` + * entries for each vertex. For a weighted attachment, the values are `x,y,weight` triplets for each bone affecting + * each vertex. */ + vertices = []; + /** The maximum number of world vertex values that can be output by + * {@link computeWorldVertices} using the `count` parameter. */ + worldVerticesLength = 0; + constructor(name) { + super(name); + } + /** Transforms the attachment's local {@link vertices} to world coordinates. If {@link SlotPose.getDeform} is not empty, it + * is used to deform the vertices. + * + * See World transforms in the Spine + * Runtimes Guide. + * @param start The index of the first {@link vertices} value to transform. Each vertex has 2 values, x and y. + * @param count The number of world vertex values to output. Must be <= {@link worldVerticesLength} - `start`. + * @param worldVertices The output world vertices. Must have a length >= `offset` + `count` * + * `stride` / 2. + * @param offset The `worldVertices` index to begin writing values. + * @param stride The number of `worldVertices` entries between the value pairs written. */ + computeWorldVertices(skeleton, slot, start, count, worldVertices2, offset, stride) { + count = offset + (count >> 1) * stride; + const deformArray = slot.appliedPose.deform; + let vertices = this.vertices; + const bones = this.bones; + if (!bones) { + if (deformArray.length > 0) vertices = deformArray; + const bone = slot.bone.appliedPose; + const x = bone.worldX; + const y = bone.worldY; + const a = bone.a, b = bone.b, c = bone.c, d = bone.d; + for (let v2 = start, w = offset; w < count; v2 += 2, w += stride) { + const vx = vertices[v2], vy = vertices[v2 + 1]; + worldVertices2[w] = vx * a + vy * b + x; + worldVertices2[w + 1] = vx * c + vy * d + y; + } + return; + } + let v = 0, skip = 0; + for (let i = 0; i < start; i += 2) { + const n = bones[v]; + v += n + 1; + skip += n; + } + const skeletonBones = skeleton.bones; + if (deformArray.length === 0) { + for (let w = offset, b = skip * 3; w < count; w += stride) { + let wx = 0, wy = 0; + let n = bones[v++]; + n += v; + for (; v < n; v++, b += 3) { + const bone = skeletonBones[bones[v]].appliedPose; + const vx = vertices[b], vy = vertices[b + 1], weight = vertices[b + 2]; + wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; + wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; + } + worldVertices2[w] = wx; + worldVertices2[w + 1] = wy; + } + } else { + const deform = deformArray; + for (let w = offset, b = skip * 3, f = skip << 1; w < count; w += stride) { + let wx = 0, wy = 0; + let n = bones[v++]; + n += v; + for (; v < n; v++, b += 3, f += 2) { + const bone = skeletonBones[bones[v]].appliedPose; + const vx = vertices[b] + deform[f], vy = vertices[b + 1] + deform[f + 1], weight = vertices[b + 2]; + wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; + wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; + } + worldVertices2[w] = wx; + worldVertices2[w + 1] = wy; + } + } + } + /** Does not copy id (generated) or name (set on construction). **/ + copyTo(attachment) { + if (this.bones) { + attachment.bones = []; + Utils.arrayCopy(this.bones, 0, attachment.bones, 0, this.bones.length); + } else + attachment.bones = null; + if (this.vertices) { + attachment.vertices = Utils.newFloatArray(this.vertices.length); + Utils.arrayCopy(this.vertices, 0, attachment.vertices, 0, this.vertices.length); + } + attachment.worldVerticesLength = this.worldVerticesLength; + attachment.timelineAttachment = this.timelineAttachment; + attachment.timelineSlots = this.timelineSlots; + } + }; + + // spine-core/src/attachments/MeshAttachment.ts + var MeshAttachment = class _MeshAttachment extends VertexAttachment { + sequence; + /** The UV pair for each vertex, normalized within the texture region. */ + regionUVs = []; + /** Triplets of vertex indices which describe the mesh's triangulation. */ + triangles = []; + /** The number of entries at the beginning of {@link vertices} that make up the mesh hull. */ + hullLength = 0; + /** The name of the texture region for this attachment. */ + path; + /** The color to tint the mesh. */ + color = new Color(1, 1, 1, 1); + sourceMesh = null; + /** Vertex index pairs describing edges for controlling triangulation, or null if nonessential data was not exported. Mesh + * triangles do not never cross edges. Triangulation is not performed at runtime. */ + edges = []; + /** The width of the mesh's image. Available only when nonessential data was exported. */ + width = 0; + /** The height of the mesh's image. Available only when nonessential data was exported. */ + height = 0; + tempColor = new Color(0, 0, 0, 0); + constructor(name, sequence) { + super(name); + this.sequence = sequence; + } + copy() { + if (this.sourceMesh) return this.newLinkedMesh(); + const copy = new _MeshAttachment(this.name, this.sequence.copy()); + copy.path = this.path; + copy.color.setFromColor(this.color); + this.copyTo(copy); + copy.regionUVs = []; + Utils.arrayCopy(this.regionUVs, 0, copy.regionUVs, 0, this.regionUVs.length); + copy.triangles = []; + Utils.arrayCopy(this.triangles, 0, copy.triangles, 0, this.triangles.length); + copy.hullLength = this.hullLength; + if (this.edges) { + copy.edges = []; + Utils.arrayCopy(this.edges, 0, copy.edges, 0, this.edges.length); + } + copy.width = this.width; + copy.height = this.height; + return copy; + } + updateSequence() { + this.sequence.update(this); + } + /** The source mesh if this is a linked mesh, else null. A linked mesh shares the {@link bones}, {@link vertices}, + * {@link regionUVs}, {@link triangles}, {@link hullLength}, {@link edges}, {@link width}, and {@link height} with the + * source mesh, but may have a different {@link name} or {@link path}, and therefore a different texture region. */ + getSourceMesh() { + return this.sourceMesh; + } + setSourceMesh(sourceMesh) { + this.sourceMesh = sourceMesh; + if (sourceMesh) { + this.bones = sourceMesh.bones; + this.vertices = sourceMesh.vertices; + this.worldVerticesLength = sourceMesh.worldVerticesLength; + this.regionUVs = sourceMesh.regionUVs; + this.triangles = sourceMesh.triangles; + this.hullLength = sourceMesh.hullLength; + this.worldVerticesLength = sourceMesh.worldVerticesLength; + this.edges = sourceMesh.edges; + this.width = sourceMesh.width; + this.height = sourceMesh.height; + } + } + /** Returns a new mesh with the {@link sourceMesh} set to this mesh's source mesh, if any, else to this mesh. **/ + newLinkedMesh() { + const copy = new _MeshAttachment(this.name, this.sequence.copy()); + copy.timelineAttachment = this.timelineAttachment; + copy.path = this.path; + copy.color.setFromColor(this.color); + copy.setSourceMesh(this.sourceMesh ? this.sourceMesh : this); + copy.updateSequence(); + return copy; + } + /** Computes {@link Sequence.getUVs | UVs} for a mesh attachment. + * @param uvs Output array for the computed UVs, same length as regionUVs. */ + static computeUVs(region, regionUVs, uvs) { + if (!region) throw new Error("Region not set."); + const n = uvs.length; + let u = region.u, v = region.v, width = 0, height = 0; + if (region instanceof TextureAtlasRegion) { + const page = region.page; + const textureWidth = page.width, textureHeight = page.height; + switch (region.degrees) { + case 90: + u -= (region.originalHeight - region.offsetY - region.height) / textureWidth; + v -= (region.originalWidth - region.offsetX - region.width) / textureHeight; + width = region.originalHeight / textureWidth; + height = region.originalWidth / textureHeight; + for (let i = 0; i < n; i += 2) { + uvs[i] = u + regionUVs[i + 1] * width; + uvs[i + 1] = v + (1 - regionUVs[i]) * height; + } + return; + case 180: + u -= (region.originalWidth - region.offsetX - region.width) / textureWidth; + v -= region.offsetY / textureHeight; + width = region.originalWidth / textureWidth; + height = region.originalHeight / textureHeight; + for (let i = 0; i < n; i += 2) { + uvs[i] = u + (1 - regionUVs[i]) * width; + uvs[i + 1] = v + (1 - regionUVs[i + 1]) * height; + } + return; + case 270: + u -= region.offsetY / textureWidth; + v -= region.offsetX / textureHeight; + width = region.originalHeight / textureWidth; + height = region.originalWidth / textureHeight; + for (let i = 0; i < n; i += 2) { + uvs[i] = u + (1 - regionUVs[i + 1]) * width; + uvs[i + 1] = v + regionUVs[i] * height; + } + return; + default: + u -= region.offsetX / textureWidth; + v -= (region.originalHeight - region.offsetY - region.height) / textureHeight; + width = region.originalWidth / textureWidth; + height = region.originalHeight / textureHeight; + } + } else if (!region) { + u = v = 0; + width = height = 1; + } else { + width = region.u2 - u; + height = region.v2 - v; + } + for (let i = 0; i < n; i += 2) { + uvs[i] = u + regionUVs[i] * width; + uvs[i + 1] = v + regionUVs[i + 1] * height; + } + } + }; + + // spine-core/src/attachments/RegionAttachment.ts + var RegionAttachment = class _RegionAttachment extends Attachment { + sequence; + /** The local x translation. */ + x = 0; + /** The local y translation. */ + y = 0; + /** The local scaleX. */ + scaleX = 1; + /** The local scaleY. */ + scaleY = 1; + /** The local rotation in degrees, counter clockwise. */ + rotation = 0; + /** The width of the region attachment in Spine. */ + width = 0; + /** The height of the region attachment in Spine. */ + height = 0; + /** The name of the texture region for this attachment. */ + path; + /** The color to tint the region attachment. */ + color = new Color(1, 1, 1, 1); + tempColor = new Color(1, 1, 1, 1); + constructor(name, sequence) { + super(name); + this.sequence = sequence; + } + copy() { + const copy = new _RegionAttachment(this.name, this.sequence.copy()); + copy.path = this.path; + copy.x = this.x; + copy.y = this.y; + copy.scaleX = this.scaleX; + copy.scaleY = this.scaleY; + copy.rotation = this.rotation; + copy.width = this.width; + copy.height = this.height; + copy.color.setFromColor(this.color); + return copy; + } + /** Transforms the attachment's four vertices to world coordinates. + * + * See World transforms in the Spine + * Runtimes Guide. + * @param worldVertices The output world vertices. Must have a length >= `offset` + 8. + * @param offset The `worldVertices` index to begin writing values. + * @param stride The number of `worldVertices` entries between the value pairs written. */ + computeWorldVertices(slot, vertexOffsets, worldVertices2, offset, stride) { + const bone = slot.bone.appliedPose; + const x = bone.worldX, y = bone.worldY; + const a = bone.a, b = bone.b, c = bone.c, d = bone.d; + let offsetX = vertexOffsets[0]; + let offsetY = vertexOffsets[1]; + worldVertices2[offset] = offsetX * a + offsetY * b + x; + worldVertices2[offset + 1] = offsetX * c + offsetY * d + y; + offset += stride; + offsetX = vertexOffsets[2]; + offsetY = vertexOffsets[3]; + worldVertices2[offset] = offsetX * a + offsetY * b + x; + worldVertices2[offset + 1] = offsetX * c + offsetY * d + y; + offset += stride; + offsetX = vertexOffsets[4]; + offsetY = vertexOffsets[5]; + worldVertices2[offset] = offsetX * a + offsetY * b + x; + worldVertices2[offset + 1] = offsetX * c + offsetY * d + y; + offset += stride; + offsetX = vertexOffsets[6]; + offsetY = vertexOffsets[7]; + worldVertices2[offset] = offsetX * a + offsetY * b + x; + worldVertices2[offset + 1] = offsetX * c + offsetY * d + y; + } + getOffsets(pose) { + return this.sequence.offsets[this.sequence.resolveIndex(pose)]; + } + updateSequence() { + this.sequence.update(this); + } + /** Computes {@link Sequence.getUVs | UVs} and {@link Sequence.getOffsets | offsets} for a region attachment. + * @param uvs Output array for the computed UVs, length of 8. + * @param offset Output array for the computed vertex offsets, length of 8. */ + static computeUVs(region, x, y, scaleX, scaleY, rotation, width, height, offset, uvs) { + if (!region) throw new Error("Region not set."); + const regionScaleX = width / region.originalWidth * scaleX; + const regionScaleY = height / region.originalHeight * scaleY; + const localX = -width / 2 * scaleX + region.offsetX * regionScaleX; + const localY = -height / 2 * scaleY + region.offsetY * regionScaleY; + const localX2 = localX + region.width * regionScaleX; + const localY2 = localY + region.height * regionScaleY; + const radians = rotation * MathUtils.degRad; + const cos = Math.cos(radians); + const sin = Math.sin(radians); + const localXCos = localX * cos + x; + const localXSin = localX * sin; + const localYCos = localY * cos + y; + const localYSin = localY * sin; + const localX2Cos = localX2 * cos + x; + const localX2Sin = localX2 * sin; + const localY2Cos = localY2 * cos + y; + const localY2Sin = localY2 * sin; + offset[0] = localXCos - localYSin; + offset[1] = localYCos + localXSin; + offset[2] = localXCos - localY2Sin; + offset[3] = localY2Cos + localXSin; + offset[4] = localX2Cos - localY2Sin; + offset[5] = localY2Cos + localX2Sin; + offset[6] = localX2Cos - localYSin; + offset[7] = localYCos + localX2Sin; + if (region == null) { + uvs[0] = 0; + uvs[1] = 0; + uvs[2] = 0; + uvs[3] = 1; + uvs[4] = 1; + uvs[5] = 1; + uvs[6] = 1; + uvs[7] = 0; + } else { + uvs[1] = region.v2; + uvs[2] = region.u; + uvs[5] = region.v; + uvs[6] = region.u2; + if (region.degrees === 90) { + uvs[0] = region.u2; + uvs[3] = region.v2; + uvs[4] = region.u; + uvs[7] = region.v; + } else { + uvs[0] = region.u; + uvs[3] = region.v; + uvs[4] = region.u2; + uvs[7] = region.v2; + } + } + } + static X1 = 0; + static Y1 = 1; + static C1R = 2; + static C1G = 3; + static C1B = 4; + static C1A = 5; + static U1 = 6; + static V1 = 7; + static X2 = 8; + static Y2 = 9; + static C2R = 10; + static C2G = 11; + static C2B = 12; + static C2A = 13; + static U2 = 14; + static V2 = 15; + static X3 = 16; + static Y3 = 17; + static C3R = 18; + static C3G = 19; + static C3B = 20; + static C3A = 21; + static U3 = 22; + static V3 = 23; + static X4 = 24; + static Y4 = 25; + static C4R = 26; + static C4G = 27; + static C4B = 28; + static C4A = 29; + static U4 = 30; + static V4 = 31; + }; + + // spine-core/src/attachments/Sequence.ts + var Sequence = class _Sequence { + static _nextID = 0; + id = _Sequence.nextID(); + /** The list of texture regions this sequence will display. */ + regions; + pathSuffix; + uvs; + /** Returns vertex offsets from the center of a {@link RegionAttachment}. Invalid to call for a {@link MeshAttachment}. */ + offsets; + /** The starting number for the numeric {@link getPath | path} suffix. */ + start = 0; + /** The minimum number of digits in the numeric {@link getPath | path} suffix, for zero padding. 0 for no zero + * padding. */ + digits = 0; + /** The index of the region to show for the setup pose. */ + setupIndex = 0; + /** @param count The number of texture regions this sequence will display. + * @param pathSuffix If true, the {@link getPath | path} has a numeric suffix. If false, all regions will use the + * same path, so `count` should be 1. */ + constructor(count, pathSuffix) { + this.regions = new Array(count); + this.pathSuffix = pathSuffix; + } + copy() { + const regionCount = this.regions.length; + const copy = new _Sequence(regionCount, this.pathSuffix); + Utils.arrayCopy(this.regions, 0, copy.regions, 0, regionCount); + copy.start = this.start; + copy.digits = this.digits; + copy.setupIndex = this.setupIndex; + if (this.uvs != null) { + const length = this.uvs[0].length; + copy.uvs = []; + for (let i = 0; i < regionCount; i++) { + copy.uvs[i] = Utils.newFloatArray(length); + Utils.arrayCopy(this.uvs[i], 0, copy.uvs[i], 0, length); + } + } + if (this.offsets != null) { + copy.offsets = []; + for (let i = 0; i < regionCount; i++) { + copy.offsets[i] = []; + Utils.arrayCopy(this.offsets[i], 0, copy.offsets[i], 0, 8); + } + } + return copy; + } + /** Computes UVs and offsets for the specified attachment. Must be called if the regions or attachment properties are + * changed. */ + update(attachment) { + const regionCount = this.regions.length; + if (attachment instanceof RegionAttachment) { + this.uvs = []; + this.offsets = []; + for (let i = 0; i < regionCount; i++) { + this.uvs[i] = Utils.newFloatArray(8); + this.offsets[i] = []; + RegionAttachment.computeUVs( + this.regions[i], + attachment.x, + attachment.y, + attachment.scaleX, + attachment.scaleY, + attachment.rotation, + attachment.width, + attachment.height, + this.offsets[i], + this.uvs[i] + ); + } + } else if (attachment instanceof MeshAttachment) { + const regionUVs = attachment.regionUVs; + this.uvs = []; + this.offsets = void 0; + for (let i = 0; i < regionCount; i++) { + this.uvs[i] = Utils.newFloatArray(regionUVs.length); + MeshAttachment.computeUVs(this.regions[i], regionUVs, this.uvs[i]); + } + } + } + /** Returns the {@link regions} index for the {@link SlotPose.getSequenceIndex}. */ + resolveIndex(pose) { + let index = pose.sequenceIndex; + if (index === -1) index = this.setupIndex; + if (index >= this.regions.length) index = this.regions.length - 1; + return index; + } + /** Returns the UVs for the specified index. {@link regions Regions} must be populated and {@link update} called + * before calling this method. */ + getUVs(index) { + return this.uvs[index]; + } + /** Returns true if the {@link getPath | path} has a numeric suffix. */ + hasPathSuffix() { + return this.pathSuffix; + } + /** Returns the specified base path with an optional numeric suffix for the specified index. */ + getPath(basePath, index) { + if (!this.pathSuffix) return basePath; + let result = basePath; + const frame = (this.start + index).toString(); + for (let i = this.digits - frame.length; i > 0; i--) + result += "0"; + result += frame; + return result; + } + static nextID() { + return _Sequence._nextID++; + } + }; + var SequenceMode = /* @__PURE__ */ ((SequenceMode2) => { + SequenceMode2[SequenceMode2["hold"] = 0] = "hold"; + SequenceMode2[SequenceMode2["once"] = 1] = "once"; + SequenceMode2[SequenceMode2["loop"] = 2] = "loop"; + SequenceMode2[SequenceMode2["pingpong"] = 3] = "pingpong"; + SequenceMode2[SequenceMode2["onceReverse"] = 4] = "onceReverse"; + SequenceMode2[SequenceMode2["loopReverse"] = 5] = "loopReverse"; + SequenceMode2[SequenceMode2["pingpongReverse"] = 6] = "pingpongReverse"; + return SequenceMode2; + })(SequenceMode || {}); + var SequenceModeValues = [ + 0 /* hold */, + 1 /* once */, + 2 /* loop */, + 3 /* pingpong */, + 4 /* onceReverse */, + 5 /* loopReverse */, + 6 /* pingpongReverse */ + ]; + + // spine-core/src/Animation.ts + var Animation = class { + /** The animation's name, unique across all animations in the skeleton. + * + * See {@link SkeletonData.findAnimation}. */ + name; + /** The duration of the animation in seconds, which is usually the highest time of all frames in the timelines. The duration is + * used to know when the animation has completed and, for animations that repeat, when it should loop back to the start. */ + timelines = []; + timelineIds; + /** {@link Skeleton.getBones} indices that this animation's timelines modify. + * + * See {@link BoneTimeline.bones}. */ + bones; + // Nonessential. + /** The color of the animation as it was in Spine, or a default color if nonessential data was not exported. */ + color = new Color(1, 1, 1, 1); + /** The duration of the animation in seconds, which is usually the highest time of all frames in the timeline. The duration is + * used to know when it has completed and when it should loop back to the start. */ + duration; + constructor(name, timelines, duration) { + if (!name) throw new Error("name cannot be null."); + this.name = name; + this.duration = duration; + this.timelineIds = new StringSet(); + this.bones = []; + this.setTimelines(timelines); + } + setTimelines(timelines) { + if (!timelines) throw new Error("timelines cannot be null."); + this.timelines = timelines; + const n = timelines.length; + this.timelineIds.clear(); + this.bones.length = 0; + const boneSet = /* @__PURE__ */ new Set(); + const items = timelines; + for (let i = 0; i < n; i++) { + const timeline = items[i]; + this.timelineIds.addAll(timeline.propertyIds); + if (isBoneTimeline(timeline) && boneSet.add(timeline.boneIndex)) + this.bones.push(timeline.boneIndex); + } + } + /** Returns true if this animation contains a timeline with any of the specified property IDs. + * + * See {@link Timeline.propertyIds}. */ + hasTimeline(ids) { + for (let i = 0; i < ids.length; i++) + if (this.timelineIds.contains(ids[i])) return true; + return false; + } + /** Applies the animation's timelines to the specified skeleton. + * + * See {@link Timeline.apply} and + * Applying Animations in the Spine Runtimes + * Guide. + * @param skeleton The skeleton the animation is applied to. This provides access to the bones, slots, and other skeleton + * components the timelines may change. + * @param lastTime The last time in seconds this animation was applied. Some timelines trigger only at discrete times, in which + * case all keys are triggered between `lastTime` (exclusive) and `time` (inclusive). Pass -1 + * the first time an animation is applied to ensure frame 0 is triggered. + * @param time The time in seconds the skeleton is being posed for. Timelines find the frame before and after this time and + * interpolate between the frame values. + * @param loop True if `time` beyond the {@link duration} repeats the animation, else the last frame is used. + * @param events If any events are fired, they are added to this list. Pass null to ignore fired events or if no timelines fire + * events. + * @param alpha 0 applies setup or current values (depending on `from`), 1 uses timeline values, and intermediate + * values interpolate between them. Adjusting `alpha` over time can mix an animation in or out. + * @param from Controls how `alpha` and `add` mix from current or setup pose values to timeline values. + * @param add If true, for timelines that support it, their values are added to the setup or current values (depending on + * `from`). + * @param out True when the animation is mixing out, else it is mixing in. Used by timelines that perform instant transitions. + * @param appliedPose True to modify {@link Posed.appliedPose}, else {@link Posed.pose} is modified. */ + apply(skeleton, lastTime, time, loop, events, alpha, from, add, out, appliedPose) { + if (!skeleton) throw new Error("skeleton cannot be null."); + if (loop && this.duration !== 0) { + time %= this.duration; + if (lastTime > 0) lastTime %= this.duration; + } + const timelines = this.timelines; + for (let i = 0, n = timelines.length; i < n; i++) + timelines[i].apply(skeleton, lastTime, time, events, alpha, from, add, out, appliedPose); + } + }; + var MixFrom = /* @__PURE__ */ ((MixFrom2) => { + MixFrom2[MixFrom2["current"] = 0] = "current"; + MixFrom2[MixFrom2["setup"] = 1] = "setup"; + MixFrom2[MixFrom2["first"] = 2] = "first"; + return MixFrom2; + })(MixFrom || {}); + var Property = /* @__PURE__ */ ((Property2) => { + Property2[Property2["rotate"] = 0] = "rotate"; + Property2[Property2["x"] = 1] = "x"; + Property2[Property2["y"] = 2] = "y"; + Property2[Property2["scaleX"] = 3] = "scaleX"; + Property2[Property2["scaleY"] = 4] = "scaleY"; + Property2[Property2["shearX"] = 5] = "shearX"; + Property2[Property2["shearY"] = 6] = "shearY"; + Property2[Property2["inherit"] = 7] = "inherit"; + Property2[Property2["rgb"] = 8] = "rgb"; + Property2[Property2["alpha"] = 9] = "alpha"; + Property2[Property2["rgb2"] = 10] = "rgb2"; + Property2[Property2["attachment"] = 11] = "attachment"; + Property2[Property2["deform"] = 12] = "deform"; + Property2[Property2["event"] = 13] = "event"; + Property2[Property2["drawOrder"] = 14] = "drawOrder"; + Property2[Property2["drawOrderFolder"] = 15] = "drawOrderFolder"; + Property2[Property2["ikConstraint"] = 16] = "ikConstraint"; + Property2[Property2["transformConstraint"] = 17] = "transformConstraint"; + Property2[Property2["pathConstraintPosition"] = 18] = "pathConstraintPosition"; + Property2[Property2["pathConstraintSpacing"] = 19] = "pathConstraintSpacing"; + Property2[Property2["pathConstraintMix"] = 20] = "pathConstraintMix"; + Property2[Property2["physicsConstraintInertia"] = 21] = "physicsConstraintInertia"; + Property2[Property2["physicsConstraintStrength"] = 22] = "physicsConstraintStrength"; + Property2[Property2["physicsConstraintDamping"] = 23] = "physicsConstraintDamping"; + Property2[Property2["physicsConstraintMass"] = 24] = "physicsConstraintMass"; + Property2[Property2["physicsConstraintWind"] = 25] = "physicsConstraintWind"; + Property2[Property2["physicsConstraintGravity"] = 26] = "physicsConstraintGravity"; + Property2[Property2["physicsConstraintMix"] = 27] = "physicsConstraintMix"; + Property2[Property2["physicsConstraintReset"] = 28] = "physicsConstraintReset"; + Property2[Property2["sequence"] = 29] = "sequence"; + Property2[Property2["sliderTime"] = 30] = "sliderTime"; + Property2[Property2["sliderMix"] = 31] = "sliderMix"; + return Property2; + })(Property || {}); + var Timeline = class { + propertyIds; + frames; + /** True if this timeline supports being applied additively. + * + * See the `add` parameter in {@link Timeline.apply}. */ + additive = false; + /** True if this timeline sets values instantaneously and does not support interpolation between frames. */ + instant = false; + constructor(frameCount, ...propertyIds) { + this.propertyIds = propertyIds; + this.frames = Utils.newFloatArray(frameCount * this.getFrameEntries()); + } + getPropertyIds() { + return this.propertyIds; + } + /** The number of values stored per frame. */ + getFrameEntries() { + return 1; + } + /** The number of frames in this timeline. */ + getFrameCount() { + return this.frames.length / this.getFrameEntries(); + } + /** The duration of the timeline in seconds, which is usually the highest time of all frames in the timeline. */ + getDuration() { + return this.frames[this.frames.length - this.getFrameEntries()]; + } + /** Linear search using the specified stride (default 1). + * @param time Must be >= the first value in `frames`. + * @return The index of the first value <= `time`. */ + static search(frames, time, step = 1) { + const n = frames.length; + for (let i = step; i < n; i += step) + if (frames[i] > time) return i - step; + return n - step; + } + }; + function isSlotTimeline(obj) { + return typeof obj === "object" && obj !== null && typeof obj.slotIndex === "number"; + } + var CurveTimeline = class extends Timeline { + curves; + // type, x, y, ... + constructor(frameCount, bezierCount, ...propertyIds) { + super(frameCount, ...propertyIds); + this.curves = Utils.newFloatArray( + frameCount + bezierCount * 18 + /*BEZIER_SIZE*/ + ); + this.curves[frameCount - 1] = 1; + } + /** Sets the specified key frame to linear interpolation. */ + setLinear(frame) { + this.curves[frame] = 0; + } + /** Sets the specified key frame to stepped interpolation. */ + setStepped(frame) { + this.curves[frame] = 1; + } + /** Shrinks the storage for Bezier curves, for use when `bezierCount` (specified in the constructor) was larger + * than the actual number of Bezier curves. */ + shrink(bezierCount) { + const size = this.getFrameCount() + bezierCount * 18; + if (this.curves.length > size) { + const newCurves = Utils.newFloatArray(size); + Utils.arrayCopy(this.curves, 0, newCurves, 0, size); + this.curves = newCurves; + } + } + /** Stores the segments for the specified Bezier curve. For timelines that modify multiple values, there may be more than + * one curve per frame. + * @param bezier The ordinal of this Bezier curve for this timeline, between 0 and `bezierCount - 1` (specified + * in the constructor), inclusive. + * @param frame Between 0 and `frameCount - 1`, inclusive. + * @param value The index of the value for this frame that this curve is used for. + * @param time1 The time for the first key. + * @param value1 The value for the first key. + * @param cx1 The time for the first Bezier handle. + * @param cy1 The value for the first Bezier handle. + * @param cx2 The time of the second Bezier handle. + * @param cy2 The value for the second Bezier handle. + * @param time2 The time for the second key. + * @param value2 The value for the second key. */ + setBezier(bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2) { + const curves = this.curves; + let i = this.getFrameCount() + bezier * 18; + if (value === 0) curves[frame] = 2 + i; + const tmpx = (time1 - cx1 * 2 + cx2) * 0.03, tmpy = (value1 - cy1 * 2 + cy2) * 0.03; + const dddx = ((cx1 - cx2) * 3 - time1 + time2) * 6e-3, dddy = ((cy1 - cy2) * 3 - value1 + value2) * 6e-3; + let ddx = tmpx * 2 + dddx, ddy = tmpy * 2 + dddy; + let dx = (cx1 - time1) * 0.3 + tmpx + dddx * 0.16666667, dy = (cy1 - value1) * 0.3 + tmpy + dddy * 0.16666667; + let x = time1 + dx, y = value1 + dy; + for (let n = i + 18; i < n; i += 2) { + curves[i] = x; + curves[i + 1] = y; + dx += ddx; + dy += ddy; + ddx += dddx; + ddy += dddy; + x += dx; + y += dy; + } + } + /** Returns the Bezier interpolated value for the specified time. + * @param frameIndex The index into {@link frames} for the values of the frame before `time`. + * @param valueOffset The offset from `frameIndex` to the value this curve is used for. + * @param i The index of the Bezier segments. See {@link getCurveType}. */ + getBezierValue(time, frameIndex, valueOffset, i) { + const curves = this.curves; + if (curves[i] > time) { + const x2 = this.frames[frameIndex], y2 = this.frames[frameIndex + valueOffset]; + return y2 + (time - x2) / (curves[i] - x2) * (curves[i + 1] - y2); + } + const n = i + 18; + for (i += 2; i < n; i += 2) { + if (curves[i] >= time) { + const x2 = curves[i - 2], y2 = curves[i - 1]; + return y2 + (time - x2) / (curves[i] - x2) * (curves[i + 1] - y2); + } + } + frameIndex += this.getFrameEntries(); + const x = curves[n - 2], y = curves[n - 1]; + return y + (time - x) / (this.frames[frameIndex] - x) * (this.frames[frameIndex + valueOffset] - y); + } + }; + var CurveTimeline1 = class _CurveTimeline1 extends CurveTimeline { + constructor(frameCount, bezierCount, propertyId) { + super(frameCount, bezierCount, propertyId); + } + getFrameEntries() { + return 2; + } + /** Sets the time and value for the specified frame. + * @param frame Between 0 and `frameCount`, inclusive. + * @param time The frame time in seconds. */ + setFrame(frame, time, value) { + frame <<= 1; + this.frames[frame] = time; + this.frames[ + frame + 1 + /*VALUE*/ + ] = value; + } + /** Returns the interpolated value for the specified time. */ + getCurveValue(time) { + const frames = this.frames; + let i = frames.length - 2; + for (let ii = 2; ii <= i; ii += 2) { + if (frames[ii] > time) { + i = ii - 2; + break; + } + } + const curveType = this.curves[i >> 1]; + switch (curveType) { + case 0: { + const before = frames[i], value = frames[ + i + 1 + /*VALUE*/ + ]; + return value + (time - before) / (frames[ + i + 2 + /*ENTRIES*/ + ] - before) * (frames[ + i + 2 + 1 + /*VALUE*/ + ] - value); + } + case 1: + return frames[ + i + 1 + /*VALUE*/ + ]; + } + return this.getBezierValue( + time, + i, + 1, + curveType - 2 + /*BEZIER*/ + ); + } + /** Returns the interpolated value for properties relative to the setup value. The timeline value is added to the setup + * value, rather than replacing it. + * + * See {@link Timeline.apply}. + * @param current The current value for the property. + * @param setup The setup value for the property. */ + getRelativeValue(time, alpha, from, add, current, setup) { + if (time < this.frames[0]) return _CurveTimeline1.beforeFirstKey(from, alpha, current, setup); + const value = this.getCurveValue(time); + return from === 1 /* setup */ ? setup + value * alpha : current + (add ? value : value + setup - current) * alpha; + } + getAbsoluteValue(time, alpha, from, add, current, setup, value) { + if (value === void 0) + return this.getAbsoluteValue1(time, alpha, from, add, current, setup); + else + return this.getAbsoluteValue2(time, alpha, from, add, current, setup, value); + } + getAbsoluteValue1(time, alpha, from, add, current, setup) { + if (time < this.frames[0]) return _CurveTimeline1.beforeFirstKey(from, alpha, current, setup); + const value = this.getCurveValue(time); + return from === 1 /* setup */ ? setup + (add ? value : value - setup) * alpha : current + (add ? value : value - current) * alpha; + } + getAbsoluteValue2(time, alpha, from, add, current, setup, value) { + if (time < this.frames[0]) return _CurveTimeline1.beforeFirstKey(from, alpha, current, setup); + return from === 1 /* setup */ ? setup + (add ? value : value - setup) * alpha : current + (add ? value : value - current) * alpha; + } + /** Returns the interpolated value for scale properties. The timeline and setup values are multiplied and sign adjusted. + * + * See {@link Timeline.apply}. + * @param current The current value for the property. + * @param setup The setup value for the property. */ + getScaleValue(time, alpha, from, add, out, current, setup) { + if (time < this.frames[0]) return _CurveTimeline1.beforeFirstKey(from, alpha, current, setup); + const value = this.getCurveValue(time) * setup; + if (alpha === 1 && !add) return value; + let base = from === 1 /* setup */ ? setup : current; + if (add) return base + (value - setup) * alpha; + if (out) return base + (Math.abs(value) * Math.sign(base) - base) * alpha; + base = Math.abs(base) * Math.sign(value); + return base + (value - base) * alpha; + } + static beforeFirstKey(from, alpha, current, setup) { + switch (from) { + case 1 /* setup */: + return setup; + case 2 /* first */: + return current + (setup - current) * alpha; + case 0 /* current */: + return current; + } + } + }; + function isBoneTimeline(obj) { + return typeof obj === "object" && obj !== null && typeof obj.boneIndex === "number"; + } + var BoneTimeline1 = class extends CurveTimeline1 { + boneIndex; + constructor(frameCount, bezierCount, boneIndex, property) { + super(frameCount, bezierCount, `${property}|${boneIndex}`); + this.boneIndex = boneIndex; + this.additive = true; + } + apply(skeleton, lastTime, time, events, alpha, from, add, out, appliedPose) { + const bone = skeleton.bones[this.boneIndex]; + if (bone.active) + this.apply1(appliedPose ? bone.appliedPose : bone.pose, bone.data.setupPose, time, alpha, from, add, out); + } + }; + var BoneTimeline2 = class extends CurveTimeline { + boneIndex; + /** @param bezierCount The maximum number of Bezier curves. See {@link shrink}. + * @param propertyIds Unique identifiers for the properties the timeline modifies. */ + constructor(frameCount, bezierCount, boneIndex, property1, property2) { + super(frameCount, bezierCount, `${property1}|${boneIndex}`, `${property2}|${boneIndex}`); + this.boneIndex = boneIndex; + this.additive = true; + } + getFrameEntries() { + return 3; + } + /** Sets the time and values for the specified frame. + * @param frame Between 0 and `frameCount`, inclusive. + * @param time The frame time in seconds. */ + setFrame(frame, time, value1, value2) { + frame *= 3; + this.frames[frame] = time; + this.frames[ + frame + 1 + /*VALUE1*/ + ] = value1; + this.frames[ + frame + 2 + /*VALUE2*/ + ] = value2; + } + apply(skeleton, lastTime, time, events, alpha, from, add, out, appliedPose) { + const bone = skeleton.bones[this.boneIndex]; + if (bone.active) + this.apply1(appliedPose ? bone.appliedPose : bone.pose, bone.data.setupPose, time, alpha, from, add, out); + } + }; + var RotateTimeline = class extends BoneTimeline1 { + constructor(frameCount, bezierCount, boneIndex) { + super(frameCount, bezierCount, boneIndex, 0 /* rotate */); + } + apply1(pose, setup, time, alpha, from, add, out) { + pose.rotation = this.getRelativeValue(time, alpha, from, add, pose.rotation, setup.rotation); + } + }; + var TranslateTimeline = class extends BoneTimeline2 { + constructor(frameCount, bezierCount, boneIndex) { + super(frameCount, bezierCount, boneIndex, 1 /* x */, 2 /* y */); + } + apply1(pose, setup, time, alpha, from, add, out) { + const frames = this.frames; + if (time < frames[0]) { + switch (from) { + case 1 /* setup */: + pose.x = setup.x; + pose.y = setup.y; + break; + case 2 /* first */: + pose.x += (setup.x - pose.x) * alpha; + pose.y += (setup.y - pose.y) * alpha; + break; + } + return; + } + let x = 0, y = 0; + const i = Timeline.search( + frames, + time, + 3 + /*ENTRIES*/ + ); + const curveType = this.curves[ + i / 3 + /*ENTRIES*/ + ]; + switch (curveType) { + case 0: { + const before = frames[i]; + x = frames[ + i + 1 + /*VALUE1*/ + ]; + y = frames[ + i + 2 + /*VALUE2*/ + ]; + const t = (time - before) / (frames[ + i + 3 + /*ENTRIES*/ + ] - before); + x += (frames[ + i + 3 + 1 + /*VALUE1*/ + ] - x) * t; + y += (frames[ + i + 3 + 2 + /*VALUE2*/ + ] - y) * t; + break; + } + case 1: + x = frames[ + i + 1 + /*VALUE1*/ + ]; + y = frames[ + i + 2 + /*VALUE2*/ + ]; + break; + default: + x = this.getBezierValue( + time, + i, + 1, + curveType - 2 + /*BEZIER*/ + ); + y = this.getBezierValue( + time, + i, + 2, + curveType + 18 - 2 + /*BEZIER*/ + ); + } + if (from === 1 /* setup */) { + pose.x = setup.x + x * alpha; + pose.y = setup.y + y * alpha; + } else if (add) { + pose.x += x * alpha; + pose.y += y * alpha; + } else { + pose.x += (setup.x + x - pose.x) * alpha; + pose.y += (setup.y + y - pose.y) * alpha; + } + } + }; + var TranslateXTimeline = class extends BoneTimeline1 { + constructor(frameCount, bezierCount, boneIndex) { + super(frameCount, bezierCount, boneIndex, 1 /* x */); + } + apply1(pose, setup, time, alpha, from, add, out) { + pose.x = this.getRelativeValue(time, alpha, from, add, pose.x, setup.x); + } + }; + var TranslateYTimeline = class extends BoneTimeline1 { + constructor(frameCount, bezierCount, boneIndex) { + super(frameCount, bezierCount, boneIndex, 2 /* y */); + } + apply1(pose, setup, time, alpha, from, add, out) { + pose.y = this.getRelativeValue(time, alpha, from, add, pose.y, setup.y); + } + }; + var ScaleTimeline = class extends BoneTimeline2 { + constructor(frameCount, bezierCount, boneIndex) { + super(frameCount, bezierCount, boneIndex, 3 /* scaleX */, 4 /* scaleY */); + } + apply1(pose, setup, time, alpha, from, add, out) { + const frames = this.frames; + if (time < frames[0]) { + switch (from) { + case 1 /* setup */: + pose.scaleX = setup.scaleX; + pose.scaleY = setup.scaleY; + break; + case 2 /* first */: + pose.scaleX += (setup.scaleX - pose.scaleX) * alpha; + pose.scaleY += (setup.scaleY - pose.scaleY) * alpha; + break; + } + return; + } + let x, y; + const i = Timeline.search( + frames, + time, + 3 + /*ENTRIES*/ + ); + const curveType = this.curves[ + i / 3 + /*ENTRIES*/ + ]; + switch (curveType) { + case 0: { + const before = frames[i]; + x = frames[ + i + 1 + /*VALUE1*/ + ]; + y = frames[ + i + 2 + /*VALUE2*/ + ]; + const t = (time - before) / (frames[ + i + 3 + /*ENTRIES*/ + ] - before); + x += (frames[ + i + 3 + 1 + /*VALUE1*/ + ] - x) * t; + y += (frames[ + i + 3 + 2 + /*VALUE2*/ + ] - y) * t; + break; + } + case 1: + x = frames[ + i + 1 + /*VALUE1*/ + ]; + y = frames[ + i + 2 + /*VALUE2*/ + ]; + break; + default: + x = this.getBezierValue( + time, + i, + 1, + curveType - 2 + /*BEZIER*/ + ); + y = this.getBezierValue( + time, + i, + 2, + curveType + 18 - 2 + /*BEZIER*/ + ); + } + x *= setup.scaleX; + y *= setup.scaleY; + if (alpha === 1 && !add) { + pose.scaleX = x; + pose.scaleY = y; + } else { + let bx = 0, by = 0; + if (from === 1 /* setup */) { + bx = setup.scaleX; + by = setup.scaleY; + } else { + bx = pose.scaleX; + by = pose.scaleY; + } + if (add) { + pose.scaleX = bx + (x - setup.scaleX) * alpha; + pose.scaleY = by + (y - setup.scaleY) * alpha; + } else if (out) { + pose.scaleX = bx + (Math.abs(x) * Math.sign(bx) - bx) * alpha; + pose.scaleY = by + (Math.abs(y) * Math.sign(by) - by) * alpha; + } else { + bx = Math.abs(bx) * Math.sign(x); + by = Math.abs(by) * Math.sign(y); + pose.scaleX = bx + (x - bx) * alpha; + pose.scaleY = by + (y - by) * alpha; + } + } + } + }; + var ScaleXTimeline = class extends BoneTimeline1 { + constructor(frameCount, bezierCount, boneIndex) { + super(frameCount, bezierCount, boneIndex, 3 /* scaleX */); + } + apply1(pose, setup, time, alpha, from, add, out) { + pose.scaleX = this.getScaleValue(time, alpha, from, add, out, pose.scaleX, setup.scaleX); + } + }; + var ScaleYTimeline = class extends BoneTimeline1 { + constructor(frameCount, bezierCount, boneIndex) { + super(frameCount, bezierCount, boneIndex, 4 /* scaleY */); + } + apply1(pose, setup, time, alpha, from, add, out) { + pose.scaleY = this.getScaleValue(time, alpha, from, add, out, pose.scaleY, setup.scaleY); + } + }; + var ShearTimeline = class extends BoneTimeline2 { + constructor(frameCount, bezierCount, boneIndex) { + super(frameCount, bezierCount, boneIndex, 5 /* shearX */, 6 /* shearY */); + } + apply1(pose, setup, time, alpha, from, add, out) { + const frames = this.frames; + if (time < frames[0]) { + switch (from) { + case 1 /* setup */: + pose.shearX = setup.shearX; + pose.shearY = setup.shearY; + break; + case 2 /* first */: + pose.shearX += (setup.shearX - pose.shearX) * alpha; + pose.shearY += (setup.shearY - pose.shearY) * alpha; + break; + } + return; + } + let x = 0, y = 0; + const i = Timeline.search( + frames, + time, + 3 + /*ENTRIES*/ + ); + const curveType = this.curves[ + i / 3 + /*ENTRIES*/ + ]; + switch (curveType) { + case 0: { + const before = frames[i]; + x = frames[ + i + 1 + /*VALUE1*/ + ]; + y = frames[ + i + 2 + /*VALUE2*/ + ]; + const t = (time - before) / (frames[ + i + 3 + /*ENTRIES*/ + ] - before); + x += (frames[ + i + 3 + 1 + /*VALUE1*/ + ] - x) * t; + y += (frames[ + i + 3 + 2 + /*VALUE2*/ + ] - y) * t; + break; + } + case 1: + x = frames[ + i + 1 + /*VALUE1*/ + ]; + y = frames[ + i + 2 + /*VALUE2*/ + ]; + break; + default: + x = this.getBezierValue( + time, + i, + 1, + curveType - 2 + /*BEZIER*/ + ); + y = this.getBezierValue( + time, + i, + 2, + curveType + 18 - 2 + /*BEZIER*/ + ); + } + if (from === 1 /* setup */) { + pose.shearX = setup.shearX + x * alpha; + pose.shearY = setup.shearY + y * alpha; + } else if (add) { + pose.shearX += x * alpha; + pose.shearY += y * alpha; + } else { + pose.shearX += (setup.shearX + x - pose.shearX) * alpha; + pose.shearY += (setup.shearY + y - pose.shearY) * alpha; + } + } + }; + var ShearXTimeline = class extends BoneTimeline1 { + constructor(frameCount, bezierCount, boneIndex) { + super(frameCount, bezierCount, boneIndex, 5 /* shearX */); + } + apply1(pose, setup, time, alpha, from, add, out) { + pose.shearX = this.getRelativeValue(time, alpha, from, add, pose.shearX, setup.shearX); + } + }; + var ShearYTimeline = class extends BoneTimeline1 { + constructor(frameCount, bezierCount, boneIndex) { + super(frameCount, bezierCount, boneIndex, 6 /* shearY */); + } + apply1(pose, setup, time, alpha, from, add, out) { + pose.shearY = this.getRelativeValue(time, alpha, from, add, pose.shearY, setup.shearY); + } + }; + var InheritTimeline = class extends Timeline { + boneIndex; + constructor(frameCount, boneIndex) { + super(frameCount, `${7 /* inherit */}|${boneIndex}`); + this.boneIndex = boneIndex; + this.instant = true; + } + getFrameEntries() { + return 2; + } + /** Sets the inherit transform mode for the specified frame. + * @param frame Between 0 and `frameCount`, inclusive. + * @param time The frame time in seconds. */ + setFrame(frame, time, inherit) { + frame *= 2; + this.frames[frame] = time; + this.frames[ + frame + 1 + /*INHERIT*/ + ] = inherit; + } + apply(skeleton, lastTime, time, events, alpha, from, add, out, appliedPose) { + const bone = skeleton.bones[this.boneIndex]; + if (!bone.active) return; + const pose = appliedPose ? bone.appliedPose : bone.pose; + if (out) { + if (from !== 0 /* current */) pose.inherit = bone.data.setupPose.inherit; + } else { + const frames = this.frames; + if (time < frames[0]) { + if (from !== 0 /* current */) pose.inherit = bone.data.setupPose.inherit; + } else + pose.inherit = this.frames[ + Timeline.search( + frames, + time, + 2 + /*ENTRIES*/ + ) + 1 + /*INHERIT*/ + ]; + } + } + }; + var SlotCurveTimeline = class extends CurveTimeline { + slotIndex; + constructor(frameCount, bezierCount, slotIndex, ...propertyIds) { + super(frameCount, bezierCount, ...propertyIds); + this.slotIndex = slotIndex; + } + apply(skeleton, lastTime, time, events, alpha, from, add, out, appliedPose) { + const slot = skeleton.slots[this.slotIndex]; + if (slot.bone.active) this.apply1(slot, appliedPose ? slot.appliedPose : slot.pose, time, alpha, from, add); + } + }; + var RGBATimeline = class extends SlotCurveTimeline { + constructor(frameCount, bezierCount, slotIndex) { + super( + frameCount, + bezierCount, + slotIndex, + // + `${8 /* rgb */}|${slotIndex}`, + // + `${9 /* alpha */}|${slotIndex}` + ); + } + getFrameEntries() { + return 5; + } + /** Sets the time in seconds, red, green, blue, and alpha for the specified key frame. */ + setFrame(frame, time, r, g, b, a) { + frame *= 5; + this.frames[frame] = time; + this.frames[ + frame + 1 + /*R*/ + ] = r; + this.frames[ + frame + 2 + /*G*/ + ] = g; + this.frames[ + frame + 3 + /*B*/ + ] = b; + this.frames[ + frame + 4 + /*A*/ + ] = a; + } + apply1(slot, pose, time, alpha, from, add) { + const color = pose.color; + const frames = this.frames; + if (time < frames[0]) { + const setup = slot.data.setupPose.color; + switch (from) { + case 1 /* setup */: + color.setFromColor(setup); + break; + case 2 /* first */: + color.add( + (setup.r - color.r) * alpha, + (setup.g - color.g) * alpha, + (setup.b - color.b) * alpha, + (setup.a - color.a) * alpha + ); + break; + } + return; + } + let r = 0, g = 0, b = 0, a = 0; + const i = Timeline.search( + frames, + time, + 5 + /*ENTRIES*/ + ); + const curveType = this.curves[ + i / 5 + /*ENTRIES*/ + ]; + switch (curveType) { + case 0: { + const before = frames[i]; + r = frames[ + i + 1 + /*R*/ + ]; + g = frames[ + i + 2 + /*G*/ + ]; + b = frames[ + i + 3 + /*B*/ + ]; + a = frames[ + i + 4 + /*A*/ + ]; + const t = (time - before) / (frames[ + i + 5 + /*ENTRIES*/ + ] - before); + r += (frames[ + i + 5 + 1 + /*R*/ + ] - r) * t; + g += (frames[ + i + 5 + 2 + /*G*/ + ] - g) * t; + b += (frames[ + i + 5 + 3 + /*B*/ + ] - b) * t; + a += (frames[ + i + 5 + 4 + /*A*/ + ] - a) * t; + break; + } + case 1: + r = frames[ + i + 1 + /*R*/ + ]; + g = frames[ + i + 2 + /*G*/ + ]; + b = frames[ + i + 3 + /*B*/ + ]; + a = frames[ + i + 4 + /*A*/ + ]; + break; + default: + r = this.getBezierValue( + time, + i, + 1, + curveType - 2 + /*BEZIER*/ + ); + g = this.getBezierValue( + time, + i, + 2, + curveType + 18 - 2 + /*BEZIER*/ + ); + b = this.getBezierValue( + time, + i, + 3, + curveType + 18 * 2 - 2 + /*BEZIER*/ + ); + a = this.getBezierValue( + time, + i, + 4, + curveType + 18 * 3 - 2 + /*BEZIER*/ + ); + } + if (alpha === 1) + color.set(r, g, b, a); + else { + if (from === 1 /* setup */) { + const setup = slot.data.setupPose.color; + color.set( + setup.r + (r - setup.r) * alpha, + setup.g + (g - setup.g) * alpha, + setup.b + (b - setup.b) * alpha, + setup.a + (a - setup.a) * alpha + ); + } else + color.add((r - color.r) * alpha, (g - color.g) * alpha, (b - color.b) * alpha, (a - color.a) * alpha); + } + } + }; + var RGBTimeline = class extends SlotCurveTimeline { + constructor(frameCount, bezierCount, slotIndex) { + super(frameCount, bezierCount, slotIndex, `${8 /* rgb */}|${slotIndex}`); + } + getFrameEntries() { + return 4; + } + /** Sets the time in seconds, red, green, blue, and alpha for the specified key frame. */ + setFrame(frame, time, r, g, b) { + frame <<= 2; + this.frames[frame] = time; + this.frames[ + frame + 1 + /*R*/ + ] = r; + this.frames[ + frame + 2 + /*G*/ + ] = g; + this.frames[ + frame + 3 + /*B*/ + ] = b; + } + apply1(slot, pose, time, alpha, from, add) { + const color = pose.color; + let r = 0, g = 0, b = 0; + const frames = this.frames; + if (time < frames[0]) { + const setup = slot.data.setupPose.color; + switch (from) { + case 1 /* setup */: { + color.r = setup.r; + color.g = setup.g; + color.b = setup.b; + break; + } + case 2 /* first */: { + color.r += (setup.r - color.r) * alpha; + color.g += (setup.g - color.g) * alpha; + color.b += (setup.b - color.b) * alpha; + break; + } + } + return; + } + const i = Timeline.search( + frames, + time, + 4 + /*ENTRIES*/ + ); + const curveType = this.curves[i >> 2]; + switch (curveType) { + case 0: { + const before = frames[i]; + r = frames[ + i + 1 + /*R*/ + ]; + g = frames[ + i + 2 + /*G*/ + ]; + b = frames[ + i + 3 + /*B*/ + ]; + const t = (time - before) / (frames[ + i + 4 + /*ENTRIES*/ + ] - before); + r += (frames[ + i + 4 + 1 + /*R*/ + ] - r) * t; + g += (frames[ + i + 4 + 2 + /*G*/ + ] - g) * t; + b += (frames[ + i + 4 + 3 + /*B*/ + ] - b) * t; + break; + } + case 1: + r = frames[ + i + 1 + /*R*/ + ]; + g = frames[ + i + 2 + /*G*/ + ]; + b = frames[ + i + 3 + /*B*/ + ]; + break; + default: + r = this.getBezierValue( + time, + i, + 1, + curveType - 2 + /*BEZIER*/ + ); + g = this.getBezierValue( + time, + i, + 2, + curveType + 18 - 2 + /*BEZIER*/ + ); + b = this.getBezierValue( + time, + i, + 3, + curveType + 18 * 2 - 2 + /*BEZIER*/ + ); + } + if (alpha !== 1) { + if (from === 1 /* setup */) { + const setup = slot.data.setupPose.color; + r = setup.r + (r - setup.r) * alpha; + g = setup.g + (g - setup.g) * alpha; + b = setup.b + (b - setup.b) * alpha; + } else { + r = color.r + (r - color.r) * alpha; + g = color.g + (g - color.g) * alpha; + b = color.b + (b - color.b) * alpha; + } + } + color.r = r < 0 ? 0 : r > 1 ? 1 : r; + color.g = g < 0 ? 0 : g > 1 ? 1 : g; + color.b = b < 0 ? 0 : b > 1 ? 1 : b; + } + }; + var AlphaTimeline = class extends CurveTimeline1 { + slotIndex = 0; + constructor(frameCount, bezierCount, slotIndex) { + super(frameCount, bezierCount, `${9 /* alpha */}|${slotIndex}`); + this.slotIndex = slotIndex; + } + apply(skeleton, lastTime, time, events, alpha, from, add, out, appliedPose) { + const slot = skeleton.slots[this.slotIndex]; + if (!slot.bone.active) return; + const color = (appliedPose ? slot.appliedPose : slot.pose).color; + let a = 0; + const frames = this.frames; + if (time < frames[0]) { + const setup = slot.data.setupPose.color.a; + switch (from) { + case 1 /* setup */: + color.a = setup; + break; + case 2 /* first */: + color.a += (setup - color.a) * alpha; + break; + } + return; + } + a = this.getCurveValue(time); + if (alpha !== 1) { + if (from === 1 /* setup */) { + const setup = slot.data.setupPose.color; + a = setup.a + (a - setup.a) * alpha; + } else + a = color.a + (a - color.a) * alpha; + } + color.a = a < 0 ? 0 : a > 1 ? 1 : a; + } + }; + var RGBA2Timeline = class extends SlotCurveTimeline { + constructor(frameCount, bezierCount, slotIndex) { + super( + frameCount, + bezierCount, + slotIndex, + // + `${8 /* rgb */}|${slotIndex}`, + // + `${9 /* alpha */}|${slotIndex}`, + // + `${10 /* rgb2 */}|${slotIndex}` + ); + } + getFrameEntries() { + return 8; + } + /** Sets the time in seconds, light, and dark colors for the specified key frame. */ + setFrame(frame, time, r, g, b, a, r2, g2, b2) { + frame <<= 3; + this.frames[frame] = time; + this.frames[ + frame + 1 + /*R*/ + ] = r; + this.frames[ + frame + 2 + /*G*/ + ] = g; + this.frames[ + frame + 3 + /*B*/ + ] = b; + this.frames[ + frame + 4 + /*A*/ + ] = a; + this.frames[ + frame + 5 + /*R2*/ + ] = r2; + this.frames[ + frame + 6 + /*G2*/ + ] = g2; + this.frames[ + frame + 7 + /*B2*/ + ] = b2; + } + apply1(slot, pose, time, alpha, from, add) { + const light = pose.color, dark = pose.darkColor; + let r2 = 0, g2 = 0, b2 = 0; + const frames = this.frames; + if (time < frames[0]) { + const setup = slot.data.setupPose; + const setupLight = setup.color, setupDark = setup.darkColor; + switch (from) { + case 1 /* setup */: { + light.setFromColor(setupLight); + dark.r = setupDark.r; + dark.g = setupDark.g; + dark.b = setupDark.b; + break; + } + case 2 /* first */: { + light.add( + (setupLight.r - light.r) * alpha, + (setupLight.g - light.g) * alpha, + (setupLight.b - light.b) * alpha, + (setupLight.a - light.a) * alpha + ); + dark.r += (setupDark.r - dark.r) * alpha; + dark.g += (setupDark.g - dark.g) * alpha; + dark.b += (setupDark.b - dark.b) * alpha; + break; + } + } + return; + } + let r = 0, g = 0, b = 0, a = 0; + const i = Timeline.search( + frames, + time, + 8 + /*ENTRIES*/ + ); + const curveType = this.curves[i >> 3]; + switch (curveType) { + case 0: { + const before = frames[i]; + r = frames[ + i + 1 + /*R*/ + ]; + g = frames[ + i + 2 + /*G*/ + ]; + b = frames[ + i + 3 + /*B*/ + ]; + a = frames[ + i + 4 + /*A*/ + ]; + r2 = frames[ + i + 5 + /*R2*/ + ]; + g2 = frames[ + i + 6 + /*G2*/ + ]; + b2 = frames[ + i + 7 + /*B2*/ + ]; + const t = (time - before) / (frames[ + i + 8 + /*ENTRIES*/ + ] - before); + r += (frames[ + i + 8 + 1 + /*R*/ + ] - r) * t; + g += (frames[ + i + 8 + 2 + /*G*/ + ] - g) * t; + b += (frames[ + i + 8 + 3 + /*B*/ + ] - b) * t; + a += (frames[ + i + 8 + 4 + /*A*/ + ] - a) * t; + r2 += (frames[ + i + 8 + 5 + /*R2*/ + ] - r2) * t; + g2 += (frames[ + i + 8 + 6 + /*G2*/ + ] - g2) * t; + b2 += (frames[ + i + 8 + 7 + /*B2*/ + ] - b2) * t; + break; + } + case 1: + r = frames[ + i + 1 + /*R*/ + ]; + g = frames[ + i + 2 + /*G*/ + ]; + b = frames[ + i + 3 + /*B*/ + ]; + a = frames[ + i + 4 + /*A*/ + ]; + r2 = frames[ + i + 5 + /*R2*/ + ]; + g2 = frames[ + i + 6 + /*G2*/ + ]; + b2 = frames[ + i + 7 + /*B2*/ + ]; + break; + default: + r = this.getBezierValue( + time, + i, + 1, + curveType - 2 + /*BEZIER*/ + ); + g = this.getBezierValue( + time, + i, + 2, + curveType + 18 - 2 + /*BEZIER*/ + ); + b = this.getBezierValue( + time, + i, + 3, + curveType + 18 * 2 - 2 + /*BEZIER*/ + ); + a = this.getBezierValue( + time, + i, + 4, + curveType + 18 * 3 - 2 + /*BEZIER*/ + ); + r2 = this.getBezierValue( + time, + i, + 5, + curveType + 18 * 4 - 2 + /*BEZIER*/ + ); + g2 = this.getBezierValue( + time, + i, + 6, + curveType + 18 * 5 - 2 + /*BEZIER*/ + ); + b2 = this.getBezierValue( + time, + i, + 7, + curveType + 18 * 6 - 2 + /*BEZIER*/ + ); + } + if (alpha === 1) + light.set(r, g, b, a); + else if (from === 1 /* setup */) { + const setupPose = slot.data.setupPose; + let setup = setupPose.color; + light.set( + setup.r + (r - setup.r) * alpha, + setup.g + (g - setup.g) * alpha, + setup.b + (b - setup.b) * alpha, + setup.a + (a - setup.a) * alpha + ); + setup = setupPose.darkColor; + r2 = setup.r + (r2 - setup.r) * alpha; + g2 = setup.g + (g2 - setup.g) * alpha; + b2 = setup.b + (b2 - setup.b) * alpha; + } else { + light.add((r - light.r) * alpha, (g - light.g) * alpha, (b - light.b) * alpha, (a - light.a) * alpha); + r2 = dark.r + (r2 - dark.r) * alpha; + g2 = dark.g + (g2 - dark.g) * alpha; + b2 = dark.b + (b2 - dark.b) * alpha; + } + dark.r = r2 < 0 ? 0 : r2 > 1 ? 1 : r2; + dark.g = g2 < 0 ? 0 : g2 > 1 ? 1 : g2; + dark.b = b2 < 0 ? 0 : b2 > 1 ? 1 : b2; + } + }; + var RGB2Timeline = class extends SlotCurveTimeline { + constructor(frameCount, bezierCount, slotIndex) { + super( + frameCount, + bezierCount, + slotIndex, + // + `${8 /* rgb */}|${slotIndex}`, + // + `${10 /* rgb2 */}|${slotIndex}` + ); + } + getFrameEntries() { + return 7; + } + /** Sets the time in seconds, light, and dark colors for the specified key frame. */ + setFrame(frame, time, r, g, b, r2, g2, b2) { + frame *= 7; + this.frames[frame] = time; + this.frames[ + frame + 1 + /*R*/ + ] = r; + this.frames[ + frame + 2 + /*G*/ + ] = g; + this.frames[ + frame + 3 + /*B*/ + ] = b; + this.frames[ + frame + 4 + /*R2*/ + ] = r2; + this.frames[ + frame + 5 + /*G2*/ + ] = g2; + this.frames[ + frame + 6 + /*B2*/ + ] = b2; + } + apply1(slot, pose, time, alpha, from, add) { + const light = pose.color, dark = pose.darkColor; + let r = 0, g = 0, b = 0, r2 = 0, g2 = 0, b2 = 0; + const frames = this.frames; + if (time < frames[0]) { + const setup = slot.data.setupPose; + const setupLight = setup.color, setupDark = setup.darkColor; + switch (from) { + case 1 /* setup */: + light.r = setupLight.r; + light.g = setupLight.g; + light.b = setupLight.b; + dark.r = setupDark.r; + dark.g = setupDark.g; + dark.b = setupDark.b; + break; + case 2 /* first */: + light.r += (setupLight.r - light.r) * alpha; + light.g += (setupLight.g - light.g) * alpha; + light.b += (setupLight.b - light.b) * alpha; + dark.r += (setupDark.r - dark.r) * alpha; + dark.g += (setupDark.g - dark.g) * alpha; + dark.b += (setupDark.b - dark.b) * alpha; + break; + } + return; + } + const i = Timeline.search( + frames, + time, + 7 + /*ENTRIES*/ + ); + const curveType = this.curves[ + i / 7 + /*ENTRIES*/ + ]; + switch (curveType) { + case 0: { + const before = frames[i]; + r = frames[ + i + 1 + /*R*/ + ]; + g = frames[ + i + 2 + /*G*/ + ]; + b = frames[ + i + 3 + /*B*/ + ]; + r2 = frames[ + i + 4 + /*R2*/ + ]; + g2 = frames[ + i + 5 + /*G2*/ + ]; + b2 = frames[ + i + 6 + /*B2*/ + ]; + const t = (time - before) / (frames[ + i + 7 + /*ENTRIES*/ + ] - before); + r += (frames[ + i + 7 + 1 + /*R*/ + ] - r) * t; + g += (frames[ + i + 7 + 2 + /*G*/ + ] - g) * t; + b += (frames[ + i + 7 + 3 + /*B*/ + ] - b) * t; + r2 += (frames[ + i + 7 + 4 + /*R2*/ + ] - r2) * t; + g2 += (frames[ + i + 7 + 5 + /*G2*/ + ] - g2) * t; + b2 += (frames[ + i + 7 + 6 + /*B2*/ + ] - b2) * t; + break; + } + case 1: + r = frames[ + i + 1 + /*R*/ + ]; + g = frames[ + i + 2 + /*G*/ + ]; + b = frames[ + i + 3 + /*B*/ + ]; + r2 = frames[ + i + 4 + /*R2*/ + ]; + g2 = frames[ + i + 5 + /*G2*/ + ]; + b2 = frames[ + i + 6 + /*B2*/ + ]; + break; + default: + r = this.getBezierValue( + time, + i, + 1, + curveType - 2 + /*BEZIER*/ + ); + g = this.getBezierValue( + time, + i, + 2, + curveType + 18 - 2 + /*BEZIER*/ + ); + b = this.getBezierValue( + time, + i, + 3, + curveType + 18 * 2 - 2 + /*BEZIER*/ + ); + r2 = this.getBezierValue( + time, + i, + 4, + curveType + 18 * 3 - 2 + /*BEZIER*/ + ); + g2 = this.getBezierValue( + time, + i, + 5, + curveType + 18 * 4 - 2 + /*BEZIER*/ + ); + b2 = this.getBezierValue( + time, + i, + 6, + curveType + 18 * 5 - 2 + /*BEZIER*/ + ); + } + if (alpha !== 1) { + if (from === 1 /* setup */) { + const setupPose = slot.data.setupPose; + let setup = setupPose.color; + r = setup.r + (r - setup.r) * alpha; + g = setup.g + (g - setup.g) * alpha; + b = setup.b + (b - setup.b) * alpha; + setup = setupPose.darkColor; + r2 = setup.r + (r2 - setup.r) * alpha; + g2 = setup.g + (g2 - setup.g) * alpha; + b2 = setup.b + (b2 - setup.b) * alpha; + } else { + r = light.r + (r - light.r) * alpha; + g = light.g + (g - light.g) * alpha; + b = light.b + (b - light.b) * alpha; + r2 = dark.r + (r2 - dark.r) * alpha; + g2 = dark.g + (g2 - dark.g) * alpha; + b2 = dark.b + (b2 - dark.b) * alpha; + } + } + light.r = r < 0 ? 0 : r > 1 ? 1 : r; + light.g = g < 0 ? 0 : g > 1 ? 1 : g; + light.b = b < 0 ? 0 : b > 1 ? 1 : b; + dark.r = r2 < 0 ? 0 : r2 > 1 ? 1 : r2; + dark.g = g2 < 0 ? 0 : g2 > 1 ? 1 : g2; + dark.b = b2 < 0 ? 0 : b2 > 1 ? 1 : b2; + } + }; + var AttachmentTimeline = class extends Timeline { + slotIndex = 0; + /** The attachment name for each key frame. May contain null values to clear the attachment. */ + attachmentNames; + constructor(frameCount, slotIndex) { + super(frameCount, `${11 /* attachment */}|${slotIndex}`); + this.slotIndex = slotIndex; + this.attachmentNames = new Array(frameCount); + this.instant = true; + } + getFrameCount() { + return this.frames.length; + } + /** Sets the time in seconds and the attachment name for the specified key frame. */ + setFrame(frame, time, attachmentName) { + this.frames[frame] = time; + this.attachmentNames[frame] = attachmentName; + } + apply(skeleton, lastTime, time, events, alpha, from, add, out, appliedPose) { + const slot = skeleton.slots[this.slotIndex]; + if (!slot.bone.active) return; + const pose = appliedPose ? slot.appliedPose : slot.pose; + if (out || time < this.frames[0]) { + if (from !== 0 /* current */) this.setAttachment(skeleton, pose, slot.data.attachmentName); + } else + this.setAttachment(skeleton, pose, this.attachmentNames[Timeline.search(this.frames, time)]); + } + setAttachment(skeleton, pose, attachmentName) { + pose.setAttachment(!attachmentName ? null : skeleton.getAttachment(this.slotIndex, attachmentName)); + } + }; + var DeformTimeline = class extends CurveTimeline { + slotIndex; + /** The attachment that will be deformed. + * + * See {@link VertexAttachment.getTimelineAttachment}. */ + attachment; + /** The vertices for each key frame. */ + vertices; + constructor(frameCount, bezierCount, slotIndex, attachment) { + super(frameCount, bezierCount, `${12 /* deform */}|${slotIndex}|${attachment.id}`); + this.slotIndex = slotIndex; + this.attachment = attachment; + this.vertices = new Array(frameCount); + this.additive = true; + } + getFrameCount() { + return this.frames.length; + } + /** Sets the time and vertices for the specified frame. + * @param frame Between 0 and `frameCount`, inclusive. + * @param time The frame time in seconds. + * @param vertices Vertex positions for an unweighted VertexAttachment, or deform offsets if it has weights. */ + setFrame(frame, time, vertices) { + this.frames[frame] = time; + this.vertices[frame] = vertices; + } + /** @param value1 Ignored (0 is used for a deform timeline). + * @param value2 Ignored (1 is used for a deform timeline). */ + setBezier(bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2) { + const curves = this.curves; + let i = this.getFrameCount() + bezier * 18; + if (value === 0) curves[frame] = 2 + i; + const tmpx = (time1 - cx1 * 2 + cx2) * 0.03, tmpy = cy2 * 0.03 - cy1 * 0.06; + const dddx = ((cx1 - cx2) * 3 - time1 + time2) * 6e-3, dddy = (cy1 - cy2 + 0.33333333) * 0.018; + let ddx = tmpx * 2 + dddx, ddy = tmpy * 2 + dddy; + let dx = (cx1 - time1) * 0.3 + tmpx + dddx * 0.16666667, dy = cy1 * 0.3 + tmpy + dddy * 0.16666667; + let x = time1 + dx, y = dy; + for (let n = i + 18; i < n; i += 2) { + curves[i] = x; + curves[i + 1] = y; + dx += ddx; + dy += ddy; + ddx += dddx; + ddy += dddy; + x += dx; + y += dy; + } + } + getCurvePercent(time, frame) { + const curves = this.curves; + let i = curves[frame]; + switch (i) { + case 0: { + const x2 = this.frames[frame]; + return (time - x2) / (this.frames[frame + this.getFrameEntries()] - x2); + } + case 1: + return 0; + } + i -= 2; + if (curves[i] > time) { + const x2 = this.frames[frame]; + return curves[i + 1] * (time - x2) / (curves[i] - x2); + } + const n = i + 18; + for (i += 2; i < n; i += 2) { + if (curves[i] >= time) { + const x2 = curves[i - 2], y2 = curves[i - 1]; + return y2 + (time - x2) / (curves[i] - x2) * (curves[i + 1] - y2); + } + } + const x = curves[n - 2], y = curves[n - 1]; + return y + (1 - y) * (time - x) / (this.frames[frame + this.getFrameEntries()] - x); + } + apply(skeleton, lastTime, time, events, alpha, from, add, out, appliedPose) { + const slots = skeleton.slots; + if (!this.attachment.isTimelineActive(slots, this.slotIndex, appliedPose)) return; + const timelineSlots = this.attachment.timelineSlots; + const frames = this.frames; + if (time < frames[0]) { + this.applyBeforeFirst(slots[this.slotIndex], appliedPose, alpha, from); + for (const slotIndex of timelineSlots) + this.applyBeforeFirst(slots[slotIndex], appliedPose, alpha, from); + return; + } + let v1, v2; + let percent; + if (time >= frames[frames.length - 1]) { + percent = 0; + v1 = this.vertices[frames.length - 1]; + v2 = null; + } else { + const frame = Timeline.search(frames, time); + percent = this.getCurvePercent(time, frame); + v1 = this.vertices[frame]; + v2 = this.vertices[frame + 1]; + } + const vertexCount = this.vertices[0].length; + this.applyToSlot(slots[this.slotIndex], appliedPose, v1, v2, percent, vertexCount, alpha, from, add); + for (const slotIndex of timelineSlots) + this.applyToSlot(slots[slotIndex], appliedPose, v1, v2, percent, vertexCount, alpha, from, add); + } + applyBeforeFirst(slot, appliedPose, alpha, from) { + if (!slot.bone.active) return; + const pose = appliedPose ? slot.appliedPose : slot.pose; + if (pose.attachment == null || pose.attachment.timelineAttachment !== this.attachment) return; + const deformArray = pose.deform; + if (deformArray.length === 0) from = 1 /* setup */; + switch (from) { + case 1 /* setup */: + deformArray.length = 0; + break; + case 2 /* first */: { + if (alpha === 1) { + deformArray.length = 0; + return; + } + const vertexCount = this.vertices[0].length; + deformArray.length = vertexCount; + const deform = deformArray; + const vertexAttachment = pose.attachment; + if (vertexAttachment.bones === null) { + const setupVertices = vertexAttachment.vertices; + for (let i = 0; i < vertexCount; i++) + deform[i] += (setupVertices[i] - deform[i]) * alpha; + } else { + alpha = 1 - alpha; + for (let i = 0; i < vertexCount; i++) + deform[i] *= alpha; + } + } + } + } + applyToSlot(slot, appliedPose, v1, v2, percent, vertexCount, alpha, from, add) { + if (!slot.bone.active) return; + const pose = appliedPose ? slot.appliedPose : slot.pose; + if (pose.attachment === null || pose.attachment.timelineAttachment !== this.attachment) return; + const vertexAttachment = pose.attachment; + const deform = pose.deform; + if (deform.length === 0) from = 1 /* setup */; + const fromSetup = from === 1 /* setup */; + deform.length = vertexCount; + if (v2 === null) { + if (alpha === 1) { + if (add && !fromSetup) { + if (!vertexAttachment.bones) { + const setupVertices = vertexAttachment.vertices; + for (let i = 0; i < vertexCount; i++) + deform[i] += v1[i] - setupVertices[i]; + } else { + for (let i = 0; i < vertexCount; i++) + deform[i] += v1[i]; + } + } else + Utils.arrayCopy(v1, 0, deform, 0, vertexCount); + } else if (fromSetup) { + if (!vertexAttachment.bones) { + const setupVertices = vertexAttachment.vertices; + for (let i = 0; i < vertexCount; i++) { + const setup = setupVertices[i]; + deform[i] = setup + (v1[i] - setup) * alpha; + } + } else { + for (let i = 0; i < vertexCount; i++) + deform[i] = v1[i] * alpha; + } + } else if (add) { + if (!vertexAttachment.bones) { + const setupVertices = vertexAttachment.vertices; + for (let i = 0; i < vertexCount; i++) + deform[i] += (v1[i] - setupVertices[i]) * alpha; + } else { + for (let i = 0; i < vertexCount; i++) + deform[i] += v1[i] * alpha; + } + } else { + for (let i = 0; i < vertexCount; i++) + deform[i] += (v1[i] - deform[i]) * alpha; + } + } else { + if (alpha === 1) { + if (add && !fromSetup) { + if (!vertexAttachment.bones) { + const setupVertices = vertexAttachment.vertices; + for (let i = 0; i < vertexCount; i++) { + const prev = v1[i]; + deform[i] += prev + (v2[i] - prev) * percent - setupVertices[i]; + } + } else { + for (let i = 0; i < vertexCount; i++) { + const prev = v1[i]; + deform[i] += prev + (v2[i] - prev) * percent; + } + } + } else if (percent === 0) + Utils.arrayCopy(v1, 0, deform, 0, vertexCount); + else { + for (let i = 0; i < vertexCount; i++) { + const prev = v1[i]; + deform[i] = prev + (v2[i] - prev) * percent; + } + } + } else if (fromSetup) { + if (!vertexAttachment.bones) { + const setupVertices = vertexAttachment.vertices; + for (let i = 0; i < vertexCount; i++) { + const prev = v1[i], setup = setupVertices[i]; + deform[i] = setup + (prev + (v2[i] - prev) * percent - setup) * alpha; + } + } else { + for (let i = 0; i < vertexCount; i++) { + const prev = v1[i]; + deform[i] = (prev + (v2[i] - prev) * percent) * alpha; + } + } + } else if (add) { + if (!vertexAttachment.bones) { + const setupVertices = vertexAttachment.vertices; + for (let i = 0; i < vertexCount; i++) { + const prev = v1[i]; + deform[i] += (prev + (v2[i] - prev) * percent - setupVertices[i]) * alpha; + } + } else { + for (let i = 0; i < vertexCount; i++) { + const prev = v1[i]; + deform[i] += (prev + (v2[i] - prev) * percent) * alpha; + } + } + } else { + for (let i = 0; i < vertexCount; i++) { + const prev = v1[i]; + deform[i] += (prev + (v2[i] - prev) * percent - deform[i]) * alpha; + } + } + } + } + }; + var SequenceTimeline = class _SequenceTimeline extends Timeline { + static ENTRIES = 3; + static MODE = 1; + static DELAY = 2; + slotIndex; + attachment; + constructor(frameCount, slotIndex, attachment) { + super(frameCount, `${29 /* sequence */}|${slotIndex}|${attachment.sequence.id}`); + this.slotIndex = slotIndex; + this.attachment = attachment; + this.instant = true; + } + getFrameEntries() { + return _SequenceTimeline.ENTRIES; + } + getSlotIndex() { + return this.slotIndex; + } + /** The attachment for which the {@link SlotPose.sequenceIndex} will be set. + * + * See {@link VertexAttachment.timelineAttachment}. */ + getAttachment() { + return this.attachment; + } + /** Sets the time, mode, index, and frame time for the specified frame. + * @param frame Between 0 and `frameCount`, inclusive. + * @param time Seconds between frames. */ + setFrame(frame, time, mode, index, delay) { + const frames = this.frames; + frame *= _SequenceTimeline.ENTRIES; + frames[frame] = time; + frames[frame + _SequenceTimeline.MODE] = mode | index << 4; + frames[frame + _SequenceTimeline.DELAY] = delay; + } + apply(skeleton, lastTime, time, events, alpha, from, add, out, appliedPose) { + const slots = skeleton.slots; + if (!this.attachment.isTimelineActive(slots, this.slotIndex, appliedPose)) return; + const timelineSlots = this.attachment.timelineSlots; + const frames = this.frames; + if (out || time < frames[0]) { + if (from !== 0 /* current */) { + this.setupPose(slots[this.slotIndex], appliedPose); + for (const slotIndex of timelineSlots) + this.setupPose(slots[slotIndex], appliedPose); + } + return; + } + const i = Timeline.search(frames, time, _SequenceTimeline.ENTRIES); + const before = frames[i]; + const modeAndIndex = frames[i + _SequenceTimeline.MODE]; + const delay = frames[i + _SequenceTimeline.DELAY]; + this.applyToSlot(slots[this.slotIndex], appliedPose, time, before, modeAndIndex, delay); + for (const slotIndex of timelineSlots) + this.applyToSlot(slots[slotIndex], appliedPose, time, before, modeAndIndex, delay); + } + setupPose(slot, appliedPose) { + if (!slot.bone.active) return; + const pose = appliedPose ? slot.appliedPose : slot.pose; + if (pose.attachment === null || pose.attachment.timelineAttachment !== this.attachment) return; + pose.sequenceIndex = -1; + } + applyToSlot(slot, appliedPose, time, before, modeAndIndex, delay) { + if (!slot.bone.active) return; + const pose = appliedPose ? slot.appliedPose : slot.pose; + if (pose.attachment === null || pose.attachment.timelineAttachment !== this.attachment) return; + let index = modeAndIndex >> 4, count = pose.attachment.sequence.regions.length; + const mode = SequenceModeValues[modeAndIndex & 15]; + if (mode !== 0 /* hold */) { + index += (time - before) / delay + 1e-5 | 0; + switch (mode) { + case 1 /* once */: + index = Math.min(count - 1, index); + break; + case 2 /* loop */: + index %= count; + break; + case 3 /* pingpong */: { + const n = (count << 1) - 2; + index = n === 0 ? 0 : index % n; + if (index >= count) index = n - index; + break; + } + case 4 /* onceReverse */: + index = Math.max(count - 1 - index, 0); + break; + case 5 /* loopReverse */: + index = count - 1 - index % count; + break; + case 6 /* pingpongReverse */: { + const n = (count << 1) - 2; + index = n === 0 ? 0 : (index + count - 1) % n; + if (index >= count) index = n - index; + } + } + } + pose.sequenceIndex = index; + } + }; + var EventTimeline = class _EventTimeline extends Timeline { + static propertyIds = [`${13 /* event */}`]; + /** The event for each key frame. */ + events; + constructor(frameCount) { + super(frameCount, ..._EventTimeline.propertyIds); + this.events = new Array(frameCount); + this.instant = true; + } + getFrameCount() { + return this.frames.length; + } + /** Sets the time in seconds and the event for the specified key frame. */ + setFrame(frame, event) { + this.frames[frame] = event.time; + this.events[frame] = event; + } + /** Fires events for frames > `lastTime` and <= `time`. */ + apply(skeleton, lastTime, time, firedEvents, alpha, from, add, out, appliedPose) { + if (!firedEvents) return; + const frames = this.frames; + const frameCount = this.frames.length; + if (lastTime > time) { + this.apply(null, lastTime, Number.MAX_VALUE, firedEvents, 0, from, false, false, false); + lastTime = -1; + } else if (lastTime >= frames[frameCount - 1]) + return; + if (time < frames[0]) return; + let i = 0; + if (lastTime < frames[0]) + i = 0; + else { + i = Timeline.search(frames, lastTime) + 1; + const frameTime = frames[i]; + while (i > 0) { + if (frames[i - 1] !== frameTime) break; + i--; + } + } + for (; i < frameCount && time >= frames[i]; i++) + firedEvents.push(this.events[i]); + } + }; + var DrawOrderTimeline = class _DrawOrderTimeline extends Timeline { + static propertyID = `${14 /* drawOrder */}`; + static propertyIds = [_DrawOrderTimeline.propertyID]; + /** The draw order for each key frame. See {@link setFrame}. */ + drawOrders; + constructor(frameCount) { + super(frameCount, ..._DrawOrderTimeline.propertyIds); + this.drawOrders = new Array(frameCount); + this.instant = true; + } + getFrameCount() { + return this.frames.length; + } + /** Sets the time in seconds and the draw order for the specified key frame. + * @param drawOrder Ordered {@link Skeleton.slots} indices, or null to use setup pose + * draw order. */ + setFrame(frame, time, drawOrder) { + this.frames[frame] = time; + this.drawOrders[frame] = drawOrder; + } + apply(skeleton, lastTime, time, firedEvents, alpha, from, add, out, appliedPose) { + const pose = appliedPose ? skeleton.drawOrder.appliedPose : skeleton.drawOrder.pose; + const setup = skeleton.slots; + if (out || time < this.frames[0]) { + if (from !== 0 /* current */) Utils.arrayCopy(setup, 0, pose, 0, skeleton.slots.length); + return; + } + const order = this.drawOrders[Timeline.search(this.frames, time)]; + if (!order) + Utils.arrayCopy(setup, 0, pose, 0, skeleton.slots.length); + else { + for (let i = 0, n = order.length; i < n; i++) + pose[i] = setup[order[i]]; + } + } + }; + var DrawOrderFolderTimeline = class _DrawOrderFolderTimeline extends Timeline { + static propertyID = `${15 /* drawOrderFolder */}`; + slots; + inFolder; + drawOrders; + /** @param slots {@link Skeleton.slots} indices controlled by this timeline, in setup order. + * @param slotCount The maximum number of slots in the skeleton. */ + constructor(frameCount, slots, slotCount) { + super(frameCount, ..._DrawOrderFolderTimeline.propertyIds(slots)); + this.slots = slots; + this.drawOrders = new Array(frameCount); + this.inFolder = new Array(slotCount); + for (const i of slots) + this.inFolder[i] = true; + this.instant = true; + } + static propertyIds(slots) { + const n = slots.length; + const ids = new Array(n); + for (let i = 0; i < n; i++) + ids[i] = `${_DrawOrderFolderTimeline.propertyID}|${slots[i]}`; + return ids; + } + getFrameCount() { + return this.frames.length; + } + /** The {@link Skeleton.getSlots} indices that this timeline affects, in setup order. */ + getSlots() { + return this.slots; + } + /** The draw order for each frame. See {@link setFrame}. */ + getDrawOrders() { + return this.drawOrders; + } + /** Sets the time and draw order for the specified frame. + * @param frame Between 0 and `frameCount`, inclusive. + * @param time The frame time in seconds. + * @param drawOrder Ordered {@link getSlots} indices, or null to use setup pose order. */ + setFrame(frame, time, drawOrder) { + this.frames[frame] = time; + this.drawOrders[frame] = drawOrder; + } + apply(skeleton, lastTime, time, events, alpha, from, add, out, appliedPose) { + const pose = appliedPose ? skeleton.drawOrder.appliedPose : skeleton.drawOrder.pose; + const setup = skeleton.slots; + if (out || time < this.frames[0]) { + if (from !== 0 /* current */) this.setup(pose, setup); + } else { + const order = this.drawOrders[Timeline.search(this.frames, time)]; + if (!order) + this.setup(pose, setup); + else { + const inFolder = this.inFolder; + const slots = this.slots; + for (let i = 0, found = 0, done = slots.length; ; i++) { + if (inFolder[pose[i].data.index]) { + pose[i] = setup[slots[order[found]]]; + if (++found === done) break; + } + } + } + } + } + setup(pose, setup) { + const { inFolder, slots } = this; + for (let i = 0, found = 0, done = slots.length; ; i++) { + if (inFolder[pose[i].data.index]) { + pose[i] = setup[slots[found]]; + if (++found === done) break; + } + } + } + }; + function isConstraintTimeline(obj) { + return typeof obj === "object" && obj !== null && typeof obj.constraintIndex === "number"; + } + var IkConstraintTimeline = class extends CurveTimeline { + constraintIndex = 0; + constructor(frameCount, bezierCount, constraintIndex) { + super(frameCount, bezierCount, `${16 /* ikConstraint */}|${constraintIndex}`); + this.constraintIndex = constraintIndex; + } + getFrameEntries() { + return 6; + } + /** Sets the time, mix, softness, bend direction, compress, and stretch for the specified frame. + * @param frame Between 0 and `frameCount`, inclusive. + * @param time The frame time in seconds. + * @param bendDirection 1 or -1. */ + setFrame(frame, time, mix, softness, bendDirection, compress, stretch) { + frame *= 6; + this.frames[frame] = time; + this.frames[ + frame + 1 + /*MIX*/ + ] = mix; + this.frames[ + frame + 2 + /*SOFTNESS*/ + ] = softness; + this.frames[ + frame + 3 + /*BEND_DIRECTION*/ + ] = bendDirection; + this.frames[ + frame + 4 + /*COMPRESS*/ + ] = compress ? 1 : 0; + this.frames[ + frame + 5 + /*STRETCH*/ + ] = stretch ? 1 : 0; + } + apply(skeleton, lastTime, time, firedEvents, alpha, from, add, out, appliedPose) { + const constraint = skeleton.constraints[this.constraintIndex]; + if (!constraint.active) return; + const pose = appliedPose ? constraint.appliedPose : constraint.pose; + const frames = this.frames; + if (time < frames[0]) { + const setup = constraint.data.setupPose; + switch (from) { + case 1 /* setup */: { + pose.mix = setup.mix; + pose.softness = setup.softness; + pose.bendDirection = setup.bendDirection; + pose.compress = setup.compress; + pose.stretch = setup.stretch; + break; + } + case 2 /* first */: { + pose.mix += (setup.mix - pose.mix) * alpha; + pose.softness += (setup.softness - pose.softness) * alpha; + pose.bendDirection = setup.bendDirection; + pose.compress = setup.compress; + pose.stretch = setup.stretch; + break; + } + } + return; + } + let mix = 0, softness = 0; + const i = Timeline.search( + frames, + time, + 6 + /*ENTRIES*/ + ); + const curveType = this.curves[ + i / 6 + /*ENTRIES*/ + ]; + switch (curveType) { + case 0: { + const before = frames[i]; + mix = frames[ + i + 1 + /*MIX*/ + ]; + softness = frames[ + i + 2 + /*SOFTNESS*/ + ]; + const t = (time - before) / (frames[ + i + 6 + /*ENTRIES*/ + ] - before); + mix += (frames[ + i + 6 + 1 + /*MIX*/ + ] - mix) * t; + softness += (frames[ + i + 6 + 2 + /*SOFTNESS*/ + ] - softness) * t; + break; + } + case 1: + mix = frames[ + i + 1 + /*MIX*/ + ]; + softness = frames[ + i + 2 + /*SOFTNESS*/ + ]; + break; + default: + mix = this.getBezierValue( + time, + i, + 1, + curveType - 2 + /*BEZIER*/ + ); + softness = this.getBezierValue( + time, + i, + 2, + curveType + 18 - 2 + /*BEZIER*/ + ); + } + const base = from === 1 /* setup */ ? constraint.data.setupPose : pose; + pose.mix = base.mix + (mix - base.mix) * alpha; + pose.softness = base.softness + (softness - base.softness) * alpha; + if (out) { + if (from === 1 /* setup */) { + pose.bendDirection = base.bendDirection; + pose.compress = base.compress; + pose.stretch = base.stretch; + } + } else { + pose.bendDirection = frames[ + i + 3 + /*BEND_DIRECTION*/ + ]; + pose.compress = frames[ + i + 4 + /*COMPRESS*/ + ] !== 0; + pose.stretch = frames[ + i + 5 + /*STRETCH*/ + ] !== 0; + } + } + }; + var TransformConstraintTimeline = class extends CurveTimeline { + /** The index of the transform constraint slot in {@link Skeleton.transformConstraints} that will be changed. */ + constraintIndex = 0; + constructor(frameCount, bezierCount, constraintIndex) { + super(frameCount, bezierCount, `${17 /* transformConstraint */}|${constraintIndex}`); + this.constraintIndex = constraintIndex; + this.additive = true; + } + getFrameEntries() { + return 7; + } + /** Sets the time, rotate mix, translate mix, scale mix, and shear mix for the specified frame. + * @param frame Between 0 and `frameCount`, inclusive. + * @param time The frame time in seconds. */ + setFrame(frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY) { + const frames = this.frames; + frame *= 7; + frames[frame] = time; + frames[ + frame + 1 + /*ROTATE*/ + ] = mixRotate; + frames[ + frame + 2 + /*X*/ + ] = mixX; + frames[ + frame + 3 + /*Y*/ + ] = mixY; + frames[ + frame + 4 + /*SCALEX*/ + ] = mixScaleX; + frames[ + frame + 5 + /*SCALEY*/ + ] = mixScaleY; + frames[ + frame + 6 + /*SHEARY*/ + ] = mixShearY; + } + apply(skeleton, lastTime, time, firedEvents, alpha, from, add, out, appliedPose) { + const constraint = skeleton.constraints[this.constraintIndex]; + if (!constraint.active) return; + const pose = appliedPose ? constraint.appliedPose : constraint.pose; + const frames = this.frames; + if (time < frames[0]) { + const setup = constraint.data.setupPose; + switch (from) { + case 1 /* setup */: { + pose.mixRotate = setup.mixRotate; + pose.mixX = setup.mixX; + pose.mixY = setup.mixY; + pose.mixScaleX = setup.mixScaleX; + pose.mixScaleY = setup.mixScaleY; + pose.mixShearY = setup.mixShearY; + break; + } + case 2 /* first */: { + pose.mixRotate += (setup.mixRotate - pose.mixRotate) * alpha; + pose.mixX += (setup.mixX - pose.mixX) * alpha; + pose.mixY += (setup.mixY - pose.mixY) * alpha; + pose.mixScaleX += (setup.mixScaleX - pose.mixScaleX) * alpha; + pose.mixScaleY += (setup.mixScaleY - pose.mixScaleY) * alpha; + pose.mixShearY += (setup.mixShearY - pose.mixShearY) * alpha; + break; + } + } + return; + } + let rotate, x, y, scaleX, scaleY, shearY; + const i = Timeline.search( + frames, + time, + 7 + /*ENTRIES*/ + ); + const curveType = this.curves[ + i / 7 + /*ENTRIES*/ + ]; + switch (curveType) { + case 0: { + const before = frames[i]; + rotate = frames[ + i + 1 + /*ROTATE*/ + ]; + x = frames[ + i + 2 + /*X*/ + ]; + y = frames[ + i + 3 + /*Y*/ + ]; + scaleX = frames[ + i + 4 + /*SCALEX*/ + ]; + scaleY = frames[ + i + 5 + /*SCALEY*/ + ]; + shearY = frames[ + i + 6 + /*SHEARY*/ + ]; + const t = (time - before) / (frames[ + i + 7 + /*ENTRIES*/ + ] - before); + rotate += (frames[ + i + 7 + 1 + /*ROTATE*/ + ] - rotate) * t; + x += (frames[ + i + 7 + 2 + /*X*/ + ] - x) * t; + y += (frames[ + i + 7 + 3 + /*Y*/ + ] - y) * t; + scaleX += (frames[ + i + 7 + 4 + /*SCALEX*/ + ] - scaleX) * t; + scaleY += (frames[ + i + 7 + 5 + /*SCALEY*/ + ] - scaleY) * t; + shearY += (frames[ + i + 7 + 6 + /*SHEARY*/ + ] - shearY) * t; + break; + } + case 1: + rotate = frames[ + i + 1 + /*ROTATE*/ + ]; + x = frames[ + i + 2 + /*X*/ + ]; + y = frames[ + i + 3 + /*Y*/ + ]; + scaleX = frames[ + i + 4 + /*SCALEX*/ + ]; + scaleY = frames[ + i + 5 + /*SCALEY*/ + ]; + shearY = frames[ + i + 6 + /*SHEARY*/ + ]; + break; + default: + rotate = this.getBezierValue( + time, + i, + 1, + curveType - 2 + /*BEZIER*/ + ); + x = this.getBezierValue( + time, + i, + 2, + curveType + 18 - 2 + /*BEZIER*/ + ); + y = this.getBezierValue( + time, + i, + 3, + curveType + 18 * 2 - 2 + /*BEZIER*/ + ); + scaleX = this.getBezierValue( + time, + i, + 4, + curveType + 18 * 3 - 2 + /*BEZIER*/ + ); + scaleY = this.getBezierValue( + time, + i, + 5, + curveType + 18 * 4 - 2 + /*BEZIER*/ + ); + shearY = this.getBezierValue( + time, + i, + 6, + curveType + 18 * 5 - 2 + /*BEZIER*/ + ); + } + const base = from === 1 /* setup */ ? constraint.data.setupPose : pose; + if (add) { + pose.mixRotate = base.mixRotate + rotate * alpha; + pose.mixX = base.mixX + x * alpha; + pose.mixY = base.mixY + y * alpha; + pose.mixScaleX = base.mixScaleX + scaleX * alpha; + pose.mixScaleY = base.mixScaleY + scaleY * alpha; + pose.mixShearY = base.mixShearY + shearY * alpha; + } else { + pose.mixRotate = base.mixRotate + (rotate - base.mixRotate) * alpha; + pose.mixX = base.mixX + (x - base.mixX) * alpha; + pose.mixY = base.mixY + (y - base.mixY) * alpha; + pose.mixScaleX = base.mixScaleX + (scaleX - base.mixScaleX) * alpha; + pose.mixScaleY = base.mixScaleY + (scaleY - base.mixScaleY) * alpha; + pose.mixShearY = base.mixShearY + (shearY - base.mixShearY) * alpha; + } + } + }; + var ConstraintTimeline1 = class extends CurveTimeline1 { + constraintIndex; + constructor(frameCount, bezierCount, constraintIndex, property) { + super(frameCount, bezierCount, `${property}|${constraintIndex}`); + this.constraintIndex = constraintIndex; + } + }; + var PathConstraintPositionTimeline = class extends ConstraintTimeline1 { + constructor(frameCount, bezierCount, constraintIndex) { + super(frameCount, bezierCount, constraintIndex, 18 /* pathConstraintPosition */); + this.additive = true; + } + apply(skeleton, lastTime, time, firedEvents, alpha, from, add, out, appliedPose) { + const constraint = skeleton.constraints[this.constraintIndex]; + if (constraint.active) { + const pose = appliedPose ? constraint.appliedPose : constraint.pose; + pose.position = this.getAbsoluteValue(time, alpha, from, add, pose.position, constraint.data.setupPose.position); + } + } + }; + var PathConstraintSpacingTimeline = class extends ConstraintTimeline1 { + constructor(frameCount, bezierCount, constraintIndex) { + super(frameCount, bezierCount, constraintIndex, 19 /* pathConstraintSpacing */); + } + apply(skeleton, lastTime, time, firedEvents, alpha, from, add, out, appliedPose) { + const constraint = skeleton.constraints[this.constraintIndex]; + if (constraint.active) { + const pose = appliedPose ? constraint.appliedPose : constraint.pose; + pose.spacing = this.getAbsoluteValue( + time, + alpha, + from, + false, + pose.spacing, + constraint.data.setupPose.spacing + ); + } + } + }; + var PathConstraintMixTimeline = class extends CurveTimeline { + constraintIndex; + constructor(frameCount, bezierCount, constraintIndex) { + super(frameCount, bezierCount, `${20 /* pathConstraintMix */}|${constraintIndex}`); + this.constraintIndex = constraintIndex; + } + getFrameEntries() { + return 4; + } + /** Sets the time and color for the specified frame. + * @param frame Between 0 and `frameCount`, inclusive. + * @param time The frame time in seconds. */ + setFrame(frame, time, mixRotate, mixX, mixY) { + const frames = this.frames; + frame <<= 2; + frames[frame] = time; + frames[ + frame + 1 + /*ROTATE*/ + ] = mixRotate; + frames[ + frame + 2 + /*X*/ + ] = mixX; + frames[ + frame + 3 + /*Y*/ + ] = mixY; + } + apply(skeleton, lastTime, time, firedEvents, alpha, from, add, out, appliedPose) { + const constraint = skeleton.constraints[this.constraintIndex]; + if (!constraint.active) return; + const pose = appliedPose ? constraint.appliedPose : constraint.pose; + const frames = this.frames; + if (time < frames[0]) { + const setup = constraint.data.setupPose; + switch (from) { + case 1 /* setup */: { + pose.mixRotate = setup.mixRotate; + pose.mixX = setup.mixX; + pose.mixY = setup.mixY; + break; + } + case 2 /* first */: { + pose.mixRotate += (setup.mixRotate - pose.mixRotate) * alpha; + pose.mixX += (setup.mixX - pose.mixX) * alpha; + pose.mixY += (setup.mixY - pose.mixY) * alpha; + break; + } + } + return; + } + let rotate, x, y; + const i = Timeline.search( + frames, + time, + 4 + /*ENTRIES*/ + ); + const curveType = this.curves[i >> 2]; + switch (curveType) { + case 0: { + const before = frames[i]; + rotate = frames[ + i + 1 + /*ROTATE*/ + ]; + x = frames[ + i + 2 + /*X*/ + ]; + y = frames[ + i + 3 + /*Y*/ + ]; + const t = (time - before) / (frames[ + i + 4 + /*ENTRIES*/ + ] - before); + rotate += (frames[ + i + 4 + 1 + /*ROTATE*/ + ] - rotate) * t; + x += (frames[ + i + 4 + 2 + /*X*/ + ] - x) * t; + y += (frames[ + i + 4 + 3 + /*Y*/ + ] - y) * t; + break; + } + case 1: + rotate = frames[ + i + 1 + /*ROTATE*/ + ]; + x = frames[ + i + 2 + /*X*/ + ]; + y = frames[ + i + 3 + /*Y*/ + ]; + break; + default: + rotate = this.getBezierValue( + time, + i, + 1, + curveType - 2 + /*BEZIER*/ + ); + x = this.getBezierValue( + time, + i, + 2, + curveType + 18 - 2 + /*BEZIER*/ + ); + y = this.getBezierValue( + time, + i, + 3, + curveType + 18 * 2 - 2 + /*BEZIER*/ + ); + } + const base = from === 1 /* setup */ ? constraint.data.setupPose : pose; + if (add) { + pose.mixRotate = base.mixRotate + rotate * alpha; + pose.mixX = base.mixX + x * alpha; + pose.mixY = base.mixY + y * alpha; + } else { + pose.mixRotate = base.mixRotate + (rotate - base.mixRotate) * alpha; + pose.mixX = base.mixX + (x - base.mixX) * alpha; + pose.mixY = base.mixY + (y - base.mixY) * alpha; + } + } + }; + var PhysicsConstraintTimeline = class extends ConstraintTimeline1 { + /** @param constraintIndex -1 for all physics constraints in the skeleton. */ + constructor(frameCount, bezierCount, constraintIndex, property) { + super(frameCount, bezierCount, constraintIndex, property); + } + apply(skeleton, lastTime, time, firedEvents, alpha, from, add, out, appliedPose) { + if (add && !this.additive) add = false; + if (this.constraintIndex === -1) { + const value = time >= this.frames[0] ? this.getCurveValue(time) : 0; + const constraints = skeleton.physics; + for (const constraint of constraints) { + if (constraint.active && this.global(constraint.data)) { + const pose = appliedPose ? constraint.appliedPose : constraint.pose; + this.set(pose, this.getAbsoluteValue(time, alpha, from, add, this.get(pose), this.get(constraint.data.setupPose), value)); + } + } + } else { + const constraint = skeleton.constraints[this.constraintIndex]; + if (constraint.active) { + const pose = appliedPose ? constraint.appliedPose : constraint.pose; + this.set(pose, this.getAbsoluteValue(time, alpha, from, add, this.get(pose), this.get(constraint.data.setupPose))); + } + } + } + }; + var PhysicsConstraintInertiaTimeline = class extends PhysicsConstraintTimeline { + constructor(frameCount, bezierCount, constraintIndex) { + super(frameCount, bezierCount, constraintIndex, 21 /* physicsConstraintInertia */); + } + get(pose) { + return pose.inertia; + } + set(pose, value) { + pose.inertia = value; + } + global(constraint) { + return constraint.inertiaGlobal; + } + }; + var PhysicsConstraintStrengthTimeline = class extends PhysicsConstraintTimeline { + constructor(frameCount, bezierCount, constraintIndex) { + super(frameCount, bezierCount, constraintIndex, 22 /* physicsConstraintStrength */); + } + get(pose) { + return pose.strength; + } + set(pose, value) { + pose.strength = value; + } + global(constraint) { + return constraint.strengthGlobal; + } + }; + var PhysicsConstraintDampingTimeline = class extends PhysicsConstraintTimeline { + constructor(frameCount, bezierCount, constraintIndex) { + super(frameCount, bezierCount, constraintIndex, 23 /* physicsConstraintDamping */); + } + get(pose) { + return pose.damping; + } + set(pose, value) { + pose.damping = value; + } + global(constraint) { + return constraint.dampingGlobal; + } + }; + var PhysicsConstraintMassTimeline = class extends PhysicsConstraintTimeline { + constructor(frameCount, bezierCount, constraintIndex) { + super(frameCount, bezierCount, constraintIndex, 24 /* physicsConstraintMass */); + } + get(pose) { + return 1 / pose.massInverse; + } + set(pose, value) { + pose.massInverse = 1 / value; + } + global(constraint) { + return constraint.massGlobal; + } + }; + var PhysicsConstraintWindTimeline = class extends PhysicsConstraintTimeline { + constructor(frameCount, bezierCount, constraintIndex) { + super(frameCount, bezierCount, constraintIndex, 25 /* physicsConstraintWind */); + this.additive = true; + } + get(pose) { + return pose.wind; + } + set(pose, value) { + pose.wind = value; + } + global(constraint) { + return constraint.windGlobal; + } + }; + var PhysicsConstraintGravityTimeline = class extends PhysicsConstraintTimeline { + constructor(frameCount, bezierCount, constraintIndex) { + super(frameCount, bezierCount, constraintIndex, 26 /* physicsConstraintGravity */); + this.additive = true; + } + get(pose) { + return pose.gravity; + } + set(pose, value) { + pose.gravity = value; + } + global(constraint) { + return constraint.gravityGlobal; + } + }; + var PhysicsConstraintMixTimeline = class extends PhysicsConstraintTimeline { + constructor(frameCount, bezierCount, constraintIndex) { + super(frameCount, bezierCount, constraintIndex, 27 /* physicsConstraintMix */); + } + get(pose) { + return pose.mix; + } + set(pose, value) { + pose.mix = value; + } + global(constraint) { + return constraint.mixGlobal; + } + }; + var PhysicsConstraintResetTimeline = class _PhysicsConstraintResetTimeline extends Timeline { + static propertyIds = [28 /* physicsConstraintReset */.toString()]; + /** The index of the physics constraint in {@link Skeleton.contraints} that will be reset when this timeline is + * applied, or -1 if all physics constraints in the skeleton will be reset. */ + constraintIndex; + /** @param constraintIndex -1 for all physics constraints in the skeleton. */ + constructor(frameCount, constraintIndex) { + super(frameCount, ..._PhysicsConstraintResetTimeline.propertyIds); + this.constraintIndex = constraintIndex; + this.instant = true; + } + getFrameCount() { + return this.frames.length; + } + /** Sets the time for the specified frame. + * @param frame Between 0 and `frameCount`, inclusive. */ + setFrame(frame, time) { + this.frames[frame] = time; + } + /** Resets the physics constraint when frames > `lastTime` and <= `time`. */ + apply(skeleton, lastTime, time, firedEvents, alpha, from, add, out, appliedPose) { + let constraint; + if (this.constraintIndex !== -1) { + constraint = skeleton.constraints[this.constraintIndex]; + if (!constraint.active) return; + } + const frames = this.frames; + if (lastTime > time) { + this.apply(skeleton, lastTime, Number.MAX_VALUE, [], alpha, from, false, false, false); + lastTime = -1; + } else if (lastTime >= frames[frames.length - 1]) + return; + if (time < frames[0]) return; + if (lastTime < frames[0] || time >= frames[Timeline.search(frames, lastTime) + 1]) { + if (constraint != null) + constraint.reset(skeleton); + else { + for (const constraint2 of skeleton.physics) { + if (constraint2.active) constraint2.reset(skeleton); + } + } + } + } + }; + var SliderTimeline = class extends ConstraintTimeline1 { + constructor(frameCount, bezierCount, constraintIndex) { + super(frameCount, bezierCount, constraintIndex, 30 /* sliderTime */); + } + apply(skeleton, lastTime, time, firedEvents, alpha, from, add, out, appliedPose) { + const constraint = skeleton.constraints[this.constraintIndex]; + if (constraint.active) { + const pose = appliedPose ? constraint.appliedPose : constraint.pose; + pose.time = this.getAbsoluteValue(time, alpha, from, add, pose.time, constraint.data.setupPose.time); + } + } + }; + var SliderMixTimeline = class extends ConstraintTimeline1 { + constructor(frameCount, bezierCount, constraintIndex) { + super(frameCount, bezierCount, constraintIndex, 31 /* sliderMix */); + this.additive = true; + } + apply(skeleton, lastTime, time, firedEvents, alpha, from, add, out, appliedPose) { + const constraint = skeleton.constraints[this.constraintIndex]; + if (constraint.active) { + const pose = appliedPose ? constraint.appliedPose : constraint.pose; + pose.mix = this.getAbsoluteValue(time, alpha, from, add, pose.mix, constraint.data.setupPose.mix); + } + } + }; + + // spine-core/src/AnimationState.ts + var AnimationState = class _AnimationState { + static emptyAnimation = new Animation("", [], 0); + /** The AnimationStateData to look up mix durations. */ + data; + /** The list of tracks that have had animations. May contain null entries for tracks that currently have no animation. */ + tracks = []; + /** Multiplier for the delta time when the animation state is updated, causing time for all animations and mixes to play slower + * or faster. Defaults to 1. + * + * See {@link TrackEntry.timeScale} to affect a single animation. */ + timeScale = 1; + unkeyedState = 0; + events = []; + listeners = []; + queue = new EventQueue(this); + propertyIds = /* @__PURE__ */ new Map(); + animationsChanged = false; + trackEntryPool = new Pool(() => new TrackEntry()); + constructor(data) { + this.data = data; + } + /** Increments each track entry {@link TrackEntry.trackTime}, setting queued animations as current if needed. */ + update(delta) { + delta *= this.timeScale; + const tracks = this.tracks; + for (let i = 0, n = tracks.length; i < n; i++) { + const current = tracks[i]; + if (!current) continue; + current.animationLast = current.nextAnimationLast; + current.trackLast = current.nextTrackLast; + let currentDelta = delta * current.timeScale; + if (current.delay > 0) { + current.delay -= currentDelta; + if (current.delay > 0) continue; + currentDelta = -current.delay; + current.delay = 0; + } + let next = current.next; + if (next) { + const nextTime = current.trackLast - next.delay; + if (nextTime >= 0) { + next.delay = 0; + next.trackTime += current.timeScale === 0 ? 0 : (nextTime / current.timeScale + delta) * next.timeScale; + current.trackTime += currentDelta; + this.setTrack(i, next, true); + while (next.mixingFrom) { + next.mixTime += delta; + next = next.mixingFrom; + } + continue; + } + } else if (current.trackLast >= current.trackEnd && !current.mixingFrom) { + tracks[i] = null; + this.queue.end(current); + this.clearNext(current); + continue; + } + if (current.mixingFrom && this.updateMixingFrom(current, delta)) { + let from = current.mixingFrom; + current.mixingFrom = null; + if (from) from.mixingTo = null; + while (from) { + this.queue.end(from); + from = from.mixingFrom; + } + } + current.trackTime += currentDelta; + } + this.queue.drain(); + } + /** Returns true when all mixing from entries are complete. */ + updateMixingFrom(to, delta) { + const from = to.mixingFrom; + if (!from) return true; + const finished = this.updateMixingFrom(from, delta); + from.animationLast = from.nextAnimationLast; + from.trackLast = from.nextTrackLast; + if (to.nextTrackLast !== -1 && to.mixTime >= to.mixDuration) { + if (from.totalAlpha === 0 || to.mixDuration === 0) { + to.mixingFrom = from.mixingFrom; + if (from.mixingFrom != null) from.mixingFrom.mixingTo = to; + if (from.totalAlpha === 0) { + for (let next = to; next.mixingTo != null; next = next.mixingTo) + next.keepHold = true; + } + this.queue.end(from); + } + return finished; + } + from.trackTime += delta * from.timeScale; + to.mixTime += delta; + return false; + } + /** Poses the skeleton using the track entry animations. The animation state is not changed, so can be applied to multiple + * skeletons to pose them identically. + * @returns True if any animations were applied. */ + apply(skeleton) { + if (!skeleton) throw new Error("skeleton cannot be null."); + if (this.animationsChanged) this._animationsChanged(); + const events = this.events; + const tracks = this.tracks; + let applied = false; + for (let i = 0, n = tracks.length; i < n; i++) { + const current = tracks[i]; + if (!current || current.delay > 0) continue; + applied = true; + let alpha = current.alpha; + if (current.mixingFrom) + alpha *= this.applyMixingFrom(current, skeleton); + else if (current.trackTime >= current.trackEnd && !current.next) + alpha = 0; + let animationLast = current.animationLast, animationTime = current.getAnimationTime(), applyTime = animationTime; + let applyEvents = events; + if (current.reverse) { + applyTime = current.animation.duration - applyTime; + applyEvents = null; + } + const timelines = current.animation.timelines; + const timelineCount = timelines.length; + if (i === 0 && alpha === 1) { + for (let ii = 0; ii < timelineCount; ii++) { + Utils.webkit602BugfixHelper(alpha); + const timeline = timelines[ii]; + if (timeline instanceof AttachmentTimeline) + this.applyAttachmentTimeline(timeline, skeleton, applyTime, 1 /* setup */, true); + else + timeline.apply(skeleton, animationLast, applyTime, applyEvents, alpha, 1 /* setup */, false, false, false); + } + } else { + const timelineMode = current.timelineMode; + const retainAttachments = alpha >= current.alphaAttachmentThreshold; + const add = current.additive, shortestRotation = add || current.shortestRotation; + const firstFrame = !shortestRotation && current.timelinesRotation.length !== timelineCount << 1; + if (firstFrame) current.timelinesRotation.length = timelineCount << 1; + for (let ii = 0; ii < timelineCount; ii++) { + const timeline = timelines[ii]; + const from = timelineMode[ii] & MODE; + if (!shortestRotation && timeline instanceof RotateTimeline) { + this.applyRotateTimeline(timeline, skeleton, applyTime, alpha, from, current.timelinesRotation, ii << 1, firstFrame); + } else if (timeline instanceof AttachmentTimeline) { + this.applyAttachmentTimeline(timeline, skeleton, applyTime, from, retainAttachments); + } else { + Utils.webkit602BugfixHelper(alpha); + timeline.apply(skeleton, animationLast, applyTime, applyEvents, alpha, from, add, false, false); + } + } + } + if (current.reverse) this.eventsReverse(current, animationLast, animationTime); + this.queueEvents(current, animationTime); + events.length = 0; + current.nextAnimationLast = animationTime; + current.nextTrackLast = current.trackTime; + } + const setupState = this.unkeyedState + ATTACH_SETUP; + const slots = skeleton.slots; + for (let i = 0, n = skeleton.slots.length; i < n; i++) { + const slot = slots[i]; + if (slot.attachmentState === setupState) { + const attachmentName = slot.data.attachmentName; + slot.pose.setAttachment(!attachmentName ? null : skeleton.getAttachment(slot.data.index, attachmentName)); + } + } + this.unkeyedState += 2; + this.queue.drain(); + return applied; + } + applyMixingFrom(to, skeleton) { + const from = to.mixingFrom; + const fromMix = from.mixingFrom !== null ? this.applyMixingFrom(from, skeleton) : 1; + const mix = to.mix(); + const a = from.alpha * fromMix, keep = 1 - mix * to.alpha; + const alphaMix = a * (1 - mix), alphaHold = keep > 0 ? alphaMix / keep : a; + const timelines = from.animation.timelines; + const timelineCount = timelines.length; + const timelineMode = from.timelineMode; + const timelineHoldMix = from.timelineHoldMix; + const retainAttachments = mix < from.mixAttachmentThreshold, drawOrder = mix < from.mixDrawOrderThreshold; + const add = from.additive, shortestRotation = add || from.shortestRotation; + const firstFrame = !shortestRotation && from.timelinesRotation.length !== timelineCount << 1; + if (firstFrame) from.timelinesRotation.length = timelineCount << 1; + const timelinesRotation = from.timelinesRotation; + let animationLast = from.animationLast, animationTime = from.getAnimationTime(), applyTime = animationTime; + let events = null; + if (from.reverse) + applyTime = from.animation.duration - applyTime; + else if (mix < from.eventThreshold) + events = this.events; + from.totalAlpha = 0; + for (let i = 0; i < timelineCount; i++) { + const timeline = timelines[i]; + const mode = timelineMode[i]; + const mixFrom = mode & MODE; + let alpha = 0; + if ((mode & HOLD) !== 0) { + const holdMix = timelineHoldMix[i]; + alpha = holdMix == null ? alphaHold : alphaHold * (1 - holdMix.mix()); + } else { + if (!drawOrder && timeline instanceof DrawOrderTimeline && mixFrom === 0 /* current */) continue; + alpha = alphaMix; + } + from.totalAlpha += alpha; + if (!shortestRotation && timeline instanceof RotateTimeline) { + this.applyRotateTimeline(timeline, skeleton, applyTime, alpha, mixFrom, timelinesRotation, i << 1, firstFrame); + } else if (timeline instanceof AttachmentTimeline) + this.applyAttachmentTimeline( + timeline, + skeleton, + applyTime, + mixFrom, + retainAttachments && alpha >= from.alphaAttachmentThreshold + ); + else { + const out = !drawOrder || !(timeline instanceof DrawOrderTimeline) || mixFrom === 0 /* current */; + timeline.apply(skeleton, animationLast, applyTime, events, alpha, mixFrom, add, out, false); + } + } + if (from.reverse && mix < from.eventThreshold) this.eventsReverse(from, animationLast, animationTime); + if (to.mixDuration > 0) this.queueEvents(from, animationTime); + this.events.length = 0; + from.nextAnimationLast = animationTime; + from.nextTrackLast = from.trackTime; + return mix; + } + /** Applies the attachment timeline and sets {@link Slot.attachmentState}. + * @param retain True if the attachment remains after apply, false if temporary for deform timelines. */ + applyAttachmentTimeline(timeline, skeleton, time, from, retain) { + const slot = skeleton.slots[timeline.slotIndex]; + if (!slot.bone.active) return; + if (!retain && slot.attachmentState === this.unkeyedState + ATTACH_RETAIN) return; + let setup = time < timeline.frames[0]; + let name = null; + if (!setup) { + name = timeline.attachmentNames[Timeline.search(timeline.frames, time)]; + setup = !retain && name == null; + } + if (setup) { + if (from === 0 /* current */) return; + name = slot.data.attachmentName; + } + slot.pose.setAttachment(name == null ? null : skeleton.getAttachment(slot.data.index, name)); + if (retain) + slot.attachmentState = this.unkeyedState + ATTACH_RETAIN; + else if (!setup) + slot.attachmentState = this.unkeyedState + ATTACH_SETUP; + } + /** Applies the rotate timeline, mixing with the current pose while keeping the same rotation direction chosen as the shortest + * the first time the mixing was applied. */ + applyRotateTimeline(timeline, skeleton, time, alpha, from, timelinesRotation, i, firstFrame) { + if (firstFrame) timelinesRotation[i] = 0; + if (alpha === 1) { + timeline.apply(skeleton, 0, time, null, 1, from, false, false, false); + return; + } + const bone = skeleton.bones[timeline.boneIndex]; + if (!bone.active) return; + const pose = bone.pose, setup = bone.data.setupPose; + const frames = timeline.frames; + let r1, r2; + if (time < frames[0]) { + switch (from) { + case 1 /* setup */: { + pose.rotation = setup.rotation; + return; + } + case 0 /* current */: { + return; + } + } + r1 = pose.rotation; + r2 = setup.rotation; + } else { + r1 = from === 1 /* setup */ ? setup.rotation : pose.rotation; + r2 = setup.rotation + timeline.getCurveValue(time); + } + let total = 0, diff = r2 - r1; + diff -= Math.ceil(diff / 360 - 0.5) * 360; + if (diff === 0) { + total = timelinesRotation[i]; + } else { + let lastTotal = 0, lastDiff = 0; + if (firstFrame) { + lastTotal = 0; + lastDiff = diff; + } else { + lastTotal = timelinesRotation[i]; + lastDiff = timelinesRotation[i + 1]; + } + const loops = lastTotal - lastTotal % 360; + total = diff + loops; + let current = diff >= 0, dir = lastTotal >= 0; + if (Math.abs(lastDiff) <= 90 && MathUtils.signum(lastDiff) !== MathUtils.signum(diff)) { + if (Math.abs(lastTotal - loops) > 180) { + total += 360 * MathUtils.signum(lastTotal); + dir = current; + } else if (loops !== 0) + total -= 360 * MathUtils.signum(lastTotal); + else + dir = current; + } + if (dir !== current) total += 360 * MathUtils.signum(lastTotal); + timelinesRotation[i] = total; + } + timelinesRotation[i + 1] = diff; + pose.rotation = r1 + total * alpha; + } + queueEvents(entry, animationTime) { + const animationStart = entry.animationStart, animationEnd = entry.animationEnd, duration = animationEnd - animationStart; + const reverse = entry.reverse; + let split = entry.trackLast % duration; + if (reverse) split = duration - split; + const events = this.events; + let i = 0, n = events.length; + for (; i < n; i++) { + const event = events[i]; + if (event.time < split !== reverse) break; + if (event.time >= animationStart && event.time <= animationEnd) this.queue.event(entry, event); + } + let complete = false; + if (entry.loop) { + if (duration === 0) + complete = true; + else { + const cycles = Math.floor(entry.trackTime / duration); + complete = cycles > 0 && cycles > Math.floor(entry.trackLast / duration); + } + } else + complete = animationTime >= animationEnd && entry.animationLast < animationEnd; + if (complete) this.queue.complete(entry); + for (; i < n; i++) { + const event = events[i]; + if (event.time >= animationStart && event.time <= animationEnd) this.queue.event(entry, event); + } + } + eventsReverse(entry, animationLast, animationTime) { + const duration = entry.animation.duration, from = duration - animationLast, to = duration - animationTime; + const timelines = entry.animation.timelines; + for (let i = 0, n = entry.animation.timelines.length; i < n; i++) { + const eventTimeline = timelines[i]; + if (!(eventTimeline instanceof EventTimeline)) continue; + const timelineEvents = eventTimeline.events; + const frames = eventTimeline.frames; + const frameCount = frames.length; + if (from >= to) { + for (let ii = 0; ii < frameCount; ii++) { + if (frames[ii] < to) continue; + if (frames[ii] >= from) break; + this.events.push(timelineEvents[ii]); + } + } else { + for (let ii2 = 0; ii2 < frameCount; ii2++) { + if (frames[ii2] >= from) break; + this.events.push(timelineEvents[ii2]); + } + let ii = 0; + for (; ii < frameCount; ii++) + if (frames[ii] >= to) break; + for (; ii < frameCount; ii++) + this.events.push(timelineEvents[ii]); + } + } + } + /** Removes all animations from all tracks, leaving skeletons in their current pose. + * + * Usually you want to use {@link setEmptyAnimations} to mix the skeletons back to the setup pose, rather than leaving + * them in their current pose. */ + clearTracks() { + const oldDrainDisabled = this.queue.drainDisabled; + this.queue.drainDisabled = true; + for (let i = 0, n = this.tracks.length; i < n; i++) + this.clearTrack(i); + this.tracks.length = 0; + this.queue.drainDisabled = oldDrainDisabled; + this.queue.drain(); + } + /** Removes all animations from the track, leaving skeletons in their current pose. + * + * Usually you want to use {@link setEmptyAnimation} to mix the skeletons back to the setup pose, rather than + * leaving them in their current pose. */ + clearTrack(trackIndex) { + if (trackIndex < 0) throw new Error("trackIndex must be >= 0."); + if (trackIndex >= this.tracks.length) return; + const current = this.tracks[trackIndex]; + if (!current) return; + this.queue.end(current); + this.clearNext(current); + let entry = current; + while (true) { + const from = entry.mixingFrom; + if (!from) break; + this.queue.end(from); + entry.mixingFrom = null; + entry.mixingTo = null; + entry = from; + } + this.tracks[current.trackIndex] = null; + this.queue.drain(); + } + setTrack(index, current, interrupt) { + const from = this.expandToIndex(index); + this.tracks[index] = current; + current.previous = null; + if (from) { + from.next = null; + if (interrupt) this.queue.interrupt(from); + current.mixingFrom = from; + from.mixingTo = current; + current.mixTime = 0; + from.timelinesRotation.length = 0; + } + this.queue.start(current); + } + setAnimation(trackIndex, animationNameOrAnimation, loop = false) { + if (typeof animationNameOrAnimation === "string") + return this.setAnimation1(trackIndex, animationNameOrAnimation, loop); + return this.setAnimation2(trackIndex, animationNameOrAnimation, loop); + } + setAnimation1(trackIndex, animationName, loop = false) { + const animation = this.data.skeletonData.findAnimation(animationName); + if (!animation) throw new Error(`Animation not found: ${animationName}`); + return this.setAnimation2(trackIndex, animation, loop); + } + /** Sets the current animation for a track, discarding any queued animations. + * + * If the formerly current track entry is for the same animation and was never applied to a skeleton, it is replaced (not mixed + * from). + * @param loop If true, the animation will repeat. If false it will not, instead its last frame is applied if played beyond its + * duration. In either case {@link TrackEntry.getTrackEnd} determines when the track is cleared. + * @return A track entry to allow further customization of animation playback. References to the track entry must not be kept + * after the {@link AnimationStateListener.dispose} event occurs. */ + setAnimation2(trackIndex, animation, loop = false) { + if (trackIndex < 0) throw new Error("trackIndex must be >= 0."); + if (!animation) throw new Error("animation cannot be null."); + let interrupt = true; + let current = this.expandToIndex(trackIndex); + if (current) { + if (current.nextTrackLast === -1 && current.animation === animation) { + this.tracks[trackIndex] = current.mixingFrom; + this.queue.interrupt(current); + this.queue.end(current); + this.clearNext(current); + current = current.mixingFrom; + interrupt = false; + } else + this.clearNext(current); + } + const entry = this.trackEntry(trackIndex, animation, loop, current); + this.setTrack(trackIndex, entry, interrupt); + this.queue.drain(); + return entry; + } + addAnimation(trackIndex, animationNameOrAnimation, loop = false, delay = 0) { + if (typeof animationNameOrAnimation === "string") + return this.addAnimation1(trackIndex, animationNameOrAnimation, loop, delay); + return this.addAnimation2(trackIndex, animationNameOrAnimation, loop, delay); + } + addAnimation1(trackIndex, animationName, loop = false, delay = 0) { + const animation = this.data.skeletonData.findAnimation(animationName); + if (!animation) throw new Error(`Animation not found: ${animationName}`); + return this.addAnimation2(trackIndex, animation, loop, delay); + } + addAnimation2(trackIndex, animation, loop = false, delay = 0) { + if (trackIndex < 0) throw new Error("trackIndex must be >= 0."); + if (!animation) throw new Error("animation cannot be null."); + let last = this.expandToIndex(trackIndex); + if (last) { + while (last.next) + last = last.next; + } + const entry = this.trackEntry(trackIndex, animation, loop, last); + if (!last) { + this.setTrack(trackIndex, entry, true); + this.queue.drain(); + if (delay < 0) delay = 0; + } else { + last.next = entry; + entry.previous = last; + if (delay <= 0) delay = Math.max(delay + last.getTrackComplete() - entry.mixDuration, 0); + } + entry.delay = delay; + return entry; + } + /** Sets an empty animation for a track, discarding any queued animations, and sets the track entry's + * {@link TrackEntry.mixduration}. An empty animation has no timelines and serves as a placeholder for mixing in or out. + * + * Mixing out is done by setting an empty animation with a mix duration using either {@link setEmptyAnimation}, + * {@link setEmptyAnimations}, or {@link addEmptyAnimation}. Mixing to an empty animation causes + * the previous animation to be applied less and less over the mix duration. Properties keyed in the previous animation + * transition to the value from lower tracks or to the setup pose value if no lower tracks key the property. A mix duration of + * 0 still needs to be applied one more time to mix out, so the properties it was animating are reverted. + * + * Mixing in is done by first setting an empty animation, then adding an animation using + * {@link addAnimation} with the desired delay (an empty animation has a duration of 0) and on + * the returned track entry, set the {@link TrackEntry.setMixDuration}. Mixing from an empty animation causes the new + * animation to be applied more and more over the mix duration. Properties keyed in the new animation transition from the value + * from lower tracks or from the setup pose value if no lower tracks key the property to the value keyed in the new animation. + * + * See Empty animations in the Spine + * Runtimes Guide. */ + setEmptyAnimation(trackIndex, mixDuration = 0) { + const entry = this.setAnimation(trackIndex, _AnimationState.emptyAnimation, false); + entry.mixDuration = mixDuration; + entry.trackEnd = mixDuration; + return entry; + } + /** Adds an empty animation to be played after the current or last queued animation for a track, and sets the track entry's + * {@link TrackEntry.mixDuration}. If the track has no entries, it is equivalent to calling + * {@link setEmptyAnimation}. + * + * See {@link setEmptyAnimation} and + * Empty animations in the Spine Runtimes + * Guide. + * @param delay If > 0, sets {@link TrackEntry.delay}. If <= 0, the delay set is the duration of the previous track entry minus + * any mix duration plus the specified `delay` (ie the mix ends at (when `delay` = 0) or before + * (when `delay` < 0) the previous track entry duration). If the previous entry is looping, its next loop + * completion is used instead of its duration. + * @return A track entry to allow further customization of animation playback. References to the track entry must not be kept + * after the {@link AnimationStateListener.dispose} event occurs. */ + addEmptyAnimation(trackIndex, mixDuration = 0, delay = 0) { + const entry = this.addAnimation(trackIndex, _AnimationState.emptyAnimation, false, delay); + if (delay <= 0) entry.delay = Math.max(entry.delay + entry.mixDuration - mixDuration, 0); + entry.mixDuration = mixDuration; + entry.trackEnd = mixDuration; + return entry; + } + /** Sets an empty animation for every track, discarding any queued animations, and mixes to it over the specified mix duration. + * + * See Empty animations in the Spine + * Runtimes Guide. */ + setEmptyAnimations(mixDuration = 0) { + const oldDrainDisabled = this.queue.drainDisabled; + this.queue.drainDisabled = true; + for (let i = 0, n = this.tracks.length; i < n; i++) { + const current = this.tracks[i]; + if (current) this.setEmptyAnimation(current.trackIndex, mixDuration); + } + this.queue.drainDisabled = oldDrainDisabled; + this.queue.drain(); + } + expandToIndex(index) { + if (index < this.tracks.length) return this.tracks[index]; + Utils.ensureArrayCapacity(this.tracks, index + 1, null); + this.tracks.length = index + 1; + return null; + } + /** @param last May be null. */ + trackEntry(trackIndex, animation, loop, last) { + const entry = this.trackEntryPool.obtain(); + entry.reset(); + entry.trackIndex = trackIndex; + entry.animation = animation; + entry.loop = loop; + entry.additive = false; + entry.reverse = false; + entry.shortestRotation = false; + entry.eventThreshold = 0; + entry.alphaAttachmentThreshold = 0; + entry.mixAttachmentThreshold = 0; + entry.mixDrawOrderThreshold = 0; + entry.animationStart = 0; + entry.animationEnd = animation.duration; + entry.animationLast = -1; + entry.nextAnimationLast = -1; + entry.delay = 0; + entry.trackTime = 0; + entry.trackLast = -1; + entry.nextTrackLast = -1; + entry.trackEnd = Number.MAX_VALUE; + entry.timeScale = 1; + entry.alpha = 1; + entry.mixTime = 0; + entry.mixDuration = !last ? 0 : this.data.getMix(last.animation, animation); + entry.totalAlpha = 0; + entry.keepHold = false; + return entry; + } + /** Removes {@link TrackEntry.next} and all entries after it for the specified entry. */ + clearNext(entry) { + let next = entry.next; + while (next) { + this.queue.dispose(next); + next = next.next; + } + entry.next = null; + } + _animationsChanged() { + this.animationsChanged = false; + const tracks = this.tracks; + for (let i = 0, n = tracks.length; i < n; i++) { + const track = tracks[i]; + if (!track) continue; + let entry = track; + while (entry.mixingFrom) + entry = entry.mixingFrom; + do { + this.computeHold(entry, track); + entry = entry.mixingTo; + } while (entry); + } + this.propertyIds.clear(); + } + computeHold(entry, track) { + const timelines = entry.animation.timelines; + const timelinesCount = entry.animation.timelines.length; + const timelineMode = entry.timelineMode; + timelineMode.length = timelinesCount; + const timelineHoldMix = entry.timelineHoldMix; + timelineHoldMix.length = 0; + const add = entry.additive, keepHold = entry.keepHold; + const to = entry.mixingTo; + for (let i = 0; i < timelinesCount; i++) { + const timeline = timelines[i]; + const ids = timeline.propertyIds; + const from = this.from(track, timeline, ids); + if (add && timeline.additive) { + timelineMode[i] = from; + continue; + } + let mode; + if (to === null || timeline.instant || to.additive && timeline.additive || !to.animation?.hasTimeline(ids)) + mode = from; + else { + mode = from | HOLD; + for (let next = to.mixingTo; next != null; next = next.mixingTo) { + if (next.additive && timeline.additive || !next.animation?.hasTimeline(ids)) { + if (next.mixDuration > 0) timelineHoldMix[i] = next; + break; + } + } + } + if (keepHold) mode = mode & ~HOLD | timelineMode[i] & HOLD; + timelineMode[i] = mode; + } + } + from(track, timeline, ids) { + const propertyIds = this.propertyIds; + let from = SETUP; + for (let i = 0, n = ids.length; i < n; i++) { + const owner = propertyIds.get(ids[i]); + if (owner === void 0) { + propertyIds.set(ids[i], track); + } else { + if (owner !== track) { + while (++i < n) + if (!propertyIds.has(ids[i])) propertyIds.set(ids[i], track); + return CURRENT; + } + from = FIRST; + } + } + if (timeline instanceof DrawOrderFolderTimeline) { + const first = propertyIds.get(DrawOrderTimeline.propertyID); + if (first != null) return first !== track ? CURRENT : FIRST; + } + return from; + } + /** Returns the track entry for the animation currently playing on the track, or null if no animation is currently playing. */ + getTrack(trackIndex) { + if (trackIndex < 0) throw new Error("trackIndex must be >= 0."); + if (trackIndex >= this.tracks.length) return null; + return this.tracks[trackIndex]; + } + /** Adds a listener to receive events for all track entries. */ + addListener(listener) { + if (!listener) throw new Error("listener cannot be null."); + this.listeners.push(listener); + } + /** Removes the listener added with {@link addListener}. */ + removeListener(listener) { + const index = this.listeners.indexOf(listener); + if (index >= 0) this.listeners.splice(index, 1); + } + /** Removes all listeners added with {@link addListener}. */ + clearListeners() { + this.listeners.length = 0; + } + /** Discards all listener notifications that have not yet been delivered. This can be useful to call from an + * {@link AnimationStateListener} when it is known that further notifications that may have been already queued for delivery + * are not wanted because new animations are being set. */ + clearListenerNotifications() { + this.queue.clear(); + } + }; + var TrackEntry = class { + /** The animation to apply for this track entry. */ + animation = null; + previous = null; + /** The animation queued to start after this animation, or null. `next` makes up a linked list. */ + next = null; + /** The track entry for the previous animation when mixing to this animation, or null if no mixing is currently occurring. + * When mixing from multiple animations, `mixingFrom` makes up a doubly linked list. */ + mixingFrom = null; + /** The track entry for the next animation when mixing from this animation, or null if no mixing is currently occurring. + * When mixing to multiple animations, `mixingTo` makes up a doubly linked list. */ + mixingTo = null; + /** The listener for events generated by this track entry, or null. + * + * A track entry returned from {@link AnimationState.setAnimation} is already the current animation + * for the track, so the callback for listener {@link AnimationStateListener.start} will not be called. */ + listener = null; + /** The index of the track where this track entry is either current or queued. + * + * See {@link AnimationState.getTrack}. */ + trackIndex = 0; + /** If true, the animation will repeat. If false it will not, instead its last frame is applied if played beyond its + * duration. */ + loop = false; + /** When true, timelines in this animation that support additive have their values added to the setup or current pose values + * instead of replacing them. Additive can be set for a new track entry only before {@link AnimationState.apply} + * is next called. */ + additive = false; + /** If true, the animation will be applied in reverse. */ + reverse = false; + /** If true, mixing rotation between tracks always uses the shortest rotation direction. If the rotation is animated, the + * shortest rotation direction may change during the mix. + * + * If false, the shortest rotation direction is remembered when the mix starts and the same direction is used for the rest + * of the mix. Defaults to false. + * + * See {@link resetRotationDirections}. */ + shortestRotation = false; + keepHold = false; + /** When the interpolated mix percentage is less than the `eventThreshold` , event timelines are applied while + * this animation is being mixed out. Defaults to 0, so event timelines are not applied while this animation is being mixed + * out. */ + eventThreshold = 0; + /** When the interpolated mix percentage is less than the `mixAttachmentThreshold`, attachment timelines are + * applied while this animation is being mixed out. Defaults to 0, so attachment timelines are not applied while this + * animation is being mixed out. */ + mixAttachmentThreshold = 0; + /** When the computed alpha is greater than `alphaAttachmentThreshold`, attachment timelines are applied. The + * computed alpha includes {@link alpha} and the interpolated mix percentage. Defaults to 0, so attachment timelines are + * always applied. */ + alphaAttachmentThreshold = 0; + /** When the interpolated mix percentage is less than the `mixAttachmentThreshold`, attachment timelines are + * applied while this animation is being mixed out. Defaults to 0, so attachment timelines are not applied while this + * animation is being mixed out. */ + mixDrawOrderThreshold = 0; + /** The time in seconds for the first frame of this animation, both initially and after looping. Defaults to 0. + * + * When setting `animationStart` time, {@link animationLast} can be set to the same value to avoid firing events + * from the start of the animation. */ + animationStart = 0; + /** The time in seconds for the last frame of this animation. Past this time, non-looping animations hold the pose at this + * time while looping animations will loop back to {@link animationStart}. Defaults to the {@link Animation.duration}. */ + animationEnd = 0; + /** The time in seconds this animation was last applied. Some timelines use this for one-time triggers. For example, when + * this animation is applied, event timelines will fire all events between the `animationLast` time (exclusive) + * and `animationTime` (inclusive). Defaults to -1 to ensure triggers on frame 0 happen the first time this + * animation is applied. */ + animationLast = 0; + nextAnimationLast = 0; + /** Seconds to postpone playing the animation. Must be >= 0. When this track entry is the current track entry, + * `delay` postpones incrementing the {@link trackTime}. When this track entry is queued, `delay` is + * the time from the start of the previous animation to when this track entry will become the current track entry (ie when + * the previous track entry {@link trackTime} >= this track entry's `delay`). + * + * {@link timeScale} affects the delay. + * + * When passing `delay` <= 0 to {@link AnimationState.addAnimation} this + * `delay` is set using a mix duration from {@link AnimationStateData}. To change the {@link mixDuration} + * afterward, use {@link setMixDuration} so this `delay` is adjusted. */ + delay = 0; + /** The time in seconds this track entry has been the current track entry, starting at 0 and increasing forever. Compare to + * {@link getAnimationTime}, which is always between {@link animationStart} and {@link animationEnd}. + * + * The track time can be set to start the animation at a time other than 0, without affecting looping. When doing so, + * {@link animationLast} can be set to the same value to avoid firing events from the start of the animation. + * + * To set the time an animation starts and loops, use {@link animationStart} and {@link animationEnd}. */ + trackTime = 0; + trackLast = 0; + nextTrackLast = 0; + /** The track time in seconds when this animation will be removed from the track. Defaults to the highest possible float + * value, meaning the animation will be applied until a new animation is set or the track is cleared. If the track end time + * is reached, no other animations are queued for playback, and mixing from any previous animations is complete, then the + * properties keyed by the animation are set to the setup pose and the track is cleared. + * + * Usually you want to use {@link AnimationState.addEmptyAnimation} rather than have the animation + * abruptly cease being applied, leaving the current pose. */ + trackEnd = 0; + /** Multiplier for the delta time when this track entry is updated, causing time for this animation to pass slower or + * faster. Defaults to 1. + * + * Values < 0 are not supported. To play an animation in reverse, use {@link reverse}. + * + * {@link mixTime} is not affected by track entry time scale, so {@link mixDuration} may need to be adjusted to match the + * animation speed. + * + * When using {@link AnimationState.addAnimation} with a `delay` <= 0, the + * {@link delay} is set using the mix duration from {@link AnimationState.data}, assuming time scale to be 1. If the time + * scale is not 1, the delay may need to be adjusted. + * + * See {@link AnimationState.timeScale} to affect all animations. */ + timeScale = 0; + /** Values < 1 mix this animation with the skeleton's current pose (either the setup pose or the pose from lower tracks). + * Defaults to 1, which overwrites the skeleton's current pose with this animation. + * + * Alpha should be 1 on track 0. + * + * See {@link getAlphaAttachmentThreshold}. */ + alpha = 0; + /** Seconds elapsed from 0 to the {@link mixDuration} when mixing from the previous animation to this animation. May + * be slightly more than `mixDuration` when the mix is complete. */ + mixTime = 0; + /** Seconds for mixing from the previous animation to this animation. Defaults to the value provided by + * {@link AnimationStateData.getMix} based on the animation before this animation (if any). + * + * A mix duration of 0 still needs to be applied one more time to mix out, so the the properties it was animating are + * reverted. A mix duration of 0 can be set at any time to end the mix on the next + * {@link AnimationState.update | update}. + * + * The `mixDuration` can be set manually rather than use the value from + * {@link AnimationStateData.getMix}. In that case, the `mixDuration` can be set for a new + * track entry only before {@link AnimationState.update} is next called. + * + * When using {@link AnimationState.addAnimation} with a `delay` <= 0, the + * {@link getDelay} is set using the mix duration from {@link AnimationState.data}. If `mixDuration` is set + * afterward, the delay needs to be adjusted: + * + *
+     * entry.mixDuration = 0.25;
+ * entry.delay = entry.previous.getTrackComplete() - entry.mixDuration + 0; + *
+ * + * Alternatively, use {@link setMixDuration} to set both the mix duration and recompute the delay:
+ * + *
+      entry.setMixDuration(0.25f, 0); // mixDuration, delay
+     * 
+ */ + mixDuration = 0; + totalAlpha = 0; + mixInterpolation = Interpolation.linear; + /** Sets both {@link getMixDuration} and {@link getDelay}. + * @param delay If > 0, sets {@link getDelay}. If <= 0, the delay set is the duration of the previous track entry minus + * the specified mix duration plus the specified `delay` (ie the mix ends at (when `delay` = + * 0) or before (when `delay` < 0) the previous track entry duration). If the previous entry is + * looping, its next loop completion is used instead of its duration. */ + setMixDuration(mixDuration, delay) { + this.mixDuration = mixDuration; + if (delay !== void 0) { + if (delay <= 0) delay = this.previous == null ? 0 : Math.max(delay + this.previous.getTrackComplete() - mixDuration, 0); + this.delay = delay; + } + } + /** The interpolation to apply to the mix percentage ({@link mixTime} / {@link mixDuration}) when mixing from the previous + * animation to this animation. Defaults to linear. */ + setMixInterpolation(mixInterpolation) { + if (!mixInterpolation) throw new Error("mixInterpolation cannot be null."); + this.mixInterpolation = mixInterpolation; + } + mix() { + if (this.mixDuration === 0) return 1; + let mix = this.mixTime / this.mixDuration; + if (mix >= 1) return 1; + if (this.mixInterpolation === Interpolation.linear) return mix; + mix = this.mixInterpolation.apply(mix); + if (mix < 0) return 0; + if (mix > 1) return 1; + return mix; + } + /** For each timeline: + * - Bits 0-1: MixFrom. + * - Bit 2, HOLD: 0 = mix out using alphaMix, 1 = apply full alpha to prevent dipping. Timeline is first on its track to + * set the property and the next entry (mixingTo) also sets it. When held, timelineHoldMix's mix controls how the hold fades + * out (for 3+ entry chains where the chain eventually stops setting the property). */ + timelineMode = []; + timelineHoldMix = []; + timelinesRotation = []; + reset() { + this.next = null; + this.previous = null; + this.mixingFrom = null; + this.mixingTo = null; + this.mixInterpolation = Interpolation.linear; + this.animation = null; + this.listener = null; + this.timelineMode.length = 0; + this.timelineHoldMix.length = 0; + this.timelinesRotation.length = 0; + } + /** Uses {@link trackTime} to compute the `animationTime`, which is always between {@link animationStart} and + * {@link animationEnd}. When `trackTime` is 0, `animationTime` is equal to the + * `animationStart` time. */ + getAnimationTime() { + if (!this.loop) return Math.min(this.trackTime + this.animationStart, this.animationEnd); + const duration = this.animationEnd - this.animationStart; + if (duration === 0) return this.animationStart; + return this.trackTime % duration + this.animationStart; + } + setAnimationLast(animationLast) { + this.animationLast = animationLast; + this.nextAnimationLast = animationLast; + } + /** Returns true if at least one loop has been completed. + * + * See {@link AnimationStateListener.complete}. */ + isComplete() { + return this.trackTime >= this.animationEnd - this.animationStart; + } + /** When {@link shortestRotation} is false, this clears the directions for mixing this entry's rotation. This can be useful + * to avoid bones rotating the long way around when using {@link getAlpha} and starting animations on other tracks. + * + * Mixing involves finding a rotation between two others. There are two possible solutions: the short or the long way + * around. When the two rotations change over time, which direction is the short or long way can also change. If the short + * way was always chosen, bones flip to the other side when that direction became the long way. TrackEntry chooses the short + * way the first time it is applied and remembers that direction. Resetting that direction makes it choose a new short way + * on the next apply. */ + resetRotationDirections() { + this.timelinesRotation.length = 0; + } + /** If this track entry is non-looping, this is the track time in seconds when {@link animationEnd} is reached, or the + * current {@link trackTime} if it has already been reached. + * + * If this track entry is looping, this is the track time when this animation will reach its next {@link animationEnd} (the + * next loop completion). */ + getTrackComplete() { + const duration = this.animationEnd - this.animationStart; + if (duration !== 0) { + if (this.loop) return duration * (1 + (this.trackTime / duration | 0)); + if (this.trackTime < duration) return duration; + } + return this.trackTime; + } + /** Returns true if this track entry has been applied at least once. + * + * See {@link AnimationState.apply}. */ + wasApplied() { + return this.nextTrackLast !== -1; + } + /** Returns true if there is a {@link next} track entry and it will become the current track entry during the next + * {@link AnimationState.update}. */ + isNextReady() { + return this.next != null && this.nextTrackLast - this.next.delay >= 0; + } + }; + var EventQueue = class { + objects = []; + drainDisabled = false; + animState; + constructor(animState) { + this.animState = animState; + } + start(entry) { + this.objects.push(0 /* start */); + this.objects.push(entry); + this.animState.animationsChanged = true; + } + interrupt(entry) { + this.objects.push(1 /* interrupt */); + this.objects.push(entry); + } + end(entry) { + this.objects.push(2 /* end */); + this.objects.push(entry); + this.animState.animationsChanged = true; + } + dispose(entry) { + this.objects.push(3 /* dispose */); + this.objects.push(entry); + } + complete(entry) { + this.objects.push(4 /* complete */); + this.objects.push(entry); + } + event(entry, event) { + this.objects.push(5 /* event */); + this.objects.push(entry); + this.objects.push(event); + } + drain() { + if (this.drainDisabled) return; + this.drainDisabled = true; + for (let i = 0; i < this.objects.length; i += 2) { + const objects = this.objects; + const type = objects[i]; + const entry = objects[i + 1]; + const listeners = this.animState.listeners.slice(); + switch (type) { + case 0 /* start */: + if (entry.listener?.start) entry.listener.start(entry); + for (let ii = 0; ii < listeners.length; ii++) { + const listener = listeners[ii]; + if (listener.start) listener.start(entry); + } + break; + case 1 /* interrupt */: + if (entry.listener?.interrupt) entry.listener.interrupt(entry); + for (let ii = 0; ii < listeners.length; ii++) { + const listener = listeners[ii]; + if (listener.interrupt) listener.interrupt(entry); + } + break; + // biome-ignore lint/suspicious/noFallthroughSwitchClause: reference runtime does fall through + case 2 /* end */: + if (entry.listener?.end) entry.listener.end(entry); + for (let ii = 0; ii < listeners.length; ii++) { + const listener = listeners[ii]; + if (listener.end) listener.end(entry); + } + // Fall through. + case 3 /* dispose */: + if (entry.listener?.dispose) entry.listener.dispose(entry); + for (let ii = 0; ii < listeners.length; ii++) { + const listener = listeners[ii]; + if (listener.dispose) listener.dispose(entry); + } + this.animState.trackEntryPool.free(entry); + break; + case 4 /* complete */: + if (entry.listener?.complete) entry.listener.complete(entry); + for (let ii = 0; ii < listeners.length; ii++) { + const listener = listeners[ii]; + if (listener.complete) listener.complete(entry); + } + break; + case 5 /* event */: { + const event = objects[i++ + 2]; + if (entry.listener?.event) entry.listener.event(entry, event); + for (let ii = 0; ii < listeners.length; ii++) { + const listener = listeners[ii]; + if (listener.event) listener.event(entry, event); + } + break; + } + } + } + this.clear(); + this.drainDisabled = false; + } + clear() { + this.objects.length = 0; + } + }; + var EventType = /* @__PURE__ */ ((EventType2) => { + EventType2[EventType2["start"] = 0] = "start"; + EventType2[EventType2["interrupt"] = 1] = "interrupt"; + EventType2[EventType2["end"] = 2] = "end"; + EventType2[EventType2["dispose"] = 3] = "dispose"; + EventType2[EventType2["complete"] = 4] = "complete"; + EventType2[EventType2["event"] = 5] = "event"; + return EventType2; + })(EventType || {}); + var AnimationStateAdapter = class { + start(entry) { + } + interrupt(entry) { + } + end(entry) { + } + dispose(entry) { + } + complete(entry) { + } + event(entry, event) { + } + }; + var CURRENT = 0; + var SETUP = 1; + var FIRST = 2; + var MODE = 3; + var HOLD = 4; + var ATTACH_SETUP = 1; + var ATTACH_RETAIN = 2; + + // spine-core/src/AnimationStateData.ts + var AnimationStateData = class { + /** The SkeletonData to look up animations when they are specified by name. */ + skeletonData; + animationToMixTime = {}; + /** The mix duration to use when no mix duration has been defined between two animations. */ + defaultMix = 0; + constructor(skeletonData) { + if (!skeletonData) throw new Error("skeletonData cannot be null."); + this.skeletonData = skeletonData; + } + setMix(from, to, duration) { + if (typeof from === "string") + return this.setMix1(from, to, duration); + return this.setMix2(from, to, duration); + } + setMix1(fromName, toName, duration) { + const from = this.skeletonData.findAnimation(fromName); + if (!from) throw new Error(`Animation not found: ${fromName}`); + const to = this.skeletonData.findAnimation(toName); + if (!to) throw new Error(`Animation not found: ${toName}`); + this.setMix2(from, to, duration); + } + setMix2(from, to, duration) { + if (!from) throw new Error("from cannot be null."); + if (!to) throw new Error("to cannot be null."); + const key = `${from.name}.${to.name}`; + this.animationToMixTime[key] = duration; + } + /** Returns the mix duration to use when changing from the specified animation to the other on the same track, or the + * {@link defaultMix} if no mix duration has been set. */ + getMix(from, to) { + const key = `${from.name}.${to.name}`; + const value = this.animationToMixTime[key]; + return value === void 0 ? this.defaultMix : value; + } + }; + + // spine-core/src/AssetManagerBase.ts + var AssetManagerBase = class { + constructor(textureLoader, pathPrefix = "", downloader = new Downloader(), cache = new AssetCache()) { + this.textureLoader = textureLoader; + this.pathPrefix = pathPrefix; + this.downloader = downloader; + this.cache = cache; + } + errors = {}; + toLoad = 0; + loaded = 0; + texturePmaInfo = {}; + start(path) { + this.toLoad++; + return this.pathPrefix + path; + } + success(callback, path, asset) { + this.toLoad--; + this.loaded++; + this.cache.assets[path] = asset; + this.cache.assetsRefCount[path] = (this.cache.assetsRefCount[path] || 0) + 1; + if (callback) callback(path, asset); + } + error(callback, path, message) { + this.toLoad--; + this.loaded++; + this.errors[path] = message; + if (callback) callback(path, message); + } + loadAll() { + const promise = new Promise((resolve, reject) => { + const check = () => { + if (this.isLoadingComplete()) { + if (this.hasErrors()) reject(this.errors); + else resolve(this); + return; + } + requestAnimationFrame(check); + }; + requestAnimationFrame(check); + }); + return promise; + } + setRawDataURI(path, data) { + this.downloader.rawDataUris[this.pathPrefix + path] = data; + } + loadBinary(path, success = () => { + }, error = () => { + }) { + path = this.start(path); + if (this.reuseAssets(path, success, error)) return; + this.cache.assetsLoaded[path] = new Promise((resolve, reject) => { + this.downloader.downloadBinary(path, (data) => { + this.success(success, path, data); + resolve(data); + }, (status, responseText) => { + const errorMsg = `Couldn't load binary ${path}: status ${status}, ${responseText}`; + this.error(error, path, errorMsg); + reject(errorMsg); + }); + }); + } + loadText(path, success = () => { + }, error = () => { + }) { + path = this.start(path); + this.downloader.downloadText(path, (data) => { + this.success(success, path, data); + }, (status, responseText) => { + this.error(error, path, `Couldn't load text ${path}: status ${status}, ${responseText}`); + }); + } + loadJson(path, success = () => { + }, error = () => { + }) { + path = this.start(path); + if (this.reuseAssets(path, success, error)) return; + this.cache.assetsLoaded[path] = new Promise((resolve, reject) => { + this.downloader.downloadJson(path, (data) => { + this.success(success, path, data); + resolve(data); + }, (status, responseText) => { + const errorMsg = `Couldn't load JSON ${path}: status ${status}, ${responseText}`; + this.error(error, path, errorMsg); + reject(errorMsg); + }); + }); + } + reuseAssets(path, success = () => { + }, error = () => { + }) { + const loadedStatus = this.cache.getAsset(path); + const alreadyExistsOrLoading = loadedStatus !== void 0; + if (alreadyExistsOrLoading) { + this.cache.assetsLoaded[path] = loadedStatus.then((data) => { + data = data instanceof Image || data instanceof ImageBitmap ? this.textureLoader(data) : data; + this.success(success, path, data); + return data; + }).catch((errorMsg) => { + this.error(error, path, errorMsg); + return void 0; + }); + } + return alreadyExistsOrLoading; + } + loadTexture(path, success = () => { + }, error = () => { + }) { + path = this.start(path); + if (this.reuseAssets(path, success, error)) return; + const pma = this.texturePmaInfo[path]; + this.cache.assetsLoaded[path] = new Promise((resolve, reject) => { + const isBrowser = !!(typeof window !== "undefined" && typeof navigator !== "undefined" && window.document); + const isWebWorker = !isBrowser; + if (isWebWorker) { + fetch(path, { mode: "cors" }).then((response) => { + if (response.ok) return response.blob(); + const errorMsg = `Couldn't load image: ${path}`; + this.error(error, path, `Couldn't load image: ${path}`); + reject(errorMsg); + }).then((blob) => { + return blob ? createImageBitmap(blob, { premultiplyAlpha: "none", colorSpaceConversion: "none" }) : null; + }).then((bitmap) => { + if (bitmap) { + const texture = this.createTexture(path, pma, bitmap); + this.success(success, path, texture); + resolve(texture); + } + ; + }); + } else { + const image = new Image(); + image.crossOrigin = "anonymous"; + image.onload = () => { + const texture = this.createTexture(path, pma, image); + this.success(success, path, texture); + resolve(texture); + }; + image.onerror = () => { + const errorMsg = `Couldn't load image: ${path}`; + this.error(error, path, errorMsg); + reject(errorMsg); + }; + if (this.downloader.rawDataUris[path]) path = this.downloader.rawDataUris[path]; + image.src = path; + } + }); + } + loadTextureAtlas(path, success = () => { + }, error = () => { + }, fileAlias) { + const index = path.lastIndexOf("/"); + const parent = index >= 0 ? path.substring(0, index + 1) : ""; + path = this.start(path); + if (this.reuseAssets(path, success, error)) return; + this.cache.assetsLoaded[path] = new Promise((resolve, reject) => { + this.downloader.downloadText(path, (atlasText) => { + try { + const atlas = this.createTextureAtlas(atlasText, parent, path, fileAlias); + let toLoad = atlas.pages.length, abort = false; + if (toLoad === 0) { + this.success(success, path, atlas); + resolve(atlas); + return; + } + for (const page of atlas.pages) { + this.loadTexture( + this.texturePath(parent, page.name, fileAlias), + (imagePath, texture) => { + if (!abort) { + page.setTexture(texture); + if (--toLoad === 0) { + this.success(success, path, atlas); + resolve(atlas); + } + } + }, + (imagePath, message) => { + if (!abort) { + const errorMsg = `Couldn't load texture ${path} page image: ${imagePath}`; + this.error(error, path, errorMsg); + reject(errorMsg); + } + abort = true; + } + ); + } + } catch (e) { + const errorMsg = `Couldn't parse texture atlas ${path}: ${e.message}`; + this.error(error, path, errorMsg); + reject(errorMsg); + } + }, (status, responseText) => { + const errorMsg = `Couldn't load texture atlas ${path}: status ${status}, ${responseText}`; + this.error(error, path, errorMsg); + reject(errorMsg); + }); + }); + } + loadTextureAtlasButNoTextures(path, success = () => { + }, error = () => { + }) { + const index = path.lastIndexOf("/"); + const parent = index >= 0 ? path.substring(0, index + 1) : ""; + path = this.start(path); + if (this.reuseAssets(path, success, error)) return; + this.cache.assetsLoaded[path] = new Promise((resolve, reject) => { + this.downloader.downloadText(path, (atlasText) => { + try { + const atlas = this.createTextureAtlas(atlasText, parent, path); + this.success(success, path, atlas); + resolve(atlas); + } catch (e) { + const errorMsg = `Couldn't parse texture atlas ${path}: ${e.message}`; + this.error(error, path, errorMsg); + reject(errorMsg); + } + }, (status, responseText) => { + const errorMsg = `Couldn't load texture atlas ${path}: status ${status}, ${responseText}`; + this.error(error, path, errorMsg); + reject(errorMsg); + }); + }); + } + async loadBinaryAsync(path) { + return new Promise((resolve, reject) => { + this.loadBinary( + path, + (_, binary) => resolve(binary), + (_, message) => reject(message) + ); + }); + } + async loadJsonAsync(path) { + return new Promise((resolve, reject) => { + this.loadJson( + path, + (_, object) => resolve(object), + (_, message) => reject(message) + ); + }); + } + async loadTextureAsync(path) { + return new Promise((resolve, reject) => { + this.loadTexture( + path, + (_, texture) => resolve(texture), + (_, message) => reject(message) + ); + }); + } + async loadTextureAtlasAsync(path) { + return new Promise((resolve, reject) => { + this.loadTextureAtlas( + path, + (_, atlas) => resolve(atlas), + (_, message) => reject(message) + ); + }); + } + async loadTextureAtlasButNoTexturesAsync(path) { + return new Promise((resolve, reject) => { + this.loadTextureAtlasButNoTextures( + path, + (_, atlas) => resolve(atlas), + (_, message) => reject(message) + ); + }); + } + setCache(cache) { + this.cache = cache; + } + get(path) { + return this.cache.assets[this.pathPrefix + path]; + } + require(path) { + path = this.pathPrefix + path; + const asset = this.cache.assets[path]; + if (asset) return asset; + const error = this.errors[path]; + throw Error(`Asset not found: ${path}${error ? ` +${error}` : ""}`); + } + remove(path) { + path = this.pathPrefix + path; + const asset = this.cache.assets[path]; + if (asset.dispose) asset.dispose(); + delete this.cache.assets[path]; + delete this.cache.assetsRefCount[path]; + delete this.cache.assetsLoaded[path]; + return asset; + } + removeAll() { + for (const path in this.cache.assets) { + const asset = this.cache.assets[path]; + if (asset.dispose) asset.dispose(); + } + this.cache.assets = {}; + this.cache.assetsLoaded = {}; + this.cache.assetsRefCount = {}; + } + isLoadingComplete() { + return this.toLoad === 0; + } + getToLoad() { + return this.toLoad; + } + getLoaded() { + return this.loaded; + } + dispose() { + this.removeAll(); + } + // dispose asset only if it's not used by others + disposeAsset(path) { + const asset = this.cache.assets[path]; + if (asset instanceof TextureAtlas) { + asset.dispose(); + return; + } + this.disposeAssetInternal(path); + } + hasErrors() { + return Object.keys(this.errors).length > 0; + } + getErrors() { + return this.errors; + } + disposeAssetInternal(path) { + if (this.cache.assetsRefCount[path] > 0 && --this.cache.assetsRefCount[path] === 0) { + return this.remove(path); + } + } + createTextureAtlas(atlasText, parentPath, path, fileAlias) { + const atlas = new TextureAtlas(atlasText); + atlas.dispose = () => { + if (this.cache.assetsRefCount[path] <= 0) return; + this.disposeAssetInternal(path); + for (const page of atlas.pages) { + page.texture?.dispose(); + } + }; + for (const page of atlas.pages) { + const texturePath = this.texturePath(parentPath, page.name, fileAlias); + this.texturePmaInfo[this.pathPrefix + texturePath] = page.pma; + } + return atlas; + } + createTexture(path, pma, image) { + const texture = this.textureLoader(image, pma); + const textureDispose = texture.dispose.bind(texture); + texture.dispose = () => { + if (this.disposeAssetInternal(path)) textureDispose(); + }; + return texture; + } + texturePath(parentPath, pageName, fileAlias) { + if (!fileAlias) return parentPath + pageName; + return fileAlias[pageName]; + } + }; + var AssetCache = class _AssetCache { + assets = {}; + assetsRefCount = {}; + assetsLoaded = {}; + static AVAILABLE_CACHES = /* @__PURE__ */ new Map(); + static getCache(id) { + const cache = _AssetCache.AVAILABLE_CACHES.get(id); + if (cache) return cache; + const newCache = new _AssetCache(); + _AssetCache.AVAILABLE_CACHES.set(id, newCache); + return newCache; + } + async addAsset(path, asset) { + this.assetsLoaded[path] = Promise.resolve(asset); + this.assets[path] = asset; + return asset; + } + getAsset(path) { + return this.assetsLoaded[path]; + } + }; + var Downloader = class { + callbacks = {}; + rawDataUris = {}; + dataUriToString(dataUri) { + if (!dataUri.startsWith("data:")) { + throw new Error("Not a data URI."); + } + let base64Idx = dataUri.indexOf("base64,"); + if (base64Idx !== -1) { + base64Idx += "base64,".length; + return atob(dataUri.substr(base64Idx)); + } else { + return dataUri.substr(dataUri.indexOf(",") + 1); + } + } + base64ToUint8Array(base64) { + var binary_string = window.atob(base64); + var len = binary_string.length; + var bytes = new Uint8Array(len); + for (let i = 0; i < len; i++) { + bytes[i] = binary_string.charCodeAt(i); + } + return bytes; + } + dataUriToUint8Array(dataUri) { + if (!dataUri.startsWith("data:")) { + throw new Error("Not a data URI."); + } + let base64Idx = dataUri.indexOf("base64,"); + if (base64Idx === -1) throw new Error("Not a binary data URI."); + base64Idx += "base64,".length; + return this.base64ToUint8Array(dataUri.substr(base64Idx)); + } + downloadText(url, success, error) { + if (this.start(url, success, error)) return; + const rawDataUri = this.rawDataUris[url]; + if (rawDataUri && !rawDataUri.includes(".")) { + try { + this.finish(url, 200, this.dataUriToString(rawDataUri)); + } catch (e) { + this.finish(url, 400, JSON.stringify(e)); + } + return; + } + const request = new XMLHttpRequest(); + request.overrideMimeType("text/html"); + request.open("GET", rawDataUri ? rawDataUri : url, true); + const done = () => { + this.finish(url, request.status, request.responseText); + }; + request.onload = done; + request.onerror = done; + request.send(); + } + downloadJson(url, success, error) { + this.downloadText(url, (data) => { + success(JSON.parse(data)); + }, error); + } + downloadBinary(url, success, error) { + if (this.start(url, success, error)) return; + const rawDataUri = this.rawDataUris[url]; + if (rawDataUri && !rawDataUri.includes(".")) { + try { + this.finish(url, 200, this.dataUriToUint8Array(rawDataUri)); + } catch (e) { + this.finish(url, 400, JSON.stringify(e)); + } + return; + } + const request = new XMLHttpRequest(); + request.open("GET", rawDataUri ? rawDataUri : url, true); + request.responseType = "arraybuffer"; + const onerror = () => { + this.finish(url, request.status, request.response); + }; + request.onload = () => { + if (request.status === 200 || request.status === 0) + this.finish(url, 200, new Uint8Array(request.response)); + else + onerror(); + }; + request.onerror = onerror; + request.send(); + } + start(url, success, error) { + let callbacks = this.callbacks[url]; + try { + if (callbacks) return true; + this.callbacks[url] = callbacks = []; + } finally { + callbacks.push(success, error); + } + } + finish(url, status, data) { + const callbacks = this.callbacks[url]; + delete this.callbacks[url]; + if (status === 200 || status === 0) { + for (let i = 0, n = callbacks.length; i < n; i += 2) + callbacks[i](data); + } else { + for (let i = 1, n = callbacks.length; i < n; i += 2) + callbacks[i](status, data); + } + } + }; + + // spine-core/src/attachments/BoundingBoxAttachment.ts + var BoundingBoxAttachment = class _BoundingBoxAttachment extends VertexAttachment { + color = new Color(1, 1, 1, 1); + constructor(name) { + super(name); + } + copy() { + const copy = new _BoundingBoxAttachment(this.name); + this.copyTo(copy); + copy.color.setFromColor(this.color); + return copy; + } + }; + + // spine-core/src/attachments/ClippingAttachment.ts + var ClippingAttachment = class _ClippingAttachment extends VertexAttachment { + /** Clipping is performed between the clipping attachment's slot and the end slot. If null, clipping is done until the end of + * the skeleton's rendering. */ + endSlot = null; + /** When true the clipping polygon is treated as convex for more efficient clipping. If the polygon deforms to concave then the + * convex hull is used. When false the clipping polygon can be concave and if so has an additional CPU cost. Inverse clipping + * always uses convex. */ + convex = false; + /** When false, everything inside the clipping polygon is visible. When true, everything outside the clipping polygon is + * visible and clipping is convex. */ + inverse = false; + // Nonessential. + /** The color of the clipping polygon as it was in Spine. Available only when nonessential data was exported. Clipping polygons + * are not usually rendered at runtime. */ + color = new Color(0.2275, 0.2275, 0.8078, 1); + // ce3a3aff + constructor(name) { + super(name); + } + copy() { + const copy = new _ClippingAttachment(this.name); + this.copyTo(copy); + copy.endSlot = this.endSlot; + copy.convex = this.convex; + copy.inverse = this.inverse; + copy.color.setFromColor(this.color); + return copy; + } + }; + + // spine-core/src/attachments/PathAttachment.ts + var PathAttachment = class _PathAttachment extends VertexAttachment { + /** The lengths along the path in the setup pose from the start of the path to the end of each Bezier curve. */ + lengths = []; + /** If true, the start and end knots are connected. */ + closed = false; + /** If true, additional calculations are performed to make computing positions along the path more accurate so movement along + * the path has a constant speed. */ + constantSpeed = false; + /** The color of the path as it was in Spine. Available only when nonessential data was exported. Paths are not usually + * rendered at runtime. */ + color = new Color(1, 1, 1, 1); + constructor(name) { + super(name); + } + copy() { + const copy = new _PathAttachment(this.name); + this.copyTo(copy); + copy.lengths = []; + Utils.arrayCopy(this.lengths, 0, copy.lengths, 0, this.lengths.length); + copy.closed = this.closed; + copy.constantSpeed = this.constantSpeed; + copy.color.setFromColor(this.color); + return copy; + } + }; + + // spine-core/src/attachments/PointAttachment.ts + var PointAttachment = class _PointAttachment extends VertexAttachment { + /** The local x position. */ + x = 0; + /** The local y position. */ + y = 0; + /** The local rotation in degrees, counter clockwise. */ + rotation = 0; + /** The color of the point attachment as it was in Spine. Available only when nonessential data was exported. Point attachments + * are not usually rendered at runtime. */ + color = new Color(0.38, 0.94, 0, 1); + constructor(name) { + super(name); + } + /** Computes the world position from the local position. */ + computeWorldPosition(bone, point) { + point.x = this.x * bone.a + this.y * bone.b + bone.worldX; + point.y = this.x * bone.c + this.y * bone.d + bone.worldY; + return point; + } + /** Computes the world rotation from the local rotation. */ + computeWorldRotation(bone) { + const r = this.rotation * MathUtils.degRad, cos = Math.cos(r), sin = Math.sin(r); + const x = cos * bone.a + sin * bone.b; + const y = cos * bone.c + sin * bone.d; + return MathUtils.atan2Deg(y, x); + } + copy() { + const copy = new _PointAttachment(this.name); + copy.x = this.x; + copy.y = this.y; + copy.rotation = this.rotation; + copy.color.setFromColor(this.color); + return copy; + } + }; + + // spine-core/src/AtlasAttachmentLoader.ts + var AtlasAttachmentLoader = class { + atlas; + allowMissingRegions; + constructor(atlas, allowMissingRegions = false) { + this.atlas = atlas; + this.allowMissingRegions = allowMissingRegions; + } + /** Sets each {@link Sequence.regions} by calling {@link findRegion} for each texture region using + * {@link Sequence.getPath}. */ + findRegions(name, basePath, sequence) { + const regions = sequence.regions; + for (let i = 0, n = regions.length; i < n; i++) + regions[i] = this.findRegion(name, sequence.getPath(basePath, i)); + } + /** Looks for the region with the specified path. If not found and {@link allowMissingRegions} is false, an error is + * raised. */ + findRegion(name, path) { + const region = this.atlas.findRegion(path); + if (!region && !this.allowMissingRegions) + throw new Error(`Region not found in atlas: ${path} (attachment: ${name})`); + return region; + } + newRegionAttachment(skin, placeholder, name, path, sequence) { + this.findRegions(name, path, sequence); + return new RegionAttachment(name, sequence); + } + newMeshAttachment(skin, placeholder, name, path, sequence) { + this.findRegions(name, path, sequence); + return new MeshAttachment(name, sequence); + } + newBoundingBoxAttachment(skin, placeholder, name) { + return new BoundingBoxAttachment(name); + } + newPathAttachment(skin, placeholder, name) { + return new PathAttachment(name); + } + newPointAttachment(skin, placeholder, name) { + return new PointAttachment(name); + } + newClippingAttachment(skin, placeholder, name) { + return new ClippingAttachment(name); + } + }; + + // spine-core/src/PosedData.ts + var PosedData = class { + name; + setupPose; + /** When true, {@link Skeleton.updateWorldTransform} only updates this constraint if the {@link Skeleton.skin} + * contains this constraint. + * + * See {@link Skin.constraints}. */ + skinRequired = false; + constructor(name, setupPose) { + if (name == null) throw new Error("name cannot be null."); + this.name = name; + this.setupPose = setupPose; + } + }; + + // spine-core/src/BoneData.ts + var BoneData = class _BoneData extends PosedData { + /** The index of the bone in {@link Skeleton.bones}. */ + index = 0; + /** The parent bone, or null if this bone is the root. */ + parent = null; + /** The bone's length. */ + length = 0; + // Nonessential. + /** The color of the bone as it was in Spine. Available only when nonessential data was exported. Bones are not usually + * rendered at runtime. */ + color = new Color(); + /** The bone icon name as it was in Spine, or null if nonessential data was not exported. */ + icon; + /** The bone icon's display size scale, or 1 if nonessential data was not exported. */ + iconSize = 1; + /** The bone icon's display rotation in degrees, or 0 if nonessential data was not exported. */ + iconRotation = 0; + /** False if the bone was hidden in Spine and nonessential data was exported. Does not affect runtime rendering. */ + visible = false; + constructor(index, name, parent) { + super(name, new BonePose()); + if (index < 0) throw new Error("index must be >= 0."); + if (!name) throw new Error("name cannot be null."); + this.index = index; + this.parent = parent; + } + copy(parent) { + const copy = new _BoneData(this.index, this.name, parent); + copy.length = this.length; + copy.setupPose.set(this.setupPose); + return copy; + } + }; + var Inherit = /* @__PURE__ */ ((Inherit2) => { + Inherit2[Inherit2["Normal"] = 0] = "Normal"; + Inherit2[Inherit2["OnlyTranslation"] = 1] = "OnlyTranslation"; + Inherit2[Inherit2["NoRotationOrReflection"] = 2] = "NoRotationOrReflection"; + Inherit2[Inherit2["NoScale"] = 3] = "NoScale"; + Inherit2[Inherit2["NoScaleOrReflection"] = 4] = "NoScaleOrReflection"; + return Inherit2; + })(Inherit || {}); + + // spine-core/src/BonePose.ts + var BonePose = class { + bone; + /** The local x translation. */ + x = 0; + /** The local y translation. */ + y = 0; + /** The local rotation in degrees, counter clockwise. */ + rotation = 0; + /** The local scaleX. */ + scaleX = 0; + /** The local scaleY. */ + scaleY = 0; + /** The local shearX. */ + shearX = 0; + /** The local shearY. */ + shearY = 0; + inherit = 0 /* Normal */; + /** The world transform `[a b][c d]` x-axis x component. */ + a = 0; + /** The world transform `[a b][c d]` y-axis x component. */ + b = 0; + /** The world transform `[a b][c d]` x-axis y component. */ + c = 0; + /** The world transform `[a b][c d]` y-axis y component. */ + d = 0; + /** The world X position. If changed, {@link updateLocalTransform} should be called. */ + worldY = 0; + /** The world Y position. If changed, {@link updateLocalTransform} should be called. */ + worldX = 0; + world = 0; + local = 0; + set(pose) { + if (pose == null) throw new Error("pose cannot be null."); + this.x = pose.x; + this.y = pose.y; + this.rotation = pose.rotation; + this.scaleX = pose.scaleX; + this.scaleY = pose.scaleY; + this.shearX = pose.shearX; + this.shearY = pose.shearY; + this.inherit = pose.inherit; + } + setPosition(x, y) { + this.x = x; + this.y = y; + } + setScale(scaleOrX, scaleY) { + this.scaleX = scaleOrX; + this.scaleY = scaleY === void 0 ? scaleOrX : scaleY; + } + /** Determines how parent world transforms affect this bone. */ + getInherit() { + return this.inherit; + } + setInherit(inherit) { + if (inherit == null) throw new Error("inherit cannot be null."); + this.inherit = inherit; + } + /** Called by {@link Skeleton.updateCache} to compute the world transform, if needed. */ + update(skeleton, physics) { + if (this.world !== skeleton._update) this.updateWorldTransform(skeleton); + } + /** Computes the world transform using the parent bone's world transform and this applied local pose. Child bones are not + * updated. + * + * See World transforms in the Spine + * Runtimes Guide. */ + updateWorldTransform(skeleton) { + if (this.local === skeleton._update) + this.updateLocalTransform(skeleton); + else + this.world = skeleton._update; + const rotation = this.rotation; + const scaleX = this.scaleX; + const scaleY = this.scaleY; + const shearX = this.shearX; + const shearY = this.shearY; + if (!this.bone.parent) { + const sx = skeleton.scaleX, sy = skeleton.scaleY; + const rx = (rotation + shearX) * MathUtils.degRad; + const ry = (rotation + 90 + shearY) * MathUtils.degRad; + this.a = Math.cos(rx) * scaleX * sx; + this.b = Math.cos(ry) * scaleY * sx; + this.c = Math.sin(rx) * scaleX * sy; + this.d = Math.sin(ry) * scaleY * sy; + this.worldX = this.x * sx + skeleton.x; + this.worldY = this.y * sy + skeleton.y; + return; + } + const parent = this.bone.parent.appliedPose; + let pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; + this.worldX = pa * this.x + pb * this.y + parent.worldX; + this.worldY = pc * this.x + pd * this.y + parent.worldY; + switch (this.inherit) { + case 0 /* Normal */: { + const rx = (rotation + shearX) * MathUtils.degRad; + const ry = (rotation + 90 + shearY) * MathUtils.degRad; + const la = Math.cos(rx) * scaleX; + const lb = Math.cos(ry) * scaleY; + const lc = Math.sin(rx) * scaleX; + const ld = Math.sin(ry) * scaleY; + this.a = pa * la + pb * lc; + this.b = pa * lb + pb * ld; + this.c = pc * la + pd * lc; + this.d = pc * lb + pd * ld; + return; + } + case 1 /* OnlyTranslation */: { + const sx = skeleton.scaleX, sy = skeleton.scaleY; + const rx = (rotation + shearX) * MathUtils.degRad; + const ry = (rotation + 90 + shearY) * MathUtils.degRad; + this.a = Math.cos(rx) * scaleX * sx; + this.b = Math.cos(ry) * scaleY * sx; + this.c = Math.sin(rx) * scaleX * sy; + this.d = Math.sin(ry) * scaleY * sy; + break; + } + case 2 /* NoRotationOrReflection */: { + const sx = skeleton.scaleX, sy = skeleton.scaleY, sxi = 1 / sx, syi = 1 / sy; + pa *= sxi; + pc *= syi; + let s = pa * pa + pc * pc; + let r = 0; + if (s > MathUtils.epsilon2) { + s = Math.abs(pa * pd * syi - pb * sxi * pc) / s; + pb = pc * s; + pd = pa * s; + r = rotation - MathUtils.atan2Deg(pc, pa); + } else { + pa = 0; + pc = 0; + r = rotation - 90 + MathUtils.atan2Deg(pd, pb); + } + const rx = (r + shearX) * MathUtils.degRad; + const ry = (r + shearY + 90) * MathUtils.degRad; + const la = Math.cos(rx) * scaleX; + const lb = Math.cos(ry) * scaleY; + const lc = Math.sin(rx) * scaleX; + const ld = Math.sin(ry) * scaleY; + this.a = (pa * la - pb * lc) * sx; + this.b = (pa * lb - pb * ld) * sx; + this.c = (pc * la + pd * lc) * sy; + this.d = (pc * lb + pd * ld) * sy; + break; + } + case 3 /* NoScale */: + case 4 /* NoScaleOrReflection */: { + const sx = skeleton.scaleX, sy = skeleton.scaleY, sxi = 1 / sx, syi = 1 / sy; + const r = rotation * MathUtils.degRad, cos = Math.cos(r), sin = Math.sin(r); + let za = (pa * cos + pb * sin) * sxi; + let zc = (pc * cos + pd * sin) * syi; + const s = 1 / Math.sqrt(za * za + zc * zc); + za *= s; + zc *= s; + let zb = -zc, zd = za; + if (this.inherit === 3 /* NoScale */ && pa * pd - pb * pc < 0 !== (sx < 0 !== sy < 0)) { + zb = -zb; + zd = -zd; + } + const rx = shearX * MathUtils.degRad; + const ry = (90 + shearY) * MathUtils.degRad; + const la = Math.cos(rx) * scaleX; + const lb = Math.cos(ry) * scaleY; + const lc = Math.sin(rx) * scaleX; + const ld = Math.sin(ry) * scaleY; + this.a = (za * la + zb * lc) * sx; + this.b = (za * lb + zb * ld) * sx; + this.c = (zc * la + zd * lc) * sy; + this.d = (zc * lb + zd * ld) * sy; + break; + } + } + } + /** Computes the local transform values from the world transform. + * + * If the world transform is modified (by a constraint, {@link rotateWorld}, etc) then this method should be called so + * the local transform matches the world transform. The local transform may be needed by other code (eg to apply another + * constraint). + * + * Some information is ambiguous in the world transform, such as -1,-1 scale versus 180 rotation. The local transform after + * calling this method is equivalent to the local transform used to compute the world transform, but may not be identical. */ + updateLocalTransform(skeleton) { + this.local = 0; + this.world = skeleton._update; + const sx = skeleton.scaleX, sy = skeleton.scaleY; + if (!this.bone.parent) { + const sxi = 1 / sx, syi = 1 / sy; + this.x = (this.worldX - skeleton.x) * sxi; + this.y = (this.worldY - skeleton.y) * syi; + this.set5(this.a * sxi, this.b * sxi, this.c * syi, this.d * syi, 0); + return; + } + const parent = this.bone.parent.appliedPose; + let pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; + const pad = pa * pd - pb * pc, pid = 1 / (pa * pd - pb * pc); + const ia = pd * pid, ib = pb * pid, ic = pc * pid, id = pa * pid; + const dx = this.worldX - parent.worldX, dy = this.worldY - parent.worldY; + this.x = dx * ia - dy * ib; + this.y = dy * id - dx * ic; + switch (this.inherit) { + case 0 /* Normal */: + this.set5(ia * this.a - ib * this.c, ia * this.b - ib * this.d, id * this.c - ic * this.a, id * this.d - ic * this.b, 0); + break; + case 1 /* OnlyTranslation */: { + const sxi = 1 / sx, syi = 1 / sy; + this.set5(this.a * sxi, this.b * sxi, this.c * syi, this.d * syi, 0); + break; + } + case 2 /* NoRotationOrReflection */: { + const sxi = 1 / sx, syi = 1 / sy; + pa *= sxi; + pc *= syi; + const wa = this.a * sxi, wb = this.b * sxi, wc = this.c * syi, wd = this.d * syi; + const s = 1 / (pa * pa + pc * pc), det = 1 / Math.abs(pad * sxi * syi); + this.set5( + (pa * wa + pc * wc) * s, + (pa * wb + pc * wd) * s, + (pa * wc - pc * wa) * det, + (pa * wd - pc * wb) * det, + MathUtils.atan2Deg(pc, pa) + ); + break; + } + case 3 /* NoScale */: + case 4 /* NoScaleOrReflection */: { + const sxi = 1 / sx, syi = 1 / sy; + const wa = this.a * sxi, wb = this.b * sxi, wc = this.c * syi, wd = this.d * syi; + let tx = pd * this.a - pb * this.c, ty = pa * this.c - pc * this.a; + if (pad < 0) { + tx = -tx; + ty = -ty; + } + let r = MathUtils.atan2Deg(ty, tx); + this.rotation = r; + r *= MathUtils.degRad; + const cos = Math.cos(r), sin = Math.sin(r); + let za = (pa * cos + pb * sin) * sxi; + let zc = (pc * cos + pd * sin) * syi; + const s = 1 / Math.sqrt(za * za + zc * zc); + za *= s; + zc *= s; + const si = this.inherit === 3 /* NoScale */ && pad < 0 !== (sx < 0 !== sy < 0) ? -1 : 1; + this.set4(za * wa + zc * wc, za * wb + zc * wd, (za * wc - zc * wa) * si, (za * wd - zc * wb) * si); + } + } + } + set4(ra, rb, rc, rd) { + const x = ra * ra + rc * rc, y = rb * rb + rd * rd; + if (x > MathUtils.epsilon2) { + this.shearX = MathUtils.atan2Deg(rc, ra); + this.scaleX = Math.sqrt(x); + } else { + this.shearX = 0; + this.scaleX = 0; + } + this.scaleY = Math.sqrt(y); + if (y > MathUtils.epsilon2) { + this.shearY = MathUtils.atan2Deg(rd, rb); + if (ra * rd - rb * rc < 0) { + this.scaleY = -this.scaleY; + this.shearY += 90; + } else + this.shearY -= 90; + if (this.shearY > 180) + this.shearY -= 360; + else if (this.shearY <= -180) + this.shearY += 360; + } else + this.shearY = 0; + } + set5(ra, rb, rc, rd, ro) { + this.shearX = 0; + const x = ra * ra + rc * rc, y = rb * rb + rd * rd; + if (x > MathUtils.epsilon2) { + const r = MathUtils.atan2Deg(rc, ra); + this.rotation = r + ro; + this.scaleX = Math.sqrt(x); + this.scaleY = Math.sqrt(y); + if (y > MathUtils.epsilon2) { + this.shearY = MathUtils.atan2Deg(rd, rb); + if (ra * rd - rb * rc < 0) { + this.scaleY = -this.scaleY; + this.shearY += 90 - r; + } else + this.shearY -= 90 + r; + if (this.shearY > 180) + this.shearY -= 360; + else if (this.shearY <= -180) + this.shearY += 360; + } else + this.shearY = 0; + } else { + this.scaleX = 0; + this.scaleY = Math.sqrt(y); + this.shearY = 0; + this.rotation = y > MathUtils.epsilon2 ? MathUtils.atan2Deg(rd, rb) - 90 + ro : ro; + } + } + /** If the world transform has been modified by constraints and the local transform no longer matches, + * {@link updateLocalTransform} is called. Call this after {@link Skeleton.updateWorldTransform} before + * using the applied local transform. */ + validateLocalTransform(skeleton) { + if (this.local === skeleton._update) this.updateLocalTransform(skeleton); + } + modifyLocal(skeleton) { + if (this.local === skeleton._update) this.updateLocalTransform(skeleton); + this.world = 0; + this.resetWorld(skeleton, skeleton._update); + } + modifyWorld(skeleton) { + const update = skeleton._update; + this.local = update; + this.world = update; + this.resetWorld(skeleton, update); + } + resetWorld(skeleton, update) { + const children = this.bone.children; + for (let i = 0, n = children.length; i < n; i++) { + const child = children[i].appliedPose; + if (child.world === update) { + if (child.local === update) child.updateLocalTransform(skeleton); + child.world = 0; + child.resetWorld(skeleton, update); + } + } + } + /** The world rotation for the X axis, calculated using {@link a} and {@link c}. This is the direction the bone is + * pointing. */ + getWorldRotationX() { + return MathUtils.atan2Deg(this.c, this.a); + } + /** The world rotation for the Y axis, calculated using {@link b} and {@link d}. */ + getWorldRotationY() { + return MathUtils.atan2Deg(this.d, this.b); + } + /** The magnitude (always positive) of the world scale X, calculated using {@link a} and {@link c}. */ + getWorldScaleX() { + return Math.sqrt(this.a * this.a + this.c * this.c); + } + /** The magnitude (always positive) of the world scale Y, calculated using {@link b} and {@link d}. */ + getWorldScaleY() { + return Math.sqrt(this.b * this.b + this.d * this.d); + } + // public Matrix3 getWorldTransform (Matrix3 worldTransform) { + // if (worldTransform == null) throw new IllegalArgumentException("worldTransform cannot be null."); + // float[] val = worldTransform.val; + // val[M00] = a; + // val[M01] = b; + // val[M10] = c; + // val[M11] = d; + // val[M02] = worldX; + // val[M12] = worldY; + // val[M20] = 0; + // val[M21] = 0; + // val[M22] = 1; + // return worldTransform; + // } + /** Transforms a point from world coordinates to the bone's local coordinates. */ + worldToLocal(world) { + if (world == null) throw new Error("world cannot be null."); + const det = this.a * this.d - this.b * this.c; + const x = world.x - this.worldX, y = world.y - this.worldY; + world.x = (x * this.d - y * this.b) / det; + world.y = (y * this.a - x * this.c) / det; + return world; + } + /** Transforms a point from the bone's local coordinates to world coordinates. */ + localToWorld(local) { + if (local == null) throw new Error("local cannot be null."); + const x = local.x, y = local.y; + local.x = x * this.a + y * this.b + this.worldX; + local.y = x * this.c + y * this.d + this.worldY; + return local; + } + /** Transforms a point from world coordinates to the parent bone's local coordinates. */ + worldToParent(world) { + if (world == null) throw new Error("world cannot be null."); + return this.bone.parent == null ? world : this.bone.parent.appliedPose.worldToLocal(world); + } + /** Transforms a point from the parent bone's coordinates to world coordinates. */ + parentToWorld(world) { + if (world == null) throw new Error("world cannot be null."); + return this.bone.parent == null ? world : this.bone.parent.appliedPose.localToWorld(world); + } + /** Transforms a world rotation to a local rotation. */ + worldToLocalRotation(worldRotation) { + worldRotation *= MathUtils.degRad; + const sin = Math.sin(worldRotation), cos = Math.cos(worldRotation); + return MathUtils.atan2Deg(this.a * sin - this.c * cos, this.d * cos - this.b * sin) + this.rotation - this.shearX; + } + /** Transforms a local rotation to a world rotation. */ + localToWorldRotation(localRotation) { + localRotation = (localRotation - this.rotation - this.shearX) * MathUtils.degRad; + const sin = Math.sin(localRotation), cos = Math.cos(localRotation); + return MathUtils.atan2Deg(cos * this.c + sin * this.d, cos * this.a + sin * this.b); + } + /** Rotates the world transform the specified amount. */ + rotateWorld(degrees) { + degrees *= MathUtils.degRad; + const sin = Math.sin(degrees), cos = Math.cos(degrees); + const ra = this.a, rb = this.b; + this.a = cos * ra - sin * this.c; + this.b = cos * rb - sin * this.d; + this.c = sin * ra + cos * this.c; + this.d = sin * rb + cos * this.d; + } + }; + + // spine-core/src/Posed.ts + var Posed = class { + /** The constraint's setup pose data. */ + data; + pose; + constrainedPose; + appliedPose; + constructor(data, pose, constrainedPose) { + if (data == null) throw new Error("data cannot be null."); + this.data = data; + this.pose = pose; + this.constrainedPose = constrainedPose; + this.appliedPose = pose; + } + /** Sets the unconstrained pose to the setup pose. */ + setupPose() { + this.pose.set(this.data.setupPose); + } + /** The setup pose data. May be shared with multiple instances. */ + getData() { + return this.data; + } + /** The unconstrained pose for this object, set by animations and application code. */ + getPose() { + return this.pose; + } + /** The pose to use for rendering. If no constraints modify this pose, this is the same as {@link pose}. Otherwise it is a + * copy of {@link pose} modified by constraints. */ + getAppliedPose() { + return this.appliedPose; + } + /** Sets the applied pose to the unconstrained pose, for when no constraints will modify the pose. */ + unconstrained() { + this.appliedPose = this.pose; + } + /** Sets the applied pose to the constrained pose, in anticipation of the applied pose being modified by constraints. */ + constrained() { + this.appliedPose = this.constrainedPose; + } + /** Sets the constrained pose to the unconstrained pose, as a starting point for constraints to be applied. */ + resetConstrained() { + this.constrainedPose.set(this.pose); + } + }; + + // spine-core/src/PosedActive.ts + var PosedActive = class extends Posed { + active = false; + constructor(data, pose, constrained) { + super(data, pose, constrained); + this.setupPose(); + } + /** Returns false when this constraint won't be updated by + * {@link Skeleton.updateWorldTransform} because a skin is required and the + * {@link Skeleton.skin active skin} does not contain this item. See {@link Skin.bones}, {@link Skin.constraints}, + * {@link PosedData.skinRequired}, and {@link Skeleton.updateCache}. */ + isActive() { + return this.active; + } + }; + + // spine-core/src/Bone.ts + var Bone = class _Bone extends PosedActive { + /** The parent bone, or null if this is the root bone. */ + parent = null; + /** The immediate children of this bone. */ + children = []; + sorted = false; + constructor(data, parent) { + super(data, new BonePose(), new BonePose()); + this.parent = parent; + this.appliedPose.bone = this; + this.constrainedPose.bone = this; + } + /** Copy constructor. Does not copy the {@link children} bones. */ + copy(parent) { + const copy = new _Bone(this.data, parent); + copy.pose.set(this.pose); + return copy; + } + }; + + // spine-core/src/Constraint.ts + var Constraint = class extends PosedActive { + constructor(data, pose, constrained) { + super(data, pose, constrained); + } + isSourceActive() { + return true; + } + }; + + // spine-core/src/DrawOrder.ts + var DrawOrder = class { + _setupPose; + /** The unconstrained draw order, set by animations and application code. */ + pose; + constrainedPose; + /** The constrained draw order for rendering. If no constraints modify the draw order, this is the same as {@link pose}. + * Otherwise it is a copy of {@link pose} modified by constraints. */ + appliedPose; + constructor(setupPose) { + this._setupPose = setupPose; + this.pose = [...setupPose]; + this.constrainedPose = []; + this.appliedPose = this.pose; + } + /** Sets the unconstrained draw order to the setup pose order. */ + setupPose() { + this.pose.length = this._setupPose.length; + Utils.arrayCopy(this._setupPose, 0, this.pose, 0, this._setupPose.length); + } + /** Sets the applied pose to the unconstrained pose, for when no constraints will modify the draw order. */ + unconstrained() { + this.appliedPose = this.pose; + } + /** Sets the applied pose to the constrained pose, in anticipation of the applied pose being modified by constraints. */ + constrained() { + this.appliedPose = this.constrainedPose; + } + /** Copies the unconstrained pose to the constrained pose, as a starting point for constraints to be applied. */ + resetConstrained() { + this.constrainedPose.length = this.pose.length; + Utils.arrayCopy(this.pose, 0, this.constrainedPose, 0, this.pose.length); + } + }; + + // spine-core/src/ConstraintData.ts + var ConstraintData = class extends PosedData { + constructor(name, setup) { + super(name, setup); + } + }; + var ScaleYMode = /* @__PURE__ */ ((ScaleYMode2) => { + ScaleYMode2[ScaleYMode2["None"] = 0] = "None"; + ScaleYMode2[ScaleYMode2["Uniform"] = 1] = "Uniform"; + ScaleYMode2[ScaleYMode2["Volume"] = 2] = "Volume"; + return ScaleYMode2; + })(ScaleYMode || {}); + + // spine-core/src/Event.ts + var Event = class { + /** The animation time this event was keyed, or -1 for the setup pose. */ + time = 0; + data; + /** The integer payload for this event. */ + intValue = 0; + /** The float payload for this event. */ + floatValue = 0; + stringValue = null; + /** If an audio path is set, the volume for the audio. */ + volume = 0; + /** If an audio path is set, the left/right balance for the audio. */ + balance = 0; + constructor(time, data) { + if (!data) throw new Error("data cannot be null."); + this.time = time; + this.data = data; + } + }; + + // spine-core/src/EventData.ts + var EventData = class { + /** The name of the event, unique across all events in the skeleton. + * + * See {@link SkeletonData.findEvent}. */ + name; + _audioPath = null; + /** Path to an audio file relative to the audio folder as defined in Spine. */ + get audioPath() { + return this._audioPath; + } + set audioPath(audioPath) { + if (audioPath == null) throw new Error("audioPath cannot be null."); + this._audioPath = audioPath; + } + /** The setup values that are shared by all events with this data. */ + setupPose = new Event(-1, this); + constructor(name) { + this.name = name; + } + }; + + // spine-core/src/IkConstraintPose.ts + var IkConstraintPose = class { + /** For two bone IK, controls the bend direction of the IK bones, either 1 or -1. */ + bendDirection = 0; + /** For one bone IK, when true and the target is too close, the bone is scaled to reach it. */ + compress = false; + /** When true and the target is out of range, the parent bone is scaled to reach it. + * + * For two bone IK: 1) the child bone's local Y translation is set to 0, 2) stretch is not applied if {@link softness} is > 0, + * and 3) if the parent bone has local nonuniform scale, stretch is not applied. */ + stretch = false; + /** A percentage (0-1) that controls the mix between the constrained and unconstrained rotation. + * + * For two bone IK: if the parent bone has local nonuniform scale, the child bone's local Y translation is set to 0. */ + mix = 0; + /** For two bone IK, the target bone's distance from the maximum reach of the bones where rotation begins to slow. The bones + * will not straighten completely until the target is this far out of range. */ + softness = 0; + set(pose) { + this.mix = pose.mix; + this.softness = pose.softness; + this.bendDirection = pose.bendDirection; + this.compress = pose.compress; + this.stretch = pose.stretch; + } + }; + + // spine-core/src/IkConstraint.ts + var IkConstraint = class _IkConstraint extends Constraint { + /** The 1 or 2 bones that will be modified by this IK constraint. */ + bones; + /** The bone that is the IK target. */ + target; + constructor(data, skeleton) { + super(data, new IkConstraintPose(), new IkConstraintPose()); + if (!skeleton) throw new Error("skeleton cannot be null."); + this.bones = []; + for (const boneData of data.bones) + this.bones.push(skeleton.bones[boneData.index].constrainedPose); + this.target = skeleton.bones[data.target.index]; + } + copy(skeleton) { + var copy = new _IkConstraint(this.data, skeleton); + copy.pose.set(this.pose); + return copy; + } + update(skeleton, physics) { + const p = this.appliedPose; + if (p.mix === 0) return; + const target = this.target.appliedPose; + const bones = this.bones; + switch (bones.length) { + case 1: + _IkConstraint.apply(skeleton, bones[0], target.worldX, target.worldY, p.compress, p.stretch, this.data.scaleYMode, p.mix); + break; + case 2: + _IkConstraint.apply( + skeleton, + bones[0], + bones[1], + target.worldX, + target.worldY, + p.bendDirection, + p.stretch, + this.data.scaleYMode, + p.softness, + p.mix + ); + break; + } + } + sort(skeleton) { + skeleton.sortBone(this.target); + const parent = this.bones[0].bone; + skeleton.sortBone(parent); + skeleton._updateCache.push(this); + parent.sorted = false; + skeleton.sortReset(parent.children); + skeleton.constrained(parent); + if (this.bones.length > 1) skeleton.constrained(this.bones[1].bone); + } + isSourceActive() { + return this.target.active; + } + static apply(skeleton, boneOrParent, targetXorChild, targetYOrTargetX, compressOrTargetY, stretchOrBendDir, scaleYModeOrStretch, mixOrScaleYMode, softness, mix) { + if (typeof targetXorChild === "number") + _IkConstraint.apply1(skeleton, boneOrParent, targetXorChild, targetYOrTargetX, compressOrTargetY, stretchOrBendDir, scaleYModeOrStretch, mixOrScaleYMode); + else + _IkConstraint.apply2( + skeleton, + boneOrParent, + targetXorChild, + targetYOrTargetX, + compressOrTargetY, + stretchOrBendDir, + scaleYModeOrStretch, + mixOrScaleYMode, + softness, + mix + ); + } + static apply1(skeleton, bone, targetX, targetY, compress, stretch, scaleYMode, mix) { + bone.modifyLocal(skeleton); + const p = bone.bone.parent.appliedPose; + let pa = p.a, pb = p.b, pc = p.c, pd = p.d; + let rotationIK = -bone.shearX - bone.rotation, tx = 0, ty = 0; + switch (bone.inherit) { + case 1 /* OnlyTranslation */: + tx = (targetX - bone.worldX) * MathUtils.signum(skeleton.scaleX); + ty = (targetY - bone.worldY) * MathUtils.signum(skeleton.scaleY); + break; + // biome-ignore lint/suspicious/noFallthroughSwitchClause: reference runtime + case 2 /* NoRotationOrReflection */: { + const s = Math.abs(pa * pd - pb * pc) / Math.max(MathUtils.epsilon, pa * pa + pc * pc); + const sa = pa / skeleton.scaleX; + const sc = pc / skeleton.scaleY; + pb = -sc * s * skeleton.scaleX; + pd = sa * s * skeleton.scaleY; + rotationIK += MathUtils.atan2Deg(sc, sa); + } + // Fall through + default: { + const x = targetX - p.worldX, y = targetY - p.worldY; + const d = pa * pd - pb * pc; + if (Math.abs(d) <= MathUtils.epsilon) { + tx = 0; + ty = 0; + } else { + tx = (x * pd - y * pb) / d - bone.x; + ty = (y * pa - x * pc) / d - bone.y; + } + } + } + rotationIK += MathUtils.atan2Deg(ty, tx); + if (bone.scaleX < 0) rotationIK += 180; + if (rotationIK > 180) + rotationIK -= 360; + else if (rotationIK <= -180) + rotationIK += 360; + bone.rotation += rotationIK * mix; + if (compress || stretch) { + switch (bone.inherit) { + case 3 /* NoScale */: + case 4 /* NoScaleOrReflection */: + tx = targetX - bone.worldX; + ty = targetY - bone.worldY; + } + const b = bone.bone.data.length * bone.scaleX; + if (b > MathUtils.epsilon) { + const dd = tx * tx + ty * ty; + if (compress && dd < b * b || stretch && dd > b * b) { + const s = (Math.sqrt(dd) / b - 1) * mix + 1; + bone.scaleX *= s; + switch (scaleYMode) { + case 1 /* Uniform */: + bone.scaleY *= s; + break; + case 2 /* Volume */: + bone.scaleY /= s < 0.7 ? 0.25 + 0.642857 * s : s; + } + } + } + } + } + /** Applies 2 bone IK. The target is specified in the world coordinate system. + * @param child A direct descendant of the parent bone. */ + static apply2(skeleton, parent, child, targetX, targetY, bendDir, stretch, scaleYMode, softness, mix) { + if (parent.inherit !== 0 /* Normal */ || child.inherit !== 0 /* Normal */) return; + parent.modifyLocal(skeleton); + child.modifyLocal(skeleton); + let px = parent.x, py = parent.y, psx = parent.scaleX, psy = parent.scaleY, csx = child.scaleX; + let os1 = 0, os2 = 0, s2 = 0; + if (psx < 0) { + psx = -psx; + os1 = 180; + s2 = -1; + } else { + os1 = 0; + s2 = 1; + } + if (psy < 0) { + psy = -psy; + s2 = -s2; + } + if (csx < 0) { + csx = -csx; + os2 = 180; + } else + os2 = 0; + let cwx = 0, cwy = 0, a = parent.a, b = parent.b, c = parent.c, d = parent.d; + const u = Math.abs(psx - psy) <= MathUtils.epsilon; + if (!u || stretch) { + child.y = 0; + cwx = a * child.x + parent.worldX; + cwy = c * child.x + parent.worldY; + } else { + cwx = a * child.x + b * child.y + parent.worldX; + cwy = c * child.x + d * child.y + parent.worldY; + } + const pp = parent.bone.parent.appliedPose; + a = pp.a; + b = pp.b; + c = pp.c; + d = pp.d; + let id = a * d - b * c, x = cwx - pp.worldX, y = cwy - pp.worldY; + id = Math.abs(id) <= MathUtils.epsilon ? 0 : 1 / id; + const dx = (x * d - y * b) * id - px, dy = (y * a - x * c) * id - py; + let l1 = Math.sqrt(dx * dx + dy * dy), l2 = child.bone.data.length * csx, a1, a2; + if (l1 < MathUtils.epsilon) { + _IkConstraint.apply(skeleton, parent, targetX, targetY, false, stretch, 0 /* None */, mix); + child.rotation = 0; + return; + } + x = targetX - pp.worldX; + y = targetY - pp.worldY; + let tx = (x * d - y * b) * id - px, ty = (y * a - x * c) * id - py; + let dd = tx * tx + ty * ty; + if (softness !== 0) { + softness *= psx * (csx + 1) * 0.5; + const td = Math.sqrt(dd), sd = td - l1 - l2 * psx + softness; + if (sd > 0) { + let p = Math.min(1, sd / (softness * 2)) - 1; + p = (sd - softness * (1 - p * p)) / td; + tx -= p * tx; + ty -= p * ty; + dd = tx * tx + ty * ty; + } + } + outer: + if (u) { + l2 *= psx; + let cos = (dd - l1 * l1 - l2 * l2) / (2 * l1 * l2); + if (cos < -1) { + cos = -1; + a2 = Math.PI * bendDir; + } else if (cos > 1) { + cos = 1; + a2 = 0; + if (stretch) { + a = (Math.sqrt(dd) / (l1 + l2) - 1) * mix + 1; + parent.scaleX *= a; + switch (scaleYMode) { + case 1 /* Uniform */: + parent.scaleY *= a; + break; + case 2 /* Volume */: + parent.scaleY /= a < 0.7 ? 0.25 + 0.642857 * a : a; + } + } + } else + a2 = Math.acos(cos) * bendDir; + a = l1 + l2 * cos; + b = l2 * Math.sin(a2); + a1 = Math.atan2(ty * a - tx * b, tx * a + ty * b); + } else { + a = psx * l2; + b = psy * l2; + const aa = a * a, bb = b * b, ta = Math.atan2(ty, tx); + c = bb * l1 * l1 + aa * dd - aa * bb; + const c1 = -2 * bb * l1, c2 = bb - aa; + d = c1 * c1 - 4 * c2 * c; + if (d >= 0) { + let q = Math.sqrt(d); + if (c1 < 0) q = -q; + q = -(c1 + q) * 0.5; + let r0 = q / c2, r1 = c / q; + const r = Math.abs(r0) < Math.abs(r1) ? r0 : r1; + r0 = dd - r * r; + if (r0 >= 0) { + y = Math.sqrt(r0) * bendDir; + a1 = ta - Math.atan2(y, r); + a2 = Math.atan2(y / psy, (r - l1) / psx); + break outer; + } + } + let minAngle = MathUtils.PI, minX = l1 - a, minDist = minX * minX, minY = 0; + let maxAngle = 0, maxX = l1 + a, maxDist = maxX * maxX, maxY = 0; + c = -a * l1 / (aa - bb); + if (c >= -1 && c <= 1) { + c = Math.acos(c); + x = a * Math.cos(c) + l1; + y = b * Math.sin(c); + d = x * x + y * y; + if (d < minDist) { + minAngle = c; + minDist = d; + minX = x; + minY = y; + } + if (d > maxDist) { + maxAngle = c; + maxDist = d; + maxX = x; + maxY = y; + } + } + if (dd <= (minDist + maxDist) * 0.5) { + a1 = ta - Math.atan2(minY * bendDir, minX); + a2 = minAngle * bendDir; + } else { + a1 = ta - Math.atan2(maxY * bendDir, maxX); + a2 = maxAngle * bendDir; + } + } + const os = Math.atan2(child.y, child.x) * s2; + a1 = (a1 - os) * MathUtils.radDeg + os1 - parent.rotation; + if (a1 > 180) + a1 -= 360; + else if (a1 <= -180) + a1 += 360; + parent.rotation += a1 * mix; + a2 = ((a2 + os) * MathUtils.radDeg - child.shearX) * s2 + os2 - child.rotation; + if (a2 > 180) + a2 -= 360; + else if (a2 <= -180) + a2 += 360; + child.rotation += a2 * mix; + } + }; + + // spine-core/src/IkConstraintData.ts + var IkConstraintData = class extends ConstraintData { + /** The bones that are constrained by this IK constraint. */ + bones = []; + _target = null; + /** The bone that is the IK target. */ + set target(boneData) { + this._target = boneData; + } + get target() { + if (!this._target) throw new Error("target cannot be null."); + return this._target; + } + /** Determines how the {@link BonePose.scaleY} changes when {@link IkConstraintPose.compress} or + * {@link IkConstraintPose.stretch} set {@link BonePose.scaleX}. */ + _scaleYMode = 0 /* None */; + set scaleYMode(scaleYMode) { + this._scaleYMode = scaleYMode; + } + get scaleYMode() { + if (this._scaleYMode == null) throw new Error("scaleYMode cannot be null."); + return this._scaleYMode; + } + constructor(name) { + super(name, new IkConstraintPose()); + } + create(skeleton) { + return new IkConstraint(this, skeleton); + } + }; + + // spine-core/src/PathConstraintPose.ts + var PathConstraintPose = class { + /** The position along the path. */ + position = 0; + /** The spacing between bones. */ + spacing = 0; + /** A percentage (0-1) that controls the mix between the constrained and unconstrained rotation. */ + mixRotate = 0; + /** A percentage (0-1) that controls the mix between the constrained and unconstrained translation X. */ + mixX = 0; + /** A percentage (0-1) that controls the mix between the constrained and unconstrained translation Y. */ + mixY = 0; + set(pose) { + this.position = pose.position; + this.spacing = pose.spacing; + this.mixRotate = pose.mixRotate; + this.mixX = pose.mixX; + this.mixY = pose.mixY; + } + }; + + // spine-core/src/PathConstraintData.ts + var PathConstraintData = class extends ConstraintData { + /** The bones that will be modified by this path constraint. */ + bones = []; + /** The slot whose path attachment will be used to constrained the bones. */ + set slot(slotData) { + this._slot = slotData; + } + get slot() { + if (!this._slot) throw new Error("SlotData not set."); + else return this._slot; + } + _slot = null; + /** The mode for positioning the first bone on the path. */ + positionMode = 0 /* Fixed */; + /** The mode for positioning the bones after the first bone on the path. */ + spacingMode = 1 /* Fixed */; + /** The mode for adjusting the rotation of the bones. */ + rotateMode = 1 /* Chain */; + /** An offset added to the constrained bone rotation. */ + offsetRotation = 0; + constructor(name) { + super(name, new PathConstraintPose()); + } + create(skeleton) { + return new PathConstraint(this, skeleton); + } + }; + var PositionMode = /* @__PURE__ */ ((PositionMode2) => { + PositionMode2[PositionMode2["Fixed"] = 0] = "Fixed"; + PositionMode2[PositionMode2["Percent"] = 1] = "Percent"; + return PositionMode2; + })(PositionMode || {}); + var SpacingMode = /* @__PURE__ */ ((SpacingMode2) => { + SpacingMode2[SpacingMode2["Length"] = 0] = "Length"; + SpacingMode2[SpacingMode2["Fixed"] = 1] = "Fixed"; + SpacingMode2[SpacingMode2["Percent"] = 2] = "Percent"; + SpacingMode2[SpacingMode2["Proportional"] = 3] = "Proportional"; + return SpacingMode2; + })(SpacingMode || {}); + var RotateMode = /* @__PURE__ */ ((RotateMode2) => { + RotateMode2[RotateMode2["Tangent"] = 0] = "Tangent"; + RotateMode2[RotateMode2["Chain"] = 1] = "Chain"; + RotateMode2[RotateMode2["ChainScale"] = 2] = "ChainScale"; + return RotateMode2; + })(RotateMode || {}); + + // spine-core/src/PathConstraint.ts + var PathConstraint = class _PathConstraint extends Constraint { + static NONE = -1; + static BEFORE = -2; + static AFTER = -3; + /** The path constraint's setup pose data. */ + data; + /** The bones that will be modified by this path constraint. */ + bones; + /** The slot whose path attachment will be used to constrained the bones. */ + slot; + spaces = []; + positions = []; + world = []; + curves = []; + lengths = []; + segments = []; + constructor(data, skeleton) { + super(data, new PathConstraintPose(), new PathConstraintPose()); + if (!skeleton) throw new Error("skeleton cannot be null."); + this.data = data; + this.bones = []; + for (const boneData of this.data.bones) + this.bones.push(skeleton.bones[boneData.index].constrainedPose); + this.slot = skeleton.slots[data.slot.index]; + } + copy(skeleton) { + var copy = new _PathConstraint(this.data, skeleton); + copy.pose.set(this.pose); + return copy; + } + update(skeleton, physics) { + const attachment = this.slot.appliedPose.attachment; + if (!(attachment instanceof PathAttachment)) return; + const p = this.appliedPose; + const mixRotate = p.mixRotate, mixX = p.mixX, mixY = p.mixY; + if (mixRotate === 0 && mixX === 0 && mixY === 0) return; + const data = this.data; + const tangents = data.rotateMode === 0 /* Tangent */, scale = data.rotateMode === 2 /* ChainScale */; + const bones = this.bones; + const boneCount = bones.length, spacesCount = tangents ? boneCount : boneCount + 1; + const spaces = Utils.setArraySize(this.spaces, spacesCount), lengths = scale ? this.lengths = Utils.setArraySize(this.lengths, boneCount) : []; + const spacing = p.spacing; + switch (data.spacingMode) { + case 2 /* Percent */: + if (scale) { + for (let i = 0, n = spacesCount - 1; i < n; i++) { + const bone = bones[i]; + const setupLength = bone.bone.data.length; + const x = setupLength * bone.a, y = setupLength * bone.c; + lengths[i] = Math.sqrt(x * x + y * y); + } + } + Utils.arrayFill(spaces, 1, spacesCount, spacing); + break; + case 3 /* Proportional */: { + let sum = 0; + for (let i = 0, n = spacesCount - 1; i < n; ) { + const bone = bones[i]; + const setupLength = bone.bone.data.length; + if (setupLength < MathUtils.epsilon) { + if (scale) lengths[i] = 0; + spaces[++i] = spacing; + } else { + const x = setupLength * bone.a, y = setupLength * bone.c; + const length = Math.sqrt(x * x + y * y); + if (scale) lengths[i] = length; + spaces[++i] = length; + sum += length; + } + } + if (sum > 0) { + sum = spacesCount / sum * spacing; + for (let i = 1; i < spacesCount; i++) + spaces[i] *= sum; + } + break; + } + default: { + const lengthSpacing = data.spacingMode === 0 /* Length */; + for (let i = 0, n = spacesCount - 1; i < n; ) { + const bone = bones[i]; + const setupLength = bone.bone.data.length; + if (setupLength < MathUtils.epsilon) { + if (scale) lengths[i] = 0; + spaces[++i] = spacing; + } else { + const x = setupLength * bone.a, y = setupLength * bone.c; + const length = Math.sqrt(x * x + y * y); + if (scale) lengths[i] = length; + spaces[++i] = (lengthSpacing ? Math.max(0, setupLength + spacing) : spacing) * length / setupLength; + } + } + } + } + const positions = this.computeWorldPositions(skeleton, attachment, spacesCount, tangents); + let boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation; + let tip = false; + if (offsetRotation === 0) + tip = data.rotateMode === 1 /* Chain */; + else { + tip = false; + const bone = this.slot.bone.appliedPose; + offsetRotation *= bone.a * bone.d - bone.b * bone.c > 0 ? MathUtils.degRad : -MathUtils.degRad; + } + for (let i = 0, ip = 3; i < boneCount; i++, ip += 3) { + const bone = bones[i]; + bone.modifyWorld(skeleton); + bone.worldX += (boneX - bone.worldX) * mixX; + bone.worldY += (boneY - bone.worldY) * mixY; + const x = positions[ip], y = positions[ip + 1], dx = x - boneX, dy = y - boneY; + if (scale) { + const length = lengths[i]; + if (length !== 0) { + const s = (Math.sqrt(dx * dx + dy * dy) / length - 1) * mixRotate + 1; + bone.a *= s; + bone.c *= s; + } + } + boneX = x; + boneY = y; + if (mixRotate > 0) { + let a = bone.a, b = bone.b, c = bone.c, d = bone.d, r = 0, cos = 0, sin = 0; + if (tangents) + r = positions[ip - 1]; + else if (spaces[i + 1] === 0) + r = positions[ip + 2]; + else + r = Math.atan2(dy, dx); + r -= Math.atan2(c, a); + if (tip) { + cos = Math.cos(r); + sin = Math.sin(r); + const length = bone.bone.data.length; + boneX += (length * (cos * a - sin * c) - dx) * mixRotate; + boneY += (length * (sin * a + cos * c) - dy) * mixRotate; + } else { + r += offsetRotation; + } + if (r > MathUtils.PI) + r -= MathUtils.PI2; + else if (r < -MathUtils.PI) + r += MathUtils.PI2; + r *= mixRotate; + cos = Math.cos(r); + sin = Math.sin(r); + bone.a = cos * a - sin * c; + bone.b = cos * b - sin * d; + bone.c = sin * a + cos * c; + bone.d = sin * b + cos * d; + } + } + } + computeWorldPositions(skeleton, path, spacesCount, tangents) { + const slot = this.slot; + let position = this.appliedPose.position; + let spaces = this.spaces, out = Utils.setArraySize(this.positions, spacesCount * 3 + 2), world = this.world; + const closed = path.closed; + let verticesLength = path.worldVerticesLength, curveCount = verticesLength / 6, prevCurve = _PathConstraint.NONE; + if (!path.constantSpeed) { + const lengths = path.lengths; + curveCount -= closed ? 1 : 2; + const pathLength2 = lengths[curveCount]; + if (this.data.positionMode === 1 /* Percent */) position *= pathLength2; + let multiplier2; + switch (this.data.spacingMode) { + case 2 /* Percent */: + multiplier2 = pathLength2; + break; + case 3 /* Proportional */: + multiplier2 = pathLength2 / spacesCount; + break; + default: + multiplier2 = 1; + } + world = Utils.setArraySize(this.world, 8); + for (let i = 0, o = 0, curve = 0; i < spacesCount; i++, o += 3) { + const space = spaces[i] * multiplier2; + position += space; + let p = position; + if (closed) { + p %= pathLength2; + if (p < 0) p += pathLength2; + curve = 0; + } else if (p < 0) { + if (prevCurve !== _PathConstraint.BEFORE) { + prevCurve = _PathConstraint.BEFORE; + path.computeWorldVertices(skeleton, slot, 2, 4, world, 0, 2); + } + this.addBeforePosition(p, world, 0, out, o); + continue; + } else if (p > pathLength2) { + if (prevCurve !== _PathConstraint.AFTER) { + prevCurve = _PathConstraint.AFTER; + path.computeWorldVertices(skeleton, slot, verticesLength - 6, 4, world, 0, 2); + } + this.addAfterPosition(p - pathLength2, world, 0, out, o); + continue; + } + for (; ; curve++) { + const length = lengths[curve]; + if (p > length) continue; + if (curve === 0) + p /= length; + else { + const prev = lengths[curve - 1]; + p = (p - prev) / (length - prev); + } + break; + } + if (curve !== prevCurve) { + prevCurve = curve; + if (closed && curve === curveCount) { + path.computeWorldVertices(skeleton, slot, verticesLength - 4, 4, world, 0, 2); + path.computeWorldVertices(skeleton, slot, 0, 4, world, 4, 2); + } else + path.computeWorldVertices(skeleton, slot, curve * 6 + 2, 8, world, 0, 2); + } + this.addCurvePosition( + p, + world[0], + world[1], + world[2], + world[3], + world[4], + world[5], + world[6], + world[7], + out, + o, + tangents || i > 0 && space === 0 + ); + } + return out; + } + if (closed) { + verticesLength += 2; + world = Utils.setArraySize(this.world, verticesLength); + path.computeWorldVertices(skeleton, slot, 2, verticesLength - 4, world, 0, 2); + path.computeWorldVertices(skeleton, slot, 0, 2, world, verticesLength - 4, 2); + world[verticesLength - 2] = world[0]; + world[verticesLength - 1] = world[1]; + } else { + curveCount--; + verticesLength -= 4; + world = Utils.setArraySize(this.world, verticesLength); + path.computeWorldVertices(skeleton, slot, 2, verticesLength, world, 0, 2); + } + const curves = Utils.setArraySize(this.curves, curveCount); + let pathLength = 0; + let x1 = world[0], y1 = world[1], cx1 = 0, cy1 = 0, cx2 = 0, cy2 = 0, x2 = 0, y2 = 0; + let tmpx = 0, tmpy = 0, dddfx = 0, dddfy = 0, ddfx = 0, ddfy = 0, dfx = 0, dfy = 0; + for (let i = 0, w = 2; i < curveCount; i++, w += 6) { + cx1 = world[w]; + cy1 = world[w + 1]; + cx2 = world[w + 2]; + cy2 = world[w + 3]; + x2 = world[w + 4]; + y2 = world[w + 5]; + tmpx = (x1 - cx1 * 2 + cx2) * 0.1875; + tmpy = (y1 - cy1 * 2 + cy2) * 0.1875; + dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.09375; + dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.09375; + ddfx = tmpx * 2 + dddfx; + ddfy = tmpy * 2 + dddfy; + dfx = (cx1 - x1) * 0.75 + tmpx + dddfx * 0.16666667; + dfy = (cy1 - y1) * 0.75 + tmpy + dddfy * 0.16666667; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx; + dfy += ddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx + dddfx; + dfy += ddfy + dddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + curves[i] = pathLength; + x1 = x2; + y1 = y2; + } + if (this.data.positionMode === 1 /* Percent */) position *= pathLength; + let multiplier; + switch (this.data.spacingMode) { + case 2 /* Percent */: + multiplier = pathLength; + break; + case 3 /* Proportional */: + multiplier = pathLength / spacesCount; + break; + default: + multiplier = 1; + } + const segments = this.segments; + let curveLength = 0; + for (let i = 0, o = 0, curve = 0, segment = 0; i < spacesCount; i++, o += 3) { + const space = spaces[i] * multiplier; + position += space; + let p = position; + if (closed) { + p %= pathLength; + if (p < 0) p += pathLength; + curve = 0; + segment = 0; + } else if (p < 0) { + this.addBeforePosition(p, world, 0, out, o); + continue; + } else if (p > pathLength) { + this.addAfterPosition(p - pathLength, world, verticesLength - 4, out, o); + continue; + } + for (; ; curve++) { + const length = curves[curve]; + if (p > length) continue; + if (curve === 0) + p /= length; + else { + const prev = curves[curve - 1]; + p = (p - prev) / (length - prev); + } + break; + } + if (curve !== prevCurve) { + prevCurve = curve; + let ii = curve * 6; + x1 = world[ii]; + y1 = world[ii + 1]; + cx1 = world[ii + 2]; + cy1 = world[ii + 3]; + cx2 = world[ii + 4]; + cy2 = world[ii + 5]; + x2 = world[ii + 6]; + y2 = world[ii + 7]; + tmpx = (x1 - cx1 * 2 + cx2) * 0.03; + tmpy = (y1 - cy1 * 2 + cy2) * 0.03; + dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 6e-3; + dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 6e-3; + ddfx = tmpx * 2 + dddfx; + ddfy = tmpy * 2 + dddfy; + dfx = (cx1 - x1) * 0.3 + tmpx + dddfx * 0.16666667; + dfy = (cy1 - y1) * 0.3 + tmpy + dddfy * 0.16666667; + curveLength = Math.sqrt(dfx * dfx + dfy * dfy); + segments[0] = curveLength; + for (ii = 1; ii < 8; ii++) { + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + curveLength += Math.sqrt(dfx * dfx + dfy * dfy); + segments[ii] = curveLength; + } + dfx += ddfx; + dfy += ddfy; + curveLength += Math.sqrt(dfx * dfx + dfy * dfy); + segments[8] = curveLength; + dfx += ddfx + dddfx; + dfy += ddfy + dddfy; + curveLength += Math.sqrt(dfx * dfx + dfy * dfy); + segments[9] = curveLength; + segment = 0; + } + p *= curveLength; + for (; ; segment++) { + const length = segments[segment]; + if (p > length) continue; + if (segment === 0) + p /= length; + else { + const prev = segments[segment - 1]; + p = segment + (p - prev) / (length - prev); + } + break; + } + this.addCurvePosition(p * 0.1, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents || i > 0 && space === 0); + } + return out; + } + addBeforePosition(p, temp, i, out, o) { + const x1 = temp[i], y1 = temp[i + 1], dx = temp[i + 2] - x1, dy = temp[i + 3] - y1, r = Math.atan2(dy, dx); + out[o] = x1 + p * Math.cos(r); + out[o + 1] = y1 + p * Math.sin(r); + out[o + 2] = r; + } + addAfterPosition(p, temp, i, out, o) { + const x1 = temp[i + 2], y1 = temp[i + 3], dx = x1 - temp[i], dy = y1 - temp[i + 1], r = Math.atan2(dy, dx); + out[o] = x1 + p * Math.cos(r); + out[o + 1] = y1 + p * Math.sin(r); + out[o + 2] = r; + } + addCurvePosition(p, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents) { + if (p === 0 || Number.isNaN(p)) { + out[o] = x1; + out[o + 1] = y1; + out[o + 2] = Math.atan2(cy1 - y1, cx1 - x1); + return; + } + const tt = p * p, ttt = tt * p, u = 1 - p, uu = u * u, uuu = uu * u; + const ut = u * p, ut3 = ut * 3, uut3 = u * ut3, utt3 = ut3 * p; + const x = x1 * uuu + cx1 * uut3 + cx2 * utt3 + x2 * ttt, y = y1 * uuu + cy1 * uut3 + cy2 * utt3 + y2 * ttt; + out[o] = x; + out[o + 1] = y; + if (tangents) { + if (p < 1e-3) + out[o + 2] = Math.atan2(cy1 - y1, cx1 - x1); + else + out[o + 2] = Math.atan2(y - (y1 * uu + cy1 * ut * 2 + cy2 * tt), x - (x1 * uu + cx1 * ut * 2 + cx2 * tt)); + } + } + sort(skeleton) { + const slotIndex = this.slot.data.index; + const slotBone = this.slot.bone; + if (skeleton.skin != null) this.sortPathSlot(skeleton, skeleton.skin, slotIndex, slotBone); + if (skeleton.data.defaultSkin != null && skeleton.data.defaultSkin !== skeleton.skin) + this.sortPathSlot(skeleton, skeleton.data.defaultSkin, slotIndex, slotBone); + this.sortPath(skeleton, this.slot.pose.attachment, slotBone); + const bones = this.bones; + const boneCount = this.bones.length; + for (let i = 0; i < boneCount; i++) { + const bone = bones[i].bone; + skeleton.sortBone(bone); + skeleton.constrained(bone); + } + skeleton._updateCache.push(this); + for (let i = 0; i < boneCount; i++) + skeleton.sortReset(bones[i].bone.children); + for (let i = 0; i < boneCount; i++) + bones[i].bone.sorted = true; + } + sortPathSlot(skeleton, skin, slotIndex, slotBone) { + const entries = skin.getAttachments(); + for (let i = 0, n = entries.length; i < n; i++) { + const entry = entries[i]; + if (entry.slotIndex === slotIndex) this.sortPath(skeleton, entry.attachment, slotBone); + } + } + sortPath(skeleton, attachment, slotBone) { + if (!(attachment instanceof PathAttachment)) return; + const pathBones = attachment.bones; + if (pathBones == null) + skeleton.sortBone(slotBone); + else { + const bones = skeleton.bones; + for (let i = 0, n = pathBones.length; i < n; ) { + let nn = pathBones[i++]; + nn += i; + while (i < nn) + skeleton.sortBone(bones[pathBones[i++]]); + } + } + } + isSourceActive() { + return this.slot.bone.active; + } + }; + + // spine-core/src/Physics.ts + var Physics = /* @__PURE__ */ ((Physics2) => { + Physics2[Physics2["none"] = 0] = "none"; + Physics2[Physics2["reset"] = 1] = "reset"; + Physics2[Physics2["update"] = 2] = "update"; + Physics2[Physics2["pose"] = 3] = "pose"; + return Physics2; + })(Physics || {}); + + // spine-core/src/PhysicsConstraintPose.ts + var PhysicsConstraintPose = class { + /** Controls how much bone movement is converted into physics movement. */ + inertia = 0; + /** The amount of force used to return properties to the unconstrained value. */ + strength = 0; + /** Reduces the speed of physics movements, with more of a reduction at higher speeds. */ + damping = 0; + /** Determines susceptibility to acceleration. */ + massInverse = 0; + /** Applies a constant force along the {@link Skeleton.windX}, {@link Skeleton.windY} vector. */ + wind = 0; + /** Applies a constant force along the {@link Skeleton.gravityX}, {@link Skeleton.gravityY} vector. */ + gravity = 0; + /** A percentage (0+) that controls the mix between the constrained and unconstrained poses. */ + mix = 0; + set(pose) { + this.inertia = pose.inertia; + this.strength = pose.strength; + this.damping = pose.damping; + this.massInverse = pose.massInverse; + this.wind = pose.wind; + this.gravity = pose.gravity; + this.mix = pose.mix; + } + }; + + // spine-core/src/SlotPose.ts + var SlotPose = class { + /** The color used to tint the slot's attachment. If {@link darkColor} is set, this is used as the light color for two color + * tinting. */ + color = new Color(1, 1, 1, 1); + /** The dark color used to tint the slot's attachment for two color tinting, or null if two color tinting is not used. The dark + * color's alpha is not used. */ + darkColor = null; + /** The current attachment for the slot, or null if the slot has no attachment. */ + attachment = null; + // Not used in setup pose. + /** The index of the texture region to display when the slot's attachment has a {@link Sequence}. -1 represents the + * {@link Sequence.getSetupIndex}. */ + sequenceIndex = 0; + /** Values to deform the slot's attachment. For an unweighted mesh, the entries are local positions for each vertex. For a + * weighted mesh, the entries are an offset for each vertex which will be added to the mesh's local vertex positions. + * + * See {@link VertexAttachment.computeWorldVertices} and + * {@link DeformTimeline}. */ + deform = []; + SlotPose() { + } + set(pose) { + if (pose == null) throw new Error("pose cannot be null."); + this.color.setFromColor(pose.color); + if (this.darkColor != null && pose.darkColor != null) this.darkColor.setFromColor(pose.darkColor); + this.attachment = pose.attachment; + this.sequenceIndex = pose.sequenceIndex; + this.deform.length = 0; + this.deform.push(...pose.deform); + } + /** The current attachment for the slot, or null if the slot has no attachment. */ + getAttachment() { + return this.attachment; + } + /** Sets the slot's attachment and, if the attachment changed, resets {@link sequenceIndex} and clears the {@link deform}. + * The deform is not cleared if the old attachment has the same {@link VertexAttachment.getTimelineAttachment} as the + * specified attachment. */ + setAttachment(attachment) { + if (this.attachment === attachment) return; + if (!(attachment instanceof VertexAttachment) || !(this.attachment instanceof VertexAttachment) || attachment.timelineAttachment !== this.attachment.timelineAttachment) { + this.deform.length = 0; + } + this.attachment = attachment; + this.sequenceIndex = -1; + } + }; + + // spine-core/src/Slot.ts + var Slot = class _Slot extends Posed { + skeleton; + /** The bone this slot belongs to. */ + bone; + attachmentState = 0; + constructor(data, skeleton) { + super(data, new SlotPose(), new SlotPose()); + if (!skeleton) throw new Error("skeleton cannot be null."); + this.skeleton = skeleton; + this.bone = skeleton.bones[data.boneData.index]; + if (data.setupPose.darkColor != null) { + this.pose.darkColor = new Color(); + this.constrainedPose.darkColor = new Color(); + } + this.setupPose(); + } + /** Copy constructor. */ + copy(slot, bone, skeleton) { + const copy = new _Slot(slot.data, this.skeleton); + if (this.data.setupPose.darkColor != null) { + copy.pose.darkColor = new Color(); + copy.constrainedPose.darkColor = new Color(); + } + copy.pose.set(slot.pose); + return copy; + } + setupPose() { + this.pose.color.setFromColor(this.data.setupPose.color); + if (this.pose.darkColor) this.pose.darkColor.setFromColor(this.data.setupPose.darkColor); + this.pose.sequenceIndex = this.data.setupPose.sequenceIndex; + if (!this.data.attachmentName) + this.pose.setAttachment(null); + else { + this.pose.attachment = null; + this.pose.setAttachment(this.skeleton.getAttachment(this.data.index, this.data.attachmentName)); + } + } + }; + + // spine-core/src/Skeleton.ts + var Skeleton = class _Skeleton { + static quadTriangles = [0, 1, 2, 2, 3, 0]; + static yDown = false; + static get yDir() { + return _Skeleton.yDown ? -1 : 1; + } + /** The skeleton's setup pose data. */ + data; + /** The skeleton's bones, sorted parent first. The root bone is always the first bone. */ + bones; + /** The skeleton's slots. To add a slot, also add it to {@link DrawOrder.pose}. */ + slots; + /** The skeleton's draw order. Use {@link DrawOrder.appliedPose} for rendering and {@link DrawOrder.pose} for changing the draw + * order. */ + drawOrder; + /** The skeleton's constraints. */ + // biome-ignore lint/suspicious/noExplicitAny: reference runtime does not restrict to specific types + constraints; + /** The skeleton's physics constraints. */ + physics; + /** The list of bones and constraints, sorted in the order they should be updated, as computed by {@link updateCache}. */ + // biome-ignore lint/suspicious/noExplicitAny: reference runtime does not restrict to specific types + _updateCache = []; + // biome-ignore lint/suspicious/noExplicitAny: reference runtime does not restrict to specific types + resetCache = []; + /** The skeleton's current skin. May be null. */ + skin = null; + /** The color to tint all the skeleton's attachments. */ + color; + /** Scales the entire skeleton on the X axis. + * + * Bones that do not inherit scale are still affected by this property. */ + scaleX = 1; + _scaleY = 1; + /** Scales the entire skeleton on the Y axis. + * + * Bones that do not inherit scale are still affected by this property. */ + get scaleY() { + return this._scaleY * _Skeleton.yDir; + } + set scaleY(scaleY) { + this._scaleY = scaleY; + } + /** Sets the skeleton X position, which is added to the root bone worldX position. + * + * Bones that do not inherit translation are still affected by this property. */ + x = 0; + /** Sets the skeleton Y position, which is added to the root bone worldY position. + * + * Bones that do not inherit translation are still affected by this property. */ + y = 0; + /** Returns the skeleton's time, is used for time-based manipulations, such as {@link PhysicsConstraint}. + * + * See {@link _update}. */ + time = 0; + /** The x component of a vector that defines the direction {@link PhysicsConstraintPose.wind} is applied. */ + windX = 1; + /** The y component of a vector that defines the direction {@link PhysicsConstraintPose.wind} is applied. */ + windY = 0; + /** The x component of a vector that defines the direction {@link PhysicsConstraintPose.gravity} is applied. */ + gravityX = 0; + /** The y component of a vector that defines the direction {@link PhysicsConstraintPose.gravity} is applied. */ + gravityY = 1; + _update = 0; + constructor(data) { + if (!data) throw new Error("data cannot be null."); + this.data = data; + this.bones = []; + for (let i = 0; i < data.bones.length; i++) { + const boneData = data.bones[i]; + let bone; + if (!boneData.parent) + bone = new Bone(boneData, null); + else { + const parent = this.bones[boneData.parent.index]; + bone = new Bone(boneData, parent); + parent.children.push(bone); + } + this.bones.push(bone); + } + this.slots = []; + for (const slotData of this.data.slots) + this.slots.push(new Slot(slotData, this)); + this.drawOrder = new DrawOrder(this.slots); + this.physics = []; + this.constraints = []; + for (const constraintData of this.data.constraints) { + const constraint = constraintData.create(this); + if (constraint instanceof PhysicsConstraint) this.physics.push(constraint); + this.constraints.push(constraint); + } + this.color = new Color(1, 1, 1, 1); + this.updateCache(); + } + /** Caches information about bones and constraints. Must be called if the {@link skin} is modified or if bones, constraints, + * or weighted path attachments are added or removed. */ + updateCache() { + this._updateCache.length = 0; + this.resetCache.length = 0; + this.drawOrder.unconstrained(); + const slots = this.slots; + for (let i = 0, n2 = slots.length; i < n2; i++) + slots[i].unconstrained(); + const bones = this.bones; + const boneCount = bones.length; + for (let i = 0, n2 = boneCount; i < n2; i++) { + const bone = bones[i]; + bone.sorted = bone.data.skinRequired; + bone.active = !bone.sorted; + bone.unconstrained(); + } + if (this.skin) { + const skinBones = this.skin.bones; + for (let i = 0, n2 = this.skin.bones.length; i < n2; i++) { + let bone = this.bones[skinBones[i].index]; + do { + bone.sorted = false; + bone.active = true; + bone = bone.parent; + } while (bone); + } + } + const constraints = this.constraints; + let n = this.constraints.length; + for (let i = 0; i < n; i++) + constraints[i].unconstrained(); + for (let i = 0; i < n; i++) { + const constraint = constraints[i]; + constraint.active = constraint.isSourceActive() && (!constraint.data.skinRequired || this.skin != null && this.skin.constraints.includes(constraint.data)); + if (constraint.active) constraint.sort(this); + } + for (let i = 0; i < boneCount; i++) + this.sortBone(bones[i]); + n = this._updateCache.length; + for (let i = 0; i < n; i++) { + const updateable = this._updateCache[i]; + if (updateable instanceof Bone) this._updateCache[i] = updateable.appliedPose; + } + } + // biome-ignore lint/suspicious/noExplicitAny: reference runtime does not restrict to specific types + constrained(object) { + if (object.pose === object.appliedPose) { + object.constrained(); + this.resetCache.push(object); + } + } + sortBone(bone) { + if (bone.sorted || !bone.active) return; + const parent = bone.parent; + if (parent) this.sortBone(parent); + bone.sorted = true; + this._updateCache.push(bone); + } + sortReset(bones) { + for (let i = 0, n = bones.length; i < n; i++) { + const bone = bones[i]; + if (bone.active) { + if (bone.sorted) this.sortReset(bone.children); + bone.sorted = false; + } + } + } + /** Updates the world transform for each bone and applies all constraints. + * + * See World transforms in the Spine + * Runtimes Guide. */ + updateWorldTransform(physics) { + this._update++; + if (this.drawOrder.appliedPose === this.drawOrder.constrainedPose) this.drawOrder.resetConstrained(); + const resetCache = this.resetCache; + for (let i = 0, n = this.resetCache.length; i < n; i++) + resetCache[i].resetConstrained(); + const updateCache = this._updateCache; + for (let i = 0, n = this._updateCache.length; i < n; i++) + updateCache[i].update(this, physics); + } + /** Sets the bones, constraints, and slots to their setup pose values. */ + setupPose() { + this.setupPoseBones(); + this.setupPoseSlots(); + } + /** Sets the bones and constraints to their setup pose values. */ + setupPoseBones() { + const bones = this.bones; + for (let i = 0, n = bones.length; i < n; i++) + bones[i].setupPose(); + const constraints = this.constraints; + for (let i = 0, n = constraints.length; i < n; i++) + constraints[i].setupPose(); + } + /** Sets the slots and draw order to their setup pose values. */ + setupPoseSlots() { + this.drawOrder.setupPose(); + const slots = this.slots; + for (let i = 0, n = slots.length; i < n; i++) + slots[i].setupPose(); + } + /** Returns the root bone, or null if the skeleton has no bones. */ + getRootBone() { + if (this.bones.length === 0) return null; + return this.bones[0]; + } + /** Finds a bone by comparing each bone's name. It is more efficient to cache the results of this method than to call it + * repeatedly. */ + findBone(boneName) { + if (!boneName) throw new Error("boneName cannot be null."); + const bones = this.bones; + for (let i = 0, n = bones.length; i < n; i++) + if (bones[i].data.name === boneName) return bones[i]; + return null; + } + /** Finds a slot by comparing each slot's name. It is more efficient to cache the results of this method than to call it + * repeatedly. */ + findSlot(slotName) { + if (!slotName) throw new Error("slotName cannot be null."); + const slots = this.slots; + for (let i = 0, n = slots.length; i < n; i++) + if (slots[i].data.name === slotName) return slots[i]; + return null; + } + setSkin(newSkin) { + if (typeof newSkin === "string") + this.setSkinByName(newSkin); + else + this.setSkinBySkin(newSkin); + } + setSkinByName(skinName) { + const skin = this.data.findSkin(skinName); + if (!skin) throw new Error(`Skin not found: ${skinName}`); + this.setSkin(skin); + } + setSkinBySkin(newSkin) { + if (newSkin === this.skin) return; + if (newSkin) { + if (this.skin) + newSkin.attachAll(this, this.skin); + else { + const slots = this.slots; + for (let i = 0, n = slots.length; i < n; i++) { + const slot = slots[i]; + const name = slot.data.attachmentName; + if (name) { + const attachment = newSkin.getAttachment(i, name); + if (attachment) slot.pose.setAttachment(attachment); + } + } + } + } + this.skin = newSkin; + this.updateCache(); + } + getAttachment(slotNameOrIndex, placeholder) { + if (typeof slotNameOrIndex === "string") + return this.getAttachmentByName(slotNameOrIndex, placeholder); + return this.getAttachmentByIndex(slotNameOrIndex, placeholder); + } + /** Finds an attachment by looking in the {@link skin} and {@link SkeletonData.defaultSkin} using the slot name and attachment + * name. + * + * See {@link getAttachment}. + * @returns May be null. */ + getAttachmentByName(slotName, placeholder) { + const slot = this.data.findSlot(slotName); + if (!slot) throw new Error(`Can't find slot with name ${slotName}`); + return this.getAttachment(slot.index, placeholder); + } + /** Finds an attachment by looking in the {@link skin} and {@link SkeletonData.defaultSkin} using the slot index and + * attachment name. First the skin is checked and if the attachment was not found, the default skin is checked. + * + * See [Runtime skins](http://esotericsoftware.com/spine-runtime-skins) in the Spine Runtimes Guide. + * @returns May be null. */ + getAttachmentByIndex(slotIndex, placeholder) { + if (!placeholder) throw new Error("placeholder cannot be null."); + if (this.skin) { + const attachment = this.skin.getAttachment(slotIndex, placeholder); + if (attachment) return attachment; + } + if (this.data.defaultSkin) return this.data.defaultSkin.getAttachment(slotIndex, placeholder); + return null; + } + /** A convenience method to set an attachment by finding the slot with {@link findSlot}, finding the attachment with + * {@link getAttachment}, then setting the slot's {@link Slot.attachment}. + * @param placeholder May be null to clear the slot's attachment. */ + setAttachment(slotName, placeholder) { + if (!slotName) throw new Error("slotName cannot be null."); + const slot = this.findSlot(slotName); + if (!slot) throw new Error(`Slot not found: ${slotName}`); + let attachment = null; + if (placeholder) { + attachment = this.getAttachment(slot.data.index, placeholder); + if (!attachment) + throw new Error(`Attachment not found: ${placeholder}, for slot: ${slotName}`); + } + slot.pose.setAttachment(attachment); + } + /** Finds a constraint of the specified type by comparing each constraints's name. It is more efficient to cache the results of + * this method than to call it multiple times. */ + // biome-ignore lint/suspicious/noExplicitAny: reference runtime does not restrict to specific types + findConstraint(constraintName, type) { + if (constraintName == null) throw new Error("constraintName cannot be null."); + if (type == null) throw new Error("type cannot be null."); + const constraints = this.constraints; + for (let i = 0, n = constraints.length; i < n; i++) { + const constraint = constraints[i]; + if (constraint instanceof type && constraint.data.name === constraintName) return constraint; + } + return null; + } + /** Returns the axis aligned bounding box (AABB) of the region and mesh attachments for the applied pose. + * @param offset An output value, the distance from the skeleton origin to the bottom left corner of the AABB. + * @param size An output value, the width and height of the AABB. + * @param temp Working memory to temporarily store attachments' computed world vertices. */ + getBoundsRect(clipper) { + const offset = new Vector2(); + const size = new Vector2(); + this.getBounds(offset, size, void 0, clipper); + return { x: offset.x, y: offset.y, width: size.x, height: size.y }; + } + /** Returns the axis aligned bounding box (AABB) of the region and mesh attachments for the applied pose. Optionally applies + * clipping. + * @param offset An output value, the distance from the skeleton origin to the bottom left corner of the AABB. + * @param size An output value, the width and height of the AABB. + * @param temp Working memory to temporarily store attachments' computed world vertices. + * @param clipper {@link SkeletonClipping} to use. If `null`, no clipping is applied. */ + getBounds(offset, size, temp = new Array(2), clipper = null) { + if (!offset) throw new Error("offset cannot be null."); + if (!size) throw new Error("size cannot be null."); + const drawOrder = this.drawOrder.appliedPose; + const slots = drawOrder; + let minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY; + for (let i = 0, n = drawOrder.length; i < n; i++) { + const slot = slots[i]; + if (!slot.bone.active) continue; + let verticesLength = 0; + let vertices = null; + let triangles = null; + const attachment = slot.appliedPose.attachment; + if (attachment) { + if (attachment instanceof RegionAttachment) { + verticesLength = 8; + vertices = Utils.setArraySize(temp, verticesLength, 0); + attachment.computeWorldVertices(slot, attachment.getOffsets(slot.appliedPose), vertices, 0, 2); + triangles = _Skeleton.quadTriangles; + } else if (attachment instanceof MeshAttachment) { + verticesLength = attachment.worldVerticesLength; + vertices = Utils.setArraySize(temp, verticesLength, 0); + attachment.computeWorldVertices(this, slot, 0, verticesLength, vertices, 0, 2); + triangles = attachment.triangles; + } else if (attachment instanceof ClippingAttachment && clipper) { + clipper.clipEnd(slot); + clipper.clipStart(this, slot, attachment); + continue; + } + if (vertices && triangles) { + if (clipper?.isClipping() && clipper.clipTriangles(vertices, triangles, triangles.length)) { + vertices = clipper.clippedVertices; + verticesLength = clipper.clippedVertices.length; + } + for (let ii = 0, nn = vertices.length; ii < nn; ii += 2) { + const x = vertices[ii], y = vertices[ii + 1]; + minX = Math.min(minX, x); + minY = Math.min(minY, y); + maxX = Math.max(maxX, x); + maxY = Math.max(maxY, y); + } + } + } + if (clipper) clipper.clipEnd(slot); + } + if (clipper) clipper.clipEnd(); + offset.set(minX, minY); + size.set(maxX - minX, maxY - minY); + } + /** Scales the entire skeleton on the X and Y axes. + * + * Bones that do not inherit scale are still affected by this property. */ + setScale(scaleX, scaleY) { + this.scaleX = scaleX; + this.scaleY = scaleY; + } + /** Sets the skeleton X and Y position, which is added to the root bone worldX and worldY position. + * + * Bones that do not inherit translation are still affected by this property. */ + setPosition(x, y) { + this.x = x; + this.y = y; + } + /** Increments the skeleton's {@link time}. */ + update(delta) { + this.time += delta; + } + /** Calls {@link PhysicsConstraint.translate} for each physics constraint. */ + physicsTranslate(x, y) { + const constraints = this.physics; + for (let i = 0, n = constraints.length; i < n; i++) + constraints[i].translate(x, y); + } + /** Calls {@link PhysicsConstraint.rotate} for each physics constraint. */ + physicsRotate(x, y, degrees) { + const constraints = this.physics; + for (let i = 0, n = constraints.length; i < n; i++) + constraints[i].rotate(x, y, degrees); + } + }; + + // spine-core/src/PhysicsConstraint.ts + var PhysicsConstraint = class _PhysicsConstraint extends Constraint { + bone; + _reset = true; + ux = 0; + uy = 0; + cx = 0; + cy = 0; + tx = 0; + ty = 0; + xOffset = 0; + xLag = 0; + xVelocity = 0; + yOffset = 0; + yLag = 0; + yVelocity = 0; + rotateOffset = 0; + rotateLag = 0; + rotateVelocity = 0; + scaleOffset = 0; + scaleLag = 0; + scaleVelocity = 0; + remaining = 0; + lastTime = 0; + constructor(data, skeleton) { + super(data, new PhysicsConstraintPose(), new PhysicsConstraintPose()); + if (skeleton == null) throw new Error("skeleton cannot be null."); + this.bone = skeleton.bones[data.bone.index].constrainedPose; + } + copy(skeleton) { + var copy = new _PhysicsConstraint(this.data, skeleton); + copy.pose.set(this.pose); + return copy; + } + /** Resets all physics state that was the result of previous movement. Use this after moving a bone to prevent physics from + * reacting to the movement. */ + reset(skeleton) { + this.remaining = 0; + this.lastTime = skeleton.time; + this._reset = true; + this.xOffset = 0; + this.xLag = 0; + this.xVelocity = 0; + this.yOffset = 0; + this.yLag = 0; + this.yVelocity = 0; + this.rotateOffset = 0; + this.rotateLag = 0; + this.rotateVelocity = 0; + this.scaleOffset = 0; + this.scaleLag = 0; + this.scaleVelocity = 0; + } + /** Translates the physics constraint so the next {@link update} forces are applied as if the bone moved an + * additional amount in world space. */ + translate(x, y) { + this.ux -= x; + this.uy -= y; + this.cx -= x; + this.cy -= y; + } + /** Rotates the physics constraint so the next {@link update} forces are applied as if the bone rotated + * around the specified point in world space. */ + rotate(x, y, degrees) { + const r = degrees * MathUtils.degRad, cos = Math.cos(r), sin = Math.sin(r); + const dx = this.cx - x, dy = this.cy - y; + this.translate(dx * cos - dy * sin - dx, dx * sin + dy * cos - dy); + } + /** Applies the constraint to the constrained bones. */ + update(skeleton, physics) { + const p = this.appliedPose; + const mix = p.mix; + if (mix === 0) return; + const x = this.data.x > 0, y = this.data.y > 0, rotateOrShearX = this.data.rotate > 0 || this.data.shearX > 0, scaleX = this.data.scaleX > 0; + const bone = this.bone; + let l = bone.bone.data.length, t = this.data.step, z = 0; + if (physics === 0 /* none */) return; + bone.modifyWorld(skeleton); + switch (physics) { + // biome-ignore lint/suspicious/noFallthroughSwitchClause: fall through expected + case 1 /* reset */: + this.reset(skeleton); + // Fall through. + case 2 /* update */: { + const delta = Math.max(skeleton.time - this.lastTime, 0), aa = this.remaining; + this.remaining += delta; + this.lastTime = skeleton.time; + const bx = bone.worldX, by = bone.worldY; + if (this._reset) { + this._reset = false; + this.ux = bx; + this.uy = by; + } else { + let a = this.remaining, i = p.inertia, f = skeleton.data.referenceScale, d = -1, m = 0, e = 0, qx = this.data.limit * delta, qy = qx * Math.abs(skeleton.scaleY); + qx *= Math.abs(skeleton.scaleX); + if (x || y) { + if (x) { + const u = (this.ux - bx) * i; + this.xOffset += u > qx ? qx : u < -qx ? -qx : u; + this.ux = bx; + } + if (y) { + const u = (this.uy - by) * i; + this.yOffset += u > qy ? qy : u < -qy ? -qy : u; + this.uy = by; + } + if (a >= t) { + const xs = this.xOffset, ys = this.yOffset; + d = p.damping ** (60 * t); + m = t * p.massInverse; + e = p.strength; + const w = f * p.wind, g = f * p.gravity; + const ax = (w * skeleton.windX + g * skeleton.gravityX) * skeleton.scaleX; + const ay = (w * skeleton.windY + g * skeleton.gravityY) * skeleton.scaleY; + do { + if (x) { + this.xVelocity += (ax - this.xOffset * e) * m; + this.xOffset += this.xVelocity * t; + this.xVelocity *= d; + } + if (y) { + this.yVelocity -= (ay + this.yOffset * e) * m; + this.yOffset += this.yVelocity * t; + this.yVelocity *= d; + } + a -= t; + } while (a >= t); + this.xLag = this.xOffset - xs; + this.yLag = this.yOffset - ys; + } + z = Math.max(0, 1 - a / t); + if (x) bone.worldX += (this.xOffset - this.xLag * z) * mix * this.data.x; + if (y) bone.worldY += (this.yOffset - this.yLag * z) * mix * this.data.y; + } + if (rotateOrShearX || scaleX) { + let ca = Math.atan2(bone.c, bone.a), c = 0, s = 0, mr = 0, dx = this.cx - bone.worldX, dy = this.cy - bone.worldY; + if (dx > qx) + dx = qx; + else if (dx < -qx) + dx = -qx; + if (dy > qy) + dy = qy; + else if (dy < -qy) + dy = -qy; + a = this.remaining; + if (rotateOrShearX) { + mr = (this.data.rotate + this.data.shearX) * mix; + z = this.rotateLag * Math.max(0, 1 - aa / t); + let r = Math.atan2(dy + this.ty, dx + this.tx) - ca - (this.rotateOffset - z) * mr; + this.rotateOffset += (r - Math.ceil(r * MathUtils.invPI2 - 0.5) * MathUtils.PI2) * i; + r = (this.rotateOffset - z) * mr + ca; + c = Math.cos(r); + s = Math.sin(r); + if (scaleX) { + r = l * bone.getWorldScaleX(); + if (r > 0) this.scaleOffset += (dx * c + dy * s) * i / r; + } + } else { + c = Math.cos(ca); + s = Math.sin(ca); + const r = l * bone.getWorldScaleX() - this.scaleLag * Math.max(0, 1 - aa / t); + if (r > 0) this.scaleOffset += (dx * c + dy * s) * i / r; + } + if (a >= t) { + if (d === -1) { + d = p.damping ** (60 * t); + m = t * p.massInverse; + e = p.strength; + } + const ax = p.wind * skeleton.windX + p.gravity * skeleton.gravityX; + const ay = (p.wind * skeleton.windY + p.gravity * skeleton.gravityY) * Skeleton.yDir; + const rs = this.rotateOffset, ss = this.scaleOffset, h = l / f; + while (true) { + a -= t; + if (scaleX) { + this.scaleVelocity += (ax * c - ay * s - this.scaleOffset * e) * m; + this.scaleOffset += this.scaleVelocity * t; + this.scaleVelocity *= d; + } + if (rotateOrShearX) { + this.rotateVelocity -= ((ax * s + ay * c) * h + this.rotateOffset * e) * m; + this.rotateOffset += this.rotateVelocity * t; + this.rotateVelocity *= d; + if (a < t) break; + const r = this.rotateOffset * mr + ca; + c = Math.cos(r); + s = Math.sin(r); + } else if (a < t) + break; + } + this.rotateLag = this.rotateOffset - rs; + this.scaleLag = this.scaleOffset - ss; + } + z = Math.max(0, 1 - a / t); + } + this.remaining = a; + } + this.cx = bone.worldX; + this.cy = bone.worldY; + break; + } + case 3 /* pose */: + z = Math.max(0, 1 - this.remaining / t); + if (x) bone.worldX += (this.xOffset - this.xLag * z) * mix * this.data.x; + if (y) bone.worldY += (this.yOffset - this.yLag * z) * mix * this.data.y; + } + if (rotateOrShearX) { + let o = (this.rotateOffset - this.rotateLag * z) * mix, s = 0, c = 0, a = 0; + if (this.data.shearX > 0) { + let r = 0; + if (this.data.rotate > 0) { + r = o * this.data.rotate; + s = Math.sin(r); + c = Math.cos(r); + a = bone.b; + bone.b = c * a - s * bone.d; + bone.d = s * a + c * bone.d; + } + r += o * this.data.shearX; + s = Math.sin(r); + c = Math.cos(r); + a = bone.a; + bone.a = c * a - s * bone.c; + bone.c = s * a + c * bone.c; + } else { + o *= this.data.rotate; + s = Math.sin(o); + c = Math.cos(o); + a = bone.a; + bone.a = c * a - s * bone.c; + bone.c = s * a + c * bone.c; + a = bone.b; + bone.b = c * a - s * bone.d; + bone.d = s * a + c * bone.d; + } + } + if (scaleX) { + let s = 1 + (this.scaleOffset - this.scaleLag * z) * mix * this.data.scaleX; + bone.a *= s; + bone.c *= s; + switch (this.data.scaleYMode) { + case 1 /* Uniform */: + bone.b *= s; + bone.d *= s; + break; + case 2 /* Volume */: + s = Math.abs(s); + s = s >= 0.7 ? 1 / s : 4 - 3.67347 * s; + bone.b *= s; + bone.d *= s; + } + } + if (physics !== 3 /* pose */) { + this.tx = l * bone.a; + this.ty = l * bone.c; + } + } + sort(skeleton) { + const bone = this.bone.bone; + skeleton.sortBone(bone); + skeleton._updateCache.push(this); + skeleton.sortReset(bone.children); + skeleton.constrained(bone); + } + isSourceActive() { + return this.bone.bone.active; + } + }; + + // spine-core/src/PhysicsConstraintData.ts + var PhysicsConstraintData = class extends ConstraintData { + /** The bone constrained by this physics constraint. */ + set bone(boneData) { + this._bone = boneData; + } + get bone() { + if (!this._bone) throw new Error("BoneData not set."); + else return this._bone; + } + _bone = null; + /** Physics influence on x translation, 0-1. */ + x = 0; + /** Physics influence on y translation, 0-1. */ + y = 0; + /** Physics influence on rotation, 0-1. */ + rotate = 0; + /** Physics influence on scaleX, 0-1. */ + scaleX = 0; + /** Physics influence on shearX, 0-1. */ + shearX = 0; + /** Movement greater than the limit will not have a greater affect on physics. */ + limit = 0; + /** The time in milliseconds required to advanced the physics simulation one step. */ + step = 0; + /** True when this constraint's inertia is controlled by global slider timelines. */ + inertiaGlobal = false; + /** True when this constraint's strength is controlled by global slider timelines. */ + strengthGlobal = false; + /** True when this constraint's damping is controlled by global slider timelines. */ + dampingGlobal = false; + /** True when this constraint's mass is controlled by global slider timelines. */ + massGlobal = false; + /** True when this constraint's wind is controlled by global slider timelines. */ + windGlobal = false; + /** True when this constraint's gravity is controlled by global slider timelines. */ + gravityGlobal = false; + /** True when this constraint's mix is controlled by global slider timelines. */ + mixGlobal = false; + /** Determines how the {@link BonePose.scaleY} changes when {@link BonePose.scaleX} sets + * {@link BonePose.scaleX}. */ + _scaleYMode = 0 /* None */; + get scaleYMode() { + return this._scaleYMode; + } + set scaleYMode(scaleYMode) { + if (scaleYMode == null) throw new Error("scaleYMode cannot be null."); + this._scaleYMode = scaleYMode; + } + constructor(name) { + super(name, new PhysicsConstraintPose()); + } + create(skeleton) { + return new PhysicsConstraint(this, skeleton); + } + }; + + // spine-core/src/polyfills.ts + (() => { + if (typeof Math.fround === "undefined") { + Math.fround = /* @__PURE__ */ ((array) => (x) => { + array[0] = x; + return array[0]; + })(new Float32Array(1)); + } + })(); + + // spine-core/src/SliderPose.ts + var SliderPose = class { + /** The time in the {@link SliderData.animation} to apply the animation. */ + time = 0; + /** A percentage (unbounded) that controls the mix between the constrained and unconstrained poses. */ + mix = 0; + set(pose) { + this.time = pose.time; + this.mix = pose.mix; + } + }; + + // spine-core/src/Slider.ts + var Slider = class _Slider extends Constraint { + static offsets = [0, 0, 0, 0, 0, 0]; + /** When set, the bone's transform property is used to set the slider's {@link SliderPose.time}. */ + bone = null; + constructor(data, skeleton) { + super(data, new SliderPose(), new SliderPose()); + if (!skeleton) throw new Error("skeleton cannot be null."); + if (data.bone != null) this.bone = skeleton.bones[data.bone.index]; + } + copy(skeleton) { + var copy = new _Slider(this.data, skeleton); + copy.pose.set(this.pose); + return copy; + } + update(skeleton, physics) { + const p = this.appliedPose; + if (p.mix === 0) return; + const data = this.data, animation = data.animation, bone = this.bone; + if (bone !== null) { + if (!bone.active) return; + if (data.local) bone.appliedPose.validateLocalTransform(skeleton); + p.time = data.offset + (data.property.value(skeleton, bone.appliedPose, data.local, _Slider.offsets) - data.property.offset) * data.scale; + if (data.loop) + p.time = animation.duration + p.time % animation.duration; + else + p.time = Math.max(0, p.time); + } + const bones = skeleton.bones; + const indices = animation.bones; + for (let i = 0, n = animation.bones.length; i < n; i++) + bones[indices[i]].appliedPose.modifyLocal(skeleton); + animation.apply(skeleton, p.time, p.time, data.loop, null, p.mix, 0 /* current */, data.additive, false, true); + } + sort(skeleton) { + const bone = this.bone; + const data = this.data; + if (bone && !data.local) skeleton.sortBone(bone); + skeleton._updateCache.push(this); + const bones = skeleton.bones; + const indices = data.animation.bones; + for (let i = 0, n = data.animation.bones.length; i < n; i++) { + const bone2 = bones[indices[i]]; + bone2.sorted = false; + skeleton.sortReset(bone2.children); + skeleton.constrained(bone2); + } + const timelines = data.animation.timelines; + const slots = skeleton.slots; + const constraints = skeleton.constraints; + const physics = skeleton.physics; + const physicsCount = skeleton.physics.length; + for (let i = 0, n = data.animation.timelines.length; i < n; i++) { + const t = timelines[i]; + if (isSlotTimeline(t)) + skeleton.constrained(slots[t.slotIndex]); + else if (t instanceof DrawOrderTimeline || t instanceof DrawOrderFolderTimeline) + skeleton.drawOrder.constrained(); + else if (t instanceof PhysicsConstraintTimeline) { + if (t.constraintIndex === -1) { + for (let ii = 0; ii < physicsCount; ii++) + skeleton.constrained(physics[ii]); + } else + skeleton.constrained(constraints[t.constraintIndex]); + } else if (isConstraintTimeline(t)) { + const constraintIndex = t.constraintIndex; + if (constraintIndex !== -1) skeleton.constrained(constraints[constraintIndex]); + } + } + } + }; + + // spine-core/src/SliderData.ts + var SliderData = class extends ConstraintData { + /** The animation the slider will apply. */ + animation; + /** When true, the animation is applied by adding it to the current pose rather than overwriting it. */ + additive = false; + /** When true, the animation repeats after its duration, otherwise the last frame is used. */ + loop = false; + /** When set, the bone's transform property is used to set the slider's {@link SliderPose.time}. */ + bone = null; + /** When a bone is set, the specified transform property is used to set the slider's {@link SliderPose.time}. */ + property; + /** When a bone is set, this is the scale of the {@link property} value in relation to the slider time. */ + scale = 0; + /** When a bone is set, the offset is added to the property. */ + offset = 0; + /** When true and a bone is set, the bone's local transform property is read instead of its world transform. */ + local = false; + // Nonessential. + /** When a bone is set, the maximum slider time for the bone property range, or 0 if nonessential data was not exported. */ + max = 0; + constructor(name) { + super(name, new SliderPose()); + } + create(skeleton) { + return new Slider(this, skeleton); + } + }; + + // spine-core/src/SkeletonData.ts + var SkeletonData = class { + /** The skeleton's name, which by default is the name of the skeleton data file, if possible. May be null. */ + name = null; + /** The skeleton's bones, sorted parent first. The root bone is always the first bone. */ + bones = []; + // Ordered parents first. + /** The skeleton's slots in the setup pose draw order. */ + slots = []; + // Setup pose draw order. + skins = []; + /** The skeleton's default skin. By default this skin contains all attachments that were not in a skin in Spine. + * + * See {@link Skeleton.getAttachmentByName}. + * May be null. */ + defaultSkin = null; + /** The skeleton's events. */ + events = []; + /** The skeleton's animations. */ + animations = []; + /** The skeleton's IK constraints. */ + // biome-ignore lint/suspicious/noExplicitAny: reference runtime does not restrict to specific types + constraints = []; + /** The X coordinate of the skeleton's axis aligned bounding box in the setup pose. */ + x = 0; + /** The Y coordinate of the skeleton's axis aligned bounding box in the setup pose. */ + y = 0; + /** The width of the skeleton's axis aligned bounding box in the setup pose. */ + width = 0; + /** The height of the skeleton's axis aligned bounding box in the setup pose. */ + height = 0; + /** Baseline scale factor for applying distance-dependent effects on non-scalable properties, such as angle or scale. Default + * is 100. */ + referenceScale = 100; + /** The Spine version used to export the skeleton data, or null. */ + version = null; + /** The skeleton data hash. This value will change if any of the skeleton data has changed. May be null. */ + hash = null; + // Nonessential + /** The dopesheet FPS in Spine. Available only when nonessential data was exported. */ + fps = 30; + /** The path to the images folder as defined in Spine. Available only when nonessential data was exported. May be null. */ + imagesPath = null; + /** The path to the audio folder as defined in Spine. Available only when nonessential data was exported. May be null. */ + audioPath = null; + /** Finds a bone by comparing each bone's name. It is more efficient to cache the results of this method than to call it + * multiple times. + * @returns May be null. */ + findBone(boneName) { + if (!boneName) throw new Error("boneName cannot be null."); + const bones = this.bones; + for (let i = 0, n = bones.length; i < n; i++) + if (bones[i].name === boneName) return bones[i]; + return null; + } + /** Finds a slot by comparing each slot's name. It is more efficient to cache the results of this method than to call it + * multiple times. + * @returns May be null. */ + findSlot(slotName) { + if (!slotName) throw new Error("slotName cannot be null."); + const slots = this.slots; + for (let i = 0, n = slots.length; i < n; i++) + if (slots[i].name === slotName) return slots[i]; + return null; + } + /** Finds a skin by comparing each skin's name. It is more efficient to cache the results of this method than to call it + * multiple times. + * @returns May be null. */ + findSkin(skinName) { + if (!skinName) throw new Error("skinName cannot be null."); + const skins = this.skins; + for (let i = 0, n = skins.length; i < n; i++) + if (skins[i].name === skinName) return skins[i]; + return null; + } + /** Finds an event by comparing each events's name. It is more efficient to cache the results of this method than to call it + * multiple times. + * @returns May be null. */ + findEvent(eventDataName) { + if (!eventDataName) throw new Error("eventDataName cannot be null."); + const events = this.events; + for (let i = 0, n = events.length; i < n; i++) + if (events[i].name === eventDataName) return events[i]; + return null; + } + /** Collects animations used by {@link SliderData slider constraints}. + * + * Slider animations are designed to be applied by slider constraints rather than on their own. Applications that have a user + * choose an animation may want to exclude them. */ + findSliderAnimations(animations) { + const constraints = this.constraints; + for (let i = 0, n = this.constraints.length; i < n; i++) { + const data = constraints[i]; + if (data instanceof SliderData && data.animation != null) animations.push(data.animation); + } + return animations; + } + /** Finds an animation by comparing each animation's name. It is more efficient to cache the results of this method than to + * call it multiple times. + * @returns May be null. */ + findAnimation(animationName) { + if (!animationName) throw new Error("animationName cannot be null."); + const animations = this.animations; + for (let i = 0, n = animations.length; i < n; i++) + if (animations[i].name === animationName) return animations[i]; + return null; + } + // --- Constraints. + /** Finds a constraint of the specified type by comparing each constraints's name. It is more efficient to cache the results of + * this method than to call it multiple times. */ + // biome-ignore lint/suspicious/noExplicitAny: reference runtime does not restrict to specific types + findConstraint(constraintName, type) { + if (!constraintName) throw new Error("constraintName cannot be null."); + if (type == null) throw new Error("type cannot be null."); + const constraints = this.constraints; + for (let i = 0, n = this.constraints.length; i < n; i++) { + const constraint = constraints[i]; + if (constraint instanceof type && constraint.name === constraintName) return constraint; + } + return null; + } + }; + + // spine-core/src/Skin.ts + var SkinEntry = class { + /** The {@link Skeleton.slots} index. */ + slotIndex = 0; + placeholder; + /** The attachment for this skin entry. */ + attachment; + constructor(slotIndex = 0, placeholder, attachment) { + this.slotIndex = slotIndex; + this.placeholder = placeholder; + this.attachment = attachment; + } + }; + var Skin = class { + /** The skin's name, unique across all skins in the skeleton. + * + * See {@link SkeletonData.findSkin}. */ + name; + attachments = []; + bones = []; + // biome-ignore lint/suspicious/noExplicitAny: reference runtime does not restrict to specific types + constraints = []; + /** The color of the skin as it was in Spine, or a default color if nonessential data was not exported. */ + color = new Color(0.99607843, 0.61960787, 0.30980393, 1); + // fe9e4fff + constructor(name) { + if (!name) throw new Error("name cannot be null."); + this.name = name; + } + /** Adds an attachment to the skin for the specified slot index and name. */ + setAttachment(slotIndex, placeholder, attachment) { + if (!attachment) throw new Error("attachment cannot be null."); + const attachments = this.attachments; + if (slotIndex >= attachments.length) attachments.length = slotIndex + 1; + if (!attachments[slotIndex]) attachments[slotIndex] = {}; + attachments[slotIndex][placeholder] = attachment; + } + /** Adds all attachments, bones, and constraints from the specified skin to this skin. */ + addSkin(skin) { + for (let i = 0; i < skin.bones.length; i++) { + const bone = skin.bones[i]; + let contained = false; + for (let ii = 0; ii < this.bones.length; ii++) { + if (this.bones[ii] === bone) { + contained = true; + break; + } + } + if (!contained) this.bones.push(bone); + } + for (let i = 0; i < skin.constraints.length; i++) { + const constraint = skin.constraints[i]; + let contained = false; + for (let ii = 0; ii < this.constraints.length; ii++) { + if (this.constraints[ii] === constraint) { + contained = true; + break; + } + } + if (!contained) this.constraints.push(constraint); + } + const attachments = skin.getAttachments(); + for (let i = 0; i < attachments.length; i++) { + const attachment = attachments[i]; + this.setAttachment(attachment.slotIndex, attachment.placeholder, attachment.attachment); + } + } + /** Adds all bones and constraints and copies of all attachments from the specified skin to this skin. Mesh attachments are not + * copied, instead a new linked mesh is created. The attachment copies can be modified without affecting the originals. */ + copySkin(skin) { + for (let i = 0; i < skin.bones.length; i++) { + const bone = skin.bones[i]; + let contained = false; + for (let ii = 0; ii < this.bones.length; ii++) { + if (this.bones[ii] === bone) { + contained = true; + break; + } + } + if (!contained) this.bones.push(bone); + } + for (let i = 0; i < skin.constraints.length; i++) { + const constraint = skin.constraints[i]; + let contained = false; + for (let ii = 0; ii < this.constraints.length; ii++) { + if (this.constraints[ii] === constraint) { + contained = true; + break; + } + } + if (!contained) this.constraints.push(constraint); + } + const attachments = skin.getAttachments(); + for (let i = 0; i < attachments.length; i++) { + const attachment = attachments[i]; + if (!attachment.attachment) continue; + if (attachment.attachment instanceof MeshAttachment) { + attachment.attachment = attachment.attachment.newLinkedMesh(); + this.setAttachment(attachment.slotIndex, attachment.placeholder, attachment.attachment); + } else { + attachment.attachment = attachment.attachment.copy(); + this.setAttachment(attachment.slotIndex, attachment.placeholder, attachment.attachment); + } + } + } + /** Returns the attachment for the specified slot index and placeholder, or null. */ + getAttachment(slotIndex, placeholder) { + const dictionary = this.attachments[slotIndex]; + return dictionary ? dictionary[placeholder] : null; + } + /** Removes the attachment in the skin for the specified slot index and placeholder, if any. */ + removeAttachment(slotIndex, placeholder) { + const dictionary = this.attachments[slotIndex]; + if (dictionary) delete dictionary[placeholder]; + } + /** Returns all attachments in this skin. */ + getAttachments() { + const entries = []; + for (let i = 0; i < this.attachments.length; i++) { + const slotAttachments = this.attachments[i]; + if (slotAttachments) { + for (const name in slotAttachments) { + const attachment = slotAttachments[name]; + if (attachment) entries.push(new SkinEntry(i, name, attachment)); + } + } + } + return entries; + } + /** Returns all attachments in this skin for the specified slot index. */ + getAttachmentsForSlot(slotIndex, attachments) { + const slotAttachments = this.attachments[slotIndex]; + if (slotAttachments) { + for (const name in slotAttachments) { + const attachment = slotAttachments[name]; + if (attachment) attachments.push(new SkinEntry(slotIndex, name, attachment)); + } + } + } + /** Clears all attachments, bones, and constraints. */ + clear() { + this.attachments.length = 0; + this.bones.length = 0; + this.constraints.length = 0; + } + /** Attach each attachment in this skin if the corresponding attachment in the old skin is currently attached. */ + attachAll(skeleton, oldSkin) { + let slotIndex = 0; + for (let i = 0; i < skeleton.slots.length; i++) { + const slot = skeleton.slots[i]; + const slotAttachment = slot.pose.getAttachment(); + if (slotAttachment && slotIndex < oldSkin.attachments.length) { + const dictionary = oldSkin.attachments[slotIndex]; + for (const placeholder in dictionary) { + const skinAttachment = dictionary[placeholder]; + if (slotAttachment === skinAttachment) { + const attachment = this.getAttachment(slotIndex, placeholder); + if (attachment) slot.pose.setAttachment(attachment); + break; + } + } + } + slotIndex++; + } + } + }; + + // spine-core/src/SlotData.ts + var SlotData = class extends PosedData { + /** The index of the slot in {@link Skeleton.slots}. */ + index = 0; + /** The bone this slot belongs to. */ + boneData; + /** The name of the attachment that is visible for this slot in the setup pose, or null if no attachment is visible. */ + attachmentName = null; + /** The blend mode for drawing the slot's attachment. */ + blendMode = 0 /* Normal */; + // Nonessential. + /** False if the slot was hidden in Spine and nonessential data was exported. Does not affect runtime rendering. */ + visible = true; + constructor(index, name, boneData) { + super(name, new SlotPose()); + if (index < 0) throw new Error("index must be >= 0."); + if (!boneData) throw new Error("boneData cannot be null."); + this.index = index; + this.boneData = boneData; + } + }; + var BlendMode = /* @__PURE__ */ ((BlendMode2) => { + BlendMode2[BlendMode2["Normal"] = 0] = "Normal"; + BlendMode2[BlendMode2["Additive"] = 1] = "Additive"; + BlendMode2[BlendMode2["Multiply"] = 2] = "Multiply"; + BlendMode2[BlendMode2["Screen"] = 3] = "Screen"; + return BlendMode2; + })(BlendMode || {}); + + // spine-core/src/TransformConstraintPose.ts + var TransformConstraintPose = class { + /** A percentage (unbounded) that controls the mix between the constrained and unconstrained rotation. */ + mixRotate = 0; + /** A percentage (unbounded) that controls the mix between the constrained and unconstrained translation X. */ + mixX = 0; + /** A percentage (unbounded) that controls the mix between the constrained and unconstrained translation Y. */ + mixY = 0; + /** A percentage (unbounded) that controls the mix between the constrained and unconstrained scale X. */ + mixScaleX = 0; + /** A percentage (unbounded) that controls the mix between the constrained and unconstrained scale Y. */ + mixScaleY = 0; + /** A percentage (unbounded) that controls the mix between the constrained and unconstrained shear Y. */ + mixShearY = 0; + set(pose) { + this.mixRotate = pose.mixRotate; + this.mixX = pose.mixX; + this.mixY = pose.mixY; + this.mixScaleX = pose.mixScaleX; + this.mixScaleY = pose.mixScaleY; + this.mixShearY = pose.mixShearY; + } + }; + + // spine-core/src/TransformConstraint.ts + var TransformConstraint = class _TransformConstraint extends Constraint { + /** The bones that will be modified by this transform constraint. */ + bones; + /** The bone whose world transform will be copied to the constrained bones. */ + source; + constructor(data, skeleton) { + super(data, new TransformConstraintPose(), new TransformConstraintPose()); + if (!skeleton) throw new Error("skeleton cannot be null."); + this.bones = []; + for (const boneData of data.bones) + this.bones.push(skeleton.bones[boneData.index].constrainedPose); + const source = skeleton.bones[data.source.index]; + if (source == null) throw new Error("source cannot be null."); + this.source = source; + } + copy(skeleton) { + var copy = new _TransformConstraint(this.data, skeleton); + copy.pose.set(this.pose); + return copy; + } + update(skeleton, physics) { + const p = this.appliedPose; + if (p.mixRotate === 0 && p.mixX === 0 && p.mixY === 0 && p.mixScaleX === 0 && p.mixScaleY === 0 && p.mixShearY === 0) return; + const data = this.data; + const localSource = data.localSource, localTarget = data.localTarget, additive = data.additive, clamp = data.clamp; + const offsets = data.offsets; + const source = this.source.appliedPose; + if (localSource) source.validateLocalTransform(skeleton); + const fromItems = data.properties; + const fn = data.properties.length; + const bones = this.bones; + for (let i = 0, n = this.bones.length; i < n; i++) { + const bone = bones[i]; + if (localTarget) + bone.modifyLocal(skeleton); + else + bone.modifyWorld(skeleton); + for (let f = 0; f < fn; f++) { + const from = fromItems[f]; + const value = from.value(skeleton, source, localSource, offsets) - from.offset; + const toItems = from.to; + for (let t = 0, tn = from.to.length; t < tn; t++) { + const to = toItems[t]; + if (to.mix(p) !== 0) { + let clamped = to.offset + value * to.scale; + if (clamp) { + if (to.offset < to.max) + clamped = MathUtils.clamp(clamped, to.offset, to.max); + else + clamped = MathUtils.clamp(clamped, to.max, to.offset); + } + to.apply(skeleton, p, bone, clamped, localTarget, additive); + } + } + } + } + } + sort(skeleton) { + if (!this.data.localSource) skeleton.sortBone(this.source); + const bones = this.bones; + const boneCount = this.bones.length; + const worldTarget = !this.data.localTarget; + if (worldTarget) { + for (let i = 0; i < boneCount; i++) + skeleton.sortBone(bones[i].bone); + } + skeleton._updateCache.push(this); + for (let i = 0; i < boneCount; i++) { + const bone = bones[i].bone; + skeleton.sortReset(bone.children); + skeleton.constrained(bone); + } + for (let i = 0; i < boneCount; i++) + bones[i].bone.sorted = worldTarget; + } + isSourceActive() { + return this.source.active; + } + }; + + // spine-core/src/TransformConstraintData.ts + var TransformConstraintData = class _TransformConstraintData extends ConstraintData { + static ROTATION = 0; + static X = 1; + static Y = 2; + static SCALEX = 3; + static SCALEY = 4; + static SHEARY = 5; + /** The bones that will be modified by this transform constraint. */ + bones = []; + /** The bone whose world transform will be copied to the constrained bones. */ + set source(source) { + this._source = source; + } + get source() { + if (!this._source) throw new Error("BoneData not set."); + else return this._source; + } + _source = null; + offsets = [0, 0, 0, 0, 0, 0]; + /** An offset added to the constrained bone X translation. */ + offsetX = 0; + /** An offset added to the constrained bone Y translation. */ + offsetY = 0; + /** Reads the source bone's local transform instead of its world transform. */ + localSource = false; + /** Sets the constrained bones' local transforms instead of their world transforms. */ + localTarget = false; + /** Adds the source bone transform to the constrained bones instead of setting it absolutely. */ + additive = false; + /** Prevents constrained bones from exceeding the ranged defined by {@link ToProperty.offset} and {@link ToProperty.max}. */ + clamp = false; + /** The mapping of transform properties to other transform properties. */ + properties = []; + constructor(name) { + super(name, new TransformConstraintPose()); + } + create(skeleton) { + return new TransformConstraint(this, skeleton); + } + /** An offset added to the constrained bone rotation. */ + getOffsetRotation() { + return this.offsets[_TransformConstraintData.ROTATION]; + } + setOffsetRotation(offsetRotation) { + this.offsets[_TransformConstraintData.ROTATION] = offsetRotation; + } + /** An offset added to the constrained bone X translation. */ + getOffsetX() { + return this.offsets[_TransformConstraintData.X]; + } + setOffsetX(offsetX) { + this.offsets[_TransformConstraintData.X] = offsetX; + } + /** An offset added to the constrained bone Y translation. */ + getOffsetY() { + return this.offsets[_TransformConstraintData.Y]; + } + setOffsetY(offsetY) { + this.offsets[_TransformConstraintData.Y] = offsetY; + } + /** An offset added to the constrained bone scaleX. */ + getOffsetScaleX() { + return this.offsets[_TransformConstraintData.SCALEX]; + } + setOffsetScaleX(offsetScaleX) { + this.offsets[_TransformConstraintData.SCALEX] = offsetScaleX; + } + /** An offset added to the constrained bone scaleY. */ + getOffsetScaleY() { + return this.offsets[_TransformConstraintData.SCALEY]; + } + setOffsetScaleY(offsetScaleY) { + this.offsets[_TransformConstraintData.SCALEY] = offsetScaleY; + } + /** An offset added to the constrained bone shearY. */ + getOffsetShearY() { + return this.offsets[_TransformConstraintData.SHEARY]; + } + setOffsetShearY(offsetShearY) { + this.offsets[_TransformConstraintData.SHEARY] = offsetShearY; + } + }; + var FromProperty = class { + /** The value of this property that corresponds to {@link ToProperty.offset}. */ + offset = 0; + /** Constrained properties. */ + to = []; + }; + var ToProperty = class { + /** The value of this property that corresponds to {@link FromProperty.offset}. */ + offset = 0; + /** The maximum value of this property when {@link TransformConstraintData.clamp clamped}. */ + max = 0; + /** The scale of the {@link FromProperty} value in relation to this property. */ + scale = 0; + }; + var FromRotate = class extends FromProperty { + value(skeleton, source, local, offsets) { + if (local) return source.rotation + offsets[TransformConstraintData.ROTATION]; + const sx = skeleton.scaleX, sy = skeleton.scaleY; + let value = Math.atan2(source.c / sy, source.a / sx) * MathUtils.radDeg + ((source.a * source.d - source.b * source.c) * sx * sy > 0 ? offsets[TransformConstraintData.ROTATION] : -offsets[TransformConstraintData.ROTATION]); + if (value < 0) value += 360; + return value; + } + }; + var ToRotate = class extends ToProperty { + mix(pose) { + return pose.mixRotate; + } + apply(skeleton, pose, bone, value, local, additive) { + if (local) + bone.rotation += (additive ? value : value - bone.rotation) * pose.mixRotate; + else { + const sx = skeleton.scaleX, sy = skeleton.scaleY, ix = 1 / sx, iy = 1 / sy; + const a = bone.a * ix, b = bone.b * ix, c = bone.c * iy, d = bone.d * iy; + value *= MathUtils.degRad; + if (!additive) value -= Math.atan2(c, a); + if (value > MathUtils.PI) + value -= MathUtils.PI2; + else if (value < -MathUtils.PI) + value += MathUtils.PI2; + value *= pose.mixRotate; + const cos = Math.cos(value), sin = Math.sin(value); + bone.a = (cos * a - sin * c) * sx; + bone.b = (cos * b - sin * d) * sx; + bone.c = (sin * a + cos * c) * sy; + bone.d = (sin * b + cos * d) * sy; + } + } + }; + var FromX = class extends FromProperty { + value(skeleton, source, local, offsets) { + return local ? source.x + offsets[TransformConstraintData.X] : (offsets[TransformConstraintData.X] * source.a + offsets[TransformConstraintData.Y] * source.b + source.worldX) / skeleton.scaleX; + } + }; + var ToX = class extends ToProperty { + mix(pose) { + return pose.mixX; + } + apply(skeleton, pose, bone, value, local, additive) { + if (local) + bone.x += (additive ? value : value - bone.x) * pose.mixX; + else { + if (!additive) value -= bone.worldX / skeleton.scaleX; + bone.worldX += value * pose.mixX * skeleton.scaleX; + } + } + }; + var FromY = class extends FromProperty { + value(skeleton, source, local, offsets) { + return local ? source.y + offsets[TransformConstraintData.Y] : (offsets[TransformConstraintData.X] * source.c + offsets[TransformConstraintData.Y] * source.d + source.worldY) / skeleton.scaleY; + } + }; + var ToY = class extends ToProperty { + mix(pose) { + return pose.mixY; + } + apply(skeleton, pose, bone, value, local, additive) { + if (local) + bone.y += (additive ? value : value - bone.y) * pose.mixY; + else { + if (!additive) value -= bone.worldY / skeleton.scaleY; + bone.worldY += value * pose.mixY * skeleton.scaleY; + } + } + }; + var FromScaleX = class extends FromProperty { + value(skeleton, source, local, offsets) { + if (local) return source.scaleX + offsets[TransformConstraintData.SCALEX]; + const a = source.a / skeleton.scaleX, c = source.c / skeleton.scaleY; + return Math.sqrt(a * a + c * c) + offsets[TransformConstraintData.SCALEX]; + } + }; + var ToScaleX = class extends ToProperty { + mix(pose) { + return pose.mixScaleX; + } + apply(skeleton, pose, bone, value, local, additive) { + if (local) { + if (additive) + bone.scaleX *= 1 + (value - 1) * pose.mixScaleX; + else if (bone.scaleX !== 0) + bone.scaleX += (value - bone.scaleX) * pose.mixScaleX; + } else if (additive) { + const s = 1 + (value - 1) * pose.mixScaleX; + bone.a *= s; + bone.c *= s; + } else { + let a = bone.a / skeleton.scaleX, c = bone.c / skeleton.scaleY, s = Math.sqrt(a * a + c * c); + if (s !== 0) { + s = 1 + (value - s) * pose.mixScaleX / s; + bone.a *= s; + bone.c *= s; + } + } + } + }; + var FromScaleY = class extends FromProperty { + value(skeleton, source, local, offsets) { + if (local) return source.scaleY + offsets[TransformConstraintData.SCALEY]; + const b = source.b / skeleton.scaleX, d = source.d / skeleton.scaleY; + return Math.sqrt(b * b + d * d) + offsets[TransformConstraintData.SCALEY]; + } + }; + var ToScaleY = class extends ToProperty { + mix(pose) { + return pose.mixScaleY; + } + apply(skeleton, pose, bone, value, local, additive) { + if (local) { + if (additive) + bone.scaleY *= 1 + (value - 1) * pose.mixScaleY; + else if (bone.scaleY !== 0) + bone.scaleY += (value - bone.scaleY) * pose.mixScaleY; + } else if (additive) { + const s = 1 + (value - 1) * pose.mixScaleY; + bone.b *= s; + bone.d *= s; + } else { + let b = bone.b / skeleton.scaleX, d = bone.d / skeleton.scaleY, s = Math.sqrt(b * b + d * d); + if (s !== 0) { + s = 1 + (value - s) * pose.mixScaleY / s; + bone.b *= s; + bone.d *= s; + } + } + } + }; + var FromShearY = class extends FromProperty { + value(skeleton, source, local, offsets) { + if (local) return source.shearY + offsets[TransformConstraintData.SHEARY]; + const ix = 1 / skeleton.scaleX, iy = 1 / skeleton.scaleY; + return (Math.atan2(source.d * iy, source.b * ix) - Math.atan2(source.c * iy, source.a * ix)) * MathUtils.radDeg - 90 + offsets[TransformConstraintData.SHEARY]; + } + }; + var ToShearY = class extends ToProperty { + mix(pose) { + return pose.mixShearY; + } + apply(skeleton, pose, bone, value, local, additive) { + if (local) { + if (!additive) value -= bone.shearY; + bone.shearY += value * pose.mixShearY; + } else { + const sx = skeleton.scaleX, sy = skeleton.scaleY, b = bone.b / sx, d = bone.d / sy, by = Math.atan2(d, b); + value = (value + 90) * MathUtils.degRad; + if (additive) + value -= MathUtils.PI / 2; + else { + value -= by - Math.atan2(bone.c / sy, bone.a / sx); + if (value > MathUtils.PI) + value -= MathUtils.PI2; + else if (value < -MathUtils.PI) + value += MathUtils.PI2; + } + value = by + value * pose.mixShearY; + const s = Math.sqrt(b * b + d * d); + bone.b = Math.cos(value) * s * sx; + bone.d = Math.sin(value) * s * sy; + } + } + }; + + // spine-core/src/SkeletonBinary.ts + var SkeletonBinary = class { + /** Scales bone positions, image sizes, and translations as they are loaded. This allows different size images to be used at + * runtime than were used in Spine. + * + * See [Scaling](http://esotericsoftware.com/spine-loading-skeleton-data#Scaling) in the Spine Runtimes Guide. */ + scale = 1; + attachmentLoader; + linkedMeshes = []; + constructor(attachmentLoader) { + this.attachmentLoader = attachmentLoader; + } + readSkeletonData(binary) { + const scale = this.scale; + const skeletonData = new SkeletonData(); + skeletonData.name = ""; + const input = new BinaryInput(binary); + const lowHash = input.readInt32(); + const highHash = input.readInt32(); + skeletonData.hash = highHash === 0 && lowHash === 0 ? null : highHash.toString(16) + lowHash.toString(16); + skeletonData.version = input.readString(); + skeletonData.x = input.readFloat(); + skeletonData.y = input.readFloat(); + skeletonData.width = input.readFloat(); + skeletonData.height = input.readFloat(); + skeletonData.referenceScale = input.readFloat() * scale; + const nonessential = input.readBoolean(); + if (nonessential) { + skeletonData.fps = input.readFloat(); + skeletonData.imagesPath = input.readString(); + skeletonData.audioPath = input.readString(); + } + let n = 0; + n = input.readInt(true); + for (let i = 0; i < n; i++) { + const str = input.readString(); + if (!str) throw new Error("String in string table must not be null."); + input.strings.push(str); + } + const bones = skeletonData.bones; + n = input.readInt(true); + for (let i = 0; i < n; i++) { + const name = input.readString(); + if (!name) throw new Error("Bone name must not be null."); + const parent = i === 0 ? null : bones[input.readInt(true)]; + const data = new BoneData(i, name, parent); + const setup = data.setupPose; + setup.rotation = input.readFloat(); + setup.x = input.readFloat() * scale; + setup.y = input.readFloat() * scale; + setup.scaleX = input.readFloat(); + setup.scaleY = input.readFloat(); + setup.shearX = input.readFloat(); + setup.shearY = input.readFloat(); + setup.inherit = input.readByte(); + data.length = input.readFloat() * scale; + data.skinRequired = input.readBoolean(); + if (nonessential) { + Color.rgba8888ToColor(data.color, input.readInt32()); + data.icon = input.readString() ?? void 0; + data.iconSize = input.readFloat(); + data.iconRotation = input.readFloat(); + data.visible = input.readBoolean(); + } + bones.push(data); + } + n = input.readInt(true); + for (let i = 0; i < n; i++) { + const slotName = input.readString(); + if (!slotName) throw new Error("Slot name must not be null."); + const boneData = bones[input.readInt(true)]; + const data = new SlotData(i, slotName, boneData); + Color.rgba8888ToColor(data.setupPose.color, input.readInt32()); + const darkColor = input.readInt32(); + if (darkColor !== -1) Color.rgb888ToColor(data.setupPose.darkColor = new Color(), darkColor); + data.attachmentName = input.readStringRef(); + data.blendMode = input.readInt(true); + if (nonessential) data.visible = input.readBoolean(); + skeletonData.slots.push(data); + } + const constraints = skeletonData.constraints; + const constraintCount = input.readInt(true); + for (let i = 0; i < constraintCount; i++) { + const name = input.readString(); + if (!name) throw new Error("Constraint data name must not be null."); + let nn; + switch (input.readByte()) { + case CONSTRAINT_IK: { + const data = new IkConstraintData(name); + nn = input.readInt(true); + for (let ii = 0; ii < nn; ii++) + data.bones.push(bones[input.readInt(true)]); + data.target = bones[input.readInt(true)]; + const flags = input.readByte(); + data.skinRequired = (flags & 1) !== 0; + if ((flags & 2) !== 0) data.scaleYMode = input.readUnsignedByte(); + const setup = data.setupPose; + setup.bendDirection = (flags & 4) !== 0 ? -1 : 1; + setup.compress = (flags & 8) !== 0; + setup.stretch = (flags & 16) !== 0; + if ((flags & 32) !== 0) setup.mix = (flags & 64) !== 0 ? input.readFloat() : 1; + if ((flags & 128) !== 0) setup.softness = input.readFloat() * scale; + constraints.push(data); + break; + } + case CONSTRAINT_TRANSFORM: { + const data = new TransformConstraintData(name); + nn = input.readInt(true); + for (let ii = 0; ii < nn; ii++) + data.bones.push(bones[input.readInt(true)]); + data.source = bones[input.readInt(true)]; + let flags = input.readUnsignedByte(); + data.skinRequired = (flags & 1) !== 0; + data.localSource = (flags & 2) !== 0; + data.localTarget = (flags & 4) !== 0; + data.additive = (flags & 8) !== 0; + data.clamp = (flags & 16) !== 0; + nn = flags >> 5; + for (let ii = 0, tn; ii < nn; ii++) { + let fromScale = 1; + let from; + switch (input.readByte()) { + case 0: + from = new FromRotate(); + break; + case 1: { + fromScale = scale; + from = new FromX(); + break; + } + case 2: { + fromScale = scale; + from = new FromY(); + break; + } + case 3: + from = new FromScaleX(); + break; + case 4: + from = new FromScaleY(); + break; + case 5: + from = new FromShearY(); + break; + default: + from = null; + } + if (!from) continue; + from.offset = input.readFloat() * fromScale; + tn = input.readByte(); + for (let t = 0; t < tn; t++) { + let toScale = 1; + let to; + switch (input.readByte()) { + case 0: + to = new ToRotate(); + break; + case 1: { + toScale = scale; + to = new ToX(); + break; + } + case 2: { + toScale = scale; + to = new ToY(); + break; + } + case 3: + to = new ToScaleX(); + break; + case 4: + to = new ToScaleY(); + break; + case 5: + to = new ToShearY(); + break; + default: + to = null; + } + if (!to) continue; + to.offset = input.readFloat() * toScale; + to.max = input.readFloat() * toScale; + to.scale = input.readFloat() * toScale / fromScale; + from.to[t] = to; + } + data.properties[ii] = from; + } + flags = input.readByte(); + if ((flags & 1) !== 0) data.offsets[TransformConstraintData.ROTATION] = input.readFloat(); + if ((flags & 2) !== 0) data.offsets[TransformConstraintData.X] = input.readFloat() * scale; + if ((flags & 4) !== 0) data.offsets[TransformConstraintData.Y] = input.readFloat() * scale; + if ((flags & 8) !== 0) data.offsets[TransformConstraintData.SCALEX] = input.readFloat(); + if ((flags & 16) !== 0) data.offsets[TransformConstraintData.SCALEY] = input.readFloat(); + if ((flags & 32) !== 0) data.offsets[TransformConstraintData.SHEARY] = input.readFloat(); + flags = input.readByte(); + const setup = data.setupPose; + if ((flags & 1) !== 0) setup.mixRotate = input.readFloat(); + if ((flags & 2) !== 0) setup.mixX = input.readFloat(); + if ((flags & 4) !== 0) setup.mixY = input.readFloat(); + if ((flags & 8) !== 0) setup.mixScaleX = input.readFloat(); + if ((flags & 16) !== 0) setup.mixScaleY = input.readFloat(); + if ((flags & 32) !== 0) setup.mixShearY = input.readFloat(); + constraints.push(data); + break; + } + case CONSTRAINT_PATH: { + const data = new PathConstraintData(name); + nn = input.readInt(true); + for (let ii = 0; ii < nn; ii++) + data.bones.push(bones[input.readInt(true)]); + data.slot = skeletonData.slots[input.readInt(true)]; + const flags = input.readByte(); + data.skinRequired = (flags & 1) !== 0; + data.positionMode = flags >> 1 & 1; + data.spacingMode = flags >> 2 & 3; + data.rotateMode = flags >> 4 & 3; + if ((flags & 128) !== 0) data.offsetRotation = input.readFloat(); + const setup = data.setupPose; + setup.position = input.readFloat(); + if (data.positionMode === 0 /* Fixed */) setup.position *= scale; + setup.spacing = input.readFloat(); + if (data.spacingMode === 0 /* Length */ || data.spacingMode === 1 /* Fixed */) setup.spacing *= scale; + setup.mixRotate = input.readFloat(); + setup.mixX = input.readFloat(); + setup.mixY = input.readFloat(); + constraints.push(data); + break; + } + case CONSTRAINT_PHYSICS: { + const data = new PhysicsConstraintData(name); + data.bone = bones[input.readInt(true)]; + let flags = input.readByte(); + data.skinRequired = (flags & 1) !== 0; + if ((flags & 2) !== 0) data.x = input.readFloat(); + if ((flags & 4) !== 0) data.y = input.readFloat(); + if ((flags & 8) !== 0) data.rotate = input.readFloat(); + if ((flags & 16) !== 0) { + let scaleX = input.readFloat(); + if (scaleX < -2) { + data.scaleYMode = 2 /* Volume */; + scaleX = -2 - scaleX; + } else if (scaleX < 0) { + data.scaleYMode = 1 /* Uniform */; + scaleX = -1 - scaleX; + } + data.scaleX = scaleX; + } + if ((flags & 32) !== 0) data.shearX = input.readFloat(); + data.limit = ((flags & 64) !== 0 ? input.readFloat() : 5e3) * scale; + data.step = 1 / input.readUnsignedByte(); + const setup = data.setupPose; + setup.inertia = input.readFloat(); + setup.strength = input.readFloat(); + setup.damping = input.readFloat(); + setup.massInverse = (flags & 128) !== 0 ? input.readFloat() : 1; + setup.wind = input.readFloat(); + setup.gravity = input.readFloat(); + flags = input.readByte(); + if ((flags & 1) !== 0) data.inertiaGlobal = true; + if ((flags & 2) !== 0) data.strengthGlobal = true; + if ((flags & 4) !== 0) data.dampingGlobal = true; + if ((flags & 8) !== 0) data.massGlobal = true; + if ((flags & 16) !== 0) data.windGlobal = true; + if ((flags & 32) !== 0) data.gravityGlobal = true; + if ((flags & 64) !== 0) data.mixGlobal = true; + setup.mix = (flags & 128) !== 0 ? input.readFloat() : 1; + constraints.push(data); + break; + } + case CONSTRAINT_SLIDER: { + const data = new SliderData(name); + const flags = input.readByte(); + data.skinRequired = (flags & 1) !== 0; + data.loop = (flags & 2) !== 0; + data.additive = (flags & 4) !== 0; + if ((flags & 8) !== 0) { + const value = input.readFloat(); + if (nonessential && (flags & 64) !== 0) + data.max = value; + else + data.setupPose.time = value; + } + if ((flags & 16) !== 0) data.setupPose.mix = (flags & 32) !== 0 ? input.readFloat() : 1; + if ((flags & 64) !== 0) { + data.local = (flags & 128) !== 0; + data.bone = bones[input.readInt(true)]; + const offset = input.readFloat(); + let propertyScale = 1; + switch (input.readByte()) { + case 0: + data.property = new FromRotate(); + break; + case 1: { + propertyScale = scale; + data.property = new FromX(); + break; + } + case 2: { + propertyScale = scale; + data.property = new FromY(); + break; + } + case 3: + data.property = new FromScaleX(); + break; + case 4: + data.property = new FromScaleY(); + break; + case 5: + data.property = new FromShearY(); + break; + default: + continue; + } + ; + data.property.offset = offset * propertyScale; + data.offset = input.readFloat(); + data.scale = input.readFloat() / propertyScale; + } + constraints.push(data); + break; + } + } + } + const defaultSkin = this.readSkin(input, skeletonData, true, nonessential); + if (defaultSkin) { + skeletonData.defaultSkin = defaultSkin; + skeletonData.skins.push(defaultSkin); + } + { + let i = skeletonData.skins.length; + Utils.setArraySize(skeletonData.skins, n = i + input.readInt(true)); + for (; i < n; i++) { + const skin = this.readSkin(input, skeletonData, false, nonessential); + if (!skin) throw new Error("readSkin() should not have returned null."); + skeletonData.skins[i] = skin; + } + } + n = this.linkedMeshes.length; + for (let i = 0; i < n; i++) { + const linkedMesh = this.linkedMeshes[i]; + const skin = skeletonData.skins[linkedMesh.skinIndex]; + if (!linkedMesh.source) throw new Error("Linked mesh parent must not be null"); + const source = skin.getAttachment(linkedMesh.sourceIndex, linkedMesh.source); + if (!source) throw new Error(`Source mesh not found: ${linkedMesh.source}`); + linkedMesh.mesh.timelineAttachment = linkedMesh.inheritTimelines ? source : linkedMesh.mesh; + linkedMesh.mesh.setSourceMesh(source); + linkedMesh.mesh.updateSequence(); + } + this.linkedMeshes.length = 0; + n = input.readInt(true); + for (let i = 0; i < n; i++) { + const eventName = input.readString(); + if (!eventName) throw new Error("Event data name must not be null"); + const data = new EventData(eventName); + const setup = data.setupPose; + setup.intValue = input.readInt(false); + setup.floatValue = input.readFloat(); + setup.stringValue = input.readString(); + data._audioPath = input.readString(); + if (data.audioPath) { + setup.volume = input.readFloat(); + setup.balance = input.readFloat(); + } + skeletonData.events.push(data); + } + const animations = skeletonData.animations; + n = input.readInt(true); + for (let i = 0; i < n; i++) { + const animationName = input.readString(); + if (!animationName) throw new Error("Animation name must not be null."); + animations.push(this.readAnimation(input, animationName, skeletonData, nonessential)); + } + for (let i = 0; i < constraintCount; i++) { + const constraint = constraints[i]; + if (constraint instanceof SliderData) constraint.animation = animations[input.readInt(true)]; + } + return skeletonData; + } + readSkin(input, skeletonData, defaultSkin, nonessential) { + let skin = null; + let slotCount = 0; + if (defaultSkin) { + slotCount = input.readInt(true); + if (slotCount === 0) return null; + skin = new Skin("default"); + } else { + const skinName = input.readString(); + if (!skinName) throw new Error("Skin name must not be null."); + skin = new Skin(skinName); + if (nonessential) Color.rgba8888ToColor(skin.color, input.readInt32()); + let n = input.readInt(true); + let from = skeletonData.bones, to = skin.bones; + for (let i = 0; i < n; i++) + to[i] = from[input.readInt(true)]; + n = input.readInt(true); + from = skeletonData.constraints; + to = skin.constraints; + for (let i = 0; i < n; i++) + to[i] = from[input.readInt(true)]; + slotCount = input.readInt(true); + } + for (let i = 0; i < slotCount; i++) { + const slotIndex = input.readInt(true); + for (let ii = 0, nn = input.readInt(true); ii < nn; ii++) { + const placeholder = input.readStringRef(); + if (!placeholder) + throw new Error("Attachment name must not be null"); + const attachment = this.readAttachment(input, skeletonData, skin, slotIndex, placeholder, nonessential); + if (attachment) skin.setAttachment(slotIndex, placeholder, attachment); + } + } + return skin; + } + readAttachment(input, skeletonData, skin, slotIndex, placeholder, nonessential) { + const scale = this.scale; + const flags = input.readByte(); + const name = (flags & 8) !== 0 ? input.readStringRef() : placeholder; + if (!name) throw new Error("Attachment name must not be null"); + switch (flags & 7) { + // BUG? + case 0 /* Region */: { + let path = (flags & 16) !== 0 ? input.readStringRef() : null; + const color = (flags & 32) !== 0 ? input.readInt32() : 4294967295; + const sequence = this.readSequence(input, (flags & 64) !== 0); + const rotation = (flags & 128) !== 0 ? input.readFloat() : 0; + const x = input.readFloat(); + const y = input.readFloat(); + const scaleX = input.readFloat(); + const scaleY = input.readFloat(); + const width = input.readFloat(); + const height = input.readFloat(); + if (!path) path = name; + const region = this.attachmentLoader.newRegionAttachment(skin, placeholder, name, path, sequence); + if (!region) return null; + region.path = path; + region.x = x * scale; + region.y = y * scale; + region.scaleX = scaleX; + region.scaleY = scaleY; + region.rotation = rotation; + region.width = width * scale; + region.height = height * scale; + Color.rgba8888ToColor(region.color, color); + region.updateSequence(); + return region; + } + case 1 /* BoundingBox */: { + const vertices = this.readVertices(input, (flags & 16) !== 0); + const color = nonessential ? input.readInt32() : 0; + const box = this.attachmentLoader.newBoundingBoxAttachment(skin, placeholder, name); + if (!box) return null; + box.worldVerticesLength = vertices.length; + box.vertices = vertices.vertices; + box.bones = vertices.bones; + if (nonessential) Color.rgba8888ToColor(box.color, color); + return box; + } + case 2 /* Mesh */: { + let path = (flags & 16) !== 0 ? input.readStringRef() : name; + const color = (flags & 32) !== 0 ? input.readInt32() : 4294967295; + const sequence = this.readSequence(input, (flags & 64) !== 0); + const hullLength = input.readInt(true); + const vertices = this.readVertices(input, (flags & 128) !== 0); + const uvs = this.readFloatArray(input, vertices.length, 1); + const triangles = this.readShortArray(input, (vertices.length - hullLength - 2) * 3); + const slotCount = input.readInt(true); + let timelineSlots = null; + if (slotCount > 0) { + timelineSlots = []; + for (let i = 0; i < slotCount; i++) + timelineSlots[i] = input.readInt(true); + } + let edges = []; + let width = 0, height = 0; + if (nonessential) { + edges = this.readShortArray(input, input.readInt(true)); + width = input.readFloat(); + height = input.readFloat(); + } + if (!path) path = name; + const mesh = this.attachmentLoader.newMeshAttachment(skin, placeholder, name, path, sequence); + if (!mesh) return null; + mesh.path = path; + Color.rgba8888ToColor(mesh.color, color); + mesh.hullLength = hullLength << 1; + mesh.bones = vertices.bones; + mesh.vertices = vertices.vertices; + mesh.worldVerticesLength = vertices.length; + mesh.regionUVs = uvs; + mesh.triangles = triangles; + if (timelineSlots) mesh.timelineSlots = timelineSlots; + if (nonessential) { + mesh.edges = edges; + mesh.width = width * scale; + mesh.height = height * scale; + } + mesh.updateSequence(); + return mesh; + } + case 3 /* LinkedMesh */: { + const path = (flags & 16) !== 0 ? input.readStringRef() : name; + if (path == null) throw new Error("Path of linked mesh must not be null"); + const color = (flags & 32) !== 0 ? input.readInt32() : 4294967295; + const sequence = this.readSequence(input, (flags & 64) !== 0); + const inheritTimelines = (flags & 128) !== 0; + const sourceIndex = input.readInt(true); + const skinIndex = input.readInt(true); + const source = input.readStringRef(); + let width = 0, height = 0; + if (nonessential) { + width = input.readFloat(); + height = input.readFloat(); + } + const mesh = this.attachmentLoader.newMeshAttachment(skin, placeholder, name, path, sequence); + if (!mesh) return null; + mesh.path = path; + Color.rgba8888ToColor(mesh.color, color); + if (nonessential) { + mesh.width = width * scale; + mesh.height = height * scale; + } + this.linkedMeshes.push(new LinkedMesh(mesh, skinIndex, slotIndex, sourceIndex, source, inheritTimelines)); + return mesh; + } + case 4 /* Path */: { + const closed = (flags & 16) !== 0; + const constantSpeed = (flags & 32) !== 0; + const vertices = this.readVertices(input, (flags & 64) !== 0); + const lengths = this.readFloatArray(input, vertices.length / 6, scale); + const color = nonessential ? input.readInt32() : 0; + const path = this.attachmentLoader.newPathAttachment(skin, placeholder, name); + if (!path) return null; + path.closed = closed; + path.constantSpeed = constantSpeed; + path.worldVerticesLength = vertices.length; + path.vertices = vertices.vertices; + path.bones = vertices.bones; + path.lengths = lengths; + if (nonessential) Color.rgba8888ToColor(path.color, color); + return path; + } + case 5 /* Point */: { + const rotation = input.readFloat(); + const x = input.readFloat(); + const y = input.readFloat(); + const color = nonessential ? input.readInt32() : 0; + const point = this.attachmentLoader.newPointAttachment(skin, placeholder, name); + if (!point) return null; + point.x = x * scale; + point.y = y * scale; + point.rotation = rotation; + if (nonessential) Color.rgba8888ToColor(point.color, color); + return point; + } + case 6 /* Clipping */: { + const endSlotIndex = input.readInt(true); + const vertices = this.readVertices(input, (flags & 16) !== 0); + const color = nonessential ? input.readInt32() : 0; + const clip = this.attachmentLoader.newClippingAttachment(skin, placeholder, name); + if (!clip) return null; + clip.endSlot = skeletonData.slots[endSlotIndex]; + clip.convex = (flags & 32) !== 0; + clip.inverse = (flags & 64) !== 0; + clip.worldVerticesLength = vertices.length; + clip.vertices = vertices.vertices; + clip.bones = vertices.bones; + if (nonessential) Color.rgba8888ToColor(clip.color, color); + return clip; + } + } + } + readSequence(input, hasPathSuffix) { + if (!hasPathSuffix) return new Sequence(1, false); + const sequence = new Sequence(input.readInt(true), true); + sequence.start = input.readInt(true); + sequence.digits = input.readInt(true); + sequence.setupIndex = input.readInt(true); + return sequence; + } + readVertices(input, weighted) { + const scale = this.scale; + const vertexCount = input.readInt(true); + const length = vertexCount << 1; + if (!weighted) + return new Vertices(null, this.readFloatArray(input, length, scale), length); + const n = input.readInt(true); + const bones = []; + const weights = []; + for (let b = 0, w = 0; b < n; ) { + const boneCount = input.readInt(true); + bones[b++] = boneCount; + for (let ii = 0; ii < boneCount; ii++, w += 3) { + bones[b++] = input.readInt(true); + weights[w] = input.readFloat() * scale; + weights[w + 1] = input.readFloat() * scale; + weights[w + 2] = input.readFloat(); + } + } + return new Vertices(bones, Utils.toFloatArray(weights), length); + } + readFloatArray(input, n, scale) { + const array = []; + if (scale === 1) { + for (let i = 0; i < n; i++) + array[i] = input.readFloat(); + } else { + for (let i = 0; i < n; i++) + array[i] = input.readFloat() * scale; + } + return array; + } + readShortArray(input, n) { + const array = []; + for (let i = 0; i < n; i++) + array[i] = input.readInt(true); + return array; + } + readAnimation(input, name, skeletonData, nonessential) { + input.readInt(true); + const timelines = []; + const scale = this.scale; + for (let i = 0, n = input.readInt(true); i < n; i++) { + const slotIndex = input.readInt(true); + for (let ii = 0, nn = input.readInt(true); ii < nn; ii++) { + const timelineType = input.readByte(); + const frameCount = input.readInt(true); + const frameLast = frameCount - 1; + switch (timelineType) { + case SLOT_ATTACHMENT: { + const timeline = new AttachmentTimeline(frameCount, slotIndex); + for (let frame = 0; frame < frameCount; frame++) + timeline.setFrame(frame, input.readFloat(), input.readStringRef()); + timelines.push(timeline); + break; + } + case SLOT_RGBA: { + const bezierCount = input.readInt(true); + const timeline = new RGBATimeline(frameCount, bezierCount, slotIndex); + let time = input.readFloat(); + let r = input.readUnsignedByte() / 255; + let g = input.readUnsignedByte() / 255; + let b = input.readUnsignedByte() / 255; + let a = input.readUnsignedByte() / 255; + for (let frame = 0, bezier = 0; ; frame++) { + timeline.setFrame(frame, time, r, g, b, a); + if (frame === frameLast) break; + const time2 = input.readFloat(); + const r2 = input.readUnsignedByte() / 255; + const g2 = input.readUnsignedByte() / 255; + const b2 = input.readUnsignedByte() / 255; + const a2 = input.readUnsignedByte() / 255; + switch (input.readByte()) { + case CURVE_STEPPED: + timeline.setStepped(frame); + break; + case CURVE_BEZIER: + setBezier(input, timeline, bezier++, frame, 0, time, time2, r, r2, 1); + setBezier(input, timeline, bezier++, frame, 1, time, time2, g, g2, 1); + setBezier(input, timeline, bezier++, frame, 2, time, time2, b, b2, 1); + setBezier(input, timeline, bezier++, frame, 3, time, time2, a, a2, 1); + } + time = time2; + r = r2; + g = g2; + b = b2; + a = a2; + } + timelines.push(timeline); + break; + } + case SLOT_RGB: { + const bezierCount = input.readInt(true); + const timeline = new RGBTimeline(frameCount, bezierCount, slotIndex); + let time = input.readFloat(); + let r = input.readUnsignedByte() / 255; + let g = input.readUnsignedByte() / 255; + let b = input.readUnsignedByte() / 255; + for (let frame = 0, bezier = 0; ; frame++) { + timeline.setFrame(frame, time, r, g, b); + if (frame === frameLast) break; + const time2 = input.readFloat(); + const r2 = input.readUnsignedByte() / 255; + const g2 = input.readUnsignedByte() / 255; + const b2 = input.readUnsignedByte() / 255; + switch (input.readByte()) { + case CURVE_STEPPED: + timeline.setStepped(frame); + break; + case CURVE_BEZIER: + setBezier(input, timeline, bezier++, frame, 0, time, time2, r, r2, 1); + setBezier(input, timeline, bezier++, frame, 1, time, time2, g, g2, 1); + setBezier(input, timeline, bezier++, frame, 2, time, time2, b, b2, 1); + } + time = time2; + r = r2; + g = g2; + b = b2; + } + timelines.push(timeline); + break; + } + case SLOT_RGBA2: { + const bezierCount = input.readInt(true); + const timeline = new RGBA2Timeline(frameCount, bezierCount, slotIndex); + let time = input.readFloat(); + let r = input.readUnsignedByte() / 255; + let g = input.readUnsignedByte() / 255; + let b = input.readUnsignedByte() / 255; + let a = input.readUnsignedByte() / 255; + let r2 = input.readUnsignedByte() / 255; + let g2 = input.readUnsignedByte() / 255; + let b2 = input.readUnsignedByte() / 255; + for (let frame = 0, bezier = 0; ; frame++) { + timeline.setFrame(frame, time, r, g, b, a, r2, g2, b2); + if (frame === frameLast) break; + const time2 = input.readFloat(); + const nr = input.readUnsignedByte() / 255; + const ng = input.readUnsignedByte() / 255; + const nb = input.readUnsignedByte() / 255; + const na = input.readUnsignedByte() / 255; + const nr2 = input.readUnsignedByte() / 255; + const ng2 = input.readUnsignedByte() / 255; + const nb2 = input.readUnsignedByte() / 255; + switch (input.readByte()) { + case CURVE_STEPPED: + timeline.setStepped(frame); + break; + case CURVE_BEZIER: + setBezier(input, timeline, bezier++, frame, 0, time, time2, r, nr, 1); + setBezier(input, timeline, bezier++, frame, 1, time, time2, g, ng, 1); + setBezier(input, timeline, bezier++, frame, 2, time, time2, b, nb, 1); + setBezier(input, timeline, bezier++, frame, 3, time, time2, a, na, 1); + setBezier(input, timeline, bezier++, frame, 4, time, time2, r2, nr2, 1); + setBezier(input, timeline, bezier++, frame, 5, time, time2, g2, ng2, 1); + setBezier(input, timeline, bezier++, frame, 6, time, time2, b2, nb2, 1); + } + time = time2; + r = nr; + g = ng; + b = nb; + a = na; + r2 = nr2; + g2 = ng2; + b2 = nb2; + } + timelines.push(timeline); + break; + } + case SLOT_RGB2: { + const bezierCount = input.readInt(true); + const timeline = new RGB2Timeline(frameCount, bezierCount, slotIndex); + let time = input.readFloat(); + let r = input.readUnsignedByte() / 255; + let g = input.readUnsignedByte() / 255; + let b = input.readUnsignedByte() / 255; + let r2 = input.readUnsignedByte() / 255; + let g2 = input.readUnsignedByte() / 255; + let b2 = input.readUnsignedByte() / 255; + for (let frame = 0, bezier = 0; ; frame++) { + timeline.setFrame(frame, time, r, g, b, r2, g2, b2); + if (frame === frameLast) break; + const time2 = input.readFloat(); + const nr = input.readUnsignedByte() / 255; + const ng = input.readUnsignedByte() / 255; + const nb = input.readUnsignedByte() / 255; + const nr2 = input.readUnsignedByte() / 255; + const ng2 = input.readUnsignedByte() / 255; + const nb2 = input.readUnsignedByte() / 255; + switch (input.readByte()) { + case CURVE_STEPPED: + timeline.setStepped(frame); + break; + case CURVE_BEZIER: + setBezier(input, timeline, bezier++, frame, 0, time, time2, r, nr, 1); + setBezier(input, timeline, bezier++, frame, 1, time, time2, g, ng, 1); + setBezier(input, timeline, bezier++, frame, 2, time, time2, b, nb, 1); + setBezier(input, timeline, bezier++, frame, 3, time, time2, r2, nr2, 1); + setBezier(input, timeline, bezier++, frame, 4, time, time2, g2, ng2, 1); + setBezier(input, timeline, bezier++, frame, 5, time, time2, b2, nb2, 1); + } + time = time2; + r = nr; + g = ng; + b = nb; + r2 = nr2; + g2 = ng2; + b2 = nb2; + } + timelines.push(timeline); + break; + } + case SLOT_ALPHA: { + const timeline = new AlphaTimeline(frameCount, input.readInt(true), slotIndex); + let time = input.readFloat(), a = input.readUnsignedByte() / 255; + for (let frame = 0, bezier = 0; ; frame++) { + timeline.setFrame(frame, time, a); + if (frame === frameLast) break; + const time2 = input.readFloat(); + const a2 = input.readUnsignedByte() / 255; + switch (input.readByte()) { + case CURVE_STEPPED: + timeline.setStepped(frame); + break; + case CURVE_BEZIER: + setBezier(input, timeline, bezier++, frame, 0, time, time2, a, a2, 1); + } + time = time2; + a = a2; + } + timelines.push(timeline); + } + } + } + } + for (let i = 0, n = input.readInt(true); i < n; i++) { + const boneIndex = input.readInt(true); + for (let ii = 0, nn = input.readInt(true); ii < nn; ii++) { + const type = input.readByte(), frameCount = input.readInt(true); + if (type === BONE_INHERIT) { + const timeline = new InheritTimeline(frameCount, boneIndex); + for (let frame = 0; frame < frameCount; frame++) { + timeline.setFrame(frame, input.readFloat(), input.readByte()); + } + timelines.push(timeline); + continue; + } + const bezierCount = input.readInt(true); + switch (type) { + case BONE_ROTATE: + readTimeline(input, timelines, new RotateTimeline(frameCount, bezierCount, boneIndex), 1); + break; + case BONE_TRANSLATE: + readTimeline(input, timelines, new TranslateTimeline(frameCount, bezierCount, boneIndex), scale); + break; + case BONE_TRANSLATEX: + readTimeline(input, timelines, new TranslateXTimeline(frameCount, bezierCount, boneIndex), scale); + break; + case BONE_TRANSLATEY: + readTimeline(input, timelines, new TranslateYTimeline(frameCount, bezierCount, boneIndex), scale); + break; + case BONE_SCALE: + readTimeline(input, timelines, new ScaleTimeline(frameCount, bezierCount, boneIndex), 1); + break; + case BONE_SCALEX: + readTimeline(input, timelines, new ScaleXTimeline(frameCount, bezierCount, boneIndex), 1); + break; + case BONE_SCALEY: + readTimeline(input, timelines, new ScaleYTimeline(frameCount, bezierCount, boneIndex), 1); + break; + case BONE_SHEAR: + readTimeline(input, timelines, new ShearTimeline(frameCount, bezierCount, boneIndex), 1); + break; + case BONE_SHEARX: + readTimeline(input, timelines, new ShearXTimeline(frameCount, bezierCount, boneIndex), 1); + break; + case BONE_SHEARY: + readTimeline(input, timelines, new ShearYTimeline(frameCount, bezierCount, boneIndex), 1); + break; + } + } + } + for (let i = 0, n = input.readInt(true); i < n; i++) { + const index = input.readInt(true), frameCount = input.readInt(true), frameLast = frameCount - 1; + const timeline = new IkConstraintTimeline(frameCount, input.readInt(true), index); + let flags = input.readByte(); + let time = input.readFloat(), mix = (flags & 1) !== 0 ? (flags & 2) !== 0 ? input.readFloat() : 1 : 0; + let softness = (flags & 4) !== 0 ? input.readFloat() * scale : 0; + for (let frame = 0, bezier = 0; ; frame++) { + timeline.setFrame(frame, time, mix, softness, (flags & 8) !== 0 ? 1 : -1, (flags & 16) !== 0, (flags & 32) !== 0); + if (frame === frameLast) break; + flags = input.readByte(); + const time2 = input.readFloat(), mix2 = (flags & 1) !== 0 ? (flags & 2) !== 0 ? input.readFloat() : 1 : 0; + const softness2 = (flags & 4) !== 0 ? input.readFloat() * scale : 0; + if ((flags & 64) !== 0) { + timeline.setStepped(frame); + } else if ((flags & 128) !== 0) { + setBezier(input, timeline, bezier++, frame, 0, time, time2, mix, mix2, 1); + setBezier(input, timeline, bezier++, frame, 1, time, time2, softness, softness2, scale); + } + time = time2; + mix = mix2; + softness = softness2; + } + timelines.push(timeline); + } + for (let i = 0, n = input.readInt(true); i < n; i++) { + const index = input.readInt(true), frameCount = input.readInt(true), frameLast = frameCount - 1; + const timeline = new TransformConstraintTimeline(frameCount, input.readInt(true), index); + let time = input.readFloat(), mixRotate = input.readFloat(), mixX = input.readFloat(), mixY = input.readFloat(), mixScaleX = input.readFloat(), mixScaleY = input.readFloat(), mixShearY = input.readFloat(); + for (let frame = 0, bezier = 0; ; frame++) { + timeline.setFrame(frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY); + if (frame === frameLast) break; + const time2 = input.readFloat(), mixRotate2 = input.readFloat(), mixX2 = input.readFloat(), mixY2 = input.readFloat(), mixScaleX2 = input.readFloat(), mixScaleY2 = input.readFloat(), mixShearY2 = input.readFloat(); + switch (input.readByte()) { + case CURVE_STEPPED: + timeline.setStepped(frame); + break; + case CURVE_BEZIER: + setBezier(input, timeline, bezier++, frame, 0, time, time2, mixRotate, mixRotate2, 1); + setBezier(input, timeline, bezier++, frame, 1, time, time2, mixX, mixX2, 1); + setBezier(input, timeline, bezier++, frame, 2, time, time2, mixY, mixY2, 1); + setBezier(input, timeline, bezier++, frame, 3, time, time2, mixScaleX, mixScaleX2, 1); + setBezier(input, timeline, bezier++, frame, 4, time, time2, mixScaleY, mixScaleY2, 1); + setBezier(input, timeline, bezier++, frame, 5, time, time2, mixShearY, mixShearY2, 1); + } + time = time2; + mixRotate = mixRotate2; + mixX = mixX2; + mixY = mixY2; + mixScaleX = mixScaleX2; + mixScaleY = mixScaleY2; + mixShearY = mixShearY2; + } + timelines.push(timeline); + } + for (let i = 0, n = input.readInt(true); i < n; i++) { + const index = input.readInt(true); + const data = skeletonData.constraints[index]; + for (let ii = 0, nn = input.readInt(true); ii < nn; ii++) { + const type = input.readByte(), frameCount = input.readInt(true), bezierCount = input.readInt(true); + switch (type) { + case PATH_POSITION: + readTimeline( + input, + timelines, + new PathConstraintPositionTimeline(frameCount, bezierCount, index), + data.positionMode === 0 /* Fixed */ ? scale : 1 + ); + break; + case PATH_SPACING: + readTimeline( + input, + timelines, + new PathConstraintSpacingTimeline(frameCount, bezierCount, index), + data.spacingMode === 0 /* Length */ || data.spacingMode === 1 /* Fixed */ ? scale : 1 + ); + break; + case PATH_MIX: { + const timeline = new PathConstraintMixTimeline(frameCount, bezierCount, index); + let time = input.readFloat(), mixRotate = input.readFloat(), mixX = input.readFloat(), mixY = input.readFloat(); + for (let frame = 0, bezier = 0, frameLast = timeline.getFrameCount() - 1; ; frame++) { + timeline.setFrame(frame, time, mixRotate, mixX, mixY); + if (frame === frameLast) break; + const time2 = input.readFloat(), mixRotate2 = input.readFloat(), mixX2 = input.readFloat(), mixY2 = input.readFloat(); + switch (input.readByte()) { + case CURVE_STEPPED: + timeline.setStepped(frame); + break; + case CURVE_BEZIER: + setBezier(input, timeline, bezier++, frame, 0, time, time2, mixRotate, mixRotate2, 1); + setBezier(input, timeline, bezier++, frame, 1, time, time2, mixX, mixX2, 1); + setBezier(input, timeline, bezier++, frame, 2, time, time2, mixY, mixY2, 1); + } + time = time2; + mixRotate = mixRotate2; + mixX = mixX2; + mixY = mixY2; + } + timelines.push(timeline); + } + } + } + } + for (let i = 0, n = input.readInt(true); i < n; i++) { + const index = input.readInt(true) - 1; + for (let ii = 0, nn = input.readInt(true); ii < nn; ii++) { + const type = input.readByte(), frameCount = input.readInt(true); + if (type === PHYSICS_RESET) { + const timeline = new PhysicsConstraintResetTimeline(frameCount, index); + for (let frame = 0; frame < frameCount; frame++) + timeline.setFrame(frame, input.readFloat()); + timelines.push(timeline); + continue; + } + const bezierCount = input.readInt(true); + switch (type) { + case PHYSICS_INERTIA: + readTimeline(input, timelines, new PhysicsConstraintInertiaTimeline(frameCount, bezierCount, index), 1); + break; + case PHYSICS_STRENGTH: + readTimeline(input, timelines, new PhysicsConstraintStrengthTimeline(frameCount, bezierCount, index), 1); + break; + case PHYSICS_DAMPING: + readTimeline(input, timelines, new PhysicsConstraintDampingTimeline(frameCount, bezierCount, index), 1); + break; + case PHYSICS_MASS: + readTimeline(input, timelines, new PhysicsConstraintMassTimeline(frameCount, bezierCount, index), 1); + break; + case PHYSICS_WIND: + readTimeline(input, timelines, new PhysicsConstraintWindTimeline(frameCount, bezierCount, index), 1); + break; + case PHYSICS_GRAVITY: + readTimeline(input, timelines, new PhysicsConstraintGravityTimeline(frameCount, bezierCount, index), 1); + break; + case PHYSICS_MIX: + readTimeline(input, timelines, new PhysicsConstraintMixTimeline(frameCount, bezierCount, index), 1); + break; + default: + throw new Error("Unknown physics timeline type."); + } + } + } + for (let i = 0, n = input.readInt(true); i < n; i++) { + const index = input.readInt(true); + for (let ii = 0, nn = input.readInt(true); ii < nn; ii++) { + const type = input.readByte(), frameCount = input.readInt(true), bezierCount = input.readInt(true); + switch (type) { + case SLIDER_TIME: + readTimeline(input, timelines, new SliderTimeline(frameCount, bezierCount, index), 1); + break; + case SLIDER_MIX: + readTimeline(input, timelines, new SliderMixTimeline(frameCount, bezierCount, index), 1); + break; + default: + throw new Error(`Uknown slider type: ${type}`); + } + } + } + for (let i = 0, n = input.readInt(true); i < n; i++) { + const skin = skeletonData.skins[input.readInt(true)]; + for (let ii = 0, nn = input.readInt(true); ii < nn; ii++) { + const slotIndex = input.readInt(true); + for (let iii = 0, nnn = input.readInt(true); iii < nnn; iii++) { + const attachmentName = input.readStringRef(); + if (!attachmentName) throw new Error("attachmentName must not be null."); + const attachment = skin.getAttachment(slotIndex, attachmentName); + const timelineType = input.readByte(); + const frameCount = input.readInt(true); + const frameLast = frameCount - 1; + switch (timelineType) { + case ATTACHMENT_DEFORM: { + const vertexAttachment = attachment; + const weighted = vertexAttachment.bones; + const vertices = vertexAttachment.vertices; + const deformLength = weighted ? vertices.length / 3 * 2 : vertices.length; + const bezierCount = input.readInt(true); + const timeline = new DeformTimeline(frameCount, bezierCount, slotIndex, vertexAttachment); + let time = input.readFloat(); + for (let frame = 0, bezier = 0; ; frame++) { + let deform; + let end = input.readInt(true); + if (end === 0) + deform = weighted ? Utils.newFloatArray(deformLength) : vertices; + else { + deform = Utils.newFloatArray(deformLength); + const start = input.readInt(true); + end += start; + if (scale === 1) { + for (let v = start; v < end; v++) + deform[v] = input.readFloat(); + } else { + for (let v = start; v < end; v++) + deform[v] = input.readFloat() * scale; + } + if (!weighted) { + for (let v = 0, vn = deform.length; v < vn; v++) + deform[v] += vertices[v]; + } + } + timeline.setFrame(frame, time, deform); + if (frame === frameLast) break; + const time2 = input.readFloat(); + switch (input.readByte()) { + case CURVE_STEPPED: + timeline.setStepped(frame); + break; + case CURVE_BEZIER: + setBezier(input, timeline, bezier++, frame, 0, time, time2, 0, 1, 1); + } + time = time2; + } + timelines.push(timeline); + break; + } + case ATTACHMENT_SEQUENCE: { + const timeline = new SequenceTimeline(frameCount, slotIndex, attachment); + for (let frame = 0; frame < frameCount; frame++) { + const time = input.readFloat(); + const modeAndIndex = input.readInt32(); + timeline.setFrame( + frame, + time, + SequenceModeValues[modeAndIndex & 15], + modeAndIndex >> 4, + input.readFloat() + ); + } + timelines.push(timeline); + break; + } + } + } + } + } + const slotCount = skeletonData.slots.length; + const drawOrderCount = input.readInt(true); + if (drawOrderCount > 0) { + const timeline = new DrawOrderTimeline(drawOrderCount); + for (let i = 0; i < drawOrderCount; i++) + timeline.setFrame(i, input.readFloat(), readDrawOrder(input, slotCount)); + timelines.push(timeline); + } + const folderCount = input.readInt(true); + for (let i = 0; i < folderCount; i++) { + const folderSlotCount = input.readInt(true); + const folderSlots = new Array(folderSlotCount); + for (let ii = 0; ii < folderSlotCount; ii++) + folderSlots[ii] = input.readInt(true); + const keyCount = input.readInt(true); + const timeline = new DrawOrderFolderTimeline(keyCount, folderSlots, slotCount); + for (let ii = 0; ii < keyCount; ii++) + timeline.setFrame(ii, input.readFloat(), readDrawOrder(input, folderSlotCount)); + timelines.push(timeline); + } + const eventCount = input.readInt(true); + if (eventCount > 0) { + const timeline = new EventTimeline(eventCount); + for (let i = 0; i < eventCount; i++) { + const time = input.readFloat(); + const eventData = skeletonData.events[input.readInt(true)]; + const event = new Event(time, eventData); + event.intValue = input.readInt(false); + event.floatValue = input.readFloat(); + event.stringValue = input.readString(); + if (event.stringValue == null) event.stringValue = eventData.setupPose.stringValue; + if (event.data.audioPath) { + event.volume = input.readFloat(); + event.balance = input.readFloat(); + } + timeline.setFrame(i, event); + } + timelines.push(timeline); + } + let duration = 0; + for (let i = 0, n = timelines.length; i < n; i++) + duration = Math.max(duration, timelines[i].getDuration()); + const animation = new Animation(name, timelines, duration); + if (nonessential) Color.rgba8888ToColor(animation.color, input.readInt32()); + return animation; + } + }; + var BinaryInput = class { + constructor(data, strings = [], index = 0, buffer = new DataView(data instanceof ArrayBuffer ? data : data.buffer)) { + this.strings = strings; + this.index = index; + this.buffer = buffer; + } + readByte() { + return this.buffer.getInt8(this.index++); + } + readUnsignedByte() { + return this.buffer.getUint8(this.index++); + } + readShort() { + const value = this.buffer.getInt16(this.index); + this.index += 2; + return value; + } + readInt32() { + const value = this.buffer.getInt32(this.index); + this.index += 4; + return value; + } + readInt(optimizePositive) { + let b = this.readByte(); + let result = b & 127; + if ((b & 128) !== 0) { + b = this.readByte(); + result |= (b & 127) << 7; + if ((b & 128) !== 0) { + b = this.readByte(); + result |= (b & 127) << 14; + if ((b & 128) !== 0) { + b = this.readByte(); + result |= (b & 127) << 21; + if ((b & 128) !== 0) { + b = this.readByte(); + result |= (b & 127) << 28; + } + } + } + } + return optimizePositive ? result : result >>> 1 ^ -(result & 1); + } + readStringRef() { + const index = this.readInt(true); + return index === 0 ? null : this.strings[index - 1]; + } + readString() { + let byteCount = this.readInt(true); + switch (byteCount) { + case 0: + return null; + case 1: + return ""; + } + byteCount--; + let chars = ""; + for (let i = 0; i < byteCount; ) { + const b = this.readUnsignedByte(); + switch (b >> 4) { + case 12: + case 13: + chars += String.fromCharCode((b & 31) << 6 | this.readByte() & 63); + i += 2; + break; + case 14: + chars += String.fromCharCode((b & 15) << 12 | (this.readByte() & 63) << 6 | this.readByte() & 63); + i += 3; + break; + default: + chars += String.fromCharCode(b); + i++; + } + } + return chars; + } + readFloat() { + const value = this.buffer.getFloat32(this.index); + this.index += 4; + return value; + } + readBoolean() { + return this.readByte() !== 0; + } + }; + var LinkedMesh = class { + source; + skinIndex; + slotIndex; + sourceIndex; + mesh; + inheritTimelines; + constructor(mesh, skinIndex, slotIndex, sourceIndex, source, inheritTimelines) { + this.mesh = mesh; + this.skinIndex = skinIndex; + this.slotIndex = slotIndex; + this.sourceIndex = sourceIndex; + this.source = source; + this.inheritTimelines = inheritTimelines; + } + }; + var Vertices = class { + constructor(bones = null, vertices, length = 0) { + this.bones = bones; + this.vertices = vertices; + this.length = length; + } + }; + function readTimeline(input, timelines, timeline, scale) { + if (timeline instanceof CurveTimeline1) + readTimeline1(input, timelines, timeline, scale); + else + readTimeline2(input, timelines, timeline, scale); + } + function readTimeline1(input, timelines, timeline, scale) { + let time = input.readFloat(), value = input.readFloat() * scale; + for (let frame = 0, bezier = 0, frameLast = timeline.getFrameCount() - 1; ; frame++) { + timeline.setFrame(frame, time, value); + if (frame === frameLast) break; + const time2 = input.readFloat(), value2 = input.readFloat() * scale; + switch (input.readByte()) { + case CURVE_STEPPED: + timeline.setStepped(frame); + break; + case CURVE_BEZIER: + setBezier(input, timeline, bezier++, frame, 0, time, time2, value, value2, scale); + } + time = time2; + value = value2; + } + timelines.push(timeline); + } + function readTimeline2(input, timelines, timeline, scale) { + let time = input.readFloat(), value1 = input.readFloat() * scale, value2 = input.readFloat() * scale; + for (let frame = 0, bezier = 0, frameLast = timeline.getFrameCount() - 1; ; frame++) { + timeline.setFrame(frame, time, value1, value2); + if (frame === frameLast) break; + const time2 = input.readFloat(), nvalue1 = input.readFloat() * scale, nvalue2 = input.readFloat() * scale; + switch (input.readByte()) { + case CURVE_STEPPED: + timeline.setStepped(frame); + break; + case CURVE_BEZIER: + setBezier(input, timeline, bezier++, frame, 0, time, time2, value1, nvalue1, scale); + setBezier(input, timeline, bezier++, frame, 1, time, time2, value2, nvalue2, scale); + } + time = time2; + value1 = nvalue1; + value2 = nvalue2; + } + timelines.push(timeline); + } + function readDrawOrder(input, slotCount) { + const changeCount = input.readInt(true); + if (changeCount === 0) return null; + const drawOrder = new Array(slotCount).fill(-1); + const unchanged = new Array(slotCount - changeCount); + let originalIndex = 0, unchangedIndex = 0; + for (let i = 0; i < changeCount; i++) { + const slotIndex = input.readInt(true); + while (originalIndex !== slotIndex) + unchanged[unchangedIndex++] = originalIndex++; + drawOrder[originalIndex + input.readInt(true)] = originalIndex++; + } + while (originalIndex < slotCount) + unchanged[unchangedIndex++] = originalIndex++; + for (let i = slotCount - 1; i >= 0; i--) + if (drawOrder[i] === -1) drawOrder[i] = unchanged[--unchangedIndex]; + return drawOrder; + } + function setBezier(input, timeline, bezier, frame, value, time1, time2, value1, value2, scale) { + timeline.setBezier(bezier, frame, value, time1, value1, input.readFloat(), input.readFloat() * scale, input.readFloat(), input.readFloat() * scale, time2, value2); + } + var BONE_ROTATE = 0; + var BONE_TRANSLATE = 1; + var BONE_TRANSLATEX = 2; + var BONE_TRANSLATEY = 3; + var BONE_SCALE = 4; + var BONE_SCALEX = 5; + var BONE_SCALEY = 6; + var BONE_SHEAR = 7; + var BONE_SHEARX = 8; + var BONE_SHEARY = 9; + var BONE_INHERIT = 10; + var SLOT_ATTACHMENT = 0; + var SLOT_RGBA = 1; + var SLOT_RGB = 2; + var SLOT_RGBA2 = 3; + var SLOT_RGB2 = 4; + var SLOT_ALPHA = 5; + var CONSTRAINT_IK = 0; + var CONSTRAINT_PATH = 1; + var CONSTRAINT_TRANSFORM = 2; + var CONSTRAINT_PHYSICS = 3; + var CONSTRAINT_SLIDER = 4; + var ATTACHMENT_DEFORM = 0; + var ATTACHMENT_SEQUENCE = 1; + var PATH_POSITION = 0; + var PATH_SPACING = 1; + var PATH_MIX = 2; + var PHYSICS_INERTIA = 0; + var PHYSICS_STRENGTH = 1; + var PHYSICS_DAMPING = 2; + var PHYSICS_MASS = 4; + var PHYSICS_WIND = 5; + var PHYSICS_GRAVITY = 6; + var PHYSICS_MIX = 7; + var PHYSICS_RESET = 8; + var SLIDER_TIME = 0; + var SLIDER_MIX = 1; + var CURVE_STEPPED = 1; + var CURVE_BEZIER = 2; + + // spine-core/src/SkeletonBounds.ts + var SkeletonBounds = class { + /** The left edge of the axis aligned bounding box. */ + minX = 0; + /** The bottom edge of the axis aligned bounding box. */ + minY = 0; + /** The right edge of the axis aligned bounding box. */ + maxX = 0; + /** The top edge of the axis aligned bounding box. */ + maxY = 0; + /** The visible bounding boxes. */ + boundingBoxes = []; + /** The world vertices for the bounding box polygons. */ + polygons = []; + polygonPool = new Pool(() => { + return Utils.newFloatArray(16); + }); + /** Clears any previous polygons, finds all visible bounding box attachments, and computes the world vertices for each bounding + * box's polygon. + * @param updateAabb If true, the axis aligned bounding box containing all the polygons is computed. If false, the + * SkeletonBounds AABB methods will always return true. */ + update(skeleton, updateAabb) { + if (!skeleton) throw new Error("skeleton cannot be null."); + const boundingBoxes = this.boundingBoxes; + const polygons = this.polygons; + const polygonPool = this.polygonPool; + const slots = skeleton.slots; + const slotCount = slots.length; + boundingBoxes.length = 0; + polygonPool.freeAll(polygons); + polygons.length = 0; + for (let i = 0; i < slotCount; i++) { + const slot = slots[i]; + if (!slot.bone.active) continue; + const attachment = slot.appliedPose.attachment; + if (attachment instanceof BoundingBoxAttachment) { + boundingBoxes.push(attachment); + let polygon = polygonPool.obtain(); + if (polygon.length !== attachment.worldVerticesLength) { + polygon = Utils.newFloatArray(attachment.worldVerticesLength); + } + polygons.push(polygon); + attachment.computeWorldVertices(skeleton, slot, 0, attachment.worldVerticesLength, polygon, 0, 2); + } + } + if (updateAabb) { + this.aabbCompute(); + } else { + this.minX = Number.POSITIVE_INFINITY; + this.minY = Number.POSITIVE_INFINITY; + this.maxX = Number.NEGATIVE_INFINITY; + this.maxY = Number.NEGATIVE_INFINITY; + } + } + aabbCompute() { + let minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY; + const polygons = this.polygons; + for (let i = 0, n = polygons.length; i < n; i++) { + const polygon = polygons[i]; + const vertices = polygon; + for (let ii = 0, nn = polygon.length; ii < nn; ii += 2) { + const x = vertices[ii]; + const y = vertices[ii + 1]; + minX = Math.min(minX, x); + minY = Math.min(minY, y); + maxX = Math.max(maxX, x); + maxY = Math.max(maxY, y); + } + } + this.minX = minX; + this.minY = minY; + this.maxX = maxX; + this.maxY = maxY; + } + /** Returns true if the axis aligned bounding box contains the point. */ + aabbContainsPoint(x, y) { + return x >= this.minX && x <= this.maxX && y >= this.minY && y <= this.maxY; + } + /** Returns true if the axis aligned bounding box intersects the line segment. */ + aabbIntersectsSegment(x1, y1, x2, y2) { + const minX = this.minX; + const minY = this.minY; + const maxX = this.maxX; + const maxY = this.maxY; + if (x1 <= minX && x2 <= minX || y1 <= minY && y2 <= minY || x1 >= maxX && x2 >= maxX || y1 >= maxY && y2 >= maxY) + return false; + const m = (y2 - y1) / (x2 - x1); + let y = m * (minX - x1) + y1; + if (y > minY && y < maxY) return true; + y = m * (maxX - x1) + y1; + if (y > minY && y < maxY) return true; + let x = (minY - y1) / m + x1; + if (x > minX && x < maxX) return true; + x = (maxY - y1) / m + x1; + if (x > minX && x < maxX) return true; + return false; + } + /** Returns true if the axis aligned bounding box intersects the axis aligned bounding box of the specified bounds. */ + aabbIntersectsSkeleton(bounds) { + return this.minX < bounds.maxX && this.maxX > bounds.minX && this.minY < bounds.maxY && this.maxY > bounds.minY; + } + /** Returns the first bounding box attachment that contains the point, or null. When doing many checks, it is usually more + * efficient to only call this method if {@link aabbContainsPoint} returns true. */ + containsPoint(x, y) { + const polygons = this.polygons; + for (let i = 0, n = polygons.length; i < n; i++) + if (this.containsPointPolygon(polygons[i], x, y)) return this.boundingBoxes[i]; + return null; + } + /** Returns true if the polygon contains the point. */ + containsPointPolygon(polygon, x, y) { + const vertices = polygon; + const nn = polygon.length; + let prevIndex = nn - 2; + let inside = false; + for (let ii = 0; ii < nn; ii += 2) { + const vertexY = vertices[ii + 1]; + const prevY = vertices[prevIndex + 1]; + if (vertexY < y && prevY >= y || prevY < y && vertexY >= y) { + const vertexX = vertices[ii]; + if (vertexX + (y - vertexY) / (prevY - vertexY) * (vertices[prevIndex] - vertexX) < x) inside = !inside; + } + prevIndex = ii; + } + return inside; + } + /** Returns the first bounding box attachment that contains any part of the line segment, or null. When doing many checks, it + * is usually more efficient to only call this method if {@link aabbIntersectsSegment} returns + * true. */ + intersectsSegment(x1, y1, x2, y2) { + const polygons = this.polygons; + for (let i = 0, n = polygons.length; i < n; i++) + if (this.intersectsSegmentPolygon(polygons[i], x1, y1, x2, y2)) return this.boundingBoxes[i]; + return null; + } + /** Returns true if the polygon contains any part of the line segment. */ + intersectsSegmentPolygon(polygon, x1, y1, x2, y2) { + const vertices = polygon; + const nn = polygon.length; + const width12 = x1 - x2, height12 = y1 - y2; + const det1 = x1 * y2 - y1 * x2; + let x3 = vertices[nn - 2], y3 = vertices[nn - 1]; + for (let ii = 0; ii < nn; ii += 2) { + const x4 = vertices[ii], y4 = vertices[ii + 1]; + const det2 = x3 * y4 - y3 * x4; + const width34 = x3 - x4, height34 = y3 - y4; + const det3 = width12 * height34 - height12 * width34; + const x = (det1 * width34 - width12 * det2) / det3; + if ((x >= x3 && x <= x4 || x >= x4 && x <= x3) && (x >= x1 && x <= x2 || x >= x2 && x <= x1)) { + const y = (det1 * height34 - height12 * det2) / det3; + if ((y >= y3 && y <= y4 || y >= y4 && y <= y3) && (y >= y1 && y <= y2 || y >= y2 && y <= y1)) return true; + } + x3 = x4; + y3 = y4; + } + return false; + } + /** Returns the polygon for the specified bounding box, or null. */ + getPolygon(boundingBox) { + if (!boundingBox) throw new Error("boundingBox cannot be null."); + const index = this.boundingBoxes.indexOf(boundingBox); + return index === -1 ? null : this.polygons[index]; + } + /** The width of the axis aligned bounding box. */ + getWidth() { + return this.maxX - this.minX; + } + /** The height of the axis aligned bounding box. */ + getHeight() { + return this.maxY - this.minY; + } + }; + + // spine-core/src/Triangulator.ts + var Triangulator = class _Triangulator { + convexPolygons = []; + convexPolygonsIndices = []; + indicesArray = []; + isConcaveArray = []; + triangles = []; + polygonPool = new Pool(() => { + return []; + }); + polygonIndicesPool = new Pool(() => { + return []; + }); + triangulate(verticesArray) { + const vertices = verticesArray; + let vertexCount = verticesArray.length >> 1; + const indices = this.indicesArray; + indices.length = 0; + for (let i = 0; i < vertexCount; i++) + indices[i] = i; + const isConcave = this.isConcaveArray; + isConcave.length = 0; + for (let i = 0; i < vertexCount; i++) + isConcave[i] = _Triangulator.isConcave(i, vertexCount, vertices, indices); + const triangles = this.triangles; + triangles.length = 0; + while (vertexCount > 3) { + let previous = vertexCount - 1, i = 0, next = 1; + while (true) { + outer: + if (!isConcave[i]) { + const p1 = indices[previous] << 1, p2 = indices[i] << 1, p3 = indices[next] << 1; + const p1x = vertices[p1], p1y = vertices[p1 + 1]; + const p2x = vertices[p2], p2y = vertices[p2 + 1]; + const p3x = vertices[p3], p3y = vertices[p3 + 1]; + for (let ii = next + 1 < vertexCount ? next + 1 : 0; ii !== previous; ) { + if (isConcave[ii]) { + const v = indices[ii] << 1; + const vx = vertices[v], vy = vertices[v + 1]; + if (_Triangulator.positiveArea(p3x, p3y, p1x, p1y, vx, vy) && _Triangulator.positiveArea(p1x, p1y, p2x, p2y, vx, vy) && _Triangulator.positiveArea(p2x, p2y, p3x, p3y, vx, vy)) break outer; + } + if (++ii === vertexCount) ii = 0; + } + break; + } + if (next === 0) { + do { + if (!isConcave[i]) break; + i--; + } while (i > 0); + previous = i > 0 ? i - 1 : vertexCount - 1; + next = i + 1 < vertexCount ? i + 1 : 0; + break; + } + previous = i; + i = next; + if (++next === vertexCount) next = 0; + } + triangles.push(indices[previous], indices[i], indices[next]); + indices.splice(i, 1); + isConcave.splice(i, 1); + vertexCount--; + const previousIndex = i > 0 ? i - 1 : vertexCount - 1; + const nextIndex = i < vertexCount ? i : 0; + isConcave[previousIndex] = _Triangulator.isConcave(previousIndex, vertexCount, vertices, indices); + isConcave[nextIndex] = _Triangulator.isConcave(nextIndex, vertexCount, vertices, indices); + } + if (vertexCount === 3) triangles.push(indices[2], indices[0], indices[1]); + return triangles; + } + decompose(verticesArray, triangles) { + const vertices = verticesArray; + const convexPolygons = this.convexPolygons; + this.polygonPool.freeAll(convexPolygons); + convexPolygons.length = 0; + const convexPolygonsIndices = this.convexPolygonsIndices; + this.polygonIndicesPool.freeAll(convexPolygonsIndices); + convexPolygonsIndices.length = 0; + let polygonIndices = this.polygonIndicesPool.obtain(); + polygonIndices.length = 0; + let polygon = this.polygonPool.obtain(); + polygon.length = 0; + let fanBaseIndex = -1, lastWinding = 0; + for (let i = 0, n = triangles.length; i < n; i += 3) { + const t1 = triangles[i] << 1, t2 = triangles[i + 1] << 1, t3 = triangles[i + 2] << 1; + const x1 = vertices[t1], y1 = vertices[t1 + 1]; + const x2 = vertices[t2], y2 = vertices[t2 + 1]; + const x3 = vertices[t3], y3 = vertices[t3 + 1]; + if (fanBaseIndex === t1) { + const o = polygon.length - 4; + if (_Triangulator.winding(polygon[o], polygon[o + 1], polygon[o + 2], polygon[o + 3], x3, y3) === lastWinding && _Triangulator.winding(x3, y3, polygon[0], polygon[1], polygon[2], polygon[3]) === lastWinding) { + polygon.push(x3, y3); + polygonIndices.push(t3); + continue; + } + } + if (polygon.length > 0) { + convexPolygons.push(polygon); + convexPolygonsIndices.push(polygonIndices); + polygon = this.polygonPool.obtain(); + polygonIndices = this.polygonIndicesPool.obtain(); + } + polygon.length = 0; + polygon.push(x1, y1, x2, y2); + polygon.push(x3, y3); + polygonIndices.length = 0; + polygonIndices.push(t1, t2, t3); + lastWinding = _Triangulator.winding(x1, y1, x2, y2, x3, y3); + fanBaseIndex = t1; + } + if (polygon.length > 0) { + convexPolygons.push(polygon); + convexPolygonsIndices.push(polygonIndices); + } + for (let i = 0, n = convexPolygons.length; i < n; i++) { + polygonIndices = convexPolygonsIndices[i]; + if (polygonIndices.length === 0) continue; + const firstIndex = polygonIndices[0]; + let lastIndex = polygonIndices[polygonIndices.length - 1]; + polygon = convexPolygons[i]; + const o = polygon.length - 4; + let prevPrevX = polygon[o], prevPrevY = polygon[o + 1]; + let prevX = polygon[o + 2], prevY = polygon[o + 3]; + const firstX = polygon[0], firstY = polygon[1]; + const secondX = polygon[2], secondY = polygon[3]; + const winding = _Triangulator.winding(prevPrevX, prevPrevY, prevX, prevY, firstX, firstY); + for (let ii = 0; ii < n; ii++) { + if (ii === i) continue; + const otherIndices = convexPolygonsIndices[ii]; + if (otherIndices.length !== 3) continue; + const otherFirstIndex = otherIndices[0]; + const otherSecondIndex = otherIndices[1]; + const otherLastIndex = otherIndices[2]; + const otherPoly = convexPolygons[ii]; + const x3 = otherPoly[otherPoly.length - 2], y3 = otherPoly[otherPoly.length - 1]; + if (otherFirstIndex !== firstIndex || otherSecondIndex !== lastIndex) continue; + if (_Triangulator.winding(prevPrevX, prevPrevY, prevX, prevY, x3, y3) === winding && _Triangulator.winding(x3, y3, firstX, firstY, secondX, secondY) === winding) { + otherPoly.length = 0; + otherIndices.length = 0; + polygon.push(x3, y3); + polygonIndices.push(otherLastIndex); + lastIndex = otherLastIndex; + prevPrevX = prevX; + prevPrevY = prevY; + prevX = x3; + prevY = y3; + ii = -1; + } + } + } + for (let i = convexPolygons.length - 1; i >= 0; i--) { + polygon = convexPolygons[i]; + if (polygon.length === 0) { + convexPolygons.splice(i, 1); + this.polygonPool.free(polygon); + polygonIndices = convexPolygonsIndices[i]; + convexPolygonsIndices.splice(i, 1); + this.polygonIndicesPool.free(polygonIndices); + } else + polygon.push(polygon[0], polygon[1]); + } + return convexPolygons; + } + static isConcave(index, vertexCount, vertices, indices) { + const previous = indices[index > 0 ? index - 1 : vertexCount - 1] << 1; + const current = indices[index] << 1; + const next = indices[index + 1 < vertexCount ? index + 1 : 0] << 1; + return !_Triangulator.positiveArea( + vertices[previous], + vertices[previous + 1], + vertices[current], + vertices[current + 1], + vertices[next], + vertices[next + 1] + ); + } + static positiveArea(p1x, p1y, p2x, p2y, p3x, p3y) { + return p1x * (p3y - p2y) + p2x * (p1y - p3y) + p3x * (p2y - p1y) >= 0; + } + static winding(p1x, p1y, p2x, p2y, p3x, p3y) { + return p1x * (p3y - p2y) + p2x * (p1y - p3y) + p3x * (p2y - p1y) >= 0 ? 1 : -1; + } + }; + + // spine-core/src/SkeletonClipping.ts + var SkeletonClipping = class { + triangulator = null; + clippingPolygon = []; + clippingPolygons = []; + clipOutput = []; + clippedVertices = []; + /** An empty array unless {@link clipTrianglesUnpacked} was used. **/ + clippedUVs = []; + clippedTriangles = []; + inverseVertices = []; + _clippedVerticesTyped = new Float32Array(1024); + _clippedUVsTyped = new Float32Array(1024); + _clippedTrianglesTyped = new Uint16Array(1024); + clippedVerticesTyped = new Float32Array(0); + clippedUVsTyped = new Float32Array(0); + clippedTrianglesTyped = new Uint16Array(0); + clippedVerticesLength = 0; + clippedUVsLength = 0; + clippedTrianglesLength = 0; + scratch = []; + inverse = false; + clipAttachment = null; + clipStart(skeleton, slot, clip) { + if (this.clipAttachment) return; + const n = clip.worldVerticesLength; + this.clipAttachment = clip; + this.inverse = clip.inverse; + const vertices = Utils.setArraySize(this.clippingPolygon, n); + clip.computeWorldVertices(skeleton, slot, 0, n, vertices, 0, 2); + const clippingPolygon = this.clippingPolygon; + const convex = this.makeClockwise(clippingPolygon); + if (convex || this.inverse || clip.convex) { + if (!convex) this.makeConvex(clippingPolygon); + this.clippingPolygon.push(clippingPolygon[0], clippingPolygon[1]); + this.clippingPolygons.push(clippingPolygon); + } else { + if (this.triangulator === null) this.triangulator = new Triangulator(); + this.clippingPolygons.push(...this.triangulator.decompose(clippingPolygon, this.triangulator.triangulate(clippingPolygon))); + } + } + clipEnd(slot) { + if (!this.clipAttachment) return; + if (slot && this.clipAttachment.endSlot !== slot.data) return; + this.clipAttachment = null; + this.clippingPolygons.length = 0; + } + isClipping() { + return this.clipAttachment != null; + } + clipTriangles(vertices, triangles, trianglesLength, uvs, light, dark, twoColor, stride) { + return uvs && light && dark && typeof twoColor === "boolean" && typeof stride === "number" ? this.clipTrianglesRender(vertices, triangles, trianglesLength, uvs, light, dark, twoColor, stride) : this.clipTrianglesNoRender(vertices, triangles, trianglesLength); + } + clipTrianglesNoRender(vertices, triangles, trianglesLength) { + const clippedVertices = this.clippedVertices; + clippedVertices.length = 0; + const clippedTriangles = this.clippedTriangles; + clippedTriangles.length = 0; + let index = 0; + if (this.inverse) { + const polygon = this.clippingPolygons[0]; + for (let i = 0; i < trianglesLength; i += 3) { + let t = triangles[i] << 1; + const x1 = vertices[t], y1 = vertices[t + 1]; + t = triangles[i + 1] << 1; + const x2 = vertices[t], y2 = vertices[t + 1]; + t = triangles[i + 2] << 1; + const x3 = vertices[t], y3 = vertices[t + 1]; + this.clipInverse(x1, y1, x2, y2, x3, y3, polygon); + const iv = this.inverseVertices; + for (let offset = 0, nn = this.inverseVertices.length; offset < nn; ) { + const polygonSize = iv[offset++]; + let vertexCount = polygonSize >> 1, s = clippedVertices.length; + const cv = Utils.setArraySize(clippedVertices, s + polygonSize); + Utils.arrayCopy(iv, offset, cv, s, polygonSize); + s = clippedTriangles.length; + const ct = Utils.setArraySize(clippedTriangles, s + 3 * (vertexCount - 2)); + for (let ii = 1; ii < vertexCount - 1; ii++, s += 3) { + ct[s] = index; + ct[s + 1] = index + ii; + ct[s + 2] = index + ii + 1; + } + index += vertexCount; + offset += polygonSize; + } + } + return true; + } + const clipOutput = this.clipOutput; + const polygons = this.clippingPolygons; + const polygonsCount = polygons.length; + let clipOutputItems = null; + for (let i = 0; i < trianglesLength; i += 3) { + let t = triangles[i] << 1; + const x1 = vertices[t], y1 = vertices[t + 1]; + t = triangles[i + 1] << 1; + const x2 = vertices[t], y2 = vertices[t + 1]; + t = triangles[i + 2] << 1; + const x3 = vertices[t], y3 = vertices[t + 1]; + for (let p = 0; p < polygonsCount; p++) { + let s = clippedVertices.length; + if (this.clip(x1, y1, x2, y2, x3, y3, polygons[p])) { + clipOutputItems = this.clipOutput; + const clipOutputLength = clipOutput.length; + if (clipOutputLength === 0) continue; + let clipOutputCount = clipOutputLength >> 1; + const cv = Utils.setArraySize(clippedVertices, s + clipOutputLength); + Utils.arrayCopy(clipOutputItems, 0, cv, s, clipOutputLength); + s = clippedTriangles.length; + const ct = Utils.setArraySize(clippedTriangles, s + 3 * (clipOutputCount - 2)); + clipOutputCount--; + for (let ii = 1; ii < clipOutputCount; ii++, s += 3) { + ct[s] = index; + ct[s + 1] = index + ii; + ct[s + 2] = index + ii + 1; + } + index += clipOutputCount; + } else { + const cv = Utils.setArraySize(clippedVertices, s + 3 * 2); + cv[s] = x1; + cv[s + 1] = y1; + cv[s + 2] = x2; + cv[s + 3] = y2; + cv[s + 4] = x3; + cv[s + 5] = y3; + s = clippedTriangles.length; + const ct = Utils.setArraySize(clippedTriangles, s + 3); + ct[s] = index; + ct[s + 1] = index + 1; + ct[s + 2] = index + 2; + index += 3; + break; + } + } + } + return clipOutputItems != null; + } + clipTrianglesRender(vertices, triangles, trianglesLength, uvs, light, dark, twoColor, stride) { + const clippedVertices = this.clippedVertices; + clippedVertices.length = 0; + const clippedTriangles = this.clippedTriangles; + clippedTriangles.length = 0; + let index = 0; + if (this.inverse) { + const polygon = this.clippingPolygons[0]; + for (let i = 0; i < trianglesLength; i += 3) { + let t0 = triangles[i], t1 = triangles[i + 1], t2 = triangles[i + 2]; + const x1 = vertices[t0 * stride], y1 = vertices[t0 * stride + 1]; + const x2 = vertices[t1 * stride], y2 = vertices[t1 * stride + 1]; + const x3 = vertices[t2 * stride], y3 = vertices[t2 * stride + 1]; + this.clipInverse(x1, y1, x2, y2, x3, y3, polygon); + const nn = this.inverseVertices.length; + if (nn === 0) continue; + const u1 = uvs[t0 <<= 1], v1 = uvs[t0 + 1]; + const u2 = uvs[t1 <<= 1], v2 = uvs[t1 + 1]; + const u3 = uvs[t2 <<= 1], v3 = uvs[t2 + 1]; + const d0 = y2 - y3, d1 = x3 - x2, d2 = x1 - x3, d4 = y3 - y1, d = 1 / (d0 * d2 + d1 * (y1 - y3)); + const iv = this.inverseVertices; + for (let offset = 0; offset < nn; ) { + const polygonSize = iv[offset++]; + const vertexCount = polygonSize >> 1; + let s = clippedVertices.length; + const cv = Utils.setArraySize(clippedVertices, s + vertexCount * stride); + for (let ii = 0; ii < polygonSize; ii += 2, s += stride) { + const x = iv[offset + ii], y = iv[offset + ii + 1]; + cv[s] = x; + cv[s + 1] = y; + cv[s + 2] = light.r; + cv[s + 3] = light.g; + cv[s + 4] = light.b; + cv[s + 5] = light.a; + const c0 = x - x3, c1 = y - y3, a = (d0 * c0 + d1 * c1) * d, b = (d4 * c0 + d2 * c1) * d, c = 1 - a - b; + cv[s + 6] = u1 * a + u2 * b + u3 * c; + cv[s + 7] = v1 * a + v2 * b + v3 * c; + if (twoColor) { + cv[s + 8] = dark.r; + cv[s + 9] = dark.g; + cv[s + 10] = dark.b; + cv[s + 11] = dark.a; + } + } + s = clippedTriangles.length; + const ct = Utils.setArraySize(clippedTriangles, s + 3 * (vertexCount - 2)); + for (let ii = 1; ii < vertexCount - 1; ii++, s += 3) { + ct[s] = index; + ct[s + 1] = index + ii; + ct[s + 2] = index + ii + 1; + } + index += vertexCount; + offset += polygonSize; + } + } + return true; + } + const clipOutput = this.clipOutput; + const polygons = this.clippingPolygons; + const polygonsCount = this.clippingPolygons.length; + let clipOutputItems = null; + for (let i = 0; i < trianglesLength; i += 3) { + let t = triangles[i]; + const x1 = vertices[t * stride], y1 = vertices[t * stride + 1]; + const u1 = uvs[t << 1], v1 = uvs[(t << 1) + 1]; + t = triangles[i + 1]; + const x2 = vertices[t * stride], y2 = vertices[t * stride + 1]; + const u2 = uvs[t << 1], v2 = uvs[(t << 1) + 1]; + t = triangles[i + 2]; + const x3 = vertices[t * stride], y3 = vertices[t * stride + 1]; + const u3 = uvs[t << 1], v3 = uvs[(t << 1) + 1]; + let d0 = 0, d1 = 0, d2 = 0, d4 = 0, d = 0; + for (let p = 0; p < polygonsCount; p++) { + let s = clippedVertices.length; + if (this.clip(x1, y1, x2, y2, x3, y3, polygons[p])) { + clipOutputItems = this.clipOutput; + const clipOutputLength = clipOutput.length; + if (clipOutputLength === 0) continue; + let clipOutputCount = clipOutputLength >> 1; + if (d === 0) { + d0 = y2 - y3; + d1 = x3 - x2; + d2 = x1 - x3; + d4 = y3 - y1; + d = 1 / (d0 * d2 - d1 * d4); + } + const cv = Utils.setArraySize(clippedVertices, s + clipOutputCount * stride); + for (let ii = 0; ii < clipOutputLength; ii += 2, s += stride) { + const x = clipOutputItems[ii], y = clipOutputItems[ii + 1]; + cv[s] = x; + cv[s + 1] = y; + cv[s + 2] = light.r; + cv[s + 3] = light.g; + cv[s + 4] = light.b; + cv[s + 5] = light.a; + const c0 = x - x3, c1 = y - y3, a = (d0 * c0 + d1 * c1) * d, b = (d4 * c0 + d2 * c1) * d, c = 1 - a - b; + cv[s + 6] = u1 * a + u2 * b + u3 * c; + cv[s + 7] = v1 * a + v2 * b + v3 * c; + if (twoColor) { + cv[s + 8] = dark.r; + cv[s + 9] = dark.g; + cv[s + 10] = dark.b; + cv[s + 11] = dark.a; + } + } + s = clippedTriangles.length; + const ct = Utils.setArraySize(clippedTriangles, s + 3 * (clipOutputCount - 2)); + clipOutputCount--; + for (let ii = 1; ii < clipOutputCount; ii++, s += 3) { + ct[s] = index; + ct[s + 1] = index + ii; + ct[s + 2] = index + ii + 1; + } + index += clipOutputCount + 1; + } else { + const cv = Utils.setArraySize(clippedVertices, s + 3 * stride); + cv[s] = x1; + cv[s + 1] = y1; + cv[s + 2] = light.r; + cv[s + 3] = light.g; + cv[s + 4] = light.b; + cv[s + 5] = light.a; + if (!twoColor) { + cv[s + 6] = u1; + cv[s + 7] = v1; + cv[s + 8] = x2; + cv[s + 9] = y2; + cv[s + 10] = light.r; + cv[s + 11] = light.g; + cv[s + 12] = light.b; + cv[s + 13] = light.a; + cv[s + 14] = u2; + cv[s + 15] = v2; + cv[s + 16] = x3; + cv[s + 17] = y3; + cv[s + 18] = light.r; + cv[s + 19] = light.g; + cv[s + 20] = light.b; + cv[s + 21] = light.a; + cv[s + 22] = u3; + cv[s + 23] = v3; + } else { + cv[s + 6] = u1; + cv[s + 7] = v1; + cv[s + 8] = dark.r; + cv[s + 9] = dark.g; + cv[s + 10] = dark.b; + cv[s + 11] = dark.a; + cv[s + 12] = x2; + cv[s + 13] = y2; + cv[s + 14] = light.r; + cv[s + 15] = light.g; + cv[s + 16] = light.b; + cv[s + 17] = light.a; + cv[s + 18] = u2; + cv[s + 19] = v2; + cv[s + 20] = dark.r; + cv[s + 21] = dark.g; + cv[s + 22] = dark.b; + cv[s + 23] = dark.a; + cv[s + 24] = x3; + cv[s + 25] = y3; + cv[s + 26] = light.r; + cv[s + 27] = light.g; + cv[s + 28] = light.b; + cv[s + 29] = light.a; + cv[s + 30] = u3; + cv[s + 31] = v3; + cv[s + 32] = dark.r; + cv[s + 33] = dark.g; + cv[s + 34] = dark.b; + cv[s + 35] = dark.a; + } + s = clippedTriangles.length; + const ct = Utils.setArraySize(clippedTriangles, s + 3); + ct[s] = index; + ct[s + 1] = index + 1; + ct[s + 2] = index + 2; + index += 3; + break; + } + } + } + return clipOutputItems != null; + } + clipTrianglesUnpacked(vertices, vertexStart, triangles, trianglesLength, uvs, stride = 2) { + let clippedVertices = this._clippedVerticesTyped; + let clippedUVs = this._clippedUVsTyped; + let clippedTriangles = this._clippedTrianglesTyped; + let index = 0; + this.clippedVerticesLength = 0; + this.clippedUVsLength = 0; + this.clippedTrianglesLength = 0; + if (this.inverse) { + const polygon = this.clippingPolygons[0]; + for (let i = 0; i < trianglesLength; i += 3) { + let v = triangles[i] * stride; + const x1 = vertices[vertexStart + v], y1 = vertices[vertexStart + v + 1]; + let uv = triangles[i] << 1; + const u1 = uvs[uv], v1 = uvs[uv + 1]; + v = triangles[i + 1] * stride; + const x2 = vertices[vertexStart + v], y2 = vertices[vertexStart + v + 1]; + uv = triangles[i + 1] << 1; + const u2 = uvs[uv], v2 = uvs[uv + 1]; + v = triangles[i + 2] * stride; + const x3 = vertices[vertexStart + v], y3 = vertices[vertexStart + v + 1]; + uv = triangles[i + 2] << 1; + const u3 = uvs[uv], v3 = uvs[uv + 1]; + this.clipInverse(x1, y1, x2, y2, x3, y3, polygon); + const nn = this.inverseVertices.length; + if (nn === 0) continue; + const d0 = y2 - y3, d1 = x3 - x2, d2 = x1 - x3, d4 = y3 - y1, d = 1 / (d0 * d2 + d1 * (y1 - y3)); + const iv = this.inverseVertices; + for (let offset = 0; offset < nn; ) { + const polygonSize = iv[offset++]; + const vertexCount = polygonSize >> 1; + let s = this.clippedVerticesLength; + const newLength = s + vertexCount * stride; + const newUVLength = this.clippedUVsLength + vertexCount * 2; + if (clippedVertices.length < newLength) { + this._clippedVerticesTyped = new Float32Array(newLength * 2); + this._clippedVerticesTyped.set(clippedVertices.subarray(0, s)); + clippedVertices = this._clippedVerticesTyped; + } + if (clippedUVs.length < newUVLength) { + this._clippedUVsTyped = new Float32Array(newUVLength * 2); + this._clippedUVsTyped.set(clippedUVs.subarray(0, this.clippedUVsLength)); + clippedUVs = this._clippedUVsTyped; + } + this.clippedVerticesLength = newLength; + this.clippedUVsLength = newUVLength; + const cv = this._clippedVerticesTyped; + const cu = this._clippedUVsTyped; + let uvIndex = newUVLength - vertexCount * 2; + for (let ii = 0; ii < polygonSize; ii += 2, s += stride, uvIndex += 2) { + const x = iv[offset + ii], y = iv[offset + ii + 1]; + cv[s] = x; + cv[s + 1] = y; + const c0 = x - x3, c1 = y - y3, a = (d0 * c0 + d1 * c1) * d, b = (d4 * c0 + d2 * c1) * d, c = 1 - a - b; + cu[uvIndex] = u1 * a + u2 * b + u3 * c; + cu[uvIndex + 1] = v1 * a + v2 * b + v3 * c; + } + s = this.clippedTrianglesLength; + const newLengthTriangles = s + 3 * (vertexCount - 2); + if (clippedTriangles.length < newLengthTriangles) { + this._clippedTrianglesTyped = new Uint16Array(newLengthTriangles * 2); + this._clippedTrianglesTyped.set(clippedTriangles.subarray(0, s)); + clippedTriangles = this._clippedTrianglesTyped; + } + this.clippedTrianglesLength = newLengthTriangles; + const ct = clippedTriangles; + for (let ii = 1; ii < vertexCount - 1; ii++, s += 3) { + ct[s] = index; + ct[s + 1] = index + ii; + ct[s + 2] = index + ii + 1; + } + index += vertexCount; + offset += polygonSize; + } + } + this.clippedVerticesTyped = this._clippedVerticesTyped.subarray(0, this.clippedVerticesLength); + this.clippedUVsTyped = this._clippedUVsTyped.subarray(0, this.clippedUVsLength); + this.clippedTrianglesTyped = this._clippedTrianglesTyped.subarray(0, this.clippedTrianglesLength); + return true; + } + const clipOutput = this.clipOutput; + const polygons = this.clippingPolygons; + const polygonsCount = this.clippingPolygons.length; + let clipOutputItems = null; + for (let i = 0; i < trianglesLength; i += 3) { + let t = triangles[i]; + let v = t * stride; + const x1 = vertices[vertexStart + v], y1 = vertices[vertexStart + v + 1]; + let uv = t << 1; + const u1 = uvs[uv], v1 = uvs[uv + 1]; + t = triangles[i + 1]; + v = t * stride; + const x2 = vertices[vertexStart + v], y2 = vertices[vertexStart + v + 1]; + uv = t << 1; + const u2 = uvs[uv], v2 = uvs[uv + 1]; + t = triangles[i + 2]; + v = t * stride; + const x3 = vertices[vertexStart + v], y3 = vertices[vertexStart + v + 1]; + uv = t << 1; + const u3 = uvs[uv], v3 = uvs[uv + 1]; + let d0 = 0, d1 = 0, d2 = 0, d4 = 0, d = 0; + for (let p = 0; p < polygonsCount; p++) { + let s = this.clippedVerticesLength; + if (this.clip(x1, y1, x2, y2, x3, y3, polygons[p])) { + clipOutputItems = clipOutput; + const clipOutputLength = clipOutput.length; + if (clipOutputLength === 0) continue; + let clipOutputCount = clipOutputLength >> 1; + if (d === 0) { + d0 = y2 - y3; + d1 = x3 - x2; + d2 = x1 - x3; + d4 = y3 - y1; + d = 1 / (d0 * d2 - d1 * d4); + } + const newLength = s + clipOutputCount * stride; + if (clippedVertices.length < newLength) { + this._clippedVerticesTyped = new Float32Array(newLength * 2); + this._clippedVerticesTyped.set(clippedVertices.subarray(0, s)); + this._clippedUVsTyped = new Float32Array((this.clippedUVsLength + clipOutputCount * 2) * 2); + this._clippedUVsTyped.set(clippedUVs.subarray(0, this.clippedUVsLength)); + clippedVertices = this._clippedVerticesTyped; + clippedUVs = this._clippedUVsTyped; + } + const cv = clippedVertices; + const cu = clippedUVs; + this.clippedVerticesLength = newLength; + let uvIndex = this.clippedUVsLength; + this.clippedUVsLength = uvIndex + clipOutputCount * 2; + for (let ii = 0; ii < clipOutputLength; ii += 2, s += stride, uvIndex += 2) { + const x = clipOutputItems[ii], y = clipOutputItems[ii + 1]; + cv[s] = x; + cv[s + 1] = y; + const c0 = x - x3, c1 = y - y3, a = (d0 * c0 + d1 * c1) * d, b = (d4 * c0 + d2 * c1) * d, c = 1 - a - b; + cu[uvIndex] = u1 * a + u2 * b + u3 * c; + cu[uvIndex + 1] = v1 * a + v2 * b + v3 * c; + } + s = this.clippedTrianglesLength; + const newLengthTriangles = s + 3 * (clipOutputCount - 2); + if (clippedTriangles.length < newLengthTriangles) { + this._clippedTrianglesTyped = new Uint16Array(newLengthTriangles * 2); + this._clippedTrianglesTyped.set(clippedTriangles.subarray(0, s)); + clippedTriangles = this._clippedTrianglesTyped; + } + this.clippedTrianglesLength = newLengthTriangles; + const ct = clippedTriangles; + clipOutputCount--; + for (let ii = 1; ii < clipOutputCount; ii++, s += 3) { + ct[s] = index; + ct[s + 1] = index + ii; + ct[s + 2] = index + ii + 1; + } + index += clipOutputCount + 1; + } else { + let newLength = s + 3 * stride; + if (clippedVertices.length < newLength) { + this._clippedVerticesTyped = new Float32Array(newLength * 2); + this._clippedVerticesTyped.set(clippedVertices.subarray(0, s)); + clippedVertices = this._clippedVerticesTyped; + } + clippedVertices[s] = x1; + clippedVertices[s + 1] = y1; + clippedVertices[s + stride] = x2; + clippedVertices[s + stride + 1] = y2; + clippedVertices[s + stride * 2] = x3; + clippedVertices[s + stride * 2 + 1] = y3; + const uvLength = this.clippedUVsLength + 3 * 2; + if (clippedUVs.length < uvLength) { + this._clippedUVsTyped = new Float32Array(uvLength * 2); + this._clippedUVsTyped.set(clippedUVs.subarray(0, this.clippedUVsLength)); + clippedUVs = this._clippedUVsTyped; + } + const uvIndex = this.clippedUVsLength; + clippedUVs[uvIndex] = u1; + clippedUVs[uvIndex + 1] = v1; + clippedUVs[uvIndex + 2] = u2; + clippedUVs[uvIndex + 3] = v2; + clippedUVs[uvIndex + 4] = u3; + clippedUVs[uvIndex + 5] = v3; + this.clippedVerticesLength = newLength; + this.clippedUVsLength = uvLength; + s = this.clippedTrianglesLength; + newLength = s + 3; + if (clippedTriangles.length < newLength) { + this._clippedTrianglesTyped = new Uint16Array(newLength * 2); + this._clippedTrianglesTyped.set(clippedTriangles.subarray(0, s)); + clippedTriangles = this._clippedTrianglesTyped; + } + const ct = clippedTriangles; + ct[s] = index; + ct[s + 1] = index + 1; + ct[s + 2] = index + 2; + index += 3; + this.clippedTrianglesLength = newLength; + break; + } + } + } + this.clippedVerticesTyped = this._clippedVerticesTyped.subarray(0, this.clippedVerticesLength); + this.clippedUVsTyped = this._clippedUVsTyped.subarray(0, this.clippedUVsLength); + this.clippedTrianglesTyped = this._clippedTrianglesTyped.subarray(0, this.clippedTrianglesLength); + return clipOutputItems !== null; + } + clip(x1, y1, x2, y2, x3, y3, polygon) { + const originalOutput = this.clipOutput; + let clipped = false; + let input, output; + if (polygon.length % 4 >= 2) { + input = this.clipOutput; + output = this.scratch; + } else { + input = this.scratch; + output = this.clipOutput; + } + const v = polygon; + input.length = 8; + const iv = input; + iv[0] = x1; + iv[1] = y1; + iv[2] = x2; + iv[3] = y2; + iv[4] = x3; + iv[5] = y3; + iv[6] = x1; + iv[7] = y1; + output.length = 0; + const last = polygon.length - 4; + for (let i = 0; ; i += 2) { + const edgeX = v[i], edgeY = v[i + 1], ex = edgeX - v[i + 2], ey = edgeY - v[i + 3]; + const outputStart = output.length; + const iv2 = input; + x1 = iv2[0]; + y1 = iv2[1]; + let s1 = ey * (edgeX - x1) - ex * (edgeY - y1); + for (let ii = 2, nn = input.length - 2; ii <= nn; ii += 2) { + x2 = iv2[ii]; + y2 = iv2[ii + 1]; + const s2 = ey * (edgeX - x2) - ex * (edgeY - y2); + if (s1 > 0) { + if (s2 > 0) + output.push(x2, y2); + else { + const ix = x2 - x1, iy = y2 - y1, t = s1 / (ix * ey - iy * ex); + if (t >= 0 && t <= 1) { + output.push(x1 + ix * t, y1 + iy * t); + clipped = true; + } else + output.push(x2, y2); + } + } else if (s2 > 0) { + const ix = x2 - x1, iy = y2 - y1, t = s1 / (ix * ey - iy * ex); + if (t >= 0 && t <= 1) { + output.push(x1 + ix * t, y1 + iy * t, x2, y2); + clipped = true; + } else + output.push(x2, y2); + } else + clipped = true; + x1 = x2; + y1 = y2; + s1 = s2; + } + if (outputStart === output.length) { + originalOutput.length = 0; + return true; + } + output.push(output[0], output[1]); + if (i === last) break; + const temp = output; + output = input; + output.length = 0; + input = temp; + } + if (originalOutput !== output) { + originalOutput.length = 0; + for (let i = 0, n = output.length - 2; i < n; i++) + originalOutput[i] = output[i]; + } else + originalOutput.length = originalOutput.length - 2; + return clipped; + } + clipInverse(x1, y1, x2, y2, x3, y3, polygon) { + this.inverseVertices.length = 0; + const vLast = polygon.length - 4; + let input, output; + if (polygon.length % 4 >= 2) { + input = this.clipOutput; + output = this.scratch; + } else { + input = this.scratch; + output = this.clipOutput; + } + input.length = 8; + let v = polygon, iv = input; + iv[0] = x1; + iv[1] = y1; + iv[2] = x2; + iv[3] = y2; + iv[4] = x3; + iv[5] = y3; + iv[6] = x1; + iv[7] = y1; + output.length = 0; + for (let i = 0; ; i += 2) { + const edgeX = v[i], edgeY = v[i + 1], ex = edgeX - v[i + 2], ey = edgeY - v[i + 3]; + const outputStart = output.length, fragmentStart = this.inverseVertices.length; + this.inverseVertices.push(0); + iv = input; + x1 = iv[0]; + y1 = iv[1]; + let s1 = ey * (edgeX - x1) - ex * (edgeY - y1); + for (let ii = 2, nn = input.length - 2; ii <= nn; ii += 2) { + x2 = iv[ii]; + y2 = iv[ii + 1]; + const s2 = ey * (edgeX - x2) - ex * (edgeY - y2); + if (s1 > 0) { + if (s2 > 0) + output.push(x2, y2); + else { + const ix = x2 - x1, iy = y2 - y1, t = s1 / (ix * ey - iy * ex); + if (t >= 0 && t <= 1) { + const cx = x1 + ix * t, cy = y1 + iy * t; + output.push(cx, cy); + this.inverseVertices.push(cx, cy, x2, y2); + } else + output.push(x2, y2); + } + } else if (s2 > 0) { + const ix = x2 - x1, iy = y2 - y1, t = s1 / (ix * ey - iy * ex); + if (t >= 0 && t <= 1) { + const cx = x1 + ix * t, cy = y1 + iy * t; + this.inverseVertices.push(cx, cy); + output.push(cx, cy, x2, y2); + } else + output.push(x2, y2); + } else + this.inverseVertices.push(x2, y2); + x1 = x2; + y1 = y2; + s1 = s2; + } + const fragmentSize = this.inverseVertices.length - fragmentStart - 1; + if (fragmentSize >= 6) + this.inverseVertices[fragmentStart] = fragmentSize; + else + this.inverseVertices.length = fragmentStart; + if (outputStart === output.length) break; + output.push(output[0], output[1]); + if (i === vLast) break; + const temp = output; + output = input; + output.length = 0; + input = temp; + } + } + makeClockwise(polygon) { + const v = polygon; + const n = polygon.length; + let noCW = true, noCCW = true; + let area = 0, prevX = v[n - 2], prevY = v[n - 1], currX = v[0], currY = v[1]; + for (let i = 2; i < n; i += 2) { + const nextX = v[i], nextY = v[i + 1]; + area += currX * nextY - nextX * currY; + const cross2 = (currX - prevX) * (nextY - currY) - (currY - prevY) * (nextX - currX); + noCCW = noCCW && cross2 <= 0; + noCW = noCW && cross2 >= 0; + prevX = currX; + prevY = currY; + currX = nextX; + currY = nextY; + } + area += currX * v[1] - v[0] * currY; + const cross = (currX - prevX) * (v[1] - currY) - (currY - prevY) * (v[0] - currX); + noCCW = noCCW && cross <= 0; + noCW = noCW && cross >= 0; + if (area >= 0) { + for (let i = 0, lastX = n - 2, half = n >> 1; i < half; i += 2) { + const x = v[i], y = v[i + 1]; + const other = lastX - i; + v[i] = v[other]; + v[i + 1] = v[other + 1]; + v[other] = x; + v[other + 1] = y; + } + return noCW; + } + return noCCW; + } + makeConvex(polygon) { + const n = polygon.length; + const v = polygon; + this.clipOutput.length = n; + const sorted = this.clipOutput; + sorted[0] = v[0]; + sorted[1] = v[1]; + for (let i = 2; i < n; i += 2) { + const x = v[i], y = v[i + 1]; + let p = i - 2; + for (; p >= 0 && (sorted[p] > x || sorted[p] === x && sorted[p + 1] > y); p -= 2) { + sorted[p + 2] = sorted[p]; + sorted[p + 3] = sorted[p + 1]; + } + sorted[p + 2] = x; + sorted[p + 3] = y; + } + v[0] = sorted[0]; + v[1] = sorted[1]; + v[2] = sorted[2]; + v[3] = sorted[3]; + let s = 4; + for (let i = 4; i < n; i += 2, s += 2) { + const x = sorted[i], y = sorted[i + 1]; + while ((v[s - 2] - v[s - 4]) * (y - v[s - 3]) - (v[s - 1] - v[s - 3]) * (x - v[s - 4]) >= 0) { + s -= 2; + if (s === 2) break; + } + v[s] = x; + v[s + 1] = y; + } + v[s] = sorted[n - 4]; + v[s + 1] = sorted[n - 3]; + const t = s; + s += 2; + for (let i = n - 6; i >= 0; i -= 2, s += 2) { + const x = sorted[i], y = sorted[i + 1]; + while ((v[s - 2] - v[s - 4]) * (y - v[s - 3]) - (v[s - 1] - v[s - 3]) * (x - v[s - 4]) >= 0) { + s -= 2; + if (s === t) break; + } + v[s] = x; + v[s + 1] = y; + } + polygon.length = s - 2; + } + }; + + // spine-core/src/SkeletonJson.ts + var SkeletonJson = class { + attachmentLoader; + /** Scales bone positions, image sizes, and translations as they are loaded. This allows different size images to be used at + * runtime than were used in Spine. + * + * See [Scaling](http://esotericsoftware.com/spine-loading-skeleton-data#Scaling) in the Spine Runtimes Guide. */ + scale = 1; + linkedMeshes = []; + constructor(attachmentLoader) { + this.attachmentLoader = attachmentLoader; + } + // biome-ignore lint/suspicious/noExplicitAny: it is any until we define a schema + readSkeletonData(json) { + const scale = this.scale; + const skeletonData = new SkeletonData(); + const root = typeof json === "string" ? JSON.parse(json) : json; + const skeletonMap = root.skeleton; + if (skeletonMap) { + skeletonData.hash = skeletonMap.hash; + skeletonData.version = skeletonMap.spine; + skeletonData.x = skeletonMap.x; + skeletonData.y = skeletonMap.y; + skeletonData.width = skeletonMap.width; + skeletonData.height = skeletonMap.height; + skeletonData.referenceScale = getValue(skeletonMap, "referenceScale", 100) * scale; + skeletonData.fps = skeletonMap.fps; + skeletonData.imagesPath = skeletonMap.images ?? null; + skeletonData.audioPath = skeletonMap.audio ?? null; + } + if (root.bones) { + for (let i = 0; i < root.bones.length; i++) { + const boneMap = root.bones[i]; + let parent = null; + const parentName = getValue(boneMap, "parent", null); + if (parentName) parent = skeletonData.findBone(parentName); + const data = new BoneData(skeletonData.bones.length, boneMap.name, parent); + data.length = getValue(boneMap, "length", 0) * scale; + const setup = data.setupPose; + setup.x = getValue(boneMap, "x", 0) * scale; + setup.y = getValue(boneMap, "y", 0) * scale; + setup.rotation = getValue(boneMap, "rotation", 0); + setup.scaleX = getValue(boneMap, "scaleX", 1); + setup.scaleY = getValue(boneMap, "scaleY", 1); + setup.shearX = getValue(boneMap, "shearX", 0); + setup.shearY = getValue(boneMap, "shearY", 0); + setup.inherit = Utils.enumValue(Inherit, getValue(boneMap, "inherit", "Normal")); + data.skinRequired = getValue(boneMap, "skin", false); + const color = getValue(boneMap, "color", null); + if (color) data.color.setFromString(color); + data.icon = getValue(boneMap, "icon", void 0); + data.iconSize = getValue(boneMap, "iconSize", 1); + data.iconRotation = getValue(boneMap, "iconRotation", 0); + skeletonData.bones.push(data); + } + } + if (root.slots) { + for (let i = 0; i < root.slots.length; i++) { + const slotMap = root.slots[i]; + const slotName = slotMap.name; + const boneData = skeletonData.findBone(slotMap.bone); + if (!boneData) throw new Error(`Couldn't find bone ${slotMap.bone} for slot ${slotName}`); + const data = new SlotData(skeletonData.slots.length, slotName, boneData); + const color = getValue(slotMap, "color", null); + if (color) data.setupPose.color.setFromString(color); + const dark = getValue(slotMap, "dark", null); + if (dark) data.setupPose.darkColor = Color.fromString(dark); + data.attachmentName = getValue(slotMap, "attachment", null); + data.blendMode = Utils.enumValue(BlendMode, getValue(slotMap, "blend", "normal")); + data.visible = getValue(slotMap, "visible", true); + skeletonData.slots.push(data); + } + } + if (root.constraints) { + for (const constraintMap of root.constraints) { + const name = constraintMap.name; + const skinRequired = getValue(constraintMap, "skin", false); + switch (getValue(constraintMap, "type", false)) { + case "ik": { + const data = new IkConstraintData(name); + data.skinRequired = skinRequired; + for (let ii = 0; ii < constraintMap.bones.length; ii++) { + const bone = skeletonData.findBone(constraintMap.bones[ii]); + if (!bone) throw new Error(`Couldn't find bone ${constraintMap.bones[ii]} for IK constraint ${name}.`); + data.bones.push(bone); + } + const targetName = constraintMap.target; + const target = skeletonData.findBone(targetName); + if (!target) throw new Error(`Couldn't find target bone ${targetName} for IK constraint ${name}.`); + data.target = target; + const scaleY = getValue(constraintMap, "scaleY", null); + if (scaleY != null) data.scaleYMode = Utils.enumValue(ScaleYMode, scaleY); + const setup = data.setupPose; + setup.mix = getValue(constraintMap, "mix", 1); + setup.softness = getValue(constraintMap, "softness", 0) * scale; + setup.bendDirection = getValue(constraintMap, "bendPositive", true) ? 1 : -1; + setup.compress = getValue(constraintMap, "compress", false); + setup.stretch = getValue(constraintMap, "stretch", false); + skeletonData.constraints.push(data); + break; + } + case "transform": { + const data = new TransformConstraintData(name); + data.skinRequired = skinRequired; + for (let ii = 0; ii < constraintMap.bones.length; ii++) { + const boneName = constraintMap.bones[ii]; + const bone = skeletonData.findBone(boneName); + if (!bone) throw new Error(`Couldn't find bone ${boneName} for transform constraint ${constraintMap.name}.`); + data.bones.push(bone); + } + const sourceName = constraintMap.source; + const source = skeletonData.findBone(sourceName); + if (!source) throw new Error(`Couldn't find source bone ${sourceName} for transform constraint ${constraintMap.name}.`); + data.source = source; + data.localSource = getValue(constraintMap, "localSource", false); + data.localTarget = getValue(constraintMap, "localTarget", false); + data.additive = getValue(constraintMap, "additive", false); + data.clamp = getValue(constraintMap, "clamp", false); + let rotate = false, x = false, y = false, scaleX = false, scaleY = false, shearY = false; + const fromEntries = Object.entries(getValue(constraintMap, "properties", {})); + for (const [name2, fromEntry] of fromEntries) { + const from = this.fromProperty(name2); + const fromScale = this.propertyScale(name2, scale); + from.offset = getValue(fromEntry, "offset", 0) * fromScale; + const toEntries = Object.entries(getValue(fromEntry, "to", {})); + for (const [name3, toEntry] of toEntries) { + let toScale = 1; + let to; + switch (name3) { + case "rotate": { + rotate = true; + to = new ToRotate(); + break; + } + case "x": { + x = true; + to = new ToX(); + toScale = scale; + break; + } + case "y": { + y = true; + to = new ToY(); + toScale = scale; + break; + } + case "scaleX": { + scaleX = true; + to = new ToScaleX(); + break; + } + case "scaleY": { + scaleY = true; + to = new ToScaleY(); + break; + } + case "shearY": { + shearY = true; + to = new ToShearY(); + break; + } + default: + throw new Error(`Invalid transform constraint to property: ${name3}`); + } + to.offset = getValue(toEntry, "offset", 0) * toScale; + to.max = getValue(toEntry, "max", 1) * toScale; + to.scale = getValue(toEntry, "scale", 1) * toScale / fromScale; + from.to.push(to); + } + if (from.to.length > 0) data.properties.push(from); + } + data.offsets[TransformConstraintData.ROTATION] = getValue(constraintMap, "rotation", 0); + data.offsets[TransformConstraintData.X] = getValue(constraintMap, "x", 0) * scale; + data.offsets[TransformConstraintData.Y] = getValue(constraintMap, "y", 0) * scale; + data.offsets[TransformConstraintData.SCALEX] = getValue(constraintMap, "scaleX", 0); + data.offsets[TransformConstraintData.SCALEY] = getValue(constraintMap, "scaleY", 0); + data.offsets[TransformConstraintData.SHEARY] = getValue(constraintMap, "shearY", 0); + const setup = data.setupPose; + if (rotate) setup.mixRotate = getValue(constraintMap, "mixRotate", 1); + if (x) setup.mixX = getValue(constraintMap, "mixX", 1); + if (y) setup.mixY = getValue(constraintMap, "mixY", setup.mixX); + if (scaleX) setup.mixScaleX = getValue(constraintMap, "mixScaleX", 1); + if (scaleY) setup.mixScaleY = getValue(constraintMap, "mixScaleY", setup.mixScaleX); + if (shearY) setup.mixShearY = getValue(constraintMap, "mixShearY", 1); + skeletonData.constraints.push(data); + break; + } + case "path": { + const data = new PathConstraintData(name); + data.skinRequired = skinRequired; + for (let ii = 0; ii < constraintMap.bones.length; ii++) { + const boneName = constraintMap.bones[ii]; + const bone = skeletonData.findBone(boneName); + if (!bone) throw new Error(`Couldn't find bone ${boneName} for path constraint ${constraintMap.name}.`); + data.bones.push(bone); + } + const slotName = constraintMap.slot; + const slot = skeletonData.findSlot(slotName); + if (!slot) throw new Error(`Couldn't find slot ${slotName} for path constraint ${constraintMap.name}.`); + data.slot = slot; + data.positionMode = Utils.enumValue(PositionMode, getValue(constraintMap, "positionMode", "Percent")); + data.spacingMode = Utils.enumValue(SpacingMode, getValue(constraintMap, "spacingMode", "Length")); + data.rotateMode = Utils.enumValue(RotateMode, getValue(constraintMap, "rotateMode", "Tangent")); + data.offsetRotation = getValue(constraintMap, "rotation", 0); + const setup = data.setupPose; + setup.position = getValue(constraintMap, "position", 0); + if (data.positionMode === 0 /* Fixed */) setup.position *= scale; + setup.spacing = getValue(constraintMap, "spacing", 0); + if (data.spacingMode === 0 /* Length */ || data.spacingMode === 1 /* Fixed */) setup.spacing *= scale; + setup.mixRotate = getValue(constraintMap, "mixRotate", 1); + setup.mixX = getValue(constraintMap, "mixX", 1); + setup.mixY = getValue(constraintMap, "mixY", setup.mixX); + skeletonData.constraints.push(data); + break; + } + case "physics": { + const data = new PhysicsConstraintData(name); + data.skinRequired = skinRequired; + const boneName = constraintMap.bone; + const bone = skeletonData.findBone(boneName); + if (bone == null) throw new Error(`Physics bone not found: ${boneName}`); + data.bone = bone; + data.x = getValue(constraintMap, "x", 0); + data.y = getValue(constraintMap, "y", 0); + data.rotate = getValue(constraintMap, "rotate", 0); + data.scaleX = getValue(constraintMap, "scaleX", 0); + const scaleY = getValue(constraintMap, "scaleY", null); + if (scaleY != null) data.scaleYMode = Utils.enumValue(ScaleYMode, scaleY); + data.shearX = getValue(constraintMap, "shearX", 0); + data.limit = getValue(constraintMap, "limit", 5e3) * scale; + data.step = 1 / getValue(constraintMap, "fps", 60); + const setup = data.setupPose; + setup.inertia = getValue(constraintMap, "inertia", 0.5); + setup.strength = getValue(constraintMap, "strength", 100); + setup.damping = getValue(constraintMap, "damping", 0.85); + setup.massInverse = 1 / getValue(constraintMap, "mass", 1); + setup.wind = getValue(constraintMap, "wind", 0); + setup.gravity = getValue(constraintMap, "gravity", 0); + setup.mix = getValue(constraintMap, "mix", 1); + data.inertiaGlobal = getValue(constraintMap, "inertiaGlobal", false); + data.strengthGlobal = getValue(constraintMap, "strengthGlobal", false); + data.dampingGlobal = getValue(constraintMap, "dampingGlobal", false); + data.massGlobal = getValue(constraintMap, "massGlobal", false); + data.windGlobal = getValue(constraintMap, "windGlobal", false); + data.gravityGlobal = getValue(constraintMap, "gravityGlobal", false); + data.mixGlobal = getValue(constraintMap, "mixGlobal", false); + skeletonData.constraints.push(data); + break; + } + case "slider": { + const data = new SliderData(name); + data.skinRequired = skinRequired; + data.additive = getValue(constraintMap, "additive", false); + data.loop = getValue(constraintMap, "loop", false); + data.setupPose.mix = getValue(constraintMap, "mix", 1); + const boneName = constraintMap.bone; + if (boneName) { + data.bone = skeletonData.findBone(boneName); + if (!data.bone) throw new Error(`Slider bone not found: ${boneName}`); + const property = constraintMap.property; + data.property = this.fromProperty(property); + const propertyScale = this.propertyScale(property, scale); + data.property.offset = getValue(constraintMap, "from", 0) * propertyScale; + data.offset = getValue(constraintMap, "to", 0); + data.scale = getValue(constraintMap, "scale", 1) / propertyScale; + data.max = getValue(constraintMap, "max", 0); + data.local = getValue(constraintMap, "local", false); + } else + data.setupPose.time = getValue(constraintMap, "time", 0); + skeletonData.constraints.push(data); + break; + } + } + } + } + if (root.skins) { + for (let i = 0; i < root.skins.length; i++) { + const skinMap = root.skins[i]; + const skin = new Skin(skinMap.name); + if (skinMap.bones) { + for (let ii = 0; ii < skinMap.bones.length; ii++) { + const boneName = skinMap.bones[ii]; + const bone = skeletonData.findBone(boneName); + if (!bone) throw new Error(`Couldn't find bone ${boneName} for skin ${skinMap.name}.`); + skin.bones.push(bone); + } + } + if (skinMap.ik) { + for (let ii = 0; ii < skinMap.ik.length; ii++) { + const constraintName = skinMap.ik[ii]; + const constraint = skeletonData.findConstraint(constraintName, IkConstraintData); + if (!constraint) throw new Error(`Couldn't find IK constraint ${constraintName} for skin ${skinMap.name}.`); + skin.constraints.push(constraint); + } + } + if (skinMap.transform) { + for (let ii = 0; ii < skinMap.transform.length; ii++) { + const constraintName = skinMap.transform[ii]; + const constraint = skeletonData.findConstraint(constraintName, TransformConstraintData); + if (!constraint) throw new Error(`Couldn't find transform constraint ${constraintName} for skin ${skinMap.name}.`); + skin.constraints.push(constraint); + } + } + if (skinMap.path) { + for (let ii = 0; ii < skinMap.path.length; ii++) { + const constraintName = skinMap.path[ii]; + const constraint = skeletonData.findConstraint(constraintName, PathConstraintData); + if (!constraint) throw new Error(`Couldn't find path constraint ${constraintName} for skin ${skinMap.name}.`); + skin.constraints.push(constraint); + } + } + if (skinMap.physics) { + for (let ii = 0; ii < skinMap.physics.length; ii++) { + const constraintName = skinMap.physics[ii]; + const constraint = skeletonData.findConstraint(constraintName, PhysicsConstraintData); + if (!constraint) throw new Error(`Couldn't find physics constraint ${constraintName} for skin ${skinMap.name}.`); + skin.constraints.push(constraint); + } + } + if (skinMap.slider) { + for (let ii = 0; ii < skinMap.slider.length; ii++) { + const constraintName = skinMap.slider[ii]; + const constraint = skeletonData.findConstraint(constraintName, SliderData); + if (!constraint) throw new Error(`Couldn't find slider constraint ${constraintName} for skin ${skinMap.name}.`); + skin.constraints.push(constraint); + } + } + for (const slotName in skinMap.attachments) { + const slot = skeletonData.findSlot(slotName); + if (!slot) throw new Error(`Couldn't find skin slot ${slotName} for skin ${skinMap.name}.`); + const slotMap = skinMap.attachments[slotName]; + for (const entryName in slotMap) { + const attachment = this.readAttachment(slotMap[entryName], skin, slot.index, entryName, skeletonData); + if (attachment) skin.setAttachment(slot.index, entryName, attachment); + } + } + skeletonData.skins.push(skin); + if (skin.name === "default") skeletonData.defaultSkin = skin; + } + } + for (let i = 0, n = this.linkedMeshes.length; i < n; i++) { + const linkedMesh = this.linkedMeshes[i]; + const skin = !linkedMesh.skin ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin); + if (!skin) throw new Error(`Skin not found: ${linkedMesh.skin}`); + const source = skin.getAttachment(linkedMesh.sourceIndex, linkedMesh.source); + if (!source) throw new Error(`Source mesh not found: ${linkedMesh.source}`); + linkedMesh.mesh.timelineAttachment = linkedMesh.inheritTimelines ? source : linkedMesh.mesh; + linkedMesh.mesh.setSourceMesh(source); + linkedMesh.mesh.updateSequence(); + outer: + if (linkedMesh.inheritTimelines && linkedMesh.slotIndex !== linkedMesh.sourceIndex) { + const slots = source.timelineSlots; + for (const existing of slots) + if (existing === linkedMesh.slotIndex) break outer; + const newSlots = [...slots]; + newSlots[slots.length] = linkedMesh.slotIndex; + source.timelineSlots = newSlots; + } + } + this.linkedMeshes.length = 0; + if (root.events) { + for (const eventName in root.events) { + const eventMap = root.events[eventName]; + const data = new EventData(eventName); + const setup = data.setupPose; + setup.intValue = getValue(eventMap, "int", 0); + setup.floatValue = getValue(eventMap, "float", 0); + setup.stringValue = getValue(eventMap, "string", ""); + data._audioPath = getValue(eventMap, "audio", null); + if (data.audioPath) { + setup.volume = getValue(eventMap, "volume", setup.volume); + setup.balance = getValue(eventMap, "balance", setup.balance); + } + skeletonData.events.push(data); + } + } + if (root.animations) { + for (const animationName in root.animations) { + const animationMap = root.animations[animationName]; + this.readAnimation(animationMap, animationName, skeletonData); + } + } + if (root.constraints) { + for (const animationName in root.constraints) { + const animationMap = root.constraints[animationName]; + if (animationMap.type === "slider") { + const data = skeletonData.findConstraint(animationMap.name, SliderData); + const animationName2 = animationMap.animation; + const animation = skeletonData.findAnimation(animationName2); + if (!animation) throw new Error(`Slider animation not found: ${animationName2}`); + data.animation = animation; + } + } + } + return skeletonData; + } + fromProperty(type) { + let from; + switch (type) { + case "rotate": + from = new FromRotate(); + break; + case "x": + from = new FromX(); + break; + case "y": + from = new FromY(); + break; + case "scaleX": + from = new FromScaleX(); + break; + case "scaleY": + from = new FromScaleY(); + break; + case "shearY": + from = new FromShearY(); + break; + default: + throw new Error(`Invalid transform constraint from property: ${type}`); + } + return from; + } + propertyScale(type, scale) { + switch (type) { + case "x": + case "y": + return scale; + default: + return 1; + } + } + // biome-ignore lint/suspicious/noExplicitAny: it is any until we define a schema + readAttachment(map, skin, slotIndex, placeholder, skeletonData) { + const scale = this.scale; + const name = getValue(map, "name", placeholder); + switch (getValue(map, "type", "region")) { + case "region": { + const path = getValue(map, "path", name); + const sequence = this.readSequence(getValue(map, "sequence", null)); + const region = this.attachmentLoader.newRegionAttachment(skin, placeholder, name, path, sequence); + if (!region) return null; + region.path = path; + region.x = getValue(map, "x", 0) * scale; + region.y = getValue(map, "y", 0) * scale; + region.scaleX = getValue(map, "scaleX", 1); + region.scaleY = getValue(map, "scaleY", 1); + region.rotation = getValue(map, "rotation", 0); + region.width = map.width * scale; + region.height = map.height * scale; + const color = getValue(map, "color", null); + if (color) region.color.setFromString(color); + region.updateSequence(); + return region; + } + case "boundingbox": { + const box = this.attachmentLoader.newBoundingBoxAttachment(skin, placeholder, name); + if (!box) return null; + this.readVertices(map, box, map.vertexCount << 1); + const color = getValue(map, "color", null); + if (color) box.color.setFromString(color); + return box; + } + case "mesh": + case "linkedmesh": { + const path = getValue(map, "path", name); + const sequence = this.readSequence(getValue(map, "sequence", null)); + const mesh = this.attachmentLoader.newMeshAttachment(skin, placeholder, name, path, sequence); + if (!mesh) return null; + mesh.path = path; + const color = getValue(map, "color", null); + if (color) mesh.color.setFromString(color); + mesh.width = getValue(map, "width", 0) * scale; + mesh.height = getValue(map, "height", 0) * scale; + const source = getValue(map, "source", null); + if (source) { + let sourceIndex = slotIndex; + const slot = getValue(map, "slot", null); + if (slot) { + const sourceSlot = skeletonData.findSlot(slot); + if (!sourceSlot) throw new Error(`Source mesh slot not found: ${slot}`); + sourceIndex = sourceSlot.index; + } + this.linkedMeshes.push(new LinkedMesh2( + mesh, + getValue(map, "skin", null), + slotIndex, + sourceIndex, + source, + getValue(map, "timelines", true) + )); + return mesh; + } + const uvs = map.uvs; + this.readVertices(map, mesh, uvs.length); + mesh.triangles = map.triangles; + mesh.regionUVs = uvs; + mesh.edges = getValue(map, "edges", null); + mesh.hullLength = getValue(map, "hull", 0) * 2; + mesh.updateSequence(); + return mesh; + } + case "path": { + const path = this.attachmentLoader.newPathAttachment(skin, placeholder, name); + if (!path) return null; + path.closed = getValue(map, "closed", false); + path.constantSpeed = getValue(map, "constantSpeed", true); + const vertexCount = map.vertexCount; + this.readVertices(map, path, vertexCount << 1); + const lengths = Utils.newArray(vertexCount / 3, 0); + for (let i = 0; i < map.lengths.length; i++) + lengths[i] = map.lengths[i] * scale; + path.lengths = lengths; + const color = getValue(map, "color", null); + if (color) path.color.setFromString(color); + return path; + } + case "point": { + const point = this.attachmentLoader.newPointAttachment(skin, placeholder, name); + if (!point) return null; + point.x = getValue(map, "x", 0) * scale; + point.y = getValue(map, "y", 0) * scale; + point.rotation = getValue(map, "rotation", 0); + const color = getValue(map, "color", null); + if (color) point.color.setFromString(color); + return point; + } + case "clipping": { + const clip = this.attachmentLoader.newClippingAttachment(skin, placeholder, name); + if (!clip) return null; + const end = getValue(map, "end", null); + if (end) clip.endSlot = skeletonData.findSlot(end); + clip.convex = getValue(map, "convex", false); + clip.inverse = getValue(map, "inverse", false); + const vertexCount = map.vertexCount; + this.readVertices(map, clip, vertexCount << 1); + const color = getValue(map, "color", null); + if (color) clip.color.setFromString(color); + return clip; + } + } + return null; + } + readSequence(map) { + if (map == null) return new Sequence(1, false); + const sequence = new Sequence(getValue(map, "count", 0), true); + sequence.start = getValue(map, "start", 1); + sequence.digits = getValue(map, "digits", 0); + sequence.setupIndex = getValue(map, "setup", 0); + return sequence; + } + // biome-ignore lint/suspicious/noExplicitAny: it is any until we define a schema + readVertices(map, attachment, verticesLength) { + const scale = this.scale; + attachment.worldVerticesLength = verticesLength; + const vertices = map.vertices; + if (verticesLength === vertices.length) { + const scaledVertices = Utils.toFloatArray(vertices); + if (scale !== 1) { + for (let i = 0, n = vertices.length; i < n; i++) + scaledVertices[i] *= scale; + } + attachment.vertices = scaledVertices; + return; + } + const weights = []; + const bones = []; + for (let i = 0, n = vertices.length; i < n; ) { + const boneCount = vertices[i++]; + bones.push(boneCount); + for (let nn = i + boneCount * 4; i < nn; i += 4) { + bones.push(vertices[i]); + weights.push(vertices[i + 1] * scale); + weights.push(vertices[i + 2] * scale); + weights.push(vertices[i + 3]); + } + } + attachment.bones = bones; + attachment.vertices = Utils.toFloatArray(weights); + } + // biome-ignore lint/suspicious/noExplicitAny: it is any untile we define a schema + readAnimation(map, name, skeletonData) { + const scale = this.scale; + const timelines = []; + if (map.slots) { + for (const slotName in map.slots) { + const slotMap = map.slots[slotName]; + const slot = skeletonData.findSlot(slotName); + if (!slot) throw new Error(`Slot not found: ${slotName}`); + const slotIndex = slot.index; + for (const timelineName in slotMap) { + const timelineMap = slotMap[timelineName]; + if (!timelineMap) continue; + const frames = timelineMap.length; + switch (timelineName) { + case "attachment": { + const timeline = new AttachmentTimeline(frames, slotIndex); + for (let frame = 0; frame < frames; frame++) { + const keyMap = timelineMap[frame]; + timeline.setFrame(frame, getValue(keyMap, "time", 0), getValue(keyMap, "name", null)); + } + timelines.push(timeline); + break; + } + case "rgba": { + const timeline = new RGBATimeline(frames, frames << 2, slotIndex); + let keyMap = timelineMap[0]; + let time = getValue(keyMap, "time", 0); + let color2 = Color.fromString(keyMap.color); + for (let frame = 0, bezier = 0; ; frame++) { + timeline.setFrame(frame, time, color2.r, color2.g, color2.b, color2.a); + const nextMap = timelineMap[frame + 1]; + if (!nextMap) { + timeline.shrink(bezier); + break; + } + const time2 = getValue(nextMap, "time", 0); + const newColor = Color.fromString(nextMap.color); + const curve = keyMap.curve; + if (curve) { + bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color2.r, newColor.r, 1); + bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color2.g, newColor.g, 1); + bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color2.b, newColor.b, 1); + bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, color2.a, newColor.a, 1); + } + time = time2; + color2 = newColor; + keyMap = nextMap; + } + timelines.push(timeline); + break; + } + case "rgb": { + const timeline = new RGBTimeline(frames, frames * 3, slotIndex); + let keyMap = timelineMap[0]; + let time = getValue(keyMap, "time", 0); + let color2 = Color.fromString(keyMap.color); + for (let frame = 0, bezier = 0; ; frame++) { + timeline.setFrame(frame, time, color2.r, color2.g, color2.b); + const nextMap = timelineMap[frame + 1]; + if (!nextMap) { + timeline.shrink(bezier); + break; + } + const time2 = getValue(nextMap, "time", 0); + const newColor = Color.fromString(nextMap.color); + const curve = keyMap.curve; + if (curve) { + bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color2.r, newColor.r, 1); + bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color2.g, newColor.g, 1); + bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color2.b, newColor.b, 1); + } + time = time2; + color2 = newColor; + keyMap = nextMap; + } + timelines.push(timeline); + break; + } + case "alpha": { + readTimeline12(timelines, timelineMap, new AlphaTimeline(frames, frames, slotIndex), 0, 1); + break; + } + case "rgba2": { + const timeline = new RGBA2Timeline(frames, frames * 7, slotIndex); + let keyMap = timelineMap[0]; + let time = getValue(keyMap, "time", 0); + let color2 = Color.fromString(keyMap.light); + let color22 = Color.fromString(keyMap.dark); + for (let frame = 0, bezier = 0; ; frame++) { + timeline.setFrame(frame, time, color2.r, color2.g, color2.b, color2.a, color22.r, color22.g, color22.b); + const nextMap = timelineMap[frame + 1]; + if (!nextMap) { + timeline.shrink(bezier); + break; + } + const time2 = getValue(nextMap, "time", 0); + const newColor = Color.fromString(nextMap.light); + const newColor2 = Color.fromString(nextMap.dark); + const curve = keyMap.curve; + if (curve) { + bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color2.r, newColor.r, 1); + bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color2.g, newColor.g, 1); + bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color2.b, newColor.b, 1); + bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, color2.a, newColor.a, 1); + bezier = readCurve(curve, timeline, bezier, frame, 4, time, time2, color22.r, newColor2.r, 1); + bezier = readCurve(curve, timeline, bezier, frame, 5, time, time2, color22.g, newColor2.g, 1); + bezier = readCurve(curve, timeline, bezier, frame, 6, time, time2, color22.b, newColor2.b, 1); + } + time = time2; + color2 = newColor; + color22 = newColor2; + keyMap = nextMap; + } + timelines.push(timeline); + break; + } + case "rgb2": { + const timeline = new RGB2Timeline(frames, frames * 6, slotIndex); + let keyMap = timelineMap[0]; + let time = getValue(keyMap, "time", 0); + let color2 = Color.fromString(keyMap.light); + let color22 = Color.fromString(keyMap.dark); + for (let frame = 0, bezier = 0; ; frame++) { + timeline.setFrame(frame, time, color2.r, color2.g, color2.b, color22.r, color22.g, color22.b); + const nextMap = timelineMap[frame + 1]; + if (!nextMap) { + timeline.shrink(bezier); + break; + } + const time2 = getValue(nextMap, "time", 0); + const newColor = Color.fromString(nextMap.light); + const newColor2 = Color.fromString(nextMap.dark); + const curve = keyMap.curve; + if (curve) { + bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color2.r, newColor.r, 1); + bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color2.g, newColor.g, 1); + bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color2.b, newColor.b, 1); + bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, color22.r, newColor2.r, 1); + bezier = readCurve(curve, timeline, bezier, frame, 4, time, time2, color22.g, newColor2.g, 1); + bezier = readCurve(curve, timeline, bezier, frame, 5, time, time2, color22.b, newColor2.b, 1); + } + time = time2; + color2 = newColor; + color22 = newColor2; + keyMap = nextMap; + } + timelines.push(timeline); + break; + } + default: + throw new Error(`Invalid timeline type for a slot: ${timelineMap.name} (${slotMap.name})`); + } + } + } + } + if (map.bones) { + for (const boneName in map.bones) { + const boneMap = map.bones[boneName]; + const bone = skeletonData.findBone(boneName); + if (!bone) throw new Error(`Bone not found: ${boneName}`); + const boneIndex = bone.index; + for (const timelineName in boneMap) { + const timelineMap = boneMap[timelineName]; + const frames = timelineMap.length; + if (frames === 0) continue; + switch (timelineName) { + case "rotate": + readTimeline12(timelines, timelineMap, new RotateTimeline(frames, frames, boneIndex), 0, 1); + break; + case "translate": + readTimeline22(timelines, timelineMap, new TranslateTimeline(frames, frames << 1, boneIndex), "x", "y", 0, scale); + break; + case "translatex": + readTimeline12(timelines, timelineMap, new TranslateXTimeline(frames, frames, boneIndex), 0, scale); + break; + case "translatey": + readTimeline12(timelines, timelineMap, new TranslateYTimeline(frames, frames, boneIndex), 0, scale); + break; + case "scale": + readTimeline22(timelines, timelineMap, new ScaleTimeline(frames, frames << 1, boneIndex), "x", "y", 1, 1); + break; + case "scalex": + readTimeline12(timelines, timelineMap, new ScaleXTimeline(frames, frames, boneIndex), 1, 1); + break; + case "scaley": + readTimeline12(timelines, timelineMap, new ScaleYTimeline(frames, frames, boneIndex), 1, 1); + break; + case "shear": + readTimeline22(timelines, timelineMap, new ShearTimeline(frames, frames << 1, boneIndex), "x", "y", 0, 1); + break; + case "shearx": + readTimeline12(timelines, timelineMap, new ShearXTimeline(frames, frames, boneIndex), 0, 1); + break; + case "sheary": + readTimeline12(timelines, timelineMap, new ShearYTimeline(frames, frames, boneIndex), 0, 1); + break; + case "inherit": { + const timeline = new InheritTimeline(frames, bone.index); + for (let frame = 0; frame < timelineMap.length; frame++) { + const aFrame = timelineMap[frame]; + timeline.setFrame(frame, getValue(aFrame, "time", 0), Utils.enumValue(Inherit, getValue(aFrame, "inherit", "Normal"))); + } + timelines.push(timeline); + break; + } + default: + throw new Error(`Invalid timeline type for a bone: ${timelineMap.name} (${boneMap.name})`); + } + } + } + } + if (map.ik) { + for (const constraintName in map.ik) { + const constraintMap = map.ik[constraintName]; + let keyMap = constraintMap[0]; + if (!keyMap) continue; + const constraint = skeletonData.findConstraint(constraintName, IkConstraintData); + if (!constraint) throw new Error(`IK Constraint not found: ${constraintName}`); + const timeline = new IkConstraintTimeline( + constraintMap.length, + constraintMap.length << 1, + skeletonData.constraints.indexOf(constraint) + ); + let time = getValue(keyMap, "time", 0); + let mix = getValue(keyMap, "mix", 1); + let softness = getValue(keyMap, "softness", 0) * scale; + for (let frame = 0, bezier = 0; ; frame++) { + timeline.setFrame(frame, time, mix, softness, getValue(keyMap, "bendPositive", true) ? 1 : -1, getValue(keyMap, "compress", false), getValue(keyMap, "stretch", false)); + const nextMap = constraintMap[frame + 1]; + if (!nextMap) { + timeline.shrink(bezier); + break; + } + const time2 = getValue(nextMap, "time", 0); + const mix2 = getValue(nextMap, "mix", 1); + const softness2 = getValue(nextMap, "softness", 0) * scale; + const curve = keyMap.curve; + if (curve) { + bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mix, mix2, 1); + bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, softness, softness2, scale); + } + time = time2; + mix = mix2; + softness = softness2; + keyMap = nextMap; + } + timelines.push(timeline); + } + } + if (map.transform) { + for (const constraintName in map.transform) { + const timelineMap = map.transform[constraintName]; + let keyMap = timelineMap[0]; + if (!keyMap) continue; + const constraint = skeletonData.findConstraint(constraintName, TransformConstraintData); + if (!constraint) throw new Error(`Transform constraint not found: ${constraintName}`); + const timeline = new TransformConstraintTimeline( + timelineMap.length, + timelineMap.length * 6, + skeletonData.constraints.indexOf(constraint) + ); + let time = getValue(keyMap, "time", 0); + let mixRotate = getValue(keyMap, "mixRotate", 1); + let mixX = getValue(keyMap, "mixX", 1), mixY = getValue(keyMap, "mixY", mixX); + let mixScaleX = getValue(keyMap, "mixScaleX", 1), mixScaleY = getValue(keyMap, "mixScaleY", 1); + let mixShearY = getValue(keyMap, "mixShearY", 1); + for (let frame = 0, bezier = 0; ; frame++) { + timeline.setFrame(frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY); + const nextMap = timelineMap[frame + 1]; + if (!nextMap) { + timeline.shrink(bezier); + break; + } + const time2 = getValue(nextMap, "time", 0); + const mixRotate2 = getValue(nextMap, "mixRotate", 1); + const mixX2 = getValue(nextMap, "mixX", 1), mixY2 = getValue(nextMap, "mixY", mixX2); + const mixScaleX2 = getValue(nextMap, "mixScaleX", 1), mixScaleY2 = getValue(nextMap, "mixScaleY", 1); + const mixShearY2 = getValue(nextMap, "mixShearY", 1); + const curve = keyMap.curve; + if (curve) { + bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mixRotate, mixRotate2, 1); + bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, mixX, mixX2, 1); + bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, mixY, mixY2, 1); + bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, mixScaleX, mixScaleX2, 1); + bezier = readCurve(curve, timeline, bezier, frame, 4, time, time2, mixScaleY, mixScaleY2, 1); + bezier = readCurve(curve, timeline, bezier, frame, 5, time, time2, mixShearY, mixShearY2, 1); + } + time = time2; + mixRotate = mixRotate2; + mixX = mixX2; + mixY = mixY2; + mixScaleX = mixScaleX2; + mixScaleY = mixScaleY2; + mixShearY = mixShearY2; + keyMap = nextMap; + } + timelines.push(timeline); + } + } + if (map.path) { + for (const constraintName in map.path) { + const constraintMap = map.path[constraintName]; + const constraint = skeletonData.findConstraint(constraintName, PathConstraintData); + if (!constraint) throw new Error(`Path constraint not found: ${constraintName}`); + const index = skeletonData.constraints.indexOf(constraint); + for (const timelineName in constraintMap) { + const timelineMap = constraintMap[timelineName]; + let keyMap = timelineMap[0]; + if (!keyMap) continue; + const frames = timelineMap.length; + switch (timelineName) { + case "position": { + const timeline = new PathConstraintPositionTimeline(frames, frames, index); + readTimeline12(timelines, timelineMap, timeline, 0, constraint.positionMode === 0 /* Fixed */ ? scale : 1); + break; + } + case "spacing": { + const timeline = new PathConstraintSpacingTimeline(frames, frames, index); + readTimeline12(timelines, timelineMap, timeline, 0, constraint.spacingMode === 0 /* Length */ || constraint.spacingMode === 1 /* Fixed */ ? scale : 1); + break; + } + case "mix": { + const timeline = new PathConstraintMixTimeline(frames, frames * 3, index); + let time = getValue(keyMap, "time", 0); + let mixRotate = getValue(keyMap, "mixRotate", 1); + let mixX = getValue(keyMap, "mixX", 1); + let mixY = getValue(keyMap, "mixY", mixX); + for (let frame = 0, bezier = 0; ; frame++) { + timeline.setFrame(frame, time, mixRotate, mixX, mixY); + const nextMap = timelineMap[frame + 1]; + if (!nextMap) { + timeline.shrink(bezier); + break; + } + const time2 = getValue(nextMap, "time", 0); + const mixRotate2 = getValue(nextMap, "mixRotate", 1); + const mixX2 = getValue(nextMap, "mixX", 1); + const mixY2 = getValue(nextMap, "mixY", mixX2); + const curve = keyMap.curve; + if (curve) { + bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mixRotate, mixRotate2, 1); + bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, mixX, mixX2, 1); + bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, mixY, mixY2, 1); + } + time = time2; + mixRotate = mixRotate2; + mixX = mixX2; + mixY = mixY2; + keyMap = nextMap; + } + timelines.push(timeline); + break; + } + } + } + } + } + if (map.physics) { + for (const constraintName in map.physics) { + const constraintMap = map.physics[constraintName]; + let index = -1; + if (constraintName.length > 0) { + const constraint = skeletonData.findConstraint(constraintName, PhysicsConstraintData); + if (!constraint) throw new Error(`Physics constraint not found: ${constraintName}`); + index = skeletonData.constraints.indexOf(constraint); + } + for (const timelineName in constraintMap) { + const timelineMap = constraintMap[timelineName]; + let keyMap = timelineMap[0]; + if (!keyMap) continue; + const frames = timelineMap.length; + let timeline; + let defaultValue = 0; + if (timelineName === "reset") { + const resetTimeline = new PhysicsConstraintResetTimeline(frames, index); + for (let frame = 0; keyMap != null; keyMap = timelineMap[frame + 1], frame++) + resetTimeline.setFrame(frame, getValue(keyMap, "time", 0)); + timelines.push(resetTimeline); + continue; + } + switch (timelineName) { + case "inertia": + timeline = new PhysicsConstraintInertiaTimeline(frames, frames, index); + break; + case "strength": + timeline = new PhysicsConstraintStrengthTimeline(frames, frames, index); + break; + case "damping": + timeline = new PhysicsConstraintDampingTimeline(frames, frames, index); + break; + case "mass": + timeline = new PhysicsConstraintMassTimeline(frames, frames, index); + break; + case "wind": + timeline = new PhysicsConstraintWindTimeline(frames, frames, index); + break; + case "gravity": + timeline = new PhysicsConstraintGravityTimeline(frames, frames, index); + break; + case "mix": { + defaultValue = 1; + timeline = new PhysicsConstraintMixTimeline(frames, frames, index); + break; + } + default: + continue; + } + readTimeline12(timelines, timelineMap, timeline, defaultValue, 1); + } + } + } + if (map.slider) { + for (const constraintName in map.slider) { + const constraintMap = map.slider[constraintName]; + const constraint = skeletonData.findConstraint(constraintName, SliderData); + if (!constraint) throw new Error(`Slider not found: ${constraintName}`); + const index = skeletonData.constraints.indexOf(constraint); + for (const timelineName in constraintMap) { + const timelineMap = constraintMap[timelineName]; + const keyMap = timelineMap[0]; + if (!keyMap) continue; + const frames = timelineMap.length; + switch (timelineName) { + case "time": + readTimeline12(timelines, timelineMap, new SliderTimeline(frames, frames, index), 1, 1); + break; + case "mix": + readTimeline12(timelines, timelineMap, new SliderMixTimeline(frames, frames, index), 1, 1); + break; + } + } + } + } + if (map.attachments) { + for (const attachmentsName in map.attachments) { + const attachmentsMap = map.attachments[attachmentsName]; + const skin = skeletonData.findSkin(attachmentsName); + if (!skin) throw new Error(`Skin not found: ${attachmentsName}`); + for (const slotMapName in attachmentsMap) { + const slotMap = attachmentsMap[slotMapName]; + const slot = skeletonData.findSlot(slotMapName); + if (!slot) throw new Error(`Attachment slot not found: ${slotMapName}`); + const slotIndex = slot.index; + for (const attachmentMapName in slotMap) { + const attachmentMap = slotMap[attachmentMapName]; + const attachment = skin.getAttachment(slotIndex, attachmentMapName); + if (!attachment) throw new Error(`Timeline attachment not found: ${attachmentMapName}`); + for (const timelineMapName in attachmentMap) { + const timelineMap = attachmentMap[timelineMapName]; + let keyMap = timelineMap[0]; + if (!keyMap) continue; + if (timelineMapName === "deform") { + const weighted = attachment.bones; + const vertices = attachment.vertices; + const deformLength = weighted ? vertices.length / 3 * 2 : vertices.length; + const timeline = new DeformTimeline(timelineMap.length, timelineMap.length, slotIndex, attachment); + let time = getValue(keyMap, "time", 0); + for (let frame = 0, bezier = 0; ; frame++) { + let deform; + const verticesValue = getValue(keyMap, "vertices", null); + if (!verticesValue) + deform = weighted ? Utils.newFloatArray(deformLength) : vertices; + else { + deform = Utils.newFloatArray(deformLength); + const start = getValue(keyMap, "offset", 0); + Utils.arrayCopy(verticesValue, 0, deform, start, verticesValue.length); + if (scale !== 1) { + for (let i = start, n = i + verticesValue.length; i < n; i++) + deform[i] *= scale; + } + if (!weighted) { + for (let i = 0; i < deformLength; i++) + deform[i] += vertices[i]; + } + } + timeline.setFrame(frame, time, deform); + const nextMap = timelineMap[frame + 1]; + if (!nextMap) { + timeline.shrink(bezier); + break; + } + const time2 = getValue(nextMap, "time", 0); + const curve = keyMap.curve; + if (curve) bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, 0, 1, 1); + time = time2; + keyMap = nextMap; + } + timelines.push(timeline); + } else if (timelineMapName === "sequence") { + const timeline = new SequenceTimeline(timelineMap.length, slotIndex, attachment); + let lastDelay = 0; + for (let frame = 0; frame < timelineMap.length; frame++) { + const delay = getValue(keyMap, "delay", lastDelay); + const time = getValue(keyMap, "time", 0); + const mode = SequenceMode[getValue(keyMap, "mode", "hold")]; + const index = getValue(keyMap, "index", 0); + timeline.setFrame(frame, time, mode, index, delay); + lastDelay = delay; + keyMap = timelineMap[frame + 1]; + } + timelines.push(timeline); + } + } + } + } + } + } + if (map.drawOrder) { + const timeline = new DrawOrderTimeline(map.drawOrder.length); + const slotCount = skeletonData.slots.length; + let frame = 0; + for (const drawOrderMap of map.drawOrder) { + timeline.setFrame(frame++, getValue(drawOrderMap, "time", 0), readDrawOrder2(skeletonData, drawOrderMap, slotCount, null)); + } + timelines.push(timeline); + } + if (map.drawOrderFolder) { + for (const timelineMap of map.drawOrderFolder) { + const slotEntries = getValue(timelineMap, "slots", []); + const folderSlots = new Array(slotEntries.length); + let ii = 0; + for (const slotEntry of slotEntries) { + const slot = skeletonData.findSlot(slotEntry); + if (!slot) throw new Error(`Draw order folder slot not found: ${slotEntry}`); + folderSlots[ii++] = slot.index; + } + const drawOrderFolderEntries = getValue(timelineMap, "keys", []); + const timeline = new DrawOrderFolderTimeline(drawOrderFolderEntries.length, folderSlots, skeletonData.slots.length); + let frame = 0; + for (const drawOrderFolderMap of drawOrderFolderEntries) { + timeline.setFrame(frame++, getValue(drawOrderFolderMap, "time", 0), readDrawOrder2(skeletonData, drawOrderFolderMap, folderSlots.length, folderSlots)); + } + timelines.push(timeline); + } + } + if (map.events) { + const timeline = new EventTimeline(map.events.length); + let frame = 0; + for (let i = 0; i < map.events.length; i++, frame++) { + const eventMap = map.events[i]; + const data = skeletonData.findEvent(eventMap.name); + if (!data) throw new Error(`Event not found: ${eventMap.name}`); + const setup = data.setupPose; + const event = new Event(Utils.toSinglePrecision(getValue(eventMap, "time", 0)), data); + event.intValue = getValue(eventMap, "int", setup.intValue); + event.floatValue = getValue(eventMap, "float", setup.floatValue); + event.stringValue = getValue(eventMap, "string", setup.stringValue); + if (event.data.audioPath) { + event.volume = getValue(eventMap, "volume", setup.volume); + event.balance = getValue(eventMap, "balance", setup.volume); + } + timeline.setFrame(frame, event); + } + timelines.push(timeline); + } + let duration = 0; + for (let i = 0, n = timelines.length; i < n; i++) + duration = Math.max(duration, timelines[i].getDuration()); + const animation = new Animation(name, timelines, duration); + const color = getValue(map, "color", null); + if (color !== null) animation.color.setFromString(color); + skeletonData.animations.push(animation); + } + }; + var LinkedMesh2 = class { + source; + skin; + slotIndex; + sourceIndex; + mesh; + inheritTimelines; + constructor(mesh, skin, slotIndex, sourceIndex, source, inheritTimelines) { + this.mesh = mesh; + this.skin = skin; + this.slotIndex = slotIndex; + this.sourceIndex = sourceIndex; + this.source = source; + this.inheritTimelines = inheritTimelines; + } + }; + function readTimeline12(timelines, keys, timeline, defaultValue, scale) { + let keyMap = keys[0]; + let time = keyMap.time ?? 0; + let value = (keyMap.value ?? defaultValue) * scale; + let bezier = 0; + for (let frame = 0; ; frame++) { + timeline.setFrame(frame, time, value); + const nextMap = keys[frame + 1]; + if (!nextMap) { + timeline.shrink(bezier); + timelines.push(timeline); + return; + } + const time2 = nextMap.time ?? 0; + const value2 = (nextMap.value ?? defaultValue) * scale; + if (keyMap.curve) bezier = readCurve(keyMap.curve, timeline, bezier, frame, 0, time, time2, value, value2, scale); + time = time2; + value = value2; + keyMap = nextMap; + } + } + function readTimeline22(timelines, keys, timeline, name1, name2, defaultValue, scale) { + let keyMap = keys[0]; + let time = keyMap.time ?? 0; + let value1 = (keyMap[name1] ?? defaultValue) * scale; + let value2 = (keyMap[name2] ?? defaultValue) * scale; + let bezier = 0; + for (let frame = 0; ; frame++) { + timeline.setFrame(frame, time, value1, value2); + const nextMap = keys[frame + 1]; + if (!nextMap) { + timeline.shrink(bezier); + timelines.push(timeline); + return; + } + const time2 = nextMap.time ?? 0; + const nvalue1 = (nextMap[name1] ?? defaultValue) * scale; + const nvalue2 = (nextMap[name2] ?? defaultValue) * scale; + const curve = keyMap.curve; + if (curve) { + bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, value1, nvalue1, scale); + bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, value2, nvalue2, scale); + } + time = time2; + value1 = nvalue1; + value2 = nvalue2; + keyMap = nextMap; + } + } + function readDrawOrder2(skeletonData, keys, slotCount, folderSlots) { + const changes = keys.offsets; + if (!changes) return null; + const drawOrder = new Array(slotCount).fill(-1); + const unchanged = new Array(slotCount - changes.length); + let originalIndex = 0, unchangedIndex = 0; + for (const offsetMap of changes) { + const slot = skeletonData.findSlot(offsetMap.slot); + if (slot == null) throw new Error(`Draw order slot not found: ${offsetMap.slot}`); + let index = 0; + if (!folderSlots) + index = slot.index; + else { + index = -1; + for (let i = 0; i < slotCount; i++) { + if (folderSlots[i] === slot.index) { + index = i; + break; + } + } + if (index === -1) throw new Error(`Slot not in folder: ${offsetMap.slot}`); + } + while (originalIndex !== index) + unchanged[unchangedIndex++] = originalIndex++; + drawOrder[originalIndex + offsetMap.offset] = originalIndex++; + } + while (originalIndex < slotCount) + unchanged[unchangedIndex++] = originalIndex++; + for (let i = slotCount - 1; i >= 0; i--) + if (drawOrder[i] === -1) drawOrder[i] = unchanged[--unchangedIndex]; + return drawOrder; + } + function readCurve(curve, timeline, bezier, frame, value, time1, time2, value1, value2, scale) { + if (curve === "stepped") { + timeline.setStepped(frame); + return bezier; + } + const i = value << 2; + const cx1 = curve[i]; + const cy1 = curve[i + 1] * scale; + const cx2 = curve[i + 2]; + const cy2 = curve[i + 3] * scale; + timeline.setBezier(bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2); + return bezier + 1; + } + function getValue(map, property, defaultValue) { + return map[property] !== void 0 ? map[property] : defaultValue; + } + + // spine-core/src/SkeletonPhysicsMovement.ts + var SkeletonPhysicsMovement = class { + /** + * Creates a movement tracker for a skeleton displayed by a host runtime object. + * @param skeleton The skeleton whose physics constraints receive inherited movement. + * @param adapter Runtime-specific hooks used to read and convert the host object's transform. + * @param options Initial movement inheritance values. + */ + constructor(skeleton, adapter, options = {}) { + this.skeleton = skeleton; + this.adapter = adapter; + this.positionInheritanceFactorX = options.positionInheritanceX ?? 0; + this.positionInheritanceFactorY = options.positionInheritanceY ?? 0; + this.rotationInheritanceFactor = options.rotationInheritance ?? 0; + } + positionInheritanceFactorX = 0; + positionInheritanceFactorY = 0; + rotationInheritanceFactor = 0; + hasLastTransform = false; + lastX = 0; + lastY = 0; + lastZ = 0; + lastRotation = 0; + currentTransform = { x: 0, y: 0, z: 0, rotation: 0 }; + currentPosition = { x: 0, y: 0, z: 0 }; + lastPosition = { x: 0, y: 0, z: 0 }; + /** Horizontal position inheritance factor. `0` disables horizontal position inheritance. */ + get positionInheritanceX() { + return this.positionInheritanceFactorX; + } + /** Vertical position inheritance factor. `0` disables vertical position inheritance. */ + get positionInheritanceY() { + return this.positionInheritanceFactorY; + } + /** + * Sets how much host object translation is inherited by skeleton physics constraints. + * Use `(1, 1)` for normal inheritance, or `(0, 0)` to disable position inheritance. + * @param x The horizontal position inheritance factor. + * @param y The vertical position inheritance factor. + */ + setPositionInheritance(x, y) { + const wasDisabled = this.positionInheritanceFactorX === 0 && this.positionInheritanceFactorY === 0; + const isEnabled = x !== 0 || y !== 0; + this.positionInheritanceFactorX = x; + this.positionInheritanceFactorY = y; + if (wasDisabled && isEnabled) this.resetPosition(); + } + /** Rotation inheritance factor. `0` disables rotation inheritance. */ + get rotationInheritance() { + return this.rotationInheritanceFactor; + } + /** + * Sets how much host object rotation is inherited by skeleton physics constraints. + * @param value The rotation inheritance factor. + */ + set rotationInheritance(value) { + const wasDisabled = this.rotationInheritanceFactor === 0; + this.rotationInheritanceFactor = value; + if (wasDisabled && value !== 0) this.resetRotation(); + } + /** Resets the previous position used to calculate inherited translation. */ + resetPosition() { + const transform = this.currentTransform; + const readRotation = !this.hasLastTransform && this.rotationInheritanceFactor !== 0; + this.adapter.readTransform(transform, readRotation); + this.lastX = transform.x; + this.lastY = transform.y; + this.lastZ = transform.z; + if (readRotation) this.lastRotation = transform.rotation; + this.hasLastTransform = true; + } + /** Resets the previous rotation used to calculate inherited rotation. */ + resetRotation() { + const transform = this.currentTransform; + this.adapter.readTransform(transform, true); + this.lastRotation = transform.rotation; + if (!this.hasLastTransform) { + this.lastX = transform.x; + this.lastY = transform.y; + this.lastZ = transform.z; + } + this.hasLastTransform = true; + } + /** Resets both previous position and previous rotation. */ + resetTransform() { + const transform = this.currentTransform; + this.adapter.readTransform(transform, true); + this.setLastTransform(transform.x, transform.y, transform.z, transform.rotation); + } + /** + * Applies host object transform movement since the previous call to the skeleton's physics constraints. + * + * The first call records the current transform as the baseline and does not apply movement. + */ + applyTransformMovement() { + const inheritPosition = this.positionInheritanceFactorX !== 0 || this.positionInheritanceFactorY !== 0; + const inheritRotation = this.rotationInheritanceFactor !== 0; + if (!inheritPosition && !inheritRotation) return; + const transform = this.currentTransform; + this.adapter.readTransform(transform, inheritRotation); + const { x, y, z } = transform; + const currentRotation = inheritRotation ? transform.rotation : this.lastRotation; + const positionChanged = x !== this.lastX || y !== this.lastY || z !== this.lastZ; + if (this.hasLastTransform) { + if (!positionChanged && currentRotation === this.lastRotation) return; + if (inheritPosition && positionChanged) this.applyPositionMovement(x, y, z); + if (inheritRotation && currentRotation !== this.lastRotation) this.applyRotationMovement(currentRotation); + } + this.setLastTransform(x, y, z, currentRotation); + } + applyPositionMovement(currentX, currentY, currentZ) { + const currentPosition = this.currentPosition; + currentPosition.x = currentX; + currentPosition.y = currentY; + currentPosition.z = currentZ; + this.adapter.worldToSkeleton(currentPosition); + const lastPosition = this.lastPosition; + lastPosition.x = this.lastX; + lastPosition.y = this.lastY; + lastPosition.z = this.lastZ; + this.adapter.worldToSkeleton(lastPosition); + this.skeleton.physicsTranslate( + (currentPosition.x - lastPosition.x) * this.positionInheritanceFactorX, + (currentPosition.y - lastPosition.y) * this.positionInheritanceFactorY + ); + } + applyRotationMovement(currentRotation) { + const rotationFactor = this.rotationInheritanceFactor; + if (rotationFactor === 0) return; + this.skeleton.physicsRotate(0, 0, this.getRotationDelta(currentRotation, this.lastRotation) * rotationFactor); + } + setLastTransform(x, y, z, rotation) { + this.lastX = x; + this.lastY = y; + this.lastZ = z; + this.lastRotation = rotation; + this.hasLastTransform = true; + } + getRotationDelta(current, previous) { + let delta = current - previous; + delta = (delta + 180) % 360 - 180; + return delta < -180 ? delta + 360 : delta; + } + }; + + // spine-core/src/SkeletonRendererCore.ts + var SkeletonRendererCore = class { + commandPool = new CommandPool(); + worldVertices = new Float32Array(12 * 1024); + quadIndices = new Uint16Array([0, 1, 2, 2, 3, 0]); + clipping = new SkeletonClipping(); + renderCommands = []; + render(skeleton, pma = false, inColor, stride = 2, slotZOffset = 0) { + this.commandPool.reset(); + this.renderCommands.length = 0; + const clipper = this.clipping; + let z = 0; + const drawOrder = skeleton.drawOrder.appliedPose; + for (let i = 0, n = drawOrder.length; i < n; i++) { + const slot = drawOrder[i]; + if (!slot.bone.active) { + clipper.clipEnd(slot); + continue; + } + const pose = slot.appliedPose; + const attachment = pose.attachment; + if (!attachment) { + clipper.clipEnd(slot); + continue; + } + const slotColor = pose.color; + const alpha = slotColor.a; + if (alpha === 0 && !(attachment instanceof ClippingAttachment)) { + clipper.clipEnd(slot); + continue; + } + let vertices; + let verticesCount; + let uvs; + let indices; + let indicesCount; + let attachmentColor; + let texture; + if (attachment instanceof RegionAttachment) { + attachmentColor = attachment.color; + if (attachmentColor.a === 0) { + clipper.clipEnd(slot); + continue; + } + const sequence = attachment.sequence; + const sequenceIndex = sequence.resolveIndex(pose); + attachment.computeWorldVertices(slot, attachment.getOffsets(pose), this.worldVertices, 0, stride); + vertices = this.worldVertices; + verticesCount = 4; + uvs = sequence.getUVs(sequenceIndex); + indices = this.quadIndices; + indicesCount = 6; + texture = sequence.regions[sequenceIndex]?.texture; + } else if (attachment instanceof MeshAttachment) { + attachmentColor = attachment.color; + if (attachmentColor.a === 0) { + clipper.clipEnd(slot); + continue; + } + if (this.worldVertices.length < attachment.worldVerticesLength) + this.worldVertices = new Float32Array(attachment.worldVerticesLength); + attachment.computeWorldVertices(skeleton, slot, 0, attachment.worldVerticesLength, this.worldVertices, 0, stride); + vertices = this.worldVertices; + verticesCount = attachment.worldVerticesLength >> 1; + const sequence = attachment.sequence; + const sequenceIndex = sequence.resolveIndex(pose); + uvs = sequence.getUVs(sequenceIndex); + indices = attachment.triangles; + indicesCount = indices.length; + texture = sequence.regions[sequenceIndex]?.texture; + } else if (attachment instanceof ClippingAttachment) { + clipper.clipEnd(slot); + clipper.clipStart(skeleton, slot, attachment); + continue; + } else { + clipper.clipEnd(slot); + continue; + } + if (!texture) { + clipper.clipEnd(slot); + continue; + } + const skelColor = skeleton.color; + let color, darkColor; + if (pma) { + let a; + if (inColor) { + a = Math.floor(inColor[3] * skelColor.a * slotColor.a * attachmentColor.a * 255); + const r = Math.floor(a * inColor[0] * skelColor.r * slotColor.r * attachmentColor.r); + const g = Math.floor(a * inColor[1] * skelColor.g * slotColor.g * attachmentColor.g); + const b = Math.floor(a * inColor[2] * skelColor.b * slotColor.b * attachmentColor.b); + color = a << 24 | r << 16 | g << 8 | b; + } else { + a = Math.floor(skelColor.a * slotColor.a * attachmentColor.a * 255); + const r = Math.floor(a * skelColor.r * slotColor.r * attachmentColor.r); + const g = Math.floor(a * skelColor.g * slotColor.g * attachmentColor.g); + const b = Math.floor(a * skelColor.b * slotColor.b * attachmentColor.b); + color = a << 24 | r << 16 | g << 8 | b; + } + darkColor = 4278190080; + if (pose.darkColor) { + const { r, g, b } = pose.darkColor; + darkColor = 4278190080 | Math.floor(r * a) << 16 | Math.floor(g * a) << 8 | Math.floor(b * a); + } + } else { + if (inColor) { + const a = Math.floor(inColor[3] * skelColor.a * slotColor.a * attachmentColor.a * 255); + const r = Math.floor(inColor[0] * skelColor.r * slotColor.r * attachmentColor.r * 255); + const g = Math.floor(inColor[1] * skelColor.g * slotColor.g * attachmentColor.g * 255); + const b = Math.floor(inColor[2] * skelColor.b * slotColor.b * attachmentColor.b * 255); + color = a << 24 | r << 16 | g << 8 | b; + } else { + const a = Math.floor(skelColor.a * slotColor.a * attachmentColor.a * 255); + const r = Math.floor(skelColor.r * slotColor.r * attachmentColor.r * 255); + const g = Math.floor(skelColor.g * slotColor.g * attachmentColor.g * 255); + const b = Math.floor(skelColor.b * slotColor.b * attachmentColor.b * 255); + color = a << 24 | r << 16 | g << 8 | b; + } + darkColor = 0; + if (pose.darkColor) { + const { r, g, b } = pose.darkColor; + darkColor = Math.floor(r * 255) << 16 | Math.floor(g * 255) << 8 | Math.floor(b * 255); + } + } + if (clipper.isClipping()) { + clipper.clipTrianglesUnpacked(vertices, 0, indices, indicesCount, uvs, stride); + vertices = clipper.clippedVerticesTyped; + verticesCount = clipper.clippedVerticesLength / stride; + uvs = clipper.clippedUVsTyped; + indices = clipper.clippedTrianglesTyped; + indicesCount = clipper.clippedTrianglesLength; + } + const cmd = this.commandPool.getCommand(verticesCount, indicesCount, stride); + cmd.blendMode = slot.data.blendMode; + cmd.texture = texture; + cmd.positions.set(vertices.subarray(0, verticesCount * stride)); + if (stride >= 3) { + for (let j = 2, n2 = verticesCount * stride; j < n2; j += stride) + cmd.positions[j] = z; + } + cmd.uvs.set(uvs.subarray(0, verticesCount << 1)); + for (let j = 0; j < verticesCount; j++) { + cmd.colors[j] = color; + cmd.darkColors[j] = darkColor; + } + if (indices instanceof Uint16Array) { + cmd.indices.set(indices.subarray(0, indicesCount)); + } else { + cmd.indices.set(indices.slice(0, indicesCount)); + } + this.renderCommands.push(cmd); + z += slotZOffset; + clipper.clipEnd(slot); + } + clipper.clipEnd(); + return this.batchCommands(stride); + } + batchSubCommands(commands, first, last, numVertices, numIndices, stride) { + const firstCmd = commands[first]; + const batched = this.commandPool.getCommand(numVertices, numIndices, stride); + batched.blendMode = firstCmd.blendMode; + batched.texture = firstCmd.texture; + let positionsOffset = 0; + let uvsOffset = 0; + let colorsOffset = 0; + let indicesOffset = 0; + let vertexOffset = 0; + for (let i = first; i <= last; i++) { + const cmd = commands[i]; + batched.positions.set(cmd.positions, positionsOffset); + positionsOffset += cmd.numVertices * stride; + batched.uvs.set(cmd.uvs, uvsOffset); + uvsOffset += cmd.numVertices << 1; + batched.colors.set(cmd.colors, colorsOffset); + batched.darkColors.set(cmd.darkColors, colorsOffset); + colorsOffset += cmd.numVertices; + for (let j = 0; j < cmd.numIndices; j++) + batched.indices[indicesOffset + j] = cmd.indices[j] + vertexOffset; + indicesOffset += cmd.numIndices; + vertexOffset += cmd.numVertices; + } + return batched; + } + batchCommands(stride) { + if (this.renderCommands.length === 0) return void 0; + let root; + let last; + let first = this.renderCommands[0]; + let startIndex = 0; + let i = 1; + let numVertices = first.numVertices; + let numIndices = first.numIndices; + while (i <= this.renderCommands.length) { + const cmd = i < this.renderCommands.length ? this.renderCommands[i] : null; + if (cmd && cmd.numVertices === 0 && cmd.numIndices === 0) { + i++; + continue; + } + const canBatch = cmd !== null && cmd.texture === first.texture && cmd.blendMode === first.blendMode && cmd.colors[0] === first.colors[0] && cmd.darkColors[0] === first.darkColors[0] && numIndices + cmd.numIndices < 65535; + if (canBatch) { + numVertices += cmd.numVertices; + numIndices += cmd.numIndices; + } else { + const batched = this.batchSubCommands( + this.renderCommands, + startIndex, + i - 1, + numVertices, + numIndices, + stride + ); + if (!last) { + root = last = batched; + } else { + last.next = batched; + last = batched; + } + if (i === this.renderCommands.length) break; + first = this.renderCommands[i]; + startIndex = i; + numVertices = first.numVertices; + numIndices = first.numIndices; + } + i++; + } + return root; + } + }; + var CommandPool = class { + pool = []; + inUse = []; + getCommand(numVertices, numIndices, stride) { + let cmd; + for (const c of this.pool) { + if (c._positions.length >= numVertices * stride && c._indices.length >= numIndices) { + cmd = c; + break; + } + } + if (!cmd) { + const _positions = new Float32Array(numVertices * stride); + const _uvs = new Float32Array(numVertices << 1); + const _colors = new Uint32Array(numVertices); + const _darkColors = new Uint32Array(numVertices); + const _indices = new Uint16Array(numIndices); + cmd = { + positions: _positions, + uvs: _uvs, + colors: _colors, + darkColors: _darkColors, + indices: _indices, + _positions, + _uvs, + _colors, + _darkColors, + _indices, + numVertices, + numIndices, + blendMode: 0 /* Normal */, + texture: null + }; + } else { + this.pool.splice(this.pool.indexOf(cmd), 1); + cmd.next = void 0; + cmd.numVertices = numVertices; + cmd.numIndices = numIndices; + cmd.positions = cmd._positions.subarray(0, numVertices * stride); + cmd.uvs = cmd._uvs.subarray(0, numVertices << 1); + cmd.colors = cmd._colors.subarray(0, numVertices); + cmd.darkColors = cmd._darkColors.subarray(0, numVertices); + cmd.indices = cmd._indices.subarray(0, numIndices); + } + this.inUse.push(cmd); + return cmd; + } + reset() { + this.pool.push(...this.inUse); + this.inUse.length = 0; + } + }; + + // spine-canvas/src/CanvasTexture.ts + var CanvasTexture = class extends Texture { + constructor(image) { + super(image); + } + setFilters(minFilter, magFilter) { + } + setWraps(uWrap, vWrap) { + } + dispose() { + } + }; + + // spine-canvas/src/AssetManager.ts + var AssetManager = class extends AssetManagerBase { + constructor(pathPrefix = "", downloader = new Downloader()) { + super((image) => { + return new CanvasTexture(image); + }, pathPrefix, downloader); + } + }; + + // spine-canvas/src/SkeletonRenderer.ts + var worldVertices = Utils.newFloatArray(8); + var SkeletonRenderer = class _SkeletonRenderer { + static QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0]; + static VERTEX_SIZE = 2 + 2 + 4; + ctx; + triangleRendering = false; + debugRendering = false; + vertices = Utils.newFloatArray(8 * 1024); + tempColor = new Color(); + constructor(context) { + this.ctx = context; + } + draw(skeleton) { + if (this.triangleRendering) this.drawTriangles(skeleton); + else this.drawImages(skeleton); + } + drawImages(skeleton) { + const ctx = this.ctx; + const color = this.tempColor; + const skeletonColor = skeleton.color; + const drawOrder = skeleton.drawOrder.appliedPose; + if (this.debugRendering) ctx.strokeStyle = "green"; + for (let i = 0, n = drawOrder.length; i < n; i++) { + const slot = drawOrder[i]; + const bone = slot.bone; + if (!bone.active) continue; + const pose = slot.appliedPose; + const attachment = pose.attachment; + if (!(attachment instanceof RegionAttachment)) continue; + const sequence = attachment.sequence; + const sequenceIndex = sequence.resolveIndex(pose); + attachment.computeWorldVertices(slot, attachment.getOffsets(pose), worldVertices, 0, 2); + const region = sequence.regions[sequenceIndex]; + const image = region.texture.getImage(); + const slotColor = pose.color; + const regionColor = attachment.color; + color.set( + skeletonColor.r * slotColor.r * regionColor.r, + skeletonColor.g * slotColor.g * regionColor.g, + skeletonColor.b * slotColor.b * regionColor.b, + skeletonColor.a * slotColor.a * regionColor.a + ); + ctx.save(); + const boneApplied = bone.appliedPose; + ctx.transform(boneApplied.a, boneApplied.c, boneApplied.b, boneApplied.d, boneApplied.worldX, boneApplied.worldY); + const offsets = attachment.getOffsets(pose); + ctx.translate(offsets[0], offsets[1]); + ctx.rotate(attachment.rotation * Math.PI / 180); + const atlasScale = attachment.width / region.originalWidth; + ctx.scale(atlasScale * attachment.scaleX, atlasScale * attachment.scaleY); + let w = region.width, h = region.height; + ctx.translate(w / 2, h / 2); + if (region.degrees === 90) { + const t = w; + w = h; + h = t; + ctx.rotate(-Math.PI / 2); + } + ctx.scale(1, -1); + ctx.translate(-w / 2, -h / 2); + ctx.globalAlpha = color.a; + ctx.drawImage(image, image.width * region.u, image.height * region.v, w, h, 0, 0, w, h); + if (this.debugRendering) ctx.strokeRect(0, 0, w, h); + ctx.restore(); + } + } + drawTriangles(skeleton) { + const ctx = this.ctx; + const color = this.tempColor; + const skeletonColor = skeleton.color; + const drawOrder = skeleton.drawOrder.appliedPose; + let blendMode = null; + let vertices = this.vertices; + let triangles = null; + for (let i = 0, n = drawOrder.length; i < n; i++) { + const slot = drawOrder[i]; + const pose = slot.appliedPose; + const attachment = pose.attachment; + let texture; + if (attachment instanceof RegionAttachment) { + const sequence = attachment.sequence; + const sequenceIndex = sequence.resolveIndex(pose); + const uvs = sequence.getUVs(sequenceIndex); + const offsets = attachment.getOffsets(pose); + vertices = this.computeRegionVertices(slot, attachment, offsets, uvs, false); + triangles = _SkeletonRenderer.QUAD_TRIANGLES; + texture = (sequence.regions[sequenceIndex]?.texture).getImage(); + } else if (attachment instanceof MeshAttachment) { + const sequence = attachment.sequence; + const sequenceIndex = sequence.resolveIndex(pose); + const uvs = sequence.getUVs(sequenceIndex); + vertices = this.computeMeshVertices(slot, attachment, uvs, false); + triangles = attachment.triangles; + texture = (sequence.regions[sequenceIndex]?.texture).getImage(); + } else + continue; + if (texture) { + if (slot.data.blendMode !== blendMode) blendMode = slot.data.blendMode; + const slotColor = pose.color; + const attachmentColor = attachment.color; + color.set( + skeletonColor.r * slotColor.r * attachmentColor.r, + skeletonColor.g * slotColor.g * attachmentColor.g, + skeletonColor.b * slotColor.b * attachmentColor.b, + skeletonColor.a * slotColor.a * attachmentColor.a + ); + ctx.globalAlpha = color.a; + for (let j = 0; j < triangles.length; j += 3) { + const t1 = triangles[j] * 8, t2 = triangles[j + 1] * 8, t3 = triangles[j + 2] * 8; + const x0 = vertices[t1], y0 = vertices[t1 + 1], u0 = vertices[t1 + 6], v0 = vertices[t1 + 7]; + const x1 = vertices[t2], y1 = vertices[t2 + 1], u1 = vertices[t2 + 6], v1 = vertices[t2 + 7]; + const x2 = vertices[t3], y2 = vertices[t3 + 1], u2 = vertices[t3 + 6], v2 = vertices[t3 + 7]; + this.drawTriangle(texture, x0, y0, u0, v0, x1, y1, u1, v1, x2, y2, u2, v2); + if (this.debugRendering) { + ctx.strokeStyle = "green"; + ctx.beginPath(); + ctx.moveTo(x0, y0); + ctx.lineTo(x1, y1); + ctx.lineTo(x2, y2); + ctx.lineTo(x0, y0); + ctx.stroke(); + } + } + } + } + this.ctx.globalAlpha = 1; + } + // Adapted from http://extremelysatisfactorytotalitarianism.com/blog/?p=2120 + // Apache 2 licensed + drawTriangle(img, x0, y0, u0, v0, x1, y1, u1, v1, x2, y2, u2, v2) { + const ctx = this.ctx; + const width = img.width - 1; + const height = img.height - 1; + u0 *= width; + v0 *= height; + u1 *= width; + v1 *= height; + u2 *= width; + v2 *= height; + ctx.beginPath(); + ctx.moveTo(x0, y0); + ctx.lineTo(x1, y1); + ctx.lineTo(x2, y2); + ctx.closePath(); + x1 -= x0; + y1 -= y0; + x2 -= x0; + y2 -= y0; + u1 -= u0; + v1 -= v0; + u2 -= u0; + v2 -= v0; + let det = u1 * v2 - u2 * v1; + if (det === 0) return; + det = 1 / det; + const a = (v2 * x1 - v1 * x2) * det; + const b = (v2 * y1 - v1 * y2) * det; + const c = (u1 * x2 - u2 * x1) * det; + const d = (u1 * y2 - u2 * y1) * det; + const e = x0 - a * u0 - c * v0; + const f = y0 - b * u0 - d * v0; + ctx.save(); + ctx.transform(a, b, c, d, e, f); + ctx.clip(); + ctx.drawImage(img, 0, 0); + ctx.restore(); + } + computeRegionVertices(slot, region, offsets, uvs, pma) { + const skeletonColor = slot.skeleton.color; + const slotColor = slot.appliedPose.color; + const regionColor = region.color; + const alpha = skeletonColor.a * slotColor.a * regionColor.a; + const multiplier = pma ? alpha : 1; + const color = this.tempColor; + color.set( + skeletonColor.r * slotColor.r * regionColor.r * multiplier, + skeletonColor.g * slotColor.g * regionColor.g * multiplier, + skeletonColor.b * slotColor.b * regionColor.b * multiplier, + alpha + ); + region.computeWorldVertices(slot, offsets, this.vertices, 0, _SkeletonRenderer.VERTEX_SIZE); + const vertices = this.vertices; + vertices[RegionAttachment.C1R] = color.r; + vertices[RegionAttachment.C1G] = color.g; + vertices[RegionAttachment.C1B] = color.b; + vertices[RegionAttachment.C1A] = color.a; + vertices[RegionAttachment.U1] = uvs[0]; + vertices[RegionAttachment.V1] = uvs[1]; + vertices[RegionAttachment.C2R] = color.r; + vertices[RegionAttachment.C2G] = color.g; + vertices[RegionAttachment.C2B] = color.b; + vertices[RegionAttachment.C2A] = color.a; + vertices[RegionAttachment.U2] = uvs[2]; + vertices[RegionAttachment.V2] = uvs[3]; + vertices[RegionAttachment.C3R] = color.r; + vertices[RegionAttachment.C3G] = color.g; + vertices[RegionAttachment.C3B] = color.b; + vertices[RegionAttachment.C3A] = color.a; + vertices[RegionAttachment.U3] = uvs[4]; + vertices[RegionAttachment.V3] = uvs[5]; + vertices[RegionAttachment.C4R] = color.r; + vertices[RegionAttachment.C4G] = color.g; + vertices[RegionAttachment.C4B] = color.b; + vertices[RegionAttachment.C4A] = color.a; + vertices[RegionAttachment.U4] = uvs[6]; + vertices[RegionAttachment.V4] = uvs[7]; + return vertices; + } + computeMeshVertices(slot, mesh, uvs, pma) { + const skeleton = slot.skeleton; + const skeletonColor = skeleton.color; + const slotColor = slot.appliedPose.color; + const regionColor = mesh.color; + const alpha = skeletonColor.a * slotColor.a * regionColor.a; + const multiplier = pma ? alpha : 1; + const color = this.tempColor; + color.set( + skeletonColor.r * slotColor.r * regionColor.r * multiplier, + skeletonColor.g * slotColor.g * regionColor.g * multiplier, + skeletonColor.b * slotColor.b * regionColor.b * multiplier, + alpha + ); + const vertexCount = mesh.worldVerticesLength / 2; + let vertices = this.vertices; + if (vertices.length < mesh.worldVerticesLength) this.vertices = vertices = Utils.newFloatArray(mesh.worldVerticesLength); + mesh.computeWorldVertices(skeleton, slot, 0, mesh.worldVerticesLength, vertices, 0, _SkeletonRenderer.VERTEX_SIZE); + for (let i = 0, u = 0, v = 2; i < vertexCount; i++) { + vertices[v++] = color.r; + vertices[v++] = color.g; + vertices[v++] = color.b; + vertices[v++] = color.a; + vertices[v++] = uvs[u++]; + vertices[v++] = uvs[u++]; + v += 2; + } + return vertices; + } + }; + return __toCommonJS(index_exports); +})(); +//# sourceMappingURL=spine-canvas.js.map diff --git a/html/assets/spine/spine-canvas-clipping.js b/html/assets/spine/spine-canvas-clipping.js new file mode 100644 index 0000000..e055548 --- /dev/null +++ b/html/assets/spine/spine-canvas-clipping.js @@ -0,0 +1,243 @@ +'use strict'; + +// The official spine-canvas SkeletonRenderer does not process clipping +// attachments. Keep its triangle rasterizer, but feed it geometry produced by +// SkeletonClipping so the viewer matches Spine's draw order and clipping rules. + +const QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0]; +const BLEND_MODES = ['source-over', 'lighter', 'multiply', 'screen']; +const unpremultipliedImages = new WeakMap(); + +function rendererConstructor(spine) { + return (spine.canvas && spine.canvas.SkeletonRenderer) || spine.SkeletonRenderer; +} + +function imageFromAttachment(attachment) { + const region = attachment && attachment.region; + // 4.0 stores the texture on the atlas page, while the other bundled + // runtimes expose it directly on the attachment region. + const renderRegion = region && region.renderObject; + const texture = region && (region.texture + || (region.page && region.page.texture) + || (renderRegion && renderRegion.texture) + || (renderRegion && renderRegion.page && renderRegion.page.texture)); + return texture && typeof texture.getImage === 'function' ? texture.getImage() : null; +} + +// Canvas 2D always applies source-alpha blending. A Spine texture exported +// with PMA already has RGB multiplied by alpha, so drawing it directly would +// multiply translucent edge pixels a second time. Convert it once to straight +// alpha and cache the result; Canvas can then blend it correctly. +function imageForCanvas(image, context, premultipliedAlpha) { + if (!premultipliedAlpha || !image || (typeof image !== 'object' && typeof image !== 'function')) return image; + const cached = unpremultipliedImages.get(image); + if (cached) return cached; + try { + const ownerDocument = context.canvas && context.canvas.ownerDocument; + const doc = ownerDocument || (typeof document !== 'undefined' ? document : null); + if (!image.width || !image.height) return image; + let canvas; + if (doc) canvas = doc.createElement('canvas'); + else { + try { canvas = require('@napi-rs/canvas').createCanvas(image.width, image.height); } + catch (e) { return image; } + } + canvas.width = image.width; + canvas.height = image.height; + const ctx = canvas.getContext('2d', { willReadFrequently: true }); + ctx.drawImage(image, 0, 0); + const pixels = ctx.getImageData(0, 0, canvas.width, canvas.height); + const data = pixels.data; + for (let i = 0; i < data.length; i += 4) { + const alpha = data[i + 3]; + if (alpha > 0 && alpha < 255) { + const factor = 255 / alpha; + data[i] = Math.min(255, Math.round(data[i] * factor)); + data[i + 1] = Math.min(255, Math.round(data[i + 1] * factor)); + data[i + 2] = Math.min(255, Math.round(data[i + 2] * factor)); + } + } + ctx.putImageData(pixels, 0, 0); + unpremultipliedImages.set(image, canvas); + return canvas; + } catch (e) { + // If pixel access is unavailable, retain the original texture so preview + // remains usable instead of failing the whole frame. + return image; + } +} + +function unpackVertices(vertices, count) { + const positions = new Array(count * 2); + const uvs = new Array(count * 2); + for (let i = 0, p = 0; i < count; i++, p += 2) { + const source = i * 8; + positions[p] = vertices[source]; + positions[p + 1] = vertices[source + 1]; + uvs[p] = vertices[source + 6]; + uvs[p + 1] = vertices[source + 7]; + } + return { positions, uvs }; +} + +function drawInterleaved(base, image, vertices, triangles, darkColor) { + for (let i = 0; i < triangles.length; i += 3) { + const a = triangles[i] * 8; + const b = triangles[i + 1] * 8; + const c = triangles[i + 2] * 8; + base.drawTriangle(image, + vertices[a], vertices[a + 1], vertices[a + 6], vertices[a + 7], + vertices[b], vertices[b + 1], vertices[b + 6], vertices[b + 7], + vertices[c], vertices[c + 1], vertices[c + 6], vertices[c + 7], + [...vertices.slice(a+2,a+6), ...vertices.slice(b+2,b+6), ...vertices.slice(c+2,c+6)], + darkColor ? Array.from({length:3}, () => [darkColor.r,darkColor.g,darkColor.b,0]).flat() : undefined); + } +} + +function createLegacyRenderer(spine, context) { + const Renderer = rendererConstructor(spine); + if (!Renderer || !spine.SkeletonClipping) throw new Error('Spine Canvas 渲染器不完整'); + const base = new Renderer(context); + base.triangleRendering = true; + base.premultipliedAlpha = false; + const clipper = new spine.SkeletonClipping(); + const dark = new spine.Color(0, 0, 0, 0); + + base.draw = function drawWithClipping(skeleton) { + const composite = context.globalCompositeOperation; + const drawOrder = skeleton.drawOrder; + const pma = !!base.premultipliedAlpha; + try { + for (let i = 0; i < drawOrder.length; i++) { + const slot = drawOrder[i]; + if (slot.bone && slot.bone.active === false) { + clipper.clipEndWithSlot(slot); + continue; + } + const attachment = slot.getAttachment(); + if (attachment instanceof spine.ClippingAttachment) { + clipper.clipStart(slot, attachment); + continue; + } + + try { + if (!attachment) continue; + let vertices; + let triangles; + let vertexCount; + if (attachment instanceof spine.RegionAttachment) { + vertices = base.computeRegionVertices(slot, attachment, false); + triangles = Renderer.QUAD_TRIANGLES || QUAD_TRIANGLES; + vertexCount = 4; + } else if (attachment instanceof spine.MeshAttachment) { + vertices = base.computeMeshVertices(slot, attachment, false); + triangles = attachment.triangles; + vertexCount = attachment.worldVerticesLength >> 1; + } else { + continue; + } + + const sourceImage = imageFromAttachment(attachment); + const image = base.gpuDrawing ? sourceImage : imageForCanvas(sourceImage, context, pma); + if (!image) continue; + context.globalAlpha = base.tempColor.a; + context.globalCompositeOperation = BLEND_MODES[slot.data.blendMode] || 'source-over'; + if (clipper.isClipping()) { + const unpacked = unpackVertices(vertices, vertexCount); + clipper.clipTriangles(unpacked.positions, unpacked.positions.length, + triangles, triangles.length, unpacked.uvs, base.tempColor, dark, false); + drawInterleaved(base, image, clipper.clippedVertices, clipper.clippedTriangles, slot.darkColor); + } else { + drawInterleaved(base, image, vertices, triangles, slot.darkColor); + } + } finally { + clipper.clipEndWithSlot(slot); + } + } + } finally { + clipper.clipEnd(); + context.globalAlpha = 1; + context.globalCompositeOperation = composite; + } + }; + base.clipper = clipper; + return base; +} + +// 3.4/3.5 predate clipping attachments and compute packed vertices on attachments. +function create34Renderer(spine, context) { + const base = new (rendererConstructor(spine))(context); + base.triangleRendering = true; + base.premultipliedAlpha = false; + base.draw = skeleton => { + const composite = context.globalCompositeOperation; + try { + for (const slot of skeleton.drawOrder) { + const attachment = slot.getAttachment(); + if (!(attachment instanceof spine.RegionAttachment) && !(attachment instanceof spine.MeshAttachment)) continue; + const vertices = attachment.updateWorldVertices(slot, false); + const sourceImage = imageFromAttachment(attachment); + const image = base.gpuDrawing ? sourceImage : imageForCanvas(sourceImage, context, base.premultipliedAlpha); + if (!image) continue; + context.globalAlpha = vertices[5]; + context.globalCompositeOperation = BLEND_MODES[slot.data.blendMode] || 'source-over'; + drawInterleaved(base, image, vertices, attachment instanceof spine.MeshAttachment ? attachment.triangles : QUAD_TRIANGLES); + } + } finally { context.globalAlpha = 1; context.globalCompositeOperation = composite; } + }; + return base; +} + +function create43Renderer(spine, context) { + const Renderer = rendererConstructor(spine); + if (!Renderer || !spine.SkeletonRendererCore) throw new Error('Spine 4.3 Canvas 渲染器不完整'); + const base = new Renderer(context); + base.triangleRendering = true; + base.premultipliedAlpha = false; + const core = new spine.SkeletonRendererCore(); + + base.draw = function drawWithCoreClipping(skeleton) { + const composite = context.globalCompositeOperation; + try { + const pma = !!base.premultipliedAlpha; + for (let command = core.render(skeleton, false); command; command = command.next) { + const sourceImage = command.texture && command.texture.getImage && command.texture.getImage(); + const image = base.gpuDrawing ? sourceImage : imageForCanvas(sourceImage, context, pma); + if (!image) continue; + context.globalAlpha = ((command.colors[0] >>> 24) & 255) / 255; + context.globalCompositeOperation = BLEND_MODES[command.blendMode] || 'source-over'; + const positions = command.positions; + const uvs = command.uvs; + const indices = command.indices; + for (let i = 0; i < command.numIndices; i += 3) { + const a = indices[i] * 2; + const b = indices[i + 1] * 2; + const c = indices[i + 2] * 2; + const unpack = packed => [((packed>>>16)&255)/255,((packed>>>8)&255)/255,(packed&255)/255,((packed>>>24)&255)/255]; + const colors = [a,b,c].flatMap(index => unpack(command.colors[index/2])); + const darkColors = [a,b,c].flatMap(index => unpack(command.darkColors[index/2])); + base.drawTriangle(image, + positions[a], positions[a + 1], uvs[a], uvs[a + 1], + positions[b], positions[b + 1], uvs[b], uvs[b + 1], + positions[c], positions[c + 1], uvs[c], uvs[c + 1], colors, darkColors); + } + } + } finally { + context.globalAlpha = 1; + context.globalCompositeOperation = composite; + } + }; + base.clipper = core.clipping; + return base; +} + +function createRenderer(spine, context, runtimeDir) { + const renderer = (runtimeDir === '3.4' || runtimeDir === '3.5') ? create34Renderer(spine, context) : runtimeDir === '4.3' + ? create43Renderer(spine, context) + : createLegacyRenderer(spine, context); + // Explicitly disable debug drawing in every supported runtime. + renderer.debugRendering = false; + return require('./spine-webgl-rasterizer.js').attach(renderer, context); +} + +module.exports = { createRenderer }; diff --git a/html/assets/spine/spine-webgl-rasterizer.js b/html/assets/spine/spine-webgl-rasterizer.js new file mode 100644 index 0000000..8aa147d --- /dev/null +++ b/html/assets/spine/spine-webgl-rasterizer.js @@ -0,0 +1,177 @@ +'use strict'; + +// Decode file bytes without the Canvas 2D premultiply/unpremultiply round trip. +// In low-alpha PMA pixels that round trip destroys RGB precision before blending. +const preparedTextures = new WeakMap(); +async function prepareTexture(image, blob) { + if (typeof createImageBitmap !== 'function') return; + const options = { colorSpaceConversion: 'none' }; + const [pma, straight] = await Promise.all([ + createImageBitmap(blob, { ...options, premultiplyAlpha: 'none' }), + createImageBitmap(blob, { ...options, premultiplyAlpha: 'premultiply' }) + ]); + preparedTextures.set(image, { pma, straight }); +} + +// Rasterize adjacent mesh triangles together, with GPU edge ownership rules. +// Canvas clip()+drawImage() anti-aliases each triangle separately and exposes +// the background along shared edges, which looks like a wireframe overlay. +function createRasterizer(context) { + const document = context.canvas && context.canvas.ownerDocument; + if (!document || typeof context.getTransform !== 'function') return null; + const canvas = document.createElement('canvas'); + const gl = canvas.getContext('webgl', { + alpha: true, premultipliedAlpha: true, antialias: true, + preserveDrawingBuffer: true, depth: false, stencil: false + }); + if (!gl) return null; + function shader(type, source) { + const shader = gl.createShader(type); + gl.shaderSource(shader, source); gl.compileShader(shader); + if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) throw new Error(gl.getShaderInfoLog(shader)); + return shader; + } + const vertex = shader(gl.VERTEX_SHADER, ` + attribute vec2 position; + attribute vec2 uv; + attribute vec4 light; + attribute vec4 dark; + uniform vec2 resolution; + varying vec2 textureUV; + varying vec4 lightColor; + varying vec4 darkColor; + void main() { + vec2 p = position / resolution * 2.0 - 1.0; + gl_Position = vec4(p.x, -p.y, 0.0, 1.0); + textureUV = uv; + lightColor = light; darkColor = dark; + }`); + const fragment = shader(gl.FRAGMENT_SHADER, ` + precision mediump float; + uniform sampler2D image; + varying vec2 textureUV; + varying vec4 lightColor; + varying vec4 darkColor; + void main() { + vec4 color = texture2D(image, textureUV); + float alpha = color.a * lightColor.a; + // Textures are PMA in GPU memory. Light/dark colors arrive straight. + vec3 rgb = (color.rgb * lightColor.rgb + (color.a - color.rgb) * darkColor.rgb) * lightColor.a; + gl_FragColor = vec4(rgb, alpha); + }`); + const program = gl.createProgram(); gl.attachShader(program, vertex); gl.attachShader(program, fragment); gl.linkProgram(program); + if (!gl.getProgramParameter(program, gl.LINK_STATUS)) throw new Error(gl.getProgramInfoLog(program)); + gl.deleteShader(vertex); gl.deleteShader(fragment); + const buffer = gl.createBuffer(); + const position = gl.getAttribLocation(program, 'position'), uv = gl.getAttribLocation(program, 'uv'); + const resolution = gl.getUniformLocation(program, 'resolution'); + const light = gl.getAttribLocation(program, 'light'), dark = gl.getAttribLocation(program, 'dark'); + const textures = new Map(); + let coordinates = [], currentImage = null, currentAlpha = 1, currentMode = 'source-over', transform; + let disposed = false, lost = false; + let premultipliedAlpha = false; + canvas.addEventListener('webglcontextlost', event => { event.preventDefault(); lost = true; }); + function texture(image) { + const pma = image !== context.canvas && premultipliedAlpha; + let pair = textures.get(image); + if (!pair) { pair = {}; textures.set(image, pair); } + const key = pma ? 'pma' : 'straight'; + if (pair[key] && image !== context.canvas) return pair[key]; + const t = pair[key] || gl.createTexture(); gl.bindTexture(gl.TEXTURE_2D, t); + // Premultiply before interpolation so translucent edges do not darken. + gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !pma); + gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + const prepared = preparedTextures.get(image); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, prepared ? prepared[key] : image); + pair[key] = t; return t; + } + function flush() { + if (!coordinates.length) return; + gl.bindTexture(gl.TEXTURE_2D, texture(currentImage)); + // Premultiplied RGB factors; keep source-over alpha independently. + const factors = currentMode === 'lighter' ? [gl.ONE, gl.ONE] + : currentMode === 'multiply' ? [gl.DST_COLOR, gl.ONE_MINUS_SRC_ALPHA] + : currentMode === 'screen' ? [gl.ONE, gl.ONE_MINUS_SRC_COLOR] + : [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + gl.blendFuncSeparate(factors[0], factors[1], gl.ONE, gl.ONE_MINUS_SRC_ALPHA); + gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(coordinates), gl.STREAM_DRAW); + gl.drawArrays(gl.TRIANGLES, 0, coordinates.length / 12); + coordinates.length = 0; + } + return { + begin(pma = false) { + if (disposed || lost || gl.isContextLost()) return false; + premultipliedAlpha = pma; + const target = context.canvas; + if (canvas.width !== target.width) canvas.width = target.width; + if (canvas.height !== target.height) canvas.height = target.height; + transform = context.getTransform(); coordinates.length = 0; currentImage = null; + gl.viewport(0, 0, canvas.width, canvas.height); + gl.clearColor(0, 0, 0, 0); gl.clear(gl.COLOR_BUFFER_BIT); + gl.useProgram(program); gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + gl.enableVertexAttribArray(position); gl.vertexAttribPointer(position, 2, gl.FLOAT, false, 48, 0); + gl.enableVertexAttribArray(uv); gl.vertexAttribPointer(uv, 2, gl.FLOAT, false, 48, 8); + gl.enableVertexAttribArray(light); gl.vertexAttribPointer(light, 4, gl.FLOAT, false, 48, 16); + gl.enableVertexAttribArray(dark); gl.vertexAttribPointer(dark, 4, gl.FLOAT, false, 48, 32); + gl.uniform2f(resolution, canvas.width, canvas.height); + gl.activeTexture(gl.TEXTURE0); gl.uniform1i(gl.getUniformLocation(program, 'image'), 0); + gl.enable(gl.BLEND); gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA); + // Seed the same framebuffer with the actual Canvas pixels (solid or + // checkerboard background). CSS backgrounds cannot participate in blending. + currentImage = target; currentAlpha = 1; currentMode = 'source-over'; + const w = canvas.width, h = canvas.height; + for (const vertex of [[0,0,0,0],[w,0,1,0],[w,h,1,1],[0,0,0,0],[w,h,1,1],[0,h,0,1]]) + coordinates.push(...vertex, 1,1,1,1, 0,0,0,0); + flush(); currentImage = null; + return true; + }, + triangle(image, x0, y0, u0, v0, x1, y1, u1, v1, x2, y2, u2, v2, colors, darkColors) { + const alpha = context.globalAlpha; + const mode = context.globalCompositeOperation || 'source-over'; + if (image !== currentImage || alpha !== currentAlpha || mode !== currentMode) { flush(); currentImage = image; currentAlpha = alpha; currentMode = mode; } + const t = transform; + const points = [[x0,y0,u0,v0],[x1,y1,u1,v1],[x2,y2,u2,v2]]; + for (let i=0; i<3; i++) { + const [x,y,u,v] = points[i], j=i*4; + coordinates.push(t.a*x+t.c*y+t.e, t.b*x+t.d*y+t.f, u,v, + ...(colors ? colors.slice(j,j+4) : [1,1,1,alpha]), + ...(darkColors ? darkColors.slice(j,j+4) : [0,0,0,0])); + } + }, + end() { + flush(); + context.save(); + try { context.setTransform(1, 0, 0, 1, 0, 0); context.globalAlpha = 1; context.globalCompositeOperation = 'copy'; context.drawImage(canvas, 0, 0); } + finally { context.restore(); } + }, + dispose() { + if (disposed) return; disposed = true; + for (const pair of textures.values()) for (const value of Object.values(pair)) gl.deleteTexture(value); + textures.clear(); gl.deleteBuffer(buffer); gl.deleteProgram(program); + const extension = gl.getExtension('WEBGL_lose_context'); if (extension) extension.loseContext(); + } + }; +} + +function attach(renderer, context) { + let rasterizer; + try { rasterizer = createRasterizer(context); } catch (e) { return renderer; } + if (!rasterizer) return renderer; + const draw = renderer.draw.bind(renderer), triangle = renderer.drawTriangle.bind(renderer); + renderer.draw = skeleton => { + if (!rasterizer.begin(!!renderer.premultipliedAlpha)) return draw(skeleton); + renderer.gpuDrawing = true; + renderer.drawTriangle = rasterizer.triangle; + try { draw(skeleton); rasterizer.end(); } + finally { renderer.drawTriangle = triangle; renderer.gpuDrawing = false; } + }; + renderer.dispose = rasterizer.dispose; + renderer.rasterization = 'webgl'; + return renderer; +} + +module.exports = { createRasterizer, attach, prepareTexture }; diff --git a/html/assets/ui-animlist.png b/html/assets/ui-animlist.png new file mode 100644 index 0000000..8e8aa86 Binary files /dev/null and b/html/assets/ui-animlist.png differ diff --git a/html/assets/ui-timeline.png b/html/assets/ui-timeline.png new file mode 100644 index 0000000..0aff328 Binary files /dev/null and b/html/assets/ui-timeline.png differ diff --git a/html/assets/ui-toolbar.png b/html/assets/ui-toolbar.png new file mode 100644 index 0000000..15c9570 Binary files /dev/null and b/html/assets/ui-toolbar.png differ diff --git a/html/assets/ui-window.png b/html/assets/ui-window.png new file mode 100644 index 0000000..a2f1e11 Binary files /dev/null and b/html/assets/ui-window.png differ diff --git a/html/index.html b/html/index.html new file mode 100644 index 0000000..5e8b857 --- /dev/null +++ b/html/index.html @@ -0,0 +1,434 @@ + + + + + +SpineViewer — Eagle 插件 · 离线预览 Spine 骨骼动画 + + + + + + + + +
+ +
+ +
+ + +
+ +
+
+ Eagle 插件 · 完全离线 · 无 CDN +

在 Eagle 里直接预览
Spine 骨骼动画

+

+ SpineViewer 接管 skel / skel.bytes / json / atlas / atlas.txt, + 自动在素材库中配对骨骼、图集与贴图,识别版本并加载本地运行时。 + 点开任意一个文件,就能播放动画、切换皮肤、导出缩略图。 +

+ +
    +
  • 9内置运行时版本
    3.4 – 4.3
  • +
  • 8种界面语言
    简繁英日韩俄西德
  • +
  • 0网络请求
    运行时全部本地化
  • +
  • 400px缩略图自动生成
    可手动更新
  • +
+
+
+
+ SpineViewer 查看器界面:正在播放 Raptor 的 walk 动画,上方为浮动控制栏与动画列表,下方为时间轴 +
查看器窗口 · Raptor walk(Spine 4.3.75-beta)
+
+
+ Spine 官方 badge + 缩略图右下角带 Spine 官方 badge,左下角标注版本号(如 3.4.02) +
+
+
+
+
    +
  • skel
  • +
  • skel.bytes
  • +
  • json
  • +
  • atlas
  • +
  • atlas.txt
  • +
  • png / jpg / webp · 仍由 Eagle 原生预览
  • +
+
+
+ + +
+
+
+ FEATURES +

功能特性

+

下面每一项都对应插件的真实行为:跨 item 文件夹配对、旧版二进制解析、WebGL 渲染、缩略图补刷……不只是“能看动画”。

+
+
+
+ +

完全离线运行

+

官方运行时全部拷贝在插件本地 lib/ 目录,无 CDN、无网络请求。断网、内网环境同样可用。

+
+
+ +

跨文件夹自动配对

+

Eagle 会把每个文件拆成独立 item 文件夹。插件扫描同级目录,忽略 -pro / -ess / -pma 等后缀,自动关联骨骼、atlas 与贴图;点开贴图或 atlas 也能找到整套资源。

+
+
+ +

9 个版本自动识别

+

从骨骼数据读取版本号并匹配对应运行时:3.4 / 3.5 / 3.6 / 3.7 / 3.8 / 4.0 / 4.1 / 4.2 / 4.3,带 -beta 的完整版本号也会显示在水印中。

+
+
+ +

旧版二进制兼容

+

3.4–3.7 的 .skel / .skel.bytes 由移植自官方 SkeletonBinary 的解析层处理,保留网格、权重、变形、约束、裁剪与绘制顺序,无需编译或联网。

+
+
+ +

动画与皮肤切换

+

左上角浮动动画列表按需自适应,条目多时独立滚动,没有动画数据时自动隐藏;切换皮肤后按 setup pose 重建槽位附件,画面立即刷新。

+
+
+ +

完整时间轴

+

拖动定位、显示动画时长与帧号、秒刻度,蓝色短线标出骨骼 / 插槽 / 约束的关键帧位置,悬停即可查看时间与帧号。

+
+
+ +

精准回放控制

+

空格播放 / 暂停、循环开关、0–3x 速度调节;零时长动画自动按单帧静态姿势预览,不会出现空白画面。

+
+
+ +

WebGL 渲染 · PMA 预乘

+

WebGL 绘制网格三角形避免细线接缝,贴图直传 GPU,避免低透明度颜色被量化、光晕分层;预乘默认读取 atlas 的 pma 字段,手动切换后按素材记住。

+
+
+ +

缩略图自动化

+

导入即渲染首帧缩略图,带官方 badge 与版本号水印;资源暂时缺失时显示回退图,并在后台观察约两分钟,文件补齐稳定后自动生成、通知 Eagle 刷新。

+
+
+
    +
  • 复合后缀规范化 skel.bytes / atlas.txt
  • +
  • 50×50 方格背景(随缩放平移、参与混合)
  • +
  • 普通 JSON / TXT 安全放行
  • +
  • 8 种界面语言
  • +
  • 自动适配并居中
  • +
  • 左键平移 · 滚轮缩放 · 右键回中心
  • +
  • 设置存用户目录,不写 metadata.json
  • +
  • 手动缩略图跟随当前背景开关
  • +
+
+
+ + +
+
+
+ REAL UI +

实际界面

+

截图取自下方的交互演示,与插件查看器的控件布局、文案完全一致。浮动控制栏、动画列表与时间轴全部悬浮在画布上方,不挤占预览区域。

+
+ + + +
+
+

交互演示

+

复刻查看器的控件布局与文案,直接在页面上操作:切换动画、拖动时间轴、缩放画布试试。画面使用官方示例 Raptor(Spine 4.3.75-beta 导出,5 个动画),由 4.3 官方运行时 + 插件同款渲染模块在本地实时渲染,断网或直接双击打开同样可用。

+
+ +
+
+ + + + + + + Spine -- + +
+ + + +
+ +
+
+ +
+
+ 时长 -- + 蓝色短线:关键帧 +
+
+ + +
+
+ 0.00 / 0.00 秒 · 0 / 0 帧 +
+
+

空格 播放/暂停 · 左键拖拽平移 · 滚轮缩放 · 右键回到中心 · 拖动时间轴定位帧

+
+
+
+ + +
+
+
+ VERSIONS +

支持版本

+

覆盖 Spine 3.4 – 4.3:新版二进制直接支持,旧版二进制由同版本运行时与解析层处理。

+
+
    +
  • 3.4
  • 3.5
  • 3.6
  • 3.7
  • +
  • 3.8
  • 4.0
  • 4.1
  • 4.2
  • 4.3
  • +
+
+ + + + + + + + + + + + + + + + + + + + + +
版本支持格式说明
3.4 / 3.5JSON · SKEL · SKEL.BYTES · ATLAS · ATLAS.TXT使用官方 3.4.02 / 3.5.51 运行时与匹配的二进制分支,已验证多组官方示例的姿势对比。
3.6 / 3.7同上 + 二进制解析兼容层移植自官方同版本 spine-libgdx/SkeletonBinary.java;支持 3.7 的 IK 压缩/拉伸与音频事件字段,无需同时导入 JSON。
3.8 – 4.3JSON · SKEL / SKEL.BYTES · ATLAS二进制文件完整支持;4.3 等带 -beta 后缀的完整版本号也会显示在缩略图水印中。
+
+

损坏、截断或版本不匹配的文件会直接报告解析错误,不会以错误姿势渲染。

+
+
+ + +
+
+
+ WORKFLOW +

从导入到播放

+
+
    +
  1. + 01 +

    导入整套文件

    +

    把 .skel / .json + .atlas + .png 放在同一个文件夹导入 Eagle。

    +
  2. +
  3. + 02 +

    自动配对资源

    +

    点击任一文件,插件从同级 item 文件夹定位骨骼、atlas 与贴图,配套文件不在同一目录也能找到。

    +
  4. +
  5. + 03 +

    识别版本

    +

    读取骨骼数据中的版本号(JSON 读 skeleton.spine,SKEL 读二进制头部),加载匹配的本地运行时。

    +
  6. +
  7. + 04 +

    预览与缩略图

    +

    实时播放动画;缩略图自动生成,资源稍后补齐时会在后台自动重渲并通知 Eagle 刷新列表。

    +
  8. +
+
+
+ + +
+
+
+ INSTALL +

安装使用

+

在 Eagle 插件社区获取插件包,然后在 Eagle 插件面板(快捷键 P)安装即可。

+
+ + + Eagle 插件社区 + 在 Eagle 插件社区获取 SpineViewer + 插件页提供下载与安装说明;本页面不提供任何文件下载。 + + 前往插件页 → + +

原生二进制需要与目标平台匹配;如需自行构建,可在源码目录执行 npm ci --omit=dev 后从 Eagle 插件面板打包。

+ +
    +
  1. +

    安装插件

    +

    双击 .eagleplugin 安装;或在 Eagle 插件面板中右键选择“打包/加载插件”。

    +
  2. +
  3. +

    源码加载(可选)

    +

    克隆源码后在插件目录执行 npm ci --omit=dev,安装可选的 @napi-rs/canvas,再从插件面板加载。

    +
  4. +
  5. +

    导入素材

    +

    把同一套 Spine 导出文件放进同一个文件夹导入 Eagle,点击任意一个文件即可预览。

    +
  6. +
+ + +
+
+ + +
+
+
+ FAQ +

常见问题

+
+
+
+ 插件会接管普通图片吗? +

不会。插件只接管 skel、skel.bytes、json、atlas、atlas.txt(以及为复合后缀注册的 bytes / txt)。普通图片仍由 Eagle 原生预览,普通 TXT 与 JSON 也会保持原样。

+
+
+ 预乘(PMA)设置保存在哪里? +

保存在 Eagle 用户数据目录的 SpineViewer/preview-settings/ 下,按素材库与素材 ID 区分。不会修改 Eagle 的 metadata.json、标签或注释,也不会随素材导出到其他电脑。默认值读取配套 atlas 里的 pma 字段。

+
+
+ 为什么有些 JSON 打开后没有播放控件? +

只有当 skeleton.spine 是有效版本号时,插件才按 Spine 骨骼数据处理。普通 JSON、JSONC、空版本字段会立即放行,不写缩略图、不扫描资源库,查看器此时显示格式化的 JSON 文本。

+
+
+ 3.6 / 3.7 的二进制解析可靠吗? +

解析层移植自官方同版本 spine-libgdx/SkeletonBinary.java,并已验证官方 3.6.32 / 3.7.90 的七套示例。损坏、截断或版本不匹配会报告解析错误;官方 Raptor 数据中一条 IK 阶梯曲线的已知差异也已在测试中单独记录。

+
+
+ 缩略图是怎么生成的? +

使用 @napi-rs/canvas 在 Node 中跨 item 文件夹读取资源并渲染骨骼首帧,尺寸 400×400,右下角为 Spine 官方 badge,左下角为完整导出版本号。也可以在查看器里用当前帧一键生成;手动缩略图跟随当前背景开关。

+
+
+ 资源不齐的文件会怎样? +

缺少骨骼、atlas 或贴图时,前台最多短暂等待约半秒便显示回退图;后台会以逐步降频的方式观察约两分钟,链路补齐且文件稳定后自动生成缩略图并通知 Eagle 刷新。稍后补拖的文件会重新触发识别。

+
+
+

没有找到答案?欢迎把问题或建议发到 1181558906@qq.com。

+
+
+ +
+ + + + + + + + + + + + + + + + + diff --git a/html/style.css b/html/style.css new file mode 100644 index 0000000..3bb69c7 --- /dev/null +++ b/html/style.css @@ -0,0 +1,1190 @@ +/* ========================================================================== + SpineViewer 插件介绍网站样式 + - 品牌色取自插件图标(红),查看器演示区颜色取自 viewer/spine.html + - 零外部依赖,可离线打开 + ========================================================================== */ + +:root { + --bg: #131317; + --bg-2: #17171c; + --panel: #1c1c22; + --panel-2: #24242c; + --text: #e9e9ee; + --text-dim: #9d9da8; + --border: #2c2c35; + --accent: #f2353b; + --accent-2: #ff6a4d; + --cyan: #4fc1ff; + --card-shadow: 0 18px 40px rgba(0, 0, 0, .38); +} + +html[data-theme="light"] { + --bg: #f4f5f7; + --bg-2: #ebedf0; + --panel: #ffffff; + --panel-2: #f1f2f4; + --text: #1d1d22; + --text-dim: #63636e; + --border: #dcdee3; + --accent: #e01f26; + --accent-2: #ff5a3c; + --cyan: #0078d4; + --card-shadow: 0 16px 34px rgba(20, 20, 30, .10); +} + +* { box-sizing: border-box; } + +html { + scroll-behavior: smooth; + scroll-padding-top: 78px; +} + +body { + margin: 0; + background-color: var(--bg); + background-image: + radial-gradient(900px 520px at 12% 0%, color-mix(in srgb, var(--accent) 14%, transparent), transparent 62%), + radial-gradient(760px 460px at 88% 120px, color-mix(in srgb, var(--cyan) 10%, transparent), transparent 64%); + background-repeat: no-repeat; + color: var(--text); + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; + font-size: 15px; + line-height: 1.6; + -webkit-font-smoothing: antialiased; +} + +::selection { background: color-mix(in srgb, var(--accent) 38%, transparent); } + +a { color: inherit; } + +code { + font-family: ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono", monospace; + font-size: .86em; + background: color-mix(in srgb, var(--panel-2) 82%, transparent); + border: 1px solid var(--border); + border-radius: 6px; + padding: 1px 6px; + white-space: nowrap; +} + +kbd { + font-family: inherit; + font-size: .86em; + font-weight: 700; + background: var(--panel-2); + border: 1px solid var(--border); + border-bottom-width: 2px; + border-radius: 6px; + padding: 1px 7px; +} + +:focus-visible { + outline: 2px solid color-mix(in srgb, var(--cyan) 65%, transparent); + outline-offset: 2px; + border-radius: 6px; +} + +.wrap { + width: 100%; + max-width: 1140px; + margin: 0 auto; + padding: 0 22px; +} + +/* ---------- 顶栏 ---------- */ + +.topbar { + position: sticky; + top: 0; + z-index: 50; + background: color-mix(in srgb, var(--bg) 93%, transparent); + border-bottom: 1px solid var(--border); +} + +.topbar-inner { + display: flex; + align-items: center; + gap: 18px; + min-height: 62px; +} + +.brand { + display: inline-flex; + align-items: center; + gap: 10px; + text-decoration: none; + font-weight: 700; + letter-spacing: -0.01em; +} + +.brand img { border-radius: 8px; display: block; } + +.brand-name { font-size: 16px; } + +.brand-ver { + font-size: 11.5px; + font-weight: 600; + color: var(--text-dim); + border: 1px solid var(--border); + border-radius: 999px; + padding: 1px 9px; +} + +.nav { + margin-left: auto; + display: flex; + gap: 2px; +} + +.nav a { + text-decoration: none; + color: var(--text-dim); + font-size: 13.5px; + padding: 8px 12px; + border-radius: 8px; + transition: color .15s, background .15s; +} + +.nav a:hover { color: var(--text); background: var(--panel); } + +.topbar-actions { display: flex; align-items: center; gap: 10px; } + +.icon-btn { + width: 36px; + height: 36px; + display: grid; + place-items: center; + border-radius: 10px; + border: 1px solid var(--border); + background: var(--panel); + color: var(--text-dim); + cursor: pointer; + transition: color .15s, border-color .15s; +} + +.icon-btn:hover { color: var(--text); border-color: color-mix(in srgb, var(--accent) 45%, var(--border)); } + +.icon-btn svg { + width: 18px; + height: 18px; + fill: none; + stroke: currentColor; + stroke-width: 1.7; + stroke-linecap: round; + stroke-linejoin: round; +} + +.icon-sun { display: none; } +.icon-moon { display: block; } +html[data-theme="dark"] .icon-sun { display: block; } +html[data-theme="dark"] .icon-moon { display: none; } + +/* ---------- 按钮 ---------- */ + +.btn { + display: inline-flex; + align-items: center; + gap: 8px; + padding: 11px 20px; + border-radius: 11px; + font-size: 14px; + font-weight: 600; + text-decoration: none; + border: 1px solid transparent; + cursor: pointer; + transition: transform .16s, box-shadow .16s, border-color .16s, background .16s; + white-space: nowrap; +} + +.btn-primary { + background: linear-gradient(135deg, var(--accent), var(--accent-2)); + color: #fff; + box-shadow: 0 10px 26px color-mix(in srgb, var(--accent) 30%, transparent); +} + +.btn-primary:hover { transform: translateY(-1px); box-shadow: 0 14px 30px color-mix(in srgb, var(--accent) 38%, transparent); } + +.btn-ghost { + background: var(--panel); + border-color: var(--border); + color: var(--text); +} + +.btn-ghost:hover { border-color: color-mix(in srgb, var(--cyan) 45%, var(--border)); transform: translateY(-1px); } + +.btn-sm { padding: 8px 15px; font-size: 13px; border-radius: 9px; } + +.link-arrow { + color: var(--cyan); + text-decoration: none; + font-size: 14px; + font-weight: 600; +} + +.link-arrow:hover { text-decoration: underline; } + +/* ---------- Hero ---------- */ + +.hero { position: relative; padding: 70px 0 26px; overflow: hidden; } + +.hero-glow { + position: absolute; + left: 50%; + top: -140px; + transform: translateX(-50%); + width: min(1500px, 130vw); + height: 620px; + background: + radial-gradient(560px 300px at 26% 34%, color-mix(in srgb, var(--accent) 20%, transparent), transparent 66%), + radial-gradient(520px 300px at 74% 26%, color-mix(in srgb, var(--cyan) 15%, transparent), transparent 68%); + pointer-events: none; +} + +.hero-grid { + position: relative; + display: grid; + grid-template-columns: 1.02fr .98fr; + gap: 48px; + align-items: center; +} + +.pill { + display: inline-flex; + align-items: center; + gap: 8px; + padding: 7px 14px; + border-radius: 999px; + border: 1px solid var(--border); + background: color-mix(in srgb, var(--panel) 72%, transparent); + color: var(--text-dim); + font-size: 12.5px; +} + +.pill .dot { + width: 7px; + height: 7px; + border-radius: 50%; + background: #35d07f; + box-shadow: 0 0 0 0 rgba(53, 208, 127, .5); + animation: pulse 2.4s infinite; +} + +@keyframes pulse { + 0% { box-shadow: 0 0 0 0 rgba(53, 208, 127, .45); } + 70% { box-shadow: 0 0 0 7px rgba(53, 208, 127, 0); } + 100% { box-shadow: 0 0 0 0 rgba(53, 208, 127, 0); } +} + +.hero h1 { + margin: 20px 0 16px; + font-size: clamp(2.1rem, 4.1vw, 3.25rem); + line-height: 1.14; + letter-spacing: -0.022em; + font-weight: 800; +} + +.grad { + background: linear-gradient(115deg, var(--accent), var(--accent-2) 42%, var(--cyan)); + -webkit-background-clip: text; + background-clip: text; + color: transparent; +} + +.hero-sub { + margin: 0; + max-width: 560px; + color: var(--text-dim); + font-size: 15.5px; + line-height: 1.8; +} + +.hero-cta { + display: flex; + align-items: center; + gap: 16px; + flex-wrap: wrap; + margin: 28px 0 32px; +} + +.stats { + list-style: none; + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 12px; + padding: 0; + margin: 0; +} + +.stats li { + display: flex; + flex-direction: column; + gap: 4px; + padding: 13px 15px; + border: 1px solid var(--border); + border-radius: 13px; + background: color-mix(in srgb, var(--panel) 74%, transparent); +} + +.stats b { + font-size: 21px; + line-height: 1.1; + letter-spacing: -0.02em; + background: linear-gradient(120deg, var(--text), color-mix(in srgb, var(--cyan) 55%, var(--text))); + -webkit-background-clip: text; + background-clip: text; + color: transparent; +} + +.stats span { font-size: 11.5px; color: var(--text-dim); line-height: 1.55; } + +.hero-visual { display: flex; flex-direction: column; } + +.badge-chip { + display: flex; + align-items: center; + gap: 10px; + margin-top: 14px; + padding: 11px 14px; + border: 1px dashed var(--border); + border-radius: 12px; + color: var(--text-dim); + font-size: 12.5px; + line-height: 1.6; +} + +.badge-chip img { flex: none; border-radius: 5px; } + +.file-chips { + list-style: none; + display: flex; + flex-wrap: wrap; + gap: 10px; + padding: 0; + margin: 40px 0 0; +} + +.chip { + font-family: ui-monospace, "SFMono-Regular", Consolas, monospace; + font-size: 12px; + padding: 6px 13px; + border-radius: 999px; + border: 1px solid var(--border); + background: var(--panel); + color: var(--text-dim); +} + +.chip-on { + color: var(--cyan); + border-color: color-mix(in srgb, var(--cyan) 38%, var(--border)); + background: color-mix(in srgb, var(--cyan) 9%, var(--panel)); +} + +.chip-off { border-style: dashed; font-family: inherit; } + +/* ---------- 截图 ---------- */ + +.shot { + margin: 0; + border: 1px solid var(--border); + border-radius: 14px; + overflow: hidden; + background: var(--panel); + box-shadow: var(--card-shadow); +} + +.shot img { + display: block; + width: 100%; + height: auto; +} + +.shot .zoomable { cursor: zoom-in; } + +.shot figcaption { + padding: 9px 14px; + font-size: 12px; + color: var(--text-dim); + border-top: 1px solid var(--border); + background: color-mix(in srgb, var(--panel) 90%, transparent); + line-height: 1.6; +} + +.shot-hero { position: relative; } + +/* ---------- 通用区块 ---------- */ + +.section { padding: 86px 0; } + +.section.alt { + background: var(--bg-2); + border-top: 1px solid var(--border); + border-bottom: 1px solid var(--border); +} + +.section-head { max-width: 740px; margin-bottom: 42px; } + +.kicker { + font-size: 11.5px; + font-weight: 700; + letter-spacing: .2em; + color: var(--accent); +} + +.section h2 { + margin: 10px 0 12px; + font-size: clamp(1.6rem, 3vw, 2.15rem); + letter-spacing: -0.018em; +} + +.section-lead { + margin: 0; + color: var(--text-dim); + font-size: 15px; + line-height: 1.8; +} + +/* ---------- 功能特性 ---------- */ + +.features { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + gap: 16px; +} + +.feature-card { + padding: 22px; + border: 1px solid var(--border); + border-radius: 16px; + background: var(--panel); + transition: transform .18s, border-color .18s, box-shadow .18s; +} + +.feature-card:hover { + transform: translateY(-3px); + border-color: color-mix(in srgb, var(--accent) 46%, var(--border)); + box-shadow: var(--card-shadow); +} + +.f-icon { + width: 40px; + height: 40px; + display: grid; + place-items: center; + margin-bottom: 16px; + border-radius: 11px; + border: 1px solid var(--border); + background: linear-gradient(135deg, color-mix(in srgb, var(--accent) 16%, var(--panel)), color-mix(in srgb, var(--cyan) 12%, var(--panel))); + color: var(--accent); +} + +html[data-theme="dark"] .f-icon { color: color-mix(in srgb, var(--accent) 80%, #fff); } + +.f-icon svg { + width: 20px; + height: 20px; + fill: none; + stroke: currentColor; + stroke-width: 1.7; + stroke-linecap: round; + stroke-linejoin: round; +} + +.feature-card h3 { margin: 0 0 9px; font-size: 16px; letter-spacing: -0.01em; } + +.feature-card p { + margin: 0; + color: var(--text-dim); + font-size: 13.8px; + line-height: 1.75; +} + +.chips { + list-style: none; + display: flex; + flex-wrap: wrap; + gap: 10px; + padding: 0; + margin: 26px 0 0; +} + +.chips li { + padding: 7px 14px; + border-radius: 999px; + border: 1px solid var(--border); + background: color-mix(in srgb, var(--panel) 80%, transparent); + color: var(--text-dim); + font-size: 12.5px; +} + +/* ---------- 实际界面 ---------- */ + +.gallery { display: grid; gap: 16px; } + +.crop-grid { + display: grid; + grid-template-columns: minmax(170px, 215px) 1fr; + gap: 16px; + align-items: start; +} + +.crop.toolbar { grid-column: 1 / -1; } + +.crop.animlist { grid-column: 1; } + +.crop.timeline { grid-column: 2; } + +.crop.animlist img { + display: block; + width: 100%; + max-width: 128px; + margin: 18px auto; + box-shadow: 0 6px 18px rgba(0, 0, 0, .35); + border-radius: 6px; +} + +.crop.toolbar img, .crop.timeline img { border-radius: 6px; } + +.demo-block { margin-top: 58px; } + +.demo-head h3 { margin: 0 0 8px; font-size: 19px; letter-spacing: -0.01em; } + +.demo-head p { margin: 0 0 20px; color: var(--text-dim); font-size: 14.5px; line-height: 1.75; max-width: 780px; } + +/* ---------- 查看器界面复刻(配色与 viewer/spine.html 一致) ---------- */ + +.viewer { + position: relative; + height: 560px; + overflow: hidden; + border: 1px solid var(--v-border); + border-radius: 14px; + background: var(--v-bg); + color: var(--v-text); + font-size: 13px; + box-shadow: var(--card-shadow); + user-select: none; + -webkit-user-select: none; + outline: none; + --v-bg: #1e1e1e; + --v-panel: #252526; + --v-panel-2: #2d2d30; + --v-text: #e6e6e6; + --v-dim: #9d9d9d; + --v-accent: #4fc1ff; + --v-border: #3c3c3c; +} + +html[data-theme="light"] .viewer { + --v-bg: #f3f4f6; + --v-panel: #ffffff; + --v-panel-2: #f0f0f0; + --v-text: #1f1f1f; + --v-dim: #6b6b6b; + --v-accent: #0078d4; + --v-border: #dcdcdc; +} + +.v-toolbar { + position: absolute; + top: 12px; + left: 12px; + right: 12px; + z-index: 10; + display: flex; + align-items: center; + gap: 10px; + flex-wrap: wrap; + padding: 8px 12px; + border: 1px solid var(--v-border); + border-radius: 8px; + background: color-mix(in srgb, var(--v-panel) 97%, transparent); + box-shadow: 0 5px 18px rgba(0, 0, 0, .25); +} + +.v-field, .v-check { + display: inline-flex; + align-items: center; + gap: 4px; + color: var(--v-dim); + font-size: 12.5px; + white-space: nowrap; +} + +.v-check { cursor: pointer; } + +.v-field select { + background: var(--v-panel-2); + color: var(--v-text); + border: 1px solid var(--v-border); + border-radius: 4px; + padding: 4px 6px; + font-size: 12.5px; + font-family: inherit; +} + +.v-field input[type="range"] { width: 108px; accent-color: var(--v-accent); } + +.v-btn { + background: var(--v-panel-2); + color: var(--v-text); + border: 1px solid var(--v-border); + border-radius: 4px; + padding: 5px 10px; + font-size: 12.5px; + font-family: inherit; + cursor: pointer; + white-space: nowrap; + transition: background .15s; +} + +.v-btn:hover { background: var(--v-border); } + +.v-btn:disabled { opacity: .45; cursor: default; } + +.v-icon { padding: 5px 9px; } + +.v-spacer { flex: 1; } + +.v-version { color: var(--v-dim); font-size: 12px; white-space: nowrap; } + +.v-anim-panel { + position: absolute; + top: calc(22px + 46px); + left: 12px; + z-index: 9; + display: flex; + flex-direction: column; + width: max-content; + min-width: 128px; + max-width: min(260px, 34vw); + max-height: calc(100% - 46px - 68px - 56px); + overflow: hidden; + border: 1px solid var(--v-border); + border-radius: 7px; + background: color-mix(in srgb, var(--v-panel) 97%, transparent); + box-shadow: 0 5px 18px rgba(0, 0, 0, .28); +} + +.v-anim-title { + padding: 8px 10px; + color: var(--v-dim); + font-size: 12px; + border-bottom: 1px solid var(--v-border); + flex: none; +} + +.v-anim-list { + overflow: auto; + padding: 5px; + scrollbar-width: thin; + scrollbar-color: color-mix(in srgb, var(--v-dim) 58%, transparent) transparent; +} + +.v-anim-list::-webkit-scrollbar { width: 8px; height: 8px; } + +.v-anim-list::-webkit-scrollbar-thumb { + min-height: 28px; + border: 2px solid transparent; + border-radius: 999px; + background: color-mix(in srgb, var(--v-dim) 58%, transparent); + background-clip: padding-box; +} + +.v-anim-item { + display: block; + width: 100%; + min-width: 116px; + max-width: 248px; + padding: 6px 8px; + margin: 0 0 2px; + border: 0; + border-radius: 4px; + background: transparent; + color: var(--v-text); + font-size: 12.5px; + font-family: inherit; + text-align: left; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + cursor: pointer; +} + +.v-anim-item:hover { background: var(--v-panel-2); } + +.v-anim-item.active { + background: color-mix(in srgb, var(--v-accent) 20%, var(--v-panel)); + color: var(--v-accent); + box-shadow: inset 3px 0 0 var(--v-accent); +} + +.v-stage { position: absolute; inset: 0; overflow: hidden; cursor: grab; } + +.v-stage.dragging { cursor: grabbing; } + +.v-stage canvas { position: absolute; inset: 0; width: 100%; height: 100%; display: block; } + +.v-status { + position: absolute; + bottom: calc(22px + 68px); + left: 12px; + color: var(--v-dim); + font-size: 12px; + pointer-events: none; + opacity: 0; + transition: opacity .25s; + text-shadow: 0 1px 2px rgba(0, 0, 0, .3); +} + +.v-status.show { opacity: 1; } + +.v-timeline { + position: absolute; + left: 12px; + right: 12px; + bottom: 12px; + z-index: 10; + display: flex; + align-items: center; + gap: 10px; + padding: 6px 12px; + border: 1px solid var(--v-border); + border-radius: 8px; + background: color-mix(in srgb, var(--v-panel) 97%, transparent); + box-shadow: 0 -4px 18px rgba(0, 0, 0, .22); +} + +.v-tl-labels { + display: flex; + flex-direction: column; + justify-content: space-between; + align-self: stretch; + min-width: 136px; + padding: 8px 0 1px; +} + +.v-tl-label { color: var(--v-dim); font-size: 12px; white-space: nowrap; } + +.v-tl-legend { + display: flex; + align-items: center; + gap: 6px; + color: var(--v-dim); + font-size: 11px; + white-space: nowrap; + cursor: help; +} + +.v-tl-legend::before { + content: ""; + width: 10px; + height: 7px; + border-radius: 1px; + background: var(--v-accent); + opacity: .7; +} + +.v-track { position: relative; flex: 1; padding: 20px 0 0; min-width: 0; } + +.v-track input[type="range"] { + -webkit-appearance: none; + appearance: none; + display: block; + width: 100%; + height: 16px; + margin: 0; + background: transparent; + cursor: pointer; +} + +.v-track input[type="range"]::-webkit-slider-runnable-track { + height: 4px; + border-radius: 2px; + background: color-mix(in srgb, var(--v-dim) 38%, transparent); +} + +.v-track input[type="range"]::-webkit-slider-thumb { + -webkit-appearance: none; + width: 14px; + height: 14px; + margin-top: -5px; + border: 0; + border-radius: 50%; + background: var(--v-accent); + box-shadow: 0 0 0 4px color-mix(in srgb, var(--v-accent) 22%, transparent); +} + +.v-track input[type="range"]::-moz-range-track { + height: 4px; + border-radius: 2px; + background: color-mix(in srgb, var(--v-dim) 38%, transparent); +} + +.v-track input[type="range"]::-moz-range-thumb { + width: 14px; + height: 14px; + border: 0; + border-radius: 50%; + background: var(--v-accent); +} + +.v-track input[type="range"]:disabled { opacity: .45; cursor: default; } + +.v-ruler { position: absolute; top: 0; left: 7px; right: 7px; height: 19px; } + +.v-ruler .tick { + position: absolute; + bottom: 0; + width: 1px; + height: 5px; + background: var(--v-border); + transform: translateX(-.5px); +} + +.v-ruler .tick.major { height: 9px; background: var(--v-dim); } + +.v-ruler .tick-label { + position: absolute; + bottom: 8px; + color: var(--v-dim); + font-size: 10px; + font-variant-numeric: tabular-nums; + transform: translateX(-50%); + white-space: nowrap; +} + +.v-ruler .tick-label.first { transform: none; } + +.v-ruler .tick-label.last { transform: translateX(-100%); } + +.v-keys { position: relative; height: 8px; margin-top: 2px; } + +.v-keys span { + position: absolute; + top: 0; + width: 3px; + height: 8px; + background: var(--v-accent); + opacity: .62; + transform: translateX(-1.5px); + cursor: help; + transition: opacity .12s, transform .12s; +} + +.v-keys span:hover { opacity: 1; transform: translateX(-1.5px) scaleY(1.35); } + +.v-readout { + color: var(--v-dim); + font-size: 12px; + min-width: 178px; + font-variant-numeric: tabular-nums; + white-space: nowrap; + text-align: right; +} + +.demo-hint { + margin: 14px 0 0; + text-align: center; + color: var(--text-dim); + font-size: 12.5px; +} + +/* ---------- 支持版本 ---------- */ + +.v-chips { + list-style: none; + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 10px; + padding: 0; + margin: 0 0 28px; +} + +.v-chips li { + padding: 8px 18px; + border: 1px solid var(--border); + border-radius: 11px; + background: var(--panel); + font-weight: 600; + font-size: 14px; + font-variant-numeric: tabular-nums; +} + +.v-chips li.sep { border: 0; background: none; color: var(--text-dim); padding: 0; font-weight: 400; } + +.v-table-wrap { + overflow-x: auto; + border: 1px solid var(--border); + border-radius: 14px; + background: var(--panel); +} + +.v-table { width: 100%; min-width: 660px; border-collapse: collapse; font-size: 13.5px; } + +.v-table th { + text-align: left; + padding: 13px 18px; + font-size: 11.5px; + font-weight: 600; + letter-spacing: .1em; + color: var(--text-dim); + background: color-mix(in srgb, var(--panel-2) 70%, var(--panel)); + border-bottom: 1px solid var(--border); +} + +.v-table td { + padding: 15px 18px; + border-bottom: 1px solid var(--border); + line-height: 1.7; + vertical-align: top; + color: var(--text); +} + +.v-table tr:last-child td { border-bottom: 0; } + +.v-table td:first-child { white-space: nowrap; } + +.v-note { margin: 14px 0 0; color: var(--text-dim); font-size: 13px; } + +/* ---------- 工作流程 ---------- */ + +.steps { + list-style: none; + display: grid; + grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); + gap: 16px; + padding: 0; + margin: 0; +} + +.step { + padding: 22px; + border: 1px solid var(--border); + border-radius: 16px; + background: var(--panel); + position: relative; +} + +.step-num { font-size: 12px; font-weight: 700; letter-spacing: .14em; color: var(--accent); } + +.step h3 { margin: 12px 0 8px; font-size: 15.5px; } + +.step p { margin: 0; color: var(--text-dim); font-size: 13.5px; line-height: 1.75; } + +/* ---------- 安装使用 ---------- */ + +.dl-cta { + display: flex; + align-items: center; + justify-content: space-between; + gap: 20px; + flex-wrap: wrap; + padding: 22px 24px; + border: 1px solid var(--border); + border-radius: 16px; + background: var(--panel); + text-decoration: none; + color: var(--text); + transition: transform .18s, border-color .18s, box-shadow .18s; +} + +.dl-cta:hover { + transform: translateY(-3px); + border-color: color-mix(in srgb, var(--cyan) 50%, var(--border)); + box-shadow: var(--card-shadow); +} + +.dl-cta-info { display: flex; flex-direction: column; gap: 7px; min-width: 0; } + +.dl-cta strong { font-size: 16px; letter-spacing: -0.01em; } + +.dl-os { font-size: 12px; font-weight: 700; letter-spacing: .06em; color: var(--cyan); } + +.dl-meta { font-size: 12.5px; color: var(--text-dim); } + +.dl-note { margin: 16px 0 0; color: var(--text-dim); font-size: 12.5px; } + +.install-steps { + list-style: none; + display: grid; + grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); + gap: 16px; + padding: 0; + margin: 34px 0 0; +} + +.install-steps li { + padding: 20px; + border: 1px dashed var(--border); + border-radius: 14px; + background: color-mix(in srgb, var(--panel) 72%, transparent); +} + +.install-steps h3 { margin: 0 0 8px; font-size: 14.5px; } + +.install-steps p { margin: 0; color: var(--text-dim); font-size: 13px; line-height: 1.75; } + +.callout { + margin-top: 26px; + padding: 18px 20px; + border: 1px solid color-mix(in srgb, var(--cyan) 32%, var(--border)); + border-radius: 14px; + background: color-mix(in srgb, var(--cyan) 7%, var(--panel)); +} + +.callout strong { display: block; margin-bottom: 6px; font-size: 14px; } + +.callout p { margin: 0; color: var(--text-dim); font-size: 13.5px; line-height: 1.75; } + +/* ---------- 常见问题 ---------- */ + +.faq { display: grid; gap: 12px; max-width: 880px; } + +.faq details { + border: 1px solid var(--border); + border-radius: 14px; + background: var(--panel); + padding: 2px 20px; + transition: border-color .2s; +} + +.faq details[open] { border-color: color-mix(in srgb, var(--accent) 38%, var(--border)); } + +.faq summary { + display: flex; + align-items: center; + justify-content: space-between; + gap: 14px; + padding: 16px 0; + font-size: 14.5px; + font-weight: 600; + cursor: pointer; + list-style: none; +} + +.faq summary::-webkit-details-marker { display: none; } + +.faq summary::after { + content: "+"; + font-size: 19px; + font-weight: 400; + color: var(--accent); + transition: transform .2s; + flex: none; +} + +.faq details[open] summary::after { transform: rotate(45deg); } + +.faq details p { margin: 0 0 18px; color: var(--text-dim); font-size: 13.5px; line-height: 1.8; } + +.faq-contact { margin: 20px 0 0; color: var(--text-dim); font-size: 14px; } + +.faq-contact a { + color: var(--cyan); + font-weight: 600; + text-decoration: none; +} + +.faq-contact a:hover { text-decoration: underline; } + +/* ---------- 页脚 ---------- */ + +.footer { + border-top: 1px solid var(--border); + background: var(--bg-2); + padding: 40px 0 46px; +} + +.footer-inner { display: flex; align-items: center; } + +.foot-brand { display: flex; align-items: center; gap: 12px; } + +.foot-brand img { border-radius: 9px; } + +.foot-brand strong { display: block; font-size: 15px; } + +.foot-brand span { color: var(--text-dim); font-size: 12.5px; } + +/* ---------- 图片放大 ---------- */ + +.lightbox { + position: fixed; + inset: 0; + z-index: 100; + display: grid; + place-items: center; + padding: 4vmin; + background: rgba(8, 8, 11, .92); + cursor: zoom-out; + animation: fade .18s ease-out; +} + +.lightbox[hidden] { display: none; } + +.lightbox img { + max-width: 94vw; + max-height: 90vh; + border-radius: 12px; + border: 1px solid rgba(255, 255, 255, .18); + box-shadow: 0 34px 90px rgba(0, 0, 0, .6); +} + +@keyframes fade { from { opacity: 0; } to { opacity: 1; } } + +/* ---------- 滚动出现 ---------- */ + +.reveal { + opacity: 0; + transform: translateY(16px); + transition: opacity .55s ease, transform .55s ease; +} + +.reveal.visible { opacity: 1; transform: none; } + +@media (prefers-reduced-motion: reduce) { + html { scroll-behavior: auto; } + .reveal { opacity: 1; transform: none; transition: none; } + .pill .dot { animation: none; } +} + +/* ---------- 响应式 ---------- */ + +@media (max-width: 1020px) { + .hero-grid { grid-template-columns: 1fr; gap: 36px; } + .stats { grid-template-columns: repeat(2, 1fr); } + .crop-grid { grid-template-columns: 1fr; } + .crop.toolbar, .crop.animlist, .crop.timeline { grid-column: 1; } + .crop.animlist img { max-width: 132px; } +} + +@media (max-width: 880px) { + .nav { display: none; } + .topbar-actions { margin-left: auto; } + .section { padding: 64px 0; } + .viewer { height: 540px; } +} + +@media (max-width: 720px) { + .hero { padding-top: 52px; } + .v-toolbar { top: 8px; left: 8px; right: 8px; gap: 8px; padding: 8px 10px; } + .v-anim-panel { + top: 152px; + left: 8px; + max-height: calc(100% - 152px - 96px); + } + .v-timeline { left: 8px; right: 8px; bottom: 8px; gap: 8px; padding: 6px 10px; } + .v-tl-labels { min-width: 104px; } + .v-readout { font-size: 11px; } + .v-version { display: none; } +} + +@media (max-width: 520px) { + .wrap { padding: 0 16px; } + .stats { grid-template-columns: 1fr 1fr; gap: 10px; } + .brand-ver { display: none; } + .viewer { height: 520px; } + .v-tl-labels { min-width: 96px; } + .v-tl-legend { font-size: 10px; } + .v-readout { display: none; } +}