diff --git a/spine-cocos2dx/LICENSE b/spine-cocos2dx/LICENSE deleted file mode 100644 index 517ff9fbf..000000000 --- a/spine-cocos2dx/LICENSE +++ /dev/null @@ -1,26 +0,0 @@ -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/spine-cocos2dx/README.md b/spine-cocos2dx/README.md deleted file mode 100644 index 02c5ce136..000000000 --- a/spine-cocos2dx/README.md +++ /dev/null @@ -1,111 +0,0 @@ -# spine-cocos2dx v3.x & v4.x - -The spine-cocos2dx runtime provides functionality to load, manipulate and render [Spine](http://esotericsoftware.com) skeletal animation data using [cocos2d-x](https://cocos2d-x.org/cocos2dx/). spine-cocos2dx is based on [spine-cpp](../spine-cpp). - -## Licensing - -You are welcome to evaluate the Spine Runtimes and the examples we provide in this repository free of charge. - -You can integrate the Spine Runtimes into your software free of charge, but users of your software must have their own [Spine license](https://esotericsoftware.com/spine-purchase). Please make your users aware of this requirement! This option is often chosen by those making development tools, such as an SDK, game toolkit, or software library. - -In order to distribute your software containing the Spine Runtimes to others that don't have a Spine license, you need a [Spine license](https://esotericsoftware.com/spine-purchase) at the time of integration. Then you can distribute your software containing the Spine Runtimes however you like, provided others don't modify it or use it to create new software. If others want to do that, they'll need their own Spine license. - -For the official legal terms governing the Spine Runtimes, please read the [Spine Runtimes License Agreement](http://esotericsoftware.com/spine-runtimes-license) and Section 2 of the [Spine Editor License Agreement](http://esotericsoftware.com/spine-editor-license#s2). - -## Spine version - -spine-cocos2dx works with data exported from Spine 4.2.xx. - -spine-cocos2dx supports all Spine features. - -## Setup - -The setup for cocos2d-x differs from most other Spine Runtimes because the cocos2d-x distribution includes a copy of the Spine Runtime files. This is not ideal because these files may be old and fail to work with the latest Spine editor. Also it means if cocos2d-x is updated, you may get newer Spine Runtime files which can break your application if you are not using the latest Spine editor. For these reasons, we have requested cocos2d-x to cease distributing the Spine Runtime files, but they continue to do so. The following instructions allow you to use the official Spine cocos2d-x runtime with your cocos2d-x project. - -spine-cocos2dx works with both Cocos2d-x v3 and v4. The setup process is identical in both cases. The preferred way to integrate spine-cocos2dx into your Cocos2d-x project is to use the [Cocos2d-x CMake build system]. - -1. [Create a new C++ cocos2d-x project](https://docs.cocos2d-x.org/cocos2d-x/v4/en/editors_and_tools/cocosCLTool.html). Let's assume you created your project in a folder `/path/to/MyGame/` somewhere on your disk. -2. Download the Spine Runtimes source using git (`git clone https://github.com/esotericsoftware/spine-runtimes`) or download it as a zip via the download button above. Let's assume you cloned the Spine Runtimes to a folder `/path/to/spine-runtimes/` somewhere on your disk. -3. Open `MyGame/CMakeLists.txt` in a text editor and modify it as follows: - - After the line `project(${APP_NAME})` add the following line: - ``` - include(/path/to/spine-runtimes/spine-cocos2dx/spine-cocos2dx.cmake) - ``` - - Before the line `target_link_libraries(${APP_NAME} cocos2d)`add the following line: - ``` - target_link_libraries(${APP_NAME} spine-cpp spine-cocos2dx) - ``` -4. [Proceed with generating IDE files via CMake](https://docs.cocos2d-x.org/cocos2d-x/v4/en/installation/CMake-Guide.html) and build and run your project. - -For reference, have a look at our spine-cocos2dx example project in this repository described below. - -## Example - -The spine-cocos2dx example works on Windows, Linux, macOS, iOS, Linux, and Android, for both cocos2d-x v3 and v4. - -Please [install the reprequisit software](https://docs.cocos2d-x.org/cocos2d-x/v4/en/installation/prerequisites.html) as per the Cocos2d-x documentation. Ensure that the following programs are in your `PATH` environment variable and thus executable from the command line: - -- `git` -- `cmake` -- `python` - -Before you can compile and run the example project for a specific target platform, you need to clone the [Cocos2d-x repository](https://github.com/cocos2d/cocos2d-x) to `spine-runtimes/spine-cocos2dx/example/cocos2d` and download the dependencies: - -``` -cd spine-runtimes/spine-cocos2dx/example -git clone -b v4 --depth 1 https://github.com/cocos2d/cocos2d-x cocos2d -python cocos2d/download-deps.py -r yes -``` - -> **NOTE:** If you want to run the example with Cocos2d-x version 3, replace `-b v4` with `-b v3` in the `git clone` command. - -> **NOTE:** On macOS Big Sur, replace `python` with `python3`. - -You can now use CMake to create IDE projects for the target platform you want to compile and run the example on. - -### macOS - -Execute the following on the command line: - -``` -cd spine-runtimes/spine-cocos2dx/example -mkdir build-macos && cmake . -GXcode -Bbuild-macos -DCMAKE_OSX_ARCHITECTURES=x86_64 -open build-macos/spine-cocos2dx-example.xcodeproj -``` - -This will generate an Xcode project in `build-macos/spine-cocos2dx-example.xcodeproj` and open it in Xcode. To build and run the example, select the `spine-cocos2dx-example` scheme and press `CMD + R`. - -> **NOTE:** Passing `-DCMAKE_OSX_ARCHITECTURES=x86_64` to CMake is currently required, as Cocos2d-X only provides prebuilt x86_64 binaries for its external dependencies. - -### iOS - -Execute the following on the command line: - -``` -cd spine-runtimes/spine-cocos2dx/example -mkdir build-ios && cmake . -GXcode -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphoneos -Bbuild-ios -open build-ios/spine-cocos2dx-example.xcodeproj -``` - -This will generate an Xcode project in `build-ios/spine-cocos2dx-example.xcodeproj` and open it in Xcode. To build and run the example, select the `spine-cocos2dx-example` scheme and select a device or simulator to build for and run on. Finally, press `CMD + R` to build and run the example. - -### Android - -Open the project in `proj.android` in Android Studio. Make sure you have NDK version `24.0.8215888` installed via the SDK Manager. Alternatively, you can set the `ndkVersion` property in `proj.android/app/build.gradle` to the NDK version you have installed locally. - -### Windows - -Execute the following on the command line: - -``` -cd spine-runtimes/spine-cocos2dx/example -mkdir build-win -cmake . -G "Visual Studio 16 2019" -A Win32 -T host=x86 -Bbuild-win -``` - -You can then open the file `build-win/spine-cocos2dx-example.sln` with Visual Studio 2019. In the solution explorer, right click the `spine-cocos2dx-example` project, then click `Set as Startup Project` in the context menu. Finally, click the `Local Windows Debugger` button to build and run the example. - -## Notes - -- Images are premultiplied by cocos2d-x, so the Spine atlas images should _not_ use premultiplied alpha. -- Two color tinting needs to be enabled on a per-skeleton basis. Call `SkeletonRenderer::setTwoColorTine(true)` or `SkeletonAnimation::setTwoColorTint(true)` after you created the skeleton instance. Note that two color tinting requires a custom shader and vertex format. Skeletons rendered with two color tinting can therefore not be batched with single color tinted skeletons or other 2D cocos2d-x elements like sprites. However, two-color tinted skeletons will be batched if possible when rendered after one another. Attaching a child to a two color tinted skeleton will also break the batch. diff --git a/spine-cocos2dx/example/.cocos-project.json b/spine-cocos2dx/example/.cocos-project.json deleted file mode 100644 index 688993f31..000000000 --- a/spine-cocos2dx/example/.cocos-project.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "engine_version": "cocos2d-x-4.0", - "project_type": "cpp" -} \ No newline at end of file diff --git a/spine-cocos2dx/example/CMakeLists.txt b/spine-cocos2dx/example/CMakeLists.txt deleted file mode 100644 index be3dc54f4..000000000 --- a/spine-cocos2dx/example/CMakeLists.txt +++ /dev/null @@ -1,163 +0,0 @@ -#/**************************************************************************** -# Copyright (c) 2013-2014 cocos2d-x.org -# Copyright (c) 2015-2017 Chukong Technologies Inc. -# -# http://www.cocos2d-x.org -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -# ****************************************************************************/ - -cmake_minimum_required(VERSION 3.6) - -set(APP_NAME spine-cocos2dx-example) - -project(${APP_NAME}) - -set(BUILD_EXTENSIONS OFF CACHE BOOL "Build extensions" FORCE) - -include(../spine-cocos2dx.cmake) - -if(XCODE) - if(NOT DEFINED CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET) - SET (CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET 8.0) - endif() -endif() - -if(NOT DEFINED BUILD_ENGINE_DONE) # to test spine-cocos2dx-example into root project - set(COCOS2DX_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cocos2d) - set(CMAKE_MODULE_PATH ${COCOS2DX_ROOT_PATH}/cmake/Modules/) - - include(CocosBuildSet) - add_subdirectory(${COCOS2DX_ROOT_PATH}/cocos ${ENGINE_BINARY_PATH}/cocos/core) -endif() - -# record sources, headers, resources... -set(GAME_RES_FOLDER - "${CMAKE_CURRENT_SOURCE_DIR}/Resources" - ) -if(APPLE OR WINDOWS) - cocos_mark_multi_resources(common_res_files RES_TO "Resources" FOLDERS ${GAME_RES_FOLDER}) -endif() - -# add cross-platforms source files and header files -file(GLOB_RECURSE GAME_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/Classes/*.cpp") -file(GLOB_RECURSE GAME_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/Classes/*.h") -set(GAME_INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/Classes") - -if(ANDROID) - # change APP_NAME to the share library name for Android, it's value depend on AndroidManifest.xml - set(APP_NAME MyGame) - list(APPEND GAME_SOURCE - proj.android/app/jni/hellocpp/main.cpp - ) -elseif(LINUX) - list(APPEND GAME_SOURCE - proj.linux/main.cpp - ) -elseif(WINDOWS) - list(APPEND GAME_HEADER - proj.win32/main.h - proj.win32/resource.h - ) - list(APPEND GAME_SOURCE - proj.win32/main.cpp - proj.win32/game.rc - ${common_res_files} - ) -elseif(APPLE) - if(IOS) - list(APPEND GAME_HEADER - proj.ios_mac/ios/AppController.h - proj.ios_mac/ios/RootViewController.h - ) - set(APP_UI_RES - proj.ios_mac/ios/LaunchScreen.storyboard - proj.ios_mac/ios/LaunchScreenBackground.png - proj.ios_mac/ios/Images.xcassets - ) - list(APPEND GAME_SOURCE - proj.ios_mac/ios/main.m - proj.ios_mac/ios/AppController.mm - proj.ios_mac/ios/RootViewController.mm - proj.ios_mac/ios/Prefix.pch - ${APP_UI_RES} - ) - elseif(MACOSX) - set(APP_UI_RES - proj.ios_mac/mac/Icon.icns - proj.ios_mac/mac/Info.plist - ) - list(APPEND GAME_SOURCE - proj.ios_mac/mac/main.cpp - proj.ios_mac/mac/Prefix.pch - ${APP_UI_RES} - ) - endif() - list(APPEND GAME_SOURCE ${common_res_files}) -endif() - -# mark app complie info and libs info -set(all_code_files - ${GAME_HEADER} - ${GAME_SOURCE} - ) -if(NOT ANDROID) - add_executable(${APP_NAME} ${all_code_files}) -else() - add_library(${APP_NAME} SHARED ${all_code_files}) - add_subdirectory(${COCOS2DX_ROOT_PATH}/cocos/platform/android ${ENGINE_BINARY_PATH}/cocos/platform) - target_link_libraries(${APP_NAME} -Wl,--whole-archive cpp_android_spec -Wl,--no-whole-archive) -endif() - -# Link the spine-cpp and spine-cocos2dx library to the app -target_link_libraries(${APP_NAME} spine-cpp spine-cocos2dx) - -# Manually link to libz on iOS, the cocos2d-x build only pulls in libz.tbd -if(IOS) - target_link_libraries(${APP_NAME} z) -endif() - -target_link_libraries(${APP_NAME} cocos2d) -target_include_directories(${APP_NAME} - PRIVATE ${GAME_INCLUDE} - PRIVATE ${COCOS2DX_ROOT_PATH}/cocos/audio/include/ -) - -# mark app resources -setup_cocos_app_config(${APP_NAME}) -if(APPLE) - set_target_properties(${APP_NAME} PROPERTIES RESOURCE "${APP_UI_RES}") - - if(MACOSX) - set_xcode_property(${APP_NAME} INFOPLIST_FILE "${CMAKE_CURRENT_SOURCE_DIR}/proj.ios_mac/mac/Info.plist") - elseif(IOS) - set_xcode_property(${APP_NAME} INFOPLIST_FILE "${CMAKE_CURRENT_SOURCE_DIR}/proj.ios_mac/ios/Info.plist") - set_xcode_property(${APP_NAME} ASSETCATALOG_COMPILER_APPICON_NAME "AppIcon") - endif() - - # For code-signing, set the DEVELOPMENT_TEAM: - #set_xcode_property(${APP_NAME} DEVELOPMENT_TEAM "GRLXXXX2K9") -elseif(WINDOWS) - cocos_copy_target_dll(${APP_NAME}) -endif() - -if(LINUX OR WINDOWS) - cocos_get_resource_path(APP_RES_DIR ${APP_NAME}) - cocos_copy_target_res(${APP_NAME} LINK_TO ${APP_RES_DIR} FOLDERS ${GAME_RES_FOLDER}) -endif() \ No newline at end of file diff --git a/spine-cocos2dx/example/Classes/AppDelegate.cpp b/spine-cocos2dx/example/Classes/AppDelegate.cpp deleted file mode 100644 index c363f3c0a..000000000 --- a/spine-cocos2dx/example/Classes/AppDelegate.cpp +++ /dev/null @@ -1,138 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#include "AppDelegate.h" - -#include -#include - -#include "AppMacros.h" -#include "PhysicsExample.h" -#include -#include - -USING_NS_CC; -using namespace std; - -using namespace spine; - -DebugExtension debugExtension(SpineExtension::getInstance()); - -AppDelegate::AppDelegate() { -} - -AppDelegate::~AppDelegate() { - SkeletonBatch::destroyInstance(); - SkeletonTwoColorBatch::destroyInstance(); - debugExtension.reportLeaks(); -} - -bool AppDelegate::applicationDidFinishLaunching() { - // initialize director - auto director = Director::getInstance(); - auto glview = director->getOpenGLView(); - if (!glview) { - GLContextAttrs attrs = {8, 8, 8, 8, 0, 0}; - GLView::setGLContextAttrs(attrs); - glview = GLViewImpl::create("Spine Example"); - director->setOpenGLView(glview); - } - - // Set the design resolution -#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) - // a bug in DirectX 11 level9-x on the device prevents ResolutionPolicy::NO_BORDER from working correctly - glview->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, ResolutionPolicy::SHOW_ALL); -#else - glview->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, ResolutionPolicy::NO_BORDER); -#endif - - cocos2d::Size frameSize = glview->getFrameSize(); - - vector searchPath; - - // In this demo, we select resource according to the frame's height. - // If the resource size is different from design resolution size, you need to set contentScaleFactor. - // We use the ratio of resource's height to the height of design resolution, - // this can make sure that the resource's height could fit for the height of design resolution. - if (frameSize.height > mediumResource.size.height) { - // if the frame's height is larger than the height of medium resource size, select large resource. - searchPath.push_back(largeResource.directory); - director->setContentScaleFactor( - MIN(largeResource.size.height / designResolutionSize.height, largeResource.size.width / designResolutionSize.width)); - } else if (frameSize.height > smallResource.size.height) { - // if the frame's height is larger than the height of small resource size, select medium resource. - searchPath.push_back(mediumResource.directory); - director->setContentScaleFactor( - MIN(mediumResource.size.height / designResolutionSize.height, mediumResource.size.width / designResolutionSize.width)); - } else { - // if the frame's height is smaller than the height of medium resource size, select small resource. - searchPath.push_back(smallResource.directory); - director->setContentScaleFactor( - MIN(smallResource.size.height / designResolutionSize.height, smallResource.size.width / designResolutionSize.width)); - } - - searchPath.push_back("common"); - - // set search path - FileUtils::getInstance()->setSearchPaths(searchPath); - - // turn on display FPS - director->setDisplayStats(true); - - // set FPS. the default value is 1.0/60 if you don't call this - director->setAnimationInterval(1.0f / 60); - - // Set the Debug wrapper extension so we know about memory leaks. - SpineExtension::setInstance(&debugExtension); - - // create a scene. it's an autorelease object - //auto scene = RaptorExample::scene(); - auto scene = PhysicsExample::scene(); - - // run - director->runWithScene(scene); - - return true; -} - -// This function will be called when the app is inactive. When comes a phone call,it's be invoked too -void AppDelegate::applicationDidEnterBackground() { - Director::getInstance()->stopAnimation(); - - // if you use SimpleAudioEngine, it must be paused - // SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic(); -} - -// this function will be called when the app is active again -void AppDelegate::applicationWillEnterForeground() { - Director::getInstance()->startAnimation(); - - // if you use SimpleAudioEngine, it must resume here - // SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic(); -} diff --git a/spine-cocos2dx/example/Classes/AppDelegate.h b/spine-cocos2dx/example/Classes/AppDelegate.h deleted file mode 100644 index d8f220750..000000000 --- a/spine-cocos2dx/example/Classes/AppDelegate.h +++ /dev/null @@ -1,45 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#ifndef _APPDELEGATE_H_ -#define _APPDELEGATE_H_ - -#include "cocos2d.h" - -class AppDelegate : private cocos2d::Application { -public: - AppDelegate(); - virtual ~AppDelegate(); - - virtual bool applicationDidFinishLaunching(); - virtual void applicationDidEnterBackground(); - virtual void applicationWillEnterForeground(); -}; - -#endif// _APPDELEGATE_H_ diff --git a/spine-cocos2dx/example/Classes/AppMacros.h b/spine-cocos2dx/example/Classes/AppMacros.h deleted file mode 100644 index cb020cc85..000000000 --- a/spine-cocos2dx/example/Classes/AppMacros.h +++ /dev/null @@ -1,88 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#ifndef _APPMACROS_H_ -#define _APPMACROS_H_ - -#include "cocos2d.h" - -/* For demonstrating using one design resolution to match different resources, - or one resource to match different design resolutions. - - [Situation 1] Using one design resolution to match different resources. - Please look into Appdelegate::applicationDidFinishLaunching. - We check current device frame size to decide which resource need to be selected. - So if you want to test this situation which said in title '[Situation 1]', - you should change ios simulator to different device(e.g. iphone, iphone-retina3.5, iphone-retina4.0, ipad, ipad-retina), - or change the window size in "proj.XXX/main.cpp" by "CCEGLView::setFrameSize" if you are using win32 or linux plaform - and modify "proj.mac/AppController.mm" by changing the window rectangle. - - [Situation 2] Using one resource to match different design resolutions. - The coordinates in your codes is based on your current design resolution rather than resource size. - Therefore, your design resolution could be very large and your resource size could be small. - To test this, just define the marco 'TARGET_DESIGN_RESOLUTION_SIZE' to 'DESIGN_RESOLUTION_2048X1536' - and open iphone simulator or create a window of 480x320 size. - - [Note] Normally, developer just need to define one design resolution(e.g. 960x640) with one or more resources. - */ - -#define DESIGN_RESOLUTION_480X320 0 -#define DESIGN_RESOLUTION_960x640 1 -#define DESIGN_RESOLUTION_1024X768 2 -#define DESIGN_RESOLUTION_2048X1536 3 - -/* If you want to switch design resolution, change next line */ -#define TARGET_DESIGN_RESOLUTION_SIZE DESIGN_RESOLUTION_960x640 - -typedef struct tagResource { - cocos2d::Size size; - char directory[100]; -} Resource; - -static Resource smallResource = {cocos2d::Size(480, 320), "iphone"}; -static Resource mediumResource = {cocos2d::Size(960, 640), "iphone-retina"}; -static Resource largeResource = {cocos2d::Size(1024, 768), "ipad"}; -static Resource extralargeResource = {cocos2d::Size(2048, 1536), "ipad-retina"}; - -#if (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_480X320) -static cocos2d::Size designResolutionSize = cocos2d::Size(480, 320); -#elif (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_960x640) -static cocos2d::Size designResolutionSize = cocos2d::Size(960, 640); -#elif (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_1024X768) -static cocos2d::Size designResolutionSize = cocos2d::Size(1024, 768); -#elif (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_2048X1536) -static cocos2d::Size designResolutionSize = cocos2d::Size(2048, 1536); -#else -#error unknown target design resolution! -#endif - -// The font size 24 is designed for small resolution, so we should change it to fit for current design resolution -#define TITLE_FONT_SIZE (cocos2d::Director::getInstance()->getOpenGLView()->getDesignResolutionSize().width / smallResource.size.width * 24) - -#endif /* _APPMACROS_H_ */ diff --git a/spine-cocos2dx/example/Classes/BatchingExample.cpp b/spine-cocos2dx/example/Classes/BatchingExample.cpp deleted file mode 100644 index 5e0188563..000000000 --- a/spine-cocos2dx/example/Classes/BatchingExample.cpp +++ /dev/null @@ -1,112 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#include "BatchingExample.h" -#include "SequenceExample.h" - -USING_NS_CC; -using namespace spine; - -#define NUM_SKELETONS 50 - -Cocos2dTextureLoader textureLoader; - -Scene *BatchingExample::scene() { - Scene *scene = Scene::create(); - scene->addChild(BatchingExample::create()); - return scene; -} - -bool BatchingExample::init() { - if (!LayerColor::initWithColor(Color4B(128, 128, 128, 255))) return false; - - // Load the texture atlas. Note that the texture loader has to live - // as long as the Atlas, as the Atlas destructor will call TextureLoader::unload. - _atlas = new (__FILE__, __LINE__) Atlas("spineboy.atlas", &textureLoader, true); - CCASSERT(_atlas, "Error reading atlas file."); - - // This attachment loader configures attachments with data needed for cocos2d-x rendering. - // Do not dispose the attachment loader until the skeleton data is disposed! - _attachmentLoader = new (__FILE__, __LINE__) Cocos2dAtlasAttachmentLoader(_atlas); - - // Load the skeleton data. - SkeletonJson *json = new (__FILE__, __LINE__) SkeletonJson(_attachmentLoader); - json->setScale(0.6f);// Resizes skeleton data to 60% of the size it was in Spine. - _skeletonData = json->readSkeletonDataFile("spineboy-pro.json"); - CCASSERT(_skeletonData, json->getError().isEmpty() ? json->getError().buffer() : "Error reading skeleton data file."); - delete json; - - // Setup mix times. - _stateData = new (__FILE__, __LINE__) AnimationStateData(_skeletonData); - _stateData->setMix("walk", "jump", 0.2f); - _stateData->setMix("jump", "run", 0.2f); - - int xMin = _contentSize.width * 0.10f, xMax = _contentSize.width * 0.90f; - int yMin = 0, yMax = _contentSize.height * 0.7f; - for (int i = 0; i < NUM_SKELETONS; i++) { - // Each skeleton node shares the same atlas, skeleton data, and mix times. - SkeletonAnimation *skeletonNode = SkeletonAnimation::createWithData(_skeletonData, false); - skeletonNode->setAnimationStateData(_stateData); - - skeletonNode->setAnimation(0, "walk", true); - skeletonNode->addAnimation(0, "jump", true, RandomHelper::random_int(0, 300) / 100.0f); - skeletonNode->addAnimation(0, "run", true); - - // alternative setting two color tint for groups of 10 skeletons - // should end up with #skeletons / 10 batches - // if (j++ < 10) - // skeletonNode->setTwoColorTint(true); - // if (j == 20) j = 0; - // skeletonNode->setTwoColorTint(true); - - skeletonNode->setPosition(Vec2(RandomHelper::random_int(xMin, xMax), RandomHelper::random_int(yMin, yMax))); - addChild(skeletonNode); - } - - scheduleUpdate(); - - EventListenerTouchOneByOne *listener = EventListenerTouchOneByOne::create(); - listener->onTouchBegan = [this](Touch *touch, cocos2d::Event *event) -> bool { - Director::getInstance()->replaceScene(SequenceExample::scene()); - return true; - }; - _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); - - return true; -} - -BatchingExample::~BatchingExample() { - // SkeletonAnimation instances are cocos2d-x nodes and are disposed of automatically as normal, but the data created - // manually to be shared across multiple SkeletonAnimations needs to be disposed of manually. - - delete _skeletonData; - delete _stateData; - delete _attachmentLoader; - delete _atlas; -} diff --git a/spine-cocos2dx/example/Classes/BatchingExample.h b/spine-cocos2dx/example/Classes/BatchingExample.h deleted file mode 100644 index b64d0d0bd..000000000 --- a/spine-cocos2dx/example/Classes/BatchingExample.h +++ /dev/null @@ -1,54 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#ifndef _BATCHINGEXAMPLE_H_ -#define _BATCHINGEXAMPLE_H_ - -#include "cocos2d.h" -#include - -using namespace spine; - -class BatchingExample : public cocos2d::LayerColor { -public: - static cocos2d::Scene *scene(); - - CREATE_FUNC(BatchingExample); - ~BatchingExample(); - - virtual bool init(); - -protected: - Atlas *_atlas; - AttachmentLoader *_attachmentLoader; - SkeletonData *_skeletonData; - AnimationStateData *_stateData; -}; - -#endif// _BATCHINGEXAMPLE_H_ diff --git a/spine-cocos2dx/example/Classes/CoinExample.cpp b/spine-cocos2dx/example/Classes/CoinExample.cpp deleted file mode 100644 index d8eefca7f..000000000 --- a/spine-cocos2dx/example/Classes/CoinExample.cpp +++ /dev/null @@ -1,66 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#include "CoinExample.h" -#include "MixAndMatchExample.h" - -USING_NS_CC; -using namespace spine; - -Scene *CoinExample::scene() { - Scene *scene = Scene::create(); - scene->addChild(CoinExample::create()); - return scene; -} - -bool CoinExample::init() { - if (!LayerColor::initWithColor(Color4B(128, 128, 128, 255))) return false; - - skeletonNode = SkeletonAnimation::createWithBinaryFile("coin-pro.skel", "coin.atlas", 1); - skeletonNode->setAnimation(0, "animation", true); - - skeletonNode->setPosition(Vec2(_contentSize.width / 2, _contentSize.height / 2)); - addChild(skeletonNode); - - scheduleUpdate(); - - EventListenerTouchOneByOne *listener = EventListenerTouchOneByOne::create(); - listener->onTouchBegan = [this](Touch *touch, cocos2d::Event *event) -> bool { - if (!skeletonNode->getDebugBonesEnabled()) - skeletonNode->setDebugBonesEnabled(true); - else if (skeletonNode->getTimeScale() == 1) - skeletonNode->setTimeScale(0.3f); - else - Director::getInstance()->replaceScene(MixAndMatchExample::scene()); - return true; - }; - _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); - - return true; -} diff --git a/spine-cocos2dx/example/Classes/CoinExample.h b/spine-cocos2dx/example/Classes/CoinExample.h deleted file mode 100644 index fefedbb25..000000000 --- a/spine-cocos2dx/example/Classes/CoinExample.h +++ /dev/null @@ -1,48 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#ifndef _COINEXAMPLE_H_ -#define _COINEXAMPLE_H_ - -#include "cocos2d.h" -#include - -class CoinExample : public cocos2d::LayerColor { -public: - static cocos2d::Scene *scene(); - - CREATE_FUNC(CoinExample); - - virtual bool init(); - -private: - spine::SkeletonAnimation *skeletonNode; -}; - -#endif// _COINXAMPLE_H_ diff --git a/spine-cocos2dx/example/Classes/GoblinsExample.cpp b/spine-cocos2dx/example/Classes/GoblinsExample.cpp deleted file mode 100644 index 463aca9f9..000000000 --- a/spine-cocos2dx/example/Classes/GoblinsExample.cpp +++ /dev/null @@ -1,67 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#include "GoblinsExample.h" -#include "RaptorExample.h" - -USING_NS_CC; -using namespace spine; - -Scene *GoblinsExample::scene() { - Scene *scene = Scene::create(); - scene->addChild(GoblinsExample::create()); - return scene; -} - -bool GoblinsExample::init() { - if (!LayerColor::initWithColor(Color4B(128, 128, 128, 255))) return false; - - skeletonNode = SkeletonAnimation::createWithJsonFile("goblins-pro.json", "goblins.atlas", 1.5f); - skeletonNode->setAnimation(0, "walk", true); - skeletonNode->setSkin("goblin"); - - skeletonNode->setPosition(Vec2(_contentSize.width / 2, 20)); - addChild(skeletonNode); - - scheduleUpdate(); - - EventListenerTouchOneByOne *listener = EventListenerTouchOneByOne::create(); - listener->onTouchBegan = [this](Touch *touch, cocos2d::Event *event) -> bool { - if (!skeletonNode->getDebugBonesEnabled()) - skeletonNode->setDebugBonesEnabled(true); - else if (skeletonNode->getTimeScale() == 1) - skeletonNode->setTimeScale(0.3f); - else - Director::getInstance()->replaceScene(RaptorExample::scene()); - return true; - }; - _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); - - return true; -} diff --git a/spine-cocos2dx/example/Classes/GoblinsExample.h b/spine-cocos2dx/example/Classes/GoblinsExample.h deleted file mode 100644 index ec56b26b5..000000000 --- a/spine-cocos2dx/example/Classes/GoblinsExample.h +++ /dev/null @@ -1,48 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#ifndef _GOBLINSEXAMPLE_H_ -#define _GOBLINSEXAMPLE_H_ - -#include "cocos2d.h" -#include - -class GoblinsExample : public cocos2d::LayerColor { -public: - static cocos2d::Scene *scene(); - - CREATE_FUNC(GoblinsExample); - - virtual bool init(); - -private: - spine::SkeletonAnimation *skeletonNode; -}; - -#endif// _GOBLINSEXAMPLE_H_ diff --git a/spine-cocos2dx/example/Classes/IKExample.cpp b/spine-cocos2dx/example/Classes/IKExample.cpp deleted file mode 100644 index 5955002ae..000000000 --- a/spine-cocos2dx/example/Classes/IKExample.cpp +++ /dev/null @@ -1,118 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#include "IKExample.h" -#include "PhysicsExample.h" - -USING_NS_CC; -using namespace spine; - -// This example demonstrates how to set the position -// of a bone based on the touch position, which in -// turn will make an IK chain follow that bone -// smoothly. -Scene *IKExample::scene() { - Scene *scene = Scene::create(); - scene->addChild(IKExample::create()); - return scene; -} - -bool IKExample::init() { - if (!LayerColor::initWithColor(Color4B(128, 128, 128, 255))) return false; - - // Load the Spineboy skeleton and create a SkeletonAnimation node from it - // centered on the screen. - skeletonNode = SkeletonAnimation::createWithJsonFile("spineboy-pro.json", "spineboy.atlas", 0.6f); - skeletonNode->setPosition(Vec2(_contentSize.width / 2, 20)); - addChild(skeletonNode); - - // Queue the "walk" animation on the first track. - skeletonNode->setAnimation(0, "walk", true); - - // Queue the "aim" animation on a higher track. - // It consists of a single frame that positions - // the back arm and gun such that they point at - // the "crosshair" bone. By setting this - // animation on a higher track, it overrides - // any changes to the back arm and gun made - // by the walk animation, allowing us to - // mix the two. The mouse position following - // is performed in the lambda below. - skeletonNode->setAnimation(1, "aim", true); - - // Next we setup a listener that receives and stores - // the current mouse location. The location is converted - // to the skeleton's coordinate system. - EventListenerMouse *mouseListener = EventListenerMouse::create(); - mouseListener->onMouseMove = [this](cocos2d::Event *event) -> void { - // convert the mosue location to the skeleton's coordinate space - // and store it. - EventMouse *mouseEvent = dynamic_cast(event); - position = skeletonNode->convertToNodeSpace(mouseEvent->getLocationInView()); - }; - _eventDispatcher->addEventListenerWithSceneGraphPriority(mouseListener, this); - - // Position the "crosshair" bone at the mouse - // location. - // - // When setting the crosshair bone position - // to the mouse position, we need to translate - // from "skeleton space" to "local bone space". - // Note that the local bone space is calculated - // using the bone's parent worldToLocal() function! - // - // After updating the bone position based on the - // converted mouse location, we call updateWorldTransforms() - // again so the change of the IK target position is - // applied to the rest of the skeleton. - skeletonNode->setPostUpdateWorldTransformsListener([this](SkeletonAnimation *node) -> void { - Bone *crosshair = node->findBone("crosshair");// The bone should be cached - float localX = 0, localY = 0; - crosshair->getParent()->worldToLocal(position.x, position.y, localX, localY); - crosshair->setX(localX); - crosshair->setY(localY); - - node->getSkeleton()->updateWorldTransform(spine::Physics_Update); - }); - - EventListenerTouchOneByOne *listener = EventListenerTouchOneByOne::create(); - listener->onTouchBegan = [this](Touch *touch, cocos2d::Event *event) -> bool { - Director::getInstance()->replaceScene(PhysicsExample::scene()); - return true; - }; - - _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); - - scheduleUpdate(); - - return true; -} - -void IKExample::update(float deltaTime) { -} diff --git a/spine-cocos2dx/example/Classes/IKExample.h b/spine-cocos2dx/example/Classes/IKExample.h deleted file mode 100644 index ddf0fed48..000000000 --- a/spine-cocos2dx/example/Classes/IKExample.h +++ /dev/null @@ -1,51 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#ifndef _IKEXAMPLE_H_ -#define _IKEXAMPLE_H_ - -#include "cocos2d.h" -#include - -class IKExample : public cocos2d::LayerColor { -public: - static cocos2d::Scene *scene(); - - CREATE_FUNC(IKExample); - - virtual bool init(); - - virtual void update(float deltaTime); - -private: - spine::SkeletonAnimation *skeletonNode; - cocos2d::Vec2 position; -}; - -#endif// _IKEXAMPLE_H_ diff --git a/spine-cocos2dx/example/Classes/MixAndMatchExample.cpp b/spine-cocos2dx/example/Classes/MixAndMatchExample.cpp deleted file mode 100644 index e45f932bd..000000000 --- a/spine-cocos2dx/example/Classes/MixAndMatchExample.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#include "MixAndMatchExample.h" -#include "BatchingExample.h" - -USING_NS_CC; -using namespace spine; - -Scene *MixAndMatchExample::scene() { - Scene *scene = Scene::create(); - scene->addChild(MixAndMatchExample::create()); - return scene; -} - -MixAndMatchExample::~MixAndMatchExample() { - delete skin; -} - -bool MixAndMatchExample::init() { - if (!LayerColor::initWithColor(Color4B(128, 128, 128, 255))) return false; - - skeletonNode = SkeletonAnimation::createWithBinaryFile("mix-and-match-pro.skel", "mix-and-match.atlas", 0.5); - skeletonNode->setAnimation(0, "dance", true); - - // Create a new skin, by mixing and matching other skins - // that fit together. Items making up the girl are individual - // skins. Using the skin API, a new skin is created which is - // a combination of all these individual item skins. - SkeletonData *skeletonData = skeletonNode->getSkeleton()->getData(); - skin = new (__FILE__, __LINE__) Skin("mix-and-match"); - skin->addSkin(skeletonData->findSkin("skin-base")); - skin->addSkin(skeletonData->findSkin("nose/short")); - skin->addSkin(skeletonData->findSkin("eyelids/girly")); - skin->addSkin(skeletonData->findSkin("eyes/violet")); - skin->addSkin(skeletonData->findSkin("hair/brown")); - skin->addSkin(skeletonData->findSkin("clothes/hoodie-orange")); - skin->addSkin(skeletonData->findSkin("legs/pants-jeans")); - skin->addSkin(skeletonData->findSkin("accessories/bag")); - skin->addSkin(skeletonData->findSkin("accessories/hat-red-yellow")); - skeletonNode->getSkeleton()->setSkin(skin); - - skeletonNode->setPosition(Vec2(_contentSize.width / 2, _contentSize.height / 2 - 200)); - addChild(skeletonNode); - - scheduleUpdate(); - - EventListenerTouchOneByOne *listener = EventListenerTouchOneByOne::create(); - listener->onTouchBegan = [this](Touch *touch, cocos2d::Event *event) -> bool { - if (!skeletonNode->getDebugBonesEnabled()) - skeletonNode->setDebugBonesEnabled(true); - else if (skeletonNode->getTimeScale() == 1) - skeletonNode->setTimeScale(0.3f); - else - Director::getInstance()->replaceScene(BatchingExample::scene()); - return true; - }; - _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); - - return true; -} diff --git a/spine-cocos2dx/example/Classes/MixAndMatchExample.h b/spine-cocos2dx/example/Classes/MixAndMatchExample.h deleted file mode 100644 index 2fdf4a0d7..000000000 --- a/spine-cocos2dx/example/Classes/MixAndMatchExample.h +++ /dev/null @@ -1,51 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#ifndef _MIXANDMATCHEXAMPLE_H_ -#define _MIXANDMATCHEXAMPLE_H_ - -#include "cocos2d.h" -#include - -class MixAndMatchExample : public cocos2d::LayerColor { -public: - static cocos2d::Scene *scene(); - - CREATE_FUNC(MixAndMatchExample); - - virtual bool init(); - - virtual ~MixAndMatchExample(); - -private: - spine::SkeletonAnimation *skeletonNode; - spine::Skin *skin; -}; - -#endif// _MIXANDMATCHXAMPLE_H_ diff --git a/spine-cocos2dx/example/Classes/PhysicsExample.cpp b/spine-cocos2dx/example/Classes/PhysicsExample.cpp deleted file mode 100644 index f61bc08c2..000000000 --- a/spine-cocos2dx/example/Classes/PhysicsExample.cpp +++ /dev/null @@ -1,88 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#include "PhysicsExample.h" -#include "SpineboyExample.h" - -USING_NS_CC; -using namespace spine; - -Scene *PhysicsExample::scene() { - Scene *scene = Scene::create(); - scene->addChild(PhysicsExample::create()); - return scene; -} - -bool PhysicsExample::init() { - if (!LayerColor::initWithColor(Color4B(128, 128, 128, 255))) return false; - - // Load the Spineboy skeleton and create a SkeletonAnimation node from it - // centered on the screen. - skeletonNode = SkeletonAnimation::createWithBinaryFile("celestial-circus-pro.skel", "celestial-circus.atlas", 0.2f); - skeletonNode->setPosition(Vec2(_contentSize.width / 2, 200)); - addChild(skeletonNode); - - // Queue the "walk" animation on the first track. - // skeletonNode->setAnimation(0, "walk", true); - - // Next we setup a listener that receives and stores - // the current mouse location and updates the skeleton position - // accordingly. - EventListenerMouse *mouseListener = EventListenerMouse::create(); - mouseListener->onMouseMove = [this](cocos2d::Event *event) -> void { - // convert the mosue location to the skeleton's coordinate space - // and store it. - EventMouse *mouseEvent = dynamic_cast(event); - Vec2 mousePosition = skeletonNode->convertToNodeSpace(mouseEvent->getLocationInView()); - if (firstUpdate) { - firstUpdate = false; - lastMousePosition = mousePosition; - return; - } - Vec2 delta = mousePosition - lastMousePosition; - skeletonNode->getSkeleton()->physicsTranslate(-delta.x, -delta.y); - lastMousePosition = mousePosition; - }; - _eventDispatcher->addEventListenerWithSceneGraphPriority(mouseListener, this); - - EventListenerTouchOneByOne *listener = EventListenerTouchOneByOne::create(); - listener->onTouchBegan = [this](Touch *touch, cocos2d::Event *event) -> bool { - Director::getInstance()->replaceScene(SpineboyExample::scene()); - return true; - }; - - _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); - - scheduleUpdate(); - - return true; -} - -void PhysicsExample::update(float deltaTime) { -} diff --git a/spine-cocos2dx/example/Classes/PhysicsExample.h b/spine-cocos2dx/example/Classes/PhysicsExample.h deleted file mode 100644 index 9acd52548..000000000 --- a/spine-cocos2dx/example/Classes/PhysicsExample.h +++ /dev/null @@ -1,52 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#ifndef _PHYSICSEXAMPLE_H_ -#define _PHYSICSEXAMPLE_H_ - -#include "cocos2d.h" -#include - -class PhysicsExample : public cocos2d::LayerColor { -public: - static cocos2d::Scene *scene(); - - CREATE_FUNC(PhysicsExample); - - virtual bool init(); - - virtual void update(float deltaTime); - -private: - spine::SkeletonAnimation *skeletonNode; - bool firstUpdate = true; - cocos2d::Vec2 lastMousePosition; -}; - -#endif// _PHYSICSEXAMPLE_H_ diff --git a/spine-cocos2dx/example/Classes/RaptorExample.cpp b/spine-cocos2dx/example/Classes/RaptorExample.cpp deleted file mode 100644 index f444ca543..000000000 --- a/spine-cocos2dx/example/Classes/RaptorExample.cpp +++ /dev/null @@ -1,71 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#include "RaptorExample.h" -#include "TankExample.h" -#include - -USING_NS_CC; -using namespace spine; - -Scene *RaptorExample::scene() { - Scene *scene = Scene::create(); - scene->addChild(RaptorExample::create()); - return scene; -} - -bool RaptorExample::init() { - if (!LayerColor::initWithColor(Color4B(128, 128, 128, 255))) return false; - - skeletonNode = SkeletonAnimation::createWithJsonFile("raptor-pro.json", "raptor.atlas", 0.5f); - skeletonNode->setAnimation(0, "walk", true); - skeletonNode->addAnimation(1, "gun-grab", false, 2); - skeletonNode->setTwoColorTint(true); - - - skeletonNode->setPosition(Vec2(_contentSize.width / 2, 20)); - addChild(skeletonNode); - - scheduleUpdate(); - - EventListenerTouchOneByOne *listener = EventListenerTouchOneByOne::create(); - listener->onTouchBegan = [this](Touch *touch, cocos2d::Event *event) -> bool { - if (!skeletonNode->getDebugBonesEnabled()) { - skeletonNode->setDebugBonesEnabled(true); - skeletonNode->setDebugMeshesEnabled(true); - } else if (skeletonNode->getTimeScale() == 1) - skeletonNode->setTimeScale(0.3f); - else - Director::getInstance()->replaceScene(TankExample::scene()); - return true; - }; - _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); - - return true; -} diff --git a/spine-cocos2dx/example/Classes/RaptorExample.h b/spine-cocos2dx/example/Classes/RaptorExample.h deleted file mode 100644 index 2a93829a9..000000000 --- a/spine-cocos2dx/example/Classes/RaptorExample.h +++ /dev/null @@ -1,49 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#ifndef _RAPTOREXAMPLE_H_ -#define _RAPTOREXAMPLE_H_ - -#include "cocos2d.h" -#include - -class RaptorExample : public cocos2d::LayerColor { -public: - static cocos2d::Scene *scene(); - - CREATE_FUNC(RaptorExample); - - virtual bool init(); - -private: - spine::SkeletonAnimation *skeletonNode; - float swirlTime; -}; - -#endif// _RAPTOREXAMPLE_H_ diff --git a/spine-cocos2dx/example/Classes/SequenceExample.cpp b/spine-cocos2dx/example/Classes/SequenceExample.cpp deleted file mode 100644 index fbc18ce34..000000000 --- a/spine-cocos2dx/example/Classes/SequenceExample.cpp +++ /dev/null @@ -1,61 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#include "SequenceExample.h" -#include "IKExample.h" - -USING_NS_CC; -using namespace spine; - -Scene *SequenceExample::scene() { - Scene *scene = Scene::create(); - scene->addChild(SequenceExample::create()); - return scene; -} - -bool SequenceExample::init() { - if (!LayerColor::initWithColor(Color4B(128, 128, 128, 255))) return false; - - skeletonNode = SkeletonAnimation::createWithBinaryFile("dragon-ess.skel", "dragon-pma.atlas", 1); - skeletonNode->setAnimation(0, "flying", true); - - skeletonNode->setPosition(Vec2(_contentSize.width / 2, _contentSize.height / 2)); - addChild(skeletonNode); - - scheduleUpdate(); - - EventListenerTouchOneByOne *listener = EventListenerTouchOneByOne::create(); - listener->onTouchBegan = [this](Touch *touch, cocos2d::Event *event) -> bool { - Director::getInstance()->replaceScene(IKExample::scene()); - return true; - }; - _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); - - return true; -} diff --git a/spine-cocos2dx/example/Classes/SequenceExample.h b/spine-cocos2dx/example/Classes/SequenceExample.h deleted file mode 100644 index 8f0870ea8..000000000 --- a/spine-cocos2dx/example/Classes/SequenceExample.h +++ /dev/null @@ -1,48 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#ifndef _SEQUENCEEXAMPLE_H_ -#define _SEQUENCEEXAMPLE_H_ - -#include "cocos2d.h" -#include - -class SequenceExample : public cocos2d::LayerColor { -public: - static cocos2d::Scene *scene(); - - CREATE_FUNC(SequenceExample); - - virtual bool init(); - -private: - spine::SkeletonAnimation *skeletonNode; -}; - -#endif diff --git a/spine-cocos2dx/example/Classes/SkeletonRendererSeparatorExample.cpp b/spine-cocos2dx/example/Classes/SkeletonRendererSeparatorExample.cpp deleted file mode 100644 index 0b9cf2d16..000000000 --- a/spine-cocos2dx/example/Classes/SkeletonRendererSeparatorExample.cpp +++ /dev/null @@ -1,94 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#include "SkeletonRendererSeparatorExample.h" -#include "GoblinsExample.h" - -USING_NS_CC; -using namespace spine; - -Scene *SkeletonRendererSeparatorExample::scene() { - Scene *scene = Scene::create(); - scene->addChild(SkeletonRendererSeparatorExample::create()); - return scene; -} - -bool SkeletonRendererSeparatorExample::init() { - if (!LayerColor::initWithColor(Color4B(128, 128, 128, 255))) return false; - - // Spineboy's back, which will manage the animation and GPU resources - // will render only the front slots of Spineboy - backNode = SkeletonAnimation::createWithJsonFile("spineboy-pro.json", "spineboy.atlas", 0.6f); - backNode->setMix("walk", "jump", 0.4); - backNode->setAnimation(0, "walk", true); - backNode->setSlotsRange(backNode->findSlot("rear-upper-arm")->getData().getIndex(), backNode->findSlot("rear-shin")->getData().getIndex()); - backNode->setPosition(Vec2(_contentSize.width / 2, 20)); - - // A simple rectangle to go between the front and back slots of Spineboy - betweenNode = DrawNode::create(); - Vec2 rect[4]; - rect[0] = Vec2(0, 0); - rect[1] = Vec2(40, 0); - rect[2] = Vec2(40, 200); - rect[3] = Vec2(0, 200); - betweenNode->drawPolygon(rect, 4, Color4F(1, 0, 0, 1), 1, Color4F(1, 0, 0, 1)); - betweenNode->setPosition(Vec2(_contentSize.width / 2 + 30, 20)); - // Spineboy's front, doesn't manage any skeleton, animation or GPU resources, but simply - // renders the back slots of Spineboy. The skeleton, animatio state and GPU resources - // are shared with the front node! - frontNode = SkeletonRendererCocos2dX::createWithSkeleton(backNode->getSkeleton()); - frontNode->setSlotsRange(frontNode->findSlot("neck")->getData().getIndex(), -1); - frontNode->setPosition(Vec2(_contentSize.width / 2, 20)); - - // Add the front, between and back node in the correct order to this scene - addChild(backNode); - addChild(betweenNode); - addChild(frontNode); - - scheduleUpdate(); - - EventListenerTouchOneByOne *listener = EventListenerTouchOneByOne::create(); - listener->onTouchBegan = [this](Touch *touch, cocos2d::Event *event) -> bool { - if (!backNode->getDebugBonesEnabled()) - backNode->setDebugBonesEnabled(true); - else if (backNode->getTimeScale() == 1) - backNode->setTimeScale(0.3f); - else - Director::getInstance()->replaceScene(GoblinsExample::scene()); - return true; - }; - _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); - - return true; -} - -void SkeletonRendererSeparatorExample::update(float deltaTime) { - // Test releasing memory. - // Director::getInstance()->replaceScene(SpineboyExample::scene()); -} diff --git a/spine-cocos2dx/example/Classes/SkeletonRendererSeparatorExample.h b/spine-cocos2dx/example/Classes/SkeletonRendererSeparatorExample.h deleted file mode 100644 index d959cddb2..000000000 --- a/spine-cocos2dx/example/Classes/SkeletonRendererSeparatorExample.h +++ /dev/null @@ -1,52 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#ifndef _SKELETONRENDERERSEPARATOREXAMPLE_H_ -#define _SKELETONRENDERERSEPARATOREXAMPLE_H_ - -#include "cocos2d.h" -#include - -class SkeletonRendererSeparatorExample : public cocos2d::LayerColor { -public: - static cocos2d::Scene *scene(); - - CREATE_FUNC(SkeletonRendererSeparatorExample); - - virtual bool init(); - - virtual void update(float deltaTime); - -private: - spine::SkeletonAnimation *backNode; - spine::SkeletonRendererCocos2dX *frontNode; - cocos2d::DrawNode *betweenNode; -}; - -#endif// _SKELETONRENDERERSEPARATOREXAMPLE_H_ diff --git a/spine-cocos2dx/example/Classes/SpineboyExample.cpp b/spine-cocos2dx/example/Classes/SpineboyExample.cpp deleted file mode 100644 index f602169a7..000000000 --- a/spine-cocos2dx/example/Classes/SpineboyExample.cpp +++ /dev/null @@ -1,91 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#include "SpineboyExample.h" -#include "SkeletonRendererSeparatorExample.h" - -USING_NS_CC; -using namespace spine; - -Scene *SpineboyExample::scene() { - Scene *scene = Scene::create(); - scene->addChild(SpineboyExample::create()); - return scene; -} - -bool SpineboyExample::init() { - if (!LayerColor::initWithColor(Color4B(128, 128, 128, 255))) return false; - - skeletonNode = SkeletonAnimation::createWithJsonFile("spineboy-pro.json", "spineboy.atlas", 0.6f); - - skeletonNode->setStartListener([](TrackEntry *entry) { log("%d start: %s", entry->getTrackIndex(), entry->getAnimation()->getName().buffer()); }); - skeletonNode->setInterruptListener([](TrackEntry *entry) { log("%d interrupt", entry->getTrackIndex()); }); - skeletonNode->setEndListener([](TrackEntry *entry) { log("%d end", entry->getTrackIndex()); }); - skeletonNode->setCompleteListener([](TrackEntry *entry) { log("%d complete", entry->getTrackIndex()); }); - skeletonNode->setDisposeListener([](TrackEntry *entry) { log("%d dispose", entry->getTrackIndex()); }); - skeletonNode->setEventListener([](TrackEntry *entry, spine::Event *event) { - log("%d event: %s, %d, %f, %s", entry->getTrackIndex(), event->getData().getName().buffer(), event->getIntValue(), event->getFloatValue(), - event->getStringValue().buffer()); - }); - - skeletonNode->setMix("walk", "jump", 0.4); - skeletonNode->setMix("jump", "run", 0.4); - skeletonNode->setAnimation(0, "walk", true); - TrackEntry *jumpEntry = skeletonNode->addAnimation(0, "jump", false, 1); - skeletonNode->addAnimation(0, "run", true); - - skeletonNode->setTrackStartListener(jumpEntry, [](TrackEntry *entry) { log("jumped!"); }); - - // skeletonNode->addAnimation(1, "test", true); - // skeletonNode->runAction(RepeatForever::create(Sequence::create(FadeOut::create(1), FadeIn::create(1), DelayTime::create(5), NULL))); - - skeletonNode->setPosition(Vec2(_contentSize.width / 2, 20)); - addChild(skeletonNode); - - scheduleUpdate(); - - EventListenerTouchOneByOne *listener = EventListenerTouchOneByOne::create(); - listener->onTouchBegan = [this](Touch *touch, cocos2d::Event *event) -> bool { - if (!skeletonNode->getDebugBonesEnabled()) - skeletonNode->setDebugBonesEnabled(true); - else if (skeletonNode->getTimeScale() == 1) - skeletonNode->setTimeScale(0.3f); - else - Director::getInstance()->replaceScene(SkeletonRendererSeparatorExample::scene()); - return true; - }; - _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); - - return true; -} - -void SpineboyExample::update(float deltaTime) { - // Test releasing memory. - // Director::getInstance()->replaceScene(SpineboyExample::scene()); -} diff --git a/spine-cocos2dx/example/Classes/SpineboyExample.h b/spine-cocos2dx/example/Classes/SpineboyExample.h deleted file mode 100644 index 430c9147a..000000000 --- a/spine-cocos2dx/example/Classes/SpineboyExample.h +++ /dev/null @@ -1,50 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#ifndef _SPINEBOYEXAMPLE_H_ -#define _SPINEBOYEXAMPLE_H_ - -#include "cocos2d.h" -#include - -class SpineboyExample : public cocos2d::LayerColor { -public: - static cocos2d::Scene *scene(); - - CREATE_FUNC(SpineboyExample); - - virtual bool init(); - - virtual void update(float deltaTime); - -private: - spine::SkeletonAnimation *skeletonNode; -}; - -#endif// _SPINEBOYEXAMPLE_H_ diff --git a/spine-cocos2dx/example/Classes/TankExample.cpp b/spine-cocos2dx/example/Classes/TankExample.cpp deleted file mode 100644 index 7cecf72c7..000000000 --- a/spine-cocos2dx/example/Classes/TankExample.cpp +++ /dev/null @@ -1,66 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#include "TankExample.h" -#include "CoinExample.h" - -USING_NS_CC; -using namespace spine; - -Scene *TankExample::scene() { - Scene *scene = Scene::create(); - scene->addChild(TankExample::create()); - return scene; -} - -bool TankExample::init() { - if (!LayerColor::initWithColor(Color4B(128, 128, 128, 255))) return false; - - skeletonNode = SkeletonAnimation::createWithBinaryFile("tank-pro.skel", "tank.atlas", 0.5f); - skeletonNode->setAnimation(0, "shoot", true); - - skeletonNode->setPosition(Vec2(_contentSize.width / 2 + 400, 20)); - addChild(skeletonNode); - - scheduleUpdate(); - - EventListenerTouchOneByOne *listener = EventListenerTouchOneByOne::create(); - listener->onTouchBegan = [this](Touch *touch, cocos2d::Event *event) -> bool { - if (!skeletonNode->getDebugBonesEnabled()) - skeletonNode->setDebugBonesEnabled(true); - else if (skeletonNode->getTimeScale() == 1) - skeletonNode->setTimeScale(0.3f); - else - Director::getInstance()->replaceScene(CoinExample::scene()); - return true; - }; - _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); - - return true; -} diff --git a/spine-cocos2dx/example/Classes/TankExample.h b/spine-cocos2dx/example/Classes/TankExample.h deleted file mode 100644 index 19a59ee61..000000000 --- a/spine-cocos2dx/example/Classes/TankExample.h +++ /dev/null @@ -1,48 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#ifndef _TANKEXAMPLE_H_ -#define _TANKEXAMPLE_H_ - -#include "cocos2d.h" -#include - -class TankExample : public cocos2d::LayerColor { -public: - static cocos2d::Scene *scene(); - - CREATE_FUNC(TankExample); - - virtual bool init(); - -private: - spine::SkeletonAnimation *skeletonNode; -}; - -#endif// _TANKEXAMPLE_H_ diff --git a/spine-cocos2dx/example/Resources/common/celestial-circus-pro.skel b/spine-cocos2dx/example/Resources/common/celestial-circus-pro.skel deleted file mode 100644 index 102981ca9..000000000 Binary files a/spine-cocos2dx/example/Resources/common/celestial-circus-pro.skel and /dev/null differ diff --git a/spine-cocos2dx/example/Resources/common/celestial-circus.atlas b/spine-cocos2dx/example/Resources/common/celestial-circus.atlas deleted file mode 100644 index f83235e9a..000000000 --- a/spine-cocos2dx/example/Resources/common/celestial-circus.atlas +++ /dev/null @@ -1,157 +0,0 @@ -celestial-circus.png - size: 1024, 1024 - filter: Linear, Linear - scale: 0.4 -arm-back-down - bounds: 971, 683, 38, 82 -arm-back-up - bounds: 939, 44, 83, 116 -arm-front-down - bounds: 971, 603, 36, 78 -arm-front-up - bounds: 289, 22, 77, 116 - rotate: 90 -bench - bounds: 586, 47, 189, 48 -body-bottom - bounds: 868, 270, 154, 124 -body-top - bounds: 2, 156, 126, 132 - offsets: 0, 0, 126, 133 - rotate: 90 -chest - bounds: 490, 267, 104, 93 - rotate: 180 -cloud-back - bounds: 804, 563, 202, 165 - rotate: 90 -cloud-front - bounds: 606, 440, 325, 196 - rotate: 270 -collar - bounds: 373, 739, 47, 26 -ear - bounds: 106, 737, 20, 28 -eye-back-shadow - bounds: 233, 755, 14, 10 -eye-front-shadow - bounds: 128, 751, 24, 14 -eye-reflex-back - bounds: 787, 758, 8, 7 -eye-reflex-front - bounds: 154, 758, 10, 7 -eye-white-back - bounds: 616, 749, 13, 16 -eye-white-front - bounds: 477, 748, 22, 17 -eyelashes-down-back - bounds: 655, 759, 11, 6 -eyelashes-down-front - bounds: 549, 759, 15, 6 -eyelashes-top-back - bounds: 353, 755, 18, 10 -eyelashes-top-front - bounds: 749, 749, 30, 16 -face - bounds: 775, 277, 91, 102 - offsets: 2, 0, 93, 102 -feathers-back - bounds: 192, 611, 46, 46 -feathers-front - bounds: 415, 679, 72, 86 -fringe-middle-back - bounds: 794, 509, 33, 52 -fringe-middle-front - bounds: 679, 202, 60, 50 -fringe-side-back - bounds: 407, 5, 27, 94 -fringe-side-front - bounds: 14, 331, 26, 93 -glove-bottom-back - bounds: 14, 681, 51, 41 -glove-bottom-front - bounds: 313, 288, 47, 48 -hair-back-1 - bounds: 716, 91, 132, 306 - rotate: 270 -hair-back-2 - bounds: 124, 100, 80, 285 - rotate: 90 -hair-back-3 - bounds: 410, 78, 70, 268 - rotate: 270 -hair-back-4 - bounds: 42, 250, 88, 262 - rotate: 90 -hair-back-5 - bounds: 320, 141, 88, 279 - rotate: 90 -hair-back-6 - bounds: 2, 36, 88, 286 - rotate: 90 -hair-hat-shadow - bounds: 14, 724, 90, 41 -hand-back - bounds: 2, 42, 60, 47 -hand-front - bounds: 909, 208, 53, 60 -hat-back - bounds: 741, 189, 64, 45 -hat-front - bounds: 926, 396, 96, 56 -head-back - bounds: 777, 2, 102, 86 -jabot - bounds: 692, 384, 70, 55 -leg-back - bounds: 362, 164, 210, 333 - rotate: 90 -leg-front - bounds: 590, 181, 258, 320 - rotate: 90 -logo-brooch - bounds: 584, 740, 16, 25 -mouth - bounds: 631, 759, 22, 6 -neck - bounds: 597, 441, 39, 56 -nose - bounds: 556, 750, 6, 7 -nose-highlight - bounds: 166, 761, 4, 4 -nose-shadow - bounds: 778, 757, 7, 8 -pupil-back - bounds: 442, 751, 10, 14 -pupil-front - bounds: 602, 747, 12, 18 -rope-back - bounds: 2, 273, 10, 492 -rope-front - bounds: 2, 273, 10, 492 -rope-front-bottom - bounds: 895, 69, 42, 65 -skirt - bounds: 14, 325, 440, 246 - rotate: 90 -sock-bow - bounds: 253, 733, 33, 32 -spine-logo-body - bounds: 569, 733, 13, 32 -star-big - bounds: 422, 741, 18, 24 -star-medium - bounds: 1011, 757, 6, 8 -star-small - bounds: 218, 761, 3, 4 -underskirt - bounds: 212, 320, 445, 228 - rotate: 270 -underskirt-back - bounds: 434, 332, 433, 171 - rotate: 270 -wing-back - bounds: 137, 137, 146, 252 - rotate: 270 -wing-front - bounds: 718, 314, 304, 248 diff --git a/spine-cocos2dx/example/Resources/common/celestial-circus.png b/spine-cocos2dx/example/Resources/common/celestial-circus.png deleted file mode 100644 index da702bb77..000000000 Binary files a/spine-cocos2dx/example/Resources/common/celestial-circus.png and /dev/null differ diff --git a/spine-cocos2dx/example/Resources/common/coin-pro.skel b/spine-cocos2dx/example/Resources/common/coin-pro.skel deleted file mode 100644 index be021e3e0..000000000 Binary files a/spine-cocos2dx/example/Resources/common/coin-pro.skel and /dev/null differ diff --git a/spine-cocos2dx/example/Resources/common/coin.atlas b/spine-cocos2dx/example/Resources/common/coin.atlas deleted file mode 100644 index 9526fc067..000000000 --- a/spine-cocos2dx/example/Resources/common/coin.atlas +++ /dev/null @@ -1,19 +0,0 @@ -coin.png - size: 1024, 1024 - filter: Linear, Linear -coin-front-logo - bounds: 328, 266, 305, 302 -coin-front-shine-logo - bounds: 635, 2, 282, 282 -coin-front-shine-spineboy - bounds: 635, 286, 282, 282 -coin-front-spineboy - bounds: 21, 266, 305, 302 -coin-side-round - bounds: 2, 120, 144, 282 - rotate: 90 -coin-side-straight - bounds: 2, 286, 17, 282 -shine - bounds: 286, 192, 72, 245 - rotate: 90 diff --git a/spine-cocos2dx/example/Resources/common/coin.png b/spine-cocos2dx/example/Resources/common/coin.png deleted file mode 100644 index a9f83ef82..000000000 Binary files a/spine-cocos2dx/example/Resources/common/coin.png and /dev/null differ diff --git a/spine-cocos2dx/example/Resources/common/dragon-ess.skel b/spine-cocos2dx/example/Resources/common/dragon-ess.skel deleted file mode 100644 index 57688fcf0..000000000 Binary files a/spine-cocos2dx/example/Resources/common/dragon-ess.skel and /dev/null differ diff --git a/spine-cocos2dx/example/Resources/common/dragon-pma.atlas b/spine-cocos2dx/example/Resources/common/dragon-pma.atlas deleted file mode 100644 index a9f87aec6..000000000 --- a/spine-cocos2dx/example/Resources/common/dragon-pma.atlas +++ /dev/null @@ -1,114 +0,0 @@ -dragon-pma.png - size: 1024, 1024 - filter: Linear, Linear - pma: true -front-toe-a - bounds: 300, 929, 29, 50 -front-toe-b - bounds: 258, 660, 56, 57 -head - bounds: 2, 719, 296, 260 -left-front-leg - bounds: 99, 660, 84, 57 -left-wing09 - bounds: 2, 15, 264, 589 - rotate: 90 -right-wing07 - bounds: 647, 2, 365, 643 -right-wing08 - bounds: 2, 281, 365, 643 - rotate: 90 -right-wing09 - bounds: 354, 647, 365, 643 - rotate: 90 -tail04 - bounds: 185, 661, 56, 71 - rotate: 90 -tail06 - bounds: 2, 649, 95, 68 -thiagobrayner - bounds: 2, 981, 350, 31 - -dragon-pma_2.png - size: 1024, 1024 - filter: Linear, Linear - pma: true -back - bounds: 647, 57, 190, 185 -chin - bounds: 839, 28, 214, 146 - rotate: 90 -left-rear-leg - bounds: 736, 244, 206, 177 -left-wing08 - bounds: 736, 423, 264, 589 -right-rear-toe - bounds: 944, 312, 109, 77 - rotate: 90 -right-wing04 - bounds: 2, 2, 365, 643 - rotate: 90 -right-wing05 - bounds: 369, 369, 365, 643 -right-wing06 - bounds: 2, 369, 365, 643 -tail03 - bounds: 647, 275, 73, 92 -tail05 - bounds: 944, 251, 52, 59 - -dragon-pma_3.png - size: 1024, 1024 - filter: Linear, Linear - pma: true -chest - bounds: 858, 299, 136, 122 -left-front-thigh - bounds: 647, 295, 84, 72 -left-rear-thigh - bounds: 647, 117, 91, 149 -left-wing07 - bounds: 736, 423, 264, 589 -right-front-leg - bounds: 647, 14, 101, 89 - rotate: 90 -right-front-thigh - bounds: 740, 158, 108, 108 -right-rear-leg - bounds: 740, 46, 116, 100 -right-rear-thigh - bounds: 858, 148, 91, 149 -right-wing01 - bounds: 2, 2, 365, 643 - rotate: 90 -right-wing02 - bounds: 369, 369, 365, 643 -right-wing03 - bounds: 2, 369, 365, 643 -tail01 - bounds: 736, 268, 120, 153 -tail02 - bounds: 858, 26, 95, 120 - -dragon-pma_4.png - size: 1024, 1024 - filter: Linear, Linear - pma: true -left-wing03 - bounds: 2, 2, 264, 589 - rotate: 90 -left-wing04 - bounds: 534, 268, 264, 589 -left-wing05 - bounds: 268, 268, 264, 589 -left-wing06 - bounds: 2, 268, 264, 589 - -dragon-pma_5.png - size: 1024, 1024 - filter: Linear, Linear - pma: true -left-wing01 - bounds: 268, 2, 264, 589 -left-wing02 - bounds: 2, 2, 264, 589 diff --git a/spine-cocos2dx/example/Resources/common/dragon-pma.png b/spine-cocos2dx/example/Resources/common/dragon-pma.png deleted file mode 100644 index d60e713ba..000000000 Binary files a/spine-cocos2dx/example/Resources/common/dragon-pma.png and /dev/null differ diff --git a/spine-cocos2dx/example/Resources/common/dragon-pma_2.png b/spine-cocos2dx/example/Resources/common/dragon-pma_2.png deleted file mode 100644 index d538d384d..000000000 Binary files a/spine-cocos2dx/example/Resources/common/dragon-pma_2.png and /dev/null differ diff --git a/spine-cocos2dx/example/Resources/common/dragon-pma_3.png b/spine-cocos2dx/example/Resources/common/dragon-pma_3.png deleted file mode 100644 index 67b9e8383..000000000 Binary files a/spine-cocos2dx/example/Resources/common/dragon-pma_3.png and /dev/null differ diff --git a/spine-cocos2dx/example/Resources/common/dragon-pma_4.png b/spine-cocos2dx/example/Resources/common/dragon-pma_4.png deleted file mode 100644 index 2d7f13da8..000000000 Binary files a/spine-cocos2dx/example/Resources/common/dragon-pma_4.png and /dev/null differ diff --git a/spine-cocos2dx/example/Resources/common/dragon-pma_5.png b/spine-cocos2dx/example/Resources/common/dragon-pma_5.png deleted file mode 100644 index 03fd9a82b..000000000 Binary files a/spine-cocos2dx/example/Resources/common/dragon-pma_5.png and /dev/null differ diff --git a/spine-cocos2dx/example/Resources/common/goblins-pro.json b/spine-cocos2dx/example/Resources/common/goblins-pro.json deleted file mode 100644 index bd72734c4..000000000 --- a/spine-cocos2dx/example/Resources/common/goblins-pro.json +++ /dev/null @@ -1,1232 +0,0 @@ -{ -"skeleton": { - "hash": "tXP7zQbe/CY", - "spine": "4.3.37-beta", - "x": -134.12, - "y": -3.28, - "width": 266.94, - "height": 349.61, - "images": "./images/", - "audio": "" -}, -"bones": [ - { "name": "root" }, - { "name": "hip", "parent": "root", "x": 0.65, "y": 114.41, "color": "ffcf00ff" }, - { - "name": "torso", - "parent": "hip", - "length": 85.83, - "rotation": 93.93, - "x": -6.42, - "y": 1.98, - "color": "ffcf00ff" - }, - { - "name": "neck", - "parent": "torso", - "length": 18.38, - "rotation": -1.52, - "x": 81.68, - "y": -6.35, - "color": "ffcf00ff" - }, - { - "name": "head", - "parent": "neck", - "length": 68.29, - "rotation": -13.92, - "x": 20.94, - "y": 11.59, - "color": "ffcf00ff" - }, - { - "name": "left-shoulder", - "parent": "torso", - "length": 35.43, - "rotation": -156.96, - "x": 74.05, - "y": -20.39, - "color": "ff0000ff" - }, - { - "name": "left-arm", - "parent": "left-shoulder", - "length": 35.62, - "rotation": 28.17, - "x": 37.86, - "y": -2.35, - "color": "ff0000ff" - }, - { - "name": "left-upper-leg", - "parent": "hip", - "length": 50.4, - "rotation": -89.1, - "x": 14.45, - "y": 2.81, - "color": "ff0000ff" - }, - { - "name": "left-lower-leg", - "parent": "left-upper-leg", - "length": 49.9, - "rotation": -16.66, - "x": 56.34, - "y": 0.99, - "color": "ff0000ff" - }, - { - "name": "left-foot", - "parent": "left-lower-leg", - "length": 46.5, - "rotation": 102.43, - "x": 58.94, - "y": -7.61, - "color": "ff0000ff" - }, - { - "name": "left-hand", - "parent": "left-arm", - "length": 11.52, - "rotation": 2.7, - "x": 35.62, - "y": 0.08, - "color": "ff0000ff" - }, - { "name": "pelvis", "parent": "hip", "x": 1.41, "y": -6.58, "color": "ffcf00ff" }, - { - "name": "right-shoulder", - "parent": "torso", - "length": 37.25, - "rotation": 133.89, - "x": 76.02, - "y": 18.15, - "color": "62ff00ff" - }, - { - "name": "right-arm", - "parent": "right-shoulder", - "length": 36.75, - "rotation": 36.33, - "x": 37.61, - "y": 0.31, - "color": "62ff00ff" - }, - { - "name": "right-upper-leg", - "parent": "hip", - "length": 42.46, - "rotation": -97.5, - "x": -20.08, - "y": -6.84, - "color": "62ff00ff" - }, - { - "name": "right-lower-leg", - "parent": "right-upper-leg", - "length": 58.53, - "rotation": -14.34, - "x": 43, - "y": -0.62, - "color": "62ff00ff" - }, - { - "name": "right-foot", - "parent": "right-lower-leg", - "length": 45.46, - "rotation": 110.31, - "x": 64.89, - "y": 0.04, - "color": "62ff00ff" - }, - { - "name": "right-hand", - "parent": "right-arm", - "length": 15.32, - "rotation": 2.36, - "x": 36.9, - "y": 0.35, - "color": "62ff00ff" - }, - { - "name": "spear1", - "parent": "left-hand", - "length": 65.07, - "rotation": 102.43, - "x": 0.48, - "y": 17.03, - "color": "ffcf00ff" - }, - { - "name": "spear2", - "parent": "spear1", - "length": 61.42, - "rotation": 0.9, - "x": 65.06, - "y": 0.04, - "color": "ffcf00ff" - }, - { - "name": "spear3", - "parent": "spear2", - "length": 76.8, - "rotation": -0.9, - "x": 61.89, - "y": 0.57, - "color": "ffcf00ff" - } -], -"slots": [ - { "name": "left-shoulder", "bone": "left-shoulder", "attachment": "left-shoulder" }, - { "name": "left-arm", "bone": "left-arm", "attachment": "left-arm" }, - { "name": "left-hand-item", "bone": "left-hand", "attachment": "spear" }, - { "name": "left-hand", "bone": "left-hand", "attachment": "left-hand" }, - { "name": "left-foot", "bone": "left-foot", "attachment": "left-foot" }, - { "name": "left-lower-leg", "bone": "left-lower-leg", "attachment": "left-lower-leg" }, - { "name": "left-upper-leg", "bone": "left-upper-leg", "attachment": "left-upper-leg" }, - { "name": "neck", "bone": "neck", "attachment": "neck" }, - { "name": "torso", "bone": "torso", "attachment": "torso" }, - { "name": "pelvis", "bone": "pelvis", "attachment": "pelvis" }, - { "name": "right-foot", "bone": "right-foot", "attachment": "right-foot" }, - { "name": "right-lower-leg", "bone": "right-lower-leg", "attachment": "right-lower-leg" }, - { "name": "undie-straps", "bone": "pelvis", "attachment": "undie-straps" }, - { "name": "undies", "bone": "pelvis", "attachment": "undies" }, - { "name": "right-upper-leg", "bone": "right-upper-leg", "attachment": "right-upper-leg" }, - { "name": "head", "bone": "head", "attachment": "head" }, - { "name": "eyes", "bone": "head" }, - { "name": "right-shoulder", "bone": "right-shoulder", "attachment": "right-shoulder" }, - { "name": "right-arm", "bone": "right-arm", "attachment": "right-arm" }, - { "name": "right-hand-thumb", "bone": "right-hand", "attachment": "right-hand-thumb" }, - { "name": "right-hand-item", "bone": "right-hand", "attachment": "dagger" }, - { "name": "right-hand", "bone": "right-hand", "attachment": "right-hand" }, - { "name": "right-hand-item2", "bone": "right-hand", "attachment": "shield" } -], -"skins": [ - { - "name": "default", - "attachments": { - "left-hand-item": { - "dagger": { "x": 7.88, "y": -23.46, "rotation": 10.48, "width": 26, "height": 108 }, - "spear": { - "type": "mesh", - "uvs": [ 1, 0.11236, 0.77096, 0.13278, 0.76608, 0.21781, 0.75642, 0.386, 0.74723, 0.54607, 0.72117, 1, 0.28838, 1, 0.24208, 0.54328, 0.2259, 0.38362, 0.20891, 0.21605, 0.20043, 0.13243, 0, 0.1152, 0.4527, 0, 0.58399, 0 ], - "triangles": [ 5, 6, 4, 6, 7, 4, 4, 7, 3, 2, 9, 1, 9, 10, 1, 10, 12, 1, 12, 13, 1, 1, 13, 0, 10, 11, 12, 3, 8, 2, 8, 9, 2, 7, 8, 3 ], - "vertices": [ 1, 20, 38.54, -10.89, 1, 1, 20, 30.97, -5.93, 1, 2, 19, 61.48, -5.59, 0.5116, 20, -0.31, -6.16, 0.4884, 2, 18, 64.73, -5.03, 0.50272, 19, -0.4, -5.07, 0.49728, 1, 10, 4.57, 23.91, 1, 1, 10, 41.7, -138.95, 1, 1, 10, 32.43, -141.1, 1, 1, 10, -6.49, 22.41, 1, 2, 18, 65.48, 6.65, 0.50272, 19, 0.53, 6.6, 0.49728, 2, 19, 62.19, 6.67, 0.5116, 20, 0.2, 6.1, 0.4884, 1, 20, 30.97, 6.62, 1, 1, 20, 37.26, 11.09, 1, 1, 20, 79.75, 1.6, 1, 1, 20, 79.78, -1.29, 1 ], - "hull": 14, - "edges": [ 24, 22, 22, 20, 10, 12, 2, 0, 24, 26, 0, 26, 8, 10, 12, 14, 6, 8, 14, 16, 2, 4, 4, 6, 16, 18, 18, 20, 20, 2 ], - "width": 22, - "height": 368 - } - }, - "right-hand-item": { - "dagger": { - "type": "mesh", - "uvs": [ 0.78092, 0.38453, 1, 0.38406, 1, 0.44882, 0.73954, 0.4687, 0.74642, 0.81344, 0.34023, 1, 0.15434, 1, 0.11304, 0.78858, 0.23007, 0.47368, 0, 0.45047, 0, 0.38622, 0.22368, 0.38573, 0.24384, 0, 1, 0 ], - "triangles": [ 0, 12, 13, 11, 12, 0, 0, 1, 2, 9, 10, 11, 3, 11, 0, 3, 0, 2, 8, 11, 3, 9, 11, 8, 5, 6, 7, 4, 5, 8, 4, 8, 3, 5, 7, 8 ], - "vertices": [ 15.49, -12.83, 21.14, -13.57, 20.16, -20.5, 13.16, -21.68, 8.13, -58.57, -5.14, -77.04, -9.92, -76.37, -7.8, -53.61, -0.03, -20.36, -5.61, -17.04, -4.64, -10.17, 1.13, -10.93, 7.47, 30.24, 26.93, 27.5 ], - "hull": 14, - "edges": [ 22, 20, 24, 26, 22, 24, 2, 0, 0, 22, 0, 26, 12, 14, 14, 16, 18, 20, 16, 18, 2, 4, 4, 6, 6, 8, 10, 12, 8, 10 ], - "width": 26, - "height": 108 - } - }, - "right-hand-item2": { - "shield": { "rotation": 93.5, "width": 70, "height": 72 } - } - } - }, - { - "name": "goblin", - "attachments": { - "eyes": { - "eyes-closed": { "name": "goblin/eyes-closed", "x": 29.19, "y": -24.9, "rotation": -88.93, "width": 34, "height": 12 } - }, - "head": { - "head": { - "name": "goblin/head", - "type": "mesh", - "uvs": [ 0, 0.60495, 0.14172, 0.51451, 0.24218, 0.55229, 0.32668, 0.67807, 0.37969, 0.79352, 0.53505, 0.93015, 0.86057, 1, 0.94071, 0.94169, 0.92099, 0.69924, 0.9888, 0.65498, 0.99003, 0.51643, 0.89633, 0.43562, 0.94487, 0.41917, 1, 0.39713, 1, 0.2836, 0.94017, 0.27027, 0.87906, 0.25666, 0.80755, 0.16045, 0.66699, 0.01998, 0.4734, 0.01806, 0.29215, 0.19893, 0.25393, 0.31824, 0.09117, 0.32401, 0, 0.44331, 0.43271, 0.69154, 0.46601, 0.47795, 0.35997, 0.31246, 0.73474, 0.68594, 0.72216, 0.57426, 0.8818, 0.5583, 0.80268, 0.51016 ], - "triangles": [ 5, 27, 6, 7, 27, 8, 7, 6, 27, 4, 24, 5, 5, 24, 27, 4, 3, 24, 27, 29, 8, 8, 29, 9, 24, 28, 27, 24, 25, 28, 24, 3, 25, 29, 28, 30, 29, 27, 28, 25, 2, 26, 25, 3, 2, 9, 29, 10, 0, 23, 1, 28, 25, 30, 29, 11, 10, 29, 30, 11, 2, 21, 26, 2, 1, 21, 23, 22, 1, 1, 22, 21, 30, 16, 11, 30, 17, 16, 30, 25, 17, 17, 26, 18, 18, 26, 19, 26, 17, 25, 11, 15, 12, 11, 16, 15, 12, 15, 13, 15, 14, 13, 21, 20, 26, 26, 20, 19 ], - "vertices": [ 14.56, 50.42, 23.12, 35.48, 17.47, 26.36, 11.58, 16.87, 3.75, 11.71, -5.9, -3.92, -11.83, -37.24, -8.32, -45.64, 7.75, -44.24, 10.4, -51.34, 19.53, -51.83, 25.21, -43.16, 26.13, -47.43, 27.36, -53.16, 34.84, -53.46, 35.97, -47.34, 37.11, -41.09, 43.75, -33.98, 53.59, -19.88, 54.51, 0.04, 43.32, 19.17, 35.61, 23.41, 35.89, 40.18, 28.4, 49.87, 10.26, 5.99, 24.21, 2, 35.55, 12.48, 9.39, -25.11, 16.8, -24.31, 17.21, -40.66, 20.69, -33.02 ], - "hull": 24, - "edges": [ 0, 2, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 26, 28, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 0, 46, 6, 48, 48, 50, 50, 52, 52, 42, 2, 4, 4, 6, 4, 52, 2, 44, 22, 32, 22, 24, 24, 26, 28, 30, 30, 32, 24, 30, 16, 54, 54, 56, 20, 58, 58, 54, 16, 58, 22, 60, 60, 56, 58, 60 ], - "width": 103, - "height": 66 - } - }, - "left-arm": { - "left-arm": { - "name": "goblin/left-arm", - "type": "mesh", - "uvs": [ 0.68993, 0.29284, 1, 0.46364, 1, 0.74644, 0.8409, 1, 0.66344, 1, 0.33766, 0.64284, 0, 0.44124, 0, 0, 0.34296, 0 ], - "triangles": [ 3, 4, 2, 4, 5, 2, 5, 0, 2, 0, 1, 2, 0, 5, 8, 5, 6, 8, 6, 7, 8 ], - "vertices": [ 18.6, 8.81, 32.2, 10.32, 38.02, 1.63, 38.08, -9.63, 32.32, -13.5, 14.37, -9.62, -0.76, -10.78, -9.85, 2.78, 1.29, 10.25 ], - "hull": 9, - "edges": [ 14, 16, 16, 0, 0, 2, 2, 4, 6, 4, 6, 8, 8, 10, 12, 14, 10, 12 ], - "width": 37, - "height": 35 - } - }, - "left-foot": { - "left-foot": { - "name": "goblin/left-foot", - "type": "mesh", - "uvs": [ 0.15734, 0.31874, 0.08195, 0.78503, 0.15884, 0.99367, 0.41633, 0.96805, 0.68823, 0.97637, 1, 0.96388, 0.99386, 0.73501, 0.85295, 0.51863, 0.61479, 0.31056, 0.46992, 0, 0.48033, 0.75604, 0.75995, 0.77706 ], - "triangles": [ 0, 9, 8, 10, 0, 8, 10, 8, 7, 11, 10, 7, 11, 7, 6, 1, 0, 10, 11, 6, 5, 3, 1, 10, 4, 10, 11, 4, 11, 5, 3, 10, 4, 2, 1, 3 ], - "vertices": [ 2.28, 13.07, -1.77, -1.64, 3.6, -7.81, 20.26, -6.04, 37.92, -5.28, 58.13, -3.71, 57.32, 3.35, 47.78, 9.51, 31.95, 15.05, 21.99, 24.12, 24.03, 0.76, 42.21, 1.16 ], - "hull": 10, - "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18, 6, 20, 20, 16, 2, 20, 8, 22, 22, 14, 20, 22, 22, 10 ], - "width": 65, - "height": 31 - } - }, - "left-hand": { - "left-hand": { - "name": "goblin/left-hand", - "type": "mesh", - "uvs": [ 0.51801, 0.12578, 1, 0.16286, 0.99789, 0.50578, 0.69745, 1, 0.37445, 1, 0, 0.80051, 0, 0.42793, 0.17601, 0, 0.43568, 0 ], - "triangles": [ 2, 0, 1, 0, 5, 6, 6, 7, 0, 0, 7, 8, 3, 4, 0, 4, 5, 0, 2, 3, 0 ], - "vertices": [ -3.11, 15.43, 10.84, 22.27, 15.5, 14.56, 18.36, -8.96, 9.48, -14.33, -4.59, -14.3, -11.64, -2.64, -14.89, 13.68, -7.76, 18 ], - "hull": 9, - "edges": [ 16, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 14, 16, 12, 14 ], - "width": 36, - "height": 41 - } - }, - "left-lower-leg": { - "left-lower-leg": { - "name": "goblin/left-lower-leg", - "type": "mesh", - "uvs": [ 0.95509, 0.2075, 0.81927, 0.65214, 0.94754, 0.77308, 0.67842, 0.97347, 0.46464, 1, 0.26845, 1, 0.04964, 0.90707, 0.21061, 0.60115, 0.07479, 0.40195, 0.18545, 0, 0.28858, 0 ], - "triangles": [ 10, 8, 9, 1, 7, 10, 7, 8, 10, 0, 1, 10, 1, 4, 7, 3, 1, 2, 5, 6, 7, 7, 4, 5, 1, 3, 4 ], - "vertices": [ -0.2, 6.82, 30.97, 10.96, 37.97, 17.34, 53.88, 12.6, 57.59, 6.32, 59.35, 0.09, 55.05, -8.63, 33, -9.34, 20.8, -17.44, -7.28, -21.57, -8.2, -18.29 ], - "hull": 11, - "edges": [ 20, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 18, 20, 16, 18 ], - "width": 33, - "height": 70 - } - }, - "left-shoulder": { - "left-shoulder": { - "name": "goblin/left-shoulder", - "type": "mesh", - "uvs": [ 0.7377, 0.40692, 1, 0.75238, 1, 1, 0.62046, 1, 0.26184, 0.56602, 0, 0.29783, 0, 0, 0.44115, 0 ], - "triangles": [ 3, 1, 2, 3, 0, 1, 3, 4, 0, 4, 7, 0, 4, 5, 7, 5, 6, 7 ], - "vertices": [ 15.18, 5.74, 32.17, 5.33, 41.79, 0.22, 36.63, -9.5, 14.89, -9.73, 0.9, -10.9, -10.67, -4.75, -4.67, 6.55 ], - "hull": 8, - "edges": [ 12, 14, 14, 0, 4, 2, 0, 2, 4, 6, 6, 8, 10, 12, 8, 10 ], - "width": 29, - "height": 44 - } - }, - "left-upper-leg": { - "left-upper-leg": { - "name": "goblin/left-upper-leg", - "type": "mesh", - "uvs": [ 1, 0.12168, 1, 0.54873, 0.91067, 0.78907, 0.76568, 1, 0.30871, 0.95791, 0, 0.68777, 0, 0.21901, 0.51962, 0, 0.87552, 0 ], - "triangles": [ 7, 8, 0, 5, 6, 7, 0, 1, 7, 4, 5, 7, 1, 4, 7, 2, 4, 1, 3, 4, 2 ], - "vertices": [ 2.34, 13.07, 33.51, 12.57, 51, 9.34, 66.32, 4.31, 63.01, -10.71, 43.13, -20.59, 8.91, -20.04, -6.8, -2.64, -6.61, 9.1 ], - "hull": 9, - "edges": [ 10, 8, 8, 6, 6, 4, 4, 2, 10, 12, 12, 14, 14, 16, 2, 0, 16, 0 ], - "width": 33, - "height": 73 - } - }, - "neck": { - "neck": { - "name": "goblin/neck", - "type": "mesh", - "uvs": [ 0.81968, 0.27365, 0.92101, 0.82048, 0.47135, 1, 0.15679, 0.93541, 0, 0.7556, 0.19268, 0.51834, 0.15468, 0.35707, 0, 0.2199, 0.13568, 0, 0.68879, 0, 0.70146, 0.53873 ], - "triangles": [ 3, 5, 2, 2, 10, 1, 2, 5, 10, 3, 4, 5, 10, 0, 1, 0, 10, 6, 10, 5, 6, 7, 8, 6, 6, 9, 0, 6, 8, 9 ], - "vertices": [ 18.63, -11.66, -3.98, -13.86, -10.29, 2.77, -6.92, 13.9, 0.8, 19.06, 10.06, 11.51, 16.75, 12.45, 22.72, 17.65, 31.4, 12.2, 30.12, -7.68, 8.05, -6.71 ], - "hull": 10, - "edges": [ 14, 12, 12, 10, 10, 8, 8, 6, 6, 4, 4, 2, 2, 20, 20, 0, 0, 18, 16, 18, 14, 16, 0, 2 ], - "width": 36, - "height": 41 - } - }, - "pelvis": { - "pelvis": { - "name": "goblin/pelvis", - "type": "mesh", - "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], - "triangles": [ 1, 2, 3, 1, 3, 0 ], - "vertices": [ 25.38, -20.73, -36.62, -20.73, -36.62, 22.27, 25.38, 22.27 ], - "hull": 4, - "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], - "width": 62, - "height": 43 - } - }, - "right-arm": { - "right-arm": { - "name": "goblin/right-arm", - "type": "mesh", - "uvs": [ 1, 0.09223, 1, 0.8501, 0.72058, 1, 0.24385, 1, 0, 0.86559, 0.20823, 0.1092, 0.50903, 0, 0.85342, 0 ], - "triangles": [ 1, 2, 6, 6, 2, 5, 1, 6, 0, 4, 5, 3, 2, 3, 5, 6, 7, 0 ], - "vertices": [ -4.75, 8.89, 33.03, 11.74, 40.99, 5.9, 41.82, -5.03, 35.54, -11.13, -2.54, -9.2, -8.5, -2.72, -9.1, 5.18 ], - "hull": 8, - "edges": [ 8, 6, 4, 6, 4, 2, 12, 14, 2, 0, 14, 0, 10, 12, 8, 10 ], - "width": 23, - "height": 50 - } - }, - "right-foot": { - "right-foot": { - "name": "goblin/right-foot", - "type": "mesh", - "uvs": [ 0.40851, 0.00471, 0.59088, 0.33404, 0.75959, 0.48311, 0.88907, 0.59751, 0.97533, 0.89392, 0.90386, 1, 0.6722, 1, 0.38633, 1, 0.08074, 1, 0, 0.88921, 0, 0.65985, 0, 0.46578, 0.0906, 0.0988, 0.305, 0, 0.47461, 0.71258, 0.71501, 0.74681 ], - "triangles": [ 1, 10, 11, 1, 13, 0, 14, 1, 2, 1, 12, 13, 12, 1, 11, 14, 10, 1, 15, 14, 2, 15, 2, 3, 9, 10, 14, 15, 3, 4, 7, 8, 9, 14, 7, 9, 6, 14, 15, 5, 6, 15, 7, 14, 6, 4, 5, 15 ], - "vertices": [ 17.36, 26, 29.14, 15.44, 39.89, 10.81, 48.15, 7.25, 53.84, -2.38, 49.43, -6, 34.85, -6.39, 16.84, -6.87, -2.4, -7.38, -7.59, -3.87, -7.79, 3.7, -7.96, 10.1, -2.57, 22.36, 10.84, 25.98, 22.15, 2.76, 37.32, 2.03 ], - "hull": 14, - "edges": [ 0, 2, 6, 8, 8, 10, 16, 18, 22, 24, 24, 26, 0, 26, 10, 12, 2, 4, 4, 6, 12, 14, 14, 16, 18, 20, 20, 22, 2, 28, 28, 14, 20, 28, 4, 30, 30, 12, 28, 30, 30, 8 ], - "width": 63, - "height": 33 - } - }, - "right-hand": { - "right-hand": { - "name": "goblin/right-hand", - "type": "mesh", - "uvs": [ 0.17957, 0, 0, 0.44772, 0, 0.79734, 0.20057, 0.94264, 0.55057, 1, 0.8539, 1, 0.89824, 0.82005, 0.8259, 0.74286, 0.84224, 0.49994, 0.96357, 0.34102, 0.66024, 0 ], - "triangles": [ 8, 10, 9, 0, 10, 1, 8, 2, 1, 8, 1, 10, 7, 3, 8, 3, 2, 8, 4, 3, 7, 5, 7, 6, 4, 7, 5 ], - "vertices": [ -10.83, -9.45, 5.95, -15.35, 18.88, -14.9, 24.01, -7.5, 25.69, 5.16, 25.32, 16.08, 18.61, 17.44, 15.85, 14.74, 6.84, 15.02, 0.82, 19.19, -11.42, 7.84 ], - "hull": 11, - "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 0, 20 ], - "width": 36, - "height": 37 - } - }, - "right-hand-thumb": { - "right-hand-thumb": { - "name": "goblin/right-hand", - "type": "mesh", - "uvs": [ 0.88538, 0.22263, 0.76168, 0.3594, 0.75089, 0.78308, 0.95326, 0.84981, 1, 0.60303 ], - "triangles": [ 1, 0, 4, 2, 1, 4, 3, 2, 4 ], - "vertices": [ -2.82, 15.98, 2.4, 11.72, 18.08, 11.91, 20.28, 19.28, 11.09, 20.62 ], - "hull": 5, - "edges": [ 2, 4, 4, 6, 6, 8, 2, 0, 0, 8 ], - "width": 36, - "height": 37 - } - }, - "right-lower-leg": { - "right-lower-leg": { - "name": "goblin/right-lower-leg", - "type": "mesh", - "uvs": [ 1, 0.27261, 0.81312, 0.52593, 0.79587, 0.71796, 0.95544, 0.80989, 0.85194, 0.95493, 0.47242, 1, 0.14034, 1, 0, 0.8773, 0.14896, 0.67914, 0.1619, 0.30326, 0.60611, 0 ], - "triangles": [ 1, 10, 0, 9, 10, 1, 8, 9, 1, 2, 8, 1, 4, 2, 3, 6, 7, 8, 5, 6, 8, 2, 5, 8, 4, 5, 2 ], - "vertices": [ 6.27, 8.46, 23.32, 8.05, 37.1, 12.9, 41.45, 20.83, 53.07, 21.47, 61.33, 10.06, 65.78, -1.04, 59, -9.19, 43.02, -9.82, 16.33, -20.01, -12.8, -9.26 ], - "hull": 11, - "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 20, 18, 20 ], - "width": 36, - "height": 76 - } - }, - "right-shoulder": { - "right-shoulder": { - "name": "goblin/right-shoulder", - "type": "mesh", - "uvs": [ 0.62008, 0.03709, 0.92131, 0.09049, 1, 0.3832, 0.72049, 0.69371, 0.31657, 1, 0, 1, 0, 0.75106, 0.28234, 0.49989 ], - "triangles": [ 4, 6, 7, 4, 7, 3, 4, 5, 6, 7, 0, 3, 2, 0, 1, 2, 3, 0 ], - "vertices": [ -3.17, -11.05, -9, -0.58, -1.01, 10.34, 16.69, 11.17, 37.41, 8.2, 45.46, -1.16, 36.96, -8.46, 21.21, -7.48 ], - "hull": 8, - "edges": [ 10, 12, 12, 14, 14, 0, 0, 2, 2, 4, 4, 6, 8, 10, 6, 8 ], - "width": 39, - "height": 45 - } - }, - "right-upper-leg": { - "right-upper-leg": { - "name": "goblin/right-upper-leg", - "type": "mesh", - "uvs": [ 0.27019, 0, 0.11619, 0.18177, 0, 0.70688, 0, 0.89577, 0.26669, 1, 0.48719, 1, 0.67619, 0.83533, 1, 0.5161, 1, 0.25544, 0.74619, 0.0571 ], - "triangles": [ 9, 8, 7, 9, 1, 0, 6, 9, 7, 6, 1, 9, 2, 1, 6, 4, 3, 2, 6, 4, 2, 5, 4, 6 ], - "vertices": [ -9.86, -10.37, 2.18, -14.07, 35.49, -13.67, 47.29, -12.11, 52.62, -2.27, 51.64, 5.17, 40.51, 10.18, 19.14, 18.47, 2.85, 16.33, -8.41, 6.14 ], - "hull": 10, - "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18 ], - "width": 34, - "height": 63 - } - }, - "torso": { - "torso": { - "name": "goblin/torso", - "type": "mesh", - "uvs": [ 0, 0.33288, 0.15946, 0.46489, 0.15762, 0.60314, 0.15502, 0.79806, 0.32808, 0.93479, 0.68751, 1, 0.80732, 1, 1, 0.77763, 1, 0.66148, 1, 0.56704, 0.93208, 0.4771, 0.86944, 0.39417, 0.83838, 0.22601, 0.68085, 0, 0.14836, 0, 0, 0.07199, 0.78735, 0.8625, 0.43679, 0.79649, 0.76738, 0.61733, 0.44345, 0.58747, 0.54329, 0.38317, 0.77692, 0.73447, 0.66479, 0.51012 ], - "triangles": [ 5, 16, 6, 6, 16, 7, 4, 17, 5, 5, 17, 16, 4, 3, 17, 17, 21, 16, 16, 21, 7, 3, 2, 17, 21, 19, 18, 21, 17, 19, 17, 2, 19, 21, 8, 7, 21, 18, 8, 18, 9, 8, 19, 22, 18, 18, 10, 9, 18, 22, 10, 2, 1, 19, 19, 20, 22, 19, 1, 20, 22, 11, 10, 22, 20, 11, 20, 1, 14, 20, 12, 11, 1, 0, 14, 20, 13, 12, 20, 14, 13, 0, 15, 14 ], - "vertices": [ 56.93, 27.95, 43.37, 18.24, 30.16, 19.5, 11.53, 21.29, -2.55, 10.69, -10.89, -13.12, -11.59, -21.24, 8.55, -36.13, 19.66, -37.09, 28.69, -37.86, 37.69, -34.01, 45.99, -30.45, 56.4, -29.07, 84.79, -20.92, 87.9, 15.15, 81.89, 25.8, 1.67, -21.02, 10.04, 2.19, 25.23, -18.25, 29.99, 0.01, 48.54, -8.4, 13.98, -21.37, 35.91, -15.6 ], - "hull": 16, - "edges": [ 0, 2, 6, 8, 8, 10, 10, 12, 12, 14, 22, 24, 24, 26, 26, 28, 28, 30, 0, 30, 14, 32, 32, 34, 34, 6, 18, 36, 36, 38, 2, 4, 4, 6, 38, 4, 2, 40, 40, 22, 40, 38, 38, 34, 32, 10, 34, 8, 40, 28, 14, 16, 16, 18, 32, 42, 42, 36, 16, 42, 42, 34, 18, 20, 20, 22, 36, 44, 44, 40, 20, 44 ], - "width": 68, - "height": 96 - } - }, - "undie-straps": { - "undie-straps": { - "name": "goblin/undie-straps", - "type": "mesh", - "uvs": [ 0.36098, 0.4496, 0.66298, 0.60591, 1, 0.19486, 1, 0.57118, 0.75898, 1, 0.38698, 1, 0, 0.26433, 0, 0, 0.12498, 0 ], - "triangles": [ 6, 7, 8, 6, 8, 0, 3, 1, 2, 5, 0, 1, 6, 0, 5, 4, 1, 3, 5, 1, 4 ], - "vertices": [ -10.56, 12.88, 6.54, 9.91, 25.62, 17.72, 25.62, 10.57, 11.97, 2.42, -9.09, 2.42, -31, 16.4, -31, 21.42, -23.93, 21.42 ], - "hull": 9, - "edges": [ 14, 16, 16, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 12, 14, 10, 12, 0, 10, 2, 8 ], - "width": 55, - "height": 19 - } - }, - "undies": { - "undies": { - "name": "goblin/undies", - "type": "mesh", - "uvs": [ 0, 0.3203, 0.14893, 0.59457, 0.22438, 1, 0.3591, 1, 0.50999, 1, 0.7956, 0.58454, 0.98421, 0.28016, 1, 0.00588, 0.46957, 0.17647, 0, 0.03933, 0.48843, 0.59123, 0.48115, 0.431 ], - "triangles": [ 6, 8, 7, 0, 9, 8, 11, 8, 6, 0, 8, 11, 5, 11, 6, 10, 11, 5, 1, 0, 11, 1, 11, 10, 3, 2, 1, 10, 3, 1, 4, 10, 5, 3, 10, 4 ], - "vertices": [ -13.22, 5.57, -8, -2.48, -5.49, -14.28, -0.64, -14.36, 4.79, -14.46, 15.28, -2.59, 22.22, 6.12, 22.93, 14.06, 3.75, 9.45, -13.08, 13.72, 4.22, -2.59, 4.04, 2.06 ], - "hull": 10, - "edges": [ 0, 2, 2, 4, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18, 4, 6, 6, 8, 6, 20, 16, 22, 22, 20, 0, 22, 22, 12, 2, 20, 20, 10 ], - "width": 36, - "height": 29 - } - } - } - }, - { - "name": "goblingirl", - "attachments": { - "eyes": { - "eyes-closed": { "name": "goblingirl/eyes-closed", "x": 28, "y": -25.55, "rotation": -87.05, "width": 37, "height": 21 } - }, - "head": { - "head": { "name": "goblingirl/head", "x": 27.72, "y": -4.32, "rotation": -85.58, "width": 103, "height": 81 } - }, - "left-arm": { - "left-arm": { "name": "goblingirl/left-arm", "x": 19.64, "y": -2.43, "rotation": 33.05, "width": 37, "height": 35 } - }, - "left-foot": { - "left-foot": { "name": "goblingirl/left-foot", "type": "linkedmesh", "skin": "goblin", "parent": "left-foot", "width": 65, "height": 31 } - }, - "left-hand": { - "left-hand": { - "name": "goblingirl/left-hand", - "x": 4.34, - "y": 2.39, - "scaleX": 0.8965, - "scaleY": 0.8965, - "rotation": 30.35, - "width": 35, - "height": 40 - } - }, - "left-lower-leg": { - "left-lower-leg": { "name": "goblingirl/left-lower-leg", "x": 25.02, "y": -0.61, "rotation": 105.76, "width": 33, "height": 70 } - }, - "left-shoulder": { - "left-shoulder": { "name": "goblingirl/left-shoulder", "x": 19.81, "y": -0.43, "rotation": 61.22, "width": 28, "height": 46 } - }, - "left-upper-leg": { - "left-upper-leg": { "name": "goblingirl/left-upper-leg", "x": 30.22, "y": -2.95, "rotation": 89.1, "width": 33, "height": 70 } - }, - "neck": { - "neck": { "name": "goblingirl/neck", "x": 6.16, "y": -3.15, "rotation": -98.86, "width": 35, "height": 41 } - }, - "pelvis": { - "pelvis": { "name": "goblingirl/pelvis", "x": -3.88, "y": 3.19, "width": 62, "height": 43 } - }, - "right-arm": { - "right-arm": { "name": "goblingirl/right-arm", "x": 16.85, "y": -0.66, "rotation": 93.53, "width": 28, "height": 50 } - }, - "right-foot": { - "right-foot": { "name": "goblingirl/right-foot", "type": "linkedmesh", "skin": "goblin", "parent": "right-foot", "width": 63, "height": 33 } - }, - "right-hand": { - "right-hand": { "name": "goblingirl/right-hand", "x": 7.22, "y": 3.44, "rotation": 91.17, "width": 36, "height": 37 } - }, - "right-hand-thumb": { - "right-hand-thumb": { "name": "goblingirl/right-hand", "x": 7.22, "y": 3.44, "rotation": 91.17, "width": 36, "height": 37 } - }, - "right-lower-leg": { - "right-lower-leg": { "name": "goblingirl/right-lower-leg", "x": 26.15, "y": -3.28, "rotation": 111.84, "width": 36, "height": 76 } - }, - "right-shoulder": { - "right-shoulder": { "name": "goblingirl/right-shoulder", "x": 14.46, "y": 0.46, "rotation": 129.85, "width": 39, "height": 45 } - }, - "right-upper-leg": { - "right-upper-leg": { "name": "goblingirl/right-upper-leg", "x": 19.7, "y": 2.13, "rotation": 97.5, "width": 34, "height": 63 } - }, - "torso": { - "torso": { "name": "goblingirl/torso", "x": 36.28, "y": -5.14, "rotation": -95.75, "width": 68, "height": 96 } - }, - "undie-straps": { - "undie-straps": { "name": "goblingirl/undie-straps", "x": -1.52, "y": 14.19, "width": 55, "height": 19 } - }, - "undies": { - "undies": { "name": "goblingirl/undies", "x": 5.4, "y": 1.71, "width": 36, "height": 29 } - } - } - } -], -"animations": { - "walk": { - "slots": { - "eyes": { - "attachment": [ - { "time": 0.7, "name": "eyes-closed" }, - { "time": 0.8 } - ] - } - }, - "bones": { - "left-upper-leg": { - "rotate": [ - { "value": -26.56 }, - { "time": 0.1333, "value": -8.79 }, - { "time": 0.2333, "value": 9.51 }, - { "time": 0.3667, "value": 30.74 }, - { "time": 0.5, "value": 25.34 }, - { "time": 0.6333, "value": 26.12 }, - { "time": 0.7333, "value": 7.45 }, - { "time": 0.8667, "value": -21.19 }, - { "time": 1, "value": -26.56 } - ], - "translate": [ - { "x": -1.32, "y": 1.71 }, - { "time": 0.3667, "x": -0.06, "y": 2.43 }, - { "time": 1, "x": -1.32, "y": 1.71 } - ] - }, - "right-upper-leg": { - "rotate": [ - { "value": 42.45 }, - { - "time": 0.1333, - "value": 49.86, - "curve": [ 0.175, 49.86, 0.204, 22.69 ] - }, - { "time": 0.2333, "value": 22.51 }, - { "time": 0.5, "value": -16.94 }, - { "time": 0.6333, "value": 1.9 }, - { - "time": 0.7333, - "value": 34.87, - "curve": [ 0.795, 37.71, 0.867, 58.69 ] - }, - { - "time": 0.8667, - "value": 58.69, - "curve": [ 0.933, 58.35, 1, 42.45 ] - }, - { "time": 1, "value": 42.45 } - ], - "translate": [ - { "x": 6.24 }, - { "time": 0.2333, "x": 2.14, "y": 2.4 }, - { "time": 0.5, "x": 2.44, "y": 4.8 }, - { "time": 1, "x": 6.24 } - ] - }, - "left-lower-leg": { - "rotate": [ - { "value": -18.05 }, - { "time": 0.1333, "value": -63.51 }, - { "time": 0.2333, "value": -83.02 }, - { "time": 0.5, "value": 5.12 }, - { "time": 0.6333, "value": -28.3 }, - { "time": 0.7333, "value": -27.52 }, - { "time": 0.8667, "value": 3.53 }, - { "time": 1, "value": -18.05 } - ], - "translate": [ - {}, - { "time": 0.2333, "x": 2.56, "y": -0.47 }, - { "time": 0.5 } - ] - }, - "left-foot": { - "rotate": [ - { "value": -14.57 }, - { "time": 0.1333, "value": -10.42 }, - { "time": 0.2333, "value": -5.01 }, - { "time": 0.3, "value": 6.67 }, - { "time": 0.3667, "value": 3.87 }, - { "time": 0.5, "value": -3.88 }, - { "time": 0.6333, "value": 2.78 }, - { "time": 0.7333, "value": -12 }, - { "time": 0.8667, "value": -12.45 }, - { "time": 1, "value": -14.57 } - ] - }, - "right-shoulder": { - "rotate": [ - { - "value": 5.29, - "curve": [ 0.167, 5.29, 0.475, 6.65 ] - }, - { "time": 0.6333, "value": 6.65 }, - { "time": 1, "value": 5.29 } - ] - }, - "right-arm": { - "rotate": [ - { - "value": -4.03, - "curve": [ 0.169, -3.91, 0.51, 19.66 ] - }, - { - "time": 0.6333, - "value": 19.79, - "curve": [ 0.746, 19.75, 0.922, -3.91 ] - }, - { "time": 1, "value": -4.03 } - ] - }, - "right-hand": { - "rotate": [ - { "value": 8.99 }, - { "time": 0.6333, "value": 0.51 }, - { "time": 1, "value": 8.99 } - ] - }, - "left-shoulder": { - "rotate": [ - { - "value": 6.26, - "curve": [ 0.17, 6.26, 0.342, -11.79 ] - }, - { - "time": 0.5, - "value": -11.79, - "curve": [ 0.641, -11.79, 0.843, 6.16 ] - }, - { "time": 1, "value": 6.26 } - ], - "translate": [ - { "x": 1.15, "y": 0.24 } - ] - }, - "left-hand": { - "rotate": [ - { - "value": -21.24, - "curve": [ 0.148, -21.24, 0.378, -27.21 ] - }, - { - "time": 0.5, - "value": -27.28, - "curve": [ 0.621, -27.28, 0.875, -21.4 ] - }, - { "time": 1, "value": -21.24 } - ] - }, - "left-arm": { - "rotate": [ - { - "value": 28.38, - "curve": [ 0.17, 28.38, 0.342, 60.09 ] - }, - { - "time": 0.5, - "value": 60.09, - "curve": [ 0.641, 60.09, 0.843, 28.54 ] - }, - { "time": 1, "value": 28.38 } - ] - }, - "torso": { - "rotate": [ - { "value": -10.28 }, - { - "time": 0.1333, - "value": -15.39, - "curve": [ 0.261, -15.36, 0.324, -9.78 ] - }, - { - "time": 0.3667, - "value": -9.78, - "curve": [ 0.521, -10.8, 0.545, -15.72 ] - }, - { - "time": 0.6333, - "value": -15.75, - "curve": [ 0.688, -15.66, 0.819, -7.07 ] - }, - { - "time": 0.8667, - "value": -7.07, - "curve": [ 0.895, -7.07, 0.975, -10.25 ] - }, - { "time": 1, "value": -10.28 } - ] - }, - "right-foot": { - "rotate": [ - { "value": -5.25 }, - { "time": 0.2333, "value": -17.77 }, - { "time": 0.3667, "value": -20.1 }, - { "time": 0.5, "value": -19.74 }, - { "time": 0.7333, "value": -11.69 }, - { "time": 0.8, "value": 4.47 }, - { "time": 0.8667, "value": 0.46 }, - { "time": 1, "value": -5.25 } - ] - }, - "right-lower-leg": { - "rotate": [ - { - "value": -3.39, - "curve": [ 0.042, -4.01, 0.099, -42.81 ] - }, - { - "time": 0.1333, - "value": -43.22, - "curve": [ 0.175, -43.22, 0.204, -26.09 ] - }, - { "time": 0.2333, "value": -25.98 }, - { "time": 0.5, "value": -19.53 }, - { "time": 0.6333, "value": -64.8 }, - { - "time": 0.7333, - "value": -89.54, - "curve": [ 0.882, -74, 1, -3.39 ] - }, - { "time": 1, "value": -3.39 } - ], - "translate": [ - { "time": 0.5 }, - { "time": 0.6333, "x": 2.19, "y": 0.21 }, - { "time": 1 } - ] - }, - "hip": { - "translate": [ - { "y": -8.4 }, - { - "time": 0.1333, - "y": -9.35, - "curve": [ 0.166, 0, 0.201, 0, 0.166, -8.91, 0.201, -1.14 ] - }, - { - "time": 0.2333, - "y": -0.59, - "curve": [ 0.277, 0, 0.319, 0, 0.277, -1.92, 0.319, -2.96 ] - }, - { "time": 0.3667, "y": -3.97 }, - { "time": 0.5, "y": -8.4 }, - { - "time": 0.6333, - "y": -10.01, - "curve": [ 0.669, 0, 0.698, 0, 0.669, -7.79, 0.698, -6.49 ] - }, - { - "time": 0.7333, - "y": -5.3, - "curve": [ 0.756, 0, 0.778, 0, 0.756, -4.27, 0.778, -3.35 ] - }, - { - "time": 0.8, - "y": -2.5, - "curve": [ 0.821, 0, 0.843, 0, 0.821, -3.02, 0.843, -3.5 ] - }, - { "time": 0.8667, "y": -3.97 }, - { "time": 1, "y": -8.4 } - ] - }, - "neck": { - "rotate": [ - { "value": 3.6 }, - { "time": 0.1333, "value": 17.5 }, - { "time": 0.2333, "value": 6.11 }, - { "time": 0.3667, "value": 3.46 }, - { "time": 0.5, "value": 5.18 }, - { "time": 0.6333, "value": 18.36 }, - { "time": 0.7333, "value": 6.09 }, - { "time": 0.8667, "value": 2.29 }, - { "time": 1, "value": 3.6 } - ] - }, - "head": { - "rotate": [ - { - "value": 3.6, - "curve": [ 0, 3.6, 0.094, -0.89 ] - }, - { "time": 0.1333, "value": -0.21 }, - { "time": 0.2333, "value": 6.11 }, - { "time": 0.3667, "value": 3.46 }, - { - "time": 0.5, - "value": 5.18, - "curve": [ 0.5, 5.18, 0.617, -1.4 ] - }, - { "time": 0.6667, "value": 1.11 }, - { "time": 0.7333, "value": 6.09 }, - { "time": 0.8667, "value": 2.29 }, - { "time": 1, "value": 3.6 } - ] - }, - "pelvis": { - "rotate": [ - { "value": -1.34 } - ], - "translate": [ - { "x": 0.39, "y": -0.78 } - ] - }, - "spear1": { - "rotate": [ - { "value": 1.85 }, - { "time": 0.2, "value": -5.39 }, - { "time": 0.5, "value": 2.95 }, - { "time": 0.7333, "value": -3.67 }, - { "time": 1, "value": 1.85 } - ] - }, - "spear2": { - "rotate": [ - { "value": 1.85 }, - { "time": 0.2, "value": -5.39 }, - { "time": 0.5, "value": 2.95 }, - { "time": 0.7333, "value": -3.67 }, - { "time": 1, "value": 1.85 } - ] - }, - "spear3": { - "rotate": [ - { "value": 3.64 }, - { "time": 0.2, "value": -3.6 }, - { "time": 0.5, "value": 4.74 }, - { "time": 0.7333, "value": -1.88 }, - { "time": 1, "value": 3.64 } - ] - } - }, - "attachments": { - "default": { - "right-hand-item": { - "dagger": { - "deform": [ - { - "offset": 26, - "vertices": [ 2.34755, 0.1447 ], - "curve": [ 0.125, 0, 0.375, 1 ] - }, - { - "time": 0.5, - "offset": 8, - "vertices": [ -1.19415, 4.31532, 0.07279, 6.41351, 1.66048, 6.18883, 1.75233, 3.59555 ], - "curve": [ 0.625, 0, 0.875, 1 ] - }, - { - "time": 1, - "offset": 26, - "vertices": [ 2.34755, 0.1447 ] - } - ] - } - } - }, - "goblin": { - "head": { - "head": { - "deform": [ - { - "curve": [ 0.127, 0, 0.15, 1 ] - }, - { - "time": 0.2, - "vertices": [ -10.97827, -6.68962, -4.68015, -2.46175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.08534, 0.08392, -1.08534, 0.08392, -1.08534, 0.08392, 0, 0, -2.22325, 2.66465, -4.83295, 2.70085, -5.70553, -0.51941, -3.15962, -1.61502, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.64742, 0.81612, -11.82286, -1.34955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.08534, 0.08392 ], - "curve": [ 0.242, 0, 0.325, 1 ] - }, - { - "time": 0.3667, - "vertices": [ 10.69276, 4.05949, 3.66373, 1.85427, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.47305, 0.09018, 1.47305, 0.09018, 1.47305, 0.09018, 0, 0, 2.69653, -0.22738, 3.77135, 0.11418, 3.6893, 1.55352, 2.49595, 1.65501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.45881, -3.9113, 9.19594, -1.66854, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.47305, 0.09018 ], - "curve": [ 0.574, 0, 0.617, 1 ] - }, - { - "time": 0.7, - "vertices": [ -10.97827, -6.68962, -4.68015, -2.46175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.17551, -0.17183, -1.17551, -0.17183, -1.17551, -0.17183, 0, 0, -2.22325, 2.66465, -4.83295, 2.70085, -5.70553, -0.51941, -3.15962, -1.61502, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.64742, 0.81612, -11.82286, -1.34955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.17551, -0.17183 ], - "curve": [ 0.742, 0, 0.825, 1 ] - }, - { - "time": 0.8667, - "vertices": [ 10.69276, 4.05949, 3.66373, 1.85427, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.38687, 0.08446, 0.38687, 0.08446, 0.38687, 0.08446, 0, 0, 2.69653, -0.22738, 3.77135, 0.11418, 3.6893, 1.55352, 2.49595, 1.65501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.45881, -3.9113, 9.19594, -1.66854, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.38687, 0.08446 ], - "curve": [ 0.9, 0, 0.967, 1 ] - }, - { "time": 1 } - ] - } - }, - "left-foot": { - "left-foot": { - "deform": [ - { - "offset": 8, - "vertices": [ 3.69298, 2.37573, -7.16969, 18.79733, -12.78162, 14.7778, -12.75776, 6.50514, -3.13476, 1.98906, -0.44402, 0.36629, 0, 0, -3.80085, 2.98474 ] - }, - { "time": 0.1333 }, - { - "time": 0.2333, - "offset": 8, - "vertices": [ -3.96073, -2.34594, -5.80446, -12.47629, -2.2313, -12.99038, 2.02942, -9.1036, 0, 0, 0, 0, 0, 0, -1.35254, -5.2883 ] - }, - { - "time": 0.3667, - "offset": 8, - "vertices": [ 0.66505, 0.33548, 0.33902, 2.69014, -0.48171, 2.54524, -1.13593, 1.38562, 0, 0, 0, 0, 0, 0, -0.11908, 0.79273 ] - }, - { "time": 0.5, "curve": "stepped" }, - { "time": 0.6333 }, - { - "time": 0.7333, - "offset": 8, - "vertices": [ -2.97738, 9.40254, -6.91661, 19.92794, -10.55287, 18.41085, -12.37161, 12.38473, -4.72607, 6.30799, 0, 0, -1.48902, 4.88944, -7.06773, 10.70102 ] - }, - { - "time": 0.8333, - "offset": 6, - "vertices": [ 1.05319, 1.56362, -2.52723, 7.9974, -5.52031, 17.14137, -8.93317, 15.79635, -10.73748, 10.22056, -4.23801, 5.36992, 0, 0, 0, 0, -5.83148, 8.55532 ] - }, - { - "time": 1, - "offset": 8, - "vertices": [ 3.69298, 2.37573, -7.16969, 18.79733, -12.78162, 14.7778, -12.75776, 6.50514, -3.13476, 1.98906, -0.44402, 0.36629, 0, 0, -3.80085, 2.98474 ] - } - ] - } - }, - "pelvis": { - "pelvis": { - "deform": [ - {}, - { - "time": 0.1333, - "offset": 6, - "vertices": [ -0.6899, -4.13284 ] - }, - { - "time": 0.3333, - "offset": 6, - "vertices": [ -1.04945, -3.10477 ] - }, - { - "time": 0.7, - "offset": 6, - "vertices": [ -1.4245, -6.30617 ] - }, - { - "time": 0.8667, - "offset": 6, - "vertices": [ -1.13542, -1.79036 ] - }, - { "time": 1 } - ] - } - }, - "right-foot": { - "right-foot": { - "deform": [ - {}, - { - "time": 0.1333, - "offset": 2, - "vertices": [ -2.81259, 2.63115, -2.35238, 3.89441, -1.99921, 4.8639, -0.93273, 5.57982, -0.48886, 5.09855, -0.34813, 3.42912, -0.17446, 1.36899, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.31305, 1.91372, -1.32986, 3.65703 ] - }, - { - "time": 0.2333, - "offset": 2, - "vertices": [ -6.39088, 6.41246, -7.74575, 8.27192, -7.02471, 11.35894, -4.03471, 13.93454, -2.50399, 12.62963, -1.46125, 7.58915, -0.17446, 1.36899, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.84766, 2.61216, -4.53956, 7.92358 ] - }, - { - "time": 0.3, - "offset": 2, - "vertices": [ -8.27185, 6.68822, -9.29764, 10.13797, -8.62231, 14.7134, -4.5863, 18.81939, -2.20304, 17.10709, -0.07795, 9.9046, 2.54452, 1.01642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.94625, 2.38008, -4.59399, 10.01888 ] - }, - { - "time": 0.3667, - "offset": 2, - "vertices": [ -10.47684, 9.44176, -13.36883, 12.40983, -14.32569, 16.94392, -9.24463, 23.55674, -5.51712, 21.51378, -1.19582, 11.53193, 2.54452, 1.01642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.14848, 2.29389, -6.63419, 11.37127 ] - }, - { - "time": 0.5, - "offset": 2, - "vertices": [ -5.42474, 4.36854, -10.59004, 7.04468, -11.64251, 11.55845, -6.19665, 20.12806, -1.45498, 18.05411, 4.8662, 6.41679, 2.81463, 0.27601, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.96412, 4.9483 ] - }, - { "time": 0.6333 }, - { - "time": 0.7333, - "offset": 4, - "vertices": [ 1.31462, -6.84099, -0.87905, -12.54479, -5.9851, -14.08368, -7.15892, -11.63194, -5.6792, -4.83545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.06164, -6.93844 ] - }, - { - "time": 0.8, - "offset": 4, - "vertices": [ 0.65731, -3.4205, -0.43953, -6.2724, -2.99255, -7.04184, -3.57946, -5.81597, -2.8396, -2.41772, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.79688, -1.28021, 0, 0, 0, 0, -1.03082, -3.46922 ] - }, - { "time": 0.8667 } - ] - } - }, - "right-hand": { - "right-hand": { - "deform": [ - { - "offset": 4, - "vertices": [ -1.48417, 0.34736, 0, 0, 1.31152, 0.08085, 1.60296, 0.09882, 0.13673, 0.15471, 0, 0, 0, 0, -0.72862, -0.0449 ] - }, - { "time": 0.5 }, - { - "time": 1, - "offset": 4, - "vertices": [ -1.48417, 0.34736, 0, 0, 1.31152, 0.08085, 1.60296, 0.09882, 0.13673, 0.15471, 0, 0, 0, 0, -0.72862, -0.0449 ] - } - ] - } - }, - "right-lower-leg": { - "right-lower-leg": { - "deform": [ - {}, - { - "time": 0.6, - "offset": 6, - "vertices": [ 1.80396, -1.56553 ] - }, - { "time": 1 } - ] - } - }, - "right-upper-leg": { - "right-upper-leg": { - "deform": [ - { - "vertices": [ -6.03857, -1.46325, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.34685, -1.93102, -1.86047, -5.05266, -2.5014, -3.09985 ] - }, - { "time": 0.3333 }, - { - "time": 0.8667, - "offset": 14, - "vertices": [ 0.13425, -2.35378, -1.33318, -5.99573, -1.35862, -4.43324 ] - }, - { - "time": 1, - "vertices": [ -6.03857, -1.46325, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.34685, -1.93102, -1.86047, -5.05266, -2.5014, -3.09985 ] - } - ] - } - }, - "torso": { - "torso": { - "deform": [ - { - "offset": 2, - "vertices": [ 0.24821, 2.86673, 0.24821, 2.86673, 0.24821, 2.86673, 0.24821, 2.86673, 0.24821, 2.86673, 0.24821, 2.86673, -1.24131, 2.62652, -2.47492, 0.71183, -0.26363, -0.5308, 0.24821, 2.86673, 0.24821, 2.86673, 0, 0, 0, 0, 0, 0, 0, 0, 1.34461, 0.25215, 0.24821, 2.86673, 0.82507, 1.61798, 0.24821, 2.86673, 0, 0, -1.86431, -0.4326, 0.24821, 2.86673 ] - }, - { - "time": 0.1333, - "offset": 2, - "vertices": [ 0.35589, 4.10914, 0.35589, 4.10914, 0.35589, 4.10914, 0.35589, 4.10914, 0.35589, 4.10914, 0.35589, 4.10914, 1.66908, 3.51187, -0.62355, 2.47979, 1.1045, 3.49684, -1.09009, 6.08429, 0.35589, 4.10914, 0, 0, 0, 0, 0, 0, 0, 0, 3.01291, 0.15693, 0.35589, 4.10914, -1.11398, 3.7954, 0.35589, 4.10914, 0, 0, -2.96167, 0.55563, -2.20741, 4.40587 ] - }, - { - "time": 0.3, - "offset": 2, - "vertices": [ 0.2884, 3.32948, 0.2884, 3.32948, 0.2884, 3.32948, 0.2884, 3.32948, 0.2884, 3.32948, 0.2884, 3.32948, 6.32601, 0.19387, 7.84315, 1.94837, 7.08587, 3.64119, 4.52343, 4.46961, 0.2884, 3.32948, 0, 0, 0, 0, 0, 0, 0, 0, 4.36416, -1.83876, 0.2884, 3.32948, 4.2925, 3.60194, 0.2884, 3.32948, 0, 0, 3.72601, -0.19338, 0.2884, 3.32948 ] - }, - { - "time": 0.5, - "offset": 2, - "vertices": [ 0.3133, 3.61659, 0.3133, 3.61659, 0.3133, 3.61659, 0.3133, 3.61659, 0.3133, 3.61659, 0.3133, 3.61659, 2.57273, 2.74457, 2.88831, 3.04797, 3.48442, 3.04655, 1.80035, 4.609, 0.3133, 3.61659, 0, 0, 0, 0, 0, 0, 0, 0, 3.53782, -0.82203, 0.3133, 3.61659, 1.80022, 3.63246, 0.3133, 3.61659, 0, 0, 0.62718, 0.33564, -1.22467, 3.79463 ] - }, - { - "time": 0.6333, - "offset": 2, - "vertices": [ 0.44398, 5.125, 0.44398, 5.125, 0.44398, 5.125, 0.44398, 5.125, 0.44398, 5.125, 0.44398, 5.125, 1.19401, 3.60798, -0.53546, 3.49565, 1.1926, 4.5127, -1.002, 7.10015, 0.44398, 5.125, 0, 0, 0, 0, 0, 0, 0, 0, 3.101, 1.17278, 0.44398, 5.125, -1.02589, 4.81126, 0.44398, 5.125, 0, 0, -2.87358, 1.57149, -2.11931, 5.42173 ] - }, - { - "time": 0.8667, - "offset": 2, - "vertices": [ 0.30385, 3.50647, 0.30385, 3.50647, 0.30385, 3.50647, 0.30385, 3.50647, 0.30385, 3.50647, 0.30385, 3.50647, 0.92587, 2.24385, 0.68874, 1.29945, 3.55433, 3.00604, 2.71494, 5.89962, 0.30385, 3.50647, 0, 0, 0, 0, 0, 0, 0, 0, 1.96775, 0.40548, 0.30385, 3.50647, 2.6104, 2.3545, 0.30385, 3.50647, 0, 0, 0.22709, -0.12851, -0.62826, 3.61437 ] - }, - { - "time": 1, - "offset": 2, - "vertices": [ 0.32802, 3.78826, 0.32802, 3.78826, 0.32802, 3.78826, 0.32802, 3.78826, 0.32802, 3.78826, 0.32802, 3.78826, -1.1615, 3.54805, -2.39511, 1.63336, -0.18382, 0.39073, 0.32802, 3.78826, 0.32802, 3.78826, 0, 0, 0, 0, 0, 0, 0, 0, 1.42442, 1.17368, 0.32802, 3.78826, 0.90488, 2.53951, 0.32802, 3.78826, 0, 0, -1.7845, 0.48894, 0.32802, 3.78826 ] - } - ] - } - }, - "undie-straps": { - "undie-straps": { - "deform": [ - { - "offset": 2, - "vertices": [ -1.77697, 0.5476, -0.96145, -1.03793, -0.39148, -0.24072, -1.77697, 0.5476 ] - }, - { - "time": 0.1333, - "offset": 2, - "vertices": [ -2.25684, -1.03177, -1.49719, -4.23862, -0.7447, -2.84907, -1.90072, 0.54478 ] - }, - { - "time": 0.3333, - "offset": 2, - "vertices": [ -2.37974, -0.05432, -0.49433, 0.19437, -0.90861, 1.16519, -1.60956, 2.70799, 0.96186, 0.80615 ] - }, - { - "time": 0.7, - "offset": 2, - "vertices": [ -0.91715, -2.76567, -0.62215, -3.63489, -0.84941, -2.26772, -2.56077, 0.52971 ] - }, - { - "time": 0.8667, - "offset": 2, - "vertices": [ -2.56077, 0.52971, -1.58065, 0.32031, -1.3847, 0.32476, -2.56077, 0.52971 ] - }, - { - "time": 1, - "offset": 2, - "vertices": [ -1.77697, 0.5476, -0.80128, 0.53413, -0.80128, 0.53413, -1.77697, 0.5476 ] - } - ] - } - }, - "undies": { - "undies": { - "deform": [ - { - "vertices": [ 0.43099, 0.722, 10.60295, -0.117, 2.29599, 0, 2.29599, 0, 2.29599, 0, 0.58799, 0.244, -2.40018, -0.65335, -2.2782, -0.77534, 2.29599, 0, 0.58799, -0.488, 4.98698, -0.117, 6.50797, -0.23399 ] - }, - { - "time": 0.1333, - "vertices": [ 0.72659, 0.4332, 7.20417, -0.1638, 1.37759, 0, 1.37759, 0, 1.37759, 0, 1.25279, 0.0464, -0.99862, -2.95085, -1.37543, -3.07404, 1.37759, 0, 0.35279, -0.2928, 2.99219, -0.0702, 3.90478, -0.1404 ] - }, - { - "time": 0.3333, - "vertices": [ 1.16999, 0, 2.10599, -0.23401, 0, 0, 0, 0, 0, 0, 2.24999, -0.24999, -0.4344, 0.60551, -1.55939, 0.48051 ] - }, - { - "time": 0.5333, - "vertices": [ 1.16999, 0, -0.234, -0.936, -2.92499, 0.351, 0, 0, 0, 0, 0.5, -0.24999, -0.64079, -2.07915, -0.64079, -2.07915 ] - }, - { - "time": 0.7, - "vertices": [ 1.86271, -0.11514, 4.66327, -0.091, -1.76428, 0.21171, 0, 0, -0.56833, 0.32833, -1.13833, -1.15111, -2.19996, -3.47068, -1.29719, -3.47068, 0, 0, 0, 0, 1.58785, -0.04643, 2.65942, 0.16715 ] - }, - { - "time": 0.8333, - "vertices": [ 2.41688, -0.20726, 8.58108, 0.585, -0.83571, 0.10029, 0, 0, -1.02299, 0.59099, -2.449, -1.872, -1.625, 0, 0, 0, 0, 0, 0, 0, 2.85813, -0.08357, 4.78695, 0.30086 ] - }, - { - "time": 0.8667, - "vertices": [ 2.0197, -0.02141, 8.98546, 0.4446, -0.20937, 0.08023, 0.4592, 0, -0.3592, 0.47279, -1.8416, -1.4488, -0.79153, 1.26421, 0.53286, 1.23981, 0.4592, 0, 0.1176, -0.0976, 3.2839, -0.09025, 5.13116, 0.19389 ] - }, - { - "time": 1, - "vertices": [ 0.43099, 0.722, 10.60295, -0.117, 2.29599, 0, 2.29599, 0, 2.29599, 0, 0.58799, 0.244, -2.40018, -0.65335, -2.2782, -0.77534, 2.29599, 0, 0.58799, -0.488, 4.98698, -0.117, 6.50797, -0.23399 ] - } - ] - } - } - } - } - } -} -} \ No newline at end of file diff --git a/spine-cocos2dx/example/Resources/common/goblins.atlas b/spine-cocos2dx/example/Resources/common/goblins.atlas deleted file mode 100644 index 67b24a2eb..000000000 --- a/spine-cocos2dx/example/Resources/common/goblins.atlas +++ /dev/null @@ -1,105 +0,0 @@ -goblins.png - size: 1024, 128 - filter: Linear, Linear -dagger - bounds: 372, 99, 26, 108 - rotate: 90 -goblin/eyes-closed - bounds: 291, 13, 34, 12 -goblin/head - bounds: 2, 35, 103, 66 -goblin/left-arm - bounds: 900, 23, 37, 35 -goblin/left-foot - bounds: 957, 60, 65, 31 - rotate: 90 -goblin/left-hand - bounds: 498, 6, 36, 41 - rotate: 90 -goblin/left-lower-leg - bounds: 747, 55, 33, 70 -goblin/left-shoulder - bounds: 54, 4, 29, 44 - rotate: 90 -goblin/left-upper-leg - bounds: 587, 28, 33, 73 - rotate: 90 -goblin/neck - bounds: 455, 6, 36, 41 - rotate: 90 -goblin/pelvis - bounds: 632, 63, 62, 43 - rotate: 90 -goblin/right-arm - bounds: 455, 47, 23, 50 -goblin/right-foot - bounds: 889, 62, 63, 33 - rotate: 90 -goblin/right-hand - bounds: 823, 23, 36, 37 -goblin/right-lower-leg - bounds: 377, 23, 36, 76 - rotate: 90 -goblin/right-shoulder - bounds: 662, 8, 39, 45 -goblin/right-upper-leg - bounds: 818, 62, 34, 63 -goblin/torso - bounds: 205, 33, 68, 96 - rotate: 90 -goblin/undie-straps - bounds: 157, 12, 55, 19 -goblin/undies - bounds: 214, 2, 36, 29 -goblingirl/eyes-closed - bounds: 252, 10, 37, 21 -goblingirl/head - bounds: 482, 44, 103, 81 -goblingirl/left-arm - bounds: 861, 25, 37, 35 -goblingirl/left-foot - bounds: 924, 60, 65, 31 - rotate: 90 -goblingirl/left-hand - bounds: 703, 13, 35, 40 -goblingirl/left-lower-leg - bounds: 712, 55, 33, 70 -goblingirl/left-shoulder - bounds: 939, 12, 28, 46 -goblingirl/left-upper-leg - bounds: 677, 55, 33, 70 -goblingirl/neck - bounds: 541, 7, 35, 41 - rotate: 90 -goblingirl/pelvis - bounds: 587, 63, 62, 43 - rotate: 90 -goblingirl/right-arm - bounds: 2, 5, 28, 50 - rotate: 90 -goblingirl/right-foot - bounds: 854, 62, 63, 33 - rotate: 90 -goblingirl/right-hand - bounds: 740, 16, 36, 37 -goblingirl/right-lower-leg - bounds: 377, 61, 36, 76 - rotate: 90 -goblingirl/right-shoulder - bounds: 782, 15, 39, 45 -goblingirl/right-upper-leg - bounds: 782, 62, 34, 63 -goblingirl/torso - bounds: 107, 33, 68, 96 - rotate: 90 -goblingirl/undie-straps - bounds: 100, 12, 55, 19 -goblingirl/undies - bounds: 969, 22, 36, 29 - rotate: 90 -shield - bounds: 303, 27, 70, 72 - rotate: 90 -spear - bounds: 2, 103, 22, 368 - rotate: 90 diff --git a/spine-cocos2dx/example/Resources/common/goblins.png b/spine-cocos2dx/example/Resources/common/goblins.png deleted file mode 100644 index b522976ab..000000000 Binary files a/spine-cocos2dx/example/Resources/common/goblins.png and /dev/null differ diff --git a/spine-cocos2dx/example/Resources/common/mix-and-match-pro.skel b/spine-cocos2dx/example/Resources/common/mix-and-match-pro.skel deleted file mode 100644 index 0dd65018a..000000000 Binary files a/spine-cocos2dx/example/Resources/common/mix-and-match-pro.skel and /dev/null differ diff --git a/spine-cocos2dx/example/Resources/common/mix-and-match.atlas b/spine-cocos2dx/example/Resources/common/mix-and-match.atlas deleted file mode 100644 index 2a8f1fcda..000000000 --- a/spine-cocos2dx/example/Resources/common/mix-and-match.atlas +++ /dev/null @@ -1,350 +0,0 @@ -mix-and-match.png - size: 1024, 512 - filter: Linear, Linear - scale: 0.5 -base-head - bounds: 185, 123, 95, 73 -boy/arm-front - bounds: 729, 92, 36, 115 - rotate: 90 -boy/backpack - bounds: 619, 218, 119, 153 -boy/backpack-pocket - bounds: 626, 4, 34, 62 - rotate: 90 -boy/backpack-strap-front - bounds: 342, 26, 38, 88 - rotate: 270 -boy/backpack-up - bounds: 750, 12, 21, 70 - rotate: 90 -boy/body - bounds: 716, 125, 97, 132 - rotate: 270 -boy/boot-ribbon-front - bounds: 1012, 360, 9, 11 -boy/collar - bounds: 764, 34, 73, 29 -boy/ear - bounds: 878, 128, 19, 23 -boy/eye-back-low-eyelid - bounds: 467, 245, 17, 6 -boy/eye-back-pupil - bounds: 1012, 327, 8, 9 -boy/eye-back-up-eyelid - bounds: 180, 348, 23, 5 - rotate: 90 -boy/eye-back-up-eyelid-back - bounds: 282, 255, 19, 10 -boy/eye-front-low-eyelid - bounds: 366, 364, 22, 7 -boy/eye-front-pupil - bounds: 1012, 349, 9, 9 -boy/eye-front-up-eyelid - bounds: 155, 340, 31, 6 - rotate: 270 -boy/eye-front-up-eyelid-back - bounds: 338, 362, 26, 9 -boy/eye-iris-back - bounds: 562, 12, 17, 17 -boy/eye-iris-front - bounds: 807, 73, 18, 18 -boy/eye-white-back - bounds: 317, 359, 20, 12 -boy/eye-white-front - bounds: 499, 358, 27, 13 -boy/eyebrow-back - bounds: 194, 360, 20, 11 -boy/eyebrow-front - bounds: 290, 360, 25, 11 -boy/hair-back - bounds: 929, 249, 122, 81 - rotate: 90 -boy/hair-bangs - bounds: 2, 2, 70, 37 -boy/hair-side - bounds: 997, 237, 25, 43 -boy/hand-backfingers - bounds: 376, 15, 19, 21 -boy/hand-front-fingers - bounds: 786, 72, 19, 21 -boy/hat - bounds: 68, 89, 93, 56 -boy/leg-front - bounds: 90, 213, 31, 158 - rotate: 180 -boy/mouth-close - bounds: 187, 350, 21, 5 - rotate: 90 -girl-blue-cape/mouth-close - bounds: 187, 350, 21, 5 - rotate: 90 -girl-spring-dress/mouth-close - bounds: 187, 350, 21, 5 - rotate: 90 -girl/mouth-close - bounds: 187, 350, 21, 5 - rotate: 90 -boy/mouth-smile - bounds: 171, 342, 29, 7 - rotate: 90 -boy/nose - bounds: 1005, 225, 17, 10 -boy/pompom - bounds: 157, 40, 48, 43 -boy/zip - bounds: 883, 163, 14, 23 -girl-blue-cape/back-eyebrow - bounds: 137, 52, 18, 12 -girl-blue-cape/body-dress - bounds: 185, 262, 109, 241 - offsets: 0, 0, 109, 246 - rotate: 90 -girl-blue-cape/body-ribbon - bounds: 881, 28, 50, 38 -girl-blue-cape/cape-back - bounds: 427, 237, 134, 193 - rotate: 90 -girl-blue-cape/cape-back-up - bounds: 899, 126, 123, 106 - rotate: 180 -girl-blue-cape/cape-ribbon - bounds: 427, 353, 50, 18 -girl-blue-cape/cape-shoulder-back - bounds: 510, 3, 49, 59 - rotate: 90 -girl-blue-cape/cape-shoulder-front - bounds: 310, 51, 62, 76 - rotate: 270 -girl-blue-cape/cape-up-front - bounds: 388, 72, 98, 117 - rotate: 90 -girl-blue-cape/ear - bounds: 376, 137, 19, 23 -girl-spring-dress/ear - bounds: 376, 137, 19, 23 -girl/ear - bounds: 376, 137, 19, 23 -girl-blue-cape/eye-back-low-eyelid - bounds: 427, 345, 17, 6 -girl-spring-dress/eye-back-low-eyelid - bounds: 427, 345, 17, 6 -girl/eye-back-low-eyelid - bounds: 427, 345, 17, 6 -girl-blue-cape/eye-back-pupil - bounds: 1012, 338, 8, 9 -girl-spring-dress/eye-back-pupil - bounds: 1012, 338, 8, 9 -girl/eye-back-pupil - bounds: 1012, 338, 8, 9 -girl-blue-cape/eye-back-up-eyelid - bounds: 812, 210, 24, 12 -girl-spring-dress/eye-back-up-eyelid - bounds: 812, 210, 24, 12 -girl/eye-back-up-eyelid - bounds: 812, 210, 24, 12 -girl-blue-cape/eye-back-up-eyelid-back - bounds: 427, 254, 17, 11 -girl-spring-dress/eye-back-up-eyelid-back - bounds: 427, 254, 17, 11 -girl/eye-back-up-eyelid-back - bounds: 427, 254, 17, 11 -girl-blue-cape/eye-front-low-eyelid - bounds: 716, 365, 18, 6 -girl-spring-dress/eye-front-low-eyelid - bounds: 716, 365, 18, 6 -girl/eye-front-low-eyelid - bounds: 716, 365, 18, 6 -girl-blue-cape/eye-front-pupil - bounds: 547, 362, 9, 9 -girl-spring-dress/eye-front-pupil - bounds: 547, 362, 9, 9 -girl/eye-front-pupil - bounds: 547, 362, 9, 9 -girl-blue-cape/eye-front-up-eyelid - bounds: 74, 15, 30, 14 -girl-spring-dress/eye-front-up-eyelid - bounds: 74, 15, 30, 14 -girl/eye-front-up-eyelid - bounds: 74, 15, 30, 14 -girl-blue-cape/eye-front-up-eyelid-back - bounds: 582, 149, 26, 11 -girl-spring-dress/eye-front-up-eyelid-back - bounds: 582, 149, 26, 11 -girl/eye-front-up-eyelid-back - bounds: 582, 149, 26, 11 -girl-blue-cape/eye-iris-back - bounds: 442, 34, 17, 17 -girl-blue-cape/eye-iris-front - bounds: 708, 95, 18, 18 -girl-blue-cape/eye-white-back - bounds: 984, 232, 20, 16 -girl-spring-dress/eye-white-back - bounds: 984, 232, 20, 16 -girl-blue-cape/eye-white-front - bounds: 608, 224, 20, 16 -girl-spring-dress/eye-white-front - bounds: 608, 224, 20, 16 -girl/eye-white-front - bounds: 608, 224, 20, 16 -girl-blue-cape/front-eyebrow - bounds: 424, 172, 18, 12 -girl-blue-cape/hair-back - bounds: 305, 162, 117, 98 -girl-blue-cape/hair-bangs - bounds: 694, 57, 91, 40 -girl-blue-cape/hair-head-side-back - bounds: 397, 2, 30, 52 - rotate: 90 -girl-blue-cape/hair-head-side-front - bounds: 933, 14, 41, 42 - rotate: 90 -girl-blue-cape/hair-side - bounds: 203, 11, 36, 71 - rotate: 270 -girl-blue-cape/hand-front-fingers - bounds: 694, 115, 19, 21 -girl-spring-dress/hand-front-fingers - bounds: 694, 115, 19, 21 -girl-blue-cape/leg-front - bounds: 60, 213, 30, 158 - rotate: 180 -girl-blue-cape/mouth-smile - bounds: 162, 342, 29, 7 - rotate: 90 -girl-spring-dress/mouth-smile - bounds: 162, 342, 29, 7 - rotate: 90 -girl/mouth-smile - bounds: 162, 342, 29, 7 - rotate: 90 -girl-blue-cape/nose - bounds: 558, 364, 11, 7 -girl-spring-dress/nose - bounds: 558, 364, 11, 7 -girl/nose - bounds: 558, 364, 11, 7 -girl-blue-cape/sleeve-back - bounds: 157, 9, 42, 29 -girl-blue-cape/sleeve-front - bounds: 839, 103, 52, 119 -girl-spring-dress/arm-front - bounds: 122, 260, 17, 111 -girl-spring-dress/back-eyebrow - bounds: 2, 199, 18, 12 -girl-spring-dress/body-up - bounds: 2, 79, 64, 66 -girl-spring-dress/cloak-down - bounds: 459, 18, 50, 50 - rotate: 180 -girl-spring-dress/cloak-up - bounds: 247, 50, 61, 58 - offsets: 0, 0, 64, 58 - rotate: 270 -girl-spring-dress/eye-iris-back - bounds: 875, 109, 17, 17 -girl-spring-dress/eye-iris-front - bounds: 479, 353, 18, 18 -girl-spring-dress/front-eyebrow - bounds: 893, 210, 18, 12 -girl-spring-dress/hair-back - bounds: 834, 224, 147, 93 - rotate: 90 -girl-spring-dress/hair-bangs - bounds: 914, 57, 91, 40 -girl-spring-dress/hair-head-side-back - bounds: 217, 341, 30, 52 - rotate: 90 -girl-spring-dress/hair-head-side-front - bounds: 582, 15, 41, 42 - rotate: 90 -girl-spring-dress/hair-side - bounds: 84, 14, 36, 71 - rotate: 90 -girl-spring-dress/leg-front - bounds: 30, 213, 30, 158 - rotate: 180 -girl-spring-dress/neck - bounds: 283, 176, 20, 32 -girl-spring-dress/shoulder-ribbon - bounds: 207, 58, 36, 24 -girl-spring-dress/skirt - bounds: 121, 198, 182, 81 - rotate: 180 -girl-spring-dress/underskirt - bounds: 8, 147, 175, 65 -girl/arm-front - bounds: 907, 93, 36, 115 - rotate: 90 -girl/back-eyebrow - bounds: 948, 236, 18, 12 -girl/bag-base - bounds: 418, 52, 62, 58 -girl/bag-strap-front - bounds: 141, 276, 12, 95 - offsets: 0, 1, 12, 96 -girl/bag-top - bounds: 841, 7, 49, 50 -girl/body - bounds: 476, 154, 97, 132 - rotate: 270 -girl/boot-ribbon-front - bounds: 968, 235, 13, 13 -girl/eye-iris-back - bounds: 929, 231, 17, 17 -girl/eye-iris-front - bounds: 270, 353, 18, 18 -girl/eye-white-back - bounds: 162, 324, 20, 16 -girl/front-eyebrow - bounds: 527, 359, 18, 12 -girl/hair-back - bounds: 739, 224, 147, 93 - rotate: 90 -girl/hair-bangs - bounds: 534, 57, 91, 40 -girl/hair-flap-down-front - bounds: 506, 31, 70, 65 - rotate: 180 -girl/hair-head-side-back - bounds: 155, 276, 30, 52 -girl/hair-head-side-front - bounds: 980, 17, 41, 42 - rotate: 90 -girl/hair-patch - bounds: 424, 186, 66, 41 - rotate: 90 -girl/hair-side - bounds: 265, 17, 36, 71 - rotate: 90 -girl/hair-strand-back-1 - bounds: 676, 24, 56, 74 - offsets: 2, 0, 58, 74 - rotate: 90 -girl/hair-strand-back-2 - bounds: 823, 54, 90, 53 - offsets: 1, 0, 91, 58 -girl/hair-strand-back-3 - bounds: 610, 138, 92, 79 -girl/hair-strand-front-1 - bounds: 157, 83, 38, 94 - rotate: 90 -girl/hair-strand-front-2 - bounds: 2, 27, 70, 50 -girl/hair-strand-front-3 - bounds: 74, 50, 44, 81 - rotate: 270 -girl/hand-front-fingers - bounds: 162, 124, 19, 21 -girl/hat - bounds: 282, 78, 93, 82 -girl/leg-front - bounds: 2, 213, 30, 158 -girl/pompom - bounds: 626, 40, 48, 43 -girl/scarf - bounds: 499, 98, 119, 51 -girl/scarf-back - bounds: 620, 85, 72, 51 -girl/zip - bounds: 455, 173, 19, 25 diff --git a/spine-cocos2dx/example/Resources/common/mix-and-match.png b/spine-cocos2dx/example/Resources/common/mix-and-match.png deleted file mode 100644 index 43cecffef..000000000 Binary files a/spine-cocos2dx/example/Resources/common/mix-and-match.png and /dev/null differ diff --git a/spine-cocos2dx/example/Resources/common/raptor-pro.json b/spine-cocos2dx/example/Resources/common/raptor-pro.json deleted file mode 100644 index e5eb2468a..000000000 --- a/spine-cocos2dx/example/Resources/common/raptor-pro.json +++ /dev/null @@ -1,9186 +0,0 @@ -{ -"skeleton": { - "hash": "FPvJD/mamWI", - "spine": "4.3.37-beta", - "x": -809.16, - "y": -73.54, - "width": 1287.65, - "height": 1039.44, - "images": "./images/", - "audio": "" -}, -"bones": [ - { "name": "root" }, - { "name": "hip", "parent": "root", "rotation": 8.96, "x": -122.52, "y": 392.65, "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.31, - "y": 70.65, - "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.76, - "y": -242.01, - "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.68, - "y": -83.24, - "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.78, - "x": -0.03, - "y": 0.05, - "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.19, - "rotation": 11.66, - "x": 25.68, - "y": -0.77, - "inherit": "noScale", - "color": "e7ff00ff" - }, - { - "name": "bone", - "parent": "head2", - "length": 39.92, - "rotation": -35.23, - "x": 166.09, - "y": -79.27, - "color": "e7ff00ff" - }, - { "name": "bone2", "parent": "bone", "length": 47.42, "rotation": 51.8, "x": 39.92, "color": "e7ff00ff" }, - { - "name": "bone3", - "parent": "head2", - "length": 45.41, - "rotation": -12.34, - "x": 179.8, - "y": -20.91, - "color": "e7ff00ff" - }, - { - "name": "bone4", - "parent": "bone3", - "length": 43.31, - "rotation": 42.01, - "x": 44.64, - "y": 0.3, - "color": "e7ff00ff" - }, - { "name": "bone5", "parent": "bone4", "length": 44.88, "rotation": 48.8, "x": 43.31, "color": "e7ff00ff" }, - { - "name": "horn-front", - "parent": "head", - "length": 87.48, - "rotation": 49.36, - "x": 87.97, - "y": -235.15, - "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, - "y": -72.46, - "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.96, - "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.31, - "x": 42.72, - "y": -2.77, - "scaleX": 1.0004, - "scaleY": 1.0004, - "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.6, - "x": 49.11, - "y": -68.46, - "color": "ffff00ff" - }, - { "name": "jaw-inside", "parent": "jaw", "x": 94.7, "y": 33.64, "color": "ffff00ff" }, - { - "name": "saddle-strap-back", - "parent": "saddle", - "length": 74.6, - "rotation": 151.14, - "x": -33.34, - "y": 87.33, - "color": "ff7300ff" - }, - { - "name": "saddle-strap-front", - "parent": "saddle", - "length": 154.29, - "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.26, - "rotation": 153.61, - "x": -20.87, - "y": 6.87, - "color": "eaff00ff" - }, - { "name": "tail2", "parent": "tail1", "length": 81.26, "rotation": 10.42, "x": 81.26, "color": "eaff00ff" }, - { "name": "tail3", "parent": "tail2", "length": 65.01, "rotation": 12.18, "x": 81.26, "color": "eaff00ff" }, - { "name": "tail4", "parent": "tail3", "length": 65.01, "x": 65.01, "color": "eaff00ff" }, - { "name": "tail5", "parent": "tail4", "length": 70.53, "rotation": 4.36, "x": 65.01, "color": "eaff00ff" }, - { "name": "tail6", "parent": "tail5", "length": 70.53, "x": 70.53, "color": "eaff00ff" }, - { "name": "tail7", "parent": "tail6", "length": 63.13, "rotation": 2.35, "x": 70.53, "color": "eaff00ff" }, - { "name": "tail8", "parent": "tail7", "length": 54.46, "rotation": 0.97, "x": 63.13, "color": "eaff00ff" }, - { "name": "tail9", "parent": "tail8", "length": 49.21, "rotation": -1.29, "x": 54.46, "color": "eaff00ff" }, - { "name": "tail10", "parent": "tail9", "length": 45.53, "rotation": 0.36, "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.04, - "x": 42.32, - "y": -220.33, - "color": "219517ff", - "icon": "arrows" - }, - { - "name": "leg-control", - "parent": "front-leg1", - "rotation": 53.14, - "x": 172.97, - "y": 4.16, - "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.57, "y": -12.03, "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.68, "y": -1.53, "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.65, "y": -24.93, "rotation": 55.2, "width": 210, "height": 203 } - }, - "head": { - "head": { - "type": "mesh", - "uvs": [ 0.73461, 0.04542, 0.88414, 0.17033, 0.88955, 0.31976, 0.91126, 0.27463, 0.9461, 0.20217, 1, 0.29892, 1, 0.34554, 1, 0.4508, 0.91249, 0.51206, 0.84514, 0.51207, 0.8209, 0.59663, 0.77915, 0.67257, 0.73605, 0.75464, 0.83571, 0.73994, 0.84784, 0.84528, 0.7549, 0.93101, 0.63773, 1, 0.39394, 1, 0.14747, 0.82935, 0, 0.59419, 0, 0.36645, 0.09623, 0.20353, 0.21474, 0.14594, 0.45179, 0.15693, 0.51509, 0.1263, 0.507, 0.07853, 0.42079, 0, 0.56221, 0, 0.19055, 0.39949, 0.27942, 0.31373, 0.79396, 0.479, 0.76029, 0.85997, 0.53421, 0.16964, 0.53207, 0.04286, 0.61949, 0.08784, 0.70424, 0.16685, 0.69053, 0.432, 0.85592, 0.37861, 0.45844, 0.34997, 0.48658, 0.30193, 0.66307, 0.35065, 0.58439, 0.39448, 0.70468, 0.26242, 0.51985, 0.21924 ], - "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.66, "y": -31.33, "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.88305, 0.02794, 0.91758, 0.05592, 0.9497, 0.09133, 0.97573, 0.13213, 0.99055, 0.17339, 0.99759, 0.22987, 0.99678, 0.27226, 0.99353, 0.31287, 0.9839, 0.38477, 0.97956, 0.35307, 0.96687, 0.38782, 0.96442, 0.34841, 0.94742, 0.38391, 0.94489, 0.33238, 0.9386, 0.34808, 0.93784, 0.32559, 0.92667, 0.34333, 0.92539, 0.31538, 0.91182, 0.34989, 0.90925, 0.28963, 0.89984, 0.27929, 0.87514, 0.33979, 0.86225, 0.40838, 0.87429, 0.45818, 0.84272, 0.50226, 0.81998, 0.59622, 0.81697, 0.68641, 0.81951, 0.7069, 0.78696, 0.82183, 0.74283, 0.91135, 0.68699, 0.97585, 0.6244, 1, 0.58849, 1, 0.51466, 1, 0.49121, 0.8368, 0.4727, 0.78488, 0.44707, 0.74644, 0.42472, 0.72176, 0.3966, 0.70938, 0.37043, 0.69548, 0.34684, 0.68416, 0.32377, 0.6759, 0.29877, 0.66711, 0.26827, 0.65566, 0.24021, 0.64447, 0.2154, 0.63308, 0.18745, 0.62026, 0.163, 0.61056, 0.13948, 0.60123, 0.11931, 0.59392, 0.09945, 0.58672, 0.08097, 0.5824, 0.06076, 0.58225, 0.04257, 0.58149, 0.02388, 0.58253, 0, 0.58455, 0, 0.56298, 0.0209, 0.55046, 0.03794, 0.53974, 0.05634, 0.52692, 0.0746, 0.51306, 0.09507, 0.49881, 0.11728, 0.48334, 0.1375, 0.46924, 0.16277, 0.45174, 0.18782, 0.43439, 0.21308, 0.4189, 0.23873, 0.40318, 0.26735, 0.38578, 0.2969, 0.36723, 0.32579, 0.35014, 0.35725, 0.33294, 0.37992, 0.3207, 0.41103, 0.31696, 0.44145, 0.29137, 0.47584, 0.28483, 0.49453, 0.31832, 0.5288, 0.35569, 0.60144, 0.41756, 0.65116, 0.41078, 0.70843, 0.42446, 0.7118, 0.2925, 0.70946, 0.19468, 0.70683, 0.08348, 0.76023, 0.01941, 0.79301, 0, 0.83875, 0, 0.02258, 0.5679, 0.04005, 0.56141, 0.05877, 0.55312, 0.07877, 0.54786, 0.09747, 0.5401, 0.12059, 0.53086, 0.14233, 0.52663, 0.16642, 0.52304, 0.19163, 0.52137, 0.2177, 0.51241, 0.24501, 0.50218, 0.27577, 0.49505, 0.30141, 0.49242, 0.3286, 0.49077, 0.3541, 0.49188, 0.38137, 0.49347, 0.40824, 0.49495, 0.44136, 0.50946, 0.47122, 0.53169, 0.49886, 0.56568, 0.53162, 0.60054, 0.60671, 0.67484, 0.6857, 0.67243, 0.7506, 0.59437, 0.76886, 0.46557, 0.7773, 0.34161, 0.77355, 0.22842, 0.8056, 0.09401, 0.86736, 0.07427, 0.90484, 0.17059, 0.9096, 0.19933, 0.91959, 0.21397, 0.93193, 0.20183, 0.93608, 0.17463, 0.92873, 0.1403, 0.91672, 0.13455, 0.90667, 0.14854, 0.91663, 0.09795, 0.89868, 0.09514, 0.88034, 0.09404, 0.9309, 0.11529, 0.93998, 0.15741, 0.94213, 0.17477, 0.94345, 0.19647, 0.94192, 0.20763, 0.92187, 0.22801, 0.9048, 0.23489, 0.8899, 0.19847, 0.8874, 0.16914, 0.87831, 0.12122, 0.585, 0.84243, 0.63024, 0.8646, 0.68284, 0.85192, 0.72923, 0.80453, 0.75898, 0.76323, 0.78513, 0.70347, 0.78536, 0.6783, 0.78141, 0.59277, 0.94721, 0.11131, 0.96236, 0.1618, 0.96367, 0.19318, 0.95806, 0.21052, 0.976, 0.16763, 0.98026, 0.22172, 0.98039, 0.26467, 0.97933, 0.31612, 0.96394, 0.25896, 0.95648, 0.31982, 0.9432, 0.24678, 0.93886, 0.28792 ], - "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, 8.7E-4, 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.73352, 0.81335, 0.84813, 0.84029, 1, 0.93855, 0.732, 0.92345, 0.62439, 0.91738, 0.72813, 1, 0.58574, 1, 0.47086, 0.98249, 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.51677, 0.90503, 0.07821, 0.26333, 0.05796, 0.13086, 0.09601, 0.05963, 0.29303, 0.03825 ], - "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.23202, 0, 0.36456, 0.3051, 0.37967, 0.28578, 0.42983, 0.41504, 0.48255, 0.4592, 0.49181, 0.37558, 0.54262, 0.43364, 0.62744, 0.22373, 0.72685, 0.20157, 0.71155, 0.10296, 0.7437, 0.12629, 0.87154, 0.32694, 0.92655, 0.58847, 0.95146, 0.58291, 1, 0.79797, 0.99855, 0.91608, 0.95668, 0.9066, 0.89548, 0.84052, 0.85745, 0.71568, 0.81176, 0.71081, 0.79146, 0.64162, 0.7146, 0.66948, 0.70308, 0.72109, 0.66405, 0.91955, 0.57139, 1, 0.51265, 1, 0.40749, 0.94178, 0.34499, 0.80186, 0.24959, 0.49467, 0.23945, 0.4213, 0.15768, 0.37748, 0.10301, 0.43856, 0.0716, 0.54182, 0.0635, 0.72333, 0.0968, 0.78581, 0.19705, 0.70312, 0.20849, 0.70702, 0.13611, 0.87184, 0.0794, 0.95675, 0.03745, 0.92784, 0, 0.72707, 0, 0.49239, 0.01821, 0.37577, 0.08924, 0.16005, 0.2217, 0.08591, 0.21231, 0.02037, 0.21551, 0, 0.93395, 0.7495, 0.84078, 0.47214, 0.76078, 0.46484, 0.71616, 0.58482, 0.55373, 0.75879, 0.45392, 0.65487, 0.35185, 0.54621 ], - "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, 2.2E-4, 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.43611, 0.10281, 0.50457, 0.26446, 0.59673, 0.37777, 0.69416, 0.49754, 0.79771, 0.54917, 0.91149, 0.59812, 1, 0.63619, 0.99305, 0.85625, 0.67606, 1, 0.39521, 1, 0.19457, 0.89404, 0.2161, 0.6497, 0, 0.46112, 0, 0, 0.26125, 1.0E-5, 0.19457, 0.29385, 0.60678, 0.81243, 0.42896, 0.88938, 0.86006, 0.80271, 0.64788, 0.93008, 0.58349, 0.62419, 0.41196, 0.69752, 0.46153, 0.51921, 0.35989, 0.3664, 0.32564, 0.54238 ], - "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.43611, 0.10281, 0.50457, 0.26446, 0.69416, 0.49754, 0.79771, 0.54917, 1, 0.63619, 0.99305, 0.85625, 0.67606, 1, 0.39521, 1, 0.19457, 0.89404, 0.2161, 0.6497, 0, 0.46112, 0, 0, 0.26125, 1.0E-5, 0.19457, 0.29385, 0.60678, 0.81243, 0.42896, 0.88938 ], - "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.29017, 0.37217, 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.28517, 0.09749, 0.26891, 0.14719, 0.32431, 0.28893, 0.45069, 0.52793, 0.56076, 0.56219, 0.69936, 0.53502, 0.71567, 0.44878, 0.83797, 0.36373, 0.91271, 0.34719, 1, 0.53622, 1, 0.61771, 0.93479, 0.82943, 0.87524, 0.96013, 0.74099, 1, 0.28984, 0.9496, 0.12982, 0.85304, 0.10295, 0.69443, 0.10449, 0.63657, 0.20499, 0.6452, 0.0954, 0.41741, 0.00133, 0.37841, 0, 0.27026, 0.11186, 0, 0.17021, 0, 0.24413, 0, 0.46313, 0.92332, 0.56755, 0.84415, 0.94056, 0.67906, 0.9263, 0.43106, 0.2137, 0.18682, 0.18239, 0.28963, 0.21653, 0.33824, 0.32307, 0.44535, 0.38606, 0.52911, 0.39069, 0.55971, 0.36568, 0.6032, 0.38235, 0.62414, 0.43979, 0.69174, 0.53891, 0.71429, 0.62321, 0.7159, 0.70381, 0.69254, 0.74827, 0.66355, 0.78996, 0.62087, 0.80571, 0.56933, 0.79737, 0.54033, 0.75661, 0.51215, 0.72789, 0.51537, 0.20634, 0.08376, 0.17577, 0.12886, 0.13686, 0.18765, 0.11185, 0.28751, 0.17762, 0.36321, 0.26192, 0.46066, 0.30546, 0.50012, 0.31565, 0.55488, 0.81026, 0.7038, 0.86992, 0.65976, 0.89927, 0.54517, 0.84925, 0.47993, 0.81868, 0.43161 ], - "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.45, "y": -4.2, "rotation": 120.24, "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.50387, 0.89276, 1, 0.82069, 0.96993, 0.72927, 0.92231, 0.64083, 0.87624, 0.54988, 0.83667, 0.47106, 0.80022, 0.40123, 0.7783, 0.32238, 0.75321, 0.25301, 0.73107, 0.20375, 0.71883, 0.11753, 0.71414, 0, 0.72519, 0, 0.66338, 0.10358, 0.57282, 0.18201, 0.5128, 0.23534, 0.47512, 0.30555, 0.4281, 0.37968, 0.37769, 0.44858, 0.3281, 0.51987, 0.2798, 0.61007, 0.21367, 0.70725, 0.14608, 0.80109, 0.08082, 0.90134, 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, 4.6E-4, 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.2333, "name": "gun" } - ] - }, - "gun": { - "attachment": [ - { "time": 0.2333 } - ] - } - }, - "bones": { - "front-hand2": { - "rotate": [ - { - "curve": [ 0.033, 0, 0.1, 12.34 ] - }, - { - "time": 0.1333, - "value": 12.34, - "curve": [ 0.158, 12.34, 0.208, -89.55 ] - }, - { - "time": 0.2333, - "value": -89.55, - "curve": [ 0.269, -89.03, 0.299, -89.03 ] - }, - { - "time": 0.3333, - "value": -79.79, - "curve": [ 0.397, -62.87, 0.583, -10.18 ] - }, - { "time": 0.6667, "value": -10.18 } - ], - "scale": [ - { - "curve": [ 0.058, 1, 0.175, 0.938, 0.058, 1, 0.175, 0.938 ] - }, - { - "time": 0.2333, - "x": 0.938, - "y": 0.938, - "curve": [ 0.342, 0.938, 0.558, 1, 0.342, 0.938, 0.558, 1 ] - }, - { "time": 0.6667 } - ] - }, - "front-arm": { - "rotate": [ - { - "curve": [ 0.025, 0, 0.082, -21.08 ] - }, - { - "time": 0.1, - "value": -32, - "curve": [ 0.15, -62.93, 0.213, -120.29 ] - }, - { - "time": 0.2333, - "value": -136.89, - "curve": [ 0.29, -183.72, 0.308, -204.81 ] - }, - { - "time": 0.3333, - "value": -204.81, - "curve": [ 0.383, -204.81, 0.479, -143.9 ] - }, - { - "time": 0.5333, - "value": -113.86, - "curve": [ 0.563, -97.44, 0.633, -56.75 ] - }, - { "time": 0.6667, "value": -56.75 } - ], - "translate": [ - { - "curve": [ 0.058, 0, 0.173, 4.7, 0.058, 0, 0.175, -2.66 ] - }, - { - "time": 0.2333, - "x": 5.85, - "y": -2.66, - "curve": [ 0.258, 6.3, 0.308, 6.84, 0.258, -2.66, 0.308, 4.8 ] - }, - { - "time": 0.3333, - "x": 6.84, - "y": 4.8, - "curve": [ 0.417, 6.84, 0.583, 0, 0.417, 4.8, 0.583, 0 ] - }, - { "time": 0.6667 } - ] - }, - "front-bracer": { - "rotate": [ - { - "curve": [ 0.058, 0, 0.218, 76.7 ] - }, - { - "time": 0.2333, - "value": 86.02, - "curve": [ 0.267, 106.51, 0.317, 114.95 ] - }, - { - "time": 0.3333, - "value": 114.95, - "curve": [ 0.383, 114.95, 0.515, 89.58 ] - }, - { - "time": 0.5333, - "value": 81.86, - "curve": [ 0.574, 64.66, 0.633, 34.74 ] - }, - { "time": 0.6667, "value": 34.74 } - ] - } - }, - "ik": { - "spineboy-front-arm-ik": [ - { "mix": 0 } - ] - } - }, - "gun-holster": { - "slots": { - "front-hand": { - "attachment": [ - { "name": "gun" }, - { "time": 0.3, "name": "front-open-hand" }, - { "time": 0.6667, "name": "front-hand" } - ] - }, - "gun": { - "attachment": [ - {}, - { "time": 0.3, "name": "gun-nohand" } - ] - } - }, - "bones": { - "front-hand2": { - "rotate": [ - { - "value": -10.18, - "curve": [ 0.042, -10.18, 0.132, -79.17 ] - }, - { - "time": 0.1667, - "value": -84.76, - "curve": [ 0.204, -90.76, 0.267, -89.52 ] - }, - { - "time": 0.3, - "value": -89.52, - "curve": [ 0.342, -89.52, 0.411, -56.54 ] - }, - { - "time": 0.4667, - "value": -35.36, - "curve": [ 0.507, -19.8, 0.617, 0.18 ] - }, - { "time": 0.6667, "value": 0.18 } - ], - "translate": [ - { - "curve": [ 0.017, 0, 0.05, -1.82, 0.017, 0, 0.05, 0.11 ] - }, - { "time": 0.0667, "x": -1.82, "y": 0.11 } - ], - "scale": [ - { - "curve": [ 0.075, 1, 0.225, 0.888, 0.075, 1, 0.225, 0.888 ] - }, - { "time": 0.3, "x": 0.888, "y": 0.888 } - ] - }, - "front-arm": { - "rotate": [ - { - "value": -56.75, - "curve": [ 0.042, -56.75, 0.104, -197.53 ] - }, - { - "time": 0.1667, - "value": -197.88, - "curve": [ 0.23, -198.59, 0.267, -143.09 ] - }, - { - "time": 0.3, - "value": -143.09, - "curve": [ 0.342, -143.09, 0.425, -159.79 ] - }, - { - "time": 0.4667, - "value": -159.79, - "curve": [ 0.517, -159.79, 0.617, -25.24 ] - }, - { "time": 0.6667, "value": -25.24 } - ] - }, - "front-bracer": { - "rotate": [ - { - "value": 34.74, - "curve": [ 0.042, 34.74, 0.138, 83.37 ] - }, - { - "time": 0.1667, - "value": 90.01, - "curve": [ 0.195, 96.76, 0.369, 112.84 ] - }, - { - "time": 0.4, - "value": 114.44, - "curve": [ 0.422, 115.57, 0.45, 116.1 ] - }, - { "time": 0.4667, "value": 116.1 } - ] - } - }, - "ik": { - "spineboy-front-arm-ik": [ - { "mix": 0, "curve": "stepped" }, - { "time": 0.4667, "mix": 0 }, - { "time": 0.6667, "mix": 0.996 } - ] - } - }, - "jump": { - "slots": { - "mouth-smile": { - "attachment": [ - { "time": 0.1333, "name": "mouth-grind" }, - { "time": 0.9, "name": "mouth-smile" } - ] - } - }, - "bones": { - "front-foot-target": { - "rotate": [ - { - "time": 0.3, - "curve": [ 0.325, 0, 0.393, -4.59 ] - }, - { - "time": 0.4, - "value": -6.98, - "curve": [ 0.421, -14.42, 0.45, -69.67 ] - }, - { - "time": 0.4667, - "value": -69.67, - "curve": [ 0.483, -69.67, 0.509, -21.2 ] - }, - { - "time": 0.5333, - "value": -12.81, - "curve": [ 0.562, -2.84, 0.633, 5.74 ] - }, - { - "time": 0.6667, - "value": 5.74, - "curve": [ 0.742, 5.74, 0.892, 0 ] - }, - { "time": 0.9667 } - ], - "translate": [ - { - "x": -90.53, - "y": 47.55, - "curve": [ 0.015, -146.88, 0.075, -246.15, 0.036, 37.03, 0.075, 33.45 ] - }, - { - "time": 0.1, - "x": -246.15, - "y": 33.45, - "curve": [ 0.15, -246.15, 0.375, -246.15, 0.15, 33.45, 0.349, 33.63 ] - }, - { - "time": 0.4, - "x": -246.15, - "y": 33.45, - "curve": [ 0.413, -243.99, 0.447, -223.12, 0.413, 35.27, 0.46, 361.9 ] - }, - { - "time": 0.4667, - "x": -179.6, - "y": 397.56, - "curve": [ 0.484, -140.35, 0.517, 16.95, 0.477, 456.62, 0.496, 549.31 ] - }, - { - "time": 0.5333, - "x": 73.03, - "y": 636.97, - "curve": [ 0.557, 157.46, 0.606, 251.39, 0.56, 699.46, 0.633, 735.98 ] - }, - { - "time": 0.6667, - "x": 251.39, - "y": 737.16, - "curve": [ 0.796, 249.04, 0.947, 141, 0.81, 742.2, 0.947, 234.23 ] - }, - { "time": 0.9667, "x": 95.94, "y": 36.5 } - ] - }, - "hip": { - "rotate": [ - { - "value": -4.48, - "curve": [ 0.049, -9.72, 0.1, -13.95 ] - }, - { - "time": 0.1333, - "value": -13.95, - "curve": [ 0.2, -13.95, 0.361, 5.8 ] - }, - { - "time": 0.4, - "value": 12.46, - "curve": [ 0.438, 19.02, 0.513, 31.53 ] - }, - { - "time": 0.6667, - "value": 31.43, - "curve": [ 0.821, 31.91, 0.951, 2.18 ] - }, - { - "time": 0.9667, - "value": -4.26, - "curve": [ 0.982, -10.63, 1.013, -18.69 ] - }, - { - "time": 1.0667, - "value": -18.59, - "curve": [ 1.108, -18.52, 1.292, 3.45 ] - }, - { - "time": 1.3333, - "value": 3.45, - "curve": [ 1.367, 3.45, 1.445, 2.35 ] - }, - { "time": 1.5333, "value": -4.48 } - ], - "translate": [ - { - "x": -47.56, - "y": 48.49, - "curve": [ 0.043, -69.43, 0.1, -79.91, 0.033, 48.49, 0.111, -39.5 ] - }, - { - "time": 0.1333, - "x": -79.91, - "y": -55.85, - "curve": [ 0.166, -79.91, 0.225, -76.38, 0.162, -76.85, 0.217, -91.17 ] - }, - { - "time": 0.2667, - "x": -52.47, - "y": -92.76, - "curve": [ 0.312, -26.39, 0.38, 56.36, 0.317, -94.39, 0.359, -58.96 ] - }, - { - "time": 0.4, - "x": 82.2, - "y": 39.51, - "curve": [ 0.426, 116.54, 0.532, 203.27, 0.43, 112.89, 0.475, 649.69 ] - }, - { - "time": 0.6667, - "x": 205.52, - "y": 649.79, - "curve": [ 0.775, 207.34, 0.857, 58.95, 0.879, 646.83, 0.926, 440.06 ] - }, - { - "time": 0.9667, - "x": 59.67, - "y": 161.1, - "curve": [ 1.026, 60.06, 1.041, 72.9, 0.982, 53.87, 1.004, -91.4 ] - }, - { - "time": 1.0667, - "x": 91.3, - "y": -91.6, - "curve": [ 1.083, 103.05, 1.246, 238.62, 1.207, -92.04, 1.234, 76.13 ] - }, - { - "time": 1.3333, - "x": 238.12, - "y": 75.68, - "curve": [ 1.408, 237.69, 1.5, 213.2, 1.41, 75.33, 1.497, 49.77 ] - }, - { "time": 1.5333, "x": 213.2, "y": 49.77 } - ] - }, - "back-foot-target": { - "rotate": [ - { - "time": 0.3, - "curve": [ 0.325, 0, 0.386, -31.84 ] - }, - { - "time": 0.4, - "value": -41.64, - "curve": [ 0.42, -55.3, 0.458, -86.03 ] - }, - { - "time": 0.4667, - "value": -86.03, - "curve": [ 0.475, -86.03, 0.515, -62.63 ] - }, - { - "time": 0.5333, - "value": -57.97, - "curve": [ 0.645, -29.13, 1.025, -7.79 ] - }, - { "time": 1.0333, "value": -7.79 } - ], - "translate": [ - { "x": 99.37, "curve": "stepped" }, - { - "time": 0.3, - "x": 99.37, - "curve": [ 0.352, 97.71, 0.349, 85.15, 0.4, 0, 0.3, 0 ] - }, - { - "time": 0.4, - "x": 83.35, - "curve": [ 0.412, 83.24, 0.424, 87.02, 0.411, 0.2, 0.415, -7.91 ] - }, - { - "time": 0.4333, - "x": 92.07, - "y": -9.73, - "curve": [ 0.451, 100.78, 0.463, 124.21, 0.449, 27.5, 0.462, 103.35 ] - }, - { - "time": 0.4667, - "x": 132.33, - "y": 119.67, - "curve": [ 0.476, 153.34, 0.517, 239.65, 0.476, 151.52, 0.518, 382.69 ] - }, - { - "time": 0.5333, - "x": 267.51, - "y": 435.87, - "curve": [ 0.553, 302.61, 0.632, 352.21, 0.557, 517.14, 0.645, 683.92 ] - }, - { - "time": 0.6667, - "x": 352.52, - "y": 702.46, - "curve": [ 0.747, 353.24, 0.797, 342.85, 0.745, 768.64, 0.789, 768.68 ] - }, - { - "time": 0.8333, - "x": 322.4, - "y": 717.67, - "curve": [ 0.866, 303.67, 0.932, 224.25, 0.865, 681.89, 0.936, 422.05 ] - }, - { - "time": 0.9667, - "x": 220.5, - "y": 293.73, - "curve": [ 0.989, 218.13, 1.009, 314.6, 0.987, 209.37, 1.024, 79.62 ] - }, - { "time": 1.0333, "x": 318.98 } - ] - }, - "front-leg-target": { - "translate": [ - { - "curve": [ 0.025, 0, 0.075, -33.09, 0.025, 0, 0.075, -31.34 ] - }, - { - "time": 0.1, - "x": -33.09, - "y": -31.34, - "curve": [ 0.175, -33.09, 0.325, 140.91, 0.175, -31.34, 0.325, 51.55 ] - }, - { - "time": 0.4, - "x": 140.91, - "y": 51.55, - "curve": [ 0.434, 140.58, 0.421, 10.15, 0.435, 50.46, 0.45, 16 ] - }, - { - "time": 0.4667, - "x": -11.12, - "y": 4.78, - "curve": [ 0.501, -25.03, 0.586, -45.12, 0.511, -24.72, 0.56, -38.69 ] - }, - { - "time": 0.6667, - "x": -46.38, - "y": -40.57, - "curve": [ 0.74, -46.38, 0.923, -1.75, 0.74, -40.57, 0.896, 22.3 ] - }, - { - "time": 0.9667, - "x": -1.72, - "y": 20.96, - "curve": [ 0.993, -1.71, 0.993, -37.51, 0.995, 20.41, 0.954, -37.81 ] - }, - { - "time": 1.1, - "x": -38.27, - "y": -35.93, - "curve": [ 1.181, -38.85, 1.252, 44.94, 1.184, -34.84, 1.252, 5.48 ] - }, - { - "time": 1.3333, - "x": 44.94, - "y": 5.48, - "curve": [ 1.383, 44.94, 1.452, 0, 1.383, 5.48, 1.452, 0 ] - }, - { "time": 1.5333 } - ] - }, - "back-leg-target": { - "translate": [ - { - "curve": [ 0.025, 0, 0.075, -35.37, 0.025, 0, 0.075, -16.42 ] - }, - { - "time": 0.1, - "x": -35.37, - "y": -16.42, - "curve": [ 0.141, -35.37, 0.205, -14.12, 0.141, -16.42, 0.214, 4.84 ] - }, - { - "time": 0.2667, - "x": -4.49, - "y": 4.24, - "curve": [ 0.317, 3.38, 0.366, 12.04, 0.319, 3.65, 0.375, -33.42 ] - }, - { - "time": 0.4, - "x": 12.04, - "y": -42.73, - "curve": [ 0.417, 12.04, 0.45, -46.17, 0.413, -47.43, 0.454, -76.29 ] - }, - { - "time": 0.4667, - "x": -46.17, - "y": -81.12, - "curve": [ 0.475, -46.17, 0.525, -38.36, 0.499, -93.24, 0.525, -96.11 ] - }, - { - "time": 0.5333, - "x": -38.36, - "y": -96.11, - "curve": [ 0.567, -38.36, 0.633, -55.58, 0.567, -96.11, 0.643, -67.83 ] - }, - { - "time": 0.6667, - "x": -55.58, - "y": -63.06, - "curve": [ 0.75, -55.58, 0.907, -56.88, 0.736, -49.33, 0.921, -52.06 ] - }, - { - "time": 1, - "x": -43, - "y": -42.05, - "curve": [ 1.076, -31.56, 1.101, -19.95, 1.084, -31.37, 1.125, -4.64 ] - }, - { - "time": 1.1333, - "x": -12.99, - "y": -3.97, - "curve": [ 1.198, 0.98, 1.233, 0, 1.173, -0.72, 1.233, 0 ] - }, - { "time": 1.2667 } - ] - }, - "tail1": { - "rotate": [ - { - "curve": [ 0.033, -0.73, 0.182, -1.37 ] - }, - { - "time": 0.2333, - "value": -0.68, - "curve": [ 0.324, 0.55, 0.378, 4.7 ] - }, - { - "time": 0.4, - "value": 6.15, - "curve": [ 0.449, 9.36, 0.523, 12.03 ] - }, - { - "time": 0.5667, - "value": 12.05, - "curve": [ 0.704, 12.09, 0.764, -9.79 ] - }, - { - "time": 0.9333, - "value": -9.74, - "curve": [ 0.984, -9.73, 1.054, -9.25 ] - }, - { - "time": 1.1, - "value": -7.09, - "curve": [ 1.173, -3.67, 1.279, 7.71 ] - }, - { - "time": 1.3333, - "value": 7.67, - "curve": [ 1.407, 7.63, 1.491, 0 ] - }, - { "time": 1.5333 } - ] - }, - "tail3": { - "rotate": [ - { - "curve": [ 0.143, -0.06, 0.212, -21.95 ] - }, - { - "time": 0.2333, - "value": -24.08, - "curve": [ 0.258, -26.54, 0.283, -26.63 ] - }, - { - "time": 0.3, - "value": -26.63, - "curve": [ 0.325, -26.63, 0.365, -22.41 ] - }, - { - "time": 0.4, - "value": -17.42, - "curve": [ 0.463, -8.36, 0.658, 0.68 ] - }, - { - "time": 0.7667, - "value": 0.99, - "curve": [ 0.839, 1.2, 0.911, -6.88 ] - }, - { - "time": 0.9333, - "value": -7.95, - "curve": [ 0.999, -11.08, 1.101, -12.03 ] - }, - { - "time": 1.1667, - "value": -11.94, - "curve": [ 1.233, -11.85, 1.317, -8.44 ] - }, - { - "time": 1.3333, - "value": -7.62, - "curve": [ 1.4, -4.31, 1.483, 0 ] - }, - { "time": 1.5333 } - ] - }, - "torso2": { - "rotate": [ - { - "curve": [ 0.076, 2.18, 0.15, 3.87 ] - }, - { - "time": 0.2, - "value": 3.87, - "curve": [ 0.25, 3.87, 0.317, -14.55 ] - }, - { - "time": 0.3667, - "value": -14.55, - "curve": [ 0.433, -14.55, 0.549, -7.29 ] - }, - { - "time": 0.6667, - "value": -0.64, - "curve": [ 0.725, 2.66, 0.883, 10.9 ] - }, - { - "time": 0.9667, - "value": 10.9, - "curve": [ 1.095, 10.9, 1.185, -6.18 ] - }, - { - "time": 1.2667, - "value": -6.04, - "curve": [ 1.38, -5.86, 1.471, -2.78 ] - }, - { "time": 1.5333 } - ], - "translate": [ - { - "curve": [ 0.05, 0, 0.105, 6.29, 0.05, 0, 0.15, -22.92 ] - }, - { - "time": 0.2, - "x": 9.67, - "y": -22.92, - "curve": [ 0.417, 17.38, 0.775, 24.08, 0.392, -22.92, 0.806, 3.87 ] - }, - { - "time": 0.9667, - "x": 24.08, - "y": 4.46, - "curve": [ 1.012, 24.08, 1.071, 23.76, 1.022, 4.66, 1.077, -8.33 ] - }, - { - "time": 1.1333, - "x": 20.46, - "y": -8.46, - "curve": [ 1.221, 16.02, 1.317, 10.46, 1.21, -8.64, 1.352, 2.35 ] - }, - { - "time": 1.4, - "x": 5.93, - "y": 2.27, - "curve": [ 1.451, 3.19, 1.497, 0, 1.468, 2.16, 1.494, 0 ] - }, - { "time": 1.5333 } - ] - }, - "front-arm1": { - "rotate": [ - { - "curve": [ 0.067, 0, 0.2, 51.21 ] - }, - { - "time": 0.2667, - "value": 51.21, - "curve": [ 0.325, 51.21, 0.442, -38.7 ] - }, - { - "time": 0.5, - "value": -38.7, - "curve": [ 0.567, -38.7, 0.706, 24.96 ] - }, - { - "time": 0.7667, - "value": 38.01, - "curve": [ 0.854, 56.01, 0.911, 62.19 ] - }, - { - "time": 1, - "value": 62.19, - "curve": [ 1.084, 62.19, 1.192, -14.43 ] - }, - { - "time": 1.2333, - "value": -14.43, - "curve": [ 1.292, -14.43, 1.408, 0 ] - }, - { "time": 1.4667 } - ] - }, - "neck": { - "rotate": [ - { - "curve": [ 0.053, 0, 0.169, -1.43 ] - }, - { - "time": 0.2, - "value": -2.08, - "curve": [ 0.272, -3.58, 0.329, -4.44 ] - }, - { - "time": 0.4, - "value": -4.48, - "curve": [ 0.473, -4.51, 0.616, -2.46 ] - }, - { - "time": 0.6667, - "value": -1.01, - "curve": [ 0.728, 0.75, 0.881, 5.85 ] - }, - { - "time": 0.9667, - "value": 5.85, - "curve": [ 1.04, 5.86, 1.17, -1.69 ] - }, - { - "time": 1.2667, - "value": -1.79, - "curve": [ 1.317, -1.84, 1.483, 0 ] - }, - { "time": 1.5333 } - ], - "translate": [ - { - "curve": [ 0.042, -1.88, 0.137, -2.9, 0.058, 3.23, 0.133, 7.83 ] - }, - { - "time": 0.2, - "x": -2.93, - "y": 7.91, - "curve": [ 0.262, -2.97, 0.337, 1.35, 0.262, 7.98, 0.333, -17.63 ] - }, - { - "time": 0.4, - "x": 5.6, - "y": -17.63, - "curve": [ 0.501, 12.45, 0.612, 22.88, 0.467, -17.63, 0.619, -5.42 ] - }, - { - "time": 0.6667, - "x": 25.24, - "y": -2.9, - "curve": [ 0.752, 28.94, 0.851, 31.66, 0.775, 2.84, 0.883, 5.36 ] - }, - { - "time": 0.9667, - "x": 31.78, - "y": 5.36, - "curve": [ 1.083, 31.89, 1.209, 25.93, 1.068, 5.52, 1.169, -13.52 ] - }, - { - "time": 1.2667, - "x": 22.31, - "y": -13.24, - "curve": [ 1.338, 17.8, 1.432, 11.29, 1.345, -13.01, 1.467, 0 ] - }, - { "time": 1.5333 } - ] - }, - "back-arm1": { - "rotate": [ - { - "curve": [ 0.033, 0, 0.1, 41.83 ] - }, - { - "time": 0.1333, - "value": 41.83, - "curve": [ 0.233, 41.83, 0.433, -19.76 ] - }, - { - "time": 0.5333, - "value": -19.76, - "curve": [ 0.617, -19.76, 0.813, 7.86 ] - }, - { - "time": 0.8667, - "value": 16.31, - "curve": [ 0.922, 25.06, 0.992, 39.62 ] - }, - { - "time": 1.0333, - "value": 39.62, - "curve": [ 1.067, 39.62, 1.134, 36.98 ] - }, - { - "time": 1.1667, - "value": 21.98, - "curve": [ 1.184, 13.73, 1.242, -14.43 ] - }, - { - "time": 1.2667, - "value": -14.43, - "curve": [ 1.317, -14.43, 1.417, 0 ] - }, - { "time": 1.4667 } - ] - }, - "spineboy-hip": { - "translate": [ - { - "curve": [ 0.033, 0, 0.071, 12.38, 0.033, 0, 0.099, 6.02 ] - }, - { - "time": 0.1333, - "x": 18.47, - "y": 5.61, - "curve": [ 0.183, 23.25, 0.285, 23.09, 0.199, 4.82, 0.308, -11.17 ] - }, - { - "time": 0.3333, - "x": 24.3, - "y": -23.55, - "curve": [ 0.439, 26.95, 0.553, 40.03, 0.394, -53.54, 0.573, -55.54 ] - }, - { - "time": 0.6667, - "x": 51.3, - "y": -55.2, - "curve": [ 0.741, 58.64, 0.905, 68.29, 0.853, -54.53, 0.939, -42.26 ] - }, - { - "time": 1, - "x": 67.68, - "y": -37.87, - "curve": [ 1.071, 67.22, 1.216, 14.12, 1.055, -33.92, 1.171, -3.34 ] - }, - { - "time": 1.2667, - "x": 10.39, - "y": -1.83, - "curve": [ 1.376, 2.35, 1.467, 0, 1.338, -0.69, 1.467, 0 ] - }, - { "time": 1.5333 } - ] - }, - "tail5": { - "rotate": [ - { - "value": 6.72, - "curve": [ 0.018, 6.72, 0.077, 8.48 ] - }, - { - "time": 0.1333, - "value": 5.57, - "curve": [ 0.214, 1.41, 0.249, -14.58 ] - }, - { - "time": 0.3, - "value": -14.58, - "curve": [ 0.341, -14.52, 0.36, -12.87 ] - }, - { - "time": 0.4, - "value": -10.37, - "curve": [ 0.466, -6.22, 0.481, 6.11 ] - }, - { - "time": 0.7667, - "value": 11.47, - "curve": [ 0.831, 12.69, 0.857, 12.88 ] - }, - { - "time": 0.9333, - "value": 12.89, - "curve": [ 1.073, 12.92, 1.137, -5.02 ] - }, - { - "time": 1.1667, - "value": -10.52, - "curve": [ 1.189, -14.81, 1.242, -16.26 ] - }, - { - "time": 1.2667, - "value": -16.26, - "curve": [ 1.292, -16.26, 1.344, -10.57 ] - }, - { - "time": 1.3667, - "value": -7.39, - "curve": [ 1.387, -4.51, 1.468, -0.3 ] - }, - { "time": 1.5333 } - ] - }, - "front-arm2": { - "rotate": [ - { - "curve": [ 0.033, 0, 0.1, 18.42 ] - }, - { - "time": 0.1333, - "value": 18.42, - "curve": [ 0.225, 18.42, 0.408, -58.26 ] - }, - { - "time": 0.5, - "value": -58.26, - "curve": [ 0.567, -58.26, 0.702, -38.97 ] - }, - { - "time": 0.7667, - "value": -16.61, - "curve": [ 0.821, 2.07, 0.967, 12.73 ] - }, - { - "time": 1.0667, - "value": 13.08, - "curve": [ 1.108, 13.23, 1.192, -56.15 ] - }, - { - "time": 1.2333, - "value": -56.15, - "curve": [ 1.292, -56.15, 1.356, -0.71 ] - }, - { "time": 1.4667 } - ] - }, - "gun": { - "rotate": [ - {}, - { "time": 0.1333, "value": 15.28 }, - { "time": 0.4, "value": -53.41 }, - { "time": 0.7667, "value": -63.35 }, - { "time": 1.0667, "value": -29.92 }, - { "time": 1.3, "value": 7.24 }, - { "time": 1.4, "value": -3.7 }, - { "time": 1.4667 } - ] - }, - "head": { - "rotate": [ - { - "curve": [ 0.035, -0.03, 0.069, 8.8 ] - }, - { - "time": 0.1, - "value": 9.41, - "curve": [ 0.141, 10.24, 0.189, 4.37 ] - }, - { - "time": 0.2, - "value": 3.23, - "curve": [ 0.224, 0.67, 0.369, -14.75 ] - }, - { - "time": 0.4, - "value": -19.24, - "curve": [ 0.441, -25.21, 0.498, -33.84 ] - }, - { - "time": 0.5333, - "value": -33.74, - "curve": [ 0.581, -33.61, 0.614, -28.7 ] - }, - { - "time": 0.6667, - "value": -28.63, - "curve": [ 0.73, -28.55, 0.809, -29.54 ] - }, - { - "time": 0.9, - "value": -29.94, - "curve": [ 0.948, -30.15, 0.967, -4.31 ] - }, - { - "time": 1, - "value": -3.74, - "curve": [ 1.032, -3.18, 1.04, -9.87 ] - }, - { - "time": 1.0667, - "value": -9.83, - "curve": [ 1.094, -9.79, 1.157, 0.42 ] - }, - { - "time": 1.2, - "value": 0.36, - "curve": [ 1.237, 0.31, 1.249, -5.16 ] - }, - { - "time": 1.2667, - "value": -5.16, - "curve": [ 1.292, -5.16, 1.351, 3.76 ] - }, - { - "time": 1.4, - "value": 3.9, - "curve": [ 1.44, 4.01, 1.509, 0 ] - }, - { "time": 1.5333 } - ], - "translate": [ - { - "curve": [ 0.05, 0, 0.15, 1.7, 0.05, 0, 0.15, -35.74 ] - }, - { - "time": 0.2, - "x": 2.52, - "y": -35.74, - "curve": [ 0.264, 3.57, 0.342, 10.41, 0.258, -35.74, 0.342, -18.19 ] - }, - { - "time": 0.4, - "x": 10.41, - "y": -18.19, - "curve": [ 0.458, 10.41, 0.608, 26.32, 0.458, -18.19, 0.608, -20.79 ] - }, - { - "time": 0.6667, - "x": 26.32, - "y": -20.79, - "curve": [ 0.75, 26.32, 0.917, 19.04, 0.75, -20.79, 0.917, 1.7 ] - }, - { "time": 1, "x": 19.04, "y": 1.7 } - ], - "scale": [ - { - "curve": [ 0.05, 1, 0.15, 0.985, 0.05, 1, 0.15, 1.049 ] - }, - { - "time": 0.2, - "x": 0.985, - "y": 1.049, - "curve": [ 0.233, 0.985, 0.3, 1, 0.233, 1.049, 0.3, 1 ] - }, - { - "time": 0.3333, - "curve": [ 0.375, 1, 0.458, 1.066, 0.375, 1, 0.458, 0.945 ] - }, - { - "time": 0.5, - "x": 1.066, - "y": 0.945, - "curve": [ 0.603, 1.066, 0.7, 0.987, 0.639, 0.945, 0.817, 1.049 ] - }, - { - "time": 0.8667, - "x": 0.985, - "y": 1.049, - "curve": [ 0.878, 0.985, 0.958, 1.066, 0.917, 1.049, 0.958, 0.945 ] - }, - { - "time": 1, - "x": 1.066, - "y": 0.945, - "curve": [ 1.045, 1.065, 1.061, 0.986, 1.05, 0.944, 1.058, 1.048 ] - }, - { - "time": 1.1, - "x": 0.985, - "y": 1.049, - "curve": [ 1.189, 0.983, 1.363, 1, 1.119, 1.048, 1.363, 1 ] - }, - { "time": 1.5333 } - ] - }, - "back-arm2": { - "rotate": [ - { - "curve": [ 0.033, 0, 0.124, -25.32 ] - }, - { - "time": 0.1333, - "value": -28.29, - "curve": [ 0.178, -42.54, 0.408, -75.93 ] - }, - { - "time": 0.5, - "value": -75.93, - "curve": [ 0.567, -75.93, 0.722, -61.84 ] - }, - { - "time": 0.7667, - "value": -57.21, - "curve": [ 0.834, -50.18, 0.992, -38.17 ] - }, - { - "time": 1.0667, - "value": -38.17, - "curve": [ 1.108, -38.17, 1.177, -49.68 ] - }, - { - "time": 1.2667, - "value": -49.36, - "curve": [ 1.349, -49.07, 1.475, 0 ] - }, - { "time": 1.5333 } - ] - }, - "spineboy-torso": { - "rotate": [ - { - "value": -4.78, - "curve": [ 0.033, -4.78, 0.088, -8.83 ] - }, - { - "time": 0.1333, - "value": -13.36, - "curve": [ 0.179, -17.9, 0.242, -26.07 ] - }, - { - "time": 0.2667, - "value": -31.39, - "curve": [ 0.31, -40.56, 0.382, -52.73 ] - }, - { - "time": 0.4667, - "value": -52.79, - "curve": [ 0.574, -52.87, 0.615, -44.38 ] - }, - { - "time": 0.6667, - "value": -36.05, - "curve": [ 0.71, -29.14, 0.917, 9.18 ] - }, - { - "time": 1, - "value": 9.18, - "curve": [ 1.058, 9.18, 1.163, -29.03 ] - }, - { - "time": 1.2333, - "value": -29.37, - "curve": [ 1.275, -29.37, 1.377, -9.74 ] - }, - { - "time": 1.4, - "value": -7.98, - "curve": [ 1.443, -4.61, 1.517, -1.69 ] - }, - { "time": 1.5333, "value": -1.69 } - ] - }, - "tail7": { - "rotate": [ - { - "value": 6.72, - "curve": [ 0.049, 6.72, 0.193, 20.19 ] - }, - { - "time": 0.2333, - "value": 20.19, - "curve": [ 0.25, 20.19, 0.325, -13.06 ] - }, - { - "time": 0.4, - "value": -13.06, - "curve": [ 0.433, -13.06, 0.484, -9.84 ] - }, - { - "time": 0.5333, - "value": -5.93, - "curve": [ 0.586, -1.74, 0.822, 16.83 ] - }, - { - "time": 0.9333, - "value": 16.85, - "curve": [ 0.992, 16.86, 1.035, 12.25 ] - }, - { - "time": 1.0667, - "value": 7.16, - "curve": [ 1.129, -2.72, 1.166, -16.97 ] - }, - { - "time": 1.2, - "value": -16.51, - "curve": [ 1.273, -16.51, 1.319, -13.06 ] - }, - { - "time": 1.3667, - "value": -8.95, - "curve": [ 1.421, -4.2, 1.508, 0 ] - }, - { "time": 1.5333 } - ] - }, - "front-foot2": { - "rotate": [ - { - "time": 0.4, - "curve": [ 0.403, -10.05, 0.416, -43.77 ] - }, - { - "time": 0.4333, - "value": -53.55, - "curve": [ 0.469, -73.71, 0.522, -67.11 ] - }, - { - "time": 0.5333, - "value": -67.11, - "curve": [ 0.592, -68.53, 0.613, 20.61 ] - }, - { - "time": 0.9333, - "value": 24.85, - "curve": [ 0.958, 24.85, 0.989, 20.15 ] - }, - { "time": 1 } - ] - }, - "front-hand": { - "rotate": [ - { - "curve": [ 0.076, 0, 0.185, -8.93 ] - }, - { - "time": 0.3, - "value": -8.94, - "curve": [ 0.333, -8.94, 0.372, 38.13 ] - }, - { - "time": 0.4333, - "value": 38.11, - "curve": [ 0.516, 38.08, 0.653, -22.01 ] - }, - { - "time": 0.6667, - "value": -27.75, - "curve": [ 0.693, -38.81, 0.75, -52.48 ] - }, - { - "time": 0.8, - "value": -52.38, - "curve": [ 0.896, -52.18, 1.052, 10.93 ] - }, - { - "time": 1.0667, - "value": 16.08, - "curve": [ 1.088, 23.55, 1.152, 45.76 ] - }, - { - "time": 1.2, - "value": 46.03, - "curve": [ 1.252, 46.32, 1.27, -12.74 ] - }, - { - "time": 1.3, - "value": -12.68, - "curve": [ 1.373, -12.53, 1.424, 0 ] - }, - { "time": 1.4667 } - ] - }, - "jaw": { - "rotate": [ - { "value": 0.83 }, - { "time": 0.1333, "value": 6.62 }, - { "time": 0.3333, "value": -3.98 }, - { - "time": 0.4667, - "value": -14.79, - "curve": [ 0.731, -14.76, 0.792, 3.22 ] - }, - { "time": 0.9, "value": 3.22 }, - { "time": 0.9333, "value": -3.14 }, - { "time": 1.0667, "value": 12.08 }, - { "time": 1.2333, "value": -8.41 }, - { "time": 1.5333, "value": 0.83 } - ], - "translate": [ - { - "x": -10.21, - "y": 13.96, - "curve": [ 0.041, -10.21, 0.086, -23.53, 0.041, 13.96, 0.086, -6.69 ] - }, - { - "time": 0.1333, - "x": -23.53, - "y": -6.69, - "curve": [ 0.233, -23.53, 0.347, -43.29, 0.233, -6.69, 0.347, 2.9 ] - }, - { - "time": 0.4667, - "x": -42.09, - "y": 4.75, - "curve": [ 0.607, -40.69, 0.757, -33.92, 0.607, 6.92, 0.757, -13.55 ] - }, - { - "time": 0.9, - "x": -28.39, - "y": -12.1, - "curve": [ 1.016, -24, 1.13, -30.31, 1.016, -10.94, 1.13, 3.19 ] - }, - { - "time": 1.2333, - "x": -26.95, - "y": 9.17, - "curve": [ 1.347, -23.32, 1.449, -10.21, 1.347, 15.64, 1.449, 13.96 ] - }, - { "time": 1.5333, "x": -10.21, "y": 13.96 } - ] - }, - "back-foot2": { - "rotate": [ - { - "time": 0.4333, - "curve": [ 0.442, 0, 0.454, -46.1 ] - }, - { - "time": 0.4667, - "value": -60.96, - "curve": [ 0.475, -70.47, 0.517, -76.49 ] - }, - { - "time": 0.5333, - "value": -76.49, - "curve": [ 0.567, -76.49, 0.643, -68.96 ] - }, - { - "time": 0.6667, - "value": -63.79, - "curve": [ 0.712, -53.71, 0.866, -1.7 ] - }, - { - "time": 0.9333, - "value": 16.34, - "curve": [ 0.944, 19.2, 0.983, 24.85 ] - }, - { - "time": 1, - "value": 24.85, - "curve": [ 1.017, 24.85, 1.067, 11.07 ] - }, - { "time": 1.0667 } - ] - }, - "back-hand": { - "rotate": [ - { - "curve": [ 0.046, 0, 0.017, 36.31 ] - }, - { - "time": 0.1667, - "value": 36.26, - "curve": [ 0.3, 36.22, 0.535, 24.33 ] - }, - { - "time": 0.6667, - "value": 24.22, - "curve": [ 0.769, 24.27, 0.907, 26.83 ] - }, - { - "time": 0.9667, - "value": 31.87, - "curve": [ 1.024, 36.68, 1.148, 55.22 ] - }, - { - "time": 1.2, - "value": 55.2, - "curve": [ 1.296, 55.16, 1.469, 0 ] - }, - { "time": 1.5333 } - ] - }, - "tail9": { - "rotate": [ - { - "value": 6.72, - "curve": [ 0.04, 6.72, 0.185, 21.12 ] - }, - { - "time": 0.2333, - "value": 21.25, - "curve": [ 0.27, 21.35, 0.284, 17.74 ] - }, - { - "time": 0.3, - "value": 14.56, - "curve": [ 0.322, 10.26, 0.375, -13.06 ] - }, - { - "time": 0.4, - "value": -13.06, - "curve": [ 0.433, -13.06, 0.51, -11.64 ] - }, - { - "time": 0.5333, - "value": -7.88, - "curve": [ 0.579, -0.37, 0.741, 21.14 ] - }, - { - "time": 0.7667, - "value": 23.25, - "curve": [ 0.819, 27.63, 0.865, 31.03 ] - }, - { - "time": 0.9333, - "value": 31.09, - "curve": [ 0.975, 31.12, 1.034, 24.27 ] - }, - { - "time": 1.0667, - "value": 16.48, - "curve": [ 1.121, 3.62, 1.146, -4.68 ] - }, - { - "time": 1.1667, - "value": -10.43, - "curve": [ 1.185, -15.54, 1.242, -22.43 ] - }, - { - "time": 1.2667, - "value": -22.43, - "curve": [ 1.292, -22.43, 1.338, -20.95 ] - }, - { - "time": 1.3667, - "value": -17.59, - "curve": [ 1.412, -12.34, 1.508, 0 ] - }, - { "time": 1.5333 } - ] - }, - "front-foot3": { - "rotate": [ - { - "time": 0.4, - "curve": [ 0.415, 0.16, 0.423, -3.39 ] - }, - { - "time": 0.4333, - "value": -8.31, - "curve": [ 0.438, -10.62, 0.486, -19.18 ] - }, - { - "time": 0.5333, - "value": -19.17, - "curve": [ 0.581, -19.16, 0.637, -15.86 ] - }, - { - "time": 0.6667, - "value": -13.75, - "curve": [ 0.743, -8.29, 0.858, 10.78 ] - }, - { - "time": 0.9333, - "value": 10.78, - "curve": [ 0.958, 10.78, 1.022, 10.58 ] - }, - { "time": 1.0333, "value": 0.34 } - ] - }, - "head2": { - "rotate": [ - { - "value": 18.08, - "curve": [ 0.033, 18.08, 0.108, 24.73 ] - }, - { - "time": 0.1333, - "value": 25.81, - "curve": [ 0.206, 28.87, 0.258, 29.66 ] - }, - { - "time": 0.3, - "value": 29.66, - "curve": [ 0.325, 29.66, 0.387, 27.38 ] - }, - { - "time": 0.4, - "value": 26.31, - "curve": [ 0.488, 19.31, 0.606, 9.53 ] - }, - { - "time": 0.6333, - "value": 7.4, - "curve": [ 0.681, 3.72, 0.761, -1.99 ] - }, - { - "time": 0.8333, - "value": -1.98, - "curve": [ 0.888, -1.97, 0.944, 1.29 ] - }, - { - "time": 0.9667, - "value": 3.21, - "curve": [ 1.005, 6.46, 1.019, 15.11 ] - }, - { - "time": 1.0667, - "value": 15.13, - "curve": [ 1.125, 15.15, 1.204, 13.96 ] - }, - { - "time": 1.2333, - "value": 12.87, - "curve": [ 1.271, 11.48, 1.275, 9.98 ] - }, - { - "time": 1.3333, - "value": 7.77, - "curve": [ 1.394, 5.46, 1.393, 5.9 ] - }, - { - "time": 1.4333, - "value": 5.86, - "curve": [ 1.481, 5.81, 1.517, 8.93 ] - }, - { "time": 1.5333, "value": 8.93 } - ], - "scale": [ - { - "time": 0.9, - "curve": [ 0.928, 1, 0.963, 1.056, 0.928, 1, 0.963, 0.978 ] - }, - { - "time": 1, - "x": 1.056, - "y": 0.978, - "curve": [ 1.052, 1.056, 1.11, 0.951, 1.052, 0.978, 1.11, 0.997 ] - }, - { - "time": 1.1667, - "x": 0.942, - "y": 1.001, - "curve": [ 1.267, 0.926, 1.367, 1, 1.267, 1.008, 1.367, 1 ] - }, - { "time": 1.4333 } - ] - }, - "neck2": { - "rotate": [ - { - "value": -0.77, - "curve": [ 0.033, -0.77, 0.1, 15.96 ] - }, - { - "time": 0.1333, - "value": 15.96, - "curve": [ 0.175, 15.96, 0.269, 11.97 ] - }, - { - "time": 0.3, - "value": 10.07, - "curve": [ 0.34, 7.56, 0.375, 4.11 ] - }, - { - "time": 0.4, - "value": 4.05, - "curve": [ 0.468, 3.91, 0.575, 8.43 ] - }, - { - "time": 0.6333, - "value": 8.48, - "curve": [ 0.73, 8.58, 0.883, -2.77 ] - }, - { - "time": 0.9667, - "value": -2.77, - "curve": [ 0.992, -2.77, 1.047, 3.79 ] - }, - { - "time": 1.0667, - "value": 5.45, - "curve": [ 1.094, 7.73, 1.192, 10.76 ] - }, - { - "time": 1.2333, - "value": 10.76, - "curve": [ 1.258, 10.76, 1.316, 7.65 ] - }, - { - "time": 1.3667, - "value": 7.6, - "curve": [ 1.417, 7.56, 1.5, 12.24 ] - }, - { "time": 1.5333, "value": 12.24 } - ] - }, - "spineboy-front-arm-target": { - "translate": [ - { "x": -0.43, "y": -9.01 }, - { "time": 0.5 }, - { "time": 0.9667, "x": -6.56, "y": 0.7 }, - { "time": 1.0667, "x": 12.25, "y": -29.51 } - ] - }, - "front-hand2": { - "rotate": [ - {}, - { "time": 0.1333, "value": -22.27 }, - { "time": 0.2667, "value": -16.91 }, - { "time": 0.4333, "value": -2.22 }, - { "time": 0.6667, "value": -6.95 } - ] - }, - "stirrup": { - "rotate": [ - {}, - { "time": 0.3, "value": -13.39, "curve": "stepped" }, - { "time": 0.9667, "value": -13.39 }, - { "time": 1.3333 } - ] - }, - "spineboy-front-foot-target": { - "translate": [ - { "time": 0.2667 }, - { "time": 0.4333, "x": 19.72, "y": -2.18 }, - { "time": 0.5333, "x": 19.39, "y": -3.07 }, - { "time": 0.6667, "x": -3.87, "y": 6.01 }, - { "time": 1.0667, "x": -10.92, "y": 4.87 }, - { "time": 1.4667 } - ] - }, - "tail2": { - "rotate": [ - { - "curve": [ 0.031, 0, 0.085, -0.3 ] - }, - { - "time": 0.1333, - "value": -0.88, - "curve": [ 0.22, -1.88, 0.255, -7.43 ] - }, - { - "time": 0.3, - "value": -7.43, - "curve": [ 0.325, -7.43, 0.366, -7.05 ] - }, - { - "time": 0.4, - "value": -5.89, - "curve": [ 0.434, -4.73, 0.506, 1.38 ] - }, - { - "time": 0.5333, - "value": 1.75, - "curve": [ 0.582, 2.41, 0.637, 3.11 ] - }, - { - "time": 0.7333, - "value": 3.14, - "curve": [ 0.814, 3.16, 0.903, 0.42 ] - }, - { - "time": 0.9333, - "value": -0.83, - "curve": [ 0.959, -1.87, 1.106, -7.13 ] - }, - { - "time": 1.1667, - "value": -7.07, - "curve": [ 1.206, -7.03, 1.308, 4.72 ] - }, - { - "time": 1.4, - "value": 4.89, - "curve": [ 1.452, 4.98, 1.501, -6.46 ] - }, - { "time": 1.5333, "value": -6.46 } - ] - }, - "tail4": { - "rotate": [ - { - "value": 6.72, - "curve": [ 0.018, 6.72, 0.072, 8.45 ] - }, - { - "time": 0.1333, - "value": 8.08, - "curve": [ 0.257, 7.33, 0.161, -3.27 ] - }, - { - "time": 0.3, - "value": -3.31, - "curve": [ 0.455, -3.35, 0.599, 7.47 ] - }, - { - "time": 0.7667, - "value": 11.95, - "curve": [ 0.804, 12.94, 0.861, 14.26 ] - }, - { - "time": 0.9333, - "value": 14.35, - "curve": [ 0.963, 14.39, 0.996, 14.41 ] - }, - { - "time": 1.0333, - "value": 6.04, - "curve": [ 1.072, -2.56, 1.116, -11.42 ] - }, - { - "time": 1.1667, - "value": -11.4, - "curve": [ 1.238, -11.4, 1.318, -6.95 ] - }, - { - "time": 1.3333, - "value": -5.65, - "curve": [ 1.364, -3.08, 1.508, 3.65 ] - }, - { "time": 1.5333, "value": 3.65 } - ] - }, - "tail6": { - "rotate": [ - { - "value": 6.72, - "curve": [ 0.017, 6.72, 0.079, 14.92 ] - }, - { - "time": 0.1333, - "value": 14.56, - "curve": [ 0.186, 14.23, 0.228, 8.64 ] - }, - { - "time": 0.2333, - "value": 6.59, - "curve": [ 0.245, 1.79, 0.303, -11.91 ] - }, - { - "time": 0.4, - "value": -11.91, - "curve": [ 0.474, -11.91, 0.702, 8.29 ] - }, - { - "time": 0.7667, - "value": 12.95, - "curve": [ 0.803, 15.57, 0.845, 18.42 ] - }, - { - "time": 0.9333, - "value": 18.64, - "curve": [ 1.043, 18.9, 1.08, -11.4 ] - }, - { - "time": 1.1667, - "value": -11.61, - "curve": [ 1.236, -11.44, 1.29, -10.99 ] - }, - { - "time": 1.3333, - "value": -8.88, - "curve": [ 1.423, -4.58, 1.472, 2.97 ] - }, - { "time": 1.5333, "value": 3.69 } - ] - }, - "tail8": { - "rotate": [ - { - "value": 6.72, - "curve": [ 0.018, 6.72, 0.179, 17.14 ] - }, - { - "time": 0.2333, - "value": 17.13, - "curve": [ 0.257, 17.2, 0.288, 11.35 ] - }, - { - "time": 0.3, - "value": 9.01, - "curve": [ 0.318, 5.47, 0.375, -14.47 ] - }, - { - "time": 0.4, - "value": -14.47, - "curve": [ 0.433, -14.47, 0.492, -12.37 ] - }, - { - "time": 0.5333, - "value": -9.76, - "curve": [ 0.575, -6.73, 0.732, 7.06 ] - }, - { - "time": 0.7667, - "value": 9.18, - "curve": [ 0.809, 11.79, 0.85, 14.28 ] - }, - { - "time": 0.9333, - "value": 14.4, - "curve": [ 0.98, 14.46, 1.027, 12.95 ] - }, - { - "time": 1.0667, - "value": 6.47, - "curve": [ 1.112, -0.74, 1.148, -13.08 ] - }, - { - "time": 1.1667, - "value": -14.91, - "curve": [ 1.215, -19.6, 1.259, -23.09 ] - }, - { - "time": 1.3, - "value": -23.17, - "curve": [ 1.376, -23.24, 1.508, -11.89 ] - }, - { "time": 1.5333, "value": -11.89 } - ] - }, - "tail10": { - "rotate": [ - { - "value": 6.72, - "curve": [ 0.038, 6.72, 0.199, 10.82 ] - }, - { - "time": 0.2333, - "value": 10.93, - "curve": [ 0.257, 11, 0.276, 11.07 ] - }, - { - "time": 0.3, - "value": 8.71, - "curve": [ 0.335, 5.33, 0.37, -8.93 ] - }, - { - "time": 0.4, - "value": -12.6, - "curve": [ 0.425, -15.68, 0.5, -18.92 ] - }, - { - "time": 0.5333, - "value": -18.92, - "curve": [ 0.549, -18.92, 0.651, 2.65 ] - }, - { - "time": 0.7, - "value": 9.59, - "curve": [ 0.725, 13.09, 0.791, 16.42 ] - }, - { - "time": 0.8333, - "value": 16.82, - "curve": [ 0.956, 17.98, 1.051, 10.26 ] - }, - { - "time": 1.0667, - "value": 7.38, - "curve": [ 1.098, 1.71, 1.13, -23.72 ] - }, - { - "time": 1.1667, - "value": -26.24, - "curve": [ 1.199, -28.46, 1.242, -29.22 ] - }, - { - "time": 1.2667, - "value": -29.22, - "curve": [ 1.292, -29.22, 1.353, -18.67 ] - }, - { - "time": 1.3667, - "value": -17.84, - "curve": [ 1.408, -15.28, 1.492, -11.19 ] - }, - { "time": 1.5333, "value": -11.19 } - ] - }, - "saddle-strap-back": { - "rotate": [ - { - "value": -13.92, - "curve": [ 0.119, -14.07, 0.185, -17.29 ] - }, - { - "time": 0.2667, - "value": -17.26, - "curve": [ 0.326, -17.24, 0.467, 1.36 ] - }, - { - "time": 0.5333, - "value": 1.36, - "curve": [ 0.583, 1.36, 0.686, 0.58 ] - }, - { - "time": 0.7333, - "value": -2.1, - "curve": [ 0.773, -4.34, 0.883, -27.93 ] - }, - { - "time": 0.9333, - "value": -27.93, - "curve": [ 1, -27.93, 1.128, -14.6 ] - }, - { - "time": 1.2, - "value": -13.79, - "curve": [ 1.305, -12.61, 1.352, -12.27 ] - }, - { - "time": 1.4333, - "value": -12.07, - "curve": [ 1.48, -11.96, 1.508, -14.43 ] - }, - { "time": 1.5333, "value": -14.43 } - ] - }, - "back-leg1": { - "translate": [ - {}, - { "time": 0.4667, "x": -12.67, "y": -22.45 }, - { "time": 0.9 } - ] - }, - "bone3": { - "rotate": [ - { - "curve": [ 0.025, 0, 0.075, -6.29 ] - }, - { - "time": 0.1, - "value": -6.29, - "curve": [ 0.142, -6.29, 0.225, 14.19 ] - }, - { - "time": 0.2667, - "value": 14.19, - "curve": [ 0.283, 14.19, 0.317, 5.37 ] - }, - { - "time": 0.3333, - "value": 5.37, - "curve": [ 0.375, 5.37, 0.458, 17.56 ] - }, - { - "time": 0.5, - "value": 17.56, - "curve": [ 0.567, 17.56, 0.745, 7.05 ] - }, - { - "time": 0.7667, - "value": 5.59, - "curve": [ 0.792, 3.95, 0.944, -7.5 ] - }, - { - "time": 0.9667, - "value": -8.54, - "curve": [ 0.99, -9.6, 1.017, -10.01 ] - }, - { - "time": 1.0333, - "value": -10.01, - "curve": [ 1.067, -10.01, 1.152, 0.34 ] - }, - { - "time": 1.1667, - "value": 1.84, - "curve": [ 1.172, 2.4, 1.217, 5.06 ] - }, - { - "time": 1.2667, - "value": 5.88, - "curve": [ 1.28, 6.11, 1.317, 6.21 ] - }, - { - "time": 1.3333, - "value": 6.21, - "curve": [ 1.35, 6.21, 1.395, 1.51 ] - }, - { - "time": 1.4, - "value": 1.14, - "curve": [ 1.427, -0.79, 1.475, -2.77 ] - }, - { "time": 1.5, "value": -2.77 } - ] - }, - "bone4": { - "rotate": [ - { - "curve": [ 0.025, 0, 0.075, -6.29 ] - }, - { - "time": 0.1, - "value": -6.29, - "curve": [ 0.142, -6.29, 0.225, 14.19 ] - }, - { - "time": 0.2667, - "value": 14.19, - "curve": [ 0.283, 14.19, 0.324, 11.19 ] - }, - { - "time": 0.3333, - "value": 10.52, - "curve": [ 0.388, 6.71, 0.471, 1.06 ] - }, - { - "time": 0.5, - "value": -0.4, - "curve": [ 0.573, -4, 0.7, -7.16 ] - }, - { - "time": 0.7667, - "value": -7.16, - "curve": [ 0.817, -7.16, 0.917, -7.61 ] - }, - { - "time": 0.9667, - "value": -7.61, - "curve": [ 0.983, -7.61, 1.023, -5.42 ] - }, - { - "time": 1.0333, - "value": -4.76, - "curve": [ 1.088, -1.16, 1.133, 13.06 ] - }, - { - "time": 1.1667, - "value": 13.06, - "curve": [ 1.192, 13.06, 1.261, 3.4 ] - }, - { - "time": 1.2667, - "value": 2.21, - "curve": [ 1.285, -1.5, 1.317, -12.63 ] - }, - { - "time": 1.3333, - "value": -12.63, - "curve": [ 1.35, -12.63, 1.383, 16.65 ] - }, - { - "time": 1.4, - "value": 16.65, - "curve": [ 1.425, 16.65, 1.475, -2.77 ] - }, - { "time": 1.5, "value": -2.77 } - ] - }, - "bone5": { - "rotate": [ - { - "curve": [ 0.025, 0, 0.075, -6.29 ] - }, - { - "time": 0.1, - "value": -6.29, - "curve": [ 0.142, -6.29, 0.225, 14.19 ] - }, - { - "time": 0.2667, - "value": 14.19, - "curve": [ 0.283, 14.19, 0.321, 9.81 ] - }, - { - "time": 0.3333, - "value": 9.24, - "curve": [ 0.398, 6.26, 0.459, 4.3 ] - }, - { - "time": 0.5, - "value": 3.82, - "curve": [ 0.575, 2.94, 0.7, 1.96 ] - }, - { - "time": 0.7667, - "value": 1.96, - "curve": [ 0.817, 1.96, 0.91, -3.96 ] - }, - { - "time": 0.9667, - "value": -7.61, - "curve": [ 0.977, -8.28, 1.017, -10.01 ] - }, - { - "time": 1.0333, - "value": -10.01, - "curve": [ 1.067, -10.01, 1.133, 6.48 ] - }, - { - "time": 1.1667, - "value": 6.48, - "curve": [ 1.192, 6.48, 1.254, 3.31 ] - }, - { - "time": 1.2667, - "value": 2.21, - "curve": [ 1.294, -0.11, 1.317, -11.57 ] - }, - { - "time": 1.3333, - "value": -11.57, - "curve": [ 1.358, -11.57, 1.408, 5.16 ] - }, - { - "time": 1.4333, - "value": 5.16, - "curve": [ 1.458, 5.16, 1.508, -2.77 ] - }, - { "time": 1.5333, "value": -2.77 } - ] - }, - "bone": { - "rotate": [ - { - "curve": [ 0.025, 0, 0.075, -6.29 ] - }, - { - "time": 0.1, - "value": -6.29, - "curve": [ 0.142, -6.29, 0.225, 14.19 ] - }, - { - "time": 0.2667, - "value": 14.19, - "curve": [ 0.283, 14.19, 0.325, 10.28 ] - }, - { - "time": 0.3333, - "value": 9.74, - "curve": [ 0.388, 6.32, 0.46, 4.23 ] - }, - { - "time": 0.5, - "value": 3.82, - "curve": [ 0.562, 3.19, 0.7, 2.05 ] - }, - { - "time": 0.7667, - "value": 1.96, - "curve": [ 0.825, 1.88, 0.917, 4.62 ] - }, - { - "time": 0.9667, - "value": 4.62, - "curve": [ 0.983, 4.62, 1.023, 1.2 ] - }, - { - "time": 1.0333, - "value": 0.71, - "curve": [ 1.081, -1.59, 1.133, -2.71 ] - }, - { - "time": 1.1667, - "value": -2.71, - "curve": [ 1.192, -2.71, 1.246, -1.91 ] - }, - { - "time": 1.2667, - "value": -0.49, - "curve": [ 1.294, 1.34, 1.298, 3.19 ] - }, - { - "time": 1.3333, - "value": 5.49, - "curve": [ 1.342, 6.03, 1.383, 7.29 ] - }, - { - "time": 1.4, - "value": 7.29, - "curve": [ 1.425, 7.29, 1.475, -2.77 ] - }, - { "time": 1.5, "value": -2.77 } - ] - }, - "bone2": { - "rotate": [ - { - "curve": [ 0.025, 0, 0.075, -6.29 ] - }, - { - "time": 0.1, - "value": -6.29, - "curve": [ 0.142, -6.29, 0.225, 14.19 ] - }, - { - "time": 0.2667, - "value": 14.19, - "curve": [ 0.283, 14.19, 0.324, 10.89 ] - }, - { - "time": 0.3333, - "value": 10.09, - "curve": [ 0.392, 5.25, 0.471, -0.35 ] - }, - { - "time": 0.5, - "value": -2.13, - "curve": [ 0.562, -5.98, 0.7, -10.52 ] - }, - { - "time": 0.7667, - "value": -10.52, - "curve": [ 0.817, -10.52, 0.929, -8.78 ] - }, - { - "time": 0.9667, - "value": -6.83, - "curve": [ 0.998, -5.22, 1.027, -2.36 ] - }, - { - "time": 1.0333, - "value": -1.45, - "curve": [ 1.073, 4.26, 1.133, 18.91 ] - }, - { - "time": 1.1667, - "value": 18.91, - "curve": [ 1.192, 18.91, 1.26, 3.63 ] - }, - { - "time": 1.2667, - "value": 2.21, - "curve": [ 1.283, -1.14, 1.317, -7.27 ] - }, - { - "time": 1.3333, - "value": -7.27, - "curve": [ 1.35, -7.27, 1.383, 10.01 ] - }, - { - "time": 1.4, - "value": 10.01, - "curve": [ 1.425, 10.01, 1.475, -2.77 ] - }, - { "time": 1.5, "value": -2.77 } - ] - }, - "head-control": { - "translate": [ - { - "curve": [ 0.102, 0, 0.227, -26.08, 0.05, 0, 0.262, 97.74 ] - }, - { - "time": 0.4333, - "x": -26.1, - "y": 97.3, - "curve": [ 0.663, -26.12, 0.832, -16.98, 0.613, 96.83, 0.892, 22.95 ] - }, - { - "time": 0.9333, - "x": -14.02, - "y": 11.08, - "curve": [ 0.986, -12.5, 1.035, -10.47, 0.957, 4.24, 1.058, -31.97 ] - }, - { - "time": 1.1, - "x": -8.27, - "y": -31.97, - "curve": [ 1.163, -6.13, 1.265, -3.68, 1.158, -31.97, 1.275, 24.45 ] - }, - { - "time": 1.3333, - "x": -2.27, - "y": 24.45, - "curve": [ 1.447, 0.09, 1.483, 0, 1.383, 24.45, 1.483, 0 ] - }, - { "time": 1.5333 } - ] - }, - "horn-front": { - "translate": [ - { - "curve": [ 0.108, 0, 0.325, -6.39, 0.108, 0, 0.325, 23.95 ] - }, - { - "time": 0.4333, - "x": -6.39, - "y": 23.95, - "curve": [ 0.558, -6.39, 0.808, 3.02, 0.558, 23.95, 0.808, -1.11 ] - }, - { - "time": 0.9333, - "x": 3.02, - "y": -1.11, - "curve": [ 0.975, 3.02, 1.058, 4.31, 0.975, -1.11, 1.058, -10.04 ] - }, - { - "time": 1.1, - "x": 4.31, - "y": -10.04, - "curve": [ 1.158, 4.31, 1.275, 3.72, 1.158, -10.04, 1.275, 6.17 ] - }, - { - "time": 1.3333, - "x": 3.72, - "y": 6.17, - "curve": [ 1.383, 3.72, 1.483, 0, 1.383, 6.17, 1.483, 0 ] - }, - { "time": 1.5333 } - ] - }, - "horn-back": { - "translate": [ - { - "curve": [ 0.108, 0, 0.325, -3.27, 0.108, 0, 0.325, -12.12 ] - }, - { - "time": 0.4333, - "x": -3.27, - "y": -12.12, - "curve": [ 0.558, -3.27, 0.808, 0, 0.558, -12.12, 0.808, 0 ] - }, - { - "time": 0.9333, - "curve": [ 0.975, 0, 1.058, -2.83, 0.975, 0, 1.058, 17.37 ] - }, - { - "time": 1.1, - "x": -2.83, - "y": 17.37, - "curve": [ 1.158, -2.83, 1.275, 0.49, 1.158, 17.37, 1.275, 6.93 ] - }, - { - "time": 1.3333, - "x": 0.49, - "y": 6.93, - "curve": [ 1.383, 0.49, 1.483, 0, 1.383, 6.93, 1.483, 0 ] - }, - { "time": 1.5333 } - ] - }, - "torso1": { - "rotate": [ - { - "curve": [ 0.118, 0.13, 0.135, 1.55 ] - }, - { - "time": 0.2, - "value": 3.04, - "curve": [ 0.243, 4.04, 0.325, 5.4 ] - }, - { - "time": 0.3667, - "value": 5.4, - "curve": [ 0.467, 5.4, 0.567, -16.54 ] - }, - { - "time": 0.6667, - "value": -16.54, - "curve": [ 0.804, -16.54, 0.878, 9.25 ] - }, - { - "time": 0.9667, - "value": 9.37, - "curve": [ 1.053, 9.48, 1.131, -2.06 ] - }, - { - "time": 1.2, - "value": -1.95, - "curve": [ 1.292, -1.8, 1.304, 2.68 ] - }, - { - "time": 1.3667, - "value": 2.86, - "curve": [ 1.429, 3.03, 1.472, -0.13 ] - }, - { "time": 1.5333 } - ] - }, - "saddle": { - "translate": [ - { "x": 19.28, "y": -10.71 } - ] - }, - "tongue1": { - "rotate": [ - { - "curve": [ 0.1, 0, 0.3, 9.37 ] - }, - { - "time": 0.4, - "value": 9.37, - "curve": [ 0.5, 9.37, 0.7, 17.48 ] - }, - { - "time": 0.8, - "value": 17.48, - "curve": [ 0.867, 17.48, 1, 22.44 ] - }, - { - "time": 1.0667, - "value": 22.44, - "curve": [ 1.117, 22.44, 1.217, -7.3 ] - }, - { - "time": 1.2667, - "value": -7.3, - "curve": [ 1.333, -7.3, 1.467, 0 ] - }, - { "time": 1.5333 } - ] - }, - "tongue2": { - "rotate": [ - { - "curve": [ 0.083, 0, 0.25, -16.67 ] - }, - { - "time": 0.3333, - "value": -16.67, - "curve": [ 0.383, -16.67, 0.483, -20.4 ] - }, - { - "time": 0.5333, - "value": -20.4, - "curve": [ 0.592, -20.4, 0.708, -5.9 ] - }, - { "time": 0.7667, "value": -5.9 } - ] - }, - "tongue3": { - "rotate": [ - { - "curve": [ 0.083, 0, 0.25, -16.67 ] - }, - { - "time": 0.3333, - "value": -16.67, - "curve": [ 0.383, -16.67, 0.483, -32.41 ] - }, - { - "time": 0.5333, - "value": -32.41, - "curve": [ 0.592, -32.41, 0.708, -4.64 ] - }, - { - "time": 0.7667, - "value": -4.64, - "curve": [ 0.817, -4.64, 0.917, 9.34 ] - }, - { "time": 0.9667, "value": 9.34 } - ] - }, - "saddle-strap-front": { - "rotate": [ - { - "curve": [ 0.068, 0, 0.147, 0.59 ] - }, - { - "time": 0.2333, - "value": 0.26, - "curve": [ 0.286, 0.06, 0.364, -2.89 ] - }, - { - "time": 0.4, - "value": -4.33, - "curve": [ 0.432, -5.6, 0.489, -7.01 ] - }, - { - "time": 0.5333, - "value": -7.19, - "curve": [ 0.622, -7.54, 0.748, -0.51 ] - }, - { - "time": 0.8, - "value": 1.72, - "curve": [ 0.877, 5.01, 0.931, 5.58 ] - }, - { - "time": 1, - "value": 5.62, - "curve": [ 1.04, 5.64, 1.114, -0.98 ] - }, - { - "time": 1.1667, - "value": -2.42, - "curve": [ 1.307, -6.12, 1.433, -6.47 ] - }, - { "time": 1.5333, "value": -6.47 } - ] - }, - "leg-control": { - "translate": [ - { - "curve": [ 0.05, 0, 0.106, 0, 0.05, 0, 0.106, 100.22 ] - }, - { - "time": 0.1667, - "y": 100.22, - "curve": [ 0.199, 0, 0.234, 0, 0.199, 100.22, 0.242, -19.3 ] - }, - { - "time": 0.2667, - "y": -25.61, - "curve": [ 0.331, 0, 0.398, 0, 0.321, -39.52, 0.398, -43.58 ] - }, - { - "time": 0.4667, - "y": -43.47, - "curve": [ 0.522, 0, 0.578, 0, 0.522, -43.39, 0.598, 11.65 ] - }, - { - "time": 0.6333, - "y": 23.7, - "curve": [ 0.745, 0, 0.858, 0, 0.729, 55.73, 0.858, 75.57 ] - }, - { - "time": 0.9667, - "y": 71.98, - "curve": [ 0.989, 0, 1.012, 0, 0.989, 71.25, 1.012, -46.63 ] - }, - { - "time": 1.0333, - "y": -48.46, - "curve": [ 1.091, 0, 1.147, 0, 1.091, -53.23, 1.126, 120.27 ] - }, - { - "time": 1.2, - "y": 118.83, - "curve": [ 1.234, 0, 1.268, 0, 1.237, 118.12, 1.251, -67.36 ] - }, - { - "time": 1.3, - "y": -66.77, - "curve": [ 1.335, 0, 1.369, 0, 1.333, -66.38, 1.368, 44.6 ] - }, - { - "time": 1.4, - "y": 40.56, - "curve": [ 1.449, 0, 1.493, 0, 1.421, 37.96, 1.493, 0 ] - }, - { "time": 1.5333 } - ] - }, - "front-arm": { - "translate": [ - {}, - { "time": 0.4, "x": -5.67, "y": -4.08 }, - { "time": 0.5333, "y": -4.23 }, - { "time": 0.9, "x": -12.75, "y": 12.28 }, - { "time": 1.2333, "x": -4.44, "y": -5.6 }, - { "time": 1.5333 } - ], - "scale": [ - {}, - { "time": 0.4, "x": 1.057 }, - { "time": 0.5333, "x": 1.118 }, - { "time": 0.6667 }, - { "time": 1.3, "x": 1.105 }, - { "time": 1.5333 } - ] - } - }, - "ik": { - "front-leg-ik": [ - { "softness": 37.3, "bendPositive": false }, - { "time": 0.4333, "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.6333, "name": "mouth-grind" }, - { "time": 1.5667, "name": "mouth-smile" } - ] - } - }, - "bones": { - "hip": { - "rotate": [ - { - "curve": [ 0.025, 0, 0.061, 2.9 ] - }, - { - "time": 0.1, - "value": 2.95, - "curve": [ 0.15, 3.01, 0.192, -10.89 ] - }, - { - "time": 0.2, - "value": -14.12, - "curve": [ 0.224, -23.48, 0.238, -33.2 ] - }, - { - "time": 0.3, - "value": -33.4, - "curve": [ 0.401, -33.71, 0.493, -9.73 ] - }, - { - "time": 0.5667, - "value": -6.44, - "curve": [ 0.589, -5.43, 0.683, -0.43 ] - }, - { - "time": 0.7, - "value": -0.43, - "curve": [ 0.739, -0.43, 0.778, -6.76 ] - }, - { - "time": 0.8333, - "value": -6.78, - "curve": [ 0.962, -6.83, 1.164, -5.78 ] - }, - { - "time": 1.4333, - "value": -5.93, - "curve": [ 1.531, -5.99, 1.535, -17.42 ] - }, - { - "time": 1.7, - "value": -17.43, - "curve": [ 1.808, -17.5, 1.816, 3.25 ] - }, - { - "time": 1.9333, - "value": 3.28, - "curve": [ 1.988, 3.3, 2.083, 0 ] - }, - { "time": 2.1333 } - ], - "translate": [ - { - "y": 0.49, - "curve": [ 0.012, -0.48, 0.055, 34.36, 0.033, 15.91, 0.072, 19.98 ] - }, - { - "time": 0.1, - "x": 34.57, - "y": 19.97, - "curve": [ 0.3, 33.35, 0.261, -337.47, 0.27, 21.25, 0.435, -81.31 ] - }, - { - "time": 0.4667, - "x": -339.74, - "y": -103.88, - "curve": [ 0.525, -333.53, 0.54, -266.9, 0.518, -141.21, 0.548, -146.45 ] - }, - { - "time": 0.5667, - "x": -207.1, - "y": -146.24, - "curve": [ 0.577, -182.59, 0.605, 44.93, 0.613, -146.67, 0.629, -42.46 ] - }, - { - "time": 0.7, - "x": 44.98, - "y": -16.55, - "curve": [ 0.729, 44.99, 0.752, 42.93, 0.722, -8.54, 0.75, -6.52 ] - }, - { - "time": 0.7667, - "x": 41.57, - "y": -6.52, - "curve": [ 0.8, 38.2, 0.817, 35.92, 0.783, -6.52, 0.817, -13.34 ] - }, - { - "time": 0.8333, - "x": 35.92, - "y": -13.34, - "curve": [ 0.85, 35.92, 0.861, 39.13, 0.85, -13.34, 0.883, -6.52 ] - }, - { - "time": 0.9, - "x": 41.57, - "y": -6.52, - "curve": [ 0.945, 44.44, 1.276, 55.19, 0.992, -6.52, 1.275, -29.36 ] - }, - { - "time": 1.3667, - "x": 48.94, - "y": -29.36, - "curve": [ 1.579, 34.34, 1.622, -126.54, 1.558, -27.52, 1.659, -0.02 ] - }, - { - "time": 1.7, - "x": -127.64, - "y": 26.21, - "curve": [ 1.76, -128.48, 1.796, -115.83, 1.73, 45.34, 1.788, 70.47 ] - }, - { - "time": 1.8667, - "x": -78.95, - "y": 70.65, - "curve": [ 1.924, -49.19, 2.036, -1.03, 1.95, 70.79, 2.067, -30.6 ] - }, - { "time": 2.1333, "y": 0.49 } - ] - }, - "torso2": { - "rotate": [ - { - "curve": [ 0.093, 0.6, 0.15, 1.6 ] - }, - { - "time": 0.2, - "value": 1.61, - "curve": [ 0.29, 1.63, 0.346, -1.9 ] - }, - { - "time": 0.3667, - "value": -3.53, - "curve": [ 0.389, -5.3, 0.508, -20.04 ] - }, - { - "time": 0.5333, - "value": -22.32, - "curve": [ 0.559, -24.61, 0.596, -27.57 ] - }, - { - "time": 0.7, - "value": -27.54, - "curve": [ 0.758, -27.53, 0.754, -20.48 ] - }, - { - "time": 0.8, - "value": -20.36, - "curve": [ 0.831, -20.27, 0.851, -21.29 ] - }, - { - "time": 0.9, - "value": -21.25, - "curve": [ 0.963, -21.2, 1.021, -14.89 ] - }, - { - "time": 1.0667, - "value": -14.92, - "curve": [ 1.141, -14.99, 1.167, -18.09 ] - }, - { - "time": 1.2667, - "value": -18.03, - "curve": [ 1.385, -17.94, 1.605, -5.08 ] - }, - { - "time": 1.6667, - "value": -5.02, - "curve": [ 1.714, -4.98, 1.751, -7.53 ] - }, - { - "time": 1.8, - "value": -7.52, - "curve": [ 1.961, -6.98, 2.05, -0.54 ] - }, - { "time": 2.1333 } - ], - "translate": [ - { - "curve": [ 0.05, 0, 0.167, 10.5, 0.05, 0, 0.15, 15.96 ] - }, - { - "time": 0.2, - "x": 12.62, - "y": 15.96, - "curve": [ 0.264, 16.81, 0.35, 19.16, 0.25, 15.96, 0.372, -12.74 ] - }, - { - "time": 0.4, - "x": 19.16, - "y": -15.96, - "curve": [ 0.45, 19.16, 0.565, 14.27, 0.46, -22.88, 0.55, -27.56 ] - }, - { - "time": 0.6, - "x": 13.67, - "y": -27.56, - "curve": [ 0.655, 12.74, 0.707, 12.17, 0.642, -27.56, 0.703, -24.23 ] - }, - { - "time": 0.7667, - "x": 12.05, - "y": -14.93, - "curve": [ 0.798, 11.99, 0.817, 12.59, 0.811, -8.49, 0.817, 0.87 ] - }, - { - "time": 0.8333, - "x": 13.4, - "y": 0.87, - "curve": [ 0.867, 15.08, 0.877, 16.88, 0.858, 0.87, 0.908, -11.59 ] - }, - { - "time": 0.9333, - "x": 18.37, - "y": -11.59, - "curve": [ 0.957, 19, 1.011, 19.96, 0.958, -11.59, 1.008, -1.9 ] - }, - { - "time": 1.0333, - "x": 20.16, - "y": -1.9, - "curve": [ 1.072, 20.52, 1.162, 20.95, 1.075, -1.9, 1.158, -5.89 ] - }, - { - "time": 1.2, - "x": 21.21, - "y": -5.89, - "curve": [ 1.245, 21.53, 1.375, 25.99, 1.258, -5.89, 1.375, 3.45 ] - }, - { - "time": 1.4333, - "x": 25.99, - "y": 3.45, - "curve": [ 1.5, 25.99, 1.645, 25.8, 1.5, 3.45, 1.646, 1.31 ] - }, - { - "time": 1.7, - "x": 25.18, - "y": 0.95, - "curve": [ 1.784, 24.23, 2.025, 0, 1.816, 0.17, 2.025, 0 ] - }, - { "time": 2.1333 } - ], - "scale": [ - { - "time": 0.5333, - "curve": [ 0.55, 1, 0.657, 1.09, 0.55, 1, 0.683, 0.966 ] - }, - { - "time": 0.7, - "x": 1.093, - "y": 0.966, - "curve": [ 0.772, 1.091, 0.8, 0.988, 0.774, 0.968, 0.8, 1.043 ] - }, - { - "time": 0.8333, - "x": 0.988, - "y": 1.043, - "curve": [ 0.867, 0.988, 0.983, 1.002, 0.867, 1.043, 0.991, 0.999 ] - }, - { "time": 1.1333 } - ] - }, - "spineboy-torso": { - "rotate": [ - { - "curve": [ 0.024, -0.09, 0.088, -27.73 ] - }, - { - "time": 0.1667, - "value": -27.92, - "curve": [ 0.193, -27.99, 0.216, -27.44 ] - }, - { - "time": 0.2333, - "value": -27.42, - "curve": [ 0.292, -27.34, 0.4, -41 ] - }, - { - "time": 0.4333, - "value": -47.9, - "curve": [ 0.481, -57.82, 0.578, -76.33 ] - }, - { - "time": 0.6333, - "value": -81.72, - "curve": [ 0.656, -83.88, 0.669, -84.84 ] - }, - { - "time": 0.7, - "value": -84.84, - "curve": [ 0.733, -84.84, 0.8, -60.21 ] - }, - { - "time": 0.8333, - "value": -60.21, - "curve": [ 0.85, -60.21, 0.873, -68.32 ] - }, - { - "time": 0.9, - "value": -68.29, - "curve": [ 0.933, -68.25, 0.958, -64.03 ] - }, - { - "time": 1, - "value": -63.97, - "curve": [ 1.085, -63.84, 1.213, -69.62 ] - }, - { - "time": 1.2667, - "value": -69.47, - "curve": [ 1.42, -69.06, 1.479, -59.79 ] - }, - { - "time": 1.5, - "value": -54.97, - "curve": [ 1.524, -49.41, 1.645, -25.87 ] - }, - { - "time": 1.7, - "value": -18.45, - "curve": [ 1.751, -11.45, 1.878, 0 ] - }, - { "time": 2.1333 } - ] - }, - "head2": { - "rotate": [ - { - "value": 12.98, - "curve": [ 0.031, 13.09, 0.051, 13.3 ] - }, - { - "time": 0.0667, - "value": 14.18, - "curve": [ 0.093, 15.64, 0.27, 32.49 ] - }, - { - "time": 0.3, - "value": 33.18, - "curve": [ 0.337, 34.04, 0.379, 21.48 ] - }, - { - "time": 0.4333, - "value": 21.71, - "curve": [ 0.495, 21.97, 0.586, 55.8 ] - }, - { - "time": 0.6333, - "value": 55.8, - "curve": [ 0.713, 55.8, 0.808, 48.07 ] - }, - { - "time": 0.9, - "value": 48.25, - "curve": [ 0.95, 48.35, 0.991, 53.74 ] - }, - { - "time": 1.0333, - "value": 53.37, - "curve": [ 1.058, 53.15, 1.073, 47.29 ] - }, - { - "time": 1.1, - "value": 47.47, - "curve": [ 1.189, 48.06, 1.186, 51.29 ] - }, - { - "time": 1.2333, - "value": 51.02, - "curve": [ 1.265, 50.85, 1.312, 48.13 ] - }, - { - "time": 1.3333, - "value": 45.79, - "curve": [ 1.359, 42.93, 1.443, 33.19 ] - }, - { - "time": 1.5, - "value": 32.96, - "curve": [ 1.555, 32.74, 1.584, 45.98 ] - }, - { - "time": 1.6333, - "value": 45.92, - "curve": [ 1.706, 45.84, 1.747, 24.35 ] - }, - { - "time": 1.8, - "value": 15.58, - "curve": [ 1.858, 6.03, 1.904, 0 ] - }, - { - "time": 1.9333, - "curve": [ 1.966, 0, 2.019, 17.18 ] - }, - { - "time": 2.0667, - "value": 17.31, - "curve": [ 2.097, 17.39, 2.116, 12.98 ] - }, - { "time": 2.1333, "value": 12.98 } - ], - "scale": [ - { - "time": 0.4667, - "curve": [ 0.497, 1, 0.531, 0.984, 0.497, 1, 0.531, 1.04 ] - }, - { - "time": 0.5667, - "x": 0.984, - "y": 1.04, - "curve": [ 0.618, 0.984, 0.684, 1.043, 0.618, 1.04, 0.668, 0.992 ] - }, - { - "time": 0.7333, - "x": 1.044, - "y": 0.99, - "curve": [ 0.775, 1.045, 0.844, 1, 0.767, 0.989, 0.844, 1 ] - }, - { "time": 0.9, "curve": "stepped" }, - { - "time": 1.4333, - "curve": [ 1.475, 1, 1.563, 1.001, 1.475, 1, 1.568, 1.003 ] - }, - { - "time": 1.6, - "x": 1.004, - "y": 1.008, - "curve": [ 1.651, 1.008, 1.675, 1.016, 1.637, 1.012, 1.675, 1.055 ] - }, - { - "time": 1.7, - "x": 1.016, - "y": 1.055, - "curve": [ 1.758, 1.016, 1.854, 1.008, 1.758, 1.055, 1.881, 1.014 ] - }, - { - "time": 1.9333, - "x": 1.004, - "y": 1.008, - "curve": [ 1.98, 1.001, 2.083, 1, 1.993, 1.001, 2.083, 1 ] - }, - { "time": 2.1333 } - ] - }, - "neck2": { - "rotate": [ - { - "value": 0.02, - "curve": [ 0.05, 0.02, 0.144, 5.69 ] - }, - { - "time": 0.2, - "value": 9.94, - "curve": [ 0.276, 15.74, 0.525, 37.25 ] - }, - { - "time": 0.6333, - "value": 37.25, - "curve": [ 0.808, 37.25, 1.175, 37.21 ] - }, - { - "time": 1.3333, - "value": 33.93, - "curve": [ 1.543, 29.58, 1.659, 13.32 ] - }, - { - "time": 1.7, - "value": 11.08, - "curve": [ 1.762, 7.68, 1.875, 0 ] - }, - { "time": 1.9333 } - ] - }, - "front-arm1": { - "rotate": [ - { - "curve": [ 0.025, 0, 0.051, -14.24 ] - }, - { - "time": 0.1, - "value": -14.37, - "curve": [ 0.206, -14.64, 0.27, 25.52 ] - }, - { - "time": 0.3333, - "value": 25.6, - "curve": [ 0.466, 25.77, 0.528, -35.52 ] - }, - { - "time": 0.7, - "value": -35.63, - "curve": [ 0.742, -35.65, 0.808, -30.27 ] - }, - { - "time": 0.8333, - "value": -28.76, - "curve": [ 0.956, -21.55, 1.342, -18.16 ] - }, - { - "time": 1.5, - "value": -18.16, - "curve": [ 1.608, -18.16, 1.825, 13.78 ] - }, - { - "time": 1.9333, - "value": 13.78, - "curve": [ 1.983, 13.78, 2.083, 0 ] - }, - { "time": 2.1333 } - ] - }, - "front-arm2": { - "rotate": [ - { - "curve": [ 0.157, 0, 0.166, 22.96 ] - }, - { - "time": 0.2333, - "value": 23.11, - "curve": [ 0.52, 23.77, 0.523, 3.24 ] - }, - { - "time": 0.5333, - "value": -3.34, - "curve": [ 0.561, -21.06, 0.604, -49.19 ] - }, - { - "time": 0.8, - "value": -59.15, - "curve": [ 0.896, -64.05, 1.195, -69.82 ] - }, - { - "time": 1.3333, - "value": -69.51, - "curve": [ 1.407, -69.35, 1.46, -64.94 ] - }, - { - "time": 1.5, - "value": -47.97, - "curve": [ 1.525, -37.26, 1.6, 20.75 ] - }, - { - "time": 1.6667, - "value": 20.78, - "curve": [ 1.801, 20.84, 1.868, -8.99 ] - }, - { - "time": 1.9333, - "value": -8.99, - "curve": [ 1.983, -8.99, 2.083, 0 ] - }, - { "time": 2.1333 } - ] - }, - "front-hand": { - "rotate": [ - { - "curve": [ 0.05, 0, 0.15, 15.17 ] - }, - { - "time": 0.2, - "value": 15.17, - "curve": [ 0.409, 14.83, 0.403, -26.62 ] - }, - { - "time": 0.5333, - "value": -25.8, - "curve": [ 0.62, -25.26, 0.648, 1.88 ] - }, - { - "time": 0.8, - "value": 1.88, - "curve": [ 0.983, 1.88, 1.479, -23.1 ] - }, - { - "time": 1.5333, - "value": -30.97, - "curve": [ 1.574, -36.96, 1.591, -46.26 ] - }, - { - "time": 1.6333, - "value": -46.06, - "curve": [ 1.75, -45.52, 1.762, 18.69 ] - }, - { - "time": 1.9333, - "value": 19.03, - "curve": [ 1.983, 19.13, 2.083, 0 ] - }, - { "time": 2.1333 } - ] - }, - "back-arm2": { - "rotate": [ - { - "curve": [ 0.05, 0, 0.081, -14.57 ] - }, - { - "time": 0.2, - "value": -14.55, - "curve": [ 0.287, -14.54, 0.388, -2.01 ] - }, - { - "time": 0.4667, - "value": -2.44, - "curve": [ 0.53, -2.78, 0.593, -10.56 ] - }, - { - "time": 0.6, - "value": -25.66, - "curve": [ 0.621, -73.18, 0.619, -95.18 ] - }, - { - "time": 0.7667, - "value": -97.24, - "curve": [ 0.847, -98.36, 1.279, -103.19 ] - }, - { - "time": 1.5, - "value": -77.44, - "curve": [ 1.567, -69.6, 1.77, -24.47 ] - }, - { - "time": 1.9333, - "value": -8.99, - "curve": [ 1.959, -6.54, 2.083, 0 ] - }, - { "time": 2.1333 } - ] - }, - "back-hand": { - "rotate": [ - { - "curve": [ 0.05, 0, 0.136, 7.7 ] - }, - { - "time": 0.2, - "value": 19.14, - "curve": [ 0.243, 26.85, 0.237, 49.93 ] - }, - { - "time": 0.3, - "value": 49.98, - "curve": [ 0.416, 50.06, 0.415, 33.42 ] - }, - { - "time": 0.4667, - "value": 33.94, - "curve": [ 0.586, 35.15, 0.557, 78.18 ] - }, - { - "time": 0.6, - "value": 78.77, - "curve": [ 0.624, 79.1, 0.639, 48.7 ] - }, - { - "time": 0.6667, - "value": 37.71, - "curve": [ 0.711, 20.36, 0.804, -1.75 ] - }, - { - "time": 0.9667, - "value": -3, - "curve": [ 1.168, -4.55, 1.332, -1.6 ] - }, - { - "time": 1.3667, - "value": 1.79, - "curve": [ 1.408, 5.92, 1.502, 36.79 ] - }, - { - "time": 1.5667, - "value": 36.4, - "curve": [ 1.685, 35.7, 1.9, 31.04 ] - }, - { - "time": 1.9333, - "value": 27.25, - "curve": [ 1.999, 19.84, 2.083, 0 ] - }, - { "time": 2.1333 } - ] - }, - "back-arm1": { - "rotate": [ - { - "curve": [ 0.042, 0, 0.056, 24.8 ] - }, - { - "time": 0.1667, - "value": 25.18, - "curve": [ 0.301, 25.64, 0.566, 11.56 ] - }, - { - "time": 0.6333, - "value": -5.85, - "curve": [ 0.672, -16, 0.707, -25.63 ] - }, - { - "time": 0.8, - "value": -25.79, - "curve": [ 0.975, -25.79, 1.295, -26.78 ] - }, - { - "time": 1.5, - "value": -12.94, - "curve": [ 1.564, -8.58, 1.825, 13.78 ] - }, - { - "time": 1.9333, - "value": 13.78, - "curve": [ 1.983, 13.78, 2.083, 0 ] - }, - { "time": 2.1333 } - ] - }, - "neck": { - "rotate": [ - { - "curve": [ 0.05, 0, 0.114, -8.5 ] - }, - { - "time": 0.2, - "value": -8.26, - "curve": [ 0.29, -8.01, 0.537, 12.55 ] - }, - { - "time": 0.6333, - "value": 13.44, - "curve": [ 0.766, 14.68, 1.273, 2.13 ] - }, - { - "time": 1.4667, - "value": -3.5, - "curve": [ 1.565, -6.92, 1.656, -11.02 ] - }, - { - "time": 1.7, - "value": -10.74, - "curve": [ 1.788, -10.19, 1.852, 2.74 ] - }, - { - "time": 1.9333, - "value": 2.88, - "curve": [ 1.992, 2.98, 2.083, 0 ] - }, - { "time": 2.1333 } - ], - "translate": [ - { - "curve": [ 0.05, 0, 0.15, -20.09, 0.05, 0, 0.174, -0.26 ] - }, - { - "time": 0.2, - "x": -19.98, - "y": -1.45, - "curve": [ 0.312, -19.75, 0.463, 34.4, 0.264, -4.43, 0.474, -34.98 ] - }, - { - "time": 0.6, - "x": 34.3, - "y": -34.87, - "curve": [ 0.672, 34.26, 0.742, 30.02, 0.638, -34.83, 0.742, -21.32 ] - }, - { - "time": 0.8, - "x": 30.02, - "y": -21.32, - "curve": [ 0.842, 30.02, 0.992, 37.66, 0.842, -21.32, 0.992, -41.18 ] - }, - { - "time": 1.0333, - "x": 37.66, - "y": -41.18, - "curve": [ 1.083, 37.66, 1.183, 23.6, 1.083, -41.18, 1.183, -0.63 ] - }, - { - "time": 1.2333, - "x": 23.6, - "y": -0.63, - "curve": [ 1.292, 23.6, 1.408, 26.3, 1.292, -0.63, 1.408, -26.62 ] - }, - { - "time": 1.4667, - "x": 26.3, - "y": -26.62, - "curve": [ 1.581, 26.3, 1.618, 17.21, 1.5, -26.62, 1.675, 3.64 ] - }, - { - "time": 1.7, - "x": 12.18, - "y": 3.64, - "curve": [ 1.773, 7.71, 1.87, 4.4, 1.758, 3.64, 1.875, -4.9 ] - }, - { - "time": 1.9333, - "x": 2.83, - "y": -4.9, - "curve": [ 2.001, 1.15, 2.083, 0, 1.983, -4.9, 2.083, 0 ] - }, - { "time": 2.1333 } - ] - }, - "head": { - "rotate": [ - { - "curve": [ 0.001, -4.96, 0.05, -6.66 ] - }, - { - "time": 0.0667, - "value": -6.57, - "curve": [ 0.211, -5.81, 0.176, 34.04 ] - }, - { - "time": 0.2667, - "value": 33.65, - "curve": [ 0.335, 33.7, 0.454, 12.93 ] - }, - { - "time": 0.5, - "value": 3.37, - "curve": [ 0.539, -4.68, 0.547, -11.66 ] - }, - { - "time": 0.6, - "value": -12.11, - "curve": [ 0.645, -11.69, 0.602, 31.75 ] - }, - { - "time": 0.8, - "value": 31.51, - "curve": [ 0.85, 31.51, 0.917, 25.3 ] - }, - { - "time": 0.9667, - "value": 25.3, - "curve": [ 1.075, 25.3, 1.392, 27.9 ] - }, - { - "time": 1.5, - "value": 27.9, - "curve": [ 1.55, 27.9, 1.717, -5.14 ] - }, - { - "time": 1.8, - "value": -4.51, - "curve": [ 1.861, -4.19, 1.949, 4.07 ] - }, - { - "time": 2.0333, - "value": 4.18, - "curve": [ 2.087, 4.25, 2.096, 2.99 ] - }, - { "time": 2.1333 } - ], - "translate": [ - { - "curve": [ 0.05, 0, 0.15, 22.58, 0.05, 0, 0.154, -41.07 ] - }, - { - "time": 0.2, - "x": 22.75, - "y": -41.48, - "curve": [ 0.3, 23.09, 0.336, -13.2, 0.329, -42.63, 0.356, 19.91 ] - }, - { - "time": 0.5667, - "x": -12.04, - "y": 21.07, - "curve": [ 0.643, -12.24, 0.681, 19.67, 0.625, 21.26, 0.615, -90.96 ] - }, - { - "time": 0.7, - "x": 20.1, - "y": -90.36, - "curve": [ 0.718, 20.5, 0.75, 16.57, 0.738, -90.33, 0.75, -87.92 ] - }, - { - "time": 0.7667, - "x": 16.57, - "y": -87.92, - "curve": [ 0.783, 16.57, 0.817, 18.74, 0.783, -87.92, 0.817, -87.42 ] - }, - { - "time": 0.8333, - "x": 18.74, - "y": -87.42, - "curve": [ 0.85, 18.74, 0.883, 16.57, 0.85, -87.42, 0.883, -87.92 ] - }, - { - "time": 0.9, - "x": 16.57, - "y": -87.92, - "curve": [ 0.917, 16.57, 0.95, 18.74, 0.917, -87.92, 0.95, -87.42 ] - }, - { - "time": 0.9667, - "x": 18.74, - "y": -87.42, - "curve": [ 1.075, 18.74, 1.392, 27.31, 1.075, -87.42, 1.392, -84.9 ] - }, - { - "time": 1.5, - "x": 27.31, - "y": -84.9, - "curve": [ 1.554, 27.31, 1.605, -22.6, 1.512, -84.9, 1.575, -102.53 ] - }, - { - "time": 1.7, - "x": -22.58, - "y": -89.06, - "curve": [ 1.812, -23.81, 1.863, 9.94, 1.841, -71.22, 1.847, 11.93 ] - }, - { - "time": 1.9667, - "x": 10.77, - "y": 13.35, - "curve": [ 2.028, 11.26, 2.065, -0.88, 2.032, 14.12, 2.082, 7.52 ] - }, - { "time": 2.1333 } - ], - "shear": [ - { - "time": 0.6333, - "curve": [ 0.654, 0, 0.67, -0.13, 0.654, 0, 0.676, 0 ] - }, - { - "time": 0.7, - "x": -0.56, - "curve": [ 0.721, -0.86, 0.744, -1.24, 0.721, 0, 0.744, 0 ] - }, - { - "time": 0.7667, - "x": -1.24, - "curve": [ 0.788, -1.24, 0.819, -0.69, 0.788, 0, 0.811, 0 ] - }, - { - "time": 0.8333, - "x": -0.47, - "curve": [ 0.88, 0.25, 0.901, 0.43, 0.866, 0, 0.9, 0 ] - }, - { - "time": 0.9333, - "x": 0.43, - "curve": [ 0.975, 0.44, 1.017, -0.47, 1, 0, 1.068, 0 ] - }, - { - "time": 1.1333, - "x": -0.46, - "curve": [ 1.202, -0.44, 1.282, -0.01, 1.216, 0, 1.462, 0 ] - }, - { "time": 1.5 } - ] - }, - "jaw": { - "rotate": [ - { - "value": -1.2, - "curve": [ 0.05, -1.2, 0.158, 0.54 ] - }, - { - "time": 0.2, - "value": 1.83, - "curve": [ 0.273, 4.06, 0.417, 15.63 ] - }, - { - "time": 0.4667, - "value": 14.47, - "curve": [ 0.652, 10.18, 0.592, -68.7 ] - }, - { - "time": 0.6667, - "value": -68.7, - "curve": [ 0.731, -68.52, 0.767, -42.64 ] - }, - { - "time": 0.8, - "value": -42.45, - "curve": [ 0.808, -42.45, 0.801, -43.41 ] - }, - { - "time": 0.8333, - "value": -43.55, - "curve": [ 0.858, -43.55, 0.906, -39.81 ] - }, - { - "time": 0.9333, - "value": -39.73, - "curve": [ 0.956, -39.65, 1.013, -42.1 ] - }, - { - "time": 1.0333, - "value": -42.02, - "curve": [ 1.06, -41.91, 1.083, -35.38 ] - }, - { - "time": 1.1333, - "value": -35.34, - "curve": [ 1.169, -35.32, 1.22, -36.84 ] - }, - { - "time": 1.2667, - "value": -36.74, - "curve": [ 1.372, -36.31, 1.542, 1.5 ] - }, - { - "time": 1.6, - "value": -3.58, - "curve": [ 1.62, -3.98, 1.647, -9.02 ] - }, - { - "time": 1.7, - "value": -8.79, - "curve": [ 1.748, -8.74, 1.823, 3.7 ] - }, - { - "time": 1.9333, - "value": 4.73, - "curve": [ 1.951, 5.04, 1.975, -1.14 ] - }, - { - "time": 2, - "value": -1.34, - "curve": [ 2.048, -1.72, 2.1, -1.2 ] - }, - { "time": 2.1333, "value": -1.2 } - ], - "translate": [ - { - "x": -3.44, - "y": 2.51, - "curve": [ 0.111, -3.74, 0.391, -39.94, 0.155, 4.09, 0.297, -2.98 ] - }, - { - "time": 0.4667, - "x": -56.45, - "y": -10.08, - "curve": [ 0.527, -69.24, 0.561, -75.25, 0.577, -15.37, 0.551, -15.25 ] - }, - { - "time": 0.6, - "x": -74.43, - "y": -14.69, - "curve": [ 0.634, -74.95, 0.624, -60.95, 0.641, -14.11, 0.65, 23.07 ] - }, - { - "time": 0.6667, - "x": -53.45, - "y": 23.07, - "curve": [ 0.759, -37.12, 1.392, -28.49, 0.892, 23.07, 1.375, 19.61 ] - }, - { - "time": 1.6, - "x": -21.33, - "y": 16.78, - "curve": [ 1.762, -15.77, 1.825, -8.47, 1.625, 16.47, 1.78, 6.33 ] - }, - { - "time": 1.8667, - "x": -8.47, - "y": -3.77, - "curve": [ 1.9, -8.47, 1.967, -15.38, 1.914, -8.24, 1.967, -10.85 ] - }, - { - "time": 2, - "x": -15.38, - "y": -10.85, - "curve": [ 2.033, -15.38, 2.1, -3.44, 2.033, -10.85, 2.1, 2.51 ] - }, - { "time": 2.1333, "x": -3.44, "y": 2.51 } - ], - "scale": [ - { - "time": 0.5667, - "curve": [ 0.594, 1, 0.621, 0.956, 0.601, 1, 0.621, 1.058 ] - }, - { - "time": 0.6333, - "x": 0.956, - "y": 1.058, - "curve": [ 0.646, 0.956, 0.639, 0.994, 0.646, 1.058, 0.642, 1.02 ] - }, - { "time": 0.7 } - ], - "shear": [ - { - "time": 0.2333, - "curve": [ 0.283, 0, 0.361, -0.05, 0.283, 0, 0.405, -0.25 ] - }, - { - "time": 0.4333, - "x": 0.04, - "y": -0.47, - "curve": [ 0.498, 0.13, 0.57, 0.57, 0.485, -0.88, 0.533, -2.91 ] - }, - { - "time": 0.6333, - "x": 0.55, - "y": -2.91, - "curve": [ 0.702, 0.53, 0.717, 0.33, 0.68, -2.87, 0.748, -2.09 ] - }, - { - "time": 0.8, - "x": 0.2, - "y": -1.59, - "curve": [ 0.897, 0.05, 1.025, 0, 0.862, -0.98, 1.025, 0 ] - }, - { "time": 1.1333 } - ] - }, - "tongue1": { - "rotate": [ - { - "value": 16.25, - "curve": [ 0.05, 16.25, 0.197, 16.24 ] - }, - { - "time": 0.2, - "value": 15.93, - "curve": [ 0.244, 10.93, 0.33, -0.69 ] - }, - { - "time": 0.3667, - "value": -0.58, - "curve": [ 0.432, -0.37, 0.481, 1.4 ] - }, - { - "time": 0.5333, - "value": 5.31, - "curve": [ 0.541, 5.85, 0.57, 25.11 ] - }, - { - "time": 0.6, - "value": 28.2, - "curve": [ 0.611, 29.32, 0.623, 14.35 ] - }, - { - "time": 0.6333, - "value": 15.32, - "curve": [ 0.661, 17.81, 0.683, 18.19 ] - }, - { - "time": 0.7, - "value": 18.19, - "curve": [ 0.733, 18.19, 0.8, 13.38 ] - }, - { - "time": 0.8333, - "value": 13.38, - "curve": [ 0.867, 13.38, 0.937, 14.84 ] - }, - { - "time": 0.9667, - "value": 15.71, - "curve": [ 1.019, 17.29, 1.045, 19.01 ] - }, - { - "time": 1.0667, - "value": 20.57, - "curve": [ 1.084, 21.85, 1.148, 23.51 ] - }, - { - "time": 1.1667, - "value": 23.29, - "curve": [ 1.22, 22.66, 1.242, 16.58 ] - }, - { - "time": 1.2667, - "value": 16.58, - "curve": [ 1.283, 16.58, 1.327, 19.6 ] - }, - { - "time": 1.3333, - "value": 19.86, - "curve": [ 1.376, 21.73, 1.408, 22.44 ] - }, - { - "time": 1.4333, - "value": 22.44, - "curve": [ 1.458, 22.44, 1.481, 19.06 ] - }, - { - "time": 1.5333, - "value": 19.01, - "curve": [ 1.575, 18.98, 1.656, 22.9 ] - }, - { - "time": 1.7, - "value": 22.93, - "curve": [ 1.776, 22.99, 1.875, 16.25 ] - }, - { "time": 1.9333, "value": 16.25 } - ], - "translate": [ - { "x": -22.37, "y": 13.32 } - ], - "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 } - ] - }, - "torso1": { - "rotate": [ - { - "curve": [ 0.029, 0, 0.036, -1.4 ] - }, - { - "time": 0.1, - "value": -1.41, - "curve": [ 0.143, -1.42, 0.287, 10.8 ] - }, - { - "time": 0.3333, - "value": 10.73, - "curve": [ 0.479, 10.51, 0.531, 6.79 ] - }, - { - "time": 0.6, - "curve": [ 0.624, -2.59, 0.679, -4.75 ] - }, - { - "time": 0.7, - "value": -4.9, - "curve": [ 0.723, -5.06, 0.75, -2.6 ] - }, - { - "time": 0.7667, - "value": -2.6, - "curve": [ 0.783, -2.6, 0.814, -4.72 ] - }, - { - "time": 0.8333, - "value": -4.7, - "curve": [ 0.858, -4.67, 0.857, -1.2 ] - }, - { - "time": 0.9, - "value": -1.13, - "curve": [ 0.926, -1.09, 1, -3.27 ] - }, - { - "time": 1.0333, - "value": -3.27, - "curve": [ 1.061, -3.27, 1.1, 0.25 ] - }, - { - "time": 1.1333, - "value": 0.24, - "curve": [ 1.179, 0.23, 1.199, -1.36 ] - }, - { - "time": 1.2333, - "value": -1.36, - "curve": [ 1.295, -1.36, 1.29, 1.49 ] - }, - { - "time": 1.3667, - "value": 1.47, - "curve": [ 1.409, 1.46, 1.464, -1.37 ] - }, - { - "time": 1.5, - "value": -1.36, - "curve": [ 1.607, -1.3, 1.754, 1.39 ] - }, - { - "time": 1.9667, - "value": 1.36, - "curve": [ 2.008, 1.36, 2.092, 0 ] - }, - { "time": 2.1333 } - ] - }, - "horn-back": { - "rotate": [ - { "time": 0.2 }, - { "time": 1.0333, "value": 7.62 }, - { "time": 1.9333 } - ], - "translate": [ - { - "time": 1.6667, - "curve": [ 1.708, 0, 1.792, 19.83, 1.708, 0, 1.792, 22.59 ] - }, - { - "time": 1.8333, - "x": 19.83, - "y": 22.59, - "curve": [ 1.908, 19.83, 2.058, 0, 1.908, 22.59, 2.058, 0 ] - }, - { "time": 2.1333 } - ] - }, - "horn-front": { - "rotate": [ - { - "curve": [ 0.018, 0, 0.052, 0.73 ] - }, - { - "time": 0.0667, - "value": 1.73, - "curve": [ 0.084, 2.92, 0.1, 4.72 ] - }, - { - "time": 0.1333, - "value": 4.95, - "curve": [ 0.162, 5.16, 0.187, 4.3 ] - }, - { - "time": 0.2, - "value": 3.89, - "curve": [ 0.289, 0.95, 0.477, -6.85 ] - }, - { - "time": 0.6667, - "value": -6.06, - "curve": [ 0.809, -5.49, 0.953, -3.36 ] - }, - { - "time": 1.0333, - "value": -2.66, - "curve": [ 1.255, -0.73, 1.708, 0 ] - }, - { "time": 1.9333 } - ], - "translate": [ - { "time": 1.4667 }, - { "time": 1.9, "x": 5.8, "y": -14.31 }, - { "time": 2.0333, "x": 7.96, "y": -4.52 }, - { "time": 2.1333 } - ] - }, - "front-leg-target": { - "rotate": [ - { "value": -0.31 } - ], - "translate": [ - { - "curve": [ 0.138, 0.68, 0.144, 63.75, 0.092, 0, 0.15, 21.48 ] - }, - { - "time": 0.2, - "x": 63.06, - "y": 22.03, - "curve": [ 0.315, 61.65, 0.292, -25.03, 0.315, 23.29, 0.356, -56.94 ] - }, - { - "time": 0.5, - "x": -29.09, - "y": -56.75, - "curve": [ 0.601, -31.05, 0.583, 104.34, 0.589, -56.64, 0.583, 47.28 ] - }, - { "time": 0.7, "x": 104.34, "y": 47.28 }, - { - "time": 1.3667, - "x": 106.2, - "y": 47.7, - "curve": [ 1.538, 105.92, 1.633, 88.98, 1.552, 49.6, 1.633, 40.88 ] - }, - { - "time": 1.7333, - "x": 49.5, - "y": 28.71, - "curve": [ 1.842, 7.01, 2.025, -0.54, 1.842, 15.61, 2.025, 0 ] - }, - { "time": 2.1333 } - ] - }, - "back-leg-target": { - "translate": [ - {}, - { "time": 0.2, "x": 5.58, "y": 4.02 }, - { - "time": 0.4667, - "x": -39.15, - "y": -10.18, - "curve": [ 0.512, -15.45, 0.563, 1.22, 0.512, 9.94, 0.563, 28.79 ] - }, - { "time": 0.6333, "x": 17.09, "y": 42.26 }, - { "time": 0.7333, "x": 30.54, "y": 59.35 }, - { - "time": 1.4667, - "x": 31.18, - "y": 60.17, - "curve": [ 1.567, 24.16, 1.607, 12.61, 1.564, 55.67, 1.613, 36.27 ] - }, - { "time": 1.6667, "x": -19.04, "y": -0.52 }, - { "time": 2.1333 } - ] - }, - "spineboy-hip": { - "rotate": [ - { - "curve": [ 0.025, 0, 0.075, 10.98 ] - }, - { - "time": 0.1, - "value": 10.98, - "curve": [ 0.157, 10.98, 0.238, 8.08 ] - }, - { - "time": 0.3333, - "value": 8.02, - "curve": [ 0.391, 7.98, 0.432, 11.76 ] - }, - { - "time": 0.4667, - "value": 11.66, - "curve": [ 0.491, 11.58, 0.504, 11.4 ] - }, - { - "time": 0.5333, - "value": 7.39, - "curve": [ 0.577, 1.45, 0.627, -5.5 ] - }, - { - "time": 0.7, - "value": -7.47, - "curve": [ 0.821, -10.75, 0.917, -11.16 ] - }, - { - "time": 1, - "value": -11.16, - "curve": [ 1.13, -11.16, 1.359, 3.64 ] - }, - { - "time": 1.5333, - "value": 3.43, - "curve": [ 1.603, 3.89, 1.637, -25.96 ] - }, - { - "time": 1.7, - "value": -25.96, - "curve": [ 1.811, -26.33, 1.881, 9.15 ] - }, - { - "time": 1.9667, - "value": 9.05, - "curve": [ 2.034, 8.97, 2.092, 0 ] - }, - { "time": 2.1333 } - ], - "translate": [ - { - "curve": [ 0.025, 0, 0.075, -3.14, 0.025, 0, 0.075, 4.23 ] - }, - { - "time": 0.1, - "x": -2.69, - "y": 4.23, - "curve": [ 0.131, -2.14, 0.167, 3.27, 0.125, 4.23, 0.183, -2.98 ] - }, - { - "time": 0.2, - "x": 17.13, - "y": -6.44, - "curve": [ 0.214, 22.78, 0.275, 27.63, 0.235, -13.6, 0.274, -24.33 ] - }, - { - "time": 0.3, - "x": 27.63, - "y": -24.78, - "curve": [ 0.342, 27.63, 0.425, 23.61, 0.349, -25.62, 0.441, -8.74 ] - }, - { - "time": 0.4667, - "x": 23.61, - "y": -8.32, - "curve": [ 0.483, 23.61, 0.508, 20.92, 0.486, -7.99, 0.508, -37.58 ] - }, - { - "time": 0.5333, - "x": 35.42, - "y": -44.36, - "curve": [ 0.551, 45.68, 0.608, 70.81, 0.569, -53.86, 0.616, -66.98 ] - }, - { - "time": 0.6333, - "x": 70.81, - "y": -72.81, - "curve": [ 0.65, 70.81, 0.679, 65.64, 0.648, -77.73, 0.671, -76.48 ] - }, - { - "time": 0.7, - "x": 62.91, - "y": -76.91, - "curve": [ 0.725, 59.54, 0.775, 59.86, 0.73, -77.35, 0.775, -54.3 ] - }, - { - "time": 0.8, - "x": 59.86, - "y": -54.3, - "curve": [ 0.825, 59.86, 0.867, 59.93, 0.825, -54.3, 0.865, -55.33 ] - }, - { - "time": 0.9, - "x": 60.79, - "y": -56.69, - "curve": [ 0.946, 62, 0.962, 62.29, 0.923, -57.6, 0.951, -57.62 ] - }, - { - "time": 1, - "x": 63.78, - "y": -57.73, - "curve": [ 1.038, 65.26, 1.106, 68.28, 1.058, -57.86, 1.1, -57.63 ] - }, - { - "time": 1.1333, - "x": 69.44, - "y": -57.41, - "curve": [ 1.217, 72.97, 1.333, 77.13, 1.226, -56.82, 1.316, -55.55 ] - }, - { - "time": 1.4, - "x": 77.13, - "y": -53.65, - "curve": [ 1.433, 77.13, 1.467, 73.12, 1.437, -52.82, 1.492, -50.91 ] - }, - { - "time": 1.5333, - "x": 63.41, - "y": -49.52, - "curve": [ 1.549, 61.17, 1.597, 46.67, 1.576, -48.09, 1.599, -47.25 ] - }, - { - "time": 1.6333, - "x": 38.86, - "y": -45.65, - "curve": [ 1.687, 27.26, 1.722, 20.8, 1.677, -43.62, 1.71, -40.67 ] - }, - { - "time": 1.7333, - "x": 19.46, - "y": -38, - "curve": [ 1.803, 11.67, 1.885, 5.59, 1.758, -35.11, 1.888, -14.53 ] - }, - { - "time": 1.9333, - "x": 4.11, - "y": -7.78, - "curve": [ 2.006, 1.87, 2.083, 0, 1.96, -3.77, 2.083, 0 ] - }, - { "time": 2.1333 } - ] - }, - "front-hand2": { - "rotate": [ - {}, - { "time": 0.2, "value": -21.93 }, - { "time": 0.3, "value": -23.29 }, - { "time": 0.4333, "value": -29.8 }, - { "time": 0.5333, "value": -36.62 }, - { "time": 0.6333, "value": -40.49 }, - { "time": 0.7, "value": -38.28 }, - { "time": 0.7667, "value": -33.33 }, - { "time": 0.8333, "value": -28.06 }, - { "time": 1.4333, "value": -27.17 }, - { "time": 1.5333, "value": -27.62 }, - { "time": 1.7 } - ] - }, - "spineboy-front-arm-target": { - "translate": [ - {}, - { "time": 0.0667, "x": 1.11, "y": -2.35 }, - { "time": 0.3, "x": 21.56, "y": -45.67 }, - { "time": 0.5667, "x": 2.23, "y": -34.98 }, - { "time": 0.7333, "x": 28.52, "y": -47.75 }, - { "time": 0.8333, "x": 24.52, "y": -37.92 }, - { "time": 1.5, "x": 26.24, "y": -38.24 }, - { "time": 1.7, "x": -9.39, "y": -0.72 }, - { "time": 1.8667, "x": 1.03, "y": -21.86 }, - { "time": 2.1333 } - ] - }, - "gun": { - "rotate": [ - { - "curve": [ 0.025, 0, 0.075, -16.45 ] - }, - { - "time": 0.1, - "value": -16.38, - "curve": [ 0.186, -16.14, 0.268, -2.86 ] - }, - { - "time": 0.3, - "value": -2.83, - "curve": [ 0.342, -2.79, 0.427, -27.51 ] - }, - { - "time": 0.4333, - "value": -29.46, - "curve": [ 0.508, -53.36, 0.613, -60.85 ] - }, - { - "time": 0.6333, - "value": -60.92, - "curve": [ 0.711, -61.15, 0.734, -27.93 ] - }, - { - "time": 0.7667, - "value": -23.27, - "curve": [ 0.785, -20.65, 0.852, -13.39 ] - }, - { - "time": 0.9, - "value": -13.36, - "curve": [ 0.952, -13.33, 1.002, -20.79 ] - }, - { - "time": 1.0333, - "value": -20.87, - "curve": [ 1.206, -21.35, 1.432, -17.1 ] - }, - { - "time": 1.5, - "value": -14.02, - "curve": [ 1.549, -11.78, 1.65, 15.4 ] - }, - { - "time": 1.7, - "value": 15.4, - "curve": [ 1.733, 15.4, 1.8, 9.7 ] - }, - { - "time": 1.8333, - "value": 2.78, - "curve": [ 1.875, -5.94, 1.908, -25.4 ] - }, - { - "time": 1.9333, - "value": -25.23, - "curve": [ 2.015, -24.66, 2.108, 0 ] - }, - { "time": 2.1333 } - ], - "translate": [ - { - "time": 0.2, - "curve": [ 0.308, 0, 0.525, -18.37, 0.308, 0, 0.525, -9.19 ] - }, - { - "time": 0.6333, - "x": -18.37, - "y": -9.19, - "curve": [ 0.9, -18.37, 1.433, 0, 0.9, -9.19, 1.433, 0 ] - }, - { "time": 1.7 } - ] - }, - "tail1": { - "rotate": [ - { - "curve": [ 0.098, 0.13, 0.204, -14.76 ] - }, - { - "time": 0.2667, - "value": -14.69, - "curve": [ 0.453, -14.49, 0.578, 19.55 ] - }, - { - "time": 0.9333, - "value": 19.85, - "curve": [ 1.08, 19.98, 1.328, 16.46 ] - }, - { - "time": 1.4333, - "value": 9.05, - "curve": [ 1.532, 2.13, 1.565, -5.76 ] - }, - { - "time": 1.7, - "value": -5.74, - "curve": [ 1.739, -5.73, 1.771, 1.08 ] - }, - { - "time": 1.8, - "value": 1.06, - "curve": [ 1.853, 1.04, 1.956, -1.66 ] - }, - { - "time": 2, - "value": -1.81, - "curve": [ 2.039, -1.95, 2.08, -0.07 ] - }, - { "time": 2.1333 } - ] - }, - "tail3": { - "rotate": [ - { - "value": -4.66, - "curve": [ 0.053, -3.48, 0.21, 0.22 ] - }, - { - "time": 0.2667, - "value": 0.23, - "curve": [ 0.331, 0.24, 0.337, -16.21 ] - }, - { - "time": 0.4333, - "value": -16.22, - "curve": [ 0.521, -16.24, 0.565, -5.72 ] - }, - { - "time": 0.6667, - "value": -5.73, - "curve": [ 0.743, -5.73, 0.805, -9.29 ] - }, - { - "time": 0.8333, - "value": -9.89, - "curve": [ 0.878, -10.85, 0.93, -11.71 ] - }, - { - "time": 1, - "value": -11.85, - "curve": [ 1.032, -11.91, 1.065, -10.91 ] - }, - { - "time": 1.1, - "value": -10.92, - "curve": [ 1.142, -10.93, 1.19, -11.14 ] - }, - { - "time": 1.2333, - "value": -11.21, - "curve": [ 1.268, -11.27, 1.296, -10.85 ] - }, - { - "time": 1.3333, - "value": -10.84, - "curve": [ 1.389, -10.83, 1.422, -12.91 ] - }, - { - "time": 1.4667, - "value": -12.9, - "curve": [ 1.523, -12.89, 1.594, 0.83 ] - }, - { - "time": 1.6667, - "value": 0.91, - "curve": [ 1.722, 0.97, 1.763, -1.01 ] - }, - { - "time": 1.8, - "value": -2.92, - "curve": [ 1.837, -4.84, 1.889, -7.19 ] - }, - { - "time": 1.9667, - "value": -7.21, - "curve": [ 2.039, -7.24, 2.081, -5.7 ] - }, - { "time": 2.1333, "value": -4.66 } - ] - }, - "tail5": { - "rotate": [ - { - "value": 5.3, - "curve": [ 0.036, 7.51, 0.233, 22.33 ] - }, - { - "time": 0.2667, - "value": 22.33, - "curve": [ 0.325, 22.33, 0.414, -17.46 ] - }, - { - "time": 0.5, - "value": -17.34, - "curve": [ 0.554, -17.27, 0.622, -8.56 ] - }, - { - "time": 0.6667, - "value": -3.3, - "curve": [ 0.68, -1.76, 0.718, 2.89 ] - }, - { - "time": 0.8, - "value": 2.99, - "curve": [ 0.87, 3.07, 0.878, -6.27 ] - }, - { - "time": 0.9333, - "value": -6.3, - "curve": [ 0.953, -6.31, 1.022, -0.18 ] - }, - { - "time": 1.0667, - "value": -0.19, - "curve": [ 1.141, -0.21, 1.247, -1.67 ] - }, - { - "time": 1.3333, - "value": -1.68, - "curve": [ 1.445, -1.69, 1.533, 6.2 ] - }, - { - "time": 1.6333, - "value": 6.15, - "curve": [ 1.783, 6.09, 1.796, 2.3 ] - }, - { - "time": 1.9333, - "value": 2.27, - "curve": [ 2.022, 2.41, 2.09, 3.96 ] - }, - { "time": 2.1333, "value": 5.3 } - ] - }, - "tail7": { - "rotate": [ - { - "value": -10.89, - "curve": [ 0.024, -9.39, 0.083, 2.54 ] - }, - { - "time": 0.1, - "value": 5.38, - "curve": [ 0.12, 8.69, 0.201, 19.39 ] - }, - { - "time": 0.2667, - "value": 19.39, - "curve": [ 0.326, 19.38, 0.373, 10.75 ] - }, - { - "time": 0.4, - "value": 6.64, - "curve": [ 0.425, 2.85, 0.527, -17.3 ] - }, - { - "time": 0.6, - "value": -17.31, - "curve": [ 0.729, -17.34, 0.751, 6.3 ] - }, - { - "time": 0.8, - "value": 6.38, - "curve": [ 0.868, 6.5, 0.914, -11.69 ] - }, - { - "time": 0.9667, - "value": -11.4, - "curve": [ 0.995, -11.24, 1.044, -1.32 ] - }, - { - "time": 1.1, - "value": -1.44, - "curve": [ 1.143, -1.54, 1.18, -10.37 ] - }, - { - "time": 1.2667, - "value": -10.23, - "curve": [ 1.295, -10.19, 1.34, -3.84 ] - }, - { - "time": 1.4333, - "value": -4.1, - "curve": [ 1.553, -4.43, 1.585, -16.61 ] - }, - { - "time": 1.6333, - "value": -16.61, - "curve": [ 1.688, -16.61, 1.696, 23.74 ] - }, - { - "time": 1.7333, - "value": 23.71, - "curve": [ 1.798, 23.66, 1.87, 16.5 ] - }, - { - "time": 1.9, - "value": 10.29, - "curve": [ 1.923, 5.57, 1.978, -13.06 ] - }, - { - "time": 2.0667, - "value": -13.03, - "curve": [ 2.081, -13.06, 2.106, -12.38 ] - }, - { "time": 2.1333, "value": -10.89 } - ] - }, - "tail9": { - "rotate": [ - { - "value": -10.89, - "curve": [ 0.033, -10.89, 0.109, -16.1 ] - }, - { - "time": 0.1667, - "value": -15.69, - "curve": [ 0.2, -15.45, 0.263, 24 ] - }, - { - "time": 0.3, - "value": 23.95, - "curve": [ 0.341, 23.91, 0.38, 20.42 ] - }, - { - "time": 0.4, - "value": 13.72, - "curve": [ 0.436, 1.64, 0.469, -22.42 ] - }, - { - "time": 0.5667, - "value": -22.06, - "curve": [ 0.592, -21.97, 0.619, -12.65 ] - }, - { - "time": 0.6333, - "value": -12.97, - "curve": [ 0.649, -13.32, 0.672, -23.19 ] - }, - { - "time": 0.7333, - "value": -23.77, - "curve": [ 0.753, -23.95, 0.784, 18.1 ] - }, - { - "time": 0.8333, - "value": 18.04, - "curve": [ 0.896, 17.97, 0.968, -8.44 ] - }, - { - "time": 1.0667, - "value": -8.3, - "curve": [ 1.102, -8.25, 1.147, 1.32 ] - }, - { - "time": 1.2, - "value": 1.29, - "curve": [ 1.225, 1.28, 1.264, -9.04 ] - }, - { - "time": 1.3333, - "value": -9.07, - "curve": [ 1.359, -9.08, 1.367, -0.8 ] - }, - { - "time": 1.4, - "value": -0.93, - "curve": [ 1.45, -1.14, 1.485, -13.55 ] - }, - { - "time": 1.5333, - "value": -13.67, - "curve": [ 1.589, -13.81, 1.592, -4.95 ] - }, - { - "time": 1.6333, - "value": -4.9, - "curve": [ 1.659, -4.87, 1.672, -6.82 ] - }, - { - "time": 1.7, - "value": -6.85, - "curve": [ 1.732, -6.89, 1.741, 23.58 ] - }, - { - "time": 1.8, - "value": 23.61, - "curve": [ 1.855, 23.65, 1.942, -2.54 ] - }, - { - "time": 1.9667, - "value": -7.74, - "curve": [ 1.979, -10.39, 2.03, -19.23 ] - }, - { - "time": 2.0667, - "value": -19.56, - "curve": [ 2.092, -19.79, 2.116, -10.89 ] - }, - { "time": 2.1333, "value": -10.89 } - ] - }, - "tongue2": { - "rotate": [ - { - "curve": [ 0.042, 0, 0.192, -3.18 ] - }, - { - "time": 0.2, - "value": -3.18, - "curve": [ 0.217, -3.18, 0.25, 52.29 ] - }, - { - "time": 0.2667, - "value": 52.29, - "curve": [ 0.333, 52.29, 0.506, 33.61 ] - }, - { - "time": 0.5333, - "value": 17.71, - "curve": [ 0.545, 10.61, 0.575, -38.38 ] - }, - { - "time": 0.6, - "value": -63.26, - "curve": [ 0.613, -75.71, 0.625, -74.25 ] - }, - { - "time": 0.6333, - "value": -74.25, - "curve": [ 0.65, -74.25, 0.666, -50.57 ] - }, - { - "time": 0.7, - "value": -42.92, - "curve": [ 0.715, -39.42, 0.803, -33.62 ] - }, - { - "time": 0.8333, - "value": -32.97, - "curve": [ 0.884, -31.92, 0.934, -31.56 ] - }, - { - "time": 0.9667, - "value": -31.29, - "curve": [ 1.012, -30.9, 1.051, -29.92 ] - }, - { - "time": 1.0667, - "value": -28.95, - "curve": [ 1.105, -26.65, 1.142, -20.34 ] - }, - { - "time": 1.1667, - "value": -20.34, - "curve": [ 1.192, -20.34, 1.242, -24.26 ] - }, - { - "time": 1.2667, - "value": -24.26, - "curve": [ 1.283, -24.26, 1.317, -19.87 ] - }, - { - "time": 1.3333, - "value": -19.87, - "curve": [ 1.358, -19.87, 1.428, -21.71 ] - }, - { - "time": 1.4333, - "value": -22.11, - "curve": [ 1.481, -25.54, 1.508, -36.17 ] - }, - { - "time": 1.5333, - "value": -36.17, - "curve": [ 1.575, -36.17, 1.648, -17.58 ] - }, - { - "time": 1.7, - "value": -13.32, - "curve": [ 1.748, -9.35, 1.861, -3.44 ] - }, - { - "time": 1.9333, - "value": -1.54, - "curve": [ 1.975, -0.45, 2.083, 0 ] - }, - { "time": 2.1333 } - ], - "translate": [ - { - "time": 0.2, - "curve": [ 0.283, 0, 0.423, -0.54, 0.283, 0, 0.435, 0.96 ] - }, - { - "time": 0.5333, - "x": 6.19, - "y": 1.39, - "curve": [ 0.567, 8.27, 0.633, 45.26, 0.555, 1.49, 0.62, 1.67 ] - }, - { - "time": 0.6667, - "x": 57.07, - "y": 1.67, - "curve": [ 0.706, 70.68, 0.76, 94.14, 0.729, 1.67, 0.764, 1.67 ] - }, - { - "time": 0.8333, - "x": 94.09, - "y": 1.67, - "curve": [ 1.21, 93.82, 1.098, 7.05, 1.195, 1.67, 1.676, 1.67 ] - }, - { - "time": 1.9333, - "x": 6.19, - "y": 1.67, - "curve": [ 1.983, 6.14, 2.083, 0, 1.983, 1.67, 2.083, 0 ] - }, - { "time": 2.1333 } - ] - }, - "tongue3": { - "rotate": [ - { - "curve": [ 0.042, 0, 0.142, -1.29 ] - }, - { - "time": 0.2, - "value": 4.21, - "curve": [ 0.209, 5.09, 0.25, 52.29 ] - }, - { - "time": 0.2667, - "value": 52.29, - "curve": [ 0.333, 52.29, 0.491, 43.05 ] - }, - { - "time": 0.5333, - "value": 17.71, - "curve": [ 0.551, 6.94, 0.577, -41.44 ] - }, - { - "time": 0.6, - "value": -50.22, - "curve": [ 0.613, -55.02, 0.625, -24.1 ] - }, - { - "time": 0.6333, - "value": -24.1, - "curve": [ 0.65, -24.1, 0.683, 52.67 ] - }, - { - "time": 0.7, - "value": 52.67, - "curve": [ 0.733, 52.67, 0.8, -50.91 ] - }, - { - "time": 0.8333, - "value": -50.91, - "curve": [ 0.867, -50.91, 0.933, 36.54 ] - }, - { - "time": 0.9667, - "value": 36.54, - "curve": [ 0.992, 36.54, 1.042, -47.34 ] - }, - { - "time": 1.0667, - "value": -47.34, - "curve": [ 1.092, -47.34, 1.142, 5.53 ] - }, - { - "time": 1.1667, - "value": 5.53, - "curve": [ 1.192, 5.53, 1.242, -19.25 ] - }, - { - "time": 1.2667, - "value": -19.94, - "curve": [ 1.298, -20.82, 1.313, -13.2 ] - }, - { - "time": 1.3333, - "value": -2.03, - "curve": [ 1.368, 17.44, 1.408, 54.04 ] - }, - { - "time": 1.4333, - "value": 54.04, - "curve": [ 1.458, 54.04, 1.519, 43.79 ] - }, - { - "time": 1.5333, - "value": 35.49, - "curve": [ 1.581, 8.1, 1.658, -36.24 ] - }, - { - "time": 1.7, - "value": -36.24, - "curve": [ 1.758, -36.24, 1.875, 13.61 ] - }, - { - "time": 1.9333, - "value": 13.61, - "curve": [ 1.983, 13.61, 2.083, 0 ] - }, - { "time": 2.1333 } - ], - "translate": [ - { - "time": 0.2, - "curve": [ 0.283, 0, 0.45, 11.48, 0.283, 0, 0.45, 3.7 ] - }, - { "time": 0.5333, "x": 11.48, "y": 3.7 }, - { "time": 2.1333 } - ] - }, - "saddle-strap-back": { - "rotate": [ - { - "value": -2.53, - "curve": [ 0.079, -2.45, 0.302, -25.1 ] - }, - { - "time": 0.3333, - "value": -25.81, - "curve": [ 0.389, -27.07, 0.484, -26.23 ] - }, - { - "time": 0.5333, - "value": -26.79, - "curve": [ 0.561, -27.1, 0.608, -31.99 ] - }, - { - "time": 0.6333, - "value": -31.97, - "curve": [ 0.725, -31.89, 0.763, -10.53 ] - }, - { - "time": 0.8333, - "value": -7.75, - "curve": [ 0.911, -4.71, 1.308, -5.82 ] - }, - { - "time": 1.4667, - "value": -5.82, - "curve": [ 1.541, -5.82, 1.632, -4.15 ] - }, - { - "time": 1.7, - "value": -4.14, - "curve": [ 1.766, -4.13, 1.845, -11.09 ] - }, - { - "time": 1.9333, - "value": -11.09, - "curve": [ 1.983, -11.09, 2.083, -2.53 ] - }, - { "time": 2.1333, "value": -2.53 } - ], - "translate": [ - { - "curve": [ 0.083, 0, 0.25, 11.69, 0.083, 0, 0.25, -2.81 ] - }, - { - "time": 0.3333, - "x": 11.69, - "y": -2.81, - "curve": [ 0.408, 11.69, 0.558, 0, 0.408, -2.81, 0.558, 0 ] - }, - { "time": 0.6333 } - ], - "scale": [ - { - "time": 0.6333, - "curve": [ 0.65, 1, 0.666, 1.076, 0.65, 1, 0.683, 1 ] - }, - { - "time": 0.7, - "x": 1.103, - "curve": [ 0.737, 1.132, 0.8, 1.162, 0.733, 1, 0.8, 1 ] - }, - { - "time": 0.8333, - "x": 1.162, - "curve": [ 1.05, 1.162, 1.483, 1, 1.05, 1, 1.483, 1 ] - }, - { "time": 1.7 } - ] - }, - "front-foot-target": { - "rotate": [ - { - "curve": [ 0.074, -0.1, 0.093, -16.93 ] - }, - { - "time": 0.1, - "value": -19.19, - "curve": [ 0.117, -24.39, 0.157, -24.35 ] - }, - { - "time": 0.2, - "value": -24.36, - "curve": [ 0.252, -24.36, 0.311, -22.81 ] - }, - { - "time": 0.4333, - "value": -22.8, - "curve": [ 0.628, -22.79, 0.776, -25.56 ] - }, - { - "time": 1.2333, - "value": -25.57, - "curve": [ 1.378, -25.58, 1.525, 2.24 ] - }, - { - "time": 1.7333, - "value": 2.24, - "curve": [ 1.797, 2.48, 1.732, -17.39 ] - }, - { - "time": 1.8, - "value": -17.18, - "curve": [ 1.923, -16.81, 2.073, 0.17 ] - }, - { "time": 2.1333 } - ], - "translate": [ - { - "y": 1.27, - "curve": [ 0.027, -0.41, 0.053, -46.34, 0.023, 3.93, 0.05, 71.17 ] - }, - { - "time": 0.0667, - "x": -73.27, - "y": 71.17, - "curve": [ 0.088, -115.35, 0.169, -316.46, 0.103, 71.88, 0.17, 60.5 ] - }, - { - "time": 0.2, - "x": -392.1, - "y": 9.43, - "curve": [ 0.231, -419.09, 0.231, -422.04, 0.231, 9.43, 0.231, 9.43 ] - }, - { "time": 0.2667, "x": -422.04, "y": 9.43, "curve": "stepped" }, - { - "time": 0.6, - "x": -422.04, - "y": 9.43, - "curve": [ 0.643, -422.04, 0.688, -403.61, 0.643, 9.43, 0.688, 9.43 ] - }, - { "time": 0.7333, "x": -403.61, "y": 9.43, "curve": "stepped" }, - { - "time": 1.7333, - "x": -403.61, - "y": 9.43, - "curve": [ 1.769, -403.61, 1.793, -341.64, 1.768, 9.43, 1.783, 111.02 ] - }, - { - "time": 1.8, - "x": -308.05, - "y": 111.02, - "curve": [ 1.813, -248.48, 1.9, 0, 1.858, 109.79, 1.928, 38.95 ] - }, - { - "time": 1.9333, - "curve": [ 1.983, 0, 2.083, 0.76, 1.983, 0, 2.122, 0 ] - }, - { "time": 2.1333, "y": 1.27 } - ] - }, - "front-foot2": { - "rotate": [ - {}, - { "time": 0.0333, "value": -17.85 }, - { "time": 0.0667, "value": -27.51 }, - { "time": 0.1, "value": -21.45 }, - { "time": 0.1333, "value": -12.42 }, - { "time": 0.1667, "value": -1.36 }, - { "time": 0.2, "value": -17.5 }, - { "time": 0.6, "value": -17.43 }, - { "time": 0.7, "value": -21.13, "curve": "stepped" }, - { "time": 1.7333, "value": -21.13 }, - { "time": 1.8, "value": -41.83 }, - { "time": 1.8667, "value": -1.1 }, - { "time": 1.9333 } - ] - }, - "front-foot3": { - "rotate": [ - {}, - { "time": 0.0333, "value": 1.2 }, - { "time": 0.1, "value": 8.93 }, - { - "time": 0.2, - "value": 26.93, - "curve": [ 0.217, 26.93, 0.224, 25.26 ] - }, - { "time": 0.2333, "value": 16.32, "curve": "stepped" }, - { "time": 1.7333, "value": 16.32 }, - { "time": 1.7667, "value": 24.81 }, - { "time": 1.8, "value": -12.37 }, - { "time": 1.8333, "value": -17.66 }, - { "time": 1.9, "value": 9.39 }, - { "time": 1.9333, "value": 16.11 }, - { "time": 2 } - ], - "translate": [ - { "x": -29.67, "curve": "stepped" }, - { "time": 1.7333, "x": -29.67 }, - { "time": 1.8, "x": -34.03, "y": 8.95 }, - { "time": 2.1333, "x": -29.67 } - ] - }, - "back-hand2": { - "rotate": [ - { "value": -21.46 }, - { "time": 0.2, "value": -21.93 }, - { "time": 0.3, "value": -8.39 }, - { "time": 0.4333, "value": -5.38 }, - { "time": 0.5333, "value": -30.38 }, - { "time": 0.6333, "value": -55.56 }, - { "time": 0.7, "value": -18.74 }, - { "time": 0.7667, "value": -20.26 }, - { "time": 0.8333, "value": -21.46 } - ] - }, - "saddle": { - "rotate": [ - { - "value": -3.18, - "curve": [ 0.042, -3.18, 0.132, -3.3 ] - }, - { - "time": 0.1667, - "value": -3.04, - "curve": [ 0.278, -2.2, 0.517, 8.87 ] - }, - { - "time": 0.6333, - "value": 8.87, - "curve": [ 0.683, 8.87, 0.772, -1.92 ] - }, - { - "time": 0.8333, - "value": -2.37, - "curve": [ 0.9, -2.86, 1.258, -3.18 ] - }, - { - "time": 1.4, - "value": -3.18, - "curve": [ 1.458, -3.18, 1.575, -7.06 ] - }, - { - "time": 1.6333, - "value": -7.06, - "curve": [ 1.715, -7.06, 1.86, -0.12 ] - }, - { - "time": 1.9667, - "value": -0.07, - "curve": [ 2.05, -0.03, 2.09, -3.18 ] - }, - { "time": 2.1333, "value": -3.18 } - ], - "translate": [ - { - "x": 12.68, - "y": -2.67, - "curve": [ 0.042, 12.68, 0.125, 22.76, 0.042, -2.67, 0.125, -3.36 ] - }, - { - "time": 0.1667, - "x": 22.76, - "y": -3.36, - "curve": [ 0.283, 22.76, 0.517, 9.26, 0.283, -3.36, 0.517, -0.42 ] - }, - { - "time": 0.6333, - "x": 9.26, - "y": -0.42, - "curve": [ 0.658, 9.26, 0.708, 12.68, 0.658, -0.42, 0.708, -2.67 ] - }, - { "time": 0.7333, "x": 12.68, "y": -2.67 } - ] - }, - "saddle-strap-front": { - "rotate": [ - { - "value": -0.37, - "curve": [ 0.067, -0.37, 0.2, -0.95 ] - }, - { - "time": 0.2667, - "value": -0.95, - "curve": [ 0.325, -0.95, 0.466, -15.05 ] - }, - { - "time": 0.5, - "value": -17.95, - "curve": [ 0.567, -23.58, 0.6, -27.12 ] - }, - { - "time": 0.6333, - "value": -27.12, - "curve": [ 0.658, -27.12, 0.688, -23.12 ] - }, - { - "time": 0.7333, - "value": -18.56, - "curve": [ 0.75, -16.89, 0.803, -13.87 ] - }, - { - "time": 0.8333, - "value": -12.02, - "curve": [ 0.866, -10.04, 0.97, -6.28 ] - }, - { - "time": 1.0667, - "value": -6.13, - "curve": [ 1.133, -6.02, 1.204, -10.67 ] - }, - { - "time": 1.2667, - "value": -10.07, - "curve": [ 1.394, -8.87, 1.514, -1.13 ] - }, - { - "time": 1.6, - "value": -1.13, - "curve": [ 1.675, -1.13, 1.825, -6.56 ] - }, - { - "time": 1.9, - "value": -6.68, - "curve": [ 1.952, -6.76, 1.982, -6.39 ] - }, - { - "time": 2, - "value": -5.97, - "curve": [ 2.033, -5.22, 2.1, -0.37 ] - }, - { "time": 2.1333, "value": -0.37 } - ], - "translate": [ - { - "curve": [ 0.125, 0, 0.375, -17.92, 0.125, 0, 0.375, -1.75 ] - }, - { - "time": 0.5, - "x": -17.92, - "y": -1.75, - "curve": [ 0.589, -17.92, 0.707, -7.06, 0.589, -1.75, 0.707, -4.51 ] - }, - { - "time": 0.8333, - "x": -2.9, - "y": -6.57, - "curve": [ 1.102, 5.81, 1.414, 11.49, 1.102, -10.87, 1.414, -16.3 ] - }, - { - "time": 1.6, - "x": 11.49, - "y": -16.3, - "curve": [ 1.733, 11.49, 2, 0, 1.733, -16.3, 2, 0 ] - }, - { "time": 2.1333 } - ] - }, - "spineboy-back-arm-target": { - "translate": [ - {}, - { "time": 0.6333, "x": 56.17, "y": -58.56 }, - { "time": 0.8333, "x": 34.47, "y": -59.19 }, - { "time": 2.1333 } - ] - }, - "tail2": { - "rotate": [ - { - "value": -4.33, - "curve": [ 0.027, -1.91, 0.124, 3.51 ] - }, - { - "time": 0.1667, - "value": 6.45, - "curve": [ 0.211, 9.51, 0.278, 10.89 ] - }, - { - "time": 0.3333, - "value": 10.99, - "curve": [ 0.392, 11.09, 0.385, -13.61 ] - }, - { - "time": 0.5, - "value": -13.56, - "curve": [ 0.614, -13.52, 0.636, -5.75 ] - }, - { - "time": 0.7, - "value": -5.76, - "curve": [ 0.787, -5.77, 0.831, -10.17 ] - }, - { - "time": 0.9667, - "value": -10.46, - "curve": [ 1.072, -10.68, 1.279, -8.29 ] - }, - { - "time": 1.3333, - "value": -6.23, - "curve": [ 1.389, -4.11, 1.509, 5.53 ] - }, - { - "time": 1.5333, - "value": 9.75, - "curve": [ 1.551, 12.82, 1.619, 27.3 ] - }, - { - "time": 1.6667, - "value": 27.26, - "curve": [ 1.734, 27.21, 1.763, 9.86 ] - }, - { - "time": 1.8, - "value": 5.3, - "curve": [ 1.836, 0.84, 1.926, -9.62 ] - }, - { - "time": 2, - "value": -9.49, - "curve": [ 2.071, -9.36, 2.091, -7.25 ] - }, - { "time": 2.1333, "value": -4.33 } - ], - "translate": [ - { - "curve": [ 0.133, 0, 0.435, 3.44, 0.133, 0, 0.4, 0 ] - }, - { - "time": 0.5333, - "x": 11.88, - "curve": [ 0.618, 19.17, 0.84, 41.3, 0.575, 0, 0.848, 4.02 ] - }, - { - "time": 0.9667, - "x": 41.27, - "y": 4.03, - "curve": [ 1.78, 41.12, 1.763, 0.25, 1.213, 4.03, 1.848, 0.08 ] - }, - { "time": 2.1333 } - ] - }, - "tail4": { - "rotate": [ - { - "value": 13.37, - "curve": [ 0.033, 13.37, 0.101, 11.83 ] - }, - { - "time": 0.1333, - "value": 11.78, - "curve": [ 0.201, 11.66, 0.233, 16.73 ] - }, - { - "time": 0.2667, - "value": 16.73, - "curve": [ 0.289, 16.73, 0.316, 16.02 ] - }, - { - "time": 0.3333, - "value": 13.79, - "curve": [ 0.391, 6.36, 0.456, -4.32 ] - }, - { - "time": 0.4667, - "value": -5.61, - "curve": [ 0.482, -7.52, 0.499, -10.14 ] - }, - { - "time": 0.5667, - "value": -10.33, - "curve": [ 0.576, -10.36, 0.616, -10.01 ] - }, - { - "time": 0.6667, - "value": -8.03, - "curve": [ 0.781, -3.75, 0.935, 3.38 ] - }, - { - "time": 1, - "value": 4.13, - "curve": [ 1.033, 4.52, 1.063, 4.54 ] - }, - { - "time": 1.1333, - "value": 4.55, - "curve": [ 1.176, 4.56, 1.221, 4.12 ] - }, - { - "time": 1.2667, - "value": 4.18, - "curve": [ 1.349, 4.28, 1.417, 4.99 ] - }, - { - "time": 1.4333, - "value": 5.83, - "curve": [ 1.466, 7.48, 1.557, 19.49 ] - }, - { - "time": 1.6333, - "value": 19.57, - "curve": [ 1.775, 19.71, 1.857, 7.44 ] - }, - { - "time": 1.9667, - "value": 7.46, - "curve": [ 2.045, 7.48, 2.092, 13.37 ] - }, - { "time": 2.1333, "value": 13.37 } - ] - }, - "tail6": { - "rotate": [ - { - "value": 5.3, - "curve": [ 0.026, 7.49, 0.15, 12.9 ] - }, - { - "time": 0.2, - "value": 17.27, - "curve": [ 0.251, 21.71, 0.291, 24.53 ] - }, - { - "time": 0.3333, - "value": 24.59, - "curve": [ 0.403, 24.69, 0.376, -22.01 ] - }, - { - "time": 0.5333, - "value": -21.87, - "curve": [ 0.601, -21.81, 0.697, -13.33 ] - }, - { - "time": 0.7333, - "value": -10.11, - "curve": [ 0.748, -8.78, 0.863, 4.36 ] - }, - { - "time": 0.9333, - "value": 4.22, - "curve": [ 0.974, 4.13, 1.063, 1.22 ] - }, - { - "time": 1.1, - "value": 1.32, - "curve": [ 1.145, 1.44, 1.196, 6.12 ] - }, - { - "time": 1.2333, - "value": 6.08, - "curve": [ 1.279, 6.03, 1.324, -4.69 ] - }, - { - "time": 1.4333, - "value": -5.05, - "curve": [ 1.505, -5.28, 1.608, -1.45 ] - }, - { - "time": 1.6333, - "value": 0.1, - "curve": [ 1.647, 0.95, 1.722, 20.39 ] - }, - { - "time": 1.8, - "value": 20.34, - "curve": [ 1.888, 20.3, 1.878, -3.6 ] - }, - { - "time": 2, - "value": -3.58, - "curve": [ 2.055, -3.58, 2.121, 3.57 ] - }, - { "time": 2.1333, "value": 5.3 } - ] - }, - "tail8": { - "rotate": [ - { - "value": -10.89, - "curve": [ 0.081, -11.05, 0.147, 13.08 ] - }, - { - "time": 0.1667, - "value": 15.43, - "curve": [ 0.186, 17.83, 0.268, 21.77 ] - }, - { - "time": 0.3333, - "value": 21.83, - "curve": [ 0.472, 21.96, 0.454, -21.07 ] - }, - { - "time": 0.5, - "value": -21.25, - "curve": [ 0.544, -20.58, 0.551, -10.78 ] - }, - { - "time": 0.6, - "value": -10.88, - "curve": [ 0.618, -10.92, 0.651, -17.9 ] - }, - { - "time": 0.6667, - "value": -17.69, - "curve": [ 0.694, -17.33, 0.795, 1.24 ] - }, - { - "time": 0.8333, - "value": 3.93, - "curve": [ 0.858, 5.72, 0.886, 7.58 ] - }, - { - "time": 0.9333, - "value": 7.55, - "curve": [ 0.982, 7.53, 0.948, -9.49 ] - }, - { - "time": 1.0333, - "value": -9.59, - "curve": [ 1.083, -9.64, 1.1, -4.47 ] - }, - { - "time": 1.1333, - "value": -4.45, - "curve": [ 1.195, -4.4, 1.198, -11.22 ] - }, - { - "time": 1.2667, - "value": -11.14, - "curve": [ 1.314, -11.08, 1.359, -8.01 ] - }, - { - "time": 1.4667, - "value": -8.41, - "curve": [ 1.523, -8.63, 1.603, -26.32 ] - }, - { - "time": 1.6667, - "value": -26.16, - "curve": [ 1.702, -26.06, 1.729, 19.38 ] - }, - { - "time": 1.8, - "value": 19.14, - "curve": [ 1.862, 18.93, 1.956, -1.69 ] - }, - { - "time": 1.9667, - "value": -3.18, - "curve": [ 2.006, -8.48, 2.092, -10.76 ] - }, - { "time": 2.1333, "value": -10.89 } - ] - }, - "tail10": { - "rotate": [ - { - "value": -10.89, - "curve": [ 0.033, -10.89, 0.111, -30.73 ] - }, - { - "time": 0.1667, - "value": -30.9, - "curve": [ 0.229, -31.08, 0.335, 27.4 ] - }, - { - "time": 0.4, - "value": 27.6, - "curve": [ 0.439, 27.72, 0.524, -27.93 ] - }, - { - "time": 0.5667, - "value": -27.88, - "curve": [ 0.62, -27.81, 0.664, -24.25 ] - }, - { - "time": 0.7, - "value": -20.93, - "curve": [ 0.734, -17.79, 0.814, 5.46 ] - }, - { - "time": 0.8333, - "value": 13.09, - "curve": [ 0.842, 16.62, 0.87, 28.27 ] - }, - { - "time": 0.9, - "value": 28.51, - "curve": [ 0.947, 28.9, 0.985, -19.51 ] - }, - { - "time": 1, - "value": -22.12, - "curve": [ 1.01, -23.84, 1.038, -31.09 ] - }, - { - "time": 1.0667, - "value": -31.14, - "curve": [ 1.103, -31.22, 1.133, 19.55 ] - }, - { - "time": 1.1667, - "value": 19.35, - "curve": [ 1.201, 19.15, 1.213, -14.84 ] - }, - { - "time": 1.3, - "value": -14.94, - "curve": [ 1.347, -14.99, 1.37, 11.37 ] - }, - { - "time": 1.4, - "value": 11.31, - "curve": [ 1.432, 11.24, 1.523, -27.59 ] - }, - { - "time": 1.5333, - "value": -31.27, - "curve": [ 1.565, -42.53, 1.588, -42.01 ] - }, - { - "time": 1.6, - "value": -42.01, - "curve": [ 1.64, -41.99, 1.753, -25.24 ] - }, - { - "time": 1.7667, - "value": -18.25, - "curve": [ 1.778, -12.25, 1.82, 14.24 ] - }, - { - "time": 1.9, - "value": 14.82, - "curve": [ 1.929, 14.81, 2.041, -14.3 ] - }, - { - "time": 2.0667, - "value": -14.15, - "curve": [ 2.096, -13.98, 2.11, -10.93 ] - }, - { "time": 2.1333, "value": -10.89 } - ] - }, - "jaw-inside": { - "rotate": [ - {}, - { "time": 0.7667, "value": 13.77 }, - { "time": 2.1333 } - ], - "translate": [ - {}, - { "time": 0.6, "x": -4.3, "y": 4.48 }, - { "time": 0.7667, "x": -23.59, "y": -9.32 }, - { "time": 2.1333 } - ], - "scale": [ - { "time": 0.6 }, - { "time": 0.7667, "x": 1.119 }, - { "time": 2.1333 } - ] - }, - "bone": { - "rotate": [ - { - "curve": [ 0.042, 0, 0.125, 6.63 ] - }, - { - "time": 0.1667, - "value": 6.63, - "curve": [ 0.192, 6.63, 0.242, 2.54 ] - }, - { - "time": 0.2667, - "value": 2.54, - "curve": [ 0.308, 2.54, 0.406, 11.71 ] - }, - { - "time": 0.4333, - "value": 12.45, - "curve": [ 0.491, 14, 0.6, 14.87 ] - }, - { - "time": 0.7, - "value": 14.69, - "curve": [ 0.725, 14.64, 0.775, -1.4 ] - }, - { - "time": 0.8, - "value": -1.4, - "curve": [ 0.825, -1.4, 0.887, 5.02 ] - }, - { - "time": 0.9, - "value": 5.61, - "curve": [ 0.936, 7.29, 1, 9.11 ] - }, - { - "time": 1.0333, - "value": 9.11, - "curve": [ 1.058, 9.11, 1.108, 6.88 ] - }, - { - "time": 1.1333, - "value": 6.88, - "curve": [ 1.158, 6.88, 1.208, 10.51 ] - }, - { - "time": 1.2333, - "value": 10.51, - "curve": [ 1.258, 10.51, 1.308, 6.4 ] - }, - { - "time": 1.3333, - "value": 6.4, - "curve": [ 1.358, 6.4, 1.408, 14.34 ] - }, - { - "time": 1.4333, - "value": 14.34, - "curve": [ 1.45, 14.34, 1.496, 0.94 ] - }, - { - "time": 1.5, - "value": 0.49, - "curve": [ 1.525, -2.03, 1.575, -5.85 ] - }, - { - "time": 1.6, - "value": -5.85, - "curve": [ 1.625, -5.85, 1.675, 4.87 ] - }, - { - "time": 1.7, - "value": 4.87, - "curve": [ 1.717, 4.87, 1.75, -1.8 ] - }, - { - "time": 1.7667, - "value": -1.8, - "curve": [ 1.817, -1.8, 1.917, 13.56 ] - }, - { - "time": 1.9667, - "value": 13.56, - "curve": [ 2.008, 13.56, 2.092, 0 ] - }, - { "time": 2.1333 } - ] - }, - "bone2": { - "rotate": [ - { - "curve": [ 0.042, 0, 0.146, -2.69 ] - }, - { - "time": 0.1667, - "value": -4.33, - "curve": [ 0.219, -8.51, 0.262, -16.86 ] - }, - { - "time": 0.2667, - "value": -17.98, - "curve": [ 0.308, -27.29, 0.392, -48.51 ] - }, - { - "time": 0.4333, - "value": -48.51, - "curve": [ 0.5, -48.51, 0.633, 6.49 ] - }, - { - "time": 0.7, - "value": 6.49, - "curve": [ 0.725, 6.49, 0.765, 3.58 ] - }, - { - "time": 0.8, - "value": -1.4, - "curve": [ 0.848, -8.2, 0.875, -10.86 ] - }, - { - "time": 0.9, - "value": -10.86, - "curve": [ 0.933, -10.86, 1, -4.95 ] - }, - { - "time": 1.0333, - "value": -4.95, - "curve": [ 1.058, -4.95, 1.108, -14.48 ] - }, - { - "time": 1.1333, - "value": -14.48, - "curve": [ 1.158, -14.48, 1.208, -10.43 ] - }, - { - "time": 1.2333, - "value": -10.43, - "curve": [ 1.258, -10.43, 1.308, -28.38 ] - }, - { - "time": 1.3333, - "value": -28.38, - "curve": [ 1.358, -28.38, 1.43, -14.4 ] - }, - { - "time": 1.4333, - "value": -13.27, - "curve": [ 1.45, -7.85, 1.483, 0.49 ] - }, - { - "time": 1.5, - "value": 0.49, - "curve": [ 1.525, 0.49, 1.594, -14.84 ] - }, - { - "time": 1.6, - "value": -15.95, - "curve": [ 1.637, -22.9, 1.675, -38.34 ] - }, - { - "time": 1.7, - "value": -38.34, - "curve": [ 1.717, -38.34, 1.749, -24.54 ] - }, - { - "time": 1.7667, - "value": -21.29, - "curve": [ 1.81, -13.5, 1.902, -4.2 ] - }, - { - "time": 1.9667, - "value": 2.36, - "curve": [ 2, 5.78, 2.022, 7.84 ] - }, - { - "time": 2.0667, - "value": 8.12, - "curve": [ 2.1, 8.33, 2.1, 0 ] - }, - { "time": 2.1333 } - ] - }, - "bone3": { - "rotate": [ - { - "curve": [ 0.025, 0, 0.064, -0.37 ] - }, - { - "time": 0.1, - "value": -2.21, - "curve": [ 0.125, -3.49, 0.155, -5.64 ] - }, - { - "time": 0.1667, - "value": -6.06, - "curve": [ 0.208, -7.52, 0.242, -7.08 ] - }, - { - "time": 0.2667, - "value": -7.08, - "curve": [ 0.375, -7.08, 0.558, 14.69 ] - }, - { - "time": 0.6667, - "value": 14.69, - "curve": [ 0.692, 14.69, 0.775, -1.4 ] - }, - { - "time": 0.8, - "value": -1.4, - "curve": [ 0.817, -1.4, 0.883, 3.9 ] - }, - { - "time": 0.9, - "value": 3.9, - "curve": [ 0.939, 3.9, 0.98, 3.03 ] - }, - { - "time": 1.0333, - "value": 2.98, - "curve": [ 1.076, 2.94, 1.149, 3.42 ] - }, - { - "time": 1.1667, - "value": 3.92, - "curve": [ 1.185, 4.42, 1.222, 5.94 ] - }, - { - "time": 1.2667, - "value": 5.9, - "curve": [ 1.299, 5.87, 1.305, 0.43 ] - }, - { - "time": 1.3667, - "value": 0.38, - "curve": [ 1.432, 0.32, 1.437, 2.12 ] - }, - { - "time": 1.4667, - "value": 2.12, - "curve": [ 1.491, 2.12, 1.514, -6.82 ] - }, - { - "time": 1.5667, - "value": -9.65, - "curve": [ 1.582, -10.49, 1.616, -10.48 ] - }, - { - "time": 1.6333, - "value": -10.48, - "curve": [ 1.65, -10.48, 1.725, -3.32 ] - }, - { - "time": 1.7667, - "value": -1.8, - "curve": [ 1.786, -1.1, 1.932, 0.99 ] - }, - { - "time": 1.9667, - "value": 1.81, - "curve": [ 1.989, 2.33, 2.006, 6.83 ] - }, - { - "time": 2.0333, - "value": 6.85, - "curve": [ 2.065, 6.87, 2.109, 0 ] - }, - { "time": 2.1333 } - ] - }, - "bone4": { - "rotate": [ - { - "curve": [ 0.025, 0, 0.064, 0.8 ] - }, - { - "time": 0.1, - "value": -1.04, - "curve": [ 0.125, -2.32, 0.16, -5.18 ] - }, - { - "time": 0.1667, - "value": -5.78, - "curve": [ 0.207, -9.38, 0.242, -15.67 ] - }, - { - "time": 0.2667, - "value": -15.67, - "curve": [ 0.375, -15.67, 0.558, 14.69 ] - }, - { - "time": 0.6667, - "value": 14.69, - "curve": [ 0.692, 14.69, 0.775, -1.4 ] - }, - { - "time": 0.8, - "value": -1.4, - "curve": [ 0.817, -1.4, 0.883, 3.9 ] - }, - { - "time": 0.9, - "value": 3.9, - "curve": [ 0.939, 3.9, 0.984, 2.94 ] - }, - { - "time": 1.0333, - "value": 3, - "curve": [ 1.085, 3.06, 1.133, 3.41 ] - }, - { - "time": 1.1667, - "value": 4.6, - "curve": [ 1.213, 6.21, 1.234, 8.82 ] - }, - { - "time": 1.2667, - "value": 8.27, - "curve": [ 1.302, 7.7, 1.313, 0.66 ] - }, - { - "time": 1.3667, - "value": 0.43, - "curve": [ 1.413, 0.24, 1.437, 3 ] - }, - { - "time": 1.4667, - "value": 3, - "curve": [ 1.491, 3, 1.515, -15.25 ] - }, - { - "time": 1.5667, - "value": -15.03, - "curve": [ 1.601, -14.89, 1.626, -12.84 ] - }, - { - "time": 1.6333, - "value": -12.25, - "curve": [ 1.674, -9, 1.75, -1.8 ] - }, - { - "time": 1.7667, - "value": -1.8, - "curve": [ 1.784, -1.8, 1.804, -12.17 ] - }, - { - "time": 1.8333, - "value": -12.06, - "curve": [ 1.872, -11.93, 1.935, -3.2 ] - }, - { - "time": 1.9667, - "value": 1.81, - "curve": [ 1.986, 4.89, 2.008, 10.05 ] - }, - { - "time": 2.0333, - "value": 9.69, - "curve": [ 2.07, 9.18, 2.088, 0 ] - }, - { "time": 2.1333 } - ] - }, - "bone5": { - "rotate": [ - { - "curve": [ 0.025, 0, 0.062, 28.42 ] - }, - { - "time": 0.1, - "value": 28.6, - "curve": [ 0.147, 28.83, 0.153, 11.26 ] - }, - { - "time": 0.1667, - "value": 7.14, - "curve": [ 0.184, 2.13, 0.242, -3.09 ] - }, - { - "time": 0.2667, - "value": -3.09, - "curve": [ 0.375, -3.09, 0.558, 14.69 ] - }, - { - "time": 0.6667, - "value": 14.69, - "curve": [ 0.692, 14.69, 0.775, -1.4 ] - }, - { - "time": 0.8, - "value": -1.4, - "curve": [ 0.817, -1.4, 0.883, 3.9 ] - }, - { - "time": 0.9, - "value": 3.9, - "curve": [ 0.939, 3.9, 0.985, -10.79 ] - }, - { - "time": 1.0333, - "value": -11.13, - "curve": [ 1.076, -11.41, 1.131, 1.61 ] - }, - { - "time": 1.1667, - "value": 9.66, - "curve": [ 1.176, 11.68, 1.223, 16.67 ] - }, - { - "time": 1.2667, - "value": 17.42, - "curve": [ 1.291, 17.84, 1.325, 1.33 ] - }, - { - "time": 1.3667, - "value": 1.77, - "curve": [ 1.4, 2.12, 1.437, 13.5 ] - }, - { - "time": 1.4667, - "value": 13.5, - "curve": [ 1.491, 13.5, 1.53, 12.52 ] - }, - { - "time": 1.5667, - "value": 6.34, - "curve": [ 1.592, 2.04, 1.625, -8.5 ] - }, - { - "time": 1.6333, - "value": -9.29, - "curve": [ 1.668, -12.54, 1.752, -12.67 ] - }, - { - "time": 1.7667, - "value": -13.33, - "curve": [ 1.796, -14.63, 1.798, -16.98 ] - }, - { - "time": 1.8333, - "value": -16.88, - "curve": [ 1.885, -16.74, 1.93, -6.63 ] - }, - { - "time": 1.9667, - "value": 1.81, - "curve": [ 1.989, 7.11, 2.008, 15.58 ] - }, - { - "time": 2.0333, - "value": 15.21, - "curve": [ 2.07, 14.7, 2.109, 0 ] - }, - { "time": 2.1333 } - ] - }, - "front-leg1": { - "rotate": [ - { "value": -10.53 } - ] - }, - "spineboy-front-foot-target": { - "translate": [ - { - "curve": [ 0.075, 0, 0.225, 12.33, 0.075, 0, 0.225, 10.25 ] - }, - { - "time": 0.3, - "x": 12.33, - "y": 10.25, - "curve": [ 0.758, 12.33, 1.675, 0, 0.758, 10.25, 1.675, 0 ] - }, - { "time": 2.1333 } - ] - }, - "front-arm": { - "rotate": [ - { - "value": -14.35, - "curve": [ 0.133, -14.35, 0.4, -19.58 ] - }, - { "time": 0.5333, "value": -19.58 } - ], - "translate": [ - { - "curve": [ 0.033, 0, 0.1, -7.25, 0.033, 0, 0.1, -6.08 ] - }, - { - "time": 0.1333, - "x": -7.25, - "y": -6.08, - "curve": [ 0.167, -7.25, 0.233, -9.9, 0.167, -6.08, 0.233, -6.36 ] - }, - { - "time": 0.2667, - "x": -9.9, - "y": -6.36, - "curve": [ 0.292, -9.9, 0.342, -18.75, 0.292, -6.36, 0.342, -3.94 ] - }, - { - "time": 0.3667, - "x": -18.75, - "y": -3.94, - "curve": [ 0.442, -18.75, 0.592, -6.67, 0.442, -3.94, 0.621, -5.2 ] - }, - { - "time": 0.6667, - "x": -6.67, - "y": -5.49, - "curve": [ 0.766, -6.67, 0.886, -6.5, 0.906, -7.04, 0.862, -6.67 ] - }, - { - "time": 1, - "x": -6.32, - "y": -7.71, - "curve": [ 1.142, -6.09, 1.277, -5.84, 1.153, -8.88, 1.277, -10.04 ] - }, - { - "time": 1.3667, - "x": -5.84, - "y": -10.04, - "curve": [ 1.415, -5.84, 1.452, -5.89, 1.415, -10.04, 1.434, -9.81 ] - }, - { - "time": 1.4667, - "x": -5.93, - "y": -9.67, - "curve": [ 1.567, -6.22, 1.62, -6.67, 1.51, -9.48, 1.71, -9.28 ] - }, - { - "time": 1.8, - "x": -6.67, - "y": -9.26, - "curve": [ 1.883, -6.67, 2.05, 0, 1.883, -9.25, 2.05, 0 ] - }, - { "time": 2.1333 } - ], - "scale": [ - { - "curve": [ 0.036, 1, 0.083, 1.024, 0.036, 1, 0.083, 1.001 ] - }, - { - "time": 0.1333, - "x": 1.024, - "y": 1.001, - "curve": [ 0.259, 1.024, 0.411, 1, 0.259, 1.001, 0.411, 1 ] - }, - { - "time": 0.5, - "curve": [ 0.575, 1, 0.592, 1.192, 0.575, 1, 0.592, 1 ] - }, - { - "time": 0.6667, - "x": 1.192, - "curve": [ 0.75, 1.192, 0.858, 1.081, 0.75, 1, 0.858, 1 ] - }, - { - "time": 0.9333, - "x": 1.081, - "curve": [ 1.017, 1.081, 0.917, 1.085, 1.017, 1, 0.917, 1 ] - }, - { - "time": 1, - "x": 1.085, - "curve": [ 1.1, 1.085, 1.267, 1.087, 1.1, 1, 1.267, 1 ] - }, - { - "time": 1.3667, - "x": 1.087, - "curve": [ 1.375, 1.087, 1.418, 1.125, 1.375, 1, 1.418, 1 ] - }, - { - "time": 1.4667, - "x": 1.162, - "curve": [ 1.502, 1.188, 1.676, 1.354, 1.502, 1, 1.676, 1 ] - }, - { - "time": 1.8, - "x": 1.301, - "curve": [ 1.841, 1.284, 2.109, 1, 1.841, 1, 2.109, 1 ] - }, - { "time": 2.1333 } - ] - }, - "stirrup": { - "rotate": [ - {}, - { "time": 0.4333, "value": -19.63 }, - { "time": 0.8333, "value": -15.18 }, - { "time": 1.3333, "value": -5.96 }, - { "time": 1.7667, "value": -18.16 }, - { "time": 2.1333 } - ], - "translate": [ - {}, - { "time": 0.4333, "x": -1.45, "y": 16.31, "curve": "stepped" }, - { "time": 1, "x": -1.45, "y": 16.31 }, - { "time": 2.1333 } - ] - }, - "back-arm": { - "rotate": [ - { "value": 44.83 } - ], - "scale": [ - { "time": 0.4667 }, - { "time": 0.5667, "x": 1.088 }, - { "time": 0.6667, "x": 1.311 }, - { "time": 0.7667, "x": 1.211 }, - { "time": 1.2, "x": 1.008 }, - { "time": 1.5667, "x": 1.137 }, - { "time": 1.8333 } - ] - }, - "back-bracer": { - "rotate": [ - { "value": -108.62 } - ] - }, - "back-leg1": { - "rotate": [ - { "value": -8.96 } - ] - }, - "back-leg2": { - "rotate": [ - { "value": -19.65 } - ] - }, - "back-leg3": { - "rotate": [ - { "value": 19.47 } - ] - }, - "back-foot1": { - "rotate": [ - { "value": 1.53 } - ] - }, - "back-thigh": { - "rotate": [ - { "value": 6.63 } - ] - }, - "back-knee": { - "rotate": [ - { "value": -8.23 } - ] - }, - "front-bracer": { - "rotate": [ - { "value": 72.21 } - ] - }, - "front-leg2": { - "rotate": [ - { "value": -9.63 } - ] - }, - "front-leg3": { - "rotate": [ - { "value": 3.66 } - ] - }, - "front-foot1": { - "rotate": [ - { "value": 0.4 } - ] - }, - "front-thigh": { - "rotate": [ - { "value": 8.81 } - ] - }, - "lower-leg": { - "rotate": [ - { "value": -12.66 } - ] - }, - "stirrup-strap1": { - "rotate": [ - { "value": 5.25 } - ] - }, - "stirrup-strap2": { - "rotate": [ - { "value": -9.39 } - ] - }, - "head-control": { - "translate": [ - { - "curve": [ 0.054, 0, 0.199, -1.25, 0.072, 1.29, 0.192, -16.81 ] - }, - { - "time": 0.2333, - "x": -7.11, - "y": -16.81, - "curve": [ 0.327, -23.29, 0.379, -49.73, 0.317, -16.81, 0.452, 14.65 ] - }, - { - "time": 0.5667, - "x": -48.04, - "y": 14.37, - "curve": [ 0.653, -47.8, 0.826, -35.85, 0.674, 14.1, 0.729, -25.53 ] - }, - { - "time": 0.8333, - "x": -35.79, - "y": -25.53, - "curve": [ 0.867, -35.49, 0.908, -35.48, 0.858, -25.53, 0.908, -15.45 ] - }, - { - "time": 0.9333, - "x": -35.48, - "y": -15.45, - "curve": [ 0.967, -35.48, 1.039, -37.97, 0.967, -15.45, 1.033, -22.04 ] - }, - { - "time": 1.0667, - "x": -39.2, - "y": -22.04, - "curve": [ 1.135, -42.29, 1.163, -43.43, 1.1, -22.04, 1.167, -6.45 ] - }, - { - "time": 1.2, - "x": -44.12, - "y": -6.45, - "curve": [ 1.24, -44.87, 1.325, -45.15, 1.242, -6.45, 1.287, -13.6 ] - }, - { - "time": 1.3667, - "x": -45.15, - "y": -13.61, - "curve": [ 1.417, -45.15, 1.517, -47.61, 1.448, -13.61, 1.509, -1.81 ] - }, - { - "time": 1.5667, - "x": -47.61, - "y": -1.61, - "curve": [ 1.617, -47.61, 1.671, -48.3, 1.653, -1.32, 1.756, -23.41 ] - }, - { - "time": 1.7667, - "x": -37.45, - "y": -28.41, - "curve": [ 1.791, -34.66, 1.814, -20.75, 1.796, -41.85, 1.804, -47.93 ] - }, - { - "time": 1.8333, - "x": -18.68, - "y": -47.78, - "curve": [ 1.92, -9.88, 1.961, -5.23, 1.906, -47.41, 1.952, -34.09 ] - }, - { - "time": 2, - "x": -3.41, - "y": -22.62, - "curve": [ 2.045, -1.31, 2.1, 0, 2.013, -19.49, 2.1, 0 ] - }, - { "time": 2.1333 } - ] - }, - "leg-control": { - "translate": [ - { - "curve": [ 0.017, 0, 0.05, 0, 0.017, 0, 0.05, 102.43 ] - }, - { - "time": 0.0667, - "y": 102.43, - "curve": [ 0.1, 0, 0.15, 0, 0.1, 102.43, 0.15, 97.83 ] - }, - { - "time": 0.2, - "y": 93.23, - "curve": [ 0.223, 0, 0.246, 0, 0.223, 91.13, 0.246, -33.33 ] - }, - { - "time": 0.2667, - "y": -34.99, - "curve": [ 0.292, 0, 0.315, 0, 0.292, -36.97, 0.315, 84.03 ] - }, - { - "time": 0.3333, - "y": 84.03, - "curve": [ 0.35, 0, 0.383, 0, 0.35, 84.03, 0.383, 22.16 ] - }, - { - "time": 0.4, - "y": 22.16, - "curve": [ 0.467, 0, 0.6, 11.4, 0.467, 22.16, 0.6, -252.93 ] - }, - { - "time": 0.6667, - "x": 11.4, - "y": -252.93, - "curve": [ 0.7, 11.4, 0.767, 11.4, 0.7, -252.93, 0.767, -174.39 ] - }, - { - "time": 0.8, - "x": 11.4, - "y": -174.39, - "curve": [ 0.825, 11.4, 0.875, 11.4, 0.825, -174.39, 0.875, -201.79 ] - }, - { - "time": 0.9, - "x": 11.4, - "y": -201.79, - "curve": [ 0.925, 11.4, 0.975, 11.4, 0.925, -201.79, 0.975, -174.33 ] - }, - { - "time": 1, - "x": 11.4, - "y": -174.33, - "curve": [ 1.033, 11.4, 1.1, 11.4, 1.033, -174.33, 1.1, -221.22 ] - }, - { - "time": 1.1333, - "x": 11.4, - "y": -221.22, - "curve": [ 1.167, 11.4, 1.233, 11.4, 1.167, -221.22, 1.233, -167.36 ] - }, - { - "time": 1.2667, - "x": 11.4, - "y": -167.36, - "curve": [ 1.308, 11.4, 1.392, 11.4, 1.308, -167.36, 1.392, -214.56 ] - }, - { - "time": 1.4333, - "x": 11.4, - "y": -214.56, - "curve": [ 1.508, 11.4, 1.725, 11.4, 1.508, -214.56, 1.725, 48.39 ] - }, - { - "time": 1.8, - "x": 11.4, - "y": 48.39, - "curve": [ 1.857, 11.4, 1.953, 6.13, 1.857, 48.39, 1.953, -139.31 ] - }, - { - "time": 2.0333, - "x": 2.76, - "y": -153.62, - "curve": [ 2.072, 1.2, 2.107, 0, 2.072, -160.25, 2.107, 0 ] - }, - { "time": 2.1333 } - ] - } - }, - "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.6333, "color": "808080ff" }, - { "time": 1.2667, "color": "646464ff" } - ] - }, - "tail-shadow": { - "rgba": [ - { - "color": "00000000", - "curve": [ 0.158, 0, 0.442, 0, 0.158, 0, 0.442, 0, 0.158, 0, 0.442, 0, 0.158, 0, 0.441, 0.2 ] - }, - { - "time": 0.6, - "color": "00000033", - "curve": [ 0.633, 0, 1.075, 0, 0.633, 0, 1.075, 0, 0.633, 0, 1.075, 0, 0.805, 0.2, 1.075, 0 ] - }, - { "time": 1.2333, "color": "00000000" } - ], - "attachment": [ - { "name": "raptor-tail-shadow" } - ] - } - }, - "bones": { - "front-foot-target": { - "rotate": [ - { - "curve": [ 0.092, 0, 0.27, -32.53 ] - }, - { - "time": 0.3667, - "value": -51.26, - "curve": [ 0.411, -59.91, 0.559, -84.04 ] - }, - { - "time": 0.6333, - "value": -84.29, - "curve": [ 1.183, -83.79, 1.129, 0.25 ] - }, - { "time": 1.2667 } - ], - "translate": [ - { "x": 381.92, "y": 36.5 }, - { "time": 0.6333, "x": -134.72, "y": 37.42 }, - { - "time": 0.7, - "x": -171.19, - "y": 126.07, - "curve": [ 0.733, -171.19, 0.798, -142.14, 0.74, 182.63, 0.8, 238.01 ] - }, - { - "time": 0.8333, - "x": -70.41, - "y": 238.01, - "curve": [ 0.845, -46.13, 1.125, 418.07, 0.983, 235.62, 1.129, 141.43 ] - }, - { - "time": 1.1667, - "x": 418.07, - "y": 115.18, - "curve": [ 1.192, 418.07, 1.231, 404.25, 1.202, 89.98, 1.2, 84.96 ] - }, - { "time": 1.2667, "x": 381.92, "y": 36.5 } - ] - }, - "hip": { - "rotate": [ - { - "value": -4.78, - "curve": [ 0.033, -4.18, 0.05, -3.99 ] - }, - { - "time": 0.0667, - "value": -3.99, - "curve": [ 0.142, -3.99, 0.292, -12.5 ] - }, - { - "time": 0.3667, - "value": -12.5, - "curve": [ 0.477, -12.56, 0.584, -4.05 ] - }, - { - "time": 0.7, - "value": -3.99, - "curve": [ 0.775, -3.89, 0.925, -12.5 ] - }, - { - "time": 1, - "value": -12.5, - "curve": [ 1.067, -12.5, 1.216, -6.08 ] - }, - { "time": 1.2667, "value": -4.78 } - ], - "translate": [ - { - "x": 161.93, - "y": 34.05, - "curve": [ 0.022, 155.35, 0.047, 146.41, 0.021, 20.48, 0.039, 1.4 ] - }, - { - "time": 0.0667, - "x": 146.25, - "y": 1.68, - "curve": [ 0.124, 146.16, 0.29, 209.86, 0.18, 2.76, 0.294, 142.08 ] - }, - { - "time": 0.4, - "x": 209.5, - "y": 140.69, - "curve": [ 0.562, 208.96, 0.624, 145.35, 0.537, 141.96, 0.63, 4.69 ] - }, - { - "time": 0.7, - "x": 145.67, - "y": 2.06, - "curve": [ 0.745, 145.86, 0.928, 209.19, 0.818, 3.05, 0.95, 138.66 ] - }, - { - "time": 1.0333, - "x": 209.19, - "y": 139.3, - "curve": [ 1.1, 209.19, 1.221, 175.02, 1.13, 140.4, 1.235, 58.97 ] - }, - { "time": 1.2667, "x": 161.93, "y": 34.05 } - ] - }, - "back-foot-target": { - "rotate": [ - { - "value": -80.75, - "curve": [ 0.198, -90.08, 0.228, -92.2 ] - }, - { - "time": 0.3667, - "value": -92.34, - "curve": [ 0.42, -92.39, 0.517, -45.34 ] - }, - { - "time": 0.5667, - "value": -45.34, - "curve": [ 0.655, -45.71, 1.097, -71.9 ] - }, - { "time": 1.2667, "value": -80.75 } - ], - "translate": [ - { - "x": -187.61, - "y": -15.47, - "curve": [ 0.049, -223.65, 0.093, -245.68, 0.092, -17.15, 0.095, -1.05 ] - }, - { - "time": 0.1333, - "x": -245.95, - "y": 31.3, - "curve": [ 0.166, -245.38, 0.315, 6.48, 0.173, 64.21, 0.228, 125.64 ] - }, - { - "time": 0.3667, - "x": 86.5, - "y": 124.4, - "curve": [ 0.382, 110.05, 0.518, 358.22, 0.462, 123.17, 0.549, 44.45 ] - }, - { - "time": 0.5667, - "x": 361.92, - "y": 29.91, - "curve": [ 0.583, 361.92, 0.579, 373.34, 0.597, 4.36, 0.603, 0.79 ] - }, - { "time": 0.6333, "x": 316.72, "y": -26.42 }, - { "time": 1.2667, "x": -187.61, "y": -15.47 } - ] - }, - "front-leg1": { - "translate": [ - { - "curve": [ 0.017, 0, 0.3, 0.01, 0.017, 0, 0.293, 13.2 ] - }, - { - "time": 0.3667, - "x": -0.27, - "y": 13.9, - "curve": [ 0.46, -0.66, 0.548, -1.22, 0.44, 14.6, 0.57, 15.77 ] - }, - { - "time": 0.6333, - "x": -2.25, - "y": 16.95, - "curve": [ 0.705, -3.11, 0.783, -4.75, 0.697, 18.15, 0.783, 31.94 ] - }, - { - "time": 0.8333, - "x": -4.75, - "y": 31.94, - "curve": [ 0.875, -4.75, 0.963, -4.5, 0.875, 31.94, 0.985, 27.76 ] - }, - { - "time": 1, - "x": -3.8, - "y": 25.55, - "curve": [ 1.07, -2.46, 1.2, 0, 1.033, 20.56, 1.2, 0 ] - }, - { "time": 1.2667 } - ] - }, - "front-leg-target": { - "translate": [ - { - "x": -18.05, - "y": -2.89, - "curve": [ 0.135, -18.7, 0.286, -40.73, 0.171, -2.56, 0.416, -51.29 ] - }, - { - "time": 0.5333, - "x": -42.2, - "y": -52.27, - "curve": [ 0.558, -42.2, 0.568, -44.03, 0.558, -52.27, 0.608, -22.52 ] - }, - { - "time": 0.6333, - "x": -36.87, - "y": -22.52, - "curve": [ 0.702, -29.26, 0.783, -26.32, 0.683, -22.52, 0.763, -44.03 ] - }, - { - "time": 0.8333, - "x": -26.32, - "y": -72.37, - "curve": [ 0.875, -26.32, 0.939, -42.98, 0.855, -81, 0.916, -109.88 ] - }, - { - "time": 1, - "x": -42.64, - "y": -109.99, - "curve": [ 1.176, -42.56, 1.221, -18.42, 1.18, -110.24, 1.217, -3.39 ] - }, - { "time": 1.2667, "x": -18.05, "y": -2.89 } - ] - }, - "back-leg-target": { - "rotate": [ - { "value": 2.39 } - ], - "translate": [ - { - "x": -24.54, - "y": 15.12, - "curve": [ 0.135, -24.49, 0.417, -40.42, 0.121, 14.56, 0.327, -140.88 ] - }, - { - "time": 0.5667, - "x": -40.21, - "y": -141.76, - "curve": [ 0.705, -40.01, 1.147, -24.39, 0.939, -143.13, 1.122, 15.12 ] - }, - { "time": 1.2667, "x": -24.54, "y": 15.12 } - ] - }, - "tail1": { - "rotate": [ - { - "value": -1.81, - "curve": [ 0.091, -1.81, 0.208, 12.33 ] - }, - { - "time": 0.3333, - "value": 12.33, - "curve": [ 0.431, 12.33, 0.532, -1.81 ] - }, - { - "time": 0.6333, - "value": -1.81, - "curve": [ 0.735, -1.81, 0.838, 11.62 ] - }, - { - "time": 0.9333, - "value": 11.62, - "curve": [ 1.06, 11.62, 1.176, -1.81 ] - }, - { "time": 1.2667, "value": -1.81 } - ] - }, - "torso1": { - "rotate": [ - { - "value": 7.22, - "curve": [ 0.048, 7.93, 0.072, 8.38 ] - }, - { - "time": 0.1333, - "value": 8.39, - "curve": [ 0.202, 8.4, 0.302, 2.44 ] - }, - { - "time": 0.3667, - "value": 2.44, - "curve": [ 0.433, 2.44, 0.588, 6.89 ] - }, - { - "time": 0.6, - "value": 7.22, - "curve": [ 0.618, 7.7, 0.683, 8.43 ] - }, - { - "time": 0.7333, - "value": 8.43, - "curve": [ 0.83, 8.43, 0.91, 2.42 ] - }, - { - "time": 0.9667, - "value": 2.42, - "curve": [ 1.033, 2.42, 1.212, 6.06 ] - }, - { "time": 1.2667, "value": 7.22 } - ] - }, - "saddle": { - "rotate": [ - { "value": -2.52 }, - { "time": 0.3667, "value": -4.17 }, - { "time": 0.6333, "value": -3.85 }, - { "time": 1, "value": -3.1 }, - { "time": 1.2667, "value": -2.52 } - ], - "translate": [ - { "x": 5.87, "y": -0.06 }, - { - "time": 0.3667, - "curve": [ 0.377, -0.01, 0.417, -0.04, 0.377, 1.66, 0.417, 5.92 ] - }, - { - "time": 0.4333, - "x": -0.04, - "y": 5.92, - "curve": [ 0.518, -0.04, 0.603, -6.88, 0.518, 5.92, 0.603, 1.38 ] - }, - { "time": 0.6333, "x": -8.81, "y": 0.1 }, - { "time": 0.7, "x": -7.83, "y": -2.27 }, - { - "time": 1, - "curve": [ 1.01, -0.01, 1.05, -0.04, 1.01, 1.66, 1.05, 5.92 ] - }, - { - "time": 1.0667, - "x": -0.04, - "y": 5.92, - "curve": [ 1.151, -0.04, 1.237, 4.57, 1.151, 5.92, 1.237, 1.25 ] - }, - { "time": 1.2667, "x": 5.87, "y": -0.06 } - ] - }, - "torso2": { - "rotate": [ - { - "value": -4.19, - "curve": [ 0.092, -4.19, 0.275, -2.54 ] - }, - { - "time": 0.3667, - "value": -2.54, - "curve": [ 0.433, -2.54, 0.567, -4.19 ] - }, - { - "time": 0.6333, - "value": -4.19, - "curve": [ 0.725, -4.19, 0.908, -2.57 ] - }, - { - "time": 1, - "value": -2.57, - "curve": [ 1.067, -2.57, 1.2, -4.19 ] - }, - { "time": 1.2667, "value": -4.19 } - ], - "translate": [ - { - "curve": [ 0.087, -1.87, 0.131, -1.57, 0.098, 9.88, 0.131, 12.61 ] - }, - { - "time": 0.1667, - "x": -1.57, - "y": 12.61, - "curve": [ 0.246, -1.57, 0.278, 8.5, 0.246, 12.61, 0.258, -10.38 ] - }, - { - "time": 0.3667, - "x": 8.38, - "y": -10.24, - "curve": [ 0.453, 8.25, 0.581, 1.81, 0.441, -10.14, 0.598, -3.48 ] - }, - { - "time": 0.6333, - "x": 0.09, - "curve": [ 0.666, -0.98, 0.764, -1.48, 0.667, 3.32, 0.764, 12.61 ] - }, - { - "time": 0.8, - "x": -1.48, - "y": 12.61, - "curve": [ 0.88, -1.48, 0.937, 8.5, 0.88, 12.61, 0.907, -10.4 ] - }, - { - "time": 1.0333, - "x": 8.38, - "y": -10.24, - "curve": [ 1.12, 8.26, 1.218, 2.68, 1.101, -10.15, 1.195, -5.21 ] - }, - { "time": 1.2667 } - ] - }, - "front-arm1": { - "rotate": [ - { - "value": -348.35, - "curve": [ 0.305, -348.39, 0.452, -330.1 ] - }, - { - "time": 0.6333, - "value": -329.45, - "curve": [ 0.927, -329.66, 0.992, -347.92 ] - }, - { "time": 1.2667, "value": -348.35 } - ], - "translate": [ - { - "x": 8.89, - "y": 9.56, - "curve": [ 0.065, 11.51, 0.276, 24.33, 0.111, 9.62, 0.302, 1.67 ] - }, - { - "time": 0.3667, - "x": 24.1, - "y": -1.47, - "curve": [ 0.479, 23.82, 0.545, 23.42, 0.424, -4.23, 0.533, -7.49 ] - }, - { - "time": 0.6333, - "x": 20.65, - "y": -7.55, - "curve": [ 0.724, 17.83, 0.908, 4.35, 0.725, -7.6, 0.903, -1.56 ] - }, - { - "time": 1, - "x": 4.35, - "y": 2.31, - "curve": [ 1.058, 4.35, 1.197, 6.14, 1.052, 4.38, 1.17, 9.44 ] - }, - { "time": 1.2667, "x": 8.89, "y": 9.56 } - ] - }, - "neck": { - "rotate": [ - { - "value": -22.13, - "curve": [ 0.092, -22.13, 0.275, -4.12 ] - }, - { - "time": 0.3667, - "value": -4.12, - "curve": [ 0.433, -4.12, 0.567, -22.13 ] - }, - { - "time": 0.6333, - "value": -22.13, - "curve": [ 0.725, -22.13, 0.908, -4.12 ] - }, - { - "time": 1, - "value": -4.12, - "curve": [ 1.067, -4.12, 1.2, -22.13 ] - }, - { "time": 1.2667, "value": -22.13 } - ], - "translate": [ - { - "x": 19.46, - "y": -14.29, - "curve": [ 0.046, 22.71, 0.064, 24.67, 0.027, -20.08, 0.067, -33.27 ] - }, - { - "time": 0.1, - "x": 24.7, - "y": -32.71, - "curve": [ 0.121, 24.71, 0.187, 5.34, 0.136, -32.09, 0.207, -18.93 ] - }, - { - "time": 0.2333, - "x": 5.16, - "y": -13.23, - "curve": [ 0.287, 4.94, 0.337, 5.54, 0.274, -4.5, 0.332, 3.98 ] - }, - { - "time": 0.3667, - "x": 7.2, - "y": 3.98, - "curve": [ 0.426, 10.51, 0.575, 18.6, 0.433, 3.98, 0.6, -8.7 ] - }, - { - "time": 0.6333, - "x": 21.66, - "y": -14.29, - "curve": [ 0.668, 23.45, 0.697, 24.53, 0.668, -20.07, 0.697, -32.36 ] - }, - { - "time": 0.7333, - "x": 24.7, - "y": -32.71, - "curve": [ 0.788, 24.95, 0.82, 4.99, 0.782, -33.17, 0.829, -21.82 ] - }, - { - "time": 0.8667, - "x": 5.16, - "y": -13.23, - "curve": [ 0.921, 5.36, 0.955, 6.02, 0.897, -6.22, 0.965, 3.98 ] - }, - { - "time": 1, - "x": 7.71, - "y": 3.98, - "curve": [ 1.046, 9.42, 1.17, 14.8, 1.067, 3.98, 1.227, -5.97 ] - }, - { "time": 1.2667, "x": 19.46, "y": -14.29 } - ] - }, - "back-arm1": { - "rotate": [ - { - "value": 36.77, - "curve": [ 0.275, 36.57, 0.464, 23.85 ] - }, - { - "time": 0.6333, - "value": 23.86, - "curve": [ 0.891, 23.91, 1.035, 36.68 ] - }, - { "time": 1.2667, "value": 36.77 } - ], - "translate": [ - { - "x": -20.37, - "y": -12.6, - "curve": [ 0.092, -20.37, 0.567, -30.85, 0.25, -12.16, 0.508, -9.49 ] - }, - { - "time": 0.6333, - "x": -30.85, - "y": -9.16, - "curve": [ 0.725, -30.85, 1.143, -20.51, 0.794, -9.16, 1.086, -12.8 ] - }, - { "time": 1.2667, "x": -20.37, "y": -12.6 } - ] - }, - "saddle-strap-back": { - "rotate": [ - { - "value": -5.12, - "curve": [ 0.042, -5.12, 0.104, -2.7 ] - }, - { - "time": 0.1667, - "value": 0.89, - "curve": [ 0.241, 5.11, 0.317, 10.59 ] - }, - { - "time": 0.3667, - "value": 10.59, - "curve": [ 0.433, 10.59, 0.567, 0.72 ] - }, - { - "time": 0.6333, - "value": 0.72, - "curve": [ 0.733, 0.72, 0.933, 7.72 ] - }, - { - "time": 1.0333, - "value": 7.72, - "curve": [ 1.092, 7.72, 1.208, -5.12 ] - }, - { "time": 1.2667, "value": -5.12 } - ] - }, - "front-arm2": { - "rotate": [ - { - "value": 20.46, - "curve": [ 0.092, 20.46, 0.29, 10.44 ] - }, - { - "time": 0.3667, - "value": 4.66, - "curve": [ 0.493, -4.86, 0.54, -11 ] - }, - { - "time": 0.6333, - "value": -11.14, - "curve": [ 0.725, -11.27, 0.934, 1.22 ] - }, - { - "time": 1, - "value": 6.77, - "curve": [ 1.042, 10.27, 1.15, 20.26 ] - }, - { "time": 1.2667, "value": 20.46 } - ] - }, - "head": { - "rotate": [ - { - "value": 21.27, - "curve": [ 0.121, 21.36, 0.118, 5.37 ] - }, - { - "time": 0.3333, - "value": 5.74, - "curve": [ 0.443, 5.92, 0.579, 20.65 ] - }, - { - "time": 0.6333, - "value": 20.71, - "curve": [ 0.761, 20.68, 0.8, 6.02 ] - }, - { - "time": 1.0333, - "value": 5.76, - "curve": [ 1.101, 5.8, 1.208, 21.57 ] - }, - { "time": 1.2667, "value": 21.27 } - ], - "translate": [ - { - "x": 9.88, - "y": -21.53, - "curve": [ 0.066, 2.9, 0.151, -2.12, 0.05, -24.49, 0.139, -28.72 ] - }, - { - "time": 0.2, - "x": -1.68, - "y": -28.94, - "curve": [ 0.281, -0.96, 0.392, 24.71, 0.278, -29.21, 0.37, -7.39 ] - }, - { - "time": 0.4667, - "x": 24.76, - "y": -6.79, - "curve": [ 0.645, 24.69, 0.668, -1.21, 0.622, -7.06, 0.597, -30.92 ] - }, - { - "time": 0.8, - "x": -1.47, - "y": -30.78, - "curve": [ 0.89, -1.64, 0.979, 25.37, 0.877, -30.73, 0.97, -7.01 ] - }, - { - "time": 1.0667, - "x": 25.27, - "y": -6.86, - "curve": [ 1.147, 25.19, 1.217, 15.2, 1.141, -6.75, 1.217, -18.56 ] - }, - { "time": 1.2667, "x": 9.88, "y": -21.53 } - ] - }, - "back-arm2": { - "rotate": [ - { - "value": -28.13, - "curve": [ 0.32, -28.07, 0.434, 0.42 ] - }, - { - "time": 0.6333, - "value": 0.31, - "curve": [ 0.941, 0.13, 0.968, -27.95 ] - }, - { "time": 1.2667, "value": -28.13 } - ] - }, - "stirrup": { - "rotate": [ - { "value": -17.15 }, - { "time": 0.3667, "value": -11.14 }, - { "time": 0.6333, "value": -6.95 }, - { "time": 1, "value": -11.84 }, - { "time": 1.2667, "value": -17.15 } - ], - "translate": [ - { "x": 8.98, "y": 4.99 }, - { "time": 0.3667, "x": 4.85, "y": 1 }, - { "time": 0.6333, "x": 7.76, "y": -2.99 }, - { "time": 1, "x": 4.85, "y": 1 }, - { "time": 1.2667, "x": 8.98, "y": 4.99 } - ] - }, - "front-foot2": { - "rotate": [ - { "value": 36.9 }, - { "time": 0.0667, "value": 7.88 }, - { "time": 0.1333, "value": 4.67 }, - { - "time": 0.5, - "value": 6.81, - "curve": [ 0.572, 7.04, 0.605, 6.97 ] - }, - { - "time": 0.6333, - "value": 6.25, - "curve": [ 0.686, 4.19, 0.708, -105.88 ] - }, - { - "time": 0.8, - "value": -104.63, - "curve": [ 0.955, -102.9, 1.188, 34.64 ] - }, - { "time": 1.2667, "value": 36.9 } - ] - }, - "front-hand": { - "rotate": [ - { - "value": -60.7, - "curve": [ 0.318, -60.68, 0.442, -6 ] - }, - { - "time": 0.6333, - "value": -6.02, - "curve": [ 0.847, -6.04, 1.076, -60.24 ] - }, - { "time": 1.2667, "value": -60.7 } - ] - }, - "horn-back": { - "translate": [ - { "x": 7.01, "y": 42.92 }, - { "time": 0.3667, "x": 13.17, "y": 33.39 }, - { "time": 0.6333, "x": 7.68, "y": 13.94 }, - { "time": 1, "x": 12.26, "y": 35.06 }, - { "time": 1.2667, "x": 7.01, "y": 42.92 } - ] - }, - "jaw": { - "rotate": [ - { - "value": -9.46, - "curve": [ 0.088, -9.55, 0.339, -16.63 ] - }, - { - "time": 0.3667, - "value": -17.51, - "curve": [ 0.562, -23.77, 0.8, -23.24 ] - }, - { - "time": 0.8333, - "value": -23.22, - "curve": [ 0.963, -23.18, 1.179, -9.56 ] - }, - { "time": 1.2667, "value": -9.46 } - ], - "translate": [ - { - "x": -0.34, - "y": -2.02, - "curve": [ 0.092, -0.34, 0.275, 0.79, 0.092, -2.02, 0.275, 9.47 ] - }, - { - "time": 0.3667, - "x": 0.79, - "y": 9.47, - "curve": [ 0.425, 0.79, 0.575, 0.93, 0.425, 9.47, 0.575, 6.04 ] - }, - { - "time": 0.6333, - "x": 0.93, - "y": 6.09, - "curve": [ 0.642, 0.93, 0.783, 0.79, 0.714, 6.16, 0.783, 9.47 ] - }, - { - "time": 0.8333, - "x": 0.79, - "y": 9.47, - "curve": [ 0.875, 0.79, 0.958, 0.57, 0.875, 9.47, 0.979, 7.85 ] - }, - { - "time": 1, - "x": 0.57, - "y": 7.17, - "curve": [ 1.067, 0.57, 1.2, -0.34, 1.083, 4.51, 1.2, -2.02 ] - }, - { "time": 1.2667, "x": -0.34, "y": -2.02 } - ] - }, - "back-foot2": { - "rotate": [ - { - "curve": [ 0.019, 0, 0.046, 0.68 ] - }, - { - "time": 0.0667, - "value": -2.42, - "curve": [ 0.127, -11.89, 0.157, -75.22 ] - }, - { - "time": 0.3, - "value": -74.35, - "curve": [ 0.372, -74.4, 0.44, -55.45 ] - }, - { - "time": 0.4667, - "value": -38.51, - "curve": [ 0.488, -24.72, 0.512, 30.14 ] - }, - { - "time": 0.6, - "value": 30.17, - "curve": [ 0.631, 30.18, 0.649, 17.16 ] - }, - { - "time": 0.6667, - "value": 2.1, - "curve": [ 0.758, 2.1, 1.2, 0 ] - }, - { "time": 1.2667 } - ] - }, - "back-hand": { - "rotate": [ - { - "value": -26.17, - "curve": [ 0.077, -26.23, 0.165, -15.08 ] - }, - { - "time": 0.2667, - "value": -15.07, - "curve": [ 0.348, -15.06, 0.514, -27.32 ] - }, - { - "time": 0.6333, - "value": -27.37, - "curve": [ 0.745, -27.37, 0.844, -14.99 ] - }, - { - "time": 1, - "value": -15.02, - "curve": [ 1.117, -15.05, 1.104, -26.34 ] - }, - { "time": 1.2667, "value": -26.17 } - ] - }, - "tongue1": { - "rotate": [ - { "value": 21.55 }, - { "time": 0.8, "value": 0.08 }, - { "time": 1.2667, "value": 21.55 } - ] - }, - "front-foot3": { - "rotate": [ - { "value": -1.65 }, - { - "time": 0.1, - "value": -3.94, - "curve": [ 0.158, -3.94, 0.308, -3.82 ] - }, - { - "time": 0.3667, - "value": -3.82, - "curve": [ 0.433, -3.82, 0.511, -6.36 ] - }, - { - "time": 0.6333, - "value": -6.62, - "curve": [ 0.701, -7.05, 0.687, 24.84 ] - }, - { - "time": 0.7333, - "value": 25.1, - "curve": [ 0.766, 25.1, 0.821, -23.09 ] - }, - { - "time": 0.8667, - "value": -22.96, - "curve": [ 0.975, -22.65, 1.139, 10.93 ] - }, - { - "time": 1.2, - "value": 10.93, - "curve": [ 1.217, 10.93, 1.267, 5.95 ] - }, - { "time": 1.2667, "value": -1.65 } - ] - }, - "tongue2": { - "rotate": [ - { - "value": -16.02, - "curve": [ 0.286, -15.88, 0.415, -3.2 ] - }, - { - "time": 0.6333, - "value": -3.21, - "curve": [ 0.988, -3.22, 1.102, -16.12 ] - }, - { "time": 1.2667, "value": -16.02 } - ] - }, - "tongue3": { - "rotate": [ - { - "value": -16.02, - "curve": [ 0.027, -12.15, 0.123, 0.49 ] - }, - { - "time": 0.2333, - "value": 0.44, - "curve": [ 0.457, 0.33, 0.862, -36.42 ] - }, - { - "time": 1.0667, - "value": -36.41, - "curve": [ 1.168, -36.41, 1.248, -19.42 ] - }, - { "time": 1.2667, "value": -16.02 } - ] - }, - "neck2": { - "rotate": [ - { "value": 24.69 } - ], - "translate": [ - { - "x": -6.84, - "y": -1.8, - "curve": [ 0.164, -6.45, 0.256, -6.42, 0.092, -1.8, 0.308, -0.45 ] - }, - { - "time": 0.4, - "x": -6.24, - "y": -0.45, - "curve": [ 0.514, -6.09, 0.567, -6.03, 0.467, -0.45, 0.567, -1.81 ] - }, - { - "time": 0.6333, - "x": -6.03, - "y": -1.81, - "curve": [ 0.725, -6.03, 0.908, -10.81, 0.725, -1.81, 0.908, -0.35 ] - }, - { - "time": 1, - "x": -10.81, - "y": -0.35, - "curve": [ 1.067, -10.81, 1.137, -7.65, 1.067, -0.35, 1.2, -1.8 ] - }, - { "time": 1.2667, "x": -6.84, "y": -1.8 } - ] - }, - "spineboy-hip": { - "translate": [ - { - "x": 53.69, - "y": -49.21, - "curve": [ 0.118, 53.52, 0.275, 16.15, 0.092, -49.21, 0.275, -32.56 ] - }, - { - "time": 0.3667, - "x": 16.15, - "y": -32.56, - "curve": [ 0.433, 16.15, 0.542, 53.47, 0.433, -32.56, 0.567, -49.21 ] - }, - { - "time": 0.6333, - "x": 53.69, - "y": -49.21, - "curve": [ 0.742, 53.95, 0.908, 15.73, 0.725, -49.21, 0.908, -29.74 ] - }, - { - "time": 1, - "x": 15.73, - "y": -29.74, - "curve": [ 1.067, 15.73, 1.11, 54.45, 1.067, -29.74, 1.2, -49.21 ] - }, - { "time": 1.2667, "x": 53.69, "y": -49.21 } - ] - }, - "spineboy-torso": { - "rotate": [ - { - "value": -37.55, - "curve": [ 0.092, -37.55, 0.275, -12.2 ] - }, - { - "time": 0.3667, - "value": -12.2, - "curve": [ 0.498, -12.2, 0.567, -37.66 ] - }, - { - "time": 0.6333, - "value": -37.66, - "curve": [ 0.725, -37.66, 0.908, -12.19 ] - }, - { - "time": 1, - "value": -12.19, - "curve": [ 1.131, -12.19, 1.2, -37.55 ] - }, - { "time": 1.2667, "value": -37.55 } - ] - }, - "front-arm": { - "translate": [ - { "y": -5.28 }, - { "time": 0.1333, "x": -3.61, "y": -8.36 }, - { "time": 0.3667, "x": -8.05, "y": -5.53 }, - { "time": 0.6333 }, - { "time": 1, "x": -7.45, "y": -1.99 }, - { "time": 1.2667, "y": -5.28 } - ] - }, - "gun": { - "rotate": [ - { - "value": -11.68, - "curve": [ 0.03, -14.01, 0.177, -31.16 ] - }, - { - "time": 0.3, - "value": -31.16, - "curve": [ 0.368, -31.16, 0.475, -9.46 ] - }, - { - "time": 0.5333, - "value": -9.58, - "curve": [ 0.737, -9.99, 0.77, -31.38 ] - }, - { - "time": 0.9333, - "value": -31.11, - "curve": [ 0.992, -31.11, 1.108, -9.58 ] - }, - { - "time": 1.1667, - "value": -9.58, - "curve": [ 1.192, -9.58, 1.236, -9.68 ] - }, - { "time": 1.2667, "value": -11.68 } - ], - "translate": [ - { - "curve": [ 0.042, -0.34, 0.098, -0.45, 0.039, -4.02, 0.098, -6.86 ] - }, - { - "time": 0.1333, - "x": -0.45, - "y": -6.86, - "curve": [ 0.194, -0.45, 0.256, 2.36, 0.194, -6.86, 0.245, 6.35 ] - }, - { - "time": 0.3333, - "x": 2.35, - "y": 6.16, - "curve": [ 0.439, 2.35, 0.579, 0.46, 0.418, 5.98, 0.6, 2.06 ] - }, - { - "time": 0.6333, - "curve": [ 0.668, -0.29, 0.731, -0.45, 0.679, -2.83, 0.731, -6.86 ] - }, - { - "time": 0.7667, - "x": -0.45, - "y": -6.86, - "curve": [ 0.828, -0.45, 0.89, 2.35, 0.828, -6.86, 0.899, 6.27 ] - }, - { - "time": 0.9667, - "x": 2.35, - "y": 6.16, - "curve": [ 1.053, 2.36, 1.213, 0.51, 1.051, 6.03, 1.226, 2.28 ] - }, - { "time": 1.2667 } - ] - }, - "tail2": { - "rotate": [ - { - "value": -12.17, - "curve": [ 0.091, -12.17, 0.207, -1.45 ] - }, - { - "time": 0.3333, - "value": -1.45, - "curve": [ 0.441, -1.45, 0.555, -12.17 ] - }, - { - "time": 0.6667, - "value": -12.17, - "curve": [ 0.896, -12.17, 0.874, -1.45 ] - }, - { - "time": 1, - "value": -1.45, - "curve": [ 1.107, -1.45, 1.117, -12.17 ] - }, - { "time": 1.2667, "value": -12.17 } - ] - }, - "tail3": { - "rotate": [ - { - "value": -7.15, - "curve": [ 0.083, -7.15, 0.25, 0.58 ] - }, - { - "time": 0.3333, - "value": 0.58, - "curve": [ 0.408, 0.58, 0.558, -7.15 ] - }, - { - "time": 0.6333, - "value": -7.15, - "curve": [ 0.717, -7.15, 0.883, 0.75 ] - }, - { - "time": 0.9667, - "value": 0.75, - "curve": [ 1.042, 0.75, 1.192, -7.15 ] - }, - { "time": 1.2667, "value": -7.15 } - ], - "translate": [ - { - "curve": [ 0.158, 0, 0.475, -9.87, 0.158, 0, 0.475, -0.87 ] - }, - { - "time": 0.6333, - "x": -9.87, - "y": -0.87, - "curve": [ 0.792, -9.87, 1.108, 0, 0.792, -0.87, 1.108, 0 ] - }, - { "time": 1.2667 } - ] - }, - "tail4": { - "rotate": [ - { - "value": -3.83, - "curve": [ 0.013, -4.23, 0.024, -4.53 ] - }, - { - "time": 0.0333, - "value": -4.53, - "curve": [ 0.068, -4.53, 0.116, -3.13 ] - }, - { - "time": 0.1667, - "value": -0.39, - "curve": [ 0.24, 3.5, 0.318, 9.15 ] - }, - { - "time": 0.3667, - "value": 9.15, - "curve": [ 0.442, 9.15, 0.592, -4.53 ] - }, - { - "time": 0.6667, - "value": -4.53, - "curve": [ 0.75, -4.53, 0.917, 9 ] - }, - { - "time": 1, - "value": 9, - "curve": [ 1.065, 9, 1.187, -1.17 ] - }, - { "time": 1.2667, "value": -3.83 } - ], - "translate": [ - { - "curve": [ 0.158, 0, 0.475, -4.06, 0.158, 0, 0.475, 0.32 ] - }, - { - "time": 0.6333, - "x": -4.06, - "y": 0.32, - "curve": [ 0.792, -4.06, 1.108, 0, 0.792, 0.32, 1.108, 0 ] - }, - { "time": 1.2667 } - ] - }, - "tail5": { - "rotate": [ - { - "value": -7.24, - "curve": [ 0.026, -8.78, 0.048, -9.9 ] - }, - { - "time": 0.0667, - "value": -9.9, - "curve": [ 0.093, -9.9, 0.129, -9.01 ] - }, - { - "time": 0.1667, - "value": -6.6, - "curve": [ 0.248, -1.49, 0.343, 7.39 ] - }, - { - "time": 0.4, - "value": 7.39, - "curve": [ 0.475, 7.39, 0.625, -9.9 ] - }, - { - "time": 0.7, - "value": -9.9, - "curve": [ 0.783, -9.9, 0.95, 7.29 ] - }, - { - "time": 1.0333, - "value": 7.29, - "curve": [ 1.09, 7.29, 1.19, -2.46 ] - }, - { "time": 1.2667, "value": -7.24 } - ], - "translate": [ - { - "curve": [ 0.158, 0, 0.475, -7.55, 0.158, 0, 0.475, 0.73 ] - }, - { - "time": 0.6333, - "x": -7.55, - "y": 0.73, - "curve": [ 0.792, -7.55, 1.108, 0, 0.792, 0.73, 1.108, 0 ] - }, - { "time": 1.2667 } - ] - }, - "tail6": { - "rotate": [ - { - "value": -4.22, - "curve": [ 0.038, -7.4, 0.074, -9.9 ] - }, - { - "time": 0.1, - "value": -9.9, - "curve": [ 0.119, -9.9, 0.142, -9.79 ] - }, - { - "time": 0.1667, - "value": -8.22, - "curve": [ 0.255, -2.85, 0.369, 9.89 ] - }, - { - "time": 0.4333, - "value": 9.89, - "curve": [ 0.508, 9.89, 0.658, -9.9 ] - }, - { - "time": 0.7333, - "value": -9.9, - "curve": [ 0.817, -9.9, 0.983, 10.12 ] - }, - { - "time": 1.0667, - "value": 10.12, - "curve": [ 1.115, 10.12, 1.196, 1.7 ] - }, - { "time": 1.2667, "value": -4.22 } - ], - "translate": [ - { - "curve": [ 0.158, 0, 0.475, -9.06, 0.158, 0, 0.475, 1.58 ] - }, - { - "time": 0.6333, - "x": -9.06, - "y": 1.58, - "curve": [ 0.792, -9.06, 1.108, 0, 0.792, 1.58, 1.108, 0 ] - }, - { "time": 1.2667 } - ] - }, - "tail7": { - "rotate": [ - { - "value": -0.76, - "curve": [ 0.051, -5.53, 0.1, -9.9 ] - }, - { - "time": 0.1333, - "value": -9.9, - "curve": [ 0.144, -9.9, 0.155, -10.45 ] - }, - { - "time": 0.1667, - "value": -9.89, - "curve": [ 0.257, -5.87, 0.394, 11.3 ] - }, - { - "time": 0.4667, - "value": 11.3, - "curve": [ 0.542, 11.3, 0.692, -9.9 ] - }, - { - "time": 0.7667, - "value": -9.9, - "curve": [ 0.85, -9.9, 1.017, 11.52 ] - }, - { - "time": 1.1, - "value": 11.52, - "curve": [ 1.141, 11.52, 1.205, 5.07 ] - }, - { "time": 1.2667, "value": -0.76 } - ], - "translate": [ - { - "curve": [ 0.158, 0, 0.475, -9.93, 0.158, 0, 0.475, 1.32 ] - }, - { - "time": 0.6333, - "x": -9.93, - "y": 1.32, - "curve": [ 0.792, -9.93, 1.108, 0, 0.792, 1.32, 1.108, 0 ] - }, - { "time": 1.2667 } - ] - }, - "tail8": { - "rotate": [ - { - "value": 4.71, - "curve": [ 0.062, -2.19, 0.126, -10.79 ] - }, - { - "time": 0.1667, - "value": -10.79, - "curve": [ 0.25, -10.79, 0.417, 16.46 ] - }, - { - "time": 0.5, - "value": 16.46, - "curve": [ 0.575, 16.46, 0.725, -9.9 ] - }, - { - "time": 0.8, - "value": -9.9, - "curve": [ 0.883, -9.9, 1.05, 15.57 ] - }, - { - "time": 1.1333, - "value": 15.57, - "curve": [ 1.167, 15.57, 1.217, 10.43 ] - }, - { "time": 1.2667, "value": 4.71 } - ], - "translate": [ - { - "curve": [ 0.158, 0, 0.475, -12.57, 0.158, 0, 0.475, 1.97 ] - }, - { - "time": 0.6333, - "x": -12.57, - "y": 1.97, - "curve": [ 0.792, -12.57, 1.108, 0, 0.792, 1.97, 1.108, 0 ] - }, - { "time": 1.2667 } - ] - }, - "tail9": { - "rotate": [ - { - "value": 7.95, - "curve": [ 0.072, 1.87, 0.151, -6.79 ] - }, - { - "time": 0.2, - "value": -6.79, - "curve": [ 0.283, -6.79, 0.45, 15.08 ] - }, - { - "time": 0.5333, - "value": 15.08, - "curve": [ 0.608, 15.08, 0.758, -6.79 ] - }, - { - "time": 0.8333, - "value": -6.79, - "curve": [ 0.917, -6.79, 1.083, 13.8 ] - }, - { - "time": 1.1667, - "value": 13.8, - "curve": [ 1.193, 13.8, 1.229, 11.28 ] - }, - { "time": 1.2667, "value": 7.95 } - ], - "translate": [ - { - "curve": [ 0.158, 0, 0.475, -15.36, 0.158, 0, 0.475, 2.18 ] - }, - { - "time": 0.6333, - "x": -15.36, - "y": 2.18, - "curve": [ 0.792, -15.36, 1.108, 0, 0.792, 2.18, 1.108, 0 ] - }, - { "time": 1.2667 } - ] - }, - "tail10": { - "rotate": [ - { - "value": 8.87, - "curve": [ 0.078, 3.96, 0.177, -5.98 ] - }, - { - "time": 0.2333, - "value": -5.98, - "curve": [ 0.317, -5.98, 0.483, 10.93 ] - }, - { - "time": 0.5667, - "value": 10.93, - "curve": [ 0.642, 10.93, 0.792, -5.98 ] - }, - { - "time": 0.8667, - "value": -5.98, - "curve": [ 0.95, -5.98, 1.117, 11.58 ] - }, - { - "time": 1.2, - "value": 11.58, - "curve": [ 1.219, 11.58, 1.242, 10.48 ] - }, - { "time": 1.2667, "value": 8.87 } - ], - "translate": [ - { - "curve": [ 0.158, 0, 0.475, -19.3, 0.158, 0, 0.475, 1.9 ] - }, - { - "time": 0.6333, - "x": -19.3, - "y": 1.9, - "curve": [ 0.792, -19.3, 1.108, 0, 0.792, 1.9, 1.108, 0 ] - }, - { "time": 1.2667 } - ] - }, - "horn-front": { - "translate": [ - { - "x": 3.46, - "y": -20.12, - "curve": [ 0.092, 3.46, 0.243, 3.41, 0.092, -20.12, 0.292, -6.08 ] - }, - { - "time": 0.3667, - "x": 3.57, - "y": -1.24, - "curve": [ 0.407, 3.63, 0.567, 5.09, 0.484, 6.36, 0.567, 11.01 ] - }, - { - "time": 0.6333, - "x": 5.09, - "y": 11.01, - "curve": [ 0.725, 5.09, 0.807, 2.74, 0.725, 11.01, 0.918, -0.08 ] - }, - { - "time": 1, - "x": 2.77, - "y": -5.87, - "curve": [ 1.116, 2.79, 1.2, 3.46, 1.049, -9.34, 1.2, -20.12 ] - }, - { "time": 1.2667, "x": 3.46, "y": -20.12 } - ] - }, - "saddle-strap-front": { - "rotate": [ - { - "value": 3.65, - "curve": [ 0.091, 3.65, 0.233, 5.42 ] - }, - { - "time": 0.3667, - "value": 5.41, - "curve": [ 0.45, 5.4, 0.566, 3.49 ] - }, - { - "time": 0.6333, - "value": 3.49, - "curve": [ 0.732, 3.49, 0.89, 5.39 ] - }, - { - "time": 1.0333, - "value": 5.38, - "curve": [ 1.112, 5.38, 1.207, 3.65 ] - }, - { "time": 1.2667, "value": 3.65 } - ] - }, - "jaw-inside": { - "translate": [ - { "x": -8.34, "y": -3.22 }, - { "time": 0.6333, "x": 1.17, "y": -1.6 }, - { "time": 1.2667, "x": -8.34, "y": -3.22 } - ] - }, - "bone": { - "rotate": [ - { - "value": 2, - "curve": [ 0.031, 3.38, 0.075, 4.99 ] - }, - { - "time": 0.1, - "value": 5.01, - "curve": [ 0.194, 5.05, 0.398, -0.88 ] - }, - { - "time": 0.4667, - "value": -0.83, - "curve": [ 0.538, -0.78, 0.671, 4.88 ] - }, - { - "time": 0.7333, - "value": 4.88, - "curve": [ 0.846, 4.88, 1.032, -0.57 ] - }, - { - "time": 1.1, - "value": -0.57, - "curve": [ 1.142, -0.57, 1.201, 0.04 ] - }, - { "time": 1.2667, "value": 2 } - ] - }, - "bone2": { - "rotate": [ - { - "curve": [ 0.019, -8.93, 0.062, -21.67 ] - }, - { - "time": 0.1333, - "value": -21.67, - "curve": [ 0.23, -21.67, 0.346, 21.39 ] - }, - { - "time": 0.4667, - "value": 21.32, - "curve": [ 0.639, 21.22, 0.626, -21.47 ] - }, - { - "time": 0.7667, - "value": -21.67, - "curve": [ 0.863, -21.81, 1.013, 21.01 ] - }, - { - "time": 1.1, - "value": 21.32, - "curve": [ 1.204, 21.68, 1.245, 9.94 ] - }, - { "time": 1.2667 } - ] - }, - "bone3": { - "rotate": [ - { - "curve": [ 0.083, 0, 0.25, 11.45 ] - }, - { - "time": 0.3333, - "value": 11.45, - "curve": [ 0.407, 11.39, 0.547, 0.26 ] - }, - { - "time": 0.6333, - "value": 0.18, - "curve": [ 0.708, 0.18, 0.858, 11.29 ] - }, - { - "time": 0.9333, - "value": 11.29, - "curve": [ 1.017, 11.29, 1.183, 0 ] - }, - { "time": 1.2667 } - ] - }, - "bone4": { - "rotate": [ - { - "curve": [ 0, -6.15, 0.044, -10.86 ] - }, - { - "time": 0.1, - "value": -11.06, - "curve": [ 0.161, -11.27, 0.267, 10.59 ] - }, - { - "time": 0.3667, - "value": 10.49, - "curve": [ 0.554, 10.32, 0.603, -10.61 ] - }, - { - "time": 0.7333, - "value": -10.98, - "curve": [ 0.782, -10.93, 0.949, 10.3 ] - }, - { - "time": 1.0333, - "value": 10.41, - "curve": [ 1.144, 10.56, 1.255, 4.55 ] - }, - { "time": 1.2667 } - ] - }, - "bone5": { - "rotate": [ - { - "value": 6.23, - "curve": [ 0.042, 3.41, 0.105, 3.02 ] - }, - { - "time": 0.1667, - "value": 3.03, - "curve": [ 0.222, 3.04, 0.334, 11.98 ] - }, - { - "time": 0.4333, - "value": 11.93, - "curve": [ 0.561, 11.87, 0.662, 3.23 ] - }, - { - "time": 0.8, - "value": 3.22, - "curve": [ 0.849, 3.21, 1.016, 11.92 ] - }, - { - "time": 1.1, - "value": 12.03, - "curve": [ 1.162, 12.12, 1.223, 9.21 ] - }, - { "time": 1.2667, "value": 6.23 } - ] - }, - "spineboy-front-arm-target": { - "translate": [ - {}, - { "time": 0.3667, "x": -12.14, "y": 8.93 }, - { "time": 0.6333 }, - { "time": 1, "x": -10.79, "y": 7.94 }, - { "time": 1.2667 } - ] - }, - "front-hand2": { - "rotate": [ - { - "curve": [ 0.092, 0, 0.275, 15.62 ] - }, - { - "time": 0.3667, - "value": 15.62, - "curve": [ 0.433, 15.62, 0.567, 0 ] - }, - { - "time": 0.6333, - "curve": [ 0.733, 0, 0.933, 15.62 ] - }, - { - "time": 1.0333, - "value": 15.62, - "curve": [ 1.092, 15.62, 1.208, 0 ] - }, - { "time": 1.2667 } - ] - }, - "front-bracer": { - "rotate": [ - { "value": 52.99 } - ] - }, - "head-control": { - "translate": [ - { - "y": -55.1, - "curve": [ 0.063, -1.75, 0.253, -5.83, 0.092, -55.1, 0.298, -20 ] - }, - { - "time": 0.3667, - "x": -5.85, - "y": -6.98, - "curve": [ 0.437, -5.86, 0.539, -2.89, 0.44, 6.9, 0.567, 28.15 ] - }, - { - "time": 0.6333, - "y": 28.15, - "curve": [ 0.709, 2.32, 0.858, 5.7, 0.708, 28.15, 0.867, 1.15 ] - }, - { - "time": 0.9333, - "x": 5.7, - "y": -12.05, - "curve": [ 1.017, 5.7, 1.157, 2.64, 1.02, -29.22, 1.183, -55.1 ] - }, - { "time": 1.2667, "y": -55.1 } - ] - }, - "leg-control": { - "translate": [ - { - "curve": [ 0.021, 0, 0.048, 3.27, 0.021, 0, 0.044, -99.76 ] - }, - { - "time": 0.0667, - "x": 5.16, - "y": -99.76, - "curve": [ 0.099, 8.46, 0.145, 12.65, 0.089, -99.76, 0.134, 67.18 ] - }, - { - "time": 0.1667, - "x": 12.65, - "y": 68.39, - "curve": [ 0.188, 12.65, 0.251, 7.24, 0.211, 70.03, 0.244, -68.23 ] - }, - { - "time": 0.2667, - "x": 4.95, - "y": -68.19, - "curve": [ 0.324, -3.3, 0.337, -4.96, 0.307, -68.11, 0.329, -15.36 ] - }, - { - "time": 0.3667, - "x": -10.49, - "y": -14.91, - "curve": [ 0.404, -17.53, 0.441, -25.51, 0.416, -14.33, 0.484, -84.78 ] - }, - { - "time": 0.5, - "x": -25.51, - "y": -101.71, - "curve": [ 0.566, -25.51, 0.634, -23.99, 0.543, -148.75, 0.634, -191.81 ] - }, - { - "time": 0.7, - "x": -21.81, - "y": -183.43, - "curve": [ 0.915, -14.78, 1.123, 0, 0.915, -156.4, 1.123, 0 ] - }, - { "time": 1.2667 } - ] - }, - "head2": { - "rotate": [ - { - "value": 11.97, - "curve": [ 0.021, 10.46, 0.104, 4.49 ] - }, - { - "time": 0.1667, - "value": 4.55, - "curve": [ 0.312, 4.71, 0.419, 14.2 ] - }, - { - "time": 0.5, - "value": 14.11, - "curve": [ 0.671, 13.92, 0.686, 4.54 ] - }, - { - "time": 0.8, - "value": 4.56, - "curve": [ 0.953, 4.59, 1.029, 14.2 ] - }, - { - "time": 1.1333, - "value": 14.13, - "curve": [ 1.186, 14.1, 1.214, 14.03 ] - }, - { "time": 1.2667, "value": 11.97 } - ], - "scale": [ - { - "curve": [ 0.011, 0.995, 0.122, 0.985, 0.055, 1.007, 0.104, 1.011 ] - }, - { - "time": 0.1667, - "x": 0.985, - "y": 1.012, - "curve": [ 0.256, 0.985, 0.415, 1.014, 0.245, 1.013, 0.419, 0.988 ] - }, - { - "time": 0.5, - "x": 1.013, - "y": 0.988, - "curve": [ 0.579, 1.013, 0.693, 0.988, 0.62, 0.988, 0.713, 1.014 ] - }, - { - "time": 0.8, - "x": 0.988, - "y": 1.014, - "curve": [ 0.881, 0.988, 1.075, 1.014, 0.908, 1.014, 1.033, 0.988 ] - }, - { - "time": 1.1333, - "x": 1.014, - "y": 0.989, - "curve": [ 1.181, 1.014, 1.2, 1.011, 1.164, 0.989, 1.23, 0.995 ] - }, - { "time": 1.2667 } - ] - } - }, - "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.6333, "name": "footstep" }, - { "time": 1.2667, "name": "footstep" } - ] - } -} -} \ No newline at end of file diff --git a/spine-cocos2dx/example/Resources/common/raptor.atlas b/spine-cocos2dx/example/Resources/common/raptor.atlas deleted file mode 100644 index 69ed03ea6..000000000 --- a/spine-cocos2dx/example/Resources/common/raptor.atlas +++ /dev/null @@ -1,88 +0,0 @@ -raptor.png - size: 1024, 512 - filter: Linear, Linear - scale: 0.5 -back-arm - bounds: 130, 32, 46, 25 -back-bracer - bounds: 215, 11, 39, 28 -back-hand - bounds: 847, 25, 36, 34 -back-knee - bounds: 2, 8, 49, 67 -back-thigh - bounds: 327, 8, 39, 24 -eyes-open - bounds: 232, 309, 47, 45 -front-arm - bounds: 421, 99, 48, 26 -front-bracer - bounds: 885, 30, 41, 29 -front-hand - bounds: 784, 184, 41, 38 -front-open-hand - bounds: 771, 310, 43, 44 -front-thigh - bounds: 635, 192, 57, 29 -gun - bounds: 636, 83, 107, 103 -gun-nohand - bounds: 174, 83, 105, 102 -head - bounds: 291, 71, 136, 149 - rotate: 270 -lower-leg - bounds: 930, 123, 73, 98 -mouth-grind - bounds: 798, 29, 47, 30 -mouth-smile - bounds: 749, 29, 47, 30 -neck - bounds: 281, 333, 18, 21 -raptor-back-arm - bounds: 470, 11, 82, 86 - rotate: 180 -raptor-body - bounds: 2, 121, 632, 233 -raptor-front-arm - bounds: 415, 18, 81, 102 -raptor-front-leg - bounds: 525, 163, 191, 257 - rotate: 90 -raptor-hindleg-back - bounds: 746, 139, 169, 215 - rotate: 180 -raptor-horn - bounds: 2, 274, 182, 80 -raptor-horn-back - bounds: 752, 61, 176, 77 -raptor-jaw - bounds: 553, 2, 126, 138 - rotate: 270 -raptor-jaw-tooth - bounds: 687, 223, 37, 48 -raptor-mouth-inside - bounds: 178, 12, 36, 41 -raptor-saddle-strap-back - bounds: 693, 7, 54, 74 -raptor-saddle-strap-front - bounds: 2, 77, 57, 95 -raptor-saddle-w-shadow - bounds: 2, 69, 162, 171 - rotate: 90 -raptor-tail-shadow - bounds: 150, 25, 189, 63 -raptor-tongue - bounds: 63, 13, 86, 64 -stirrup-back - bounds: 341, 34, 44, 35 -stirrup-front - bounds: 185, 304, 45, 50 -stirrup-strap - bounds: 533, 221, 49, 46 - rotate: 90 -torso - bounds: 930, 30, 54, 91 -visor - bounds: 917, 223, 131, 84 - rotate: 90 diff --git a/spine-cocos2dx/example/Resources/common/raptor.png b/spine-cocos2dx/example/Resources/common/raptor.png deleted file mode 100644 index 2fd70ae4e..000000000 Binary files a/spine-cocos2dx/example/Resources/common/raptor.png and /dev/null differ diff --git a/spine-cocos2dx/example/Resources/common/spineboy-pro.json b/spine-cocos2dx/example/Resources/common/spineboy-pro.json deleted file mode 100644 index 345ba7414..000000000 --- a/spine-cocos2dx/example/Resources/common/spineboy-pro.json +++ /dev/null @@ -1,8798 +0,0 @@ -{ -"skeleton": { - "hash": "/v2SWUlocF0", - "spine": "4.3.37-beta", - "x": -188.63, - "y": -7.94, - "width": 418.45, - "height": 686.2, - "images": "./images/", - "audio": "" -}, -"bones": [ - { "name": "root", "rotation": 0.05 }, - { "name": "hip", "parent": "root", "y": 247.27 }, - { "name": "crosshair", "parent": "root", "x": 302.83, "y": 569.45, "color": "ff3f00ff", "icon": "circle" }, - { - "name": "aim-constraint-target", - "parent": "hip", - "length": 26.24, - "rotation": 19.61, - "x": 1.02, - "y": 5.62, - "color": "abe323ff" - }, - { "name": "rear-foot-target", "parent": "root", "x": 61.91, "y": 0.42, "color": "ff3f00ff", "icon": "ik" }, - { "name": "rear-leg-target", "parent": "rear-foot-target", "x": -33.91, "y": 37.34, "color": "ff3f00ff", "icon": "ik" }, - { - "name": "rear-thigh", - "parent": "hip", - "length": 85.72, - "rotation": -72.54, - "x": 8.91, - "y": -5.63, - "color": "ff000dff" - }, - { - "name": "rear-shin", - "parent": "rear-thigh", - "length": 121.88, - "rotation": -19.83, - "x": 86.1, - "y": -1.33, - "color": "ff000dff" - }, - { - "name": "rear-foot", - "parent": "rear-shin", - "length": 51.58, - "rotation": 45.78, - "x": 121.46, - "y": -0.76, - "color": "ff000dff" - }, - { - "name": "back-foot-tip", - "parent": "rear-foot", - "length": 50.3, - "rotation": -0.85, - "x": 51.17, - "y": 0.24, - "inherit": "noRotationOrReflection", - "color": "ff000dff" - }, - { "name": "board-ik", "parent": "root", "x": -131.78, "y": 69.09, "color": "4c56ffff", "icon": "arrows" }, - { "name": "clipping", "parent": "root" }, - { - "name": "hoverboard-controller", - "parent": "root", - "rotation": -0.28, - "x": -329.69, - "y": 69.82, - "color": "ff0004ff", - "icon": "arrowsB" - }, - { "name": "exhaust1", "parent": "hoverboard-controller", "rotation": 3.02, "x": -249.68, "y": 53.39 }, - { "name": "exhaust2", "parent": "hoverboard-controller", "rotation": 26.34, "x": -191.6, "y": -22.92 }, - { - "name": "exhaust3", - "parent": "hoverboard-controller", - "rotation": -12.34, - "x": -236.03, - "y": 80.54, - "scaleX": 0.7847, - "scaleY": 0.7847 - }, - { "name": "portal-root", "parent": "root", "x": 12.9, "y": 328.54, "scaleX": 2.0334, "scaleY": 2.0334 }, - { "name": "flare1", "parent": "portal-root", "x": -6.34, "y": -161.57, "icon": "particles" }, - { "name": "flare10", "parent": "portal-root", "x": -6.34, "y": -161.57, "icon": "particles" }, - { "name": "flare2", "parent": "portal-root", "x": -6.34, "y": -161.57, "icon": "particles" }, - { "name": "flare3", "parent": "portal-root", "x": -6.34, "y": -161.57, "icon": "particles" }, - { "name": "flare4", "parent": "portal-root", "x": -6.34, "y": -161.57, "icon": "particles" }, - { "name": "flare5", "parent": "portal-root", "x": -6.34, "y": -161.57, "icon": "particles" }, - { "name": "flare6", "parent": "portal-root", "x": -6.34, "y": -161.57, "icon": "particles" }, - { "name": "flare7", "parent": "portal-root", "x": -6.34, "y": -161.57, "icon": "particles" }, - { "name": "flare8", "parent": "portal-root", "x": -6.34, "y": -161.57, "icon": "particles" }, - { "name": "flare9", "parent": "portal-root", "x": -6.34, "y": -161.57, "icon": "particles" }, - { - "name": "torso", - "parent": "hip", - "length": 42.52, - "rotation": 103.82, - "x": -1.62, - "y": 4.9, - "color": "e0da19ff" - }, - { "name": "torso2", "parent": "torso", "length": 42.52, "x": 42.52, "color": "e0da19ff" }, - { "name": "torso3", "parent": "torso2", "length": 42.52, "x": 42.52, "color": "e0da19ff" }, - { "name": "front-shoulder", "parent": "torso3", "rotation": 255.89, "x": 18.72, "y": 19.33, "color": "00ff04ff" }, - { "name": "front-upper-arm", "parent": "front-shoulder", "length": 69.45, "rotation": -87.51, "color": "00ff04ff" }, - { - "name": "front-bracer", - "parent": "front-upper-arm", - "length": 40.57, - "rotation": 18.3, - "x": 68.8, - "y": -0.68, - "color": "00ff04ff" - }, - { - "name": "front-fist", - "parent": "front-bracer", - "length": 65.39, - "rotation": 12.43, - "x": 40.57, - "y": 0.2, - "color": "00ff04ff" - }, - { "name": "front-foot-target", "parent": "root", "x": -13.53, "y": 0.04, "color": "ff3f00ff", "icon": "ik" }, - { "name": "front-leg-target", "parent": "front-foot-target", "x": -28.4, "y": 29.06, "color": "ff3f00ff", "icon": "ik" }, - { - "name": "front-thigh", - "parent": "hip", - "length": 74.81, - "rotation": -95.51, - "x": -17.46, - "y": -11.64, - "color": "00ff04ff" - }, - { - "name": "front-shin", - "parent": "front-thigh", - "length": 128.77, - "rotation": -2.21, - "x": 78.69, - "y": 1.6, - "color": "00ff04ff" - }, - { - "name": "front-foot", - "parent": "front-shin", - "length": 41.01, - "rotation": 51.27, - "x": 128.76, - "y": -0.34, - "color": "00ff04ff" - }, - { - "name": "front-foot-tip", - "parent": "front-foot", - "length": 56.03, - "rotation": -1.68, - "x": 41.42, - "y": -0.09, - "inherit": "noRotationOrReflection", - "color": "00ff04ff" - }, - { "name": "back-shoulder", "parent": "torso3", "rotation": -104.11, "x": 7.32, "y": -19.22, "color": "ff000dff" }, - { "name": "rear-upper-arm", "parent": "back-shoulder", "length": 51.94, "rotation": -65.45, "color": "ff000dff" }, - { "name": "rear-bracer", "parent": "rear-upper-arm", "length": 34.56, "rotation": 23.15, "x": 51.36, "color": "ff000dff" }, - { - "name": "gun", - "parent": "rear-bracer", - "length": 43.11, - "rotation": -5.43, - "x": 34.42, - "y": -0.45, - "color": "ff000dff" - }, - { "name": "gun-tip", "parent": "gun", "rotation": 7.1, "x": 200.78, "y": 52.5, "color": "ff0000ff" }, - { - "name": "neck", - "parent": "torso3", - "length": 25.45, - "rotation": -31.54, - "x": 42.46, - "y": -0.31, - "color": "e0da19ff" - }, - { - "name": "head", - "parent": "neck", - "length": 131.79, - "rotation": 26.1, - "x": 27.66, - "y": -0.26, - "color": "e0da19ff" - }, - { - "name": "hair1", - "parent": "head", - "length": 47.23, - "rotation": -49.1, - "x": 149.83, - "y": -59.77, - "color": "e0da19ff" - }, - { - "name": "hair2", - "parent": "hair1", - "length": 55.57, - "rotation": 50.42, - "x": 47.23, - "y": 0.19, - "color": "e0da19ff" - }, - { - "name": "hair3", - "parent": "head", - "length": 62.22, - "rotation": -32.17, - "x": 164.14, - "y": 3.68, - "color": "e0da19ff" - }, - { - "name": "hair4", - "parent": "hair3", - "length": 80.28, - "rotation": 83.71, - "x": 62.22, - "y": -0.04, - "color": "e0da19ff" - }, - { "name": "hoverboard-thruster-front", "parent": "hoverboard-controller", "rotation": -29.2, "x": 95.77, "y": -2.99, "inherit": "noRotationOrReflection" }, - { "name": "hoverboard-thruster-rear", "parent": "hoverboard-controller", "rotation": -29.2, "x": -76.47, "y": -4.88, "inherit": "noRotationOrReflection" }, - { "name": "hoverglow-front", "parent": "hoverboard-thruster-front", "rotation": 0.17, "x": -1.78, "y": -37.79 }, - { "name": "hoverglow-rear", "parent": "hoverboard-thruster-rear", "rotation": 0.17, "x": 1.06, "y": -35.66 }, - { - "name": "muzzle", - "parent": "rear-bracer", - "rotation": 3.06, - "x": 242.34, - "y": 34.26, - "color": "ffb900ff", - "icon": "muzzleFlash" - }, - { "name": "muzzle-ring", "parent": "muzzle", "color": "ffb900ff" }, - { "name": "muzzle-ring2", "parent": "muzzle", "color": "ffb900ff" }, - { "name": "muzzle-ring3", "parent": "muzzle", "color": "ffb900ff" }, - { "name": "muzzle-ring4", "parent": "muzzle", "color": "ffb900ff" }, - { "name": "portal", "parent": "portal-root" }, - { "name": "portal-shade", "parent": "portal-root" }, - { "name": "portal-streaks1", "parent": "portal-root" }, - { "name": "portal-streaks2", "parent": "portal-root" }, - { "name": "side-glow1", "parent": "hoverboard-controller", "x": -110.56, "y": 2.62, "color": "000effff" }, - { - "name": "side-glow2", - "parent": "hoverboard-controller", - "x": -110.56, - "y": 2.62, - "scaleX": 0.738, - "scaleY": 0.738, - "color": "000effff" - }, - { "name": "head-control", "parent": "head", "x": 110.21, "color": "00a220ff", "icon": "arrows" } -], -"slots": [ - { "name": "portal-bg", "bone": "portal" }, - { "name": "portal-shade", "bone": "portal-shade" }, - { "name": "portal-streaks2", "bone": "portal-streaks2", "blend": "additive" }, - { "name": "portal-streaks1", "bone": "portal-streaks1", "blend": "additive" }, - { "name": "portal-flare8", "bone": "flare8", "color": "c3cbffff", "blend": "additive" }, - { "name": "portal-flare9", "bone": "flare9", "color": "c3cbffff", "blend": "additive" }, - { "name": "portal-flare10", "bone": "flare10", "color": "c3cbffff", "blend": "additive" }, - { "name": "clipping", "bone": "clipping" }, - { "name": "exhaust3", "bone": "exhaust3", "color": "5eb4ffff", "blend": "additive" }, - { "name": "hoverboard-thruster-rear", "bone": "hoverboard-thruster-rear" }, - { "name": "hoverboard-thruster-front", "bone": "hoverboard-thruster-front" }, - { "name": "hoverboard-board", "bone": "hoverboard-controller" }, - { "name": "side-glow1", "bone": "side-glow1", "color": "ff8686ff", "blend": "additive" }, - { "name": "side-glow3", "bone": "side-glow1", "color": "ff8686ff", "blend": "additive" }, - { "name": "side-glow2", "bone": "side-glow2", "color": "ff8686ff", "blend": "additive" }, - { "name": "hoverglow-front", "bone": "hoverglow-front", "color": "5eb4ffff", "blend": "additive" }, - { "name": "hoverglow-rear", "bone": "hoverglow-rear", "color": "5eb4ffff", "blend": "additive" }, - { "name": "exhaust1", "bone": "exhaust2", "color": "5eb4ffff", "blend": "additive" }, - { "name": "exhaust2", "bone": "exhaust1", "color": "5eb4ffff", "blend": "additive" }, - { "name": "rear-upper-arm", "bone": "rear-upper-arm", "attachment": "rear-upper-arm" }, - { "name": "rear-bracer", "bone": "rear-bracer", "attachment": "rear-bracer" }, - { "name": "gun", "bone": "gun", "attachment": "gun" }, - { "name": "rear-foot", "bone": "rear-foot", "attachment": "rear-foot" }, - { "name": "rear-thigh", "bone": "rear-thigh", "attachment": "rear-thigh" }, - { "name": "rear-shin", "bone": "rear-shin", "attachment": "rear-shin" }, - { "name": "neck", "bone": "neck", "attachment": "neck" }, - { "name": "torso", "bone": "torso", "attachment": "torso" }, - { "name": "front-upper-arm", "bone": "front-upper-arm", "attachment": "front-upper-arm" }, - { "name": "head", "bone": "head", "attachment": "head" }, - { "name": "eye", "bone": "head", "attachment": "eye-indifferent" }, - { "name": "front-thigh", "bone": "front-thigh", "attachment": "front-thigh" }, - { "name": "front-foot", "bone": "front-foot", "attachment": "front-foot" }, - { "name": "front-shin", "bone": "front-shin", "attachment": "front-shin" }, - { "name": "mouth", "bone": "head", "attachment": "mouth-smile" }, - { "name": "goggles", "bone": "head", "attachment": "goggles" }, - { "name": "front-bracer", "bone": "front-bracer", "attachment": "front-bracer" }, - { "name": "front-fist", "bone": "front-fist", "attachment": "front-fist-closed" }, - { "name": "muzzle", "bone": "muzzle" }, - { "name": "head-bb", "bone": "head" }, - { "name": "portal-flare1", "bone": "flare1", "color": "c3cbffff", "blend": "additive" }, - { "name": "portal-flare2", "bone": "flare2", "color": "c3cbffff", "blend": "additive" }, - { "name": "portal-flare3", "bone": "flare3", "color": "c3cbffff", "blend": "additive" }, - { "name": "portal-flare4", "bone": "flare4", "color": "c3cbffff", "blend": "additive" }, - { "name": "portal-flare5", "bone": "flare5", "color": "c3cbffff", "blend": "additive" }, - { "name": "portal-flare6", "bone": "flare6", "color": "c3cbffff", "blend": "additive" }, - { "name": "portal-flare7", "bone": "flare7", "color": "c3cbffff", "blend": "additive" }, - { "name": "crosshair", "bone": "crosshair" }, - { "name": "muzzle-glow", "bone": "gun-tip", "color": "ffffff00", "blend": "additive" }, - { "name": "muzzle-ring", "bone": "muzzle-ring", "color": "d8baffff", "blend": "additive" }, - { "name": "muzzle-ring2", "bone": "muzzle-ring2", "color": "d8baffff", "blend": "additive" }, - { "name": "muzzle-ring3", "bone": "muzzle-ring3", "color": "d8baffff", "blend": "additive" }, - { "name": "muzzle-ring4", "bone": "muzzle-ring4", "color": "d8baffff", "blend": "additive" } -], -"constraints": [ - { - "type": "transform", - "name": "shoulder", - "source": "front-shoulder", - "bones": [ "back-shoulder" ], - "x": 40.17, - "y": -1.66, - "properties": { - "x": { - "to": { - "x": { "max": 100, "scale": 1 } - } - }, - "y": { - "to": { - "y": { "max": 100, "scale": 1 } - } - } - }, - "mixX": -1 - }, - { - "type": "ik", - "name": "board-ik", - "target": "board-ik", - "bones": [ "hoverboard-controller" ] - }, - { - "type": "transform", - "name": "front-foot-board-transform", - "source": "hoverboard-controller", - "bones": [ "front-foot-target" ], - "x": -69.8, - "y": 20.7, - "properties": { - "rotate": { - "to": { - "rotate": { "max": 100, "scale": 1 } - } - }, - "x": { - "to": { - "x": { "max": 100, "scale": 1 } - } - }, - "y": { - "to": { - "y": { "max": 100, "scale": 1 } - } - }, - "scaleX": { - "to": { - "scaleX": { "scale": 1 } - } - }, - "scaleY": { - "to": { - "scaleY": { "scale": 1 } - } - }, - "shearY": { - "to": { - "shearY": { "max": 100, "scale": 1 } - } - } - }, - "mixRotate": 0, - "mixX": 0, - "mixScaleX": 0, - "mixShearY": 0 - }, - { - "type": "transform", - "name": "rear-foot-board-transform", - "source": "hoverboard-controller", - "bones": [ "rear-foot-target" ], - "x": 86.6, - "y": 21.3, - "properties": { - "rotate": { - "to": { - "rotate": { "max": 100, "scale": 1 } - } - }, - "x": { - "to": { - "x": { "max": 100, "scale": 1 } - } - }, - "y": { - "to": { - "y": { "max": 100, "scale": 1 } - } - }, - "scaleX": { - "to": { - "scaleX": { "scale": 1 } - } - }, - "scaleY": { - "to": { - "scaleY": { "scale": 1 } - } - }, - "shearY": { - "to": { - "shearY": { "max": 100, "scale": 1 } - } - } - }, - "mixRotate": 0, - "mixX": 0, - "mixScaleX": 0, - "mixShearY": 0 - }, - { - "type": "ik", - "name": "front-leg-ik", - "target": "front-leg-target", - "bones": [ "front-thigh", "front-shin" ], - "bendPositive": false - }, - { - "type": "ik", - "name": "rear-leg-ik", - "target": "rear-leg-target", - "bones": [ "rear-thigh", "rear-shin" ], - "bendPositive": false - }, - { - "type": "ik", - "name": "front-foot-ik", - "target": "front-foot-target", - "bones": [ "front-foot" ] - }, - { - "type": "ik", - "name": "rear-foot-ik", - "target": "rear-foot-target", - "bones": [ "rear-foot" ] - }, - { - "type": "ik", - "name": "aim-torso-ik", - "target": "crosshair", - "bones": [ "aim-constraint-target" ] - }, - { - "type": "transform", - "name": "aim-torso-transform", - "source": "aim-constraint-target", - "bones": [ "torso" ], - "rotation": 69.5, - "properties": { - "rotate": { - "to": { - "rotate": { "max": 100, "scale": 1 } - } - } - }, - "mixRotate": 0 - }, - { - "type": "transform", - "name": "aim-head-transform", - "source": "aim-constraint-target", - "bones": [ "head" ], - "rotation": 84.3, - "properties": { - "rotate": { - "to": { - "rotate": { "max": 100, "scale": 1 } - } - } - }, - "mixRotate": 0 - }, - { - "type": "transform", - "name": "aim-front-arm-transform", - "source": "aim-constraint-target", - "bones": [ "front-upper-arm" ], - "rotation": -180, - "properties": { - "rotate": { - "to": { - "rotate": { "max": 100, "scale": 1 } - } - } - }, - "mixRotate": 0 - }, - { - "type": "ik", - "name": "aim-ik", - "target": "crosshair", - "bones": [ "rear-upper-arm" ], - "mix": 0 - }, - { - "type": "transform", - "name": "toes-board", - "source": "hoverboard-controller", - "bones": [ "front-foot-tip", "back-foot-tip" ], - "properties": { - "rotate": { - "to": { - "rotate": { "max": 100, "scale": 1 } - } - } - }, - "mixRotate": 0 - } -], -"skins": [ - { - "name": "default", - "attachments": { - "clipping": { - "clipping": { - "type": "clipping", - "end": "head-bb", - "vertexCount": 3, - "vertices": [ 18.89, -228.46, 1471.52, 140.96, 34.01, 930.06 ], - "color": "ce3a3aff" - } - }, - "crosshair": { - "crosshair": { "width": 89, "height": 89 } - }, - "exhaust1": { - "hoverglow-small": { "scaleX": 0.4629, "scaleY": 0.8129, "rotation": -83.07, "width": 274, "height": 75 } - }, - "exhaust2": { - "hoverglow-small": { - "x": 0.01, - "y": -0.76, - "scaleX": 0.4208, - "scaleY": 0.8403, - "rotation": -89.25, - "width": 274, - "height": 75 - } - }, - "exhaust3": { - "hoverglow-small": { "scaleX": 0.4629, "scaleY": 0.8129, "rotation": -83.07, "width": 274, "height": 75 } - }, - "eye": { - "eye-indifferent": { - "type": "mesh", - "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], - "triangles": [ 1, 3, 0, 1, 2, 3 ], - "vertices": [ 2, 66, -36.8, -91.35, 0.3, 46, 73.41, -91.35, 0.7, 2, 66, -87.05, -13.11, 0.70968, 46, 23.16, -13.11, 0.29032, 2, 66, -12.18, 34.99, 0.82818, 46, 98.03, 34.99, 0.17182, 2, 66, 38.07, -43.25, 0.59781, 46, 148.28, -43.25, 0.40219 ], - "hull": 4, - "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], - "width": 93, - "height": 89 - }, - "eye-surprised": { - "type": "mesh", - "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], - "triangles": [ 1, 2, 3, 1, 3, 0 ], - "vertices": [ 2, 66, -46.74, -89.7, 0.3, 46, 63.47, -89.7, 0.7, 2, 66, -77.58, -1.97, 0.71, 46, 32.63, -1.97, 0.29, 2, 66, 6.38, 27.55, 0.83, 46, 116.59, 27.55, 0.17, 2, 66, 37.22, -60.19, 0.6, 46, 147.44, -60.19, 0.4 ], - "hull": 4, - "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], - "width": 93, - "height": 89 - } - }, - "front-bracer": { - "front-bracer": { "x": 12.03, "y": -1.68, "rotation": 79.6, "width": 58, "height": 80 } - }, - "front-fist": { - "front-fist-closed": { "x": 35.5, "y": 6, "rotation": 67.16, "width": 75, "height": 82 }, - "front-fist-open": { "x": 39.57, "y": 7.76, "rotation": 67.16, "width": 86, "height": 87 } - }, - "front-foot": { - "front-foot": { - "type": "mesh", - "uvs": [ 0.59417, 0.23422, 0.62257, 0.30336, 0.6501, 0.37036, 0.67637, 0.38404, 0.72068, 0.4071, 0.76264, 0.42894, 1, 0.70375, 1, 1, 0.65517, 1, 0.46923, 0.99999, 0, 1, 0, 0.39197, 0.17846, 0, 0.49796, 0 ], - "triangles": [ 8, 9, 3, 4, 8, 3, 5, 8, 4, 6, 8, 5, 8, 6, 7, 11, 1, 10, 0, 12, 13, 0, 11, 12, 0, 1, 11, 9, 2, 3, 1, 2, 10, 9, 10, 2 ], - "vertices": [ 2, 38, 18.17, 41.57, 0.7896, 39, 12.46, 46.05, 0.2104, 2, 38, 24.08, 40.76, 0.71228, 39, 16.12, 41.34, 0.28772, 2, 38, 29.81, 39.98, 0.55344, 39, 19.67, 36.78, 0.44656, 2, 38, 32.81, 41.67, 0.38554, 39, 23, 35.89, 0.61446, 2, 38, 37.86, 44.52, 0.25567, 39, 28.61, 34.4, 0.74433, 2, 38, 42.65, 47.22, 0.17384, 39, 33.92, 32.99, 0.82616, 1, 39, 64.15, 14.56, 1, 1, 39, 64.51, -5.87, 1, 1, 39, 21.08, -6.64, 1, 2, 38, 44.67, -6.77, 0.5684, 39, -2.34, -6.97, 0.4316, 1, 38, 3.1, -48.81, 1, 1, 38, -26.73, -19.31, 1, 1, 38, -30.15, 15.69, 1, 1, 38, -1.84, 44.32, 1 ], - "hull": 14, - "edges": [ 14, 16, 16, 18, 18, 20, 4, 18, 20, 22, 24, 26, 22, 24, 12, 14, 10, 12, 2, 4, 2, 20, 4, 6, 6, 16, 2, 0, 0, 26, 6, 8, 8, 10 ], - "width": 126, - "height": 69 - } - }, - "front-shin": { - "front-shin": { - "type": "mesh", - "uvs": [ 0.90031, 0.05785, 1, 0.12828, 1, 0.21619, 0.9025, 0.31002, 0.78736, 0.35684, 0.78081, 0.39874, 0.77215, 0.45415, 0.77098, 0.51572, 0.84094, 0.63751, 0.93095, 0.7491, 0.95531, 0.7793, 0.78126, 0.87679, 0.5613, 1, 0.2687, 1, 0, 1, 0.00279, 0.96112, 0.01358, 0.81038, 0.02822, 0.60605, 0.08324, 0.45142, 0.18908, 0.31882, 0.29577, 0.2398, 0.30236, 0.14941, 0.37875, 0.05902, 0.53284, 0, 0.70538, 0, 0.41094, 0.71968, 0.40743, 0.54751, 0.41094, 0.4536, 0.4724, 0.35186, 0.33367, 0.27829, 0.50226, 0.31664, 0.65328, 0.67507, 0.60762, 0.52716, 0.6006, 0.45125, 0.62747, 0.37543, 0.6573, 0.3385, 0.27843, 0.32924, 0.18967, 0.45203, 0.16509, 0.58586, 0.18265, 0.7682, 0.50532, 0.24634, 0.59473, 0.17967, 0.60161, 0.10611, 0.51392, 0.04327, 0.72198, 0.28849, 0.82343, 0.20266, 0.86814, 0.11377, 0.79592, 0.04634, 0.44858, 0.15515, 0.25466, 0.96219, 0.53169, 0.9448, 0.7531, 0.8324 ], - "triangles": [ 24, 0, 47, 43, 23, 24, 47, 43, 24, 43, 22, 23, 42, 43, 47, 46, 47, 0, 42, 47, 46, 46, 0, 1, 48, 22, 43, 48, 43, 42, 21, 22, 48, 41, 48, 42, 45, 42, 46, 41, 42, 45, 46, 1, 2, 45, 46, 2, 40, 48, 41, 48, 20, 21, 29, 48, 40, 29, 20, 48, 44, 41, 45, 40, 41, 44, 3, 45, 2, 44, 45, 3, 30, 29, 40, 35, 30, 40, 36, 19, 20, 36, 20, 29, 44, 35, 40, 28, 29, 30, 4, 44, 3, 35, 44, 4, 34, 30, 35, 5, 35, 4, 34, 28, 30, 33, 28, 34, 37, 19, 36, 18, 19, 37, 27, 29, 28, 27, 28, 33, 36, 29, 27, 37, 36, 27, 5, 34, 35, 6, 34, 5, 33, 34, 6, 6, 32, 33, 7, 32, 6, 26, 37, 27, 38, 18, 37, 38, 37, 26, 17, 18, 38, 31, 32, 7, 31, 7, 8, 32, 25, 26, 38, 26, 25, 27, 33, 32, 32, 26, 27, 39, 38, 25, 17, 38, 39, 16, 17, 39, 51, 31, 8, 51, 8, 9, 11, 51, 9, 11, 9, 10, 31, 50, 25, 31, 25, 32, 50, 31, 51, 49, 39, 25, 49, 25, 50, 15, 16, 39, 49, 15, 39, 13, 49, 50, 14, 15, 49, 13, 14, 49, 12, 50, 51, 12, 51, 11, 13, 50, 12 ], - "vertices": [ -23.66, 19.37, -11.73, 28.98, 4.34, 30.83, 22.41, 24.87, 32.05, 16.48, 39.77, 16.83, 49.98, 17.3, 61.25, 18.5, 82.85, 26.78, 102.4, 36.46, 107.69, 39.09, 127.15, 26.97, 151.74, 11.65, 154.49, -12.18, 157.02, -34.07, 149.89, -34.66, 122.23, -36.97, 84.75, -40.09, 55.97, -38.88, 30.73, -33.05, 15.29, -26.03, -1.3, -27.41, -18.54, -23.09, -30.78, -11.79, -32.4, 2.27, 101.92, -6.52, 70.48, -10.44, 53.28, -12.14, 34.11, -9.28, 21.96, -22.13, 27.39, -7.59, 91.48, 12.28, 64.88, 5.44, 51.07, 3.26, 36.95, 3.85, 29.92, 5.5, 31.8, -25.56, 55.08, -30.19, 79.77, -29.37, 112.93, -24.09, 14.51, -8.83, 1.48, -2.95, -12.03, -3.94, -22.69, -12.41, 20.17, 9.71, 3.53, 16.16, -13.14, 17.93, -24.78, 10.62, -1.62, -15.37, 147.71, -14.13, 141.93, 8.07, 119.3, 23.74 ], - "hull": 25, - "edges": [ 8, 6, 6, 4, 4, 2, 2, 0, 0, 48, 46, 48, 46, 44, 44, 42, 42, 40, 40, 38, 38, 36, 36, 34, 32, 34, 50, 52, 52, 54, 54, 56, 40, 58, 58, 60, 8, 10, 20, 22, 22, 24, 62, 64, 64, 66, 66, 68, 8, 70, 70, 60, 68, 70, 58, 72, 72, 74, 74, 76, 76, 78, 24, 26, 26, 28, 58, 80, 80, 82, 82, 84, 84, 86, 86, 44, 70, 88, 88, 90, 90, 92, 92, 94, 94, 48, 80, 88, 88, 6, 82, 90, 90, 4, 84, 92, 92, 2, 86, 94, 94, 0, 56, 60, 10, 12, 12, 14, 14, 16, 28, 30, 30, 32, 26, 98, 98, 78, 30, 98, 24, 100, 100, 50, 98, 100, 22, 102, 102, 62, 100, 102, 16, 18, 18, 20, 102, 18 ], - "width": 82, - "height": 184 - } - }, - "front-thigh": { - "front-thigh": { "x": 42.48, "y": 4.45, "rotation": 84.87, "width": 45, "height": 112 } - }, - "front-upper-arm": { - "front-upper-arm": { "x": 28.31, "y": 7.37, "rotation": 97.9, "width": 46, "height": 97 } - }, - "goggles": { - "goggles": { - "type": "mesh", - "uvs": [ 0.53653, 0.04114, 0.72922, 0.16036, 0.91667, 0.33223, 0.97046, 0.31329, 1, 0.48053, 0.95756, 0.5733, 0.88825, 0.6328, 0.86878, 0.78962, 0.77404, 0.8675, 0.72628, 1, 0.60714, 0.93863, 0.49601, 0.88138, 0.41558, 0.75027, 0.32547, 0.70084, 0.2782, 0.58257, 0.1721, 0.63281, 0.17229, 0.75071, 0.10781, 0.79898, 0, 0.32304, 0, 0.12476, 0.07373, 0.07344, 0.15423, 0.10734, 0.23165, 0.13994, 0.30313, 0.02256, 0.34802, 0, 0.42979, 0.69183, 0.39476, 0.51042, 0.39488, 0.31512, 0.45878, 0.23198, 0.56501, 0.28109, 0.69961, 0.39216, 0.82039, 0.54204, 0.85738, 0.62343, 0.91107, 0.51407, 0.72639, 0.32147, 0.58764, 0.19609, 0.48075, 0.11269, 0.37823, 0.05501, 0.3287, 0.17866, 0.319, 0.305, 0.36036, 0.53799, 0.40327, 0.70072, 0.30059, 0.55838, 0.21957, 0.2815, 0.09963, 0.28943, 0.56863, 0.4368, 0.4911, 0.37156, 0.51185, 0.52093, 0.67018, 0.59304, 0.7619, 0.68575, 0.73296, 0.43355 ], - "triangles": [ 18, 44, 15, 21, 19, 20, 17, 18, 15, 44, 19, 21, 2, 3, 4, 18, 19, 44, 2, 33, 34, 33, 2, 4, 5, 33, 4, 5, 6, 33, 7, 32, 6, 31, 50, 33, 32, 31, 33, 6, 32, 33, 31, 49, 50, 49, 31, 32, 49, 32, 7, 8, 49, 7, 33, 50, 34, 17, 15, 16, 9, 48, 8, 49, 48, 50, 50, 48, 45, 47, 45, 48, 50, 45, 30, 45, 47, 46, 45, 46, 29, 30, 45, 29, 30, 29, 34, 30, 34, 50, 47, 26, 46, 25, 10, 11, 12, 25, 11, 41, 12, 42, 42, 44, 43, 43, 21, 22, 41, 40, 25, 41, 42, 40, 29, 35, 34, 40, 26, 25, 25, 26, 47, 37, 24, 0, 36, 37, 0, 42, 43, 39, 42, 39, 40, 28, 38, 36, 40, 39, 26, 28, 27, 38, 26, 39, 27, 37, 38, 23, 39, 43, 38, 38, 37, 36, 27, 39, 38, 43, 22, 38, 37, 23, 24, 22, 23, 38, 36, 0, 35, 28, 36, 35, 29, 28, 35, 27, 28, 46, 26, 27, 46, 35, 0, 1, 34, 35, 1, 12, 41, 25, 47, 10, 25, 44, 21, 43, 42, 14, 44, 14, 15, 44, 13, 14, 42, 12, 13, 42, 46, 28, 29, 47, 48, 10, 48, 9, 10, 49, 8, 48, 2, 34, 1 ], - "vertices": [ 2, 66, 61.88, 22.81, 0.832, 46, 172.09, 22.81, 0.168, 2, 66, 59.89, -31.19, 0.6855, 46, 170.1, -31.19, 0.3145, 2, 66, 49.2, -86.8, 0.32635, 46, 159.41, -86.8, 0.67365, 2, 66, 56.82, -99.01, 0.01217, 46, 167.03, -99.01, 0.98783, 1, 46, 143.4, -115.48, 1, 2, 66, 15, -110.14, 0.0041, 46, 125.21, -110.14, 0.9959, 2, 66, -0.32, -96.36, 0.07948, 46, 109.89, -96.36, 0.92052, 2, 66, -26.56, -100.19, 0.01905, 46, 83.65, -100.19, 0.98095, 2, 66, -46.96, -81.16, 0.4921, 46, 63.26, -81.16, 0.50791, 2, 66, -71.84, -76.69, 0.56923, 46, 38.37, -76.69, 0.43077, 2, 66, -72.54, -43.98, 0.74145, 46, 37.67, -43.98, 0.25855, 2, 66, -73.2, -13.47, 0.87929, 46, 37.01, -13.47, 0.12071, 2, 66, -59.63, 13.55, 0.864, 46, 50.58, 13.55, 0.136, 2, 66, -59.69, 38.45, 0.85289, 46, 50.52, 38.45, 0.14711, 2, 66, -45.26, 56.6, 0.74392, 46, 64.95, 56.6, 0.25608, 2, 66, -62.31, 79.96, 0.624, 46, 47.9, 79.96, 0.376, 2, 66, -80.76, 73.42, 0.616, 46, 29.45, 73.42, 0.384, 2, 66, -93.9, 86.64, 0.288, 46, 16.31, 86.64, 0.712, 1, 46, 81.51, 139.38, 1, 1, 46, 112.56, 150.3, 1, 2, 66, 16.76, 134.97, 0.02942, 46, 126.97, 134.97, 0.97058, 2, 66, 18.42, 113.28, 0.36147, 46, 128.63, 113.28, 0.63853, 2, 66, 20.02, 92.43, 0.7135, 46, 130.23, 92.43, 0.2865, 2, 66, 44.58, 81.29, 0.69603, 46, 154.79, 81.29, 0.30397, 2, 66, 52, 71.48, 0.848, 46, 162.21, 71.48, 0.152, 2, 66, -49.25, 13.27, 0.8, 46, 60.96, 13.27, 0.2, 2, 66, -23.88, 31.88, 0.896, 46, 86.33, 31.88, 0.104, 2, 66, 6.72, 42.6, 0.928, 46, 116.93, 42.6, 0.072, 2, 66, 25.26, 31.44, 0.8, 46, 135.47, 31.44, 0.2, 2, 66, 26.77, 2.59, 0.75, 46, 136.98, 2.59, 0.25, 2, 66, 21.02, -36.66, 0.54887, 46, 131.23, -36.66, 0.45113, 2, 66, 8.01, -74.65, 0.36029, 46, 118.22, -74.65, 0.63971, 2, 66, -1.52, -88.24, 0.1253, 46, 108.69, -88.24, 0.8747, 2, 66, 20.25, -95.44, 0.08687, 46, 130.46, -95.44, 0.91313, 2, 66, 34.42, -39.36, 0.72613, 46, 144.63, -39.36, 0.27387, 2, 66, 42.03, 1.7, 0.824, 46, 152.25, 1.7, 0.176, 2, 66, 45.85, 32.6, 0.856, 46, 156.06, 32.6, 0.144, 1, 66, 46.01, 61.02, 1, 1, 66, 22.35, 66.41, 1, 1, 66, 1.73, 61.84, 1, 2, 66, -31.17, 38.83, 0.928, 46, 79.04, 38.83, 0.072, 2, 66, -52.94, 19.31, 0.79073, 46, 57.27, 19.31, 0.20927, 2, 66, -39.54, 52.42, 0.912, 46, 70.67, 52.42, 0.088, 2, 66, -3.2, 87.61, 0.744, 46, 107.02, 87.61, 0.256, 2, 66, -14.82, 116.7, 0.6368, 46, 95.4, 116.7, 0.3632, 2, 66, 2.7, -6.87, 0.856, 46, 112.91, -6.87, 0.144, 2, 66, 6.21, 15.8, 0.744, 46, 116.42, 15.8, 0.256, 2, 66, -15.39, 2.47, 0.856, 46, 94.82, 2.47, 0.144, 2, 66, -12.98, -40.48, 0.72102, 46, 97.24, -40.48, 0.27898, 2, 66, -19.55, -68.16, 0.59162, 46, 90.66, -68.16, 0.40838, 2, 66, 17.44, -47.15, 0.53452, 46, 127.65, -47.15, 0.46548 ], - "hull": 25, - "edges": [ 36, 34, 34, 32, 32, 30, 30, 28, 28, 26, 26, 24, 24, 22, 18, 16, 16, 14, 14, 12, 12, 10, 10, 8, 8, 6, 6, 4, 4, 2, 2, 0, 0, 48, 48, 46, 46, 44, 36, 38, 40, 38, 24, 50, 50, 52, 52, 54, 54, 56, 56, 58, 58, 60, 62, 64, 64, 12, 8, 66, 66, 68, 68, 70, 70, 72, 72, 74, 74, 76, 76, 78, 78, 80, 80, 82, 82, 24, 24, 84, 84, 86, 86, 44, 40, 42, 42, 44, 42, 88, 88, 30, 58, 90, 90, 92, 92, 94, 18, 20, 20, 22, 94, 20, 18, 96, 96, 98, 60, 100, 100, 62, 98, 100 ], - "width": 261, - "height": 166 - } - }, - "gun": { - "gun": { "x": 77.3, "y": 16.4, "rotation": 60.83, "width": 210, "height": 203 } - }, - "head": { - "head": { - "type": "mesh", - "uvs": [ 0.75919, 0.06107, 0.88392, 0.17893, 0.90174, 0.30856, 0.94224, 0.1966, 1, 0.26584, 1, 0.422, 0.95864, 0.46993, 0.92118, 0.51333, 0.85957, 0.5347, 0.78388, 0.65605, 0.74384, 0.74838, 0.85116, 0.75151, 0.84828, 0.82564, 0.81781, 0.85367, 0.75599, 0.85906, 0.76237, 0.90468, 0.65875, 1, 0.38337, 1, 0.1858, 0.85404, 0.12742, 0.81091, 0.06025, 0.69209, 0, 0.58552, 0, 0.41021, 0.0853, 0.20692, 0.24243, 0.14504, 0.5, 0.1421, 0.50324, 0.07433, 0.41738, 0, 0.57614, 0, 0.85059, 0.36087, 0.73431, 0.43206, 0.68481, 0.31271, 0.72165, 0.16718, 0.55931, 0.04154, 0.44764, 0.22895, 0.23926, 0.26559, 0.71272, 0.44036, 0.56993, 0.383, 0.41678, 0.33511, 0.293, 0.31497, 0.70802, 0.44502, 0.56676, 0.38976, 0.41521, 0.34416, 0.28754, 0.33017, 0.88988, 0.50177, 0.30389, 0.73463, 0.2646, 0.65675, 0.21414, 0.61584, 0.14613, 0.62194, 0.10316, 0.66636, 0.10358, 0.72557, 0.14505, 0.79164, 0.20263, 0.81355, 0.27873, 0.80159, 0.34947, 0.7376, 0.23073, 0.57073, 0.08878, 0.60707, 0.29461, 0.8129, 0.73006, 0.87883, 0.69805, 0.87348, 0.66166, 0.79681, 0.22468, 0.69824, 0.14552, 0.67405 ], - "triangles": [ 50, 49, 62, 34, 25, 31, 39, 35, 34, 38, 39, 34, 37, 38, 34, 42, 39, 38, 43, 39, 42, 32, 2, 31, 31, 37, 34, 42, 38, 37, 41, 42, 37, 43, 22, 39, 30, 31, 29, 36, 37, 31, 30, 36, 31, 40, 41, 37, 36, 40, 37, 36, 30, 44, 55, 22, 43, 55, 48, 56, 47, 48, 55, 46, 55, 54, 42, 55, 43, 47, 55, 46, 62, 49, 48, 61, 47, 46, 62, 48, 47, 61, 62, 47, 46, 54, 45, 42, 41, 55, 61, 46, 45, 55, 41, 54, 61, 51, 50, 61, 50, 62, 60, 41, 40, 54, 41, 60, 53, 61, 45, 52, 51, 61, 57, 53, 45, 57, 45, 54, 53, 52, 61, 52, 19, 51, 57, 18, 52, 57, 52, 53, 17, 54, 60, 57, 54, 17, 18, 57, 17, 19, 50, 51, 33, 27, 28, 26, 27, 33, 0, 33, 28, 32, 33, 0, 32, 0, 1, 33, 25, 26, 33, 32, 25, 31, 25, 32, 2, 32, 1, 2, 3, 4, 29, 31, 2, 2, 4, 5, 29, 2, 5, 6, 29, 5, 30, 29, 6, 44, 30, 6, 18, 19, 52, 49, 56, 48, 34, 24, 25, 35, 23, 24, 35, 24, 34, 39, 22, 35, 22, 23, 35, 7, 44, 6, 8, 36, 44, 40, 36, 8, 8, 44, 7, 56, 21, 22, 55, 56, 22, 9, 40, 8, 20, 21, 56, 20, 56, 49, 9, 60, 40, 10, 60, 9, 20, 50, 19, 12, 10, 11, 13, 10, 12, 14, 60, 10, 13, 14, 10, 59, 60, 14, 58, 59, 14, 58, 14, 15, 16, 17, 60, 59, 16, 60, 15, 16, 59, 15, 59, 58, 20, 49, 50 ], - "vertices": [ 2, 50, 41.97, -41.8, 0.94074, 66, 165.41, -22.6, 0.05926, 4, 48, 73.47, 27.54, 0.26795, 50, -5.75, -51.71, 0.4738, 49, 112.99, -11.41, 0.12255, 66, 143.5, -66.13, 0.1357, 4, 48, 38.23, 10.99, 0.6831, 50, -41.01, -35.22, 0.07866, 49, 92.73, -44.66, 0.04872, 66, 108.65, -83.49, 0.18952, 2, 48, 73.35, 10.89, 0.8455, 66, 143.77, -82.78, 0.1545, 2, 48, 58.59, -10.38, 0.91607, 66, 129.5, -104.39, 0.08393, 3, 46, 195.82, -119.82, 0.104, 47, 75.49, -4.55, 0.09191, 48, 14.36, -24.8, 0.80409, 4, 46, 178.62, -113.98, 0.19022, 47, 59.82, -13.72, 0.33409, 48, -2.7, -18.57, 0.46643, 66, 68.41, -113.98, 0.00926, 4, 46, 163.06, -108.69, 0.18724, 47, 45.64, -22.03, 0.3133, 48, -18.14, -12.93, 0.47469, 66, 52.84, -108.69, 0.02477, 2, 46, 151.52, -95.05, 0.91122, 66, 41.31, -95.05, 0.08878, 2, 46, 110.61, -87.69, 0.70564, 66, 0.4, -87.69, 0.29436, 2, 46, 81.05, -86.58, 0.63951, 66, -29.16, -86.58, 0.36049, 2, 46, 89.82, -114.32, 0.57, 66, -20.39, -114.32, 0.43, 2, 46, 68.72, -120.91, 0.57, 66, -41.49, -120.91, 0.43, 2, 46, 58.1, -115.9, 0.57, 66, -52.11, -115.9, 0.43, 2, 46, 51.03, -100.63, 0.64242, 66, -59.18, -100.63, 0.35758, 2, 46, 38.79, -106.76, 0.81659, 66, -71.43, -106.76, 0.18341, 2, 46, 2.68, -89.7, 0.77801, 66, -107.53, -89.7, 0.22199, 2, 46, -22.07, -19.3, 0.823, 66, -132.28, -19.3, 0.177, 2, 46, 1.2, 45.63, 0.51204, 66, -109.01, 45.63, 0.48796, 2, 46, 8.07, 64.81, 0.60869, 66, -102.14, 64.81, 0.39131, 2, 46, 35.44, 93.73, 0.80009, 66, -74.77, 93.73, 0.19991, 2, 46, 59.98, 119.66, 0.93554, 66, -50.23, 119.66, 0.06446, 2, 46, 109.26, 136.99, 0.99895, 66, -0.95, 136.99, 0.00105, 1, 46, 174.07, 135.27, 1, 3, 46, 205.59, 101.22, 0.80778, 49, -16.84, 104.63, 0.15658, 66, 95.38, 101.22, 0.03564, 3, 50, 58.94, 30.5, 0.43491, 49, 38.36, 61.89, 0.28116, 66, 119.35, 35.65, 0.28393, 2, 50, 75.56, 19.01, 0.92164, 66, 138.68, 41.52, 0.07836, 1, 50, 106.7, 26.9, 1, 1, 50, 83.79, -9.51, 1, 5, 47, 44.51, 27.24, 0.15139, 48, 19.12, 19.33, 0.44847, 50, -46.82, -15.19, 0.05757, 49, 72.19, -48.24, 0.1149, 66, 89.35, -75.58, 0.22767, 3, 47, 7.42, 19.08, 0.37772, 49, 34.32, -45.24, 0.09918, 66, 58.9, -52.89, 0.52311, 2, 49, 45.94, -9.07, 0.4826, 66, 87.99, -28.45, 0.5174, 2, 50, 20.62, -16.35, 0.7435, 66, 132.21, -23.49, 0.2565, 2, 50, 75.74, 0.94, 0.97172, 66, 152.95, 30.42, 0.02828, 4, 46, 200.45, 40.46, 0.18809, 50, 44.6, 56.29, 0.05831, 49, 11.15, 50.46, 0.14366, 66, 90.24, 40.46, 0.60994, 2, 46, 171.41, 90.12, 0.48644, 66, 61.2, 90.12, 0.51356, 2, 46, 164.84, -48.18, 0.43217, 66, 54.62, -48.18, 0.56783, 4, 46, 168.13, -6.02, 0.01949, 47, -28.65, 49.02, 0.02229, 49, 8.54, -6.09, 0.12791, 66, 57.92, -6.02, 0.83031, 2, 46, 167.84, 37.87, 0.15, 66, 57.63, 37.87, 0.85, 2, 46, 162.36, 71.5, 0.24107, 66, 52.15, 71.5, 0.75893, 2, 46, 163.11, -47.44, 0.41951, 66, 52.9, -47.44, 0.58049, 2, 46, 165.94, -5.87, 0.16355, 66, 55.73, -5.87, 0.83645, 2, 46, 165.14, 37.38, 0.15, 66, 54.93, 37.38, 0.85, 2, 46, 157.6, 71.4, 0.21735, 66, 47.39, 71.4, 0.78265, 3, 46, 163.5, -99.54, 0.61812, 47, 39.01, -15.71, 0.30445, 66, 53.29, -99.54, 0.07744, 2, 46, 45.38, 27.24, 0.16741, 66, -64.83, 27.24, 0.83259, 2, 46, 63.74, 44.98, 0.15, 66, -46.47, 44.98, 0.85, 2, 46, 70.7, 61.92, 0.22175, 66, -39.51, 61.92, 0.77825, 2, 46, 62.88, 78.71, 0.38, 66, -47.34, 78.71, 0.62, 2, 46, 46.53, 85.3, 0.51, 66, -63.68, 85.3, 0.49, 2, 46, 29.92, 79.34, 0.388, 66, -80.29, 79.34, 0.612, 2, 46, 15.08, 62.21, 0.38, 66, -95.13, 62.21, 0.62, 2, 46, 14.09, 45.32, 0.41, 66, -96.12, 45.32, 0.59, 2, 46, 24.3, 27.06, 0.192, 66, -85.91, 27.06, 0.808, 1, 66, -61.57, 15.3, 1, 2, 46, 84.87, 62.14, 0.16757, 66, -25.34, 62.14, 0.83243, 2, 46, 61.9, 94.84, 0.68145, 66, -48.31, 94.84, 0.31855, 2, 46, 22.54, 21.88, 0.16, 66, -87.67, 21.88, 0.84, 2, 46, 43.15, -95.95, 0.73445, 66, -67.06, -95.95, 0.26555, 2, 46, 41.77, -87.24, 0.67858, 66, -68.44, -87.24, 0.32142, 2, 46, 60.05, -70.36, 0.50195, 66, -50.16, -70.36, 0.49805, 2, 46, 48.49, 51.09, 0.25, 66, -61.72, 51.09, 0.75, 2, 46, 48.17, 73.71, 0.15634, 66, -62.04, 73.71, 0.84366 ], - "hull": 29, - "edges": [ 10, 8, 8, 6, 6, 4, 4, 2, 2, 0, 0, 56, 54, 56, 54, 52, 52, 50, 50, 48, 48, 46, 46, 44, 42, 44, 32, 34, 4, 58, 58, 60, 62, 64, 64, 66, 66, 54, 50, 68, 68, 70, 70, 44, 60, 72, 62, 74, 72, 74, 74, 76, 76, 78, 78, 44, 16, 80, 80, 82, 82, 84, 84, 86, 86, 44, 14, 88, 88, 72, 14, 16, 10, 12, 12, 14, 12, 60, 90, 92, 92, 94, 94, 96, 96, 98, 98, 100, 100, 102, 102, 104, 104, 106, 106, 90, 108, 110, 110, 112, 38, 40, 40, 42, 112, 40, 34, 36, 36, 38, 36, 114, 114, 108, 30, 32, 30, 28, 24, 26, 28, 26, 22, 24, 22, 20, 20, 18, 18, 16, 28, 116, 116, 118, 118, 120, 120, 20 ], - "width": 271, - "height": 298 - } - }, - "head-bb": { - "head": { - "type": "boundingbox", - "vertexCount": 6, - "vertices": [ -19.14, -70.3, 40.8, -118.08, 257.78, -115.62, 285.17, 57.18, 120.77, 164.95, -5.07, 76.95 ] - } - }, - "hoverboard-board": { - "hoverboard-board": { - "type": "mesh", - "uvs": [ 0.13865, 0.56624, 0.11428, 0.51461, 0.07619, 0.52107, 0.02364, 0.52998, 0.01281, 0.53182, 0, 0.37979, 0, 0.2206, 0.00519, 0.10825, 0.01038, 0.10726, 0.03834, 0.10194, 0.05091, 0, 0.08326, 0, 0.10933, 0.04206, 0.1382, 0.08865, 0.18916, 0.24067, 0.22234, 0.4063, 0.23886, 0.44063, 0.83412, 0.44034, 0.88444, 0.38296, 0.92591, 0.32639, 0.95996, 0.28841, 0.98612, 0.28542, 1, 0.38675, 0.99494, 0.47104, 0.97883, 0.53251, 0.94409, 0.62135, 0.90206, 0.69492, 0.86569, 0.71094, 0.82822, 0.70791, 0.81286, 0.77127, 0.62931, 0.77266, 0.61364, 0.70645, 0.47166, 0.70664, 0.45901, 0.77827, 0.27747, 0.76986, 0.2658, 0.70372, 0.24976, 0.71381, 0.24601, 0.77827, 0.23042, 0.84931, 0.20926, 0.90956, 0.17299, 1, 0.15077, 0.99967, 0.12906, 0.90192, 0.10369, 0.73693, 0.10198, 0.62482, 0.09131, 0.47272, 0.09133, 0.41325, 0.15082, 0.41868, 0.21991, 0.51856, 0.06331, 0.10816, 0.08383, 0.21696, 0.08905, 0.37532, 0.15903, 0.58726, 0.17538, 0.65706, 0.20118, 0.8029, 0.17918, 0.55644, 0.22166, 0.5802, 0.86259, 0.57962, 0.92346, 0.48534, 0.96691, 0.36881, 0.0945, 0.13259, 0.12688, 0.17831, 0.15986, 0.24682, 0.18036, 0.31268, 0.20607, 0.4235, 0.16074, 0.85403, 0.13624, 0.70122, 0.12096, 0.64049, 0.02396, 0.21811, 0.02732, 0.37839, 0.02557, 0.4972, 0.14476, 0.45736, 0.18019, 0.51689, 0.19692, 0.56636 ], - "triangles": [ 10, 11, 12, 9, 10, 12, 49, 9, 12, 60, 49, 12, 13, 60, 12, 61, 60, 13, 50, 49, 60, 50, 60, 61, 68, 8, 9, 68, 9, 49, 68, 49, 50, 7, 8, 68, 6, 7, 68, 61, 13, 14, 62, 61, 14, 50, 61, 62, 63, 62, 14, 59, 20, 21, 19, 20, 59, 51, 50, 62, 51, 62, 63, 51, 69, 68, 51, 68, 50, 6, 68, 69, 5, 6, 69, 18, 19, 59, 15, 63, 14, 59, 21, 22, 47, 51, 63, 47, 46, 51, 47, 63, 64, 15, 64, 63, 64, 15, 16, 71, 46, 47, 23, 59, 22, 69, 51, 70, 45, 46, 71, 70, 51, 2, 58, 18, 59, 58, 59, 23, 17, 18, 58, 70, 5, 69, 2, 51, 46, 1, 45, 71, 47, 48, 71, 47, 64, 48, 48, 72, 71, 1, 71, 72, 16, 48, 64, 45, 2, 46, 2, 45, 1, 70, 4, 5, 3, 70, 2, 3, 4, 70, 24, 58, 23, 72, 0, 1, 73, 55, 72, 55, 0, 72, 48, 73, 72, 57, 17, 58, 25, 57, 58, 56, 48, 16, 73, 48, 56, 56, 16, 17, 56, 17, 57, 52, 0, 55, 24, 25, 58, 44, 0, 52, 67, 44, 52, 52, 56, 53, 73, 52, 55, 56, 52, 73, 67, 52, 53, 26, 57, 25, 66, 67, 53, 56, 32, 35, 53, 56, 35, 56, 57, 32, 28, 31, 57, 57, 31, 32, 57, 27, 28, 26, 27, 57, 36, 53, 35, 43, 44, 67, 43, 67, 66, 34, 35, 32, 29, 31, 28, 30, 31, 29, 53, 54, 66, 53, 36, 54, 33, 34, 32, 37, 54, 36, 65, 43, 66, 38, 54, 37, 54, 65, 66, 39, 65, 54, 42, 43, 65, 38, 39, 54, 40, 42, 65, 40, 41, 42, 65, 39, 40 ], - "vertices": [ -189.36, 15.62, -201.35, 23.47, -220.09, 22.49, -245.95, 21.13, -251.28, 20.86, -257.58, 43.96, -257.57, 68.16, -255.02, 85.24, -252.47, 85.39, -238.71, 86.2, -232.52, 101.69, -216.61, 101.69, -203.78, 95.3, -189.58, 88.21, -164.51, 65.1, -148.19, 39.93, -140.06, 34.71, 152.82, 34.73, 177.57, 43.45, 197.97, 52.05, 214.72, 57.82, 227.6, 58.27, 234.42, 42.87, 231.94, 30.06, 224.01, 20.72, 206.91, 7.21, 186.23, -3.97, 168.34, -6.4, 149.9, -5.94, 142.35, -15.57, 52.04, -15.77, 44.33, -5.71, -25.52, -5.73, -31.75, -16.62, -121.07, -15.34, -126.81, -5.28, -134.7, -6.81, -136.54, -16.61, -144.22, -27.41, -154.63, -36.57, -172.47, -50.31, -183.41, -50.26, -194.09, -35.4, -206.56, -10.32, -207.4, 6.72, -212.65, 29.84, -212.64, 38.88, -183.37, 38.05, -149.38, 22.86, -226.43, 85.25, -216.33, 68.71, -213.76, 44.64, -179.34, 12.42, -171.29, 1.81, -158.6, -20.36, -169.42, 17.11, -148.52, 13.49, 166.82, 13.56, 196.76, 27.89, 218.14, 45.6, -211.08, 81.54, -195.15, 74.59, -178.93, 64.17, -168.84, 54.16, -156.19, 37.31, -178.5, -28.13, -190.55, -4.9, -198.07, 4.33, -245.79, 68.54, -244.14, 44.18, -245, 26.12, -186.36, 32.17, -168.92, 23.12, -160.69, 15.6 ], - "hull": 45, - "edges": [ 0, 2, 8, 10, 10, 12, 12, 14, 18, 20, 20, 22, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 50, 50, 52, 52, 54, 54, 56, 56, 58, 58, 60, 60, 62, 62, 64, 64, 66, 66, 68, 68, 70, 70, 72, 72, 74, 80, 82, 82, 84, 84, 86, 86, 88, 0, 88, 2, 90, 90, 92, 92, 94, 94, 96, 96, 32, 18, 98, 98, 100, 100, 102, 2, 4, 102, 4, 92, 102, 0, 104, 104, 106, 106, 108, 78, 80, 108, 78, 74, 76, 76, 78, 62, 56, 64, 70, 0, 110, 112, 114, 114, 116, 116, 118, 118, 42, 50, 116, 114, 34, 98, 120, 120, 122, 22, 24, 24, 26, 120, 24, 122, 124, 124, 126, 126, 128, 128, 96, 80, 130, 130, 132, 132, 134, 134, 88, 14, 16, 16, 18, 136, 16, 136, 138, 138, 140, 4, 6, 6, 8, 140, 6, 96, 112, 92, 142, 142, 144, 110, 146, 146, 112, 144, 146 ], - "width": 492, - "height": 152 - } - }, - "hoverboard-thruster-front": { - "hoverboard-thruster": { "x": 0.02, "y": -7.08, "rotation": 0.17, "width": 60, "height": 64 } - }, - "hoverboard-thruster-rear": { - "hoverboard-thruster": { "x": 1.1, "y": -6.29, "rotation": 0.17, "width": 60, "height": 64 } - }, - "hoverglow-front": { - "hoverglow-small": { - "x": 2.13, - "y": -2, - "scaleX": 0.303, - "scaleY": 0.495, - "rotation": 0.15, - "width": 274, - "height": 75 - } - }, - "hoverglow-rear": { - "hoverglow-small": { - "x": 1.39, - "y": -2.09, - "scaleX": 0.303, - "scaleY": 0.495, - "rotation": 0.61, - "width": 274, - "height": 75 - } - }, - "mouth": { - "mouth-grind": { - "type": "mesh", - "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], - "triangles": [ 1, 3, 0, 1, 2, 3 ], - "vertices": [ 2, 66, -98.93, -85.88, 0.22, 46, 11.28, -85.88, 0.78, 2, 66, -129.77, 1.84, 0.6, 46, -19.56, 1.84, 0.4, 2, 66, -74.12, 21.41, 0.6, 46, 36.09, 21.41, 0.4, 2, 66, -43.28, -66.32, 0.4, 46, 66.93, -66.32, 0.6 ], - "hull": 4, - "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], - "width": 93, - "height": 59 - }, - "mouth-oooo": { - "type": "mesh", - "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], - "triangles": [ 1, 3, 0, 1, 2, 3 ], - "vertices": [ 2, 46, 11.28, -85.89, 0.22, 66, -98.93, -85.89, 0.78, 2, 46, -19.56, 1.85, 0.6, 66, -129.78, 1.85, 0.4, 2, 46, 36.1, 21.42, 0.6, 66, -74.12, 21.42, 0.4, 2, 46, 66.94, -66.32, 0.4, 66, -43.27, -66.32, 0.6 ], - "hull": 4, - "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], - "width": 93, - "height": 59 - }, - "mouth-smile": { - "type": "mesh", - "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], - "triangles": [ 1, 3, 0, 1, 2, 3 ], - "vertices": [ 2, 66, -98.93, -85.89, 0.21075, 46, 11.28, -85.89, 0.78925, 2, 66, -129.77, 1.85, 0.6, 46, -19.56, 1.85, 0.4, 2, 66, -74.11, 21.42, 0.6, 46, 36.1, 21.42, 0.4, 2, 66, -43.27, -66.32, 0.40772, 46, 66.94, -66.32, 0.59228 ], - "hull": 4, - "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], - "width": 93, - "height": 59 - } - }, - "muzzle": { - "muzzle01": { - "x": 151.97, - "y": 5.81, - "scaleX": 3.7361, - "scaleY": 3.7361, - "rotation": 0.15, - "width": 133, - "height": 79 - }, - "muzzle02": { - "x": 187.25, - "y": 5.9, - "scaleX": 4.0623, - "scaleY": 4.0623, - "rotation": 0.15, - "width": 135, - "height": 84 - }, - "muzzle03": { - "x": 231.96, - "y": 6.02, - "scaleX": 4.1325, - "scaleY": 4.1325, - "rotation": 0.15, - "width": 166, - "height": 106 - }, - "muzzle04": { - "x": 231.96, - "y": 6.02, - "scaleX": 4.0046, - "scaleY": 4.0046, - "rotation": 0.15, - "width": 149, - "height": 90 - }, - "muzzle05": { - "x": 293.8, - "y": 6.19, - "scaleX": 4.4673, - "scaleY": 4.4673, - "rotation": 0.15, - "width": 135, - "height": 75 - } - }, - "muzzle-glow": { - "muzzle-glow": { "width": 50, "height": 50 } - }, - "muzzle-ring": { - "muzzle-ring": { "x": -1.3, "y": 0.32, "scaleX": 0.3147, "scaleY": 0.3147, "width": 49, "height": 209 } - }, - "muzzle-ring2": { - "muzzle-ring": { "x": -1.3, "y": 0.32, "scaleX": 0.3147, "scaleY": 0.3147, "width": 49, "height": 209 } - }, - "muzzle-ring3": { - "muzzle-ring": { "x": -1.3, "y": 0.32, "scaleX": 0.3147, "scaleY": 0.3147, "width": 49, "height": 209 } - }, - "muzzle-ring4": { - "muzzle-ring": { "x": -1.3, "y": 0.32, "scaleX": 0.3147, "scaleY": 0.3147, "width": 49, "height": 209 } - }, - "neck": { - "neck": { "x": 9.77, "y": -3.01, "rotation": -55.22, "width": 36, "height": 41 } - }, - "portal-bg": { - "portal-bg": { "x": -3.1, "y": 7.25, "scaleX": 1.0492, "scaleY": 1.0492, "width": 266, "height": 266 } - }, - "portal-flare1": { - "portal-flare1": { "width": 111, "height": 60 }, - "portal-flare2": { "width": 114, "height": 61 }, - "portal-flare3": { "width": 115, "height": 59 } - }, - "portal-flare2": { - "portal-flare1": { "width": 111, "height": 60 }, - "portal-flare2": { "width": 114, "height": 61 }, - "portal-flare3": { "width": 115, "height": 59 } - }, - "portal-flare3": { - "portal-flare1": { "width": 111, "height": 60 }, - "portal-flare2": { "width": 114, "height": 61 }, - "portal-flare3": { "width": 115, "height": 59 } - }, - "portal-flare4": { - "portal-flare1": { "width": 111, "height": 60 }, - "portal-flare2": { "width": 114, "height": 61 }, - "portal-flare3": { "width": 115, "height": 59 } - }, - "portal-flare5": { - "portal-flare1": { "width": 111, "height": 60 }, - "portal-flare2": { "width": 114, "height": 61 }, - "portal-flare3": { "width": 115, "height": 59 } - }, - "portal-flare6": { - "portal-flare1": { "width": 111, "height": 60 }, - "portal-flare2": { "width": 114, "height": 61 }, - "portal-flare3": { "width": 115, "height": 59 } - }, - "portal-flare7": { - "portal-flare1": { "width": 111, "height": 60 }, - "portal-flare2": { "width": 114, "height": 61 }, - "portal-flare3": { "width": 115, "height": 59 } - }, - "portal-flare8": { - "portal-flare1": { "width": 111, "height": 60 }, - "portal-flare2": { "width": 114, "height": 61 }, - "portal-flare3": { "width": 115, "height": 59 } - }, - "portal-flare9": { - "portal-flare1": { "width": 111, "height": 60 }, - "portal-flare2": { "width": 114, "height": 61 }, - "portal-flare3": { "width": 115, "height": 59 } - }, - "portal-flare10": { - "portal-flare1": { "width": 111, "height": 60 }, - "portal-flare2": { "width": 114, "height": 61 }, - "portal-flare3": { "width": 115, "height": 59 } - }, - "portal-shade": { - "portal-shade": { "width": 266, "height": 266 } - }, - "portal-streaks1": { - "portal-streaks1": { "scaleX": 0.9774, "scaleY": 0.9774, "width": 252, "height": 256 } - }, - "portal-streaks2": { - "portal-streaks2": { "x": -1.64, "y": 2.79, "width": 250, "height": 249 } - }, - "rear-bracer": { - "rear-bracer": { "x": 11.15, "y": -2.2, "rotation": 66.17, "width": 56, "height": 72 } - }, - "rear-foot": { - "rear-foot": { - "type": "mesh", - "uvs": [ 0.48368, 0.1387, 0.51991, 0.21424, 0.551, 0.27907, 0.58838, 0.29816, 0.63489, 0.32191, 0.77342, 0.39267, 1, 0.73347, 1, 1, 0.54831, 0.99883, 0.31161, 1, 0, 1, 0, 0.41397, 0.13631, 0, 0.41717, 0 ], - "triangles": [ 8, 3, 4, 8, 4, 5, 8, 5, 6, 8, 6, 7, 11, 1, 10, 3, 9, 2, 2, 10, 1, 12, 13, 0, 0, 11, 12, 1, 11, 0, 2, 9, 10, 3, 8, 9 ], - "vertices": [ 2, 8, 10.45, 29.41, 0.90802, 9, -6.74, 49.62, 0.09198, 2, 8, 16.56, 29.27, 0.84259, 9, -2.65, 45.09, 0.15741, 2, 8, 21.8, 29.15, 0.69807, 9, 0.85, 41.2, 0.30193, 2, 8, 25.53, 31.43, 0.52955, 9, 5.08, 40.05, 0.47045, 2, 8, 30.18, 34.27, 0.39303, 9, 10.33, 38.62, 0.60697, 2, 8, 44.02, 42.73, 0.27525, 9, 25.98, 34.36, 0.72475, 2, 8, 76.47, 47.28, 0.21597, 9, 51.56, 13.9, 0.78403, 2, 8, 88.09, 36.29, 0.28719, 9, 51.55, -2.09, 0.71281, 2, 8, 52.94, -0.73, 0.47576, 9, 0.52, -1.98, 0.52424, 2, 8, 34.63, -20.23, 0.68757, 9, -26.23, -2.03, 0.31243, 2, 8, 10.44, -45.81, 0.84141, 9, -61.43, -2, 0.15859, 2, 8, -15.11, -21.64, 0.93283, 9, -61.4, 33.15, 0.06717, 1, 8, -22.57, 6.61, 1, 1, 8, -0.76, 29.67, 1 ], - "hull": 14, - "edges": [ 14, 12, 10, 12, 14, 16, 16, 18, 18, 20, 4, 18, 20, 22, 24, 26, 22, 24, 4, 2, 2, 20, 4, 6, 6, 16, 6, 8, 8, 10, 2, 0, 0, 26 ], - "width": 113, - "height": 60 - } - }, - "rear-shin": { - "rear-shin": { "x": 58.29, "y": -2.75, "rotation": 92.37, "width": 75, "height": 178 } - }, - "rear-thigh": { - "rear-thigh": { "x": 33.11, "y": -4.11, "rotation": 72.54, "width": 55, "height": 94 } - }, - "rear-upper-arm": { - "rear-upper-arm": { "x": 21.13, "y": 4.09, "rotation": 89.33, "width": 40, "height": 87 } - }, - "side-glow1": { - "hoverglow-small": { "x": 2.09, "scaleX": 0.2353, "scaleY": 0.4132, "width": 274, "height": 75 } - }, - "side-glow2": { - "hoverglow-small": { "x": 2.09, "scaleX": 0.2353, "scaleY": 0.4132, "width": 274, "height": 75 } - }, - "side-glow3": { - "hoverglow-small": { "x": 2.09, "scaleX": 0.3586, "scaleY": 0.6297, "width": 274, "height": 75 } - }, - "torso": { - "torso": { - "type": "mesh", - "uvs": [ 0.6251, 0.12672, 1, 0.26361, 1, 0.28871, 1, 0.66021, 1, 0.68245, 0.92324, 0.69259, 0.95116, 0.84965, 0.77124, 1, 0.49655, 1, 0.27181, 1, 0.13842, 0.77196, 0.09886, 0.6817, 0.05635, 0.58471, 0, 0.45614, 0, 0.33778, 0, 0.19436, 0.14463, 0, 0.27802, 0, 0.72525, 0.27835, 0.76091, 0.46216, 0.84888, 0.67963, 0.68257, 0.63249, 0.53986, 0.3847, 0.25443, 0.3217, 0.30063, 0.55174, 0.39553, 0.79507, 0.26389, 0.17007, 0.5241, 0.18674, 0.71492, 0.76655, 0.82151, 0.72956, 0.27626, 0.4304, 0.62327, 0.52952, 0.3455, 0.66679, 0.53243, 0.2914 ], - "triangles": [ 18, 1, 2, 19, 2, 3, 18, 0, 1, 23, 15, 26, 27, 26, 16, 14, 15, 23, 15, 16, 26, 17, 27, 16, 13, 14, 23, 0, 27, 17, 13, 23, 30, 11, 12, 24, 21, 31, 19, 12, 13, 30, 24, 22, 31, 31, 22, 19, 12, 30, 24, 32, 24, 31, 24, 30, 22, 3, 20, 19, 32, 31, 21, 11, 24, 32, 4, 5, 3, 8, 28, 7, 7, 29, 6, 7, 28, 29, 9, 25, 8, 8, 25, 28, 9, 10, 25, 29, 5, 6, 10, 32, 25, 25, 21, 28, 25, 32, 21, 10, 11, 32, 28, 21, 29, 29, 20, 5, 29, 21, 20, 5, 20, 3, 20, 21, 19, 33, 26, 27, 22, 18, 19, 19, 18, 2, 33, 27, 18, 30, 23, 22, 22, 33, 18, 23, 33, 22, 33, 23, 26, 27, 0, 18 ], - "vertices": [ 2, 29, 44.59, -10.39, 0.88, 40, -17.65, 33.99, 0.12, 3, 28, 59.65, -45.08, 0.12189, 29, 17.13, -45.08, 0.26811, 40, 22.68, 15.82, 0.61, 3, 28, 55.15, -44.72, 0.1345, 29, 12.63, -44.72, 0.2555, 40, 23.43, 11.37, 0.61, 3, 27, 31.01, -39.45, 0.51133, 28, -11.51, -39.45, 0.30867, 40, 34.58, -54.57, 0.18, 3, 27, 27.01, -39.14, 0.53492, 28, -15.5, -39.14, 0.28508, 40, 35.25, -58.52, 0.18, 2, 27, 25.79, -31.5, 0.75532, 28, -16.73, -31.5, 0.24468, 1, 27, -2.61, -32, 1, 1, 27, -28.2, -12.29, 1, 1, 27, -26.08, 14.55, 1, 1, 27, -24.35, 36.5, 1, 2, 27, 17.6, 46.3, 0.8332, 28, -24.92, 46.3, 0.1668, 2, 27, 34.1, 48.89, 0.59943, 28, -8.42, 48.89, 0.40058, 3, 27, 51.83, 51.67, 0.29262, 28, 9.32, 51.67, 0.63181, 29, -33.2, 51.67, 0.07557, 3, 27, 75.34, 55.35, 0.06656, 28, 32.82, 55.35, 0.62298, 29, -9.7, 55.35, 0.31046, 2, 28, 54.06, 53.67, 0.37296, 29, 11.54, 53.67, 0.62704, 2, 28, 79.79, 51.64, 0.10373, 29, 37.27, 51.64, 0.89627, 1, 29, 71.04, 34.76, 1, 1, 29, 70.01, 21.72, 1, 1, 30, 36.74, 7.06, 1, 3, 30, 45.7, -24.98, 0.67, 28, 25.87, -18.9, 0.3012, 29, -16.65, -18.9, 0.0288, 2, 27, 28.69, -24.42, 0.77602, 28, -13.83, -24.42, 0.22398, 3, 30, 43.24, -56.49, 0.064, 27, 38.43, -8.84, 0.67897, 28, -4.09, -8.84, 0.25703, 3, 30, 22.02, -14.85, 0.29, 28, 41.48, 1.59, 0.53368, 29, -1.04, 1.59, 0.17632, 3, 30, -7.45, -8.33, 0.76, 28, 54.98, 28.59, 0.06693, 29, 12.46, 28.59, 0.17307, 3, 30, 3.91, -48.4, 0.25, 27, 55.87, 27.33, 0.15843, 28, 13.35, 27.33, 0.59157, 1, 27, 11.47, 21.51, 1, 2, 30, -11.09, 18.74, 0.416, 29, 39.6, 25.51, 0.584, 2, 30, 14.56, 20.03, 0.53, 29, 34.6, 0.33, 0.47, 1, 27, 14.12, -10.1, 1, 2, 27, 19.94, -21.03, 0.92029, 28, -22.58, -21.03, 0.07971, 3, 30, -2.08, -27.26, 0.29, 28, 35.31, 27.99, 0.49582, 29, -7.21, 27.99, 0.21418, 2, 30, 34.42, -39.19, 0.25, 28, 14.84, -4.5, 0.75, 2, 27, 34.87, 24.58, 0.67349, 28, -7.64, 24.58, 0.32651, 2, 30, 18.5, 1.59, 0.76, 29, 15.76, 1, 0.24 ], - "hull": 18, - "edges": [ 14, 12, 12, 10, 10, 8, 18, 20, 32, 34, 30, 32, 2, 4, 36, 4, 36, 38, 38, 40, 4, 6, 6, 8, 40, 6, 40, 42, 14, 16, 16, 18, 50, 16, 46, 52, 54, 36, 2, 0, 0, 34, 54, 0, 54, 32, 20, 50, 14, 56, 56, 42, 50, 56, 56, 58, 58, 40, 58, 10, 46, 60, 60, 48, 26, 60, 60, 44, 24, 26, 24, 48, 42, 62, 62, 44, 48, 62, 48, 64, 64, 50, 42, 64, 20, 22, 22, 24, 64, 22, 26, 28, 28, 30, 28, 46, 44, 66, 66, 54, 46, 66, 66, 36, 62, 38 ], - "width": 98, - "height": 180 - } - } - } - } -], -"events": { - "footstep": {} -}, -"animations": { - "aim": { - "slots": { - "crosshair": { - "attachment": [ - { "name": "crosshair" } - ] - } - }, - "bones": { - "front-fist": { - "rotate": [ - { "value": 36.08 } - ] - }, - "rear-bracer": { - "rotate": [ - { "value": -26.55 } - ] - }, - "rear-upper-arm": { - "rotate": [ - { "value": 62.31 } - ] - }, - "front-bracer": { - "rotate": [ - { "value": 9.11 } - ] - }, - "gun": { - "rotate": [ - { "value": -0.31 } - ] - } - }, - "ik": { - "aim-ik": [ - { "mix": 0.995 } - ] - }, - "transform": { - "aim-front-arm-transform": [ - { "mixRotate": 0.784 } - ], - "aim-head-transform": [ - { "mixRotate": 0.659 } - ], - "aim-torso-transform": [ - { "mixRotate": 0.423 } - ] - } - }, - "death": { - "slots": { - "eye": { - "attachment": [ - { "name": "eye-surprised" }, - { "time": 0.5333, "name": "eye-indifferent" }, - { "time": 2.2, "name": "eye-surprised" }, - { "time": 4.6, "name": "eye-indifferent" } - ] - }, - "front-fist": { - "attachment": [ - { "name": "front-fist-open" } - ] - }, - "mouth": { - "attachment": [ - { "name": "mouth-oooo" }, - { "time": 0.5333, "name": "mouth-grind" }, - { "time": 1.4, "name": "mouth-oooo" }, - { "time": 2.1667, "name": "mouth-grind" }, - { "time": 4.5333, "name": "mouth-oooo" } - ] - } - }, - "bones": { - "head": { - "rotate": [ - { - "value": -2.83, - "curve": [ 0.015, -2.83, 0.036, 12.72 ] - }, - { - "time": 0.0667, - "value": 12.19, - "curve": [ 0.096, 11.68, 0.119, -1.14 ] - }, - { - "time": 0.1333, - "value": -6.86, - "curve": [ 0.149, -13.27, 0.21, -37.28 ] - }, - { - "time": 0.3, - "value": -36.86, - "curve": [ 0.354, -36.61, 0.412, -32.35 ] - }, - { - "time": 0.4667, - "value": -23.49, - "curve": [ 0.49, -19.87, 0.512, -3.29 ] - }, - { - "time": 0.5333, - "value": -3.24, - "curve": [ 0.56, -3.39, 0.614, -67.25 ] - }, - { - "time": 0.6333, - "value": -74.4, - "curve": [ 0.652, -81.58, 0.702, -88.94 ] - }, - { - "time": 0.7333, - "value": -88.93, - "curve": [ 0.805, -88.91, 0.838, -80.87 ] - }, - { - "time": 0.8667, - "value": -81.03, - "curve": [ 0.922, -81.32, 0.976, -85.29 ] - }, - { "time": 1, "value": -85.29, "curve": "stepped" }, - { - "time": 2.2333, - "value": -85.29, - "curve": [ 2.314, -85.29, 2.382, -68.06 ] - }, - { - "time": 2.4667, - "value": -63.48, - "curve": [ 2.57, -57.87, 2.916, -55.24 ] - }, - { - "time": 3.2, - "value": -55.1, - "curve": [ 3.447, -54.98, 4.135, -56.61 ] - }, - { - "time": 4.2667, - "value": -58.23, - "curve": [ 4.672, -63.24, 4.646, -82.69 ] - }, - { "time": 4.9333, "value": -85.29 } - ], - "scale": [ - { - "time": 0.4667, - "curve": [ 0.469, 1.005, 0.492, 1.065, 0.475, 1.018, 0.492, 0.94 ] - }, - { - "time": 0.5, - "x": 1.065, - "y": 0.94, - "curve": [ 0.517, 1.065, 0.541, 0.991, 0.517, 0.94, 0.542, 1.026 ] - }, - { - "time": 0.5667, - "x": 0.99, - "y": 1.025, - "curve": [ 0.593, 0.988, 0.609, 1.002, 0.595, 1.024, 0.607, 1.001 ] - }, - { "time": 0.6333 } - ] - }, - "neck": { - "rotate": [ - { - "value": -2.83, - "curve": [ 0.114, 1.33, 0.195, 4.13 ] - }, - { - "time": 0.2667, - "value": 4.13, - "curve": [ 0.351, 4.14, 0.444, -24.5 ] - }, - { - "time": 0.5, - "value": -24.69, - "curve": [ 0.571, -23.89, 0.55, 34.22 ] - }, - { - "time": 0.6667, - "value": 35.13, - "curve": [ 0.713, 34.81, 0.756, 22.76 ] - }, - { - "time": 0.8333, - "value": 22.82, - "curve": [ 0.868, 22.84, 0.916, 47.95 ] - }, - { "time": 0.9667, "value": 47.95, "curve": "stepped" }, - { - "time": 2.2333, - "value": 47.95, - "curve": [ 2.3, 47.95, 2.617, 18.72 ] - }, - { - "time": 2.6667, - "value": 18.51, - "curve": [ 3.172, 16.58, 4.06, 16.79 ] - }, - { - "time": 4.5333, - "value": 18.51, - "curve": [ 4.707, 19.13, 4.776, 41.11 ] - }, - { "time": 4.8, "value": 47.95 } - ] - }, - "torso": { - "rotate": [ - { - "value": -8.62, - "curve": [ 0.01, -16.71, 0.032, -33.6 ] - }, - { - "time": 0.0667, - "value": -33.37, - "curve": [ 0.182, -32.61, 0.298, 123.07 ] - }, - { - "time": 0.4667, - "value": 122.77, - "curve": [ 0.511, 122.69, 0.52, 100.2 ] - }, - { - "time": 0.5667, - "value": 88.96, - "curve": [ 0.588, 83.89, 0.667, 75.34 ] - }, - { - "time": 0.7, - "value": 75.34, - "curve": [ 0.767, 75.34, 0.9, 76.03 ] - }, - { "time": 0.9667, "value": 76.03 } - ] - }, - "front-upper-arm": { - "rotate": [ - { - "value": -38.86, - "curve": [ 0.022, -40.38, 0.096, -41.92 ] - }, - { - "time": 0.1333, - "value": -41.92, - "curve": [ 0.176, -41.92, 0.216, -16.92 ] - }, - { - "time": 0.2333, - "value": -4.35, - "curve": [ 0.258, 13.69, 0.308, 60.35 ] - }, - { - "time": 0.4, - "value": 60.17, - "curve": [ 0.496, 59.98, 0.539, 33.63 ] - }, - { - "time": 0.5667, - "value": 23.06, - "curve": [ 0.595, 32.71, 0.675, 53.71 ] - }, - { - "time": 0.7333, - "value": 53.61, - "curve": [ 0.797, 53.51, 0.926, 30.98 ] - }, - { "time": 0.9333, "value": 19.57, "curve": "stepped" }, - { - "time": 1.9667, - "value": 19.57, - "curve": [ 2.245, 19.57, 2.702, 77.03 ] - }, - { - "time": 3.0667, - "value": 77.06, - "curve": [ 3.209, 77.33, 3.291, 67.99 ] - }, - { - "time": 3.4333, - "value": 67.96, - "curve": [ 3.608, 68.34, 3.729, 73.88 ] - }, - { - "time": 3.8333, - "value": 73.42, - "curve": [ 4.152, 73.91, 4.46, 71.98 ] - }, - { - "time": 4.6333, - "value": 64.77, - "curve": [ 4.688, 62.5, 4.847, 26.42 ] - }, - { "time": 4.8667, "value": 10.94 } - ] - }, - "rear-upper-arm": { - "rotate": [ - { - "value": -44.7, - "curve": [ 0.033, -44.7, 0.12, 54.89 ] - }, - { - "time": 0.1333, - "value": 64.62, - "curve": [ 0.154, 79.18, 0.214, 79.42 ] - }, - { - "time": 0.2667, - "value": 63.4, - "curve": [ 0.293, 55.19, 0.332, 30.13 ] - }, - { - "time": 0.3667, - "value": 30.13, - "curve": [ 0.4, 30.13, 0.441, 39.87 ] - }, - { - "time": 0.4667, - "value": 55.13, - "curve": [ 0.488, 68.18, 0.52, 100.72 ] - }, - { - "time": 0.5333, - "value": 111.96, - "curve": [ 0.551, 126.88, 0.627, 185.97 ] - }, - { - "time": 0.6667, - "value": 185.97, - "curve": [ 0.692, 185.97, 0.736, 162.43 ] - }, - { - "time": 0.8, - "value": 158.01, - "curve": [ 0.9, 151.12, 1.017, 144.01 ] - }, - { "time": 1.1, "value": 144.01, "curve": "stepped" }, - { - "time": 2.3667, - "value": 144.01, - "curve": [ 2.492, 144.01, 2.742, 138.63 ] - }, - { - "time": 2.8667, - "value": 138.63, - "curve": [ 3.067, 138.63, 3.467, 138.63 ] - }, - { - "time": 3.6667, - "value": 138.63, - "curve": [ 3.883, 138.63, 4.317, 135.18 ] - }, - { - "time": 4.5333, - "value": 135.18, - "curve": [ 4.575, 135.18, 4.692, 131.59 ] - }, - { - "time": 4.7333, - "value": 131.59, - "curve": [ 4.758, 131.59, 4.517, 144.01 ] - }, - { "time": 4.8333, "value": 144.01 } - ], - "translate": [ - { - "time": 0.4667, - "curve": [ 0.517, 0, 0.617, -34.96, 0.517, 0, 0.617, -16.59 ] - }, - { "time": 0.6667, "x": -35.02, "y": -16.62 } - ] - }, - "front-bracer": { - "rotate": [ - { - "value": 21.88, - "curve": [ 0.033, 21.88, 0.099, 20.44 ] - }, - { - "time": 0.1333, - "value": 9.43, - "curve": [ 0.164, -0.29, 0.162, -38.26 ] - }, - { - "time": 0.2, - "value": -38.05, - "curve": [ 0.24, -37.96, 0.228, -17.82 ] - }, - { - "time": 0.3333, - "value": -9.73, - "curve": [ 0.372, -6.76, 0.431, -0.74 ] - }, - { - "time": 0.4667, - "value": 6.47, - "curve": [ 0.489, 11.05, 0.503, 19.09 ] - }, - { - "time": 0.5333, - "value": 19.09, - "curve": [ 0.571, 19.09, 0.554, -42.67 ] - }, - { - "time": 0.6, - "value": -42.67, - "curve": [ 0.653, -42.67, 0.691, -13.8 ] - }, - { - "time": 0.7, - "value": -3.54, - "curve": [ 0.707, 3.8, 0.719, 24.94 ] - }, - { - "time": 0.8, - "value": 25.31, - "curve": [ 0.902, 24.75, 0.992, -0.34 ] - }, - { "time": 1, "value": -32.16, "curve": "stepped" }, - { - "time": 2.2333, - "value": -32.16, - "curve": [ 2.6, -32.16, 2.638, -5.3 ] - }, - { - "time": 2.7, - "value": -1.96, - "curve": [ 2.707, -1.56, 2.775, 1.67 ] - }, - { - "time": 2.8, - "value": 1.67, - "curve": [ 2.825, 1.67, 2.875, -0.39 ] - }, - { - "time": 2.9, - "value": -0.39, - "curve": [ 2.925, -0.39, 2.975, 0.26 ] - }, - { - "time": 3, - "value": 0.26, - "curve": [ 3.025, 0.26, 3.075, -1.81 ] - }, - { - "time": 3.1, - "value": -1.81, - "curve": [ 3.125, -1.81, 3.175, -0.52 ] - }, - { - "time": 3.2, - "value": -0.52, - "curve": [ 3.225, -0.52, 3.275, -2.41 ] - }, - { - "time": 3.3, - "value": -2.41, - "curve": [ 3.333, -2.41, 3.4, -0.38 ] - }, - { - "time": 3.4333, - "value": -0.38, - "curve": [ 3.467, -0.38, 3.533, -2.25 ] - }, - { - "time": 3.5667, - "value": -2.25, - "curve": [ 3.592, -2.25, 3.642, -0.33 ] - }, - { - "time": 3.6667, - "value": -0.33, - "curve": [ 3.7, -0.33, 3.767, -1.34 ] - }, - { - "time": 3.8, - "value": -1.34, - "curve": [ 3.825, -1.34, 3.862, -0.77 ] - }, - { - "time": 3.9, - "value": -0.77, - "curve": [ 3.942, -0.77, 3.991, -1.48 ] - }, - { - "time": 4, - "value": -1.87, - "curve": [ 4.167, -1.87, 4.5, -1.96 ] - }, - { - "time": 4.6667, - "value": -1.96, - "curve": [ 4.709, 18.05, 4.767, 34.55 ] - }, - { - "time": 4.8, - "value": 34.55, - "curve": [ 4.84, 34.24, 4.902, 12.03 ] - }, - { "time": 4.9333, "value": -18.75 } - ] - }, - "front-fist": { - "rotate": [ - { - "value": -2.33, - "curve": [ 0.019, 4.43, 0.069, 10.82 ] - }, - { - "time": 0.1, - "value": 10.6, - "curve": [ 0.148, 10.6, 0.123, -15.24 ] - }, - { - "time": 0.2, - "value": -15.35, - "curve": [ 0.266, -15.44, 0.316, -6.48 ] - }, - { - "time": 0.3333, - "value": -3.9, - "curve": [ 0.362, 0.43, 0.479, 22.36 ] - }, - { - "time": 0.5667, - "value": 22.01, - "curve": [ 0.61, 21.84, 0.627, 12.85 ] - }, - { - "time": 0.6333, - "value": 9.05, - "curve": [ 0.643, 2.77, 0.622, -39.43 ] - }, - { - "time": 0.7, - "value": -39.5, - "curve": [ 0.773, -39.57, 0.814, 14.77 ] - }, - { - "time": 0.8667, - "value": 14.81, - "curve": [ 0.965, 14.88, 1.1, 5.64 ] - }, - { "time": 1.1, "value": -6.08, "curve": "stepped" }, - { - "time": 2.2333, - "value": -6.08, - "curve": [ 2.307, -6.08, 2.427, -25.89 ] - }, - { - "time": 2.5333, - "value": -22.42, - "curve": [ 2.598, -20.38, 2.657, 5.73 ] - }, - { - "time": 2.7, - "value": 5.73, - "curve": [ 2.77, 5.73, 2.851, -5.38 ] - }, - { - "time": 2.9333, - "value": -5.38, - "curve": [ 3.008, -5.38, 3.087, -4.54 ] - }, - { - "time": 3.1667, - "value": -4.17, - "curve": [ 3.223, -3.91, 4.486, 5.73 ] - }, - { - "time": 4.6667, - "value": 5.73, - "curve": [ 4.733, 5.73, 4.886, -2.47 ] - }, - { "time": 4.9333, "value": -6.52 } - ] - }, - "rear-bracer": { - "rotate": [ - { - "value": 10.36, - "curve": [ 0.033, 10.36, 0.1, -32.89 ] - }, - { - "time": 0.1333, - "value": -32.89, - "curve": [ 0.183, -32.89, 0.283, -4.45 ] - }, - { - "time": 0.3333, - "value": -4.45, - "curve": [ 0.367, -4.45, 0.438, -6.86 ] - }, - { - "time": 0.4667, - "value": -8.99, - "curve": [ 0.529, -13.62, 0.605, -20.58 ] - }, - { - "time": 0.6333, - "value": -23.2, - "curve": [ 0.708, -30.18, 0.758, -35.56 ] - }, - { - "time": 0.8, - "value": -35.56, - "curve": [ 0.875, -35.56, 1.025, -23.2 ] - }, - { "time": 1.1, "value": -23.2 } - ] - }, - "gun": { - "rotate": [ - { - "value": -2.79, - "curve": [ 0.033, -2.79, 0.12, -7.22 ] - }, - { - "time": 0.1333, - "value": -8.52, - "curve": [ 0.168, -11.87, 0.29, -23.71 ] - }, - { - "time": 0.3333, - "value": -26.24, - "curve": [ 0.369, -28.31, 0.436, -29.75 ] - }, - { - "time": 0.5, - "value": -29.66, - "curve": [ 0.552, -29.58, 0.611, -25.47 ] - }, - { - "time": 0.6333, - "value": -22.68, - "curve": [ 0.656, -19.76, 0.68, -10.02 ] - }, - { - "time": 0.7, - "value": -6.49, - "curve": [ 0.722, -2.6, 0.75, -1.22 ] - }, - { - "time": 0.7667, - "value": -1.35, - "curve": [ 0.792, -1.55, 0.842, -19.74 ] - }, - { "time": 0.8667, "value": -19.8 } - ] - }, - "hip": { - "translate": [ - { - "curve": [ 0.098, -42.62, 0.166, -79.85, 0.029, 84.97, 0.109, 155.93 ] - }, - { - "time": 0.2667, - "x": -133.79, - "y": 152.44, - "curve": [ 0.361, -184.63, 0.392, -203.69, 0.42, 149.12, 0.467, -15.7 ] - }, - { - "time": 0.4667, - "x": -230.02, - "y": -113.87, - "curve": [ 0.523, -249.86, 0.565, -261.7, 0.473, -133.1, 0.583, -203.43 ] - }, - { - "time": 0.6, - "x": -268.57, - "y": -203.43, - "curve": [ 0.663, -280.98, 0.816, -290.05, 0.708, -203.43, 0.892, -203.5 ] - }, - { "time": 1, "x": -290.42, "y": -203.5 } - ] - }, - "front-thigh": { - "rotate": [ - { - "curve": [ 0.06, 1.02, 0.151, 45.23 ] - }, - { - "time": 0.1667, - "value": 54.01, - "curve": [ 0.19, 66.85, 0.358, 169.85 ] - }, - { - "time": 0.5, - "value": 169.51, - "curve": [ 0.628, 169.85, 0.692, 108.85 ] - }, - { - "time": 0.7, - "value": 97.74, - "curve": [ 0.723, 102.6, 0.805, 111.6 ] - }, - { - "time": 0.8667, - "value": 111.69, - "curve": [ 0.899, 111.83, 1.015, 109.15 ] - }, - { "time": 1.0667, "value": 95.8 } - ] - }, - "front-shin": { - "rotate": [ - { - "curve": [ 0.086, -0.02, 0.191, -24.25 ] - }, - { - "time": 0.2, - "value": -26.5, - "curve": [ 0.214, -29.92, 0.249, -40.51 ] - }, - { - "time": 0.3333, - "value": -40.57, - "curve": [ 0.431, -40.7, 0.459, -11.34 ] - }, - { - "time": 0.4667, - "value": -8.71, - "curve": [ 0.477, -5.16, 0.524, 17.13 ] - }, - { - "time": 0.6, - "value": 16.98, - "curve": [ 0.632, 17.09, 0.625, 2.76 ] - }, - { - "time": 0.6333, - "value": 2.76, - "curve": [ 0.648, 2.76, 0.653, 2.75 ] - }, - { - "time": 0.6667, - "value": 2.59, - "curve": [ 0.678, 2.39, 0.733, 2.53 ] - }, - { - "time": 0.7333, - "value": -9.43, - "curve": [ 0.745, -2.48, 0.782, 3.12 ] - }, - { - "time": 0.8, - "value": 4.28, - "curve": [ 0.832, 6.32, 0.895, 8.46 ] - }, - { - "time": 0.9333, - "value": 8.49, - "curve": [ 0.986, 8.53, 1.051, 6.38 ] - }, - { - "time": 1.0667, - "value": 2.28, - "curve": [ 1.078, 4.17, 1.103, 5.86 ] - }, - { - "time": 1.1333, - "value": 5.88, - "curve": [ 1.191, 5.93, 1.209, 4.56 ] - }, - { "time": 1.2333, "value": 2.52 } - ] - }, - "rear-thigh": { - "rotate": [ - { - "curve": [ 0.033, 0, 0.12, 50.26 ] - }, - { - "time": 0.1333, - "value": 57.3, - "curve": [ 0.164, 73.34, 0.274, 147.18 ] - }, - { - "time": 0.3333, - "value": 147.1, - "curve": [ 0.475, 146.45, 0.583, 95.72 ] - }, - { - "time": 0.6, - "value": 79.66, - "curve": [ 0.62, 94.74, 0.732, 103.15 ] - }, - { - "time": 0.7667, - "value": 103.02, - "curve": [ 0.812, 102.85, 0.897, 95.75 ] - }, - { "time": 0.9333, "value": 83.01 } - ] - }, - "rear-shin": { - "rotate": [ - { - "curve": [ 0.021, -16.65, 0.091, -54.82 ] - }, - { - "time": 0.1667, - "value": -55.29, - "curve": [ 0.187, -55.42, 0.213, -52.52 ] - }, - { - "time": 0.2333, - "value": -45.98, - "curve": [ 0.242, -43.1, 0.311, -12.73 ] - }, - { - "time": 0.3333, - "value": -6.32, - "curve": [ 0.356, 0.13, 0.467, 24.5 ] - }, - { - "time": 0.5, - "value": 24.5, - "curve": [ 0.543, 24.5, 0.56, 3.78 ] - }, - { - "time": 0.5667, - "value": -3.53, - "curve": [ 0.585, 3.86, 0.659, 16.63 ] - }, - { - "time": 0.7, - "value": 16.56, - "curve": [ 0.782, 16.43, 0.896, 8.44 ] - }, - { - "time": 0.9333, - "value": 4.04, - "curve": [ 0.956, 6.84, 1.008, 8.41 ] - }, - { - "time": 1.0333, - "value": 8.41, - "curve": [ 1.067, 8.41, 1.122, 8.14 ] - }, - { "time": 1.1667, "value": 5.8 } - ] - }, - "rear-foot": { - "rotate": [ - { - "value": -0.28, - "curve": [ 0.033, -0.28, 0.256, -66.71 ] - }, - { - "time": 0.3667, - "value": -66.84, - "curve": [ 0.418, -66.91, 0.499, -21.79 ] - }, - { - "time": 0.6, - "value": -21.52, - "curve": [ 0.652, -21.38, 0.665, -53.96 ] - }, - { - "time": 0.7, - "value": -54.26, - "curve": [ 0.757, -53.96, 0.843, -2.07 ] - }, - { - "time": 0.9333, - "value": -1.47, - "curve": [ 0.968, -2.07, 0.975, -19.96 ] - }, - { - "time": 1, - "value": -19.96, - "curve": [ 1.025, -19.96, 1.075, -12.42 ] - }, - { - "time": 1.1, - "value": -12.42, - "curve": [ 1.133, -12.42, 1.2, -18.34 ] - }, - { "time": 1.2333, "value": -18.34 } - ] - }, - "front-foot": { - "rotate": [ - { - "curve": [ 0.008, -11.33, 0.108, -57.71 ] - }, - { - "time": 0.1333, - "value": -57.71, - "curve": [ 0.175, -57.71, 0.229, 19.73 ] - }, - { - "time": 0.3, - "value": 19.34, - "curve": [ 0.354, 19.34, 0.4, -57.76 ] - }, - { - "time": 0.4333, - "value": -57.76, - "curve": [ 0.458, -57.76, 0.511, -3.56 ] - }, - { - "time": 0.5333, - "value": 3.7, - "curve": [ 0.563, 13.29, 0.633, 15.79 ] - }, - { - "time": 0.6667, - "value": 15.79, - "curve": [ 0.7, 15.79, 0.767, -48.75 ] - }, - { - "time": 0.8, - "value": -48.75, - "curve": [ 0.842, -48.75, 0.925, 4.7 ] - }, - { - "time": 0.9667, - "value": 4.7, - "curve": [ 1, 4.7, 1.067, -22.9 ] - }, - { - "time": 1.1, - "value": -22.9, - "curve": [ 1.142, -22.9, 1.225, -13.28 ] - }, - { "time": 1.2667, "value": -13.28 } - ] - }, - "rear-foot-target": { - "rotate": [ - { "value": -0.28 } - ] - }, - "front-foot-tip": { - "rotate": [ - { - "value": -0.28, - "curve": [ 0.008, -0.28, 0.003, -66.62 ] - }, - { - "time": 0.0667, - "value": -65.75, - "curve": [ 0.166, -64.42, 0.234, 14.35 ] - }, - { - "time": 0.2667, - "value": 38.25, - "curve": [ 0.294, 57.91, 0.392, 89.79 ] - }, - { - "time": 0.4667, - "value": 90.73, - "curve": [ 0.483, 90.73, 0.55, 177.66 ] - }, - { - "time": 0.5667, - "value": 177.66, - "curve": [ 0.733, 176.24, 0.75, 11.35 ] - }, - { - "time": 0.8, - "value": 11.35, - "curve": [ 0.886, 12.29, 0.911, 47.88 ] - }, - { - "time": 0.9333, - "value": 56.77, - "curve": [ 0.967, 70.59, 1.05, 86.46 ] - }, - { - "time": 1.1, - "value": 86.46, - "curve": [ 1.187, 86.46, 1.214, 66.44 ] - }, - { "time": 1.3333, "value": 64.55 } - ] - }, - "back-foot-tip": { - "rotate": [ - { - "value": -0.28, - "curve": [ 0, -7.97, 0.027, -18.69 ] - }, - { - "time": 0.0667, - "value": -19, - "curve": [ 0.166, -19.3, 0.208, 15.58 ] - }, - { - "time": 0.2667, - "value": 45.95, - "curve": [ 0.306, 66.24, 0.378, 99.08 ] - }, - { - "time": 0.4333, - "value": 99.08, - "curve": [ 0.497, 98.62, 0.488, -1.2 ] - }, - { - "time": 0.5667, - "value": -1.32, - "curve": [ 0.637, -0.84, 0.687, 94.41 ] - }, - { - "time": 0.7333, - "value": 94.33, - "curve": [ 0.832, 94.16, 0.895, 29.6 ] - }, - { - "time": 0.9667, - "value": 28.67, - "curve": [ 1.026, 28.67, 1.045, 53.14 ] - }, - { "time": 1.1, "value": 53.38 } - ] - }, - "hair4": { - "rotate": [ - { - "curve": [ 0.011, 4.5, 0.05, 11.42 ] - }, - { - "time": 0.0667, - "value": 11.42, - "curve": [ 0.1, 11.42, 0.136, -5.92 ] - }, - { - "time": 0.1667, - "value": -10.54, - "curve": [ 0.206, -16.51, 0.327, -22 ] - }, - { - "time": 0.3667, - "value": -24.47, - "curve": [ 0.413, -27.37, 0.467, -43.99 ] - }, - { - "time": 0.5, - "value": -43.99, - "curve": [ 0.533, -43.99, 0.552, 12.12 ] - }, - { - "time": 0.6333, - "value": 11.85, - "curve": [ 0.714, 11.59, 0.758, -34.13 ] - }, - { - "time": 0.8, - "value": -34.13, - "curve": [ 0.858, -34.13, 1.015, -12.47 ] - }, - { - "time": 1.0667, - "value": -8.85, - "curve": [ 1.121, -5.07, 1.219, -0.02 ] - }, - { - "time": 1.3333, - "value": 1.29, - "curve": [ 1.509, 3.3, 1.763, 2.75 ] - }, - { - "time": 1.8667, - "value": 2.78, - "curve": [ 1.974, 2.81, 2.108, 2.81 ] - }, - { - "time": 2.2, - "value": 2.78, - "curve": [ 2.315, 2.74, 2.374, 1.22 ] - }, - { - "time": 2.4667, - "value": 1.18, - "curve": [ 2.525, 1.18, 2.608, 10.79 ] - }, - { - "time": 2.6667, - "value": 10.79, - "curve": [ 2.725, 10.79, 2.893, 4.72 ] - }, - { - "time": 3.0333, - "value": 4.72, - "curve": [ 3.117, 4.72, 3.283, 7.93 ] - }, - { - "time": 3.3667, - "value": 7.93, - "curve": [ 3.492, 7.93, 3.775, 6.93 ] - }, - { - "time": 3.9, - "value": 6.93, - "curve": [ 3.981, 6.93, 4.094, 6.9 ] - }, - { - "time": 4.2, - "value": 8.44, - "curve": [ 4.267, 9.42, 4.401, 16.61 ] - }, - { - "time": 4.5, - "value": 16.33, - "curve": [ 4.582, 16.12, 4.709, 9.94 ] - }, - { - "time": 4.7333, - "value": 6.51, - "curve": [ 4.747, 4.57, 4.779, -1.76 ] - }, - { - "time": 4.8, - "value": -1.75, - "curve": [ 4.823, -1.73, 4.82, 4.47 ] - }, - { - "time": 4.8667, - "value": 6.04, - "curve": [ 4.899, 7.14, 4.913, 6.93 ] - }, - { "time": 4.9333, "value": 6.93 } - ] - }, - "hair2": { - "rotate": [ - { - "value": 10.61, - "curve": [ 0.075, 10.61, 0.05, 12.67 ] - }, - { - "time": 0.0667, - "value": 12.67, - "curve": [ 0.123, 12.67, 0.194, -16.51 ] - }, - { - "time": 0.2, - "value": -19.87, - "curve": [ 0.207, -23.48, 0.236, -31.68 ] - }, - { - "time": 0.3, - "value": -31.8, - "curve": [ 0.356, -31.9, 0.437, -25.61 ] - }, - { - "time": 0.4667, - "value": -19.29, - "curve": [ 0.485, -15.33, 0.529, 6.48 ] - }, - { - "time": 0.5667, - "value": 6.67, - "curve": [ 0.628, 6.97, 0.65, -46.39 ] - }, - { - "time": 0.7333, - "value": -46.3, - "curve": [ 0.843, -46.17, 0.941, -33.37 ] - }, - { - "time": 0.9667, - "value": -23.17, - "curve": [ 0.972, -20.98, 1.047, 15.21 ] - }, - { - "time": 1.1, - "value": 15.21, - "curve": [ 1.142, 15.21, 1.183, 10.73 ] - }, - { - "time": 1.2667, - "value": 10.61, - "curve": [ 1.45, 10.34, 1.817, 10.61 ] - }, - { - "time": 2, - "value": 10.61, - "curve": [ 2.075, 10.61, 2.225, 16.9 ] - }, - { - "time": 2.3, - "value": 16.9, - "curve": [ 2.327, 16.9, 2.347, 6.81 ] - }, - { - "time": 2.4, - "value": 6.83, - "curve": [ 2.492, 6.87, 2.602, 17.39 ] - }, - { - "time": 2.6667, - "value": 17.39, - "curve": [ 2.742, 17.39, 2.892, 10.67 ] - }, - { - "time": 2.9667, - "value": 10.64, - "curve": [ 3.187, 10.57, 3.344, 10.73 ] - }, - { - "time": 3.6, - "value": 11.4, - "curve": [ 3.766, 11.83, 3.874, 14.87 ] - }, - { - "time": 3.9333, - "value": 14.83, - "curve": [ 4.022, 14.76, 4.208, 9.49 ] - }, - { - "time": 4.3, - "value": 9.54, - "curve": [ 4.391, 9.58, 4.441, 14.82 ] - }, - { - "time": 4.5333, - "value": 14.84, - "curve": [ 4.642, 14.88, 4.692, 1.17 ] - }, - { - "time": 4.7667, - "value": 1.24, - "curve": [ 4.823, 1.3, 4.818, 18.35 ] - }, - { - "time": 4.8667, - "value": 18.38, - "curve": [ 4.905, 18.41, 4.901, 10.61 ] - }, - { "time": 4.9333, "value": 10.61 } - ] - }, - "torso2": { - "rotate": [ - { - "curve": [ 0.048, 0, 0.129, -12.73 ] - }, - { - "time": 0.1667, - "value": -15.95, - "curve": [ 0.221, -20.66, 0.254, -21.62 ] - }, - { - "time": 0.3, - "value": -21.59, - "curve": [ 0.458, -21.46, 0.46, -1.67 ] - }, - { - "time": 0.6333, - "value": -1.71, - "curve": [ 0.71, -1.73, 0.715, -4 ] - }, - { - "time": 0.7667, - "value": -3.97, - "curve": [ 0.866, -3.92, 0.84, 0.02 ] - }, - { "time": 1, "curve": "stepped" }, - { - "time": 2, - "curve": [ 2.275, 0, 2.867, -5.8 ] - }, - { - "time": 3.1, - "value": -6.44, - "curve": [ 3.327, -7.06, 3.71, -6.23 ] - }, - { - "time": 3.9333, - "value": -5.41, - "curve": [ 4.168, -4.53, 4.488, -2.83 ] - }, - { "time": 4.8 } - ] - }, - "torso3": { - "rotate": [ - { - "curve": [ 0.025, 0, 0.09, -3.66 ] - }, - { - "time": 0.1, - "value": -4.55, - "curve": [ 0.143, -8.4, 0.223, -17.07 ] - }, - { - "time": 0.2333, - "value": -18.31, - "curve": [ 0.282, -24.44, 0.35, -29 ] - }, - { - "time": 0.3667, - "value": -30.07, - "curve": [ 0.405, -32.58, 0.442, -33.03 ] - }, - { - "time": 0.4667, - "value": -32.99, - "curve": [ 0.491, -33.04, 0.505, -23.56 ] - }, - { - "time": 0.5333, - "value": -23.55, - "curve": [ 0.571, -23.67, 0.599, -27.21 ] - }, - { - "time": 0.6333, - "value": -27.21, - "curve": [ 0.669, -27.2, 0.742, -10.43 ] - }, - { - "time": 0.7667, - "value": -7.79, - "curve": [ 0.788, -5.53, 0.796, -4.42 ] - }, - { - "time": 0.8333, - "value": -2.9, - "curve": [ 0.875, -1.21, 0.933, 0 ] - }, - { "time": 0.9667, "curve": "stepped" }, - { - "time": 2.4333, - "curve": [ 2.517, 0, 2.683, 4.63 ] - }, - { - "time": 2.7667, - "value": 4.66, - "curve": [ 3.084, 4.76, 3.248, 4.37 ] - }, - { - "time": 3.4, - "value": 3.74, - "curve": [ 3.596, 2.92, 3.755, 2.18 ] - }, - { - "time": 3.8667, - "value": 1.72, - "curve": [ 4.136, 0.59, 4.471, 0 ] - }, - { "time": 4.8 } - ] - }, - "hair3": { - "rotate": [ - { - "curve": [ 0, 0, 0.041, 10.74 ] - }, - { - "time": 0.0667, - "value": 14.16, - "curve": [ 0.075, 15.22, 0.148, 18.04 ] - }, - { - "time": 0.2, - "value": 18.13, - "curve": [ 0.251, 18.23, 0.307, -4.75 ] - }, - { - "time": 0.3667, - "value": -5.06, - "curve": [ 0.412, -5.3, 0.47, -0.96 ] - }, - { - "time": 0.5, - "value": 2.21, - "curve": [ 0.512, 3.48, 0.595, 20.31 ] - }, - { - "time": 0.6333, - "value": 24.87, - "curve": [ 0.647, 26.53, 0.719, 29.33 ] - }, - { - "time": 0.8, - "value": 29.22, - "curve": [ 0.859, 29.14, 0.9, 28.48 ] - }, - { - "time": 0.9333, - "value": 26.11, - "curve": [ 0.981, 22.72, 0.998, 2.06 ] - }, - { "time": 1.1, "value": 2.21 } - ] - }, - "hair1": { - "rotate": [ - { - "curve": [ 0.047, -0.21, 0.048, 7.86 ] - }, - { - "time": 0.0667, - "value": 13.27, - "curve": [ 0.083, 18.05, 0.135, 24.44 ] - }, - { - "time": 0.2, - "value": 24.02, - "curve": [ 0.225, 24.02, 0.28, 6.32 ] - }, - { - "time": 0.3, - "value": 3.1, - "curve": [ 0.323, -0.58, 0.382, -7.12 ] - }, - { - "time": 0.4667, - "value": -7.45, - "curve": [ 0.512, -7.66, 0.538, 12.13 ] - }, - { - "time": 0.5667, - "value": 16.46, - "curve": [ 0.609, 22.72, 0.672, 27.4 ] - }, - { - "time": 0.7333, - "value": 27.55, - "curve": [ 0.827, 27.4, 0.933, 23.23 ] - }, - { - "time": 0.9667, - "value": 19.11, - "curve": [ 0.998, 15.27, 1.092, -2.53 ] - }, - { - "time": 1.1333, - "value": -2.53, - "curve": [ 1.158, -2.53, 1.208, 0 ] - }, - { "time": 1.2333, "curve": "stepped" }, - { - "time": 2, - "curve": [ 2.075, 0, 2.248, 0.35 ] - }, - { - "time": 2.3333, - "value": 0.78, - "curve": [ 2.585, 2.06, 2.805, 3.46 ] - }, - { - "time": 3.2, - "value": 3.5, - "curve": [ 3.593, 3.54, 3.979, 2.36 ] - }, - { - "time": 4.1667, - "value": 1.55, - "curve": [ 4.391, 0.59, 4.447, 0.04 ] - }, - { - "time": 4.6, - "value": 0.04, - "curve": [ 4.642, 0.04, 4.742, 0 ] - }, - { "time": 4.9333 } - ] - }, - "head-control": { - "translate": [ - { - "curve": [ 0.025, 0, 0.09, 1.43, 0.025, 0, 0.075, -34.76 ] - }, - { - "time": 0.1, - "x": 1.59, - "y": -34.76, - "curve": [ 0.214, 3.33, 0.375, 5.34, 0.192, -34.76, 0.441, -21.17 ] - }, - { - "time": 0.4667, - "x": 5.34, - "y": -12.57, - "curve": [ 0.492, 5.34, 0.55, 5.24, 0.482, -7.36, 0.504, 4.03 ] - }, - { - "time": 0.5667, - "x": 5.11, - "y": 4.01, - "curve": [ 0.658, 4.45, 0.679, 3.19, 0.649, 3.98, 0.642, -16.84 ] - }, - { - "time": 0.7, - "x": 2.8, - "y": -16.74, - "curve": [ 0.787, 1.15, 0.881, -1.29, 0.772, -16.62, 0.82, 8.95 ] - }, - { - "time": 0.9, - "x": -1.72, - "y": 8.91, - "curve": [ 0.961, -3.06, 1.025, -3.58, 0.975, 8.87, 0.951, -1.37 ] - }, - { - "time": 1.1, - "x": -3.58, - "y": -1.45, - "curve": [ 1.292, -3.58, 2.002, -2.4, 1.292, -1.56, 1.975, -1.45 ] - }, - { - "time": 2.1667, - "x": -1.39, - "y": -1.45, - "curve": [ 2.25, -0.88, 2.503, 1.38, 2.283, -1.45, 2.603, -12.44 ] - }, - { - "time": 2.6667, - "x": 2.13, - "y": -14.45, - "curve": [ 2.766, 2.59, 2.999, 2.81, 2.835, -19.73, 3.003, -25.2 ] - }, - { - "time": 3.1333, - "x": 2.91, - "y": -26.08, - "curve": [ 3.392, 3.1, 4.199, 4.05, 3.483, -28.44, 4.129, -27.23 ] - }, - { - "time": 4.3667, - "x": 4.81, - "y": -19.59, - "curve": [ 4.429, 5.1, 4.594, 8.54, 4.538, -14.08, 4.583, -7.88 ] - }, - { - "time": 4.6667, - "x": 8.65, - "y": -4.56, - "curve": [ 4.794, 8.86, 4.806, 5.93, 4.691, -3.59, 4.8, -1.61 ] - }, - { "time": 4.9333, "x": 5.8, "y": -1.99 } - ] - } - }, - "ik": { - "front-foot-ik": [ - { "mix": 0 } - ], - "front-leg-ik": [ - { "mix": 0, "bendPositive": false } - ], - "rear-foot-ik": [ - { "mix": 0.005 } - ], - "rear-leg-ik": [ - { "mix": 0.005, "bendPositive": false } - ] - } - }, - "hoverboard": { - "slots": { - "exhaust1": { - "attachment": [ - { "name": "hoverglow-small" } - ] - }, - "exhaust2": { - "attachment": [ - { "name": "hoverglow-small" } - ] - }, - "exhaust3": { - "attachment": [ - { "name": "hoverglow-small" } - ] - }, - "front-fist": { - "attachment": [ - { "name": "front-fist-open" } - ] - }, - "hoverboard-board": { - "attachment": [ - { "name": "hoverboard-board" } - ] - }, - "hoverboard-thruster-front": { - "attachment": [ - { "name": "hoverboard-thruster" } - ] - }, - "hoverboard-thruster-rear": { - "attachment": [ - { "name": "hoverboard-thruster" } - ] - }, - "hoverglow-front": { - "attachment": [ - { "name": "hoverglow-small" } - ] - }, - "hoverglow-rear": { - "attachment": [ - { "name": "hoverglow-small" } - ] - }, - "side-glow1": { - "attachment": [ - { "name": "hoverglow-small" }, - { "time": 0.9667 } - ] - }, - "side-glow2": { - "attachment": [ - { "time": 0.0667, "name": "hoverglow-small" }, - { "time": 1 } - ] - }, - "side-glow3": { - "attachment": [ - { "name": "hoverglow-small" }, - { "time": 0.9667 } - ] - } - }, - "bones": { - "hoverboard-controller": { - "translate": [ - { - "x": 319.55, - "y": -1.59, - "curve": [ 0.064, 319.55, 0.2, 347.85, 0.058, -1.2, 0.2, 23.11 ] - }, - { - "time": 0.2667, - "x": 347.66, - "y": 39.62, - "curve": [ 0.35, 347.41, 0.476, 341.47, 0.323, 53.58, 0.44, 85.82 ] - }, - { - "time": 0.5333, - "x": 338.47, - "y": 85.72, - "curve": [ 0.603, 334.83, 0.913, 319.65, 0.621, 85.62, 0.88, -1.53 ] - }, - { "time": 1, "x": 319.55, "y": -1.59 } - ] - }, - "hip": { - "translate": [ - { - "x": -53.49, - "y": 32.14, - "curve": [ 0.061, -53.77, 0.093, -51.81, 0.044, 16.34, 0.063, 9.67 ] - }, - { - "time": 0.1333, - "x": -49.31, - "y": 7.01, - "curve": [ 0.3, -35.27, 0.461, -20.06, 0.314, 9.52, 0.408, 121.09 ] - }, - { - "time": 0.5667, - "x": -20.06, - "y": 122.72, - "curve": [ 0.716, -20.09, 0.912, -53.29, 0.753, 121.8, 0.946, 51.85 ] - }, - { "time": 1, "x": -53.49, "y": 32.14 } - ] - }, - "exhaust1": { - "scale": [ - { - "x": 1.593, - "y": 0.964, - "curve": [ 0.033, 1.593, 0.1, 1, 0.033, 0.964, 0.1, 0.713 ] - }, - { - "time": 0.1333, - "y": 0.713, - "curve": [ 0.15, 1, 0.183, 1.774, 0.15, 0.713, 0.183, 0.883 ] - }, - { - "time": 0.2, - "x": 1.774, - "y": 0.883, - "curve": [ 0.242, 1.774, 0.325, 1.181, 0.242, 0.883, 0.325, 0.649 ] - }, - { - "time": 0.3667, - "x": 1.181, - "y": 0.649, - "curve": [ 0.408, 1.181, 0.492, 1.893, 0.408, 0.649, 0.492, 0.819 ] - }, - { - "time": 0.5333, - "x": 1.893, - "y": 0.819, - "curve": [ 0.558, 1.893, 0.608, 1.18, 0.558, 0.819, 0.608, 0.686 ] - }, - { - "time": 0.6333, - "x": 1.18, - "y": 0.686, - "curve": [ 0.658, 1.18, 0.708, 1.903, 0.658, 0.686, 0.708, 0.855 ] - }, - { - "time": 0.7333, - "x": 1.903, - "y": 0.855, - "curve": [ 0.767, 1.903, 0.833, 1.311, 0.767, 0.855, 0.833, 0.622 ] - }, - { - "time": 0.8667, - "x": 1.311, - "y": 0.622, - "curve": [ 0.9, 1.311, 0.967, 1.593, 0.9, 0.622, 0.967, 0.964 ] - }, - { "time": 1, "x": 1.593, "y": 0.964 } - ] - }, - "exhaust2": { - "scale": [ - { - "x": 1.88, - "y": 0.832, - "curve": [ 0.025, 1.88, 0.075, 1.311, 0.025, 0.832, 0.075, 0.686 ] - }, - { - "time": 0.1, - "x": 1.311, - "y": 0.686, - "curve": [ 0.133, 1.311, 0.2, 2.01, 0.133, 0.686, 0.208, 0.736 ] - }, - { - "time": 0.2333, - "x": 2.01, - "y": 0.769, - "curve": [ 0.267, 2.01, 0.333, 1, 0.282, 0.831, 0.333, 0.91 ] - }, - { - "time": 0.3667, - "y": 0.91, - "curve": [ 0.4, 1, 0.467, 1.699, 0.4, 0.91, 0.474, 0.891 ] - }, - { - "time": 0.5, - "x": 1.699, - "y": 0.86, - "curve": [ 0.517, 1.699, 0.55, 1.181, 0.54, 0.813, 0.55, 0.713 ] - }, - { - "time": 0.5667, - "x": 1.181, - "y": 0.713, - "curve": [ 0.617, 1.181, 0.717, 1.881, 0.617, 0.713, 0.717, 0.796 ] - }, - { - "time": 0.7667, - "x": 1.881, - "y": 0.796, - "curve": [ 0.8, 1.881, 0.867, 1.3, 0.8, 0.796, 0.867, 0.649 ] - }, - { - "time": 0.9, - "x": 1.3, - "y": 0.649, - "curve": [ 0.925, 1.3, 0.975, 1.88, 0.925, 0.649, 0.975, 0.832 ] - }, - { "time": 1, "x": 1.88, "y": 0.832 } - ] - }, - "hoverboard-thruster-front": { - "rotate": [ - { - "curve": [ 0.125, 0, 0.375, 24.06 ] - }, - { - "time": 0.5, - "value": 24.06, - "curve": [ 0.625, 24.06, 0.875, 0 ] - }, - { "time": 1 } - ] - }, - "hoverglow-front": { - "scale": [ - { - "x": 0.849, - "y": 1.764, - "curve": [ 0.017, 0.849, 0.05, 0.835, 0.017, 1.764, 0.05, 2.033 ] - }, - { - "time": 0.0667, - "x": 0.835, - "y": 2.033, - "curve": [ 0.092, 0.835, 0.142, 0.752, 0.092, 2.033, 0.142, 1.584 ] - }, - { - "time": 0.1667, - "x": 0.752, - "y": 1.584, - "curve": [ 0.183, 0.752, 0.217, 0.809, 0.183, 1.584, 0.217, 1.71 ] - }, - { - "time": 0.2333, - "x": 0.809, - "y": 1.71, - "curve": [ 0.25, 0.809, 0.283, 0.717, 0.25, 1.71, 0.283, 1.45 ] - }, - { - "time": 0.3, - "x": 0.717, - "y": 1.45, - "curve": [ 0.317, 0.717, 0.35, 0.777, 0.317, 1.45, 0.35, 1.698 ] - }, - { - "time": 0.3667, - "x": 0.777, - "y": 1.698, - "curve": [ 0.4, 0.781, 0.45, 0.685, 0.375, 1.698, 0.45, 1.173 ] - }, - { - "time": 0.4667, - "x": 0.685, - "y": 1.173, - "curve": [ 0.492, 0.685, 0.542, 0.825, 0.492, 1.173, 0.542, 1.572 ] - }, - { - "time": 0.5667, - "x": 0.825, - "y": 1.572, - "curve": [ 0.611, 0.816, 0.63, 0.727, 0.611, 1.577, 0.606, 1.255 ] - }, - { - "time": 0.6667, - "x": 0.725, - "y": 1.241, - "curve": [ 0.692, 0.725, 0.742, 0.895, 0.692, 1.241, 0.749, 1.799 ] - }, - { - "time": 0.7667, - "x": 0.895, - "y": 1.857, - "curve": [ 0.783, 0.895, 0.796, 0.892, 0.796, 1.955, 0.817, 1.962 ] - }, - { - "time": 0.8333, - "x": 0.845, - "y": 1.962, - "curve": [ 0.845, 0.831, 0.883, 0.802, 0.85, 1.962, 0.872, 1.704 ] - }, - { - "time": 0.9, - "x": 0.802, - "y": 1.491, - "curve": [ 0.917, 0.802, 0.95, 0.845, 0.907, 1.441, 0.936, 1.508 ] - }, - { - "time": 0.9667, - "x": 0.845, - "y": 1.627, - "curve": [ 0.975, 0.845, 0.992, 0.849, 0.973, 1.652, 0.992, 1.764 ] - }, - { "time": 1, "x": 0.849, "y": 1.764 } - ] - }, - "hoverboard-thruster-rear": { - "rotate": [ - { - "curve": [ 0.125, 0, 0.375, 24.06 ] - }, - { - "time": 0.5, - "value": 24.06, - "curve": [ 0.625, 24.06, 0.875, 0 ] - }, - { "time": 1 } - ] - }, - "hoverglow-rear": { - "scale": [ - { - "x": 0.845, - "y": 1.31, - "curve": [ 0.017, 0.845, 0.117, 0.899, 0.017, 1.31, 0.117, 2.033 ] - }, - { - "time": 0.1333, - "x": 0.899, - "y": 2.033, - "curve": [ 0.15, 0.899, 0.183, 0.752, 0.15, 2.033, 0.183, 1.574 ] - }, - { - "time": 0.2, - "x": 0.752, - "y": 1.574, - "curve": [ 0.225, 0.752, 0.275, 0.809, 0.225, 1.574, 0.275, 1.71 ] - }, - { - "time": 0.3, - "x": 0.809, - "y": 1.71, - "curve": [ 0.317, 0.809, 0.35, 0.717, 0.317, 1.71, 0.35, 1.397 ] - }, - { - "time": 0.3667, - "x": 0.717, - "y": 1.397, - "curve": [ 0.383, 0.717, 0.417, 0.777, 0.383, 1.397, 0.417, 1.45 ] - }, - { - "time": 0.4333, - "x": 0.777, - "y": 1.45, - "curve": [ 0.45, 0.777, 0.496, 0.689, 0.45, 1.45, 0.481, 1.168 ] - }, - { - "time": 0.5333, - "x": 0.685, - "y": 1.173, - "curve": [ 0.565, 0.682, 0.617, 0.758, 0.575, 1.177, 0.617, 1.297 ] - }, - { - "time": 0.6333, - "x": 0.758, - "y": 1.297, - "curve": [ 0.658, 0.758, 0.708, 0.725, 0.658, 1.297, 0.708, 1.241 ] - }, - { - "time": 0.7333, - "x": 0.725, - "y": 1.241, - "curve": [ 0.772, 0.732, 0.796, 0.893, 0.782, 1.238, 0.778, 1.854 ] - }, - { - "time": 0.8333, - "x": 0.895, - "y": 1.857, - "curve": [ 0.878, 0.9, 0.992, 0.845, 0.88, 1.86, 0.992, 1.31 ] - }, - { "time": 1, "x": 0.845, "y": 1.31 } - ] - }, - "front-upper-arm": { - "rotate": [ - { - "value": -85.92, - "curve": [ 0.08, -85.59, 0.284, -62.7 ] - }, - { - "time": 0.3667, - "value": -55.14, - "curve": [ 0.438, -48.65, 0.551, -43.21 ] - }, - { - "time": 0.6333, - "value": -43.21, - "curve": [ 0.716, -43.22, 0.908, -85.92 ] - }, - { "time": 1, "value": -85.92 } - ], - "translate": [ - { - "x": -0.59, - "y": -2.94, - "curve": [ 0.1, -1.21, 0.275, -1.74, 0.092, -2.94, 0.275, -6.39 ] - }, - { - "time": 0.3667, - "x": -1.74, - "y": -6.39, - "curve": [ 0.433, -1.74, 0.567, 0.72, 0.433, -6.39, 0.587, -4.48 ] - }, - { - "time": 0.6333, - "x": 0.72, - "y": -4.21, - "curve": [ 0.725, 0.72, 0.908, -0.08, 0.743, -3.57, 0.908, -2.94 ] - }, - { "time": 1, "x": -0.59, "y": -2.94 } - ] - }, - "front-fist": { - "rotate": [ - { - "value": 7.61, - "curve": [ 0.143, 7.62, 0.247, -23.17 ] - }, - { - "time": 0.2667, - "value": -26.56, - "curve": [ 0.281, -29.08, 0.351, -37.36 ] - }, - { - "time": 0.4333, - "value": -37.2, - "curve": [ 0.513, -37.05, 0.562, -29.88 ] - }, - { - "time": 0.6, - "value": -25.18, - "curve": [ 0.621, -22.58, 0.694, -3.98 ] - }, - { - "time": 0.8, - "value": 3.63, - "curve": [ 0.861, 8.03, 0.946, 7.57 ] - }, - { "time": 1, "value": 7.61 } - ], - "translate": [ - { - "curve": [ 0.117, 0, 0.35, 0.52, 0.117, 0, 0.35, -3.27 ] - }, - { - "time": 0.4667, - "x": 0.52, - "y": -3.27, - "curve": [ 0.6, 0.52, 0.867, 0, 0.6, -3.27, 0.867, 0 ] - }, - { "time": 1 } - ], - "shear": [ - { - "y": 19.83, - "curve": [ 0.117, 0, 0.35, 15.28, 0.117, 19.83, 0.35, 28.31 ] - }, - { - "time": 0.4667, - "x": 15.28, - "y": 28.31, - "curve": [ 0.6, 15.28, 0.867, 0, 0.6, 28.31, 0.867, 19.83 ] - }, - { "time": 1, "y": 19.83 } - ] - }, - "board-ik": { - "translate": [ - { - "x": 393.62, - "curve": [ 0.083, 393.62, 0.25, 393.48, 0.083, 0, 0.25, 117.69 ] - }, - { - "time": 0.3333, - "x": 393.48, - "y": 117.69, - "curve": [ 0.375, 393.48, 0.458, 393.62, 0.375, 117.69, 0.458, 83.82 ] - }, - { "time": 0.5, "x": 393.62, "y": 83.82 }, - { "time": 0.6667, "x": 393.62, "y": 30.15 }, - { "time": 1, "x": 393.62 } - ] - }, - "front-thigh": { - "translate": [ - { "x": -7.49, "y": 8.51 } - ] - }, - "front-leg-target": { - "translate": [ - { - "time": 0.3667, - "curve": [ 0.428, 10.83, 0.567, 12.78, 0.414, 7.29, 0.567, 8.79 ] - }, - { - "time": 0.6, - "x": 12.78, - "y": 8.79, - "curve": [ 0.692, 12.78, 0.772, 11.27, 0.692, 8.79, 0.766, 8.62 ] - }, - { "time": 0.8667 } - ] - }, - "rear-leg-target": { - "translate": [ - { - "time": 0.4667, - "curve": [ 0.492, 0, 0.534, 4.47, 0.492, 0, 0.542, 1.63 ] - }, - { - "time": 0.5667, - "x": 4.53, - "y": 1.77, - "curve": [ 0.622, 4.64, 0.717, 3.31, 0.615, 2.06, 0.71, 2.1 ] - }, - { "time": 0.8 } - ] - }, - "exhaust3": { - "scale": [ - { - "x": 1.882, - "y": 0.81, - "curve": [ 0.017, 1.882, 0.167, 1.3, 0.017, 0.81, 0.167, 0.649 ] - }, - { - "time": 0.2, - "x": 1.3, - "y": 0.649, - "curve": [ 0.225, 1.3, 0.275, 2.051, 0.225, 0.649, 0.275, 0.984 ] - }, - { - "time": 0.3, - "x": 2.051, - "y": 0.984, - "curve": [ 0.325, 2.051, 0.375, 1.311, 0.325, 0.984, 0.384, 0.715 ] - }, - { - "time": 0.4, - "x": 1.311, - "y": 0.686, - "curve": [ 0.433, 1.311, 0.5, 1.86, 0.426, 0.638, 0.5, 0.537 ] - }, - { - "time": 0.5333, - "x": 1.86, - "y": 0.537, - "curve": [ 0.567, 1.86, 0.633, 1.187, 0.567, 0.537, 0.604, 0.854 ] - }, - { - "time": 0.6667, - "x": 1.187, - "y": 0.854, - "curve": [ 0.7, 1.187, 0.767, 1.549, 0.707, 0.854, 0.774, 0.775 ] - }, - { - "time": 0.8, - "x": 1.549, - "y": 0.746, - "curve": [ 0.817, 1.549, 0.85, 1.181, 0.815, 0.729, 0.85, 0.713 ] - }, - { - "time": 0.8667, - "x": 1.181, - "y": 0.713, - "curve": [ 0.9, 1.181, 0.967, 1.882, 0.9, 0.713, 0.967, 0.81 ] - }, - { "time": 1, "x": 1.882, "y": 0.81 } - ] - }, - "side-glow1": { - "rotate": [ - { "value": 51.12, "curve": "stepped" }, - { "time": 0.0667, "value": 43.82, "curve": "stepped" }, - { "time": 0.1, "value": 40.95, "curve": "stepped" }, - { "time": 0.1667, "value": 27.78, "curve": "stepped" }, - { "time": 0.2, "value": 10.24, "curve": "stepped" }, - { "time": 0.2667, "curve": "stepped" }, - { "time": 0.8, "value": -25.81 } - ], - "translate": [ - { "x": 338.28, "y": 40.22, "curve": "stepped" }, - { "time": 0.0667, "x": 331.2, "y": 30.39, "curve": "stepped" }, - { "time": 0.1, "x": 318.63, "y": 20.59, "curve": "stepped" }, - { "time": 0.1667, "x": 302.45, "y": 9.64, "curve": "stepped" }, - { "time": 0.2, "x": 276.87, "y": 1.13, "curve": "stepped" }, - { "time": 0.2667, "x": 248.16, "curve": "stepped" }, - { "time": 0.3, "x": 221.36, "curve": "stepped" }, - { "time": 0.3667, "x": 195.69, "curve": "stepped" }, - { "time": 0.4, "x": 171.08, "curve": "stepped" }, - { "time": 0.4667, "x": 144.84, "curve": "stepped" }, - { "time": 0.5, "x": 121.22, "curve": "stepped" }, - { "time": 0.5667, "x": 91.98, "curve": "stepped" }, - { "time": 0.6, "x": 62.63, "curve": "stepped" }, - { "time": 0.6667, "x": 30.78, "curve": "stepped" }, - { "time": 0.7, "curve": "stepped" }, - { "time": 0.7667, "x": -28.45, "curve": "stepped" }, - { "time": 0.8, "x": -67.49, "y": 16.82, "curve": "stepped" }, - { "time": 0.8667, "x": -83.07, "y": 24.36, "curve": "stepped" }, - { "time": 0.9, "x": -93.81, "y": 29.55 } - ], - "scale": [ - { "x": 0.535, "curve": "stepped" }, - { "time": 0.0667, "x": 0.594, "curve": "stepped" }, - { "time": 0.1, "x": 0.844, "curve": "stepped" }, - { "time": 0.1667, "curve": "stepped" }, - { "time": 0.8, "x": 0.534, "curve": "stepped" }, - { "time": 0.8667, "x": 0.428, "y": 0.801, "curve": "stepped" }, - { "time": 0.9, "x": 0.349, "y": 0.654 } - ] - }, - "side-glow2": { - "rotate": [ - { "time": 0.0667, "value": 51.12, "curve": "stepped" }, - { "time": 0.1, "value": 43.82, "curve": "stepped" }, - { "time": 0.1667, "value": 40.95, "curve": "stepped" }, - { "time": 0.2, "value": 27.78, "curve": "stepped" }, - { "time": 0.2667, "value": 10.24, "curve": "stepped" }, - { "time": 0.3, "curve": "stepped" }, - { "time": 0.8667, "value": -25.81 } - ], - "translate": [ - { "time": 0.0667, "x": 338.28, "y": 40.22, "curve": "stepped" }, - { "time": 0.1, "x": 331.2, "y": 30.39, "curve": "stepped" }, - { "time": 0.1667, "x": 318.63, "y": 20.59, "curve": "stepped" }, - { "time": 0.2, "x": 302.45, "y": 9.64, "curve": "stepped" }, - { "time": 0.2667, "x": 276.87, "y": 1.13, "curve": "stepped" }, - { "time": 0.3, "x": 248.16, "curve": "stepped" }, - { "time": 0.3667, "x": 221.36, "curve": "stepped" }, - { "time": 0.4, "x": 195.69, "curve": "stepped" }, - { "time": 0.4667, "x": 171.08, "curve": "stepped" }, - { "time": 0.5, "x": 144.84, "curve": "stepped" }, - { "time": 0.5667, "x": 121.22, "curve": "stepped" }, - { "time": 0.6, "x": 91.98, "curve": "stepped" }, - { "time": 0.6667, "x": 62.63, "curve": "stepped" }, - { "time": 0.7, "x": 30.78, "curve": "stepped" }, - { "time": 0.7667, "curve": "stepped" }, - { "time": 0.8, "x": -28.45, "curve": "stepped" }, - { "time": 0.8667, "x": -67.49, "y": 16.82, "curve": "stepped" }, - { "time": 0.9, "x": -83.07, "y": 24.36, "curve": "stepped" }, - { "time": 0.9667, "x": -93.81, "y": 29.55 } - ], - "scale": [ - { "time": 0.0667, "x": 0.535, "curve": "stepped" }, - { "time": 0.1, "x": 0.594, "curve": "stepped" }, - { "time": 0.1667, "x": 0.844, "curve": "stepped" }, - { "time": 0.2, "curve": "stepped" }, - { "time": 0.8667, "x": 0.534, "curve": "stepped" }, - { "time": 0.9, "x": 0.428, "y": 0.801, "curve": "stepped" }, - { "time": 0.9667, "x": 0.349, "y": 0.654 } - ] - }, - "torso": { - "rotate": [ - { - "value": -34.73, - "curve": [ 0.034, -36.31, 0.162, -39.33 ] - }, - { - "time": 0.2667, - "value": -39.37, - "curve": [ 0.384, -39.37, 0.491, -29.52 ] - }, - { - "time": 0.5, - "value": -28.86, - "curve": [ 0.525, -26.95, 0.571, -21.01 ] - }, - { - "time": 0.6333, - "value": -21.01, - "curve": [ 0.725, -21.01, 0.969, -33.35 ] - }, - { "time": 1, "value": -34.73 } - ] - }, - "neck": { - "rotate": [ - { - "value": 10.2, - "curve": [ 0.07, 12.09, 0.189, 16.03 ] - }, - { - "time": 0.2667, - "value": 16.14, - "curve": [ 0.333, 16.14, 0.449, 8.03 ] - }, - { - "time": 0.5, - "value": 5.83, - "curve": [ 0.542, 4.02, 0.6, 2.68 ] - }, - { - "time": 0.6333, - "value": 2.68, - "curve": [ 0.725, 2.68, 0.943, 8.57 ] - }, - { "time": 1, "value": 10.2 } - ] - }, - "head": { - "rotate": [ - { - "value": 10.2, - "curve": [ 0.044, 11.52, 0.2, 16.12 ] - }, - { - "time": 0.2667, - "value": 16.14, - "curve": [ 0.375, 16.17, 0.492, 2.65 ] - }, - { - "time": 0.6333, - "value": 2.68, - "curve": [ 0.725, 2.7, 0.963, 9.26 ] - }, - { "time": 1, "value": 10.2 } - ], - "translate": [ - { - "curve": [ 0.03, -0.24, 0.2, -4.22, 0.051, -1.06, 0.2, -3.62 ] - }, - { - "time": 0.2667, - "x": -4.22, - "y": -3.62, - "curve": [ 0.358, -4.22, 0.542, 0.84, 0.358, -3.62, 0.542, 6.01 ] - }, - { - "time": 0.6333, - "x": 0.84, - "y": 6.01, - "curve": [ 0.725, 0.84, 0.939, 0.32, 0.725, 6.01, 0.945, 1.14 ] - }, - { "time": 1 } - ] - }, - "front-bracer": { - "rotate": [ - { - "value": -11.18, - "curve": [ 0.064, -14.82, 0.25, -20.01 ] - }, - { - "time": 0.3333, - "value": -20.01, - "curve": [ 0.429, -20.12, 0.58, 5.12 ] - }, - { - "time": 0.6, - "value": 8.67, - "curve": [ 0.617, 11.72, 0.687, 20.52 ] - }, - { - "time": 0.7667, - "value": 20.55, - "curve": [ 0.848, 20.7, 0.963, -9.43 ] - }, - { "time": 1, "value": -11.18 } - ] - }, - "hair3": { - "rotate": [ - { - "value": 9.61, - "curve": [ 0.014, 8.51, 0.075, 2.63 ] - }, - { - "time": 0.1, - "value": 2.63, - "curve": [ 0.15, 2.63, 0.25, 13.52 ] - }, - { - "time": 0.3, - "value": 13.52, - "curve": [ 0.35, 13.52, 0.45, 11.28 ] - }, - { - "time": 0.5, - "value": 11.28, - "curve": [ 0.575, 11.28, 0.725, 18.13 ] - }, - { - "time": 0.8, - "value": 18.13, - "curve": [ 0.85, 18.13, 0.978, 11.07 ] - }, - { "time": 1, "value": 9.61 } - ] - }, - "hair4": { - "rotate": [ - { - "value": -17.7, - "curve": [ 0.008, -17.7, 0.025, -23.73 ] - }, - { - "time": 0.0333, - "value": -23.73, - "curve": [ 0.067, -23.73, 0.154, -4.4 ] - }, - { - "time": 0.1667, - "value": -1.92, - "curve": [ 0.197, 4.09, 0.236, 12.91 ] - }, - { - "time": 0.2667, - "value": 17.56, - "curve": [ 0.301, 22.68, 0.342, 27.97 ] - }, - { - "time": 0.3667, - "value": 27.97, - "curve": [ 0.4, 27.97, 0.467, -1.45 ] - }, - { - "time": 0.5, - "value": -1.45, - "curve": [ 0.517, -1.45, 0.55, 3.16 ] - }, - { - "time": 0.5667, - "value": 3.16, - "curve": [ 0.583, 3.16, 0.617, -8.9 ] - }, - { - "time": 0.6333, - "value": -8.9, - "curve": [ 0.642, -8.9, 0.658, -5.4 ] - }, - { - "time": 0.6667, - "value": -5.4, - "curve": [ 0.683, -5.4, 0.717, -15.32 ] - }, - { - "time": 0.7333, - "value": -15.32, - "curve": [ 0.75, -15.32, 0.783, -9.19 ] - }, - { - "time": 0.8, - "value": -9.19, - "curve": [ 0.817, -9.19, 0.85, -23.6 ] - }, - { - "time": 0.8667, - "value": -23.6, - "curve": [ 0.883, -23.6, 0.917, -17.38 ] - }, - { - "time": 0.9333, - "value": -17.38, - "curve": [ 0.942, -17.38, 0.958, -20.46 ] - }, - { - "time": 0.9667, - "value": -20.46, - "curve": [ 0.975, -20.46, 0.992, -17.7 ] - }, - { "time": 1, "value": -17.7 } - ] - }, - "hair1": { - "rotate": [ - { - "value": 9.61, - "curve": [ 0.06, 9.04, 0.25, 8.9 ] - }, - { - "time": 0.3333, - "value": 8.9, - "curve": [ 0.392, 8.9, 0.508, 14.58 ] - }, - { - "time": 0.5667, - "value": 14.58, - "curve": [ 0.675, 14.58, 0.956, 10.28 ] - }, - { "time": 1, "value": 9.61 } - ] - }, - "hair2": { - "rotate": [ - { - "value": -3.82, - "curve": [ 0.017, -3.82, 0.064, -9.16 ] - }, - { - "time": 0.1333, - "value": -9.09, - "curve": [ 0.178, -9.04, 0.234, 1.29 ] - }, - { - "time": 0.2667, - "value": 5.98, - "curve": [ 0.276, 7.27, 0.336, 17.1 ] - }, - { - "time": 0.3667, - "value": 17.1, - "curve": [ 0.413, 17.1, 0.467, 1.59 ] - }, - { - "time": 0.5, - "value": 1.59, - "curve": [ 0.533, 1.59, 0.567, 13.63 ] - }, - { - "time": 0.6, - "value": 13.63, - "curve": [ 0.617, 13.63, 0.683, 0.78 ] - }, - { - "time": 0.7, - "value": 0.78, - "curve": [ 0.717, 0.78, 0.75, 12.01 ] - }, - { - "time": 0.7667, - "value": 11.9, - "curve": [ 0.792, 11.73, 0.817, -0.85 ] - }, - { - "time": 0.8333, - "value": -0.85, - "curve": [ 0.85, -0.85, 0.88, 1.99 ] - }, - { - "time": 0.9, - "value": 1.82, - "curve": [ 0.916, 1.68, 0.95, -6.9 ] - }, - { - "time": 0.9667, - "value": -6.9, - "curve": [ 0.975, -6.9, 0.992, -3.82 ] - }, - { "time": 1, "value": -3.82 } - ] - }, - "rear-upper-arm": { - "rotate": [ - { - "value": 31.65, - "curve": [ 0.108, 31.65, 0.325, 13.01 ] - }, - { - "time": 0.4333, - "value": 13.01, - "curve": [ 0.71, 13.01, 0.917, 31.65 ] - }, - { "time": 1, "value": 31.65 } - ] - }, - "rear-bracer": { - "rotate": [ - { - "value": 31, - "curve": [ 0.108, 31, 0.325, 12.76 ] - }, - { - "time": 0.4333, - "value": 12.79, - "curve": [ 0.587, 12.82, 0.917, 31 ] - }, - { "time": 1, "value": 31 } - ] - }, - "gun": { - "rotate": [ - { - "value": 1.95, - "curve": [ 0.083, 1.95, 0.245, 36.73 ] - }, - { - "time": 0.3333, - "value": 36.71, - "curve": [ 0.439, 36.69, 0.589, 10.68 ] - }, - { - "time": 0.6333, - "value": 8.75, - "curve": [ 0.701, 5.81, 0.917, 1.95 ] - }, - { "time": 1, "value": 1.95 } - ] - }, - "torso2": { - "rotate": [ - { - "curve": [ 0.033, 0, 0.1, 2.35 ] - }, - { - "time": 0.1333, - "value": 2.35, - "curve": [ 0.225, 2.35, 0.408, -2.4 ] - }, - { - "time": 0.5, - "value": -2.4, - "curve": [ 0.567, -2.4, 0.7, 1.44 ] - }, - { - "time": 0.7667, - "value": 1.44, - "curve": [ 0.825, 1.44, 0.942, 0 ] - }, - { "time": 1 } - ] - }, - "torso3": { - "rotate": [ - { - "curve": [ 0.063, 0.77, 0.106, 1.42 ] - }, - { - "time": 0.1667, - "value": 1.42, - "curve": [ 0.259, 1.42, 0.344, -1.25 ] - }, - { - "time": 0.4667, - "value": -1.26, - "curve": [ 0.656, -1.26, 0.917, -0.78 ] - }, - { "time": 1 } - ] - }, - "head-control": { - "translate": [ - { - "x": 0.37, - "y": -11.17, - "curve": [ 0.133, 0.37, 0.335, -10.23, 0.133, -11.17, 0.335, 3.15 ] - }, - { - "time": 0.5333, - "x": -10.23, - "y": 3.15, - "curve": [ 0.71, -10.23, 0.883, 0.37, 0.71, 3.15, 0.883, -11.17 ] - }, - { "time": 1, "x": 0.37, "y": -11.17 } - ] - }, - "front-shoulder": { - "translate": [ - { - "x": 1.46, - "y": 10.15, - "curve": [ 0.103, 1.46, 0.249, 1.36, 0.103, 10.15, 0.249, -4.39 ] - }, - { - "time": 0.4, - "x": 1.36, - "y": -4.39, - "curve": [ 0.621, 1.36, 0.85, 1.46, 0.621, -4.39, 0.85, 10.15 ] - }, - { "time": 1, "x": 1.46, "y": 10.15 } - ] - }, - "back-shoulder": { - "translate": [ - { - "x": 1.4, - "y": 0.44, - "curve": [ 0.088, 1.4, 0.208, -2.47, 0.088, 0.44, 0.208, 8.61 ] - }, - { - "time": 0.3333, - "x": -2.47, - "y": 8.61, - "curve": [ 0.572, -2.47, 0.833, 1.4, 0.572, 8.61, 0.833, 0.44 ] - }, - { "time": 1, "x": 1.4, "y": 0.44 } - ] - } - }, - "transform": { - "front-foot-board-transform": [ - { "mixRotate": 0.997 } - ], - "rear-foot-board-transform": [ - {} - ], - "toes-board": [ - {} - ] - }, - "attachments": { - "default": { - "front-foot": { - "front-foot": { - "deform": [ - { - "offset": 26, - "vertices": [ -0.02832, -5.37024, -0.02832, -5.37024, 3.8188, -3.7757, -0.02832, -5.37024, -3.82159, 3.77847 ] - } - ] - } - }, - "front-shin": { - "front-shin": { - "deform": [ - { - "offset": 14, - "vertices": [ 0.5298, -1.12677, -0.85507, -4.20587, -11.35158, -10.19225, -10.79865, -8.43765, -6.06447, -6.89757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.54892, -3.06021, 1.48463, -2.29663, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.80437, -7.01817 ] - }, - { - "time": 0.3667, - "offset": 14, - "vertices": [ 0.5298, -1.12677, -11.66571, -9.07211, -25.65866, -17.53735, -25.53217, -16.50978, -11.78232, -11.26097, 0, 0, 0.60487, -1.63589, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.60487, -1.63589, 0, 0, -2.64522, -7.35739, 1.48463, -2.29663, 0, 0, 0, 0, 0, 0, 0.60487, -1.63589, 0.60487, -1.63589, 0.60487, -1.63589, 0.60487, -1.63589, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.60487, -1.63589, 0, 0, -10.06873, -12.0999 ] - }, - { - "time": 0.5333, - "offset": 14, - "vertices": [ 0.5298, -1.12677, -0.85507, -4.20587, -7.00775, -8.24771, -6.45482, -6.49312, -6.06447, -6.89757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.54892, -3.06021, 1.48463, -2.29663, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.80437, -7.01817 ] - }, - { - "time": 1, - "offset": 14, - "vertices": [ 0.5298, -1.12677, -0.85507, -4.20587, -11.35158, -10.19225, -10.79865, -8.43765, -6.06447, -6.89757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.54892, -3.06021, 1.48463, -2.29663, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.80437, -7.01817 ] - } - ] - } - }, - "hoverboard-board": { - "hoverboard-board": { - "deform": [ - { - "curve": [ 0.067, 0, 0.2, 1 ] - }, - { - "time": 0.2667, - "offset": 1, - "vertices": [ 2.45856, 0, 0, 0, 0, 0, 0, 0, 0, 3.55673, -3.0E-4, 3.55673, -3.0E-4, 0, 0, 0, 0, 0, 0, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, 0, 0, 0, 0, 0, 0, 0, 0, -4.90558, 0.11214, -9.40706, 6.2E-4, -6.34871, 4.3E-4, -6.34925, -6.57018, -6.34925, -6.57018, -6.34871, 4.3E-4, -2.3308, 1.7E-4, -2.33133, -6.57045, -2.33133, -6.57045, -2.3308, 1.7E-4, 0, 0, 1.2E-4, 2.45856, 1.2E-4, 2.45856, 1.2E-4, 2.45856, 1.2E-4, 2.45856, 3.3297, 4.44005, 3.3297, 4.44005, 3.3297, 4.44005, 1.2E-4, 2.45856, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.46227, 1.7E-4, -2.46227, 1.7E-4, -2.52316, 1.1313, -2.52316, 1.1313, -2.52316, 1.1313, 1.2E-4, 2.45856, 1.2E-4, 2.45856, -9.40694, 2.45918, 1.88063, 0.44197, -2.9E-4, -3.54808, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.52316, 1.1313, -2.52316, 1.1313, -2.52316, 1.1313, -2.46227, 1.7E-4, -2.46227, 1.7E-4, -2.46227, 1.7E-4, 0, 0, 0, 0, 1.2E-4, 2.45856 ], - "curve": [ 0.45, 0, 0.817, 1 ] - }, - { "time": 1 } - ] - } - }, - "rear-foot": { - "rear-foot": { - "deform": [ - { - "offset": 28, - "vertices": [ -1.93078, 1.34782, -0.31417, 2.33363, 3.05122, 0.33946, 2.31472, -2.01678, 2.17583, -2.05795, -0.04277, -2.99459, 1.15429, 0.26328, 0.97501, -0.67169 ] - } - ] - } - } - } - } - }, - "idle": { - "slots": { - "front-fist": { - "attachment": [ - { "name": "front-fist-open" } - ] - } - }, - "bones": { - "front-foot-target": { - "translate": [ - { "x": -69.06 } - ] - }, - "hip": { - "rotate": [ - { - "curve": [ 0.073, 0.35, 0.303, 1.27 ] - }, - { - "time": 0.4, - "value": 1.28, - "curve": [ 0.615, 1.3, 0.847, -1.41 ] - }, - { - "time": 1.2, - "value": -1.38, - "curve": [ 1.344, -1.37, 1.602, -0.28 ] - }, - { "time": 1.6667 } - ], - "translate": [ - { - "x": -11.97, - "y": -23.15, - "curve": [ 0.059, -12.96, 0.258, -15.19, 0.142, -23.15, 0.341, -24.89 ] - }, - { - "time": 0.4667, - "x": -15.14, - "y": -26.74, - "curve": [ 0.62, -15.1, 0.788, -13.28, 0.597, -28.66, 0.75, -30.01 ] - }, - { - "time": 0.9, - "x": -12.02, - "y": -30.01, - "curve": [ 0.978, -11.13, 1.175, -9.05, 1.036, -29.94, 1.234, -28.08 ] - }, - { - "time": 1.3333, - "x": -9.06, - "y": -26.64, - "curve": [ 1.501, -9.06, 1.614, -10.95, 1.454, -24.89, 1.609, -23.15 ] - }, - { "time": 1.6667, "x": -11.97, "y": -23.15 } - ] - }, - "rear-foot-target": { - "translate": [ - { "x": 48.87 } - ] - }, - "front-upper-arm": { - "rotate": [ - { - "value": -60.87, - "curve": [ 0.154, -60.85, 0.452, -68.65 ] - }, - { - "time": 0.8333, - "value": -68.65, - "curve": [ 1.221, -68.65, 1.542, -60.87 ] - }, - { "time": 1.6667, "value": -60.87 } - ] - }, - "front-bracer": { - "rotate": [ - { - "value": 42.46, - "curve": [ 0.029, 42.97, 0.134, 45.28 ] - }, - { - "time": 0.3333, - "value": 45.27, - "curve": [ 0.578, 45.26, 0.798, 40.07 ] - }, - { - "time": 0.8333, - "value": 39.74, - "curve": [ 0.878, 39.32, 1.019, 38.23 ] - }, - { - "time": 1.2, - "value": 38.22, - "curve": [ 1.377, 38.22, 1.619, 41.68 ] - }, - { "time": 1.6667, "value": 42.46 } - ] - }, - "rear-upper-arm": { - "rotate": [ - { - "value": 39.2, - "curve": [ 0.185, 39.22, 0.5, 29.37 ] - }, - { - "time": 0.6667, - "value": 29.37, - "curve": [ 0.917, 29.37, 1.417, 39.2 ] - }, - { "time": 1.6667, "value": 39.2 } - ] - }, - "head": { - "rotate": [ - { - "value": -6.75, - "curve": [ 0.176, -7.88, 0.349, -8.95 ] - }, - { - "time": 0.4667, - "value": -8.95, - "curve": [ 0.55, -8.95, 0.697, -6.77 ] - }, - { - "time": 0.8333, - "value": -5.44, - "curve": [ 0.88, -4.98, 1.05, -4.12 ] - }, - { - "time": 1.1333, - "value": -4.12, - "curve": [ 1.266, -4.12, 1.469, -5.48 ] - }, - { "time": 1.6667, "value": -6.75 } - ] - }, - "front-fist": { - "rotate": [ - { - "curve": [ 0.086, 0, 0.233, 2.48 ] - }, - { - "time": 0.3333, - "value": 4.13, - "curve": [ 0.429, 5.7, 0.711, 10.06 ] - }, - { - "time": 0.8333, - "value": 10.06, - "curve": [ 0.926, 10.06, 1.092, 4.21 ] - }, - { - "time": 1.2, - "value": 2.78, - "curve": [ 1.349, 0.8, 1.551, 0 ] - }, - { "time": 1.6667 } - ] - }, - "rear-bracer": { - "rotate": [ - { - "curve": [ 0.063, 0.54, 0.367, 3.39 ] - }, - { - "time": 0.5333, - "value": 3.39, - "curve": [ 0.696, 3.39, 0.939, -1.63 ] - }, - { - "time": 1.2, - "value": -1.61, - "curve": [ 1.42, -1.59, 1.574, -0.67 ] - }, - { "time": 1.6667 } - ] - }, - "gun": { - "rotate": [ - { - "curve": [ 0.099, 0.27, 0.367, 1.23 ] - }, - { - "time": 0.5333, - "value": 1.23, - "curve": [ 0.665, 1.23, 0.937, -0.56 ] - }, - { - "time": 1.1333, - "value": -0.55, - "curve": [ 1.316, -0.55, 1.582, -0.21 ] - }, - { "time": 1.6667 } - ] - }, - "torso": { - "rotate": [ - { - "value": -22.88, - "curve": [ 0.099, -23.45, 0.363, -24.74 ] - }, - { - "time": 0.5333, - "value": -24.74, - "curve": [ 0.706, -24.74, 0.961, -20.97 ] - }, - { - "time": 1.1333, - "value": -20.97, - "curve": [ 1.355, -20.97, 1.567, -22.28 ] - }, - { "time": 1.6667, "value": -22.88 } - ] - }, - "neck": { - "rotate": [ - { - "value": 3.78, - "curve": [ 0.167, 3.78, 0.5, 5.45 ] - }, - { - "time": 0.6667, - "value": 5.45, - "curve": [ 0.917, 5.45, 1.417, 3.78 ] - }, - { "time": 1.6667, "value": 3.78 } - ] - }, - "torso2": { - "rotate": [ - { - "curve": [ 0.067, 0.33, 0.341, 2.54 ] - }, - { - "time": 0.5333, - "value": 2.54, - "curve": [ 0.734, 2.55, 0.982, -0.94 ] - }, - { - "time": 1.1333, - "value": -0.93, - "curve": [ 1.365, -0.91, 1.549, -0.56 ] - }, - { "time": 1.6667 } - ] - }, - "torso3": { - "rotate": [ - { - "value": -2.15, - "curve": [ 0.052, -1.9, 0.384, -0.15 ] - }, - { - "time": 0.5333, - "value": -0.14, - "curve": [ 0.762, -0.13, 0.895, -3.1 ] - }, - { - "time": 1.1333, - "value": -3.1, - "curve": [ 1.348, -3.1, 1.592, -2.46 ] - }, - { "time": 1.6667, "value": -2.15 } - ] - }, - "hair1": { - "rotate": [ - { - "curve": [ 0.067, 0, 0.213, 2.86 ] - }, - { - "time": 0.2667, - "value": 3.65, - "curve": [ 0.358, 4.99, 0.535, 7.92 ] - }, - { - "time": 0.6667, - "value": 7.92, - "curve": [ 0.809, 7.92, 1.067, 5.49 ] - }, - { - "time": 1.1333, - "value": 4.7, - "curve": [ 1.245, 3.34, 1.525, 0 ] - }, - { "time": 1.6667 } - ] - }, - "hair2": { - "rotate": [ - { - "curve": [ 0.067, 0, 0.225, -7.97 ] - }, - { - "time": 0.2667, - "value": -9.75, - "curve": [ 0.316, -11.84, 0.519, -16.66 ] - }, - { - "time": 0.6667, - "value": -16.66, - "curve": [ 0.817, -16.66, 1.029, -11.43 ] - }, - { - "time": 1.1333, - "value": -9.14, - "curve": [ 1.25, -6.56, 1.525, 0 ] - }, - { "time": 1.6667 } - ] - }, - "hair3": { - "rotate": [ - { - "curve": [ 0.1, 0, 0.3, 1.32 ] - }, - { - "time": 0.4, - "value": 1.32, - "curve": [ 0.55, 1.32, 0.866, 0.93 ] - }, - { - "time": 1, - "value": 0.73, - "curve": [ 1.189, 0.46, 1.5, 0 ] - }, - { "time": 1.6667 } - ] - }, - "hair4": { - "rotate": [ - { - "curve": [ 0.118, -0.44, 0.3, -8.52 ] - }, - { - "time": 0.4, - "value": -8.52, - "curve": [ 0.55, -8.52, 0.85, 1.96 ] - }, - { - "time": 1, - "value": 1.96, - "curve": [ 1.167, 1.96, 1.577, 0.38 ] - }, - { "time": 1.6667 } - ] - }, - "head-control": { - "translate": [ - { - "curve": [ 0.098, 1.46, 0.3, 4.49, 0.17, 0.13, 0.316, -3.28 ] - }, - { - "time": 0.4, - "x": 4.55, - "y": -5.95, - "curve": [ 0.53, 4.64, 0.776, 2.59, 0.492, -8.89, 0.668, -14.21 ] - }, - { - "time": 0.8667, - "x": 1.42, - "y": -14.26, - "curve": [ 0.966, 0.15, 1.109, -2.91, 0.994, -14.26, 1.144, -10.58 ] - }, - { - "time": 1.2333, - "x": -3.02, - "y": -8.26, - "curve": [ 1.342, -3.02, 1.568, -1.48, 1.317, -6.1, 1.558, 0 ] - }, - { "time": 1.6667 } - ] - }, - "front-shoulder": { - "translate": [ - { - "curve": [ 0.21, 0, 0.525, -1.72, 0.21, 0, 0.525, 4.08 ] - }, - { - "time": 0.8333, - "x": -1.72, - "y": 4.08, - "curve": [ 1.15, -1.72, 1.46, 0, 1.15, 4.08, 1.46, 0 ] - }, - { "time": 1.6667 } - ] - } - } - }, - "idle-turn": { - "slots": { - "front-fist": { - "attachment": [ - { "name": "front-fist-open" } - ] - } - }, - "bones": { - "front-upper-arm": { - "rotate": [ - { - "value": -302.77, - "curve": [ 0, -406.9, 0.125, -420.87 ] - }, - { "time": 0.2667, "value": -420.87 } - ], - "translate": [ - { - "x": 2.24, - "y": -4.98, - "curve": [ 0.067, 2.24, 0.111, 0, 0.067, -4.98, 0.111, 0 ] - }, - { "time": 0.2667 } - ] - }, - "rear-upper-arm": { - "rotate": [ - { - "value": 248.56, - "curve": [ 0, 371.28, 0.062, 399.2 ] - }, - { "time": 0.1333, "value": 399.2 } - ], - "translate": [ - { - "x": -2.84, - "y": 37.28, - "curve": [ 0.033, -2.84, 0.069, 0, 0.033, 37.28, 0.069, 0 ] - }, - { "time": 0.1333 } - ] - }, - "gun": { - "rotate": [ - { - "value": -3.95, - "curve": [ 0, -10.4, 0.019, -20.43 ] - }, - { - "time": 0.0333, - "value": -20.45, - "curve": [ 0.044, -20.47, 0.125, 0 ] - }, - { "time": 0.2 } - ] - }, - "neck": { - "rotate": [ - { - "value": 17.2, - "curve": [ 0, 6.27, 0.125, 3.78 ] - }, - { "time": 0.2667, "value": 3.78 } - ] - }, - "hip": { - "translate": [ - { - "x": -2.69, - "y": -6.79, - "curve": [ 0.067, -2.69, 0.2, -11.97, 0.067, -6.79, 0.2, -23.15 ] - }, - { "time": 0.2667, "x": -11.97, "y": -23.15 } - ] - }, - "front-fist": { - "rotate": [ - { - "value": -15.54, - "curve": [ 0, -3.08, 0.034, 18.44 ] - }, - { - "time": 0.0667, - "value": 19.02, - "curve": [ 0.108, 19.75, 0.169, 0 ] - }, - { "time": 0.2667 } - ], - "scale": [ - { - "x": 0.94, - "curve": [ 0, 0.962, 0.024, 1.237, 0, 1, 0.026, 0.947 ] - }, - { - "time": 0.0667, - "x": 1.236, - "y": 0.947, - "curve": [ 0.117, 1.235, 0.189, 1, 0.117, 0.947, 0.189, 1 ] - }, - { "time": 0.2667 } - ] - }, - "rear-bracer": { - "rotate": [ - { - "value": 11.75, - "curve": [ 0, -7.97, 0.017, -33.4 ] - }, - { - "time": 0.0333, - "value": -33.39, - "curve": [ 0.049, -33.37, 0.131, 0 ] - }, - { "time": 0.2 } - ] - }, - "torso": { - "rotate": [ - { - "value": -18.25, - "curve": [ 0, -10.59, 0.125, -22.88 ] - }, - { "time": 0.2667, "value": -22.88 } - ], - "scale": [ - { - "y": 1.03, - "curve": [ 0.067, 1, 0.132, 1, 0.067, 1.03, 0.132, 1 ] - }, - { "time": 0.2667 } - ] - }, - "head": { - "rotate": [ - { - "value": 5.12, - "curve": [ 0, -6.34, 0.125, -6.75 ] - }, - { "time": 0.2667, "value": -6.75 } - ], - "scale": [ - { - "y": 1.03, - "curve": [ 0.067, 1, 0.107, 1, 0.067, 1.03, 0.107, 1 ] - }, - { "time": 0.2667 } - ] - }, - "rear-foot-target": { - "translate": [ - { - "x": -58.39, - "y": 30.48, - "curve": [ 0, -7.15, 0.047, 16.62, 0, 12.71, 0.039, 0.22 ] - }, - { - "time": 0.1, - "x": 34.14, - "y": -0.19, - "curve": [ 0.136, 45.79, 0.163, 48.87, 0.133, -0.41, 0.163, 0 ] - }, - { "time": 0.2, "x": 48.87 } - ] - }, - "front-bracer": { - "rotate": [ - { - "value": 6.69, - "curve": [ 0, 19.76, 0.039, 56.53 ] - }, - { - "time": 0.0667, - "value": 56.63, - "curve": [ 0.114, 56.79, 0.189, 42.46 ] - }, - { "time": 0.2667, "value": 42.46 } - ] - }, - "front-foot-target": { - "rotate": [ - { - "value": -1.85, - "curve": [ 0.014, -8.91, 0.047, -28.4 ] - }, - { - "time": 0.1, - "value": -28.89, - "curve": [ 0.144, -29.29, 0.262, -21.77 ] - }, - { "time": 0.2667 } - ], - "translate": [ - { - "x": 9.97, - "y": 0.82, - "curve": [ 0, -54.41, 0.078, -69.06, 0, 0.15, 0.078, 0 ] - }, - { "time": 0.1667, "x": -69.06 } - ] - }, - "hair3": { - "rotate": [ - { - "value": -9.01, - "curve": [ 0.044, -9.01, 0.072, 7.41 ] - }, - { - "time": 0.1333, - "value": 10.08, - "curve": [ 0.166, 11.47, 0.208, 0 ] - }, - { "time": 0.2667 } - ] - }, - "hair4": { - "rotate": [ - { - "value": -16.49, - "curve": [ 0.044, -16.49, 0.101, -5.98 ] - }, - { - "time": 0.1333, - "value": -2.95, - "curve": [ 0.162, -0.34, 0.208, 0 ] - }, - { "time": 0.2667 } - ] - }, - "hair1": { - "rotate": [ - { - "value": -3.85, - "curve": [ 0.044, -3.85, 0.072, 6.91 ] - }, - { - "time": 0.1333, - "value": 8.05, - "curve": [ 0.166, 8.65, 0.208, 0 ] - }, - { "time": 0.2667 } - ] - }, - "hair2": { - "rotate": [ - { - "value": 1.25, - "curve": [ 0.044, 1.25, 0.072, 8.97 ] - }, - { - "time": 0.1333, - "value": 8.6, - "curve": [ 0.166, 8.4, 0.208, 0 ] - }, - { "time": 0.2667 } - ] - }, - "front-thigh": { - "translate": [ - { - "x": 12.21, - "y": 1.89, - "curve": [ 0.033, 12.21, 0.1, 0, 0.033, 1.89, 0.1, 0 ] - }, - { "time": 0.1333 } - ] - }, - "rear-thigh": { - "translate": [ - { - "x": -16.11, - "y": -1.38, - "curve": [ 0.033, -16.11, 0.1, 0, 0.033, -1.38, 0.1, 0 ] - }, - { "time": 0.1333 } - ] - }, - "torso3": { - "rotate": [ - { "time": 0.2667, "value": -2.15 } - ] - }, - "head-control": { - "translate": [ - { - "x": -13.72, - "y": -34.7, - "curve": [ 0.067, -13.72, 0.2, 0, 0.067, -34.7, 0.2, 0 ] - }, - { "time": 0.2667 } - ] - }, - "front-shoulder": { - "translate": [ - { - "x": 1.13, - "y": -14.31, - "curve": [ 0.067, 1.13, 0.2, 0, 0.067, -14.31, 0.2, 0 ] - }, - { "time": 0.2667 } - ] - } - } - }, - "jump": { - "slots": { - "front-fist": { - "attachment": [ - { "name": "front-fist-open" }, - { "time": 0.1, "name": "front-fist-closed" }, - { "time": 0.8333, "name": "front-fist-open" } - ] - } - }, - "bones": { - "front-thigh": { - "rotate": [ - { - "value": 55.08, - "curve": [ 0.007, 46.66, 0.043, 26.3 ] - }, - { - "time": 0.0667, - "value": 22.84, - "curve": [ 0.1, 17.99, 0.165, 15.78 ] - }, - { - "time": 0.2333, - "value": 15.71, - "curve": [ 0.309, 15.63, 0.408, 46.67 ] - }, - { - "time": 0.5, - "value": 63.6, - "curve": [ 0.56, 74.72, 0.762, 91.48 ] - }, - { - "time": 0.9667, - "value": 91.81, - "curve": [ 1.068, 92.01, 1.096, 22.05 ] - }, - { - "time": 1.1667, - "value": 22.25, - "curve": [ 1.18, 22.29, 1.176, 56.17 ] - }, - { - "time": 1.2, - "value": 56.16, - "curve": [ 1.246, 56.15, 1.263, 54.94 ] - }, - { "time": 1.3333, "value": 55.08 } - ], - "translate": [ - { "x": -5.13, "y": 11.55 } - ] - }, - "torso": { - "rotate": [ - { - "value": -45.57, - "curve": [ 0.022, -44.61, 0.03, -39.06 ] - }, - { - "time": 0.0667, - "value": -35.29, - "curve": [ 0.12, -29.77, 0.28, -19.95 ] - }, - { - "time": 0.4333, - "value": -19.95, - "curve": [ 0.673, -19.95, 0.871, -22.38 ] - }, - { - "time": 0.9667, - "value": -27.08, - "curve": [ 1.094, -33.33, 1.176, -44.93 ] - }, - { "time": 1.3333, "value": -45.57 } - ], - "translate": [ - { "x": -3.79, "y": -0.77 } - ] - }, - "rear-thigh": { - "rotate": [ - { - "value": 12.81, - "curve": [ 0.067, 12.81, 0.242, 67.88 ] - }, - { - "time": 0.2667, - "value": 74.11, - "curve": [ 0.314, 86.02, 0.454, 92.23 ] - }, - { - "time": 0.5667, - "value": 92.24, - "curve": [ 0.753, 92.26, 0.966, 67.94 ] - }, - { - "time": 1, - "value": 61.32, - "curve": [ 1.039, 53.75, 1.218, 12.68 ] - }, - { "time": 1.3333, "value": 12.81 } - ] - }, - "rear-shin": { - "rotate": [ - { - "value": -115.64, - "curve": [ 0.067, -117.17, 0.125, -117.15 ] - }, - { - "time": 0.1667, - "value": -117.15, - "curve": [ 0.225, -117.15, 0.332, -108.76 ] - }, - { - "time": 0.4, - "value": -107.15, - "curve": [ 0.48, -105.26, 0.685, -103.49 ] - }, - { - "time": 0.7667, - "value": -101.97, - "curve": [ 0.826, -100.87, 0.919, -92.3 ] - }, - { - "time": 1, - "value": -92.28, - "curve": [ 1.113, -92.26, 1.297, -114.22 ] - }, - { "time": 1.3333, "value": -115.64 } - ] - }, - "front-upper-arm": { - "rotate": [ - { - "value": -40.21, - "curve": [ 0.054, -35.46, 0.15, -31.12 ] - }, - { - "time": 0.2, - "value": -31.12, - "curve": [ 0.308, -31.12, 0.547, -80.12 ] - }, - { - "time": 0.6333, - "value": -96.56, - "curve": [ 0.697, -108.56, 0.797, -112.54 ] - }, - { - "time": 0.8667, - "value": -112.6, - "curve": [ 1.137, -112.84, 1.274, -49.19 ] - }, - { "time": 1.3333, "value": -40.21 } - ] - }, - "front-bracer": { - "rotate": [ - { - "value": 20.54, - "curve": [ 0.054, 32.23, 0.192, 55.84 ] - }, - { - "time": 0.2333, - "value": 62.58, - "curve": [ 0.29, 71.87, 0.375, 79.28 ] - }, - { - "time": 0.4333, - "value": 79.18, - "curve": [ 0.555, 78.98, 0.684, 27.54 ] - }, - { - "time": 0.7333, - "value": 13.28, - "curve": [ 0.786, -1.85, 0.874, -24.76 ] - }, - { - "time": 1, - "value": -25.45, - "curve": [ 1.165, -26.36, 1.303, 9.1 ] - }, - { "time": 1.3333, "value": 20.54 } - ] - }, - "front-fist": { - "rotate": [ - { - "value": -36.16, - "curve": [ 0.114, -39.59, 0.3, -45.61 ] - }, - { - "time": 0.4, - "value": -45.61, - "curve": [ 0.442, -45.61, 0.537, -21.54 ] - }, - { - "time": 0.5667, - "value": -15.4, - "curve": [ 0.592, -10.23, 0.692, 11.89 ] - }, - { - "time": 0.7333, - "value": 11.73, - "curve": [ 0.783, 11.54, 0.831, 1.8 ] - }, - { - "time": 0.8667, - "value": -5.78, - "curve": [ 0.897, -12.22, 0.901, -14.22 ] - }, - { - "time": 0.9333, - "value": -14.51, - "curve": [ 0.974, -14.89, 0.976, 10.38 ] - }, - { - "time": 1, - "value": 10.55, - "curve": [ 1.027, 10.74, 1.023, -8.44 ] - }, - { - "time": 1.0333, - "value": -8.42, - "curve": [ 1.059, -8.36, 1.074, 10.12 ] - }, - { - "time": 1.1, - "value": 10.22, - "curve": [ 1.168, 10.48, 1.27, -36.07 ] - }, - { "time": 1.3333, "value": -36.16 } - ] - }, - "rear-upper-arm": { - "rotate": [ - { - "value": 40.5, - "curve": [ 0.048, 36.1, 0.168, 20.45 ] - }, - { - "time": 0.3, - "value": 20.45, - "curve": [ 0.476, 20.45, 0.571, 33.76 ] - }, - { - "time": 0.6, - "value": 38.67, - "curve": [ 0.642, 45.8, 0.681, 57.44 ] - }, - { - "time": 0.7333, - "value": 62.91, - "curve": [ 0.829, 72.8, 0.996, 77.61 ] - }, - { - "time": 1.0333, - "value": 80.37, - "curve": [ 1.082, 83.94, 1.148, 90.6 ] - }, - { - "time": 1.2, - "value": 90.6, - "curve": [ 1.248, 90.46, 1.317, 53.07 ] - }, - { "time": 1.3333, "value": 49.06 } - ] - }, - "rear-bracer": { - "rotate": [ - { - "value": 28.28, - "curve": [ 0.022, 25.12, 0.187, -0.89 ] - }, - { - "time": 0.2, - "value": -2.52, - "curve": [ 0.257, -9.92, 0.372, -17.38 ] - }, - { - "time": 0.4333, - "value": -17.41, - "curve": [ 0.54, -17.47, 0.659, -16.91 ] - }, - { - "time": 0.7667, - "value": -12.1, - "curve": [ 0.907, -5.79, 1.025, 14.58 ] - }, - { - "time": 1.1, - "value": 20.58, - "curve": [ 1.191, 27.85, 1.283, 29.67 ] - }, - { "time": 1.3333, "value": 29.67 } - ] - }, - "neck": { - "rotate": [ - { - "value": 11.88, - "curve": [ 0.104, 11.82, 0.179, 11.15 ] - }, - { - "time": 0.2, - "value": 10.08, - "curve": [ 0.255, 7.29, 0.405, -8.15 ] - }, - { - "time": 0.4333, - "value": -9.35, - "curve": [ 0.508, -12.48, 0.595, -13.14 ] - }, - { - "time": 0.6667, - "value": -12.61, - "curve": [ 0.714, -12.26, 0.815, -5.57 ] - }, - { - "time": 0.8333, - "value": -4.08, - "curve": [ 0.883, -0.07, 1.045, 12.77 ] - }, - { - "time": 1.1, - "value": 15.06, - "curve": [ 1.208, 19.6, 1.279, 20.64 ] - }, - { "time": 1.3333, "value": 20.73 } - ] - }, - "head": { - "rotate": [ - { - "value": 13.14, - "curve": [ 0.008, 12.19, 0.197, -23.53 ] - }, - { - "time": 0.3333, - "value": -23.95, - "curve": [ 0.509, -23.95, 0.667, -2.66 ] - }, - { - "time": 0.7333, - "value": -2.66, - "curve": [ 0.792, -2.66, 0.908, -13.32 ] - }, - { - "time": 0.9667, - "value": -13.32, - "curve": [ 1.158, -13.11, 1.241, -1.58 ] - }, - { "time": 1.3333, "value": -1.58 } - ], - "scale": [ - { - "curve": [ 0.041, 1, 0.052, 0.962, 0.041, 1, 0.052, 1.137 ] - }, - { - "time": 0.1, - "x": 0.954, - "y": 1.137, - "curve": [ 0.202, 0.962, 0.318, 1, 0.202, 1.137, 0.252, 1.002 ] - }, - { "time": 0.4667 }, - { - "time": 1.0667, - "x": 1.002, - "curve": [ 1.092, 1.002, 1.126, 1.143, 1.092, 1, 1.128, 0.975 ] - }, - { - "time": 1.1667, - "x": 1.144, - "y": 0.973, - "curve": [ 1.204, 1.145, 1.233, 0.959, 1.206, 0.972, 1.227, 1.062 ] - }, - { - "time": 1.2667, - "x": 0.958, - "y": 1.063, - "curve": [ 1.284, 0.958, 1.292, 1.001, 1.288, 1.063, 1.288, 1.001 ] - }, - { "time": 1.3333 } - ] - }, - "hip": { - "translate": [ - { - "y": -45.46, - "curve": [ 0.042, -0.09, 0.15, 15.22, 0.031, 44.98, 0.123, 289.73 ] - }, - { - "time": 0.2, - "x": 15.22, - "y": 415.85, - "curve": [ 0.332, 15.22, 0.539, -34.52, 0.271, 532.93, 0.483, 720.5 ] - }, - { - "time": 0.7667, - "x": -34.52, - "y": 721.6, - "curve": [ 0.888, -34.52, 1.057, -21.95, 1.049, 721.17, 1.098, 379.84 ] - }, - { - "time": 1.1333, - "x": -15.67, - "y": 266.77, - "curve": [ 1.144, -14.77, 1.188, -10.53, 1.15, 213.72, 1.172, -61.32 ] - }, - { - "time": 1.2333, - "x": -6.53, - "y": -61.34, - "curve": [ 1.272, -3.22, 1.311, 0.05, 1.291, -61.36, 1.296, -44.8 ] - }, - { "time": 1.3333, "y": -45.46 } - ] - }, - "front-shin": { - "rotate": [ - { - "value": -74.19, - "curve": [ 0, -51.14, 0.042, -12.54 ] - }, - { - "time": 0.1667, - "value": -12.28, - "curve": [ 0.285, -12.32, 0.37, -74.44 ] - }, - { - "time": 0.4333, - "value": -92.92, - "curve": [ 0.498, -111.86, 0.617, -140.28 ] - }, - { - "time": 0.9, - "value": -140.84, - "curve": [ 1.004, -141.04, 1.09, -47.87 ] - }, - { - "time": 1.1, - "value": -37.44, - "curve": [ 1.108, -29.83, 1.14, -21.18 ] - }, - { - "time": 1.1667, - "value": -21.08, - "curve": [ 1.18, -21.03, 1.191, -50.65 ] - }, - { - "time": 1.2, - "value": -53.17, - "curve": [ 1.22, -58.53, 1.271, -73.38 ] - }, - { "time": 1.3333, "value": -74.19 } - ] - }, - "front-foot": { - "rotate": [ - { - "value": 7.35, - "curve": [ 0, 4.8, 0.05, -26.64 ] - }, - { - "time": 0.0667, - "value": -26.64, - "curve": [ 0.192, -26.64, 0.442, -11.77 ] - }, - { - "time": 0.5667, - "value": -11.77, - "curve": [ 0.692, -11.77, 0.942, -19.36 ] - }, - { - "time": 1.0667, - "value": -19.36, - "curve": [ 1.133, -19.36, 1.32, 3.82 ] - }, - { "time": 1.3333, "value": 7.35 } - ] - }, - "rear-foot": { - "rotate": [ - { "value": -7.14 } - ] - }, - "gun": { - "rotate": [ - { - "value": 12.36, - "curve": [ 0.022, 16.28, 0.15, 30.81 ] - }, - { - "time": 0.2, - "value": 30.81, - "curve": [ 0.258, 30.81, 0.375, 13.26 ] - }, - { - "time": 0.4333, - "value": 13.26, - "curve": [ 0.508, 13.26, 0.658, 15.05 ] - }, - { - "time": 0.7333, - "value": 14.98, - "curve": [ 0.789, 14.94, 0.828, 13.62 ] - }, - { - "time": 0.8667, - "value": 12.72, - "curve": [ 0.887, 12.25, 0.984, 9.83 ] - }, - { - "time": 1.0333, - "value": 8.6, - "curve": [ 1.045, 8.31, 1.083, 7.55 ] - }, - { - "time": 1.1333, - "value": 7.13, - "curve": [ 1.175, 6.78, 1.283, 6.18 ] - }, - { "time": 1.3333, "value": 6.18 } - ] - }, - "front-leg-target": { - "translate": [ - { "x": -13.95, "y": -30.34 } - ] - }, - "rear-leg-target": { - "rotate": [ - { "value": -38.43 } - ], - "translate": [ - { "x": 85, "y": -33.59 } - ] - }, - "front-foot-target": { - "rotate": [ - { "value": -62.54 } - ], - "translate": [ - { "x": 16.34, "y": 0.18 } - ] - }, - "rear-foot-target": { - "rotate": [ - { "value": 18.55 } - ], - "translate": [ - { "x": -176.39, "y": 134.12 } - ] - }, - "back-foot-tip": { - "rotate": [ - { - "value": -143.73, - "curve": [ 0.083, -144.24, 0.167, -74.26 ] - }, - { - "time": 0.2667, - "value": -52.76, - "curve": [ 0.342, -36.57, 0.513, -36.57 ] - }, - { - "time": 0.6333, - "value": -30.97, - "curve": [ 0.724, -26.78, 0.848, -17.06 ] - }, - { - "time": 0.9667, - "value": -16.74, - "curve": [ 1.167, -16.2, 1.272, -144.17 ] - }, - { "time": 1.3333, "value": -143.73 } - ] - }, - "front-foot-tip": { - "rotate": [ - { - "value": -1.57, - "curve": [ 0, -24.71, 0.162, -60.88 ] - }, - { - "time": 0.2667, - "value": -60.83, - "curve": [ 0.342, -60.8, 0.582, -43.5 ] - }, - { - "time": 0.7, - "value": -39.45, - "curve": [ 0.773, -36.94, 0.832, -36.78 ] - }, - { - "time": 0.9667, - "value": -36.6, - "curve": [ 1.054, -36.49, 1.092, -37.37 ] - }, - { - "time": 1.1667, - "value": -33.26, - "curve": [ 1.237, -29.37, 1.147, -1.41 ] - }, - { "time": 1.2, "value": -1.57 } - ] - }, - "hair3": { - "rotate": [ - { - "value": -6.81, - "curve": [ 0, 13.59, 0.117, 18.21 ] - }, - { - "time": 0.1333, - "value": 18.21, - "curve": [ 0.167, 18.21, 0.26, 12.95 ] - }, - { - "time": 0.3, - "value": 11.56, - "curve": [ 0.382, 8.7, 0.55, 9.43 ] - }, - { - "time": 0.6667, - "value": 9.32, - "curve": [ 0.843, 9.15, 0.918, -7.34 ] - }, - { "time": 1.3333, "value": -6.81 } - ], - "translate": [ - { - "time": 0.6667, - "curve": [ 0.781, 0, 0.972, 16.03, 0.781, 0, 0.972, 0.92 ] - }, - { - "time": 1.1333, - "x": 16.03, - "y": 0.92, - "curve": [ 1.211, 16.03, 1.281, 0, 1.211, 0.92, 1.281, 0 ] - }, - { "time": 1.3333 } - ] - }, - "hair4": { - "rotate": [ - { - "value": -6.81, - "curve": [ 0.001, -3.88, 0.063, 16.18 ] - }, - { - "time": 0.1667, - "value": 16.14, - "curve": [ 0.242, 16.1, 0.249, 16.07 ] - }, - { - "time": 0.3333, - "value": 13.46, - "curve": [ 0.442, 10.09, 0.573, -2.2 ] - }, - { - "time": 0.6, - "value": -6.04, - "curve": [ 0.614, -8.05, 0.717, -33.44 ] - }, - { - "time": 0.7667, - "value": -33.44, - "curve": [ 0.809, -33.44, 0.835, -31.32 ] - }, - { - "time": 0.8667, - "value": -27.36, - "curve": [ 0.874, -26.47, 0.903, -14.28 ] - }, - { - "time": 0.9333, - "value": -14.47, - "curve": [ 0.956, -14.62, 0.944, -25.91 ] - }, - { - "time": 1, - "value": -25.96, - "curve": [ 1.062, -26.02, 1.051, -1.87 ] - }, - { - "time": 1.0667, - "value": -1.87, - "curve": [ 1.096, -1.87, 1.096, -16.09 ] - }, - { - "time": 1.1333, - "value": -16.08, - "curve": [ 1.169, -16.08, 1.153, -3.38 ] - }, - { - "time": 1.2, - "value": -3.38, - "curve": [ 1.234, -3.38, 1.271, -6.07 ] - }, - { "time": 1.3333, "value": -6.07 } - ] - }, - "hair2": { - "rotate": [ - { - "value": -6.81, - "curve": [ 0, -3.17, 0.042, 16.33 ] - }, - { - "time": 0.0667, - "value": 16.33, - "curve": [ 0.21, 15.74, 0.208, -12.06 ] - }, - { - "time": 0.3333, - "value": -12.21, - "curve": [ 0.417, -12.3, 0.552, -3.98 ] - }, - { - "time": 0.6667, - "value": 1.52, - "curve": [ 0.726, 4.35, 0.817, 4.99 ] - }, - { - "time": 0.8667, - "value": 4.99, - "curve": [ 0.901, 4.99, 0.912, -29.05 ] - }, - { - "time": 0.9667, - "value": -27.45, - "curve": [ 0.987, -26.83, 1.018, -5.42 ] - }, - { - "time": 1.0667, - "value": -5.46, - "curve": [ 1.107, -5.22, 1.095, -33.51 ] - }, - { - "time": 1.1333, - "value": -33.28, - "curve": [ 1.162, -33.57, 1.192, 8.04 ] - }, - { - "time": 1.2667, - "value": 7.86, - "curve": [ 1.302, 7.77, 1.313, 2.7 ] - }, - { "time": 1.3333, "value": 2.7 } - ] - }, - "hair1": { - "rotate": [ - { - "value": -6.81, - "curve": [ 0.001, -3.12, 0.074, 14.66 ] - }, - { - "time": 0.1333, - "value": 14.66, - "curve": [ 0.188, 14.8, 0.293, 9.56 ] - }, - { - "time": 0.3333, - "value": 5.99, - "curve": [ 0.381, 1.72, 0.55, -11.11 ] - }, - { - "time": 0.6667, - "value": -11.11, - "curve": [ 0.833, -11.11, 0.933, 22.54 ] - }, - { - "time": 1.1, - "value": 22.54, - "curve": [ 1.158, 22.54, 1.275, -6.81 ] - }, - { "time": 1.3333, "value": -6.81 } - ] - }, - "torso2": { - "rotate": [ - { - "value": 4.52, - "curve": [ 0.013, 2.33, 0.092, -9.75 ] - }, - { - "time": 0.1333, - "value": -9.75, - "curve": [ 0.175, -9.75, 0.291, -1.26 ] - }, - { - "time": 0.3333, - "value": 0.96, - "curve": [ 0.359, 2.3, 0.543, 4.25 ] - }, - { - "time": 0.6, - "value": 4.68, - "curve": [ 0.683, 5.3, 0.771, 5.92 ] - }, - { - "time": 0.8333, - "value": 6.48, - "curve": [ 0.871, 6.82, 1.083, 11.37 ] - }, - { - "time": 1.1667, - "value": 11.37, - "curve": [ 1.208, 11.37, 1.317, 6.18 ] - }, - { "time": 1.3333, "value": 4.52 } - ], - "translate": [ - { - "curve": [ 0, 0, 0.082, -2.24, 0, 0, 0.082, -0.42 ] - }, - { - "time": 0.1667, - "x": -2.98, - "y": -0.56, - "curve": [ 0.232, -2.24, 0.298, 0, 0.232, -0.42, 0.298, 0 ] - }, - { "time": 0.3333, "curve": "stepped" }, - { - "time": 0.8667, - "curve": [ 0.889, 0, 0.912, 0.26, 0.889, 0, 0.912, 0.06 ] - }, - { - "time": 0.9333, - "x": 0.68, - "y": 0.23, - "curve": [ 1.016, 2.22, 1.095, 5.9, 1.023, 0.97, 1.095, 1.99 ] - }, - { - "time": 1.1667, - "x": 6.47, - "y": 2.18, - "curve": [ 1.23, 5.75, 1.286, 0, 1.23, 1.94, 1.286, 0 ] - }, - { "time": 1.3333 } - ] - }, - "torso3": { - "rotate": [ - { - "value": 4.52, - "curve": [ 0.025, 4.52, 0.075, -6.17 ] - }, - { - "time": 0.1, - "value": -6.17, - "curve": [ 0.175, -6.17, 0.381, -0.71 ] - }, - { - "time": 0.4, - "value": -0.25, - "curve": [ 0.447, 0.87, 0.775, 4.84 ] - }, - { - "time": 0.9, - "value": 4.84, - "curve": [ 1.008, 4.84, 1.225, 4.52 ] - }, - { "time": 1.3333, "value": 4.52 } - ] - }, - "head-control": { - "translate": [ - { - "curve": [ 0.138, -2.4, 0.227, -10.44, 0.123, 1.05, 0.227, 2.7 ] - }, - { - "time": 0.3667, - "x": -10.44, - "y": 2.7, - "curve": [ 0.484, -10.44, 0.585, -5.63, 0.484, 2.7, 0.629, -23.62 ] - }, - { - "time": 0.7333, - "x": -2.29, - "y": -26.61, - "curve": [ 0.818, -0.39, 0.962, 1.21, 0.858, -30.17, 0.972, -28.75 ] - }, - { - "time": 1.1, - "x": 1.25, - "y": -28.75, - "curve": [ 1.192, 1.28, 1.234, 0.98, 1.224, -28.75, 1.235, -2.15 ] - }, - { "time": 1.3333 } - ] - }, - "front-shoulder": { - "translate": [ - { - "curve": [ 0.031, -2.22, 0.065, -3.73, 0.02, -3.25, 0.065, -14.74 ] - }, - { - "time": 0.1, - "x": -3.73, - "y": -14.74, - "curve": [ 0.216, -3.73, 0.384, -0.17, 0.216, -14.74, 0.402, -12.51 ] - }, - { - "time": 0.5, - "x": 1.63, - "y": -9.51, - "curve": [ 0.632, 3.69, 0.935, 7.41, 0.585, -6.91, 0.909, 10.86 ] - }, - { - "time": 1.1, - "x": 7.45, - "y": 10.99, - "curve": [ 1.18, 7.46, 1.265, 2.86, 1.193, 11.05, 1.294, 3.38 ] - }, - { "time": 1.3333 } - ] - } - }, - "ik": { - "front-foot-ik": [ - { - "mix": 0, - "curve": [ 0.3, 0, 0.9, 1, 0.3, 0, 0.9, 0 ] - }, - { "time": 1.2 } - ], - "front-leg-ik": [ - { - "mix": 0, - "bendPositive": false, - "curve": [ 0.3, 0, 0.9, 1, 0.3, 0, 0.9, 0 ] - }, - { "time": 1.2, "bendPositive": false } - ], - "rear-foot-ik": [ - { "mix": 0 } - ], - "rear-leg-ik": [ - { "mix": 0, "bendPositive": false } - ] - }, - "events": [ - { "time": 1.2, "name": "footstep" } - ] - }, - "portal": { - "slots": { - "clipping": { - "attachment": [ - { "name": "clipping" } - ] - }, - "front-fist": { - "attachment": [ - { "name": "front-fist-open" } - ] - }, - "mouth": { - "attachment": [ - { "time": 0.9, "name": "mouth-grind" }, - { "time": 2.2667, "name": "mouth-smile" } - ] - }, - "portal-bg": { - "attachment": [ - { "name": "portal-bg" }, - { "time": 3 } - ] - }, - "portal-flare1": { - "attachment": [ - { "time": 1.1, "name": "portal-flare1" }, - { "time": 1.1333, "name": "portal-flare2" }, - { "time": 1.1667, "name": "portal-flare3" }, - { "time": 1.2, "name": "portal-flare1" }, - { "time": 1.2333, "name": "portal-flare2" }, - { "time": 1.2667, "name": "portal-flare1" }, - { "time": 1.3333 } - ] - }, - "portal-flare2": { - "attachment": [ - { "time": 1.1, "name": "portal-flare2" }, - { "time": 1.1333, "name": "portal-flare3" }, - { "time": 1.1667, "name": "portal-flare1" }, - { "time": 1.2, "name": "portal-flare2" }, - { "time": 1.2333, "name": "portal-flare3" }, - { "time": 1.2667 } - ] - }, - "portal-flare3": { - "attachment": [ - { "time": 1.2, "name": "portal-flare3" }, - { "time": 1.2333, "name": "portal-flare2" }, - { "time": 1.2667 } - ] - }, - "portal-flare4": { - "attachment": [ - { "time": 1.2, "name": "portal-flare2" }, - { "time": 1.2333, "name": "portal-flare1" }, - { "time": 1.2667, "name": "portal-flare2" }, - { "time": 1.3333 } - ] - }, - "portal-flare5": { - "attachment": [ - { "time": 1.2333, "name": "portal-flare3" }, - { "time": 1.2667, "name": "portal-flare1" }, - { "time": 1.3333 } - ] - }, - "portal-flare6": { - "attachment": [ - { "time": 1.2667, "name": "portal-flare3" }, - { "time": 1.3333 } - ] - }, - "portal-flare7": { - "attachment": [ - { "time": 1.1333, "name": "portal-flare2" }, - { "time": 1.1667 } - ] - }, - "portal-flare8": { - "attachment": [ - { "time": 1.2, "name": "portal-flare3" }, - { "time": 1.2333, "name": "portal-flare2" }, - { "time": 1.2667 } - ] - }, - "portal-flare9": { - "attachment": [ - { "time": 1.2, "name": "portal-flare2" }, - { "time": 1.2333, "name": "portal-flare3" }, - { "time": 1.2667, "name": "portal-flare1" }, - { "time": 1.3 } - ] - }, - "portal-flare10": { - "attachment": [ - { "time": 1.2, "name": "portal-flare2" }, - { "time": 1.2333, "name": "portal-flare1" }, - { "time": 1.2667, "name": "portal-flare3" }, - { "time": 1.3 } - ] - }, - "portal-shade": { - "attachment": [ - { "name": "portal-shade" }, - { "time": 3 } - ] - }, - "portal-streaks1": { - "attachment": [ - { "name": "portal-streaks1" }, - { "time": 3 } - ] - }, - "portal-streaks2": { - "attachment": [ - { "name": "portal-streaks2" }, - { "time": 3 } - ] - } - }, - "bones": { - "portal-root": { - "translate": [ - { - "x": -458.35, - "y": 105.19, - "curve": [ 0.333, -458.22, 0.669, -457.86, 0.934, 105.19, 0.671, 105.19 ] - }, - { - "time": 1, - "x": -456.02, - "y": 105.19, - "curve": [ 1.339, -454.14, 2.208, -447.28, 1.35, 105.19, 2.05, 105.19 ] - }, - { - "time": 2.4, - "x": -439.12, - "y": 105.19, - "curve": [ 2.463, -436.44, 2.502, -432.92, 2.487, 105.19, 2.512, 105.09 ] - }, - { - "time": 2.6, - "x": -432.58, - "y": 105.09, - "curve": [ 2.784, -431.94, 2.978, -446.6, 2.772, 105.09, 2.933, 105.19 ] - }, - { "time": 3.0333, "x": -457.42, "y": 105.19 } - ], - "scale": [ - { - "x": 0.003, - "y": 0.006, - "curve": [ 0.329, 0.044, 0.347, 0.117, 0.329, 0.097, 0.37, 0.249 ] - }, - { - "time": 0.4, - "x": 0.175, - "y": 0.387, - "curve": [ 0.63, 0.619, 0.663, 0.723, 0.609, 1.338, 0.645, 1.524 ] - }, - { - "time": 0.7333, - "x": 0.724, - "y": 1.52, - "curve": [ 0.798, 0.725, 0.907, 0.647, 0.797, 1.517, 0.895, 1.424 ] - }, - { - "time": 1, - "x": 0.645, - "y": 1.426, - "curve": [ 1.095, 0.643, 1.139, 0.688, 1.089, 1.428, 1.115, 1.513 ] - }, - { - "time": 1.2333, - "x": 0.685, - "y": 1.516, - "curve": [ 1.325, 0.683, 1.508, 0.636, 1.343, 1.518, 1.467, 1.4 ] - }, - { - "time": 1.6, - "x": 0.634, - "y": 1.401, - "curve": [ 1.728, 0.631, 1.946, 0.687, 1.722, 1.402, 1.924, 1.522 ] - }, - { - "time": 2.0667, - "x": 0.688, - "y": 1.522, - "curve": [ 2.189, 0.69, 2.289, 0.649, 2.142, 1.522, 2.265, 1.417 ] - }, - { - "time": 2.4, - "x": 0.65, - "y": 1.426, - "curve": [ 2.494, 0.651, 2.504, 0.766, 2.508, 1.434, 2.543, 1.566 ] - }, - { - "time": 2.6, - "x": 0.766, - "y": 1.568, - "curve": [ 2.73, 0.765, 3.006, 0.098, 2.767, 1.564, 2.997, 0.1 ] - }, - { "time": 3.0333, "x": 0.007, "y": 0.015 } - ] - }, - "portal-streaks1": { - "rotate": [ - {}, - { "time": 3.1667, "value": 1200 } - ], - "translate": [ - { - "x": 15.15, - "curve": [ 0.162, 15.15, 0.432, 12.6, 0.162, 0, 0.432, -3.86 ] - }, - { - "time": 0.6667, - "x": 10.9, - "y": -6.44, - "curve": [ 0.794, 9.93, 0.912, 9.21, 0.794, -7.71, 0.912, -8.66 ] - }, - { - "time": 1, - "x": 9.21, - "y": -8.66, - "curve": [ 1.083, 9.21, 1.25, 21.53, 1.083, -8.66, 1.265, -4.9 ] - }, - { - "time": 1.3333, - "x": 21.53, - "y": -3.19, - "curve": [ 1.5, 21.53, 1.939, 12.3, 1.446, -0.37, 1.9, 6.26 ] - }, - { - "time": 2.0667, - "x": 11.26, - "y": 6.26, - "curve": [ 2.239, 9.85, 2.389, 9.68, 2.208, 6.26, 2.523, 0.51 ] - }, - { - "time": 2.5667, - "x": 9.39, - "y": -0.8, - "curve": [ 2.657, 9.24, 2.842, 9.21, 2.646, -3.2, 2.842, -8.91 ] - }, - { "time": 2.9333, "x": 9.21, "y": -8.91 } - ], - "scale": [ - { - "curve": [ 0.167, 1, 0.5, 1.053, 0.167, 1, 0.5, 1.053 ] - }, - { - "time": 0.6667, - "x": 1.053, - "y": 1.053, - "curve": [ 0.833, 1.053, 1.167, 0.986, 0.833, 1.053, 1.167, 0.986 ] - }, - { - "time": 1.3333, - "x": 0.986, - "y": 0.986, - "curve": [ 1.5, 0.986, 1.833, 1.053, 1.5, 0.986, 1.833, 1.053 ] - }, - { "time": 2, "x": 1.053, "y": 1.053 } - ] - }, - "portal-streaks2": { - "rotate": [ - {}, - { "time": 3.1667, "value": 600 } - ], - "translate": [ - { "x": -2.11 }, - { "time": 1, "x": -2.11, "y": 6.63 }, - { "time": 1.9333, "x": -2.11 } - ], - "scale": [ - { - "x": 1.014, - "y": 1.014, - "curve": [ 0.229, 0.909, 0.501, 0.755, 0.242, 0.892, 0.502, 0.768 ] - }, - { - "time": 0.8667, - "x": 0.745, - "y": 0.745, - "curve": [ 1.282, 0.733, 2.021, 0.699, 1.27, 0.719, 2.071, 0.709 ] - }, - { - "time": 2.2, - "x": 0.7, - "y": 0.704, - "curve": [ 2.315, 0.7, 2.421, 0.794, 2.311, 0.701, 2.485, 0.797 ] - }, - { - "time": 2.5667, - "x": 0.794, - "y": 0.794, - "curve": [ 2.734, 0.794, 2.99, 0.323, 2.714, 0.789, 3.019, 0.341 ] - }, - { "time": 3.1667, "x": 0, "y": 0 } - ] - }, - "portal-shade": { - "translate": [ - { "x": -29.68 } - ], - "scale": [ - { "x": 0.714, "y": 0.714 } - ] - }, - "portal": { - "rotate": [ - {}, - { "time": 3.1667, "value": 600 } - ] - }, - "clipping": { - "translate": [ - { "x": -476.55, "y": 2.27 } - ], - "scale": [ - { "x": 0.983, "y": 1.197 } - ] - }, - "hip": { - "rotate": [ - { - "time": 1.0667, - "value": 22.74, - "curve": [ 1.163, 18.84, 1.77, 8.77 ] - }, - { - "time": 1.9, - "value": 7.82, - "curve": [ 2.271, 5.1, 2.89, 0 ] - }, - { "time": 3.1667 } - ], - "translate": [ - { "x": -899.41, "y": 4.47, "curve": "stepped" }, - { - "time": 1.0667, - "x": -694.16, - "y": 183.28, - "curve": [ 1.091, -602.08, 1.138, -427.59, 1.115, 185.6, 1.171, 133.18 ] - }, - { - "time": 1.2333, - "x": -316.97, - "y": 55.29, - "curve": [ 1.317, -220.27, 1.512, -123.21, 1.271, 8.68, 1.461, -83.18 ] - }, - { - "time": 1.6, - "x": -95.53, - "y": -112.23, - "curve": [ 1.718, -58.25, 2.037, -22.54, 1.858, -166.17, 2.109, -31.4 ] - }, - { - "time": 2.1667, - "x": -14.82, - "y": -31.12, - "curve": [ 2.294, -7.28, 2.442, -7.2, 2.274, -30.6, 2.393, -36.76 ] - }, - { - "time": 2.6, - "x": -7.2, - "y": -36.96, - "curve": [ 2.854, -7.2, 3.071, -11.87, 2.786, -36.27, 3.082, -22.98 ] - }, - { "time": 3.1667, "x": -11.97, "y": -23.15 } - ] - }, - "rear-foot-target": { - "rotate": [ - { "time": 1.0667, "value": 41.6, "curve": "stepped" }, - { - "time": 1.2333, - "value": 41.6, - "curve": [ 1.258, 41.6, 1.379, 35.46 ] - }, - { - "time": 1.4, - "value": 30.09, - "curve": [ 1.412, 27.04, 1.433, 10.65 ] - }, - { "time": 1.4333, "value": -0.28 }, - { "time": 1.6, "value": 2.44 } - ], - "translate": [ - { "x": -899.41, "y": 4.47, "curve": "stepped" }, - { - "time": 1.0667, - "x": -591.13, - "y": 438.46, - "curve": [ 1.076, -539.77, 1.206, -268.1, 1.117, 418.44, 1.21, 333.18 ] - }, - { - "time": 1.2333, - "x": -225.28, - "y": 304.53, - "curve": [ 1.265, -175.22, 1.393, -74.21, 1.296, 226.52, 1.401, 49.61 ] - }, - { - "time": 1.4333, - "x": -52.32, - "y": 0.2, - "curve": [ 1.454, -40.85, 1.616, 40.87, 1.466, 0.17, 1.614, 0.04 ] - }, - { "time": 1.6667, "x": 45.87, "y": 0.01 }, - { "time": 1.9333, "x": 48.87 } - ] - }, - "front-foot-target": { - "rotate": [ - { - "time": 1.0667, - "value": 32.08, - "curve": [ 1.108, 32.08, 1.192, 35.16 ] - }, - { - "time": 1.2333, - "value": 35.16, - "curve": [ 1.258, 35.16, 1.317, 2.23 ] - }, - { - "time": 1.3333, - "value": -4.74, - "curve": [ 1.351, -12.14, 1.429, -34.96 ] - }, - { - "time": 1.6, - "value": -34.77, - "curve": [ 1.765, -34.58, 1.897, -17.25 ] - }, - { "time": 1.9333 } - ], - "translate": [ - { "x": -899.41, "y": 4.47, "curve": "stepped" }, - { - "time": 1.0667, - "x": -533.93, - "y": 363.75, - "curve": [ 1.074, -480.85, 1.18, -261.31, 1.094, 362.3, 1.195, 267.77 ] - }, - { - "time": 1.2333, - "x": -201.23, - "y": 199.93, - "curve": [ 1.269, -161.38, 1.294, -140.32, 1.274, 126.67, 1.308, 77.12 ] - }, - { - "time": 1.3333, - "x": -124.08, - "y": 0.2, - "curve": [ 1.426, -85.6, 1.633, -69.06, 1.45, 0.48, 1.633, 0 ] - }, - { "time": 1.7333, "x": -69.06 } - ] - }, - "torso": { - "rotate": [ - { - "time": 1.0667, - "value": 27.02, - "curve": [ 1.187, 26.86, 1.291, 7.81 ] - }, - { - "time": 1.3333, - "value": -2.62, - "curve": [ 1.402, -19.72, 1.429, -48.64 ] - }, - { - "time": 1.4667, - "value": -56.31, - "curve": [ 1.509, -64.87, 1.62, -77.14 ] - }, - { - "time": 1.7333, - "value": -77.34, - "curve": [ 1.837, -76.89, 1.895, -71.32 ] - }, - { - "time": 2, - "value": -57.52, - "curve": [ 2.104, -43.83, 2.189, -28.59 ] - }, - { - "time": 2.3, - "value": -29.03, - "curve": [ 2.413, -29.48, 2.513, -36.79 ] - }, - { - "time": 2.6667, - "value": -36.79, - "curve": [ 2.814, -36.95, 2.947, -22.88 ] - }, - { "time": 3.1667, "value": -22.88 } - ] - }, - "neck": { - "rotate": [ - { - "time": 1.0667, - "value": -3.57, - "curve": [ 1.146, -3.66, 1.15, -13.5 ] - }, - { - "time": 1.2333, - "value": -13.5, - "curve": [ 1.428, -13.5, 1.443, 11.58 ] - }, - { - "time": 1.5667, - "value": 11.42, - "curve": [ 1.658, 11.3, 1.775, 3.78 ] - }, - { - "time": 1.8667, - "value": 3.78, - "curve": [ 1.92, 3.78, 2.036, 8.01 ] - }, - { - "time": 2.1, - "value": 7.93, - "curve": [ 2.266, 7.72, 2.42, 3.86 ] - }, - { - "time": 2.5333, - "value": 3.86, - "curve": [ 2.783, 3.86, 3.004, 3.78 ] - }, - { "time": 3.1667, "value": 3.78 } - ] - }, - "head": { - "rotate": [ - { - "time": 1.0667, - "value": 16.4, - "curve": [ 1.133, 9.9, 1.207, 1.87 ] - }, - { - "time": 1.3333, - "value": 1.67, - "curve": [ 1.46, 1.56, 1.547, 47.54 ] - }, - { - "time": 1.7333, - "value": 47.55, - "curve": [ 1.897, 47.56, 2.042, 5.68 ] - }, - { - "time": 2.0667, - "value": 0.86, - "curve": [ 2.074, -0.61, 2.086, -2.81 ] - }, - { - "time": 2.1, - "value": -5.31, - "curve": [ 2.145, -13.07, 2.216, -23.65 ] - }, - { - "time": 2.2667, - "value": -23.71, - "curve": [ 2.334, -23.79, 2.426, -13.43 ] - }, - { - "time": 2.4667, - "value": -9.18, - "curve": [ 2.498, -5.91, 2.604, 2.53 ] - }, - { - "time": 2.6667, - "value": 2.52, - "curve": [ 2.738, 2.24, 2.85, -8.76 ] - }, - { - "time": 2.9333, - "value": -8.67, - "curve": [ 3.036, -8.55, 3.09, -7.09 ] - }, - { "time": 3.1667, "value": -6.75 } - ], - "scale": [ - { - "time": 1.3333, - "curve": [ 1.392, 1, 1.526, 1, 1.392, 1, 1.508, 1.043 ] - }, - { - "time": 1.5667, - "x": 0.992, - "y": 1.043, - "curve": [ 1.598, 0.985, 1.676, 0.955, 1.584, 1.043, 1.672, 1.04 ] - }, - { - "time": 1.7333, - "x": 0.954, - "y": 1.029, - "curve": [ 1.843, 0.954, 1.933, 1, 1.825, 1.013, 1.933, 1 ] - }, - { "time": 2 } - ] - }, - "rear-upper-arm": { - "rotate": [ - { - "time": 0.9, - "value": 39.24, - "curve": [ 0.968, 39.93, 1.267, 85.31 ] - }, - { - "time": 1.4667, - "value": 112.27, - "curve": [ 1.555, 124.24, 1.576, 126.44 ] - }, - { - "time": 1.6333, - "value": 126.44, - "curve": [ 1.782, 126.44, 1.992, 94.55 ] - }, - { - "time": 2.1, - "value": 79.96, - "curve": [ 2.216, 64.26, 2.407, 34.36 ] - }, - { - "time": 2.5667, - "value": 33.38, - "curve": [ 2.815, 31.87, 3.1, 39.2 ] - }, - { "time": 3.1667, "value": 39.2 } - ] - }, - "back-foot-tip": { - "rotate": [ - { - "time": 1.0667, - "value": 56.07, - "curve": [ 1.138, 59.21, 1.192, 59.65 ] - }, - { - "time": 1.2333, - "value": 59.46, - "curve": [ 1.295, 59.17, 1.45, 22.54 ] - }, - { "time": 1.4667, "value": -0.84 } - ] - }, - "front-upper-arm": { - "rotate": [ - { - "time": 1.0667, - "value": 118.03, - "curve": [ 1.075, 93.64, 1.358, -34.03 ] - }, - { - "time": 1.6667, - "value": -33.94, - "curve": [ 1.808, -33.89, 1.879, -25 ] - }, - { - "time": 1.9667, - "value": -25.19, - "curve": [ 2.09, -25.46, 2.312, -34.58 ] - }, - { - "time": 2.3667, - "value": -38.36, - "curve": [ 2.465, -45.18, 2.557, -60.1 ] - }, - { - "time": 2.8333, - "value": -61.1, - "curve": [ 2.843, -61.06, 3.16, -60.87 ] - }, - { "time": 3.1667, "value": -60.87 } - ] - }, - "front-bracer": { - "rotate": [ - { - "time": 1.0667, - "value": 0.66, - "curve": [ 1.108, 0.66, 1.221, 44.95 ] - }, - { - "time": 1.2333, - "value": 49.25, - "curve": [ 1.263, 59.42, 1.342, 68.06 ] - }, - { - "time": 1.3667, - "value": 68.34, - "curve": [ 1.409, 68.8, 1.476, 4.9 ] - }, - { - "time": 1.5, - "value": -2.05, - "curve": [ 1.529, -10.3, 1.695, -15.95 ] - }, - { - "time": 1.7333, - "value": -17.38, - "curve": [ 1.807, -20.1, 1.878, -21.19 ] - }, - { - "time": 1.9333, - "value": -21.08, - "curve": [ 2.073, -20.8, 2.146, -7.63 ] - }, - { - "time": 2.1667, - "value": -3.64, - "curve": [ 2.186, 0.12, 2.275, 15.28 ] - }, - { - "time": 2.3333, - "value": 21.78, - "curve": [ 2.392, 28.31, 2.575, 37.66 ] - }, - { - "time": 2.7, - "value": 39.43, - "curve": [ 2.947, 42.93, 3.02, 42.46 ] - }, - { "time": 3.1667, "value": 42.46 } - ] - }, - "front-thigh": { - "translate": [ - { "time": 1.1, "x": -6.41, "y": 18.23, "curve": "stepped" }, - { "time": 1.1333, "x": -6.41, "y": 18.23 }, - { "time": 1.2, "x": 1.61, "y": 3.66 }, - { "time": 1.2333, "x": 4.5, "y": -3.15 }, - { "time": 1.3667, "x": -3.79, "y": 2.94 }, - { "time": 1.4, "x": -8.37, "y": 8.72 }, - { "time": 1.4333, "x": -11.26, "y": 16.99 }, - { "time": 1.4667, "x": -9.89, "y": 24.73, "curve": "stepped" }, - { "time": 1.8667, "x": -9.89, "y": 24.73 }, - { "time": 2.1 } - ] - }, - "front-foot-tip": { - "rotate": [ - { "time": 1.0667, "value": 42.55, "curve": "stepped" }, - { "time": 1.1333, "value": 42.55 }, - { "time": 1.2333, "value": 17.71 }, - { "time": 1.3667, "value": 3.63 }, - { "time": 1.4333 } - ] - }, - "rear-bracer": { - "rotate": [ - { - "time": 1.0667, - "value": 108.71, - "curve": [ 1.082, 108.29, 1.437, 50.73 ] - }, - { - "time": 1.5667, - "value": 24.87, - "curve": [ 1.62, 14.2, 1.66, -11.74 ] - }, - { - "time": 1.7333, - "value": -11.74, - "curve": [ 1.961, -11.73, 2.172, 1.66 ] - }, - { - "time": 2.2667, - "value": 7.88, - "curve": [ 2.331, 12.13, 2.439, 18.65 ] - }, - { - "time": 2.5333, - "value": 18.72, - "curve": [ 2.788, 18.91, 3.145, -0.3 ] - }, - { "time": 3.1667 } - ] - }, - "front-fist": { - "rotate": [ - { - "time": 1.1, - "value": 6.32, - "curve": [ 1.11, 3.31, 1.153, -5.07 ] - }, - { - "time": 1.2333, - "value": -5.13, - "curve": [ 1.311, -5.19, 1.364, 34.65 ] - }, - { - "time": 1.4667, - "value": 34.53, - "curve": [ 1.574, 34.41, 1.547, -55.78 ] - }, - { - "time": 1.8667, - "value": -54.7, - "curve": [ 1.947, -54.7, 2.03, -53.94 ] - }, - { - "time": 2.1333, - "value": -42.44, - "curve": [ 2.215, -33.42, 2.358, -4.43 ] - }, - { - "time": 2.4, - "value": 0.03, - "curve": [ 2.444, 4.66, 2.536, 8.2 ] - }, - { - "time": 2.6333, - "value": 8.2, - "curve": [ 2.733, 8.19, 2.804, -0.67 ] - }, - { - "time": 2.9, - "value": -0.82, - "curve": [ 3.127, -1.16, 3.093, 0 ] - }, - { "time": 3.1667 } - ] - }, - "gun": { - "rotate": [ - { - "time": 1.2667, - "curve": [ 1.35, 0, 1.549, 7.49 ] - }, - { - "time": 1.6, - "value": 9.5, - "curve": [ 1.663, 12.02, 1.846, 19.58 ] - }, - { - "time": 1.9333, - "value": 19.43, - "curve": [ 1.985, 19.4, 2.057, 2.98 ] - }, - { - "time": 2.2, - "value": 2.95, - "curve": [ 2.304, 3.55, 2.458, 10.8 ] - }, - { - "time": 2.5, - "value": 10.8, - "curve": [ 2.642, 10.8, 2.873, -2.54 ] - }, - { - "time": 2.9333, - "value": -2.55, - "curve": [ 3.09, -2.57, 3.08, 0 ] - }, - { "time": 3.1667 } - ] - }, - "hair2": { - "rotate": [ - { - "time": 1.0667, - "value": 26.19, - "curve": [ 1.158, 26.19, 1.368, 26 ] - }, - { - "time": 1.4333, - "value": 24.43, - "curve": [ 1.534, 22.03, 2, -29.14 ] - }, - { - "time": 2.2, - "value": -29.14, - "curve": [ 2.292, -29.14, 2.475, 6.71 ] - }, - { - "time": 2.5667, - "value": 6.71, - "curve": [ 2.675, 6.71, 2.814, -5.06 ] - }, - { - "time": 2.9, - "value": -5.06, - "curve": [ 2.973, -5.06, 3.123, 0 ] - }, - { "time": 3.1667 } - ] - }, - "hair4": { - "rotate": [ - { - "time": 1.0667, - "value": 5.21, - "curve": [ 1.108, 5.21, 1.192, 26.19 ] - }, - { - "time": 1.2333, - "value": 26.19, - "curve": [ 1.317, 26.19, 1.483, 10.63 ] - }, - { - "time": 1.5667, - "value": 10.63, - "curve": [ 1.627, 10.63, 1.642, 17.91 ] - }, - { - "time": 1.7, - "value": 17.94, - "curve": [ 1.761, 17.97, 1.774, 8.22 ] - }, - { - "time": 1.8, - "value": 3.33, - "curve": [ 1.839, -4.21, 1.95, -22.67 ] - }, - { - "time": 2, - "value": -22.67, - "curve": [ 2.025, -22.67, 2.123, -21.86 ] - }, - { - "time": 2.1667, - "value": -18.71, - "curve": [ 2.228, -14.31, 2.294, -0.3 ] - }, - { - "time": 2.3667, - "value": 6.36, - "curve": [ 2.433, 12.45, 2.494, 19.21 ] - }, - { - "time": 2.6, - "value": 19.21, - "curve": [ 2.729, 19.21, 2.854, 6.75 ] - }, - { - "time": 2.9333, - "value": 4.62, - "curve": [ 3.09, 0.45, 3.062, 0 ] - }, - { "time": 3.1667 } - ] - }, - "hair3": { - "rotate": [ - { - "time": 1.4333, - "curve": [ 1.45, 0, 1.452, 11.29 ] - }, - { - "time": 1.5, - "value": 11.21, - "curve": [ 1.596, 11.06, 1.573, -14.17 ] - }, - { - "time": 1.7333, - "value": -20.4, - "curve": [ 1.851, -24.98, 1.943, -28.45 ] - }, - { - "time": 2.2, - "value": -28.75, - "curve": [ 2.317, -28.75, 2.55, 7.04 ] - }, - { - "time": 2.6667, - "value": 7.04, - "curve": [ 2.792, 7.04, 2.885, -5.19 ] - }, - { - "time": 2.9667, - "value": -5.19, - "curve": [ 3.037, -5.19, 3.096, 0 ] - }, - { "time": 3.1667 } - ] - }, - "hair1": { - "rotate": [ - { - "time": 1.2333, - "curve": [ 1.283, 0, 1.349, 3.99 ] - }, - { - "time": 1.4333, - "value": 6.58, - "curve": [ 1.497, 8.54, 1.683, 9.35 ] - }, - { - "time": 1.7667, - "value": 9.35, - "curve": [ 1.825, 9.35, 1.945, -8.71 ] - }, - { - "time": 2, - "value": -11.15, - "curve": [ 2.058, -13.71, 2.2, -14.97 ] - }, - { - "time": 2.2667, - "value": -14.97, - "curve": [ 2.367, -14.97, 2.567, 18.77 ] - }, - { - "time": 2.6667, - "value": 18.77, - "curve": [ 2.733, 18.77, 2.817, 8.29 ] - }, - { - "time": 2.8667, - "value": 6.51, - "curve": [ 2.988, 2.17, 3.058, 0 ] - }, - { "time": 3.1667 } - ] - }, - "flare1": { - "rotate": [ - { "time": 1.1, "value": 8.2 } - ], - "translate": [ - { "time": 1.1, "x": -19.97, "y": 149.68 }, - { "time": 1.2, "x": 3.85, "y": 152.43 }, - { "time": 1.2333, "x": -15.42, "y": 152.29 } - ], - "scale": [ - { - "time": 1.1, - "x": 0.805, - "y": 0.805, - "curve": [ 1.119, 0.763, 1.16, 1.162, 1.117, 0.805, 1.15, 0.605 ] - }, - { - "time": 1.1667, - "x": 1.279, - "y": 0.605, - "curve": [ 1.177, 1.47, 1.192, 2.151, 1.175, 0.605, 1.192, 0.911 ] - }, - { - "time": 1.2, - "x": 2.151, - "y": 0.911, - "curve": [ 1.208, 2.151, 1.231, 1.668, 1.208, 0.911, 1.227, 0.844 ] - }, - { - "time": 1.2333, - "x": 1.608, - "y": 0.805, - "curve": [ 1.249, 1.205, 1.283, 0.547, 1.254, 0.685, 1.283, 0.416 ] - }, - { "time": 1.3, "x": 0.547, "y": 0.416 } - ], - "shear": [ - { "time": 1.1, "y": 4.63 }, - { "time": 1.2333, "x": -5.74, "y": 4.63 } - ] - }, - "flare2": { - "rotate": [ - { "time": 1.1, "value": 12.29 } - ], - "translate": [ - { "time": 1.1, "x": -8.63, "y": 132.96 }, - { "time": 1.2, "x": 4.35, "y": 132.93 } - ], - "scale": [ - { "time": 1.1, "x": 0.864, "y": 0.864 }, - { "time": 1.1667, "x": 0.945, "y": 0.945 }, - { "time": 1.2, "x": 1.511, "y": 1.081 } - ], - "shear": [ - { "time": 1.1, "y": 24.03 } - ] - }, - "flare3": { - "rotate": [ - { "time": 1.1667, "value": 2.88 } - ], - "translate": [ - { "time": 1.1667, "x": 3.24, "y": 114.81 } - ], - "scale": [ - { "time": 1.1667, "x": 0.668, "y": 0.668 } - ], - "shear": [ - { "time": 1.1667, "y": 38.59 } - ] - }, - "flare4": { - "rotate": [ - { "time": 1.1667, "value": -8.64 } - ], - "translate": [ - { "time": 1.1667, "x": -3.82, "y": 194.06 }, - { "time": 1.2667, "x": -1.82, "y": 198.47, "curve": "stepped" }, - { "time": 1.3, "x": -1.94, "y": 187.81 } - ], - "scale": [ - { "time": 1.1667, "x": 0.545, "y": 0.545 }, - { "time": 1.2667, "x": 0.757, "y": 0.757 } - ], - "shear": [ - { "time": 1.1667, "x": 7.42, "y": -22.04 } - ] - }, - "flare5": { - "translate": [ - { "time": 1.2, "x": -11.17, "y": 176.42 }, - { "time": 1.2333, "x": -8.56, "y": 179.04, "curve": "stepped" }, - { "time": 1.3, "x": -14.57, "y": 168.69 } - ], - "scale": [ - { "time": 1.2333, "x": 1.146 }, - { "time": 1.3, "x": 0.703, "y": 0.61 } - ], - "shear": [ - { "time": 1.2, "x": 6.9 } - ] - }, - "flare6": { - "rotate": [ - { "time": 1.2333, "value": -5.36 }, - { "time": 1.2667, "value": -0.54 } - ], - "translate": [ - { "time": 1.2333, "x": 14.52, "y": 204.67 }, - { "time": 1.2667, "x": 19.16, "y": 212.9, "curve": "stepped" }, - { "time": 1.3, "x": 9.23, "y": 202.85 } - ], - "scale": [ - { "time": 1.2333, "x": 0.777, "y": 0.49 }, - { "time": 1.2667, "x": 0.777, "y": 0.657 }, - { "time": 1.3, "x": 0.475, "y": 0.401 } - ] - }, - "flare7": { - "rotate": [ - { "time": 1.1, "value": 5.98 }, - { "time": 1.1333, "value": 32.82 } - ], - "translate": [ - { "time": 1.1, "x": -6.34, "y": 112.98 }, - { "time": 1.1333, "x": 2.66, "y": 111.6 } - ], - "scale": [ - { "time": 1.1, "x": 0.588, "y": 0.588 } - ], - "shear": [ - { "time": 1.1333, "x": -19.93 } - ] - }, - "flare8": { - "rotate": [ - { "time": 1.2333, "value": -6.85 } - ], - "translate": [ - { "time": 1.1667, "x": 66.67, "y": 125.52, "curve": "stepped" }, - { "time": 1.2, "x": 58.24, "y": 113.53, "curve": "stepped" }, - { "time": 1.2333, "x": 40.15, "y": 114.69 } - ], - "scale": [ - { "time": 1.1667, "x": 1.313, "y": 1.203 }, - { "time": 1.2333, "x": 1.038, "y": 0.95 } - ], - "shear": [ - { "time": 1.2, "y": -13.01 } - ] - }, - "flare9": { - "rotate": [ - { "time": 1.1667, "value": 2.9 } - ], - "translate": [ - { "time": 1.1667, "x": 28.45, "y": 151.35, "curve": "stepped" }, - { "time": 1.2, "x": 48.8, "y": 191.09, "curve": "stepped" }, - { "time": 1.2333, "x": 52, "y": 182.52, "curve": "stepped" }, - { "time": 1.2667, "x": 77.01, "y": 195.96 } - ], - "scale": [ - { "time": 1.1667, "x": 0.871, "y": 1.073 }, - { "time": 1.2, "x": 0.927, "y": 0.944 }, - { "time": 1.2333, "x": 1.165, "y": 1.336 } - ], - "shear": [ - { "time": 1.1667, "x": 7.95, "y": 25.48 } - ] - }, - "flare10": { - "rotate": [ - { "time": 1.1667, "value": 2.18 } - ], - "translate": [ - { "time": 1.1667, "x": 55.64, "y": 137.64, "curve": "stepped" }, - { "time": 1.2, "x": 90.49, "y": 151.07, "curve": "stepped" }, - { "time": 1.2333, "x": 114.06, "y": 153.05, "curve": "stepped" }, - { "time": 1.2667, "x": 90.44, "y": 164.61 } - ], - "scale": [ - { "time": 1.1667, "x": 2.657, "y": 0.891 }, - { "time": 1.2, "x": 3.314, "y": 1.425 }, - { "time": 1.2333, "x": 2.871, "y": 0.924 }, - { "time": 1.2667, "x": 2.317, "y": 0.775 } - ], - "shear": [ - { "time": 1.1667, "x": -1.35 } - ] - }, - "torso2": { - "rotate": [ - { - "time": 1, - "curve": [ 1.117, 0, 1.255, 24.94 ] - }, - { - "time": 1.4, - "value": 24.94, - "curve": [ 1.477, 24.94, 1.59, -17.62 ] - }, - { - "time": 1.6333, - "value": -19.48, - "curve": [ 1.717, -23.1, 1.784, -26.12 ] - }, - { - "time": 1.9333, - "value": -26.14, - "curve": [ 2.067, -26.15, 2.158, 4.3 ] - }, - { - "time": 2.3, - "value": 4.22, - "curve": [ 2.45, 4.13, 2.579, -1.76 ] - }, - { - "time": 2.7333, - "value": -1.8, - "curve": [ 2.816, -1.82, 2.857, -2.94 ] - }, - { - "time": 2.9333, - "value": -2.99, - "curve": [ 3.056, -3.08, 3.09, 0 ] - }, - { "time": 3.1667 } - ] - }, - "torso3": { - "rotate": [ - { - "time": 1.3, - "curve": [ 1.352, 0, 1.408, 6.47 ] - }, - { - "time": 1.4667, - "value": 6.43, - "curve": [ 1.55, 6.39, 1.723, -5.05 ] - }, - { - "time": 1.7333, - "value": -5.53, - "curve": [ 1.782, -7.72, 1.843, -16.94 ] - }, - { - "time": 1.9667, - "value": -16.86, - "curve": [ 2.111, -16.78, 2.259, -3.97 ] - }, - { - "time": 2.4, - "value": -2.43, - "curve": [ 2.525, -1.12, 2.639, -0.5 ] - }, - { - "time": 2.7333, - "value": -0.49, - "curve": [ 2.931, -0.47, 2.999, -2.15 ] - }, - { "time": 3.1667, "value": -2.15 } - ] - }, - "head-control": { - "translate": [ - { - "time": 1.2333, - "curve": [ 1.25, 0, 1.474, 6.89, 1.25, 0, 1.496, 0.98 ] - }, - { - "time": 1.6667, - "x": 11.99, - "y": -6.42, - "curve": [ 1.743, 14.01, 1.86, 14.33, 1.785, -11.55, 1.86, -27.1 ] - }, - { - "time": 1.9667, - "x": 13.91, - "y": -26.88, - "curve": [ 2.074, 13.49, 2.244, 8.13, 2.074, -26.65, 2.215, -21.78 ] - }, - { - "time": 2.3, - "x": 6.07, - "y": -16.64, - "curve": [ 2.416, 1.84, 2.497, -1.41, 2.417, -9.57, 2.526, -1.72 ] - }, - { - "time": 2.5667, - "x": -3.78, - "y": -1.71, - "curve": [ 2.661, -6.98, 2.76, -8.76, 2.692, -1.68, 2.821, -15.75 ] - }, - { - "time": 2.9, - "x": -8.32, - "y": -16.7, - "curve": [ 2.962, -8.12, 3.082, -0.04, 2.958, -17.39, 3.089, 0 ] - }, - { "time": 3.1667 } - ] - }, - "front-shoulder": { - "translate": [ - { - "time": 1.3333, - "curve": [ 1.488, 0, 1.717, 0.21, 1.488, 0, 1.688, -30.29 ] - }, - { - "time": 1.9, - "x": 0.83, - "y": -30.29, - "curve": [ 2.078, 1.43, 2.274, 2.88, 2.071, -30.29, 2.289, 4.48 ] - }, - { - "time": 2.4333, - "x": 2.89, - "y": 4.59, - "curve": [ 2.604, 2.89, 2.677, -0.68, 2.57, 4.7, 2.694, -2.43 ] - }, - { - "time": 2.7667, - "x": -0.67, - "y": -2.47, - "curve": [ 2.866, -0.67, 2.986, -0.07, 2.882, -2.47, 3.036, -0.06 ] - }, - { "time": 3.1667 } - ] - } - }, - "ik": { - "rear-leg-ik": [ - { "time": 3.1667, "softness": 10, "bendPositive": false } - ] - } - }, - "run": { - "slots": { - "mouth": { - "attachment": [ - { "name": "mouth-grind" } - ] - } - }, - "bones": { - "front-thigh": { - "translate": [ - { - "x": -5.14, - "y": 11.13, - "curve": [ 0.033, -7.77, 0.112, -9.03, 0.034, 11.13, 0.108, 9.74 ] - }, - { - "time": 0.1667, - "x": -9.03, - "y": 7.99, - "curve": [ 0.23, -9.05, 0.314, -1.34, 0.236, 5.93, 0.28, 3.22 ] - }, - { - "time": 0.3333, - "x": 0.41, - "y": 3.19, - "curve": [ 0.352, 2.09, 0.449, 11.16, 0.384, 3.16, 0.449, 4.98 ] - }, - { - "time": 0.5, - "x": 11.17, - "y": 6.76, - "curve": [ 0.571, 10.79, 0.621, -1.83, 0.542, 8.21, 0.625, 11.13 ] - }, - { "time": 0.6667, "x": -5.14, "y": 11.13 } - ] - }, - "torso": { - "rotate": [ - { - "value": -37.66, - "curve": [ 0.034, -37.14, 0.107, -36.21 ] - }, - { - "time": 0.1333, - "value": -36.21, - "curve": [ 0.158, -36.21, 0.209, -38.8 ] - }, - { - "time": 0.2333, - "value": -38.79, - "curve": [ 0.259, -38.78, 0.313, -38.03 ] - }, - { - "time": 0.3333, - "value": -37.66, - "curve": [ 0.357, -37.21, 0.4, -36.21 ] - }, - { - "time": 0.4333, - "value": -36.21, - "curve": [ 0.458, -36.21, 0.539, -38.8 ] - }, - { - "time": 0.5667, - "value": -38.8, - "curve": [ 0.592, -38.8, 0.645, -38 ] - }, - { "time": 0.6667, "value": -37.66 } - ] - }, - "rear-thigh": { - "translate": [ - { - "x": -16.41, - "y": 1.55, - "curve": [ 0.013, -15.67, 0.183, -8.55, 0.03, 2.39, 0.183, 6.17 ] - }, - { - "time": 0.2333, - "x": -8.55, - "y": 6.17, - "curve": [ 0.308, -8.55, 0.492, -19.75, 0.308, 6.17, 0.492, 0.61 ] - }, - { - "time": 0.5667, - "x": -19.75, - "y": 0.61, - "curve": [ 0.592, -19.75, 0.641, -18.06, 0.592, 0.61, 0.632, 0.78 ] - }, - { "time": 0.6667, "x": -16.41, "y": 1.55 } - ] - }, - "front-upper-arm": { - "rotate": [ - { - "value": -39.03, - "curve": [ 0.051, -0.1, 0.145, 88.36 ] - }, - { - "time": 0.2333, - "value": 88.36, - "curve": [ 0.28, 88.76, 0.324, 59.52 ] - }, - { - "time": 0.3333, - "value": 51.13, - "curve": [ 0.358, 30.2, 0.445, -74.91 ] - }, - { - "time": 0.5667, - "value": -75.82, - "curve": [ 0.599, -76.06, 0.642, -55.72 ] - }, - { "time": 0.6667, "value": -39.03 } - ] - }, - "front-bracer": { - "rotate": [ - { - "value": 20.54, - "curve": [ 0.052, 11.42, 0.089, 0.13 ] - }, - { - "time": 0.1333, - "value": 0.15, - "curve": [ 0.186, 0.17, 0.221, 26.29 ] - }, - { - "time": 0.2333, - "value": 32.37, - "curve": [ 0.247, 39.19, 0.286, 61.45 ] - }, - { - "time": 0.3333, - "value": 61.58, - "curve": [ 0.371, 61.69, 0.42, 55.79 ] - }, - { "time": 0.4667, "value": 49.68 }, - { "time": 0.6667, "value": 20.54 } - ] - }, - "front-fist": { - "rotate": [ - { - "value": -36.16, - "curve": [ 0.014, -38.8, 0.036, -43.27 ] - }, - { - "time": 0.0667, - "value": -43.37, - "curve": [ 0.102, -43.49, 0.182, -28.46 ] - }, - { - "time": 0.2, - "value": -23.04, - "curve": [ 0.23, -13.87, 0.264, 3.86 ] - }, - { - "time": 0.3333, - "value": 3.7, - "curve": [ 0.38, 3.64, 0.535, -16.22 ] - }, - { "time": 0.5667, "value": -21.29 }, - { "time": 0.6667, "value": -36.16 } - ] - }, - "rear-upper-arm": { - "rotate": [ - { - "value": 40.5, - "curve": [ 0.028, 23.74, 0.128, -79.86 ] - }, - { - "time": 0.2333, - "value": -79.87, - "curve": [ 0.38, -79.88, 0.403, 63.25 ] - }, - { - "time": 0.5667, - "value": 64.13, - "curve": [ 0.607, 64.35, 0.644, 53.1 ] - }, - { "time": 0.6667, "value": 40.5 } - ], - "translate": [ - { - "x": -3.79, - "y": -0.77, - "curve": [ 0.044, -4.58, 0.169, -5.48, 0.044, 0.93, 0.169, 2.85 ] - }, - { - "time": 0.2333, - "x": -5.48, - "y": 2.85, - "curve": [ 0.346, -5.48, 0.475, -2.68, 0.346, 2.85, 0.475, -3.13 ] - }, - { - "time": 0.5667, - "x": -2.68, - "y": -3.13, - "curve": [ 0.611, -2.68, 0.642, -3.34, 0.611, -3.13, 0.642, -1.73 ] - }, - { "time": 0.6667, "x": -3.79, "y": -0.77 } - ] - }, - "rear-bracer": { - "rotate": [ - { "value": 28.28 }, - { - "time": 0.2333, - "value": -11.12, - "curve": [ 0.252, -14.12, 0.297, -19.37 ] - }, - { - "time": 0.3333, - "value": -19.38, - "curve": [ 0.435, -19.41, 0.522, 38.96 ] - }, - { - "time": 0.5667, - "value": 38.87, - "curve": [ 0.619, 38.76, 0.644, 32.01 ] - }, - { "time": 0.6667, "value": 28.28 } - ] - }, - "neck": { - "rotate": [ - { - "value": 11.88, - "curve": [ 0.024, 11.4, 0.075, 9.74 ] - }, - { - "time": 0.1, - "value": 9.74, - "curve": [ 0.125, 9.74, 0.208, 13.36 ] - }, - { - "time": 0.2333, - "value": 13.36, - "curve": [ 0.258, 13.36, 0.321, 12.2 ] - }, - { - "time": 0.3333, - "value": 11.88, - "curve": [ 0.365, 11.06, 0.408, 9.72 ] - }, - { - "time": 0.4333, - "value": 9.72, - "curve": [ 0.458, 9.72, 0.542, 13.36 ] - }, - { - "time": 0.5667, - "value": 13.36, - "curve": [ 0.592, 13.36, 0.636, 12.48 ] - }, - { "time": 0.6667, "value": 11.88 } - ] - }, - "head": { - "rotate": [ - { - "value": 13.14, - "curve": [ 0.02, 11.99, 0.039, 8.94 ] - }, - { - "time": 0.0667, - "value": 8.93, - "curve": [ 0.122, 8.9, 0.232, 15.8 ] - }, - { - "time": 0.2667, - "value": 15.81, - "curve": [ 0.325, 15.82, 0.357, 8.95 ] - }, - { - "time": 0.4, - "value": 8.93, - "curve": [ 0.444, 8.91, 0.568, 15.8 ] - }, - { - "time": 0.6, - "value": 15.77, - "curve": [ 0.632, 15.74, 0.649, 14.05 ] - }, - { "time": 0.6667, "value": 13.14 } - ], - "scale": [ - { - "curve": [ 0.014, 0.996, 0.068, 0.991, 0.027, 1.005, 0.083, 1.012 ] - }, - { - "time": 0.1, - "x": 0.991, - "y": 1.012, - "curve": [ 0.128, 0.991, 0.205, 1.018, 0.128, 1.012, 0.197, 0.988 ] - }, - { - "time": 0.2333, - "x": 1.018, - "y": 0.988, - "curve": [ 0.272, 1.018, 0.305, 1.008, 0.262, 0.988, 0.311, 0.995 ] - }, - { - "time": 0.3333, - "curve": [ 0.351, 0.995, 0.417, 0.987, 0.359, 1.006, 0.417, 1.013 ] - }, - { - "time": 0.4333, - "x": 0.987, - "y": 1.013, - "curve": [ 0.467, 0.987, 0.533, 1.02, 0.467, 1.013, 0.533, 0.989 ] - }, - { - "time": 0.5667, - "x": 1.02, - "y": 0.989, - "curve": [ 0.592, 1.02, 0.652, 1.004, 0.592, 0.989, 0.644, 0.996 ] - }, - { "time": 0.6667 } - ] - }, - "gun": { - "rotate": [ - { - "value": 12.36, - "curve": [ 0.022, 16.28, 0.087, 20.25 ] - }, - { - "time": 0.1333, - "value": 20.19, - "curve": [ 0.168, 20.32, 0.254, -8.82 ] - }, - { - "time": 0.2667, - "value": -11.88, - "curve": [ 0.291, -17.91, 0.344, -24.11 ] - }, - { - "time": 0.4, - "value": -23.88, - "curve": [ 0.448, -23.69, 0.533, -15.47 ] - }, - { "time": 0.5667, "value": -8.69 }, - { "time": 0.6667, "value": 12.36 } - ] - }, - "hip": { - "rotate": [ - { "value": -8.24 } - ], - "translate": [ - { - "x": -3.6, - "y": -34.1, - "curve": [ 0.042, -3.84, 0.118, 7.62, 0.042, -33.74, 0.112, 20.55 ] - }, - { - "time": 0.1667, - "x": 7.61, - "y": 20.36, - "curve": [ 0.194, 7.6, 0.21, 5.06, 0.204, 20.65, 0.217, -8.69 ] - }, - { - "time": 0.2333, - "x": 1.68, - "y": -18.48, - "curve": [ 0.279, -4.99, 0.297, -5.64, 0.254, -31.08, 0.292, -34.55 ] - }, - { - "time": 0.3333, - "x": -5.76, - "y": -35, - "curve": [ 0.379, -5.9, 0.451, 6.8, 0.384, -35.56, 0.428, 17.6 ] - }, - { - "time": 0.5, - "x": 6.61, - "y": 17.01, - "curve": [ 0.536, 6.47, 0.545, 3.56, 0.533, 16.75, 0.548, -8.71 ] - }, - { - "time": 0.5667, - "x": 0.35, - "y": -18.81, - "curve": [ 0.597, -4.07, 0.642, -3.45, 0.584, -28.58, 0.642, -34.32 ] - }, - { "time": 0.6667, "x": -3.6, "y": -34.1 } - ] - }, - "front-foot-target": { - "rotate": [ - { - "value": -62.54, - "curve": [ 0.015, -74.19, 0.056, -103.19 ] - }, - { - "time": 0.0667, - "value": -111.08, - "curve": [ 0.092, -129.44, 0.189, -146.55 ] - }, - { - "time": 0.2333, - "value": -146.32, - "curve": [ 0.285, -146.06, 0.32, -125.1 ] - }, - { "time": 0.3333, "value": -117.24 }, - { - "time": 0.5, - "value": -35.07, - "curve": [ 0.522, -28.64, 0.546, -24.84 ] - }, - { - "time": 0.5667, - "value": -24.9, - "curve": [ 0.595, -25, 0.623, -40.82 ] - }, - { "time": 0.6667, "value": -62.54 } - ], - "translate": [ - { "x": 16.34, "y": 0.18 }, - { - "time": 0.0667, - "x": -101.43, - "y": 8.04, - "curve": [ 0.085, -131.35, 0.129, -207.69, 0.08, 14.9, 0.124, 113.28 ] - }, - { - "time": 0.1667, - "x": -207.92, - "y": 145.81, - "curve": [ 0.196, -208.13, 0.21, -202.91, 0.186, 160.26, 0.206, 163.48 ] - }, - { - "time": 0.2333, - "x": -189.94, - "y": 163.85, - "curve": [ 0.27, -169.94, 0.31, -126.19, 0.269, 164.35, 0.316, 85.97 ] - }, - { - "time": 0.3333, - "x": -90.56, - "y": 78.57, - "curve": [ 0.355, -57.99, 0.376, -29.14, 0.35, 71.55, 0.376, 66.4 ] - }, - { - "time": 0.4, - "x": 2.87, - "y": 66.38, - "curve": [ 0.412, 19.24, 0.469, 90.73, 0.429, 66.37, 0.469, 70.66 ] - }, - { - "time": 0.5, - "x": 117.18, - "y": 70.46, - "curve": [ 0.522, 136.24, 0.542, 151.33, 0.539, 70.2, 0.555, 38.25 ] - }, - { - "time": 0.5667, - "x": 151.49, - "y": 25.29, - "curve": [ 0.578, 146.76, 0.586, 133.13, 0.572, 19.7, 0.582, 12.23 ] - }, - { "time": 0.6, "x": 115.02, "y": 0.1 }, - { "time": 0.6667, "x": 16.34, "y": 0.18 } - ] - }, - "front-leg-target": { - "translate": [ - { "x": -13.95, "y": -30.34 } - ] - }, - "rear-foot-target": { - "rotate": [ - { "value": 18.55 }, - { - "time": 0.2333, - "value": 167.84, - "curve": [ 0.246, 153.66, 0.256, 129.74 ] - }, - { - "time": 0.2667, - "value": 124.32, - "curve": [ 0.296, 124.43, 0.313, 129.93 ] - }, - { - "time": 0.3667, - "value": 129.87, - "curve": [ 0.421, 128.32, 0.519, 0.98 ] - }, - { - "time": 0.5667, - "curve": [ 0.6, 0.27, 0.642, 4.73 ] - }, - { "time": 0.6667, "value": 18.55 } - ], - "translate": [ - { - "x": -176.39, - "y": 134.12, - "curve": [ 0.018, -142.26, 0.054, -94.41, 0.01, 120.96, 0.044, 84.08 ] - }, - { - "time": 0.0667, - "x": -73.56, - "y": 76.68, - "curve": [ 0.086, -42.82, 0.194, 101.2, 0.098, 66.73, 0.198, 60.88 ] - }, - { "time": 0.2333, "x": 98.32, "y": 32.17 }, - { "time": 0.2667, "x": 49.13, "y": -0.63 }, - { - "time": 0.4, - "x": -147.9, - "y": 0.32, - "curve": [ 0.414, -168.78, 0.478, -284.76, 0.43, 30.09, 0.478, 129.14 ] - }, - { - "time": 0.5, - "x": -283.37, - "y": 167.12, - "curve": [ 0.526, -285.66, 0.548, -280.54, 0.516, 194.84, 0.55, 216.53 ] - }, - { - "time": 0.5667, - "x": -266.98, - "y": 216.12, - "curve": [ 0.581, -256.27, 0.643, -206.54, 0.61, 214.82, 0.65, 145.33 ] - }, - { "time": 0.6667, "x": -176.39, "y": 134.12 } - ] - }, - "rear-leg-target": { - "translate": [ - { "x": 85, "y": -33.59 } - ] - }, - "back-foot-tip": { - "rotate": [ - { - "value": -147.04, - "curve": [ 0.033, -113.4, 0.161, 44.34 ] - }, - { - "time": 0.2333, - "value": 43.48, - "curve": [ 0.24, 43.41, 0.282, 35.72 ] - }, - { - "time": 0.3, - "value": 0.29, - "curve": [ 0.347, 0.28, 0.396, 4.27 ] - }, - { - "time": 0.4, - "curve": [ 0.424, -23.8, 0.525, -181.39 ] - }, - { - "time": 0.5667, - "value": -181.39, - "curve": [ 0.592, -181.39, 0.642, -169.09 ] - }, - { "time": 0.6667, "value": -147.04 } - ] - }, - "front-foot-tip": { - "rotate": [ - { - "value": -0.25, - "curve": [ 0.008, -0.25, 0.056, 1.73 ] - }, - { - "time": 0.0667, - "value": -7.68, - "curve": [ 0.075, -43.13, 0.15, -130.44 ] - }, - { - "time": 0.2, - "value": -130.08, - "curve": [ 0.239, -129.79, 0.272, -126.8 ] - }, - { - "time": 0.3, - "value": -116.24, - "curve": [ 0.333, -103.91, 0.348, -86.1 ] - }, - { - "time": 0.3667, - "value": -71.08, - "curve": [ 0.386, -55.25, 0.415, -32.44 ] - }, - { - "time": 0.4333, - "value": -21.63, - "curve": [ 0.47, -0.01, 0.542, 33.42 ] - }, - { - "time": 0.5667, - "value": 33.2, - "curve": [ 0.622, 32.7, 0.569, 0.64 ] - }, - { "time": 0.6667, "value": -0.25 } - ] - }, - "hair1": { - "rotate": [ - { - "value": -6.81, - "curve": [ 0.087, -6.81, 0.143, -5.75 ] - }, - { - "time": 0.1667, - "value": -4.3, - "curve": [ 0.183, -3.28, 0.209, 2.79 ] - }, - { - "time": 0.2333, - "value": 2.78, - "curve": [ 0.262, 2.77, 0.305, -6.63 ] - }, - { - "time": 0.3333, - "value": -6.64, - "curve": [ 0.419, -6.68, 0.49, -4.84 ] - }, - { - "time": 0.5, - "value": -4.38, - "curve": [ 0.518, -3.56, 0.574, 2.32 ] - }, - { - "time": 0.6, - "value": 2.33, - "curve": [ 0.643, 2.35, 0.633, -6.81 ] - }, - { "time": 0.6667, "value": -6.81 } - ] - }, - "hair2": { - "rotate": [ - { - "value": -6.81, - "curve": [ 0.014, -3.17, 0.109, 43.93 ] - }, - { - "time": 0.1333, - "value": 43.95, - "curve": [ 0.177, 43.97, 0.192, -13.76 ] - }, - { - "time": 0.2667, - "value": -13.83, - "curve": [ 0.302, -13.72, 0.322, -8.86 ] - }, - { - "time": 0.3333, - "value": -6.6, - "curve": [ 0.349, -3.5, 0.436, 41.1 ] - }, - { - "time": 0.4667, - "value": 41.05, - "curve": [ 0.51, 40.99, 0.549, -14.06 ] - }, - { - "time": 0.6, - "value": -14.18, - "curve": [ 0.63, -14.26, 0.656, -9.04 ] - }, - { "time": 0.6667, "value": -6.81 } - ] - }, - "hair3": { - "rotate": [ - { - "value": -6.81, - "curve": [ 0.079, -6.83, 0.108, 0.3 ] - }, - { - "time": 0.1333, - "value": 1.96, - "curve": [ 0.177, 4.89, 0.208, 6.28 ] - }, - { - "time": 0.2333, - "value": 6.29, - "curve": [ 0.313, 6.31, 0.383, 3.49 ] - }, - { - "time": 0.4, - "value": 2.58, - "curve": [ 0.442, 0.28, 0.523, -6.81 ] - }, - { "time": 0.6, "value": -6.81 } - ] - }, - "hair4": { - "rotate": [ - { - "value": -6.81, - "curve": [ 0.011, -4.06, 0.108, 24.92 ] - }, - { - "time": 0.1333, - "value": 24.92, - "curve": [ 0.158, 24.92, 0.208, -10.62 ] - }, - { - "time": 0.2333, - "value": -10.62, - "curve": [ 0.254, -10.62, 0.312, -9.73 ] - }, - { - "time": 0.3333, - "value": -6.4, - "curve": [ 0.356, -2.95, 0.438, 24.93 ] - }, - { - "time": 0.4667, - "value": 24.93, - "curve": [ 0.492, 24.93, 0.575, -9.78 ] - }, - { - "time": 0.6, - "value": -9.78, - "curve": [ 0.617, -9.78, 0.655, -8.63 ] - }, - { "time": 0.6667, "value": -6.81 } - ] - }, - "torso2": { - "rotate": [ - { - "value": 3.5, - "curve": [ 0.07, 3.51, 0.075, 8.69 ] - }, - { - "time": 0.1, - "value": 8.69, - "curve": [ 0.139, 8.69, 0.214, 6.9 ] - }, - { - "time": 0.2333, - "value": 6.33, - "curve": [ 0.266, 5.34, 0.285, 3.48 ] - }, - { - "time": 0.3333, - "value": 3.48, - "curve": [ 0.398, 3.48, 0.408, 8.68 ] - }, - { - "time": 0.4333, - "value": 8.68, - "curve": [ 0.458, 8.68, 0.551, 6.8 ] - }, - { - "time": 0.5667, - "value": 6.26, - "curve": [ 0.598, 5.17, 0.642, 3.49 ] - }, - { "time": 0.6667, "value": 3.5 } - ] - }, - "torso3": { - "rotate": [ - { - "value": 4.52, - "curve": [ 0.067, 4.54, 0.075, -7.27 ] - }, - { - "time": 0.1, - "value": -7.27, - "curve": [ 0.125, -7.27, 0.227, 0.84 ] - }, - { - "time": 0.2333, - "value": 1.24, - "curve": [ 0.254, 2.5, 0.301, 4.51 ] - }, - { - "time": 0.3333, - "value": 4.52, - "curve": [ 0.386, 4.54, 0.408, -7.35 ] - }, - { - "time": 0.4333, - "value": -7.35, - "curve": [ 0.458, -7.35, 0.549, -0.14 ] - }, - { - "time": 0.5667, - "value": 0.95, - "curve": [ 0.586, 2.18, 0.632, 4.54 ] - }, - { "time": 0.6667, "value": 4.52 } - ] - }, - "aim-constraint-target": { - "rotate": [ - { "value": 30.57 } - ] - }, - "rear-foot": { - "rotate": [ - { "value": -6.5 } - ] - }, - "front-foot": { - "rotate": [ - { "value": 4.5 } - ] - }, - "head-control": { - "translate": [ - { - "y": -9.94, - "curve": [ 0.058, 0, 0.175, -15.32, 0.044, -4.19, 0.175, 5 ] - }, - { - "time": 0.2333, - "x": -15.32, - "y": 5, - "curve": [ 0.317, -15.32, 0.429, -9.74, 0.317, 5, 0.382, -31.71 ] - }, - { - "time": 0.4667, - "x": -7.81, - "y": -31.59, - "curve": [ 0.507, -5.76, 0.617, 0, 0.549, -31.47, 0.628, -13.33 ] - }, - { "time": 0.6667, "y": -9.94 } - ] - }, - "front-shoulder": { - "translate": [ - { - "x": -0.74, - "y": 11.22, - "curve": [ 0.061, -0.74, 0.144, 1.17, 0.061, 11.22, 0.143, -17.93 ] - }, - { - "time": 0.2333, - "x": 1.19, - "y": -17.9, - "curve": [ 0.54, 1.25, 0.558, -0.74, 0.545, -17.8, 0.558, 11.22 ] - }, - { "time": 0.6667, "x": -0.74, "y": 11.22 } - ] - }, - "back-shoulder": { - "translate": [ - { - "curve": [ 0.083, 0, 0.25, 0, 0.083, 0, 0.25, 8.93 ] - }, - { - "time": 0.3333, - "y": 8.93, - "curve": [ 0.417, 0, 0.583, 0, 0.417, 8.93, 0.583, 0 ] - }, - { "time": 0.6667 } - ] - } - }, - "ik": { - "front-leg-ik": [ - { "softness": 10, "bendPositive": false }, - { "time": 0.5667, "softness": 14.8, "bendPositive": false }, - { "time": 0.6, "softness": 48.2, "bendPositive": false }, - { "time": 0.6667, "softness": 10, "bendPositive": false } - ], - "rear-leg-ik": [ - { "bendPositive": false }, - { "time": 0.1667, "softness": 22.5, "bendPositive": false }, - { "time": 0.3, "softness": 61.4, "bendPositive": false }, - { "time": 0.6667, "bendPositive": false } - ] - }, - "events": [ - { "time": 0.2333, "name": "footstep" }, - { "time": 0.5667, "name": "footstep" } - ] - }, - "run-to-idle": { - "slots": { - "front-fist": { - "attachment": [ - { "name": "front-fist-open" } - ] - } - }, - "bones": { - "front-foot-target": { - "translate": [ - { - "x": -16.5, - "y": 3.41, - "curve": [ 0.033, -16.5, 0.1, -69.06, 0.033, 3.41, 0.1, 0 ] - }, - { "time": 0.1333, "x": -69.06 } - ] - }, - "hip": { - "translate": [ - { - "x": -28.78, - "y": -72.96, - "curve": [ 0.036, -28.63, 0.2, -10.85, 0.135, -62.35, 0.2, -23.15 ] - }, - { "time": 0.2667, "x": -11.97, "y": -23.15 } - ] - }, - "rear-foot-target": { - "translate": [ - { - "x": 33.15, - "y": 31.61, - "curve": [ 0.017, 33.15, 0.05, 24.41, 0.017, 31.61, 0.041, 20.73 ] - }, - { - "time": 0.0667, - "x": 24.41, - "y": 0.19, - "curve": [ 0.117, 24.41, 0.217, 48.87, 0.117, 0.19, 0.217, 0 ] - }, - { "time": 0.2667, "x": 48.87 } - ] - }, - "front-upper-arm": { - "rotate": [ - { - "value": -80.61, - "curve": [ 0.067, -80.61, 0.2, -60.87 ] - }, - { "time": 0.2667, "value": -60.87 } - ] - }, - "front-bracer": { - "rotate": [ - { - "value": 8.79, - "curve": [ 0.041, 8.79, 0.115, 6.3 ] - }, - { - "time": 0.1667, - "value": 6.41, - "curve": [ 0.201, 6.48, 0.241, 42.46 ] - }, - { "time": 0.2667, "value": 42.46 } - ] - }, - "rear-upper-arm": { - "rotate": [ - { - "value": 55.3, - "curve": [ 0.067, 55.3, 0.2, 39.2 ] - }, - { "time": 0.2667, "value": 39.2 } - ] - }, - "head": { - "rotate": [ - { - "curve": [ 0.05, 0, 0.083, 2.67 ] - }, - { - "time": 0.1333, - "value": 2.67, - "curve": [ 0.15, 2.67, 0.25, -6.75 ] - }, - { "time": 0.2667, "value": -6.75 } - ] - }, - "front-fist": { - "rotate": [ - { - "value": 38.26, - "curve": [ 0.041, 38.26, 0.127, -2.19 ] - }, - { - "time": 0.1667, - "value": -3, - "curve": [ 0.209, -3.84, 0.241, 0 ] - }, - { "time": 0.2667 } - ], - "scale": [ - { - "x": 0.844, - "curve": [ 0.067, 0.844, 0.2, 1, 0.067, 1, 0.2, 1 ] - }, - { "time": 0.2667 } - ] - }, - "rear-bracer": { - "rotate": [ - { - "value": 57.24, - "curve": [ 0.067, 57.24, 0.2, 0 ] - }, - { "time": 0.2667 } - ] - }, - "gun": { - "rotate": [ - { - "value": 2.28, - "curve": [ 0.041, 2.28, 0.105, 15.34 ] - }, - { - "time": 0.1667, - "value": 15.32, - "curve": [ 0.205, 15.31, 0.241, 0 ] - }, - { "time": 0.2667 } - ] - }, - "torso": { - "rotate": [ - { - "value": -12.98, - "curve": [ 0.033, -12.98, 0.103, -14.81 ] - }, - { - "time": 0.1333, - "value": -16.63, - "curve": [ 0.168, -18.69, 0.233, -22.88 ] - }, - { "time": 0.2667, "value": -22.88 } - ], - "scale": [ - { - "x": 0.963, - "y": 1.074, - "curve": [ 0.067, 0.963, 0.132, 1, 0.067, 1.074, 0.132, 1 ] - }, - { "time": 0.2667 } - ] - }, - "neck": { - "rotate": [ - {}, - { "time": 0.2667, "value": 3.78 } - ] - }, - "hair3": { - "rotate": [ - { - "curve": [ 0.033, 0, 0.1, 0.88 ] - }, - { - "time": 0.1333, - "value": 0.88, - "curve": [ 0.167, 0.88, 0.233, 0 ] - }, - { "time": 0.2667 } - ] - }, - "hair4": { - "rotate": [ - { - "curve": [ 0.033, 0, 0.1, 15.97 ] - }, - { - "time": 0.1333, - "value": 15.97, - "curve": [ 0.167, 15.97, 0.233, 0 ] - }, - { "time": 0.2667 } - ] - }, - "hair1": { - "rotate": [ - { - "curve": [ 0.033, 0, 0.1, 10.76 ] - }, - { - "time": 0.1333, - "value": 10.76, - "curve": [ 0.167, 10.76, 0.233, 0 ] - }, - { "time": 0.2667 } - ] - }, - "hair2": { - "rotate": [ - { - "curve": [ 0.014, -2.28, 0.042, -7.84 ] - }, - { - "time": 0.0667, - "value": -7.82, - "curve": [ 0.108, -7.79, 0.166, 6.57 ] - }, - { - "time": 0.2, - "value": 6.67, - "curve": [ 0.222, 6.73, 0.255, 1.98 ] - }, - { "time": 0.2667 } - ] - }, - "torso2": { - "rotate": [ - { - "curve": [ 0.041, 0, 0.107, 3.03 ] - }, - { - "time": 0.1667, - "value": 3.03, - "curve": [ 0.205, 3.03, 0.241, 0 ] - }, - { "time": 0.2667 } - ] - }, - "torso3": { - "rotate": [ - { - "curve": [ 0.049, 0, 0.166, 0.66 ] - }, - { - "time": 0.2, - "value": 0.66, - "curve": [ 0.232, 0.65, 0.249, -2.15 ] - }, - { "time": 0.2667, "value": -2.15 } - ] - }, - "head-control": { - "translate": [ - { "x": -10.12, "y": 8.71 }, - { "time": 0.2667 } - ] - }, - "front-shoulder": { - "translate": [ - { "x": 4.91, "y": 11.54 }, - { "time": 0.2667 } - ] - } - } - }, - "shoot": { - "slots": { - "muzzle": { - "rgba": [ - { "time": 0.1333, "color": "ffffffff" }, - { "time": 0.2, "color": "ffffff62" } - ], - "attachment": [ - { "time": 0.0333, "name": "muzzle01" }, - { "time": 0.0667, "name": "muzzle02" }, - { "time": 0.1, "name": "muzzle03" }, - { "time": 0.1333, "name": "muzzle04" }, - { "time": 0.1667, "name": "muzzle05" }, - { "time": 0.2 } - ] - }, - "muzzle-glow": { - "rgba": [ - { "color": "ff0c0c00" }, - { - "time": 0.0333, - "color": "ffc9adff", - "curve": [ 0.255, 1, 0.273, 1, 0.255, 0.76, 0.273, 0.4, 0.255, 0.65, 0.273, 0.22, 0.255, 1, 0.273, 1 ] - }, - { "time": 0.3, "color": "ff400cff" }, - { "time": 0.6333, "color": "ff0c0c00" } - ], - "attachment": [ - { "name": "muzzle-glow" } - ] - }, - "muzzle-ring": { - "rgba": [ - { - "time": 0.0333, - "color": "d8baffff", - "curve": [ 0.202, 0.85, 0.214, 0.84, 0.202, 0.73, 0.214, 0.73, 0.202, 1, 0.214, 1, 0.202, 1, 0.214, 0.21 ] - }, - { "time": 0.2333, "color": "d7baff00" } - ], - "attachment": [ - { "time": 0.0333, "name": "muzzle-ring" }, - { "time": 0.2333 } - ] - }, - "muzzle-ring2": { - "rgba": [ - { - "time": 0.0333, - "color": "d8baffff", - "curve": [ 0.174, 0.85, 0.184, 0.84, 0.174, 0.73, 0.184, 0.73, 0.174, 1, 0.184, 1, 0.174, 1, 0.184, 0.21 ] - }, - { "time": 0.2, "color": "d7baff00" } - ], - "attachment": [ - { "time": 0.0333, "name": "muzzle-ring" }, - { "time": 0.2 } - ] - }, - "muzzle-ring3": { - "rgba": [ - { - "time": 0.0333, - "color": "d8baffff", - "curve": [ 0.174, 0.85, 0.184, 0.84, 0.174, 0.73, 0.184, 0.73, 0.174, 1, 0.184, 1, 0.174, 1, 0.184, 0.21 ] - }, - { "time": 0.2, "color": "d7baff00" } - ], - "attachment": [ - { "time": 0.0333, "name": "muzzle-ring" }, - { "time": 0.2 } - ] - }, - "muzzle-ring4": { - "rgba": [ - { - "time": 0.0333, - "color": "d8baffff", - "curve": [ 0.174, 0.85, 0.184, 0.84, 0.174, 0.73, 0.184, 0.73, 0.174, 1, 0.184, 1, 0.174, 1, 0.184, 0.21 ] - }, - { "time": 0.2, "color": "d7baff00" } - ], - "attachment": [ - { "time": 0.0333, "name": "muzzle-ring" }, - { "time": 0.2 } - ] - } - }, - "bones": { - "gun": { - "rotate": [ - { - "time": 0.0667, - "curve": [ 0.094, 25.89, 0.112, 45.27 ] - }, - { - "time": 0.1333, - "value": 45.35, - "curve": [ 0.192, 45.28, 0.18, -0.09 ] - }, - { "time": 0.6333 } - ] - }, - "muzzle": { - "translate": [ - { "x": -11.02, "y": 25.16 } - ] - }, - "rear-upper-arm": { - "translate": [ - { - "time": 0.0333, - "curve": [ 0.045, 0.91, 0.083, 3.46, 0.044, 0.86, 0.083, 3.32 ] - }, - { - "time": 0.1, - "x": 3.46, - "y": 3.32, - "curve": [ 0.133, 3.46, 0.176, -0.1, 0.133, 3.32, 0.169, 0 ] - }, - { "time": 0.2333 } - ] - }, - "rear-bracer": { - "translate": [ - { - "time": 0.0333, - "curve": [ 0.075, -3.78, 0.083, -4.36, 0.08, -2.7, 0.083, -2.88 ] - }, - { - "time": 0.1, - "x": -4.36, - "y": -2.88, - "curve": [ 0.133, -4.36, 0.168, 0.18, 0.133, -2.88, 0.167, 0 ] - }, - { "time": 0.2333 } - ] - }, - "gun-tip": { - "translate": [ - {}, - { "time": 0.3, "x": 3.15, "y": 0.39 } - ], - "scale": [ - { "x": 0.366, "y": 0.366 }, - { "time": 0.0333, "x": 1.453, "y": 1.453 }, - { "time": 0.3, "x": 0.366, "y": 0.366 } - ] - }, - "muzzle-ring": { - "translate": [ - { "time": 0.0333 }, - { "time": 0.2333, "x": 64.47 } - ], - "scale": [ - { "time": 0.0333 }, - { "time": 0.2333, "x": 5.951, "y": 5.951 } - ] - }, - "muzzle-ring2": { - "translate": [ - { "time": 0.0333 }, - { "time": 0.2, "x": 172.57 } - ], - "scale": [ - { "time": 0.0333 }, - { "time": 0.2, "x": 4, "y": 4 } - ] - }, - "muzzle-ring3": { - "translate": [ - { "time": 0.0333 }, - { "time": 0.2, "x": 277.17 } - ], - "scale": [ - { "time": 0.0333 }, - { "time": 0.2, "x": 2, "y": 2 } - ] - }, - "muzzle-ring4": { - "translate": [ - { "time": 0.0333 }, - { "time": 0.2, "x": 392.06 } - ] - } - } - }, - "walk": { - "bones": { - "rear-foot-target": { - "rotate": [ - { - "value": -32.82, - "curve": [ 0.035, -42.69, 0.057, -70.49 ] - }, - { - "time": 0.1, - "value": -70.59, - "curve": [ 0.236, -70.78, 0.335, -9.87 ] - }, - { - "time": 0.3667, - "value": -1.56, - "curve": [ 0.393, 5.5, 0.477, 13.96 ] - }, - { - "time": 0.5, - "value": 13.96, - "curve": [ 0.519, 13.96, 0.508, 0.13 ] - }, - { "time": 0.5667, "value": -0.28 }, - { - "time": 0.7333, - "value": -0.28, - "curve": [ 0.827, -0.06, 0.958, -21.07 ] - }, - { "time": 1, "value": -32.82 } - ], - "translate": [ - { - "x": -167.32, - "y": 0.58, - "curve": [ 0.022, -180.55, 0.075, -235.51, 0.045, 0.58, 0.075, 30.12 ] - }, - { - "time": 0.1, - "x": -235.51, - "y": 39.92, - "curve": [ 0.142, -235.51, 0.208, -201.73, 0.138, 54.94, 0.18, 60.78 ] - }, - { - "time": 0.2333, - "x": -176.33, - "y": 61.48, - "curve": [ 0.272, -136.61, 0.321, -45.18, 0.275, 62.02, 0.321, 56.6 ] - }, - { - "time": 0.3667, - "x": 8.44, - "y": 49.67, - "curve": [ 0.403, 51.03, 0.486, 66.86, 0.401, 44.37, 0.48, 23.11 ] - }, - { "time": 0.5, "x": 66.57, "y": 14.22 }, - { "time": 0.5333, "x": 52.58, "y": 0.6 }, - { "time": 1, "x": -167.32, "y": 0.58 } - ] - }, - "front-foot-target": { - "rotate": [ - { - "value": 18.19, - "curve": [ 0.01, 11.17, 0.043, 1.37 ] - }, - { "time": 0.1, "value": 0.47 }, - { - "time": 0.2333, - "value": 0.55, - "curve": [ 0.364, 0.3, 0.515, -80.48 ] - }, - { - "time": 0.7333, - "value": -80.78, - "curve": [ 0.788, -80.38, 0.921, 17.42 ] - }, - { "time": 1, "value": 18.19 } - ], - "translate": [ - { - "x": 139.21, - "y": 22.94, - "curve": [ 0.025, 139.21, 0.069, 111.46, 0.031, 3.25, 0.075, 0.06 ] - }, - { "time": 0.1, "x": 96.69, "y": 0.06 }, - { - "time": 0.5, - "x": -94.87, - "y": -0.03, - "curve": [ 0.518, -106.82, 0.575, -152.56, 0.534, 5.42, 0.557, 38.46 ] - }, - { - "time": 0.6, - "x": -152.56, - "y": 57.05, - "curve": [ 0.633, -152.56, 0.688, -128.05, 0.643, 75.61, 0.7, 84.14 ] - }, - { - "time": 0.7333, - "x": -109.42, - "y": 84.14, - "curve": [ 0.771, -93.91, 0.832, -30.64, 0.787, 84.14, 0.799, 89.65 ] - }, - { - "time": 0.8667, - "x": 17, - "y": 75.25, - "curve": [ 0.903, 66.18, 0.967, 139.21, 0.932, 61.53, 0.967, 44.02 ] - }, - { "time": 1, "x": 139.21, "y": 22.94 } - ] - }, - "hip": { - "rotate": [ - { "value": -4.35 } - ], - "translate": [ - { - "x": -2.86, - "y": -13.86, - "curve": [ 0.025, -2.84, 0.067, -2.82, 0.028, -19.14, 0.054, -24.02 ] - }, - { - "time": 0.1, - "x": -2.61, - "y": -24.19, - "curve": [ 0.143, -2.34, 0.202, -1.79, 0.152, -23.98, 0.213, -14.81 ] - }, - { - "time": 0.2667, - "x": -1.21, - "y": -7.12, - "curve": [ 0.308, -0.86, 0.345, -0.51, 0.306, -1.63, 0.341, 3.15 ] - }, - { - "time": 0.3667, - "x": -0.33, - "y": 3.15, - "curve": [ 0.41, 0.02, 0.458, 0.26, 0.427, 3.3, 0.481, -6.75 ] - }, - { - "time": 0.5, - "x": 0.26, - "y": -10.59, - "curve": [ 0.553, 0.26, 0.559, 0.2, 0.519, -14.41, 0.548, -23.88 ] - }, - { - "time": 0.6, - "x": -0.17, - "y": -23.71, - "curve": [ 0.663, -0.72, 0.798, -2.09, 0.702, -23.36, 0.802, 3.53 ] - }, - { - "time": 0.8667, - "x": -2.46, - "y": 3.48, - "curve": [ 0.901, -2.63, 0.967, -2.87, 0.913, 3.45, 0.967, -7.64 ] - }, - { "time": 1, "x": -2.86, "y": -13.86 } - ] - }, - "front-foot-tip": { - "rotate": [ - { - "value": 28.96, - "curve": [ 0.056, 28.74, 0.049, 19.6 ] - }, - { "time": 0.0667, "value": 1.68 }, - { - "time": 0.5, - "value": -10, - "curve": [ 0.525, -10, 0.592, -54.69 ] - }, - { - "time": 0.6, - "value": -59.66, - "curve": [ 0.623, -74.54, 0.674, -101.78 ] - }, - { - "time": 0.7333, - "value": -101.78, - "curve": [ 0.812, -101.78, 0.855, -84.67 ] - }, - { - "time": 0.8667, - "value": -63.53, - "curve": [ 0.869, -58.38, 0.975, 28.96 ] - }, - { "time": 1, "value": 28.96 } - ] - }, - "torso": { - "rotate": [ - { - "value": -20.72, - "curve": [ 0.025, -20.57, 0.071, -20.04 ] - }, - { - "time": 0.1333, - "value": -20.04, - "curve": [ 0.187, -20.04, 0.285, -21.16 ] - }, - { - "time": 0.3667, - "value": -21.16, - "curve": [ 0.405, -21.16, 0.47, -20.9 ] - }, - { - "time": 0.5, - "value": -20.71, - "curve": [ 0.518, -20.6, 0.582, -20.03 ] - }, - { - "time": 0.6333, - "value": -20.04, - "curve": [ 0.709, -20.05, 0.815, -21.18 ] - }, - { - "time": 0.8667, - "value": -21.18, - "curve": [ 0.908, -21.18, 0.971, -20.93 ] - }, - { "time": 1, "value": -20.72 } - ] - }, - "neck": { - "rotate": [ - { - "value": 17.78, - "curve": [ 0.025, 17.93, 0.071, 18.46 ] - }, - { - "time": 0.1333, - "value": 18.46, - "curve": [ 0.187, 18.46, 0.285, 17.34 ] - }, - { - "time": 0.3667, - "value": 17.34, - "curve": [ 0.405, 17.34, 0.47, 17.6 ] - }, - { - "time": 0.5, - "value": 17.79, - "curve": [ 0.518, 17.9, 0.582, 18.47 ] - }, - { - "time": 0.6333, - "value": 18.46, - "curve": [ 0.709, 18.45, 0.815, 17.32 ] - }, - { - "time": 0.8667, - "value": 17.32, - "curve": [ 0.908, 17.32, 0.971, 17.57 ] - }, - { "time": 1, "value": 17.78 } - ] - }, - "head": { - "rotate": [ - { - "value": -12.23, - "curve": [ 0.061, -12.23, 0.191, -7.45 ] - }, - { - "time": 0.2667, - "value": -7.43, - "curve": [ 0.341, -7.42, 0.421, -12.23 ] - }, - { - "time": 0.5, - "value": -12.23, - "curve": [ 0.567, -12.26, 0.694, -7.46 ] - }, - { - "time": 0.7667, - "value": -7.47, - "curve": [ 0.853, -7.49, 0.943, -12.23 ] - }, - { "time": 1, "value": -12.23 } - ], - "scale": [ - { - "curve": [ 0.039, 1, 0.084, 0.991, 0.039, 1, 0.084, 1.019 ] - }, - { - "time": 0.1333, - "x": 0.991, - "y": 1.019, - "curve": [ 0.205, 0.991, 0.318, 1.019, 0.205, 1.019, 0.337, 0.992 ] - }, - { - "time": 0.4, - "x": 1.019, - "y": 0.992, - "curve": [ 0.456, 1.019, 0.494, 1.001, 0.483, 0.991, 0.493, 0.999 ] - }, - { - "time": 0.5, - "curve": [ 0.508, 0.998, 0.584, 0.991, 0.51, 1.002, 0.584, 1.019 ] - }, - { - "time": 0.6333, - "x": 0.991, - "y": 1.019, - "curve": [ 0.705, 0.991, 0.818, 1.019, 0.705, 1.019, 0.837, 0.992 ] - }, - { - "time": 0.9, - "x": 1.019, - "y": 0.992, - "curve": [ 0.956, 1.019, 0.955, 1, 0.983, 0.991, 0.955, 1 ] - }, - { "time": 1 } - ] - }, - "back-foot-tip": { - "rotate": [ - { "value": 4.09 }, - { "time": 0.0333, "value": 3.05 }, - { - "time": 0.1, - "value": -59.01, - "curve": [ 0.124, -72.97, 0.169, -100.05 ] - }, - { - "time": 0.2333, - "value": -99.71, - "curve": [ 0.326, -99.21, 0.349, -37.4 ] - }, - { - "time": 0.3667, - "value": -17.85, - "curve": [ 0.388, 4.74, 0.451, 32.35 ] - }, - { - "time": 0.5, - "value": 32.4, - "curve": [ 0.537, 32.44, 0.566, 6.43 ] - }, - { "time": 0.5667, "value": 2 }, - { "time": 1, "value": 4.09 } - ] - }, - "front-thigh": { - "translate": [ - { - "x": 17.15, - "y": -0.09, - "curve": [ 0.178, 17.14, 0.295, -4.26, 0.009, -0.09, 0.475, 0.02 ] - }, - { - "time": 0.5, - "x": -4.26, - "y": 0.02, - "curve": [ 0.705, -4.27, 0.848, 17.15, 0.525, 0.02, 0.975, -0.09 ] - }, - { "time": 1, "x": 17.15, "y": -0.09 } - ] - }, - "rear-thigh": { - "translate": [ - { - "x": -17.71, - "y": -4.63, - "curve": [ 0.036, -19.81, 0.043, -20.86, 0.036, -4.63, 0.05, -7.03 ] - }, - { - "time": 0.1, - "x": -20.95, - "y": -7.06, - "curve": [ 0.162, -21.05, 0.4, 7.79, 0.2, -7.13, 0.4, -1.9 ] - }, - { - "time": 0.5, - "x": 7.79, - "y": -1.94, - "curve": [ 0.612, 7.69, 0.875, -10.49, 0.592, -1.97, 0.917, -3.25 ] - }, - { "time": 1, "x": -17.71, "y": -4.63 } - ] - }, - "torso2": { - "rotate": [ - { - "value": 1, - "curve": [ 0.006, 1.2, 0.084, 2.88 ] - }, - { - "time": 0.1333, - "value": 2.88, - "curve": [ 0.205, 2.88, 0.284, -1.17 ] - }, - { - "time": 0.3667, - "value": -1.17, - "curve": [ 0.411, -1.17, 0.481, 0.57 ] - }, - { - "time": 0.5, - "value": 1, - "curve": [ 0.515, 1.33, 0.59, 2.83 ] - }, - { - "time": 0.6333, - "value": 2.85, - "curve": [ 0.683, 2.86, 0.796, -1.2 ] - }, - { - "time": 0.8667, - "value": -1.2, - "curve": [ 0.916, -1.2, 0.984, 0.62 ] - }, - { "time": 1, "value": 1 } - ] - }, - "torso3": { - "rotate": [ - { "value": -1.81 } - ] - }, - "front-upper-arm": { - "rotate": [ - { - "value": -9.51, - "curve": [ 0.021, -13.32, 0.058, -19.4 ] - }, - { - "time": 0.1, - "value": -19.4, - "curve": [ 0.238, -19.69, 0.337, 7.78 ] - }, - { - "time": 0.3667, - "value": 16.2, - "curve": [ 0.399, 25.42, 0.497, 60.19 ] - }, - { - "time": 0.6, - "value": 60.26, - "curve": [ 0.719, 60.13, 0.845, 27.61 ] - }, - { - "time": 0.8667, - "value": 22.45, - "curve": [ 0.892, 16.38, 0.979, -3.27 ] - }, - { "time": 1, "value": -9.51 } - ] - }, - "front-bracer": { - "rotate": [ - { - "value": 13.57, - "curve": [ 0.022, 9.71, 0.147, -3.78 ] - }, - { - "time": 0.3667, - "value": -3.69, - "curve": [ 0.457, -3.66, 0.479, 0.83 ] - }, - { - "time": 0.5, - "value": 4.05, - "curve": [ 0.513, 6.08, 0.635, 30.8 ] - }, - { - "time": 0.8, - "value": 30.92, - "curve": [ 0.974, 31, 0.98, 18.35 ] - }, - { "time": 1, "value": 13.57 } - ] - }, - "front-fist": { - "rotate": [ - { - "value": -28.72, - "curve": [ 0.024, -31.74, 0.176, -43.4 ] - }, - { - "time": 0.3667, - "value": -43.6, - "curve": [ 0.403, -43.65, 0.47, -40.15 ] - }, - { - "time": 0.5, - "value": -35.63, - "curve": [ 0.547, -28.59, 0.624, -4.57 ] - }, - { - "time": 0.7333, - "value": -4.59, - "curve": [ 0.891, -4.62, 0.954, -24.28 ] - }, - { "time": 1, "value": -28.48 } - ] - }, - "rear-upper-arm": { - "rotate": [ - { - "value": 28.28, - "curve": [ 0.034, 30.94, 0.068, 32.05 ] - }, - { - "time": 0.1, - "value": 31.88, - "curve": [ 0.194, 31.01, 0.336, -0.11 ] - }, - { - "time": 0.3667, - "value": -7.11, - "curve": [ 0.421, -19.73, 0.53, -46.21 ] - }, - { - "time": 0.6, - "value": -45.75, - "curve": [ 0.708, -45.03, 0.844, -13.56 ] - }, - { - "time": 0.8667, - "value": -6.48, - "curve": [ 0.909, 6.59, 0.958, 24.21 ] - }, - { "time": 1, "value": 28.28 } - ] - }, - "hair2": { - "rotate": [ - { - "value": -2.79, - "curve": [ 0.074, -2.84, 0.121, 25.08 ] - }, - { - "time": 0.2333, - "value": 24.99, - "curve": [ 0.35, 24.89, 0.427, -2.86 ] - }, - { - "time": 0.5, - "value": -2.8, - "curve": [ 0.575, -2.73, 0.652, 24.5 ] - }, - { - "time": 0.7333, - "value": 24.55, - "curve": [ 0.828, 24.6, 0.932, -2.69 ] - }, - { "time": 1, "value": -2.79 } - ] - }, - "hair4": { - "rotate": [ - { - "value": -6.01, - "curve": [ 0.106, -5.97, 0.151, 18.62 ] - }, - { - "time": 0.2333, - "value": 18.72, - "curve": [ 0.336, 18.7, 0.405, -11.37 ] - }, - { - "time": 0.5, - "value": -11.45, - "curve": [ 0.626, -11.46, 0.629, 18.94 ] - }, - { - "time": 0.7333, - "value": 18.92, - "curve": [ 0.833, 18.92, 0.913, -6.06 ] - }, - { "time": 1, "value": -6.01 } - ], - "translate": [ - { "x": 0.03, "y": 1.35 } - ] - }, - "rear-bracer": { - "rotate": [ - { - "value": 10.06, - "curve": [ 0.044, 11.16, 0.063, 11.49 ] - }, - { - "time": 0.1, - "value": 11.49, - "curve": [ 0.215, 11.49, 0.336, 2.92 ] - }, - { - "time": 0.3667, - "value": 0.84, - "curve": [ 0.416, -2.52, 0.498, -10.84 ] - }, - { - "time": 0.6, - "value": -10.83, - "curve": [ 0.762, -10.71, 0.845, -3.05 ] - }, - { - "time": 0.8667, - "value": -1.34, - "curve": [ 0.917, 2.54, 0.977, 8.81 ] - }, - { "time": 1, "value": 10.06 } - ] - }, - "gun": { - "rotate": [ - { - "value": -14.67, - "curve": [ 0.086, -14.67, 0.202, 8.31 ] - }, - { - "time": 0.2333, - "value": 12.14, - "curve": [ 0.279, 17.71, 0.391, 25.79 ] - }, - { - "time": 0.5, - "value": 25.77, - "curve": [ 0.631, 25.74, 0.694, 4.53 ] - }, - { - "time": 0.7333, - "value": -0.65, - "curve": [ 0.768, -5.21, 0.902, -14.4 ] - }, - { "time": 1, "value": -14.67 } - ] - }, - "front-leg-target": { - "translate": [ - { - "x": -2.83, - "y": -8.48, - "curve": [ 0.008, -2.83, 0.058, 0.09, 0.001, 4.97, 0.058, 6.68 ] - }, - { - "time": 0.0667, - "x": 0.09, - "y": 6.68, - "curve": [ 0.3, 0.09, 0.767, -2.83, 0.3, 6.68, 0.767, -8.48 ] - }, - { "time": 1, "x": -2.83, "y": -8.48 } - ] - }, - "hair1": { - "rotate": [ - { - "curve": [ 0.028, 1.24, 0.016, 3.46 ] - }, - { - "time": 0.1, - "value": 3.45, - "curve": [ 0.159, 3.45, 0.189, 0.23 ] - }, - { - "time": 0.2333, - "value": -2.29, - "curve": [ 0.265, -4.32, 0.305, -5.92 ] - }, - { - "time": 0.3667, - "value": -5.94, - "curve": [ 0.446, -5.96, 0.52, 3.41 ] - }, - { - "time": 0.6, - "value": 3.42, - "curve": [ 0.717, 3.42, 0.772, -5.93 ] - }, - { - "time": 0.8667, - "value": -5.97, - "curve": [ 0.933, -5.99, 0.982, -0.94 ] - }, - { "time": 1 } - ] - }, - "hair3": { - "rotate": [ - { - "curve": [ 0.067, 0, 0.159, -10.48 ] - }, - { - "time": 0.2333, - "value": -10.49, - "curve": [ 0.334, -10.5, 0.439, -0.09 ] - }, - { - "time": 0.5, - "value": -0.09, - "curve": [ 0.569, -0.09, 0.658, -10.75 ] - }, - { - "time": 0.7333, - "value": -10.7, - "curve": [ 0.833, -10.63, 0.947, 0 ] - }, - { "time": 1 } - ] - }, - "gun-tip": { - "rotate": [ - { "time": 0.2333, "value": 0.11 } - ] - }, - "muzzle-ring": { - "rotate": [ - { "time": 0.2333, "value": 0.11 } - ] - }, - "muzzle-ring2": { - "rotate": [ - { "time": 0.2667, "value": 0.11 } - ] - }, - "muzzle-ring3": { - "rotate": [ - { "time": 0.2667, "value": 0.11 } - ] - }, - "muzzle-ring4": { - "rotate": [ - { "time": 0.2667, "value": 0.11 } - ] - }, - "back-shoulder": { - "translate": [ - { - "x": -0.18, - "y": -4.49, - "curve": [ 0.133, -0.18, 0.333, 7.69, 0.133, -4.49, 0.333, 2.77 ] - }, - { - "time": 0.4667, - "x": 7.69, - "y": 2.77, - "curve": [ 0.6, 7.69, 0.858, -0.18, 0.6, 2.77, 0.858, -4.49 ] - }, - { "time": 1, "x": -0.18, "y": -4.49 } - ] - }, - "front-shoulder": { - "translate": [ - { - "x": 1.46, - "y": 9.37, - "curve": [ 0.162, 1.41, 0.333, -1.66, 0.162, 9.37, 0.301, -7.23 ] - }, - { - "time": 0.5, - "x": -1.6, - "y": -7.27, - "curve": [ 0.735, -1.5, 0.847, 1.46, 0.723, -7.31, 0.838, 9.32 ] - }, - { "time": 1, "x": 1.46, "y": 9.37 } - ] - }, - "head-control": { - "translate": [ - { - "x": -6.46, - "y": -8.4, - "curve": [ 0.053, -5.31, 0.167, -3.64, 0.093, -8.4, 0.196, -3.81 ] - }, - { - "time": 0.2333, - "x": -3.64, - "y": -1.32, - "curve": [ 0.309, -3.64, 0.436, -5.84, 0.275, 1.43, 0.38, 10.3 ] - }, - { - "time": 0.5, - "x": -7.03, - "y": 10.29, - "curve": [ 0.538, -7.75, 0.66, -10.54, 0.598, 10.27, 0.694, 1.56 ] - }, - { - "time": 0.7333, - "x": -10.54, - "y": -1.26, - "curve": [ 0.797, -10.54, 0.933, -7.91, 0.768, -3.79, 0.875, -8.4 ] - }, - { "time": 1, "x": -6.46, "y": -8.4 } - ] - } - }, - "ik": { - "front-leg-ik": [ - { - "softness": 25.7, - "bendPositive": false, - "curve": [ 0.008, 1, 0.025, 1, 0.008, 25.7, 0.025, 9.9 ] - }, - { - "time": 0.0333, - "softness": 9.9, - "bendPositive": false, - "curve": [ 0.15, 1, 0.383, 1, 0.15, 9.9, 0.383, 43.2 ] - }, - { - "time": 0.5, - "softness": 43.2, - "bendPositive": false, - "curve": [ 0.625, 1, 0.875, 1, 0.625, 43.2, 0.846, 45.57 ] - }, - { "time": 1, "softness": 25.7, "bendPositive": false } - ], - "rear-leg-ik": [ - { "softness": 5, "bendPositive": false }, - { "time": 0.4333, "softness": 4.9, "bendPositive": false }, - { "time": 0.5, "softness": 28.81, "bendPositive": false }, - { "time": 0.6, "softness": 43.8, "bendPositive": false }, - { "time": 1, "softness": 5, "bendPositive": false } - ] - }, - "events": [ - { "name": "footstep" }, - { "time": 0.5, "name": "footstep" } - ] - } -} -} \ No newline at end of file diff --git a/spine-cocos2dx/example/Resources/common/spineboy.atlas b/spine-cocos2dx/example/Resources/common/spineboy.atlas deleted file mode 100644 index 9243fa20a..000000000 --- a/spine-cocos2dx/example/Resources/common/spineboy.atlas +++ /dev/null @@ -1,98 +0,0 @@ -spineboy.png - size: 1024, 256 - filter: Linear, Linear - scale: 0.5 -crosshair - bounds: 263, 11, 45, 45 -eye-indifferent - bounds: 214, 11, 47, 45 -eye-surprised - bounds: 965, 33, 47, 45 - rotate: 90 -front-bracer - bounds: 2, 5, 29, 40 - rotate: 90 -front-fist-closed - bounds: 505, 3, 38, 41 - rotate: 90 -front-fist-open - bounds: 790, 9, 43, 44 - rotate: 90 -front-foot - bounds: 149, 21, 63, 35 -front-shin - bounds: 505, 43, 41, 92 - rotate: 90 -front-thigh - bounds: 359, 14, 23, 56 - rotate: 90 -front-upper-arm - bounds: 955, 8, 23, 49 - rotate: 90 -goggles - bounds: 180, 58, 131, 83 -gun - bounds: 313, 39, 105, 102 -head - bounds: 29, 83, 136, 149 - rotate: 90 -hoverboard-board - bounds: 180, 143, 246, 76 -hoverboard-thruster - bounds: 790, 57, 30, 32 -hoverglow-small - bounds: 826, 54, 137, 38 -mouth-grind - bounds: 707, 8, 47, 30 -mouth-oooo - bounds: 658, 8, 47, 30 -mouth-smile - bounds: 548, 11, 47, 30 -muzzle-glow - bounds: 997, 194, 25, 25 -muzzle-ring - bounds: 2, 114, 25, 105 -muzzle01 - bounds: 965, 82, 67, 40 - rotate: 90 -muzzle02 - bounds: 953, 151, 68, 42 - rotate: 90 -muzzle03 - bounds: 420, 31, 83, 53 -muzzle04 - bounds: 2, 36, 75, 45 -muzzle05 - bounds: 79, 43, 68, 38 -neck - bounds: 997, 171, 18, 21 -portal-bg - bounds: 563, 86, 133, 133 -portal-flare1 - bounds: 79, 11, 56, 30 -portal-flare2 - bounds: 836, 21, 57, 31 -portal-flare3 - bounds: 895, 22, 58, 30 -portal-shade - bounds: 428, 86, 133, 133 -portal-streaks1 - bounds: 698, 91, 126, 128 -portal-streaks2 - bounds: 826, 94, 125, 125 -rear-bracer - bounds: 756, 2, 28, 36 -rear-foot - bounds: 599, 14, 57, 30 -rear-shin - bounds: 599, 46, 38, 89 - rotate: 90 -rear-thigh - bounds: 310, 9, 28, 47 - rotate: 90 -rear-upper-arm - bounds: 417, 9, 20, 44 - rotate: 90 -torso - bounds: 698, 40, 49, 90 - rotate: 90 diff --git a/spine-cocos2dx/example/Resources/common/spineboy.png b/spine-cocos2dx/example/Resources/common/spineboy.png deleted file mode 100644 index 2e3d2b97d..000000000 Binary files a/spine-cocos2dx/example/Resources/common/spineboy.png and /dev/null differ diff --git a/spine-cocos2dx/example/Resources/common/tank-pro.skel b/spine-cocos2dx/example/Resources/common/tank-pro.skel deleted file mode 100644 index baffcd3c8..000000000 Binary files a/spine-cocos2dx/example/Resources/common/tank-pro.skel and /dev/null differ diff --git a/spine-cocos2dx/example/Resources/common/tank.atlas b/spine-cocos2dx/example/Resources/common/tank.atlas deleted file mode 100644 index e8ae6ef75..000000000 --- a/spine-cocos2dx/example/Resources/common/tank.atlas +++ /dev/null @@ -1,55 +0,0 @@ -tank.png - size: 1024, 1024 - filter: Linear, Linear - scale: 0.5 -antenna - bounds: 804, 452, 11, 152 -cannon - bounds: 2, 322, 466, 29 -cannon-connector - bounds: 647, 423, 56, 68 -ground - bounds: 817, 92, 512, 177 - rotate: 90 -guntower - bounds: 2, 2, 365, 145 -machinegun - bounds: 773, 438, 166, 29 - rotate: 90 -machinegun-mount - bounds: 773, 388, 36, 48 -rock - bounds: 707, 314, 290, 64 - rotate: 90 -smoke-glow - bounds: 647, 372, 50, 50 -smoke-puff01-bg - bounds: 557, 57, 92, 62 -smoke-puff01-fg - bounds: 651, 60, 88, 59 -smoke-puff02-fg - bounds: 463, 85, 92, 62 -smoke-puff03-fg - bounds: 369, 85, 92, 62 -smoke-puff04-fg - bounds: 815, 42, 78, 48 -tank-bottom - bounds: 2, 353, 643, 138 -tank-bottom-shadow - bounds: 2, 149, 646, 171 -tank-top - bounds: 2, 493, 704, 111 -tread - bounds: 647, 355, 48, 15 -tread-inside - bounds: 996, 590, 13, 14 -wheel-big - bounds: 650, 216, 96, 96 -wheel-big-overlay - bounds: 650, 121, 93, 93 -wheel-mid - bounds: 745, 146, 68, 68 -wheel-mid-overlay - bounds: 745, 76, 68, 68 -wheel-small - bounds: 773, 350, 36, 36 diff --git a/spine-cocos2dx/example/Resources/common/tank.png b/spine-cocos2dx/example/Resources/common/tank.png deleted file mode 100644 index bcf2cd0ff..000000000 Binary files a/spine-cocos2dx/example/Resources/common/tank.png and /dev/null differ diff --git a/spine-cocos2dx/example/proj.android/.gitignore b/spine-cocos2dx/example/proj.android/.gitignore deleted file mode 100644 index 233199aa7..000000000 --- a/spine-cocos2dx/example/proj.android/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -.gradle -/local.properties -/.idea/workspace.xml -/.idea/libraries -.DS_Store -/build -/captures -/.externalNativeBuild diff --git a/spine-cocos2dx/example/proj.android/app/.gitignore b/spine-cocos2dx/example/proj.android/app/.gitignore deleted file mode 100644 index 0886f9495..000000000 --- a/spine-cocos2dx/example/proj.android/app/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/build -/.externalNativeBuild diff --git a/spine-cocos2dx/example/proj.android/app/AndroidManifest.xml b/spine-cocos2dx/example/proj.android/app/AndroidManifest.xml deleted file mode 100644 index 68401a615..000000000 --- a/spine-cocos2dx/example/proj.android/app/AndroidManifest.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/spine-cocos2dx/example/proj.android/app/build.gradle b/spine-cocos2dx/example/proj.android/app/build.gradle deleted file mode 100644 index 5b550931a..000000000 --- a/spine-cocos2dx/example/proj.android/app/build.gradle +++ /dev/null @@ -1,99 +0,0 @@ -import org.gradle.internal.os.OperatingSystem - -apply plugin: 'com.android.application' - -android { - compileSdkVersion PROP_COMPILE_SDK_VERSION.toInteger() - - ndkVersion "24.0.8215888" - - defaultConfig { - applicationId "com.esotericsoftware.spine" - minSdkVersion PROP_MIN_SDK_VERSION - targetSdkVersion PROP_TARGET_SDK_VERSION - versionCode 1 - versionName "1.0" - - externalNativeBuild { - cmake { - targets 'MyGame' - arguments "-DCMAKE_FIND_ROOT_PATH=", "-DANDROID_STL=c++_static", "-DANDROID_TOOLCHAIN=clang", "-DANDROID_ARM_NEON=TRUE" - cppFlags "-frtti -fexceptions -fsigned-char" - } - } - - ndk { - abiFilters = [] - abiFilters.addAll(PROP_APP_ABI.split(':').collect{it as String}) - } - } - - sourceSets.main { - java.srcDir "src" - res.srcDir "res" - manifest.srcFile "AndroidManifest.xml" - assets.srcDir "../../Resources" - } - - externalNativeBuild { - cmake { - path "../../CMakeLists.txt" - } - } - - signingConfigs { - - release { - if (project.hasProperty("RELEASE_STORE_FILE")) { - storeFile file(RELEASE_STORE_FILE) - storePassword RELEASE_STORE_PASSWORD - keyAlias RELEASE_KEY_ALIAS - keyPassword RELEASE_KEY_PASSWORD - } - } - } - - buildTypes { - release { - debuggable false - jniDebuggable false - renderscriptDebuggable false - minifyEnabled true - shrinkResources true - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - if (project.hasProperty("RELEASE_STORE_FILE")) { - signingConfig signingConfigs.release - } - } - - debug { - debuggable true - jniDebuggable true - renderscriptDebuggable true - } - } -} - -android.applicationVariants.all { variant -> - def project_root_folder = "${projectDir}/../.." - def dest_assets_folder = "${projectDir}/assets" - - // delete previous files first - delete dest_assets_folder - def targetName = variant.name.capitalize() - def copyTaskName = "copy${targetName}ResourcesToAssets" - - tasks.register(copyTaskName) { - copy { - from "${buildDir}/../../../Resources" - into "${buildDir}/intermediates/assets/${variant.dirName}" - exclude "**/*.gz" - } - } - tasks.getByName("pre${targetName}Build").dependsOn copyTaskName -} - -dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation project(':libcocos2dx') -} diff --git a/spine-cocos2dx/example/proj.android/app/jni/hellocpp/main.cpp b/spine-cocos2dx/example/proj.android/app/jni/hellocpp/main.cpp deleted file mode 100644 index dc1f4d8b1..000000000 --- a/spine-cocos2dx/example/proj.android/app/jni/hellocpp/main.cpp +++ /dev/null @@ -1,42 +0,0 @@ -/**************************************************************************** - Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - - http://www.cocos2d-x.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - ****************************************************************************/ - -#include - -#include -#include - -#include "AppDelegate.h" - -#define LOG_TAG "main" -#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__) - -namespace { - std::unique_ptr appDelegate; -} - -void cocos_android_app_init(JNIEnv *env) { - LOGD("cocos_android_app_init"); - appDelegate.reset(new AppDelegate()); -} diff --git a/spine-cocos2dx/example/proj.android/app/proguard-rules.pro b/spine-cocos2dx/example/proj.android/app/proguard-rules.pro deleted file mode 100644 index 2c062c494..000000000 --- a/spine-cocos2dx/example/proj.android/app/proguard-rules.pro +++ /dev/null @@ -1,37 +0,0 @@ -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in E:\developSoftware\Android\SDK/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the proguardFiles -# directive in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Proguard Cocos2d-x for release --keep public class org.cocos2dx.** { *; } --dontwarn org.cocos2dx.** --keep public class com.chukong.** { *; } --dontwarn com.chukong.** --keep public class com.huawei.android.** { *; } --dontwarn com.huawei.android.** - -# Proguard Apache HTTP for release --keep class org.apache.http.** { *; } --dontwarn org.apache.http.** - -# Proguard Android Webivew for release. uncomment if you are using a webview in cocos2d-x -#-keep public class android.net.http.SslError -#-keep public class android.webkit.WebViewClient - -#-dontwarn android.webkit.WebView -#-dontwarn android.net.http.SslError -#-dontwarn android.webkit.WebViewClient \ No newline at end of file diff --git a/spine-cocos2dx/example/proj.android/app/res/mipmap-hdpi/ic_launcher.png b/spine-cocos2dx/example/proj.android/app/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index 4d3a5a892..000000000 Binary files a/spine-cocos2dx/example/proj.android/app/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/spine-cocos2dx/example/proj.android/app/res/mipmap-mdpi/ic_launcher.png b/spine-cocos2dx/example/proj.android/app/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 8a3d2516d..000000000 Binary files a/spine-cocos2dx/example/proj.android/app/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/spine-cocos2dx/example/proj.android/app/res/mipmap-xhdpi/ic_launcher.png b/spine-cocos2dx/example/proj.android/app/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index 1b6fc7cb9..000000000 Binary files a/spine-cocos2dx/example/proj.android/app/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/spine-cocos2dx/example/proj.android/app/res/mipmap-xxhdpi/ic_launcher.png b/spine-cocos2dx/example/proj.android/app/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 835daecef..000000000 Binary files a/spine-cocos2dx/example/proj.android/app/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/spine-cocos2dx/example/proj.android/app/res/values/strings.xml b/spine-cocos2dx/example/proj.android/app/res/values/strings.xml deleted file mode 100644 index f31c83e20..000000000 --- a/spine-cocos2dx/example/proj.android/app/res/values/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - spine-cocos2dx-example - diff --git a/spine-cocos2dx/example/proj.android/app/src/org/cocos2dx/cpp/AppActivity.java b/spine-cocos2dx/example/proj.android/app/src/org/cocos2dx/cpp/AppActivity.java deleted file mode 100644 index 661fe75fd..000000000 --- a/spine-cocos2dx/example/proj.android/app/src/org/cocos2dx/cpp/AppActivity.java +++ /dev/null @@ -1,58 +0,0 @@ -/**************************************************************************** -Copyright (c) 2015-2016 Chukong Technologies Inc. -Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - -http://www.cocos2d-x.org - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -****************************************************************************/ -package org.cocos2dx.cpp; - -import android.os.Bundle; -import org.cocos2dx.lib.Cocos2dxActivity; -import android.os.Build; -import android.view.WindowManager; -import android.view.WindowManager.LayoutParams; - -public class AppActivity extends Cocos2dxActivity { - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.setEnableVirtualButton(false); - super.onCreate(savedInstanceState); - // Workaround in https://stackoverflow.com/questions/16283079/re-launch-of-activity-on-home-button-but-only-the-first-time/16447508 - if (!isTaskRoot()) { - // Android launched another instance of the root activity into an existing task - // so just quietly finish and go away, dropping the user back into the activity - // at the top of the stack (ie: the last state of this task) - // Don't need to finish it again since it's finished in super.onCreate . - return; - } - // Make sure we're running on Pie or higher to change cutout mode - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { - // Enable rendering into the cutout area - WindowManager.LayoutParams lp = getWindow().getAttributes(); - lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES; - getWindow().setAttributes(lp); - } - // DO OTHER INITIALIZATION BELOW - - } - -} diff --git a/spine-cocos2dx/example/proj.android/build.gradle b/spine-cocos2dx/example/proj.android/build.gradle deleted file mode 100644 index fa9f6fbb5..000000000 --- a/spine-cocos2dx/example/proj.android/build.gradle +++ /dev/null @@ -1,26 +0,0 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. - -buildscript { - repositories { - google() - jcenter() - } - - dependencies { - classpath 'com.android.tools.build:gradle:7.1.2' - - // NOTE: Do not place your application dependencies here; they belong - // in the individual module build.gradle files - } -} - -allprojects { - repositories { - google() - jcenter() - } -} - -task clean(type: Delete) { - delete rootProject.buildDir -} \ No newline at end of file diff --git a/spine-cocos2dx/example/proj.android/gradle.properties b/spine-cocos2dx/example/proj.android/gradle.properties deleted file mode 100644 index ebbe92060..000000000 --- a/spine-cocos2dx/example/proj.android/gradle.properties +++ /dev/null @@ -1,42 +0,0 @@ -# Project-wide Gradle settings. - -# IDE (e.g. Android Studio) users: -# Gradle settings configured through the IDE *will override* -# any settings specified in this file. - -# For more details on how to configure your build environment visit -# http://www.gradle.org/docs/current/userguide/build_environment.html - -# Specifies the JVM arguments used for the daemon process. -# The setting is particularly useful for tweaking memory settings. -# Default value: -Xmx10248m -XX:MaxPermSize=256m -# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 - -# When configured, Gradle will run in incubating parallel mode. -# This option should only be used with decoupled projects. More details, visit -# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects -# org.gradle.parallel=true - -# Android SDK version that will be used as the compile project -PROP_COMPILE_SDK_VERSION=28 - -# Android SDK version that will be used as the earliest version of android this application can run on -PROP_MIN_SDK_VERSION=16 - -# Android SDK version that will be used as the latest version of android this application has been tested on -PROP_TARGET_SDK_VERSION=28 - - -# List of CPU Archtexture to build that application with -# Available architextures (armeabi-v7a | arm64-v8a | x86) -# To build for multiple architexture, use the `:` between them -# Example - PROP_APP_ABI=armeabi-v7a:arm64-v8a:x86 -PROP_APP_ABI=armeabi-v7a - -# uncomment it and fill in sign information for release mode -#RELEASE_STORE_FILE=file path of keystore -#RELEASE_STORE_PASSWORD=password of keystore -#RELEASE_KEY_ALIAS=alias of key -#RELEASE_KEY_PASSWORD=password of key - -android.injected.testOnly=false diff --git a/spine-cocos2dx/example/proj.android/gradle/wrapper/gradle-wrapper.jar b/spine-cocos2dx/example/proj.android/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 8c0fb64a8..000000000 Binary files a/spine-cocos2dx/example/proj.android/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/spine-cocos2dx/example/proj.android/gradle/wrapper/gradle-wrapper.properties b/spine-cocos2dx/example/proj.android/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index f287d9543..000000000 --- a/spine-cocos2dx/example/proj.android/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,7 +0,0 @@ -#Tue Mar 14 17:40:59 CST 2017 -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.1-bin.zip - diff --git a/spine-cocos2dx/example/proj.android/gradlew b/spine-cocos2dx/example/proj.android/gradlew deleted file mode 100755 index 91a7e269e..000000000 --- a/spine-cocos2dx/example/proj.android/gradlew +++ /dev/null @@ -1,164 +0,0 @@ -#!/usr/bin/env bash - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn ( ) { - echo "$*" -} - -die ( ) { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; -esac - -# For Cygwin, ensure paths are in UNIX format before anything is touched. -if $cygwin ; then - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` -fi - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >&- -APP_HOME="`pwd -P`" -cd "$SAVED" >&- - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") -} -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" - -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/spine-cocos2dx/example/proj.android/gradlew.bat b/spine-cocos2dx/example/proj.android/gradlew.bat deleted file mode 100644 index 8a0b282aa..000000000 --- a/spine-cocos2dx/example/proj.android/gradlew.bat +++ /dev/null @@ -1,90 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windowz variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/spine-cocos2dx/example/proj.android/settings.gradle b/spine-cocos2dx/example/proj.android/settings.gradle deleted file mode 100644 index 55ab97d06..000000000 --- a/spine-cocos2dx/example/proj.android/settings.gradle +++ /dev/null @@ -1,4 +0,0 @@ -include ':libcocos2dx' -project(':libcocos2dx').projectDir = new File(settingsDir, '../cocos2d/cocos/platform/android/libcocos2dx') -include ':spine-cocos2dx-example' -project(':spine-cocos2dx-example').projectDir = new File(settingsDir, 'app') diff --git a/spine-cocos2dx/example/proj.ios_mac/ios/AppController.h b/spine-cocos2dx/example/proj.ios_mac/ios/AppController.h deleted file mode 100644 index 709c837d6..000000000 --- a/spine-cocos2dx/example/proj.ios_mac/ios/AppController.h +++ /dev/null @@ -1,36 +0,0 @@ -/**************************************************************************** - Copyright (c) 2010-2013 cocos2d-x.org - Copyright (c) 2013-2016 Chukong Technologies Inc. - Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - - http://www.cocos2d-x.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - ****************************************************************************/ - -#import - -@class RootViewController; - -@interface AppController : NSObject { -} - -@property(nonatomic, readonly) RootViewController *viewController; - -@end diff --git a/spine-cocos2dx/example/proj.ios_mac/ios/AppController.mm b/spine-cocos2dx/example/proj.ios_mac/ios/AppController.mm deleted file mode 100644 index edcd92178..000000000 --- a/spine-cocos2dx/example/proj.ios_mac/ios/AppController.mm +++ /dev/null @@ -1,153 +0,0 @@ -/**************************************************************************** - Copyright (c) 2010-2013 cocos2d-x.org - Copyright (c) 2013-2016 Chukong Technologies Inc. - Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - - http://www.cocos2d-x.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - ****************************************************************************/ - -#import "AppController.h" -#import "cocos2d.h" -#import "AppDelegate.h" -#import "RootViewController.h" - -@implementation AppController - -@synthesize window; - -#pragma mark - -#pragma mark Application lifecycle - -// cocos2d application instance -static AppDelegate s_sharedApplication; - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - - cocos2d::Application *app = cocos2d::Application::getInstance(); - - // Initialize the GLView attributes - app->initGLContextAttrs(); - cocos2d::GLViewImpl::convertAttrs(); - - // Override point for customization after application launch. - - // Add the view controller's view to the window and display. - window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] bounds]]; - - // Use RootViewController to manage CCEAGLView - _viewController = [[RootViewController alloc]init]; - _viewController.wantsFullScreenLayout = YES; - - - // Set RootViewController to window - if ( [[UIDevice currentDevice].systemVersion floatValue] < 6.0) - { - // warning: addSubView doesn't work on iOS6 - [window addSubview: _viewController.view]; - } - else - { - // use this method on ios6 - [window setRootViewController:_viewController]; - } - - [window makeKeyAndVisible]; - - [[UIApplication sharedApplication] setStatusBarHidden:true]; - - //Launching the app with the arguments -NSAllowsDefaultLineBreakStrategy NO to force back to the old behavior. - if ( [[UIDevice currentDevice].systemVersion floatValue] >= 13.0f) - { - [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"NSAllowsDefaultLineBreakStrategy"]; - } - - // IMPORTANT: Setting the GLView should be done after creating the RootViewController - cocos2d::GLView *glview = cocos2d::GLViewImpl::createWithEAGLView((__bridge void *)_viewController.view); - cocos2d::Director::getInstance()->setOpenGLView(glview); - - //run the cocos2d-x game scene - app->run(); - - return YES; -} - - -- (void)applicationWillResignActive:(UIApplication *)application { - /* - Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. - Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. - */ - // We don't need to call this method any more. It will interrupt user defined game pause&resume logic - /* cocos2d::Director::getInstance()->pause(); */ -} - -- (void)applicationDidBecomeActive:(UIApplication *)application { - /* - Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. - */ - // We don't need to call this method any more. It will interrupt user defined game pause&resume logic - /* cocos2d::Director::getInstance()->resume(); */ -} - -- (void)applicationDidEnterBackground:(UIApplication *)application { - /* - Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. - If your application supports background execution, called instead of applicationWillTerminate: when the user quits. - */ - cocos2d::Application::getInstance()->applicationDidEnterBackground(); -} - -- (void)applicationWillEnterForeground:(UIApplication *)application { - /* - Called as part of transition from the background to the inactive state: here you can undo many of the changes made on entering the background. - */ - cocos2d::Application::getInstance()->applicationWillEnterForeground(); -} - -- (void)applicationWillTerminate:(UIApplication *)application { - /* - Called when the application is about to terminate. - See also applicationDidEnterBackground:. - */ -} - - -#pragma mark - -#pragma mark Memory management - -- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application { - /* - Free up as much memory as possible by purging cached data objects that can be recreated (or reloaded from disk) later. - */ -} - - -#if __has_feature(objc_arc) -#else -- (void)dealloc { - [window release]; - [_viewController release]; - [super dealloc]; -} -#endif - - -@end diff --git a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Contents.json b/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 51cbd32fe..000000000 --- a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,157 +0,0 @@ -{ - "images" : [ - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "Icon-20@2x.png", - "scale" : "2x" - }, - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "Icon-20@3x.png", - "scale" : "3x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-29.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-29@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-29@3x.png", - "scale" : "3x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-40@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-40@3x.png", - "scale" : "3x" - }, - { - "size" : "57x57", - "idiom" : "iphone", - "filename" : "Icon-57.png", - "scale" : "1x" - }, - { - "size" : "57x57", - "idiom" : "iphone", - "filename" : "Icon-57@2x.png", - "scale" : "2x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-60@2x.png", - "scale" : "2x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-60@3x.png", - "scale" : "3x" - }, - { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "Icon-20.png", - "scale" : "1x" - }, - { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "Icon-20@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-29.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-29@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-40.png", - "scale" : "1x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-40@2x.png", - "scale" : "2x" - }, - { - "size" : "50x50", - "idiom" : "ipad", - "filename" : "Icon-50.png", - "scale" : "1x" - }, - { - "size" : "50x50", - "idiom" : "ipad", - "filename" : "Icon-50@2x.png", - "scale" : "2x" - }, - { - "size" : "72x72", - "idiom" : "ipad", - "filename" : "Icon-72.png", - "scale" : "1x" - }, - { - "size" : "72x72", - "idiom" : "ipad", - "filename" : "Icon-72@2x.png", - "scale" : "2x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-76.png", - "scale" : "1x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-76@2x.png", - "scale" : "2x" - }, - { - "size" : "83.5x83.5", - "idiom" : "ipad", - "filename" : "Icon-83.5@2x.png", - "scale" : "2x" - }, - { - "idiom" : "ios-marketing", - "size" : "1024x1024", - "scale" : "1x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-20.png b/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-20.png deleted file mode 100644 index b6bf129c5..000000000 Binary files a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-20.png and /dev/null differ diff --git a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-20@2x.png b/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-20@2x.png deleted file mode 100644 index 991e3301e..000000000 Binary files a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-20@2x.png and /dev/null differ diff --git a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-20@3x.png b/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-20@3x.png deleted file mode 100644 index 199de983f..000000000 Binary files a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-20@3x.png and /dev/null differ diff --git a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-29.png b/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-29.png deleted file mode 100644 index b796eb3dd..000000000 Binary files a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-29.png and /dev/null differ diff --git a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-29@2x.png b/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-29@2x.png deleted file mode 100644 index 581580bca..000000000 Binary files a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-29@2x.png and /dev/null differ diff --git a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-29@3x.png b/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-29@3x.png deleted file mode 100644 index 78d0f8ea2..000000000 Binary files a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-29@3x.png and /dev/null differ diff --git a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-40.png b/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-40.png deleted file mode 100644 index 991e3301e..000000000 Binary files a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-40.png and /dev/null differ diff --git a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png b/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png deleted file mode 100644 index d496261a5..000000000 Binary files a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png and /dev/null differ diff --git a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png b/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png deleted file mode 100644 index 199de983f..000000000 Binary files a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png and /dev/null differ diff --git a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-50.png b/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-50.png deleted file mode 100644 index 2a0ae3b1f..000000000 Binary files a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-50.png and /dev/null differ diff --git a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-50@2x.png b/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-50@2x.png deleted file mode 100644 index 5997fb48d..000000000 Binary files a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-50@2x.png and /dev/null differ diff --git a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-57.png b/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-57.png deleted file mode 100644 index c5093c185..000000000 Binary files a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-57.png and /dev/null differ diff --git a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-57@2x.png b/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-57@2x.png deleted file mode 100644 index 2ebec5214..000000000 Binary files a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-57@2x.png and /dev/null differ diff --git a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png b/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png deleted file mode 100644 index 199de983f..000000000 Binary files a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png and /dev/null differ diff --git a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png b/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png deleted file mode 100644 index f2bf82a9d..000000000 Binary files a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png and /dev/null differ diff --git a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-72.png b/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-72.png deleted file mode 100644 index c682370e1..000000000 Binary files a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-72.png and /dev/null differ diff --git a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-72@2x.png b/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-72@2x.png deleted file mode 100644 index f54e73fcd..000000000 Binary files a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-72@2x.png and /dev/null differ diff --git a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-76.png b/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-76.png deleted file mode 100644 index d8a396360..000000000 Binary files a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-76.png and /dev/null differ diff --git a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png b/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png deleted file mode 100644 index e83096093..000000000 Binary files a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png and /dev/null differ diff --git a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-83.5@2x.png b/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-83.5@2x.png deleted file mode 100644 index c083648ac..000000000 Binary files a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-83.5@2x.png and /dev/null differ diff --git a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/Contents.json b/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/Contents.json deleted file mode 100644 index da4a164c9..000000000 --- a/spine-cocos2dx/example/proj.ios_mac/ios/Images.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/spine-cocos2dx/example/proj.ios_mac/ios/Info.plist b/spine-cocos2dx/example/proj.ios_mac/ios/Info.plist deleted file mode 100644 index 739c1700a..000000000 --- a/spine-cocos2dx/example/proj.ios_mac/ios/Info.plist +++ /dev/null @@ -1,45 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleDisplayName - ${PRODUCT_NAME} - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIconFile - Icon-57.png - CFBundleIdentifier - org.cocos2dx.${PRODUCT_NAME} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundleShortVersionString - 1.0 - CFBundlePackageType - APPL - CFBundleSignature - ???? - CFBundleVersion - 1 - LSRequiresIPhoneOS - - UIAppFonts - - UILaunchStoryboardName - LaunchScreen - UIPrerenderedIcon - - UIStatusBarHidden - - UISupportedInterfaceOrientations - - UIInterfaceOrientationLandscapeRight - UIInterfaceOrientationLandscapeLeft - - NSHumanReadableCopyright - Copyright © 2019. All rights reserved. - - diff --git a/spine-cocos2dx/example/proj.ios_mac/ios/LaunchScreen.storyboard b/spine-cocos2dx/example/proj.ios_mac/ios/LaunchScreen.storyboard deleted file mode 100644 index 068bbaa87..000000000 --- a/spine-cocos2dx/example/proj.ios_mac/ios/LaunchScreen.storyboard +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/spine-cocos2dx/example/proj.ios_mac/ios/LaunchScreenBackground.png b/spine-cocos2dx/example/proj.ios_mac/ios/LaunchScreenBackground.png deleted file mode 100644 index 9961b1505..000000000 Binary files a/spine-cocos2dx/example/proj.ios_mac/ios/LaunchScreenBackground.png and /dev/null differ diff --git a/spine-cocos2dx/example/proj.ios_mac/ios/Prefix.pch b/spine-cocos2dx/example/proj.ios_mac/ios/Prefix.pch deleted file mode 100644 index 3da08ad7f..000000000 --- a/spine-cocos2dx/example/proj.ios_mac/ios/Prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -// -// Prefix header for all source files of the 'iphone' target in the 'iphone' project -// - -#ifdef __OBJC__ - #import - #import -#endif - -#ifdef __cplusplus - #include "cocos2d.h" -#endif \ No newline at end of file diff --git a/spine-cocos2dx/example/proj.ios_mac/ios/RootViewController.h b/spine-cocos2dx/example/proj.ios_mac/ios/RootViewController.h deleted file mode 100644 index 5423b9456..000000000 --- a/spine-cocos2dx/example/proj.ios_mac/ios/RootViewController.h +++ /dev/null @@ -1,34 +0,0 @@ -/**************************************************************************** - Copyright (c) 2013 cocos2d-x.org - Copyright (c) 2013-2016 Chukong Technologies Inc. - Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - - http://www.cocos2d-x.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - ****************************************************************************/ - -#import - - -@interface RootViewController : UIViewController { -} -- (BOOL)prefersStatusBarHidden; - -@end diff --git a/spine-cocos2dx/example/proj.ios_mac/ios/RootViewController.mm b/spine-cocos2dx/example/proj.ios_mac/ios/RootViewController.mm deleted file mode 100644 index a4c37af78..000000000 --- a/spine-cocos2dx/example/proj.ios_mac/ios/RootViewController.mm +++ /dev/null @@ -1,122 +0,0 @@ -/**************************************************************************** - Copyright (c) 2013 cocos2d-x.org - Copyright (c) 2013-2016 Chukong Technologies Inc. - Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - - http://www.cocos2d-x.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - ****************************************************************************/ - -#import "RootViewController.h" -#import "cocos2d.h" -#import "platform/ios/CCEAGLView-ios.h" - - -@implementation RootViewController - -/* - // The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { - if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { - // Custom initialization - } - return self; -} -*/ - -// Implement loadView to create a view hierarchy programmatically, without using a nib. -- (void)loadView { - // Initialize the CCEAGLView - CCEAGLView *eaglView = [CCEAGLView viewWithFrame: [UIScreen mainScreen].bounds - pixelFormat: (__bridge NSString *)cocos2d::GLViewImpl::_pixelFormat - depthFormat: cocos2d::GLViewImpl::_depthFormat - preserveBackbuffer: NO - sharegroup: nil - multiSampling: cocos2d::GLViewImpl::_multisamplingCount > 0 ? YES : NO - numberOfSamples: cocos2d::GLViewImpl::_multisamplingCount ]; - - // Enable or disable multiple touches - [eaglView setMultipleTouchEnabled:NO]; - - // Set EAGLView as view of RootViewController - self.view = eaglView; -} - -// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. -- (void)viewDidLoad { - [super viewDidLoad]; -} - -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; -} - -- (void)viewDidDisappear:(BOOL)animated { - [super viewDidDisappear:animated]; -} - - -// For ios6, use supportedInterfaceOrientations & shouldAutorotate instead -#ifdef __IPHONE_6_0 -- (NSUInteger) supportedInterfaceOrientations{ - return UIInterfaceOrientationMaskAllButUpsideDown; -} -#endif - -- (BOOL) shouldAutorotate { - return YES; -} - -- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { - [super didRotateFromInterfaceOrientation:fromInterfaceOrientation]; - - auto glview = cocos2d::Director::getInstance()->getOpenGLView(); - - if (glview) - { - CCEAGLView *eaglview = (__bridge CCEAGLView *)glview->getEAGLView(); - - if (eaglview) - { - CGSize s = CGSizeMake([eaglview getWidth], [eaglview getHeight]); - cocos2d::Application::getInstance()->applicationScreenSizeChanged((int) s.width, (int) s.height); - } - } -} - -//fix not hide status on ios7 -- (BOOL)prefersStatusBarHidden { - return YES; -} - -// Controls the application's preferred home indicator auto-hiding when this view controller is shown. -- (BOOL)prefersHomeIndicatorAutoHidden { - return YES; -} - -- (void)didReceiveMemoryWarning { - // Releases the view if it doesn't have a superview. - [super didReceiveMemoryWarning]; - - // Release any cached data, images, etc that aren't in use. -} - - -@end diff --git a/spine-cocos2dx/example/proj.ios_mac/ios/exportoptions.plist b/spine-cocos2dx/example/proj.ios_mac/ios/exportoptions.plist deleted file mode 100644 index 14a6dc5c2..000000000 --- a/spine-cocos2dx/example/proj.ios_mac/ios/exportoptions.plist +++ /dev/null @@ -1,15 +0,0 @@ - - - - - compileBitcode - - method - development - provisioningProfiles - - Bundle Identifier - Provision Prifile Name - - - diff --git a/spine-cocos2dx/example/proj.ios_mac/ios/main.m b/spine-cocos2dx/example/proj.ios_mac/ios/main.m deleted file mode 100644 index 62178533b..000000000 --- a/spine-cocos2dx/example/proj.ios_mac/ios/main.m +++ /dev/null @@ -1,7 +0,0 @@ -#import - -int main(int argc, char *argv[]) { - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, @"AppController"); - } -} diff --git a/spine-cocos2dx/example/proj.ios_mac/mac/Icon.icns b/spine-cocos2dx/example/proj.ios_mac/mac/Icon.icns deleted file mode 100644 index 2040fc6fe..000000000 Binary files a/spine-cocos2dx/example/proj.ios_mac/mac/Icon.icns and /dev/null differ diff --git a/spine-cocos2dx/example/proj.ios_mac/mac/Info.plist b/spine-cocos2dx/example/proj.ios_mac/mac/Info.plist deleted file mode 100644 index 07cdf7352..000000000 --- a/spine-cocos2dx/example/proj.ios_mac/mac/Info.plist +++ /dev/null @@ -1,45 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleDisplayName - ${PROJECT_NAME} - CFBundleExecutable - ${MACOSX_BUNDLE_EXECUTABLE_NAME} - CFBundleIconFile - Icon-57.png - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PROJECT_NAME} - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - LSRequiresIPhoneOS - - NSHumanReadableCopyright - Copyright © 2019. All rights reserved. - UIAppFonts - - UILaunchStoryboardName - LaunchScreen - UIPrerenderedIcon - - UIStatusBarHidden - - UISupportedInterfaceOrientations - - UIInterfaceOrientationLandscapeRight - UIInterfaceOrientationLandscapeLeft - - - diff --git a/spine-cocos2dx/example/proj.ios_mac/mac/Prefix.pch b/spine-cocos2dx/example/proj.ios_mac/mac/Prefix.pch deleted file mode 100644 index aa71e7664..000000000 --- a/spine-cocos2dx/example/proj.ios_mac/mac/Prefix.pch +++ /dev/null @@ -1,11 +0,0 @@ -// -// Prefix header for all source files of the 'Paralaxer' target in the 'Paralaxer' project -// - -#ifdef __OBJC__ - #import -#endif - -#ifdef __cplusplus - #include "cocos2d.h" -#endif \ No newline at end of file diff --git a/spine-cocos2dx/example/proj.ios_mac/mac/main.cpp b/spine-cocos2dx/example/proj.ios_mac/mac/main.cpp deleted file mode 100644 index 6b617e52e..000000000 --- a/spine-cocos2dx/example/proj.ios_mac/mac/main.cpp +++ /dev/null @@ -1,34 +0,0 @@ -/**************************************************************************** - Copyright (c) 2010 cocos2d-x.org - Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - - http://www.cocos2d-x.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - ****************************************************************************/ - -#include "AppDelegate.h" -#include "cocos2d.h" - -USING_NS_CC; - -int main(int argc, char *argv[]) { - AppDelegate app; - return Application::getInstance()->run(); -} diff --git a/spine-cocos2dx/example/proj.linux/main.cpp b/spine-cocos2dx/example/proj.linux/main.cpp deleted file mode 100644 index 5cb5d8641..000000000 --- a/spine-cocos2dx/example/proj.linux/main.cpp +++ /dev/null @@ -1,38 +0,0 @@ -/**************************************************************************** - Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - - http://www.cocos2d-x.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - ****************************************************************************/ - -#include "../Classes/AppDelegate.h" - -#include -#include -#include -#include - -USING_NS_CC; - -int main(int argc, char **argv) { - // create the application instance - AppDelegate app; - return Application::getInstance()->run(); -} diff --git a/spine-cocos2dx/example/proj.win32/build-cfg.json b/spine-cocos2dx/example/proj.win32/build-cfg.json deleted file mode 100644 index aae4d7a05..000000000 --- a/spine-cocos2dx/example/proj.win32/build-cfg.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "copy_resources": [ - { - "from": "../Resources", - "to": "" - } - ] -} diff --git a/spine-cocos2dx/example/proj.win32/game.rc b/spine-cocos2dx/example/proj.win32/game.rc deleted file mode 100644 index 1e0a2a0da..000000000 --- a/spine-cocos2dx/example/proj.win32/game.rc +++ /dev/null @@ -1,86 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#define APSTUDIO_HIDDEN_SYMBOLS -#include "windows.h" -#undef APSTUDIO_HIDDEN_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -#endif // APSTUDIO_INVOKED - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -GLFW_ICON ICON "res\\game.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,0,1 - PRODUCTVERSION 1,0,0,1 - FILEFLAGSMASK 0x3fL -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x4L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904B0" - BEGIN - VALUE "CompanyName", "\0" - VALUE "FileDescription", "game Module\0" - VALUE "FileVersion", "1, 0, 0, 1\0" - VALUE "InternalName", "game\0" - VALUE "LegalCopyright", "Copyright \0" - VALUE "OriginalFilename", "game.exe\0" - VALUE "ProductName", "game Module\0" - VALUE "ProductVersion", "1, 0, 0, 1\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x0409, 0x04B0 - END -END - -///////////////////////////////////////////////////////////////////////////// -#endif // !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) diff --git a/spine-cocos2dx/example/proj.win32/main.cpp b/spine-cocos2dx/example/proj.win32/main.cpp deleted file mode 100644 index 548051a8b..000000000 --- a/spine-cocos2dx/example/proj.win32/main.cpp +++ /dev/null @@ -1,41 +0,0 @@ -/**************************************************************************** - Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - - http://www.cocos2d-x.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - ****************************************************************************/ - -#include "main.h" -#include "AppDelegate.h" -#include "cocos2d.h" - -USING_NS_CC; - -int WINAPI _tWinMain(HINSTANCE hInstance, - HINSTANCE hPrevInstance, - LPTSTR lpCmdLine, - int nCmdShow) { - UNREFERENCED_PARAMETER(hPrevInstance); - UNREFERENCED_PARAMETER(lpCmdLine); - - // create the application instance - AppDelegate app; - return Application::getInstance()->run(); -} diff --git a/spine-cocos2dx/example/proj.win32/main.h b/spine-cocos2dx/example/proj.win32/main.h deleted file mode 100644 index 8ddc847f3..000000000 --- a/spine-cocos2dx/example/proj.win32/main.h +++ /dev/null @@ -1,37 +0,0 @@ -/**************************************************************************** - Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - - http://www.cocos2d-x.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - ****************************************************************************/ - -#ifndef __MAIN_H__ -#define __MAIN_H__ - -#define WIN32_LEAN_AND_MEAN// Exclude rarely-used stuff from Windows headers - -// Windows Header Files: -#include -#include - -// C RunTime Header Files -#include "platform/CCStdC.h" - -#endif// __MAIN_H__ diff --git a/spine-cocos2dx/example/proj.win32/res/game.ico b/spine-cocos2dx/example/proj.win32/res/game.ico deleted file mode 100644 index feaf932a7..000000000 Binary files a/spine-cocos2dx/example/proj.win32/res/game.ico and /dev/null differ diff --git a/spine-cocos2dx/example/proj.win32/resource.h b/spine-cocos2dx/example/proj.win32/resource.h deleted file mode 100644 index d9f82ae32..000000000 --- a/spine-cocos2dx/example/proj.win32/resource.h +++ /dev/null @@ -1,44 +0,0 @@ -/**************************************************************************** - Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - - http://www.cocos2d-x.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - ****************************************************************************/ - -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by game.RC -// - -#define IDS_PROJNAME 100 -#define IDR_TESTJS 100 - -#define ID_FILE_NEW_WINDOW 32771 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 201 -#define _APS_NEXT_CONTROL_VALUE 1000 -#define _APS_NEXT_SYMED_VALUE 101 -#define _APS_NEXT_COMMAND_VALUE 32775 -#endif -#endif diff --git a/spine-cocos2dx/spine-cocos2dx.cmake b/spine-cocos2dx/spine-cocos2dx.cmake deleted file mode 100644 index beaea02ab..000000000 --- a/spine-cocos2dx/spine-cocos2dx.cmake +++ /dev/null @@ -1,28 +0,0 @@ -set(CMAKE_CXX_STANDARD 11) - -if(EXISTS ${CMAKE_CURRENT_LIST_DIR}/../spine-cpp AND EXISTS ${CMAKE_CURRENT_LIST_DIR}/spine-cocos2dx) - set(SPINE_RUNTIMES_PATH ${CMAKE_CURRENT_LIST_DIR}/..) -endif() - -if (NOT DEFINED SPINE_RUNTIMES_PATH) - message(FATAL_ERROR "Please set SPINE_RUNTIMES_PATH to the directory you cloned https://github.com/esotericsoftware/spine-runtimes to. E.g. cmake .. -DSPINE_RUNTIMES_PATH=/path/to/spine-runtimes") -endif() - -message("-- SPINE_RUNTIMES_PATH:${SPINE_RUNTIMES_PATH}") - -# Disable the built-in cocos2dx Spine support -set(BUILD_EDITOR_SPINE OFF CACHE BOOL "Build editor support for spine" FORCE) - -# Add spine-cpp library -file(GLOB SPINE_CPP_HEADERS "${SPINE_RUNTIMES_PATH}/spine-cpp/spine-cpp/include/**/*.h") -file(GLOB SPINE_CPP_SOURCES "${SPINE_RUNTIMES_PATH}/spine-cpp/spine-cpp/src/**/*.cpp") -add_library(spine-cpp STATIC ${SPINE_CPP_SOURCES} ${SPINE_CPP_HEADERS}) -target_include_directories(spine-cpp PUBLIC "${SPINE_RUNTIMES_PATH}/spine-cpp/spine-cpp/include/") - -# Add spine-cocos2dx library -file(GLOB_RECURSE SPINE_COCOS2DX_HEADERS "${SPINE_RUNTIMES_PATH}/spine-cocos2dx/spine-cocos2dx/src/**/*.h") -file(GLOB_RECURSE SPINE_COCOS2DX_SOURCES "${SPINE_RUNTIMES_PATH}/spine-cocos2dx/spine-cocos2dx/src/**/*.cpp") -add_library(spine-cocos2dx STATIC ${SPINE_COCOS2DX_SOURCES} ${SPINE_COCOS2DX_HEADERS}) -target_include_directories(spine-cocos2dx PUBLIC "${SPINE_RUNTIMES_PATH}/spine-cpp/spine-cpp/include/") -target_include_directories(spine-cocos2dx PUBLIC "${SPINE_RUNTIMES_PATH}/spine-cocos2dx/spine-cocos2dx/src/") -target_link_libraries(spine-cocos2dx PRIVATE cocos2d spine-cpp) \ No newline at end of file diff --git a/spine-cocos2dx/spine-cocos2dx/src/spine/SkeletonAnimation.cpp b/spine-cocos2dx/spine-cocos2dx/src/spine/SkeletonAnimation.cpp deleted file mode 100644 index 49d846d93..000000000 --- a/spine-cocos2dx/spine-cocos2dx/src/spine/SkeletonAnimation.cpp +++ /dev/null @@ -1,327 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#include -#include -#include -#include - -USING_NS_CC; -using std::max; -using std::min; -using std::vector; - -namespace spine { - - typedef struct _TrackEntryListeners { - StartListener startListener; - InterruptListener interruptListener; - EndListener endListener; - DisposeListener disposeListener; - CompleteListener completeListener; - EventListener eventListener; - } _TrackEntryListeners; - - void animationCallback(AnimationState *state, EventType type, TrackEntry *entry, Event *event) { - ((SkeletonAnimation *) state->getRendererObject())->onAnimationStateEvent(entry, type, event); - } - - void trackEntryCallback(AnimationState *state, EventType type, TrackEntry *entry, Event *event) { - ((SkeletonAnimation *) state->getRendererObject())->onTrackEntryEvent(entry, type, event); - if (type == EventType_Dispose) { - if (entry->getRendererObject()) { - delete (spine::_TrackEntryListeners *) entry->getRendererObject(); - entry->setRendererObject(NULL); - } - } - } - - static _TrackEntryListeners *getListeners(TrackEntry *entry) { - if (!entry->getRendererObject()) { - entry->setRendererObject(new spine::_TrackEntryListeners()); - entry->setListener(trackEntryCallback); - } - return (_TrackEntryListeners *) entry->getRendererObject(); - } - - // - - SkeletonAnimation *SkeletonAnimation::createWithData(SkeletonData *skeletonData, bool ownsSkeletonData) { - SkeletonAnimation *node = new SkeletonAnimation(); - node->initWithData(skeletonData, ownsSkeletonData); - node->autorelease(); - return node; - } - - SkeletonAnimation *SkeletonAnimation::createWithJsonFile(const std::string &skeletonJsonFile, Atlas *atlas, float scale) { - SkeletonAnimation *node = new SkeletonAnimation(); - node->initWithJsonFile(skeletonJsonFile, atlas, scale); - node->autorelease(); - return node; - } - - SkeletonAnimation *SkeletonAnimation::createWithJsonFile(const std::string &skeletonJsonFile, const std::string &atlasFile, float scale) { - SkeletonAnimation *node = new SkeletonAnimation(); - node->initWithJsonFile(skeletonJsonFile, atlasFile, scale); - node->autorelease(); - return node; - } - - SkeletonAnimation *SkeletonAnimation::createWithBinaryFile(const std::string &skeletonBinaryFile, Atlas *atlas, float scale) { - SkeletonAnimation *node = new SkeletonAnimation(); - node->initWithBinaryFile(skeletonBinaryFile, atlas, scale); - node->autorelease(); - return node; - } - - SkeletonAnimation *SkeletonAnimation::createWithBinaryFile(const std::string &skeletonBinaryFile, const std::string &atlasFile, float scale) { - SkeletonAnimation *node = new SkeletonAnimation(); - node->initWithBinaryFile(skeletonBinaryFile, atlasFile, scale); - node->autorelease(); - return node; - } - - - void SkeletonAnimation::initialize() { - super::initialize(); - - _ownsAnimationStateData = true; - _updateOnlyIfVisible = false; - _state = new (__FILE__, __LINE__) AnimationState(new (__FILE__, __LINE__) AnimationStateData(_skeleton->getData())); - _state->setRendererObject(this); - _state->setListener(animationCallback); - - _firstDraw = true; - } - - SkeletonAnimation::SkeletonAnimation() : SkeletonRendererCocos2dX() { - } - - SkeletonAnimation::~SkeletonAnimation() { - if (_ownsAnimationStateData) delete _state->getData(); - delete _state; - } - - void SkeletonAnimation::update(float deltaTime) { - if (_updateOnlyIfVisible && !isVisible()) return; - - super::update(deltaTime); - - deltaTime *= _timeScale; - if (_preUpdateListener) _preUpdateListener(this); - _state->update(deltaTime); - _state->apply(*_skeleton); - _skeleton->update(deltaTime); - _skeleton->updateWorldTransform(Physics_Update); - if (_postUpdateListener) _postUpdateListener(this); - } - - void SkeletonAnimation::draw(cocos2d::Renderer *renderer, const cocos2d::Mat4 &transform, uint32_t transformFlags) { - if (_firstDraw) { - _firstDraw = false; - update(0); - } - super::draw(renderer, transform, transformFlags); - } - - void SkeletonAnimation::setAnimationStateData(AnimationStateData *stateData) { - CCASSERT(stateData, "stateData cannot be null."); - - if (_ownsAnimationStateData) delete _state->getData(); - delete _state; - - _ownsAnimationStateData = false; - _state = new (__FILE__, __LINE__) AnimationState(stateData); - _state->setRendererObject(this); - _state->setListener(animationCallback); - } - - void SkeletonAnimation::setMix(const std::string &fromAnimation, const std::string &toAnimation, float duration) { - _state->getData()->setMix(fromAnimation.c_str(), toAnimation.c_str(), duration); - } - - TrackEntry *SkeletonAnimation::setAnimation(int trackIndex, const std::string &name, bool loop) { - Animation *animation = _skeleton->getData()->findAnimation(name.c_str()); - if (!animation) { - log("Spine: Animation not found: %s", name.c_str()); - return 0; - } - return _state->setAnimation(trackIndex, animation, loop); - } - - TrackEntry *SkeletonAnimation::addAnimation(int trackIndex, const std::string &name, bool loop, float delay) { - Animation *animation = _skeleton->getData()->findAnimation(name.c_str()); - if (!animation) { - log("Spine: Animation not found: %s", name.c_str()); - return 0; - } - return _state->addAnimation(trackIndex, animation, loop, delay); - } - - TrackEntry *SkeletonAnimation::setEmptyAnimation(int trackIndex, float mixDuration) { - return _state->setEmptyAnimation(trackIndex, mixDuration); - } - - void SkeletonAnimation::setEmptyAnimations(float mixDuration) { - _state->setEmptyAnimations(mixDuration); - } - - TrackEntry *SkeletonAnimation::addEmptyAnimation(int trackIndex, float mixDuration, float delay) { - return _state->addEmptyAnimation(trackIndex, mixDuration, delay); - } - - Animation *SkeletonAnimation::findAnimation(const std::string &name) const { - return _skeleton->getData()->findAnimation(name.c_str()); - } - - TrackEntry *SkeletonAnimation::getCurrent(int trackIndex) { - return _state->getCurrent(trackIndex); - } - - void SkeletonAnimation::clearTracks() { - _state->clearTracks(); - } - - void SkeletonAnimation::clearTrack(int trackIndex) { - _state->clearTrack(trackIndex); - } - - void SkeletonAnimation::onAnimationStateEvent(TrackEntry *entry, EventType type, Event *event) { - switch (type) { - case EventType_Start: - if (_startListener) _startListener(entry); - break; - case EventType_Interrupt: - if (_interruptListener) _interruptListener(entry); - break; - case EventType_End: - if (_endListener) _endListener(entry); - break; - case EventType_Dispose: - if (_disposeListener) _disposeListener(entry); - break; - case EventType_Complete: - if (_completeListener) _completeListener(entry); - break; - case EventType_Event: - if (_eventListener) _eventListener(entry, event); - break; - } - } - - void SkeletonAnimation::onTrackEntryEvent(TrackEntry *entry, EventType type, Event *event) { - if (!entry->getRendererObject()) return; - _TrackEntryListeners *listeners = (_TrackEntryListeners *) entry->getRendererObject(); - switch (type) { - case EventType_Start: - if (listeners->startListener) listeners->startListener(entry); - break; - case EventType_Interrupt: - if (listeners->interruptListener) listeners->interruptListener(entry); - break; - case EventType_End: - if (listeners->endListener) listeners->endListener(entry); - break; - case EventType_Dispose: - if (listeners->disposeListener) listeners->disposeListener(entry); - break; - case EventType_Complete: - if (listeners->completeListener) listeners->completeListener(entry); - break; - case EventType_Event: - if (listeners->eventListener) listeners->eventListener(entry, event); - break; - } - } - - void SkeletonAnimation::setStartListener(const StartListener &listener) { - _startListener = listener; - } - - void SkeletonAnimation::setInterruptListener(const InterruptListener &listener) { - _interruptListener = listener; - } - - void SkeletonAnimation::setEndListener(const EndListener &listener) { - _endListener = listener; - } - - void SkeletonAnimation::setDisposeListener(const DisposeListener &listener) { - _disposeListener = listener; - } - - void SkeletonAnimation::setCompleteListener(const CompleteListener &listener) { - _completeListener = listener; - } - - void SkeletonAnimation::setEventListener(const EventListener &listener) { - _eventListener = listener; - } - - void SkeletonAnimation::setPreUpdateWorldTransformsListener(const UpdateWorldTransformsListener &listener) { - _preUpdateListener = listener; - } - - void SkeletonAnimation::setPostUpdateWorldTransformsListener(const UpdateWorldTransformsListener &listener) { - _postUpdateListener = listener; - } - - void SkeletonAnimation::setTrackStartListener(TrackEntry *entry, const StartListener &listener) { - getListeners(entry)->startListener = listener; - } - - void SkeletonAnimation::setTrackInterruptListener(TrackEntry *entry, const InterruptListener &listener) { - getListeners(entry)->interruptListener = listener; - } - - void SkeletonAnimation::setTrackEndListener(TrackEntry *entry, const EndListener &listener) { - getListeners(entry)->endListener = listener; - } - - void SkeletonAnimation::setTrackDisposeListener(TrackEntry *entry, const DisposeListener &listener) { - getListeners(entry)->disposeListener = listener; - } - - void SkeletonAnimation::setTrackCompleteListener(TrackEntry *entry, const CompleteListener &listener) { - getListeners(entry)->completeListener = listener; - } - - void SkeletonAnimation::setTrackEventListener(TrackEntry *entry, const EventListener &listener) { - getListeners(entry)->eventListener = listener; - } - - AnimationState *SkeletonAnimation::getState() const { - return _state; - } - - void SkeletonAnimation::setUpdateOnlyIfVisible(bool status) { - _updateOnlyIfVisible = status; - } - -}// namespace spine diff --git a/spine-cocos2dx/spine-cocos2dx/src/spine/SkeletonAnimation.h b/spine-cocos2dx/spine-cocos2dx/src/spine/SkeletonAnimation.h deleted file mode 100644 index 248cf5a97..000000000 --- a/spine-cocos2dx/spine-cocos2dx/src/spine/SkeletonAnimation.h +++ /dev/null @@ -1,134 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#ifndef SPINE_SKELETONANIMATION_H_ -#define SPINE_SKELETONANIMATION_H_ - -#include "cocos2d.h" -#include -#include - -namespace spine { - - class SkeletonAnimation; - - typedef std::function StartListener; - typedef std::function InterruptListener; - typedef std::function EndListener; - typedef std::function DisposeListener; - typedef std::function CompleteListener; - typedef std::function EventListener; - typedef std::function UpdateWorldTransformsListener; - - /** Draws an animated skeleton, providing an AnimationState for applying one or more animations and queuing animations to be - * played later. */ - class SkeletonAnimation : public SkeletonRendererCocos2dX { - public: - CREATE_FUNC(SkeletonAnimation); - static SkeletonAnimation *createWithData(SkeletonData *skeletonData, bool ownsSkeletonData = false); - static SkeletonAnimation *createWithJsonFile(const std::string &skeletonJsonFile, Atlas *atlas, float scale = 1); - static SkeletonAnimation *createWithJsonFile(const std::string &skeletonJsonFile, const std::string &atlasFile, float scale = 1); - static SkeletonAnimation *createWithBinaryFile(const std::string &skeletonBinaryFile, Atlas *atlas, float scale = 1); - static SkeletonAnimation *createWithBinaryFile(const std::string &skeletonBinaryFile, const std::string &atlasFile, float scale = 1); - - // Use createWithJsonFile instead - CC_DEPRECATED_ATTRIBUTE static SkeletonAnimation *createWithFile(const std::string &skeletonJsonFile, Atlas *atlas, float scale = 1) { - return SkeletonAnimation::createWithJsonFile(skeletonJsonFile, atlas, scale); - } - // Use createWithJsonFile instead - CC_DEPRECATED_ATTRIBUTE static SkeletonAnimation *createWithFile(const std::string &skeletonJsonFile, const std::string &atlasFile, - float scale = 1) { - return SkeletonAnimation::createWithJsonFile(skeletonJsonFile, atlasFile, scale); - } - - virtual void update(float deltaTime) override; - virtual void draw(cocos2d::Renderer *renderer, const cocos2d::Mat4 &transform, uint32_t transformFlags) override; - - void setAnimationStateData(AnimationStateData *stateData); - void setMix(const std::string &fromAnimation, const std::string &toAnimation, float duration); - - TrackEntry *setAnimation(int trackIndex, const std::string &name, bool loop); - TrackEntry *addAnimation(int trackIndex, const std::string &name, bool loop, float delay = 0); - TrackEntry *setEmptyAnimation(int trackIndex, float mixDuration); - void setEmptyAnimations(float mixDuration); - TrackEntry *addEmptyAnimation(int trackIndex, float mixDuration, float delay = 0); - Animation *findAnimation(const std::string &name) const; - TrackEntry *getCurrent(int trackIndex = 0); - void clearTracks(); - void clearTrack(int trackIndex = 0); - - void setStartListener(const StartListener &listener); - void setInterruptListener(const InterruptListener &listener); - void setEndListener(const EndListener &listener); - void setDisposeListener(const DisposeListener &listener); - void setCompleteListener(const CompleteListener &listener); - void setEventListener(const EventListener &listener); - void setPreUpdateWorldTransformsListener(const UpdateWorldTransformsListener &listener); - void setPostUpdateWorldTransformsListener(const UpdateWorldTransformsListener &listener); - - void setTrackStartListener(TrackEntry *entry, const StartListener &listener); - void setTrackInterruptListener(TrackEntry *entry, const InterruptListener &listener); - void setTrackEndListener(TrackEntry *entry, const EndListener &listener); - void setTrackDisposeListener(TrackEntry *entry, const DisposeListener &listener); - void setTrackCompleteListener(TrackEntry *entry, const CompleteListener &listener); - void setTrackEventListener(TrackEntry *entry, const EventListener &listener); - - virtual void onAnimationStateEvent(TrackEntry *entry, EventType type, Event *event); - virtual void onTrackEntryEvent(TrackEntry *entry, EventType type, Event *event); - - AnimationState *getState() const; - void setUpdateOnlyIfVisible(bool status); - - CC_CONSTRUCTOR_ACCESS : SkeletonAnimation(); - virtual ~SkeletonAnimation(); - virtual void initialize() override; - - protected: - AnimationState *_state; - - bool _ownsAnimationStateData; - bool _updateOnlyIfVisible; - bool _firstDraw; - - StartListener _startListener; - InterruptListener _interruptListener; - EndListener _endListener; - DisposeListener _disposeListener; - CompleteListener _completeListener; - EventListener _eventListener; - UpdateWorldTransformsListener _preUpdateListener; - UpdateWorldTransformsListener _postUpdateListener; - - private: - typedef SkeletonRendererCocos2dX super; - }; - -}// namespace spine - -#endif /* SPINE_SKELETONANIMATION_H_ */ diff --git a/spine-cocos2dx/spine-cocos2dx/src/spine/SkeletonRendererCocos2dX.cpp b/spine-cocos2dx/spine-cocos2dx/src/spine/SkeletonRendererCocos2dX.cpp deleted file mode 100644 index 305dbc2eb..000000000 --- a/spine-cocos2dx/spine-cocos2dx/src/spine/SkeletonRendererCocos2dX.cpp +++ /dev/null @@ -1,1002 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#include -#include -#include - -USING_NS_CC; - -namespace spine { - - namespace { - Cocos2dTextureLoader textureLoader; - - int computeTotalCoordCount(Skeleton &skeleton, int startSlotIndex, int endSlotIndex); - cocos2d::Rect computeBoundingRect(const float *coords, int vertexCount); - void interleaveCoordinates(float *dst, const float *src, int vertexCount, int dstStride); - BlendFunc makeBlendFunc(BlendMode blendMode, bool premultipliedAlpha); - void transformWorldVertices(float *dstCoord, int coordCount, Skeleton &skeleton, int startSlotIndex, int endSlotIndex); - bool cullRectangle(Renderer *renderer, const Mat4 &transform, const cocos2d::Rect &rect); - Color4B ColorToColor4B(const Color &color); - bool slotIsOutRange(Slot &slot, int startSlotIndex, int endSlotIndex); - bool nothingToDraw(Slot &slot, int startSlotIndex, int endSlotIndex); - }// namespace - -// C Variable length array -#ifdef _MSC_VER -// VLA not supported, use _malloca -#define VLA(type, arr, count) type *arr = static_cast(_malloca(sizeof(type) * count)) -#define VLA_FREE(arr) \ - do { \ - _freea(arr); \ - } while (false) -#else -#define VLA(type, arr, count) type arr[count] -#define VLA_FREE(arr) -#endif - - SkeletonRendererCocos2dX *SkeletonRendererCocos2dX::createWithSkeleton(Skeleton *skeleton, bool ownsSkeleton, bool ownsSkeletonData) { - SkeletonRendererCocos2dX *node = new SkeletonRendererCocos2dX(skeleton, ownsSkeleton, ownsSkeletonData); - node->autorelease(); - return node; - } - - SkeletonRendererCocos2dX *SkeletonRendererCocos2dX::createWithData(SkeletonData *skeletonData, bool ownsSkeletonData) { - SkeletonRendererCocos2dX *node = new SkeletonRendererCocos2dX(skeletonData, ownsSkeletonData); - node->autorelease(); - return node; - } - - SkeletonRendererCocos2dX *SkeletonRendererCocos2dX::createWithFile(const std::string &skeletonDataFile, Atlas *atlas, float scale) { - SkeletonRendererCocos2dX *node = new SkeletonRendererCocos2dX(skeletonDataFile, atlas, scale); - node->autorelease(); - return node; - } - - SkeletonRendererCocos2dX *SkeletonRendererCocos2dX::createWithFile(const std::string &skeletonDataFile, const std::string &atlasFile, - float scale) { - SkeletonRendererCocos2dX *node = new SkeletonRendererCocos2dX(skeletonDataFile, atlasFile, scale); - node->autorelease(); - return node; - } - - void SkeletonRendererCocos2dX::initialize() { - _clipper = new (__FILE__, __LINE__) SkeletonClipping(); - - _blendFunc = BlendFunc::ALPHA_PREMULTIPLIED; - setOpacityModifyRGB(true); - - setTwoColorTint(false); - - _skeleton->setToSetupPose(); - _skeleton->updateWorldTransform(Physics_Update); - } - - void SkeletonRendererCocos2dX::setupGLProgramState(bool twoColorTintEnabled) { -#if COCOS2D_VERSION < 0x00040000 - if (twoColorTintEnabled) { - setGLProgramState(SkeletonTwoColorBatch::getInstance()->getTwoColorTintProgramState()); - return; - } - - setGLProgramState(GLProgramState::getOrCreateWithGLProgramName(GLProgram::SHADER_NAME_POSITION_TEXTURE_COLOR_NO_MVP, nullptr)); -#endif - } - - void SkeletonRendererCocos2dX::setSkeletonData(SkeletonData *skeletonData, bool ownsSkeletonData) { - _skeleton = new (__FILE__, __LINE__) Skeleton(skeletonData); - _ownsSkeletonData = ownsSkeletonData; - } - - SkeletonRendererCocos2dX::SkeletonRendererCocos2dX() - : _atlas(nullptr), _attachmentLoader(nullptr), _timeScale(1), _debugSlots(false), _debugBones(false), _debugMeshes(false), - _debugBoundingRect(false), _startSlotIndex(0), _endSlotIndex(std::numeric_limits::max()) { - } - - SkeletonRendererCocos2dX::SkeletonRendererCocos2dX(Skeleton *skeleton, bool ownsSkeleton, bool ownsSkeletonData, bool ownsAtlas) - : _atlas(nullptr), _attachmentLoader(nullptr), _timeScale(1), _debugSlots(false), _debugBones(false), _debugMeshes(false), - _debugBoundingRect(false), _startSlotIndex(0), _endSlotIndex(std::numeric_limits::max()) { - initWithSkeleton(skeleton, ownsSkeleton, ownsSkeletonData, ownsAtlas); - } - - SkeletonRendererCocos2dX::SkeletonRendererCocos2dX(SkeletonData *skeletonData, bool ownsSkeletonData) - : _atlas(nullptr), _attachmentLoader(nullptr), _timeScale(1), _debugSlots(false), _debugBones(false), _debugMeshes(false), - _debugBoundingRect(false), _startSlotIndex(0), _endSlotIndex(std::numeric_limits::max()) { - initWithData(skeletonData, ownsSkeletonData); - } - - SkeletonRendererCocos2dX::SkeletonRendererCocos2dX(const std::string &skeletonDataFile, Atlas *atlas, float scale) - : _atlas(nullptr), _attachmentLoader(nullptr), _timeScale(1), _debugSlots(false), _debugBones(false), _debugMeshes(false), - _debugBoundingRect(false), _startSlotIndex(0), _endSlotIndex(std::numeric_limits::max()) { - initWithJsonFile(skeletonDataFile, atlas, scale); - } - - SkeletonRendererCocos2dX::SkeletonRendererCocos2dX(const std::string &skeletonDataFile, const std::string &atlasFile, float scale) - : _atlas(nullptr), _attachmentLoader(nullptr), _timeScale(1), _debugSlots(false), _debugBones(false), _debugMeshes(false), - _debugBoundingRect(false), _startSlotIndex(0), _endSlotIndex(std::numeric_limits::max()) { - initWithJsonFile(skeletonDataFile, atlasFile, scale); - } - - SkeletonRendererCocos2dX::~SkeletonRendererCocos2dX() { - if (_ownsSkeletonData) delete _skeleton->getData(); - if (_ownsSkeleton) delete _skeleton; - if (_ownsAtlas && _atlas) delete _atlas; - if (_attachmentLoader) delete _attachmentLoader; - delete _clipper; - } - - void SkeletonRendererCocos2dX::initWithSkeleton(Skeleton *skeleton, bool ownsSkeleton, bool ownsSkeletonData, bool ownsAtlas) { - _skeleton = skeleton; - _ownsSkeleton = ownsSkeleton; - _ownsSkeletonData = ownsSkeletonData; - _ownsAtlas = ownsAtlas; - initialize(); - } - - void SkeletonRendererCocos2dX::initWithData(SkeletonData *skeletonData, bool ownsSkeletonData) { - _ownsSkeleton = true; - setSkeletonData(skeletonData, ownsSkeletonData); - initialize(); - } - - void SkeletonRendererCocos2dX::initWithJsonFile(const std::string &skeletonDataFile, Atlas *atlas, float scale) { - _atlas = atlas; - _attachmentLoader = new (__FILE__, __LINE__) Cocos2dAtlasAttachmentLoader(_atlas); - - SkeletonJson json(_attachmentLoader); - json.setScale(scale); - SkeletonData *skeletonData = json.readSkeletonDataFile(skeletonDataFile.c_str()); - CCASSERT(skeletonData, (!json.getError().isEmpty() ? json.getError().buffer() : "Error reading skeleton data.")); - - _ownsSkeleton = true; - setSkeletonData(skeletonData, true); - - initialize(); - } - - void SkeletonRendererCocos2dX::initWithJsonFile(const std::string &skeletonDataFile, const std::string &atlasFile, float scale) { - _atlas = new (__FILE__, __LINE__) Atlas(atlasFile.c_str(), &textureLoader, true); - CCASSERT(_atlas, "Error reading atlas file."); - - _attachmentLoader = new (__FILE__, __LINE__) Cocos2dAtlasAttachmentLoader(_atlas); - - SkeletonJson json(_attachmentLoader); - json.setScale(scale); - SkeletonData *skeletonData = json.readSkeletonDataFile(skeletonDataFile.c_str()); - CCASSERT(skeletonData, (!json.getError().isEmpty() ? json.getError().buffer() : "Error reading skeleton data.")); - - _ownsSkeleton = true; - _ownsAtlas = true; - setSkeletonData(skeletonData, true); - - initialize(); - } - - void SkeletonRendererCocos2dX::initWithBinaryFile(const std::string &skeletonDataFile, Atlas *atlas, float scale) { - _atlas = atlas; - _attachmentLoader = new (__FILE__, __LINE__) Cocos2dAtlasAttachmentLoader(_atlas); - - SkeletonBinary binary(_attachmentLoader); - binary.setScale(scale); - SkeletonData *skeletonData = binary.readSkeletonDataFile(skeletonDataFile.c_str()); - CCASSERT(skeletonData, (!binary.getError().isEmpty() ? binary.getError().buffer() : "Error reading skeleton data.")); - _ownsSkeleton = true; - setSkeletonData(skeletonData, true); - - initialize(); - } - - void SkeletonRendererCocos2dX::initWithBinaryFile(const std::string &skeletonDataFile, const std::string &atlasFile, float scale) { - _atlas = new (__FILE__, __LINE__) Atlas(atlasFile.c_str(), &textureLoader, true); - CCASSERT(_atlas, "Error reading atlas file."); - - _attachmentLoader = new (__FILE__, __LINE__) Cocos2dAtlasAttachmentLoader(_atlas); - - SkeletonBinary binary(_attachmentLoader); - binary.setScale(scale); - SkeletonData *skeletonData = binary.readSkeletonDataFile(skeletonDataFile.c_str()); - CCASSERT(skeletonData, (!binary.getError().isEmpty() ? binary.getError().buffer() : "Error reading skeleton data.")); - _ownsSkeleton = true; - _ownsAtlas = true; - setSkeletonData(skeletonData, true); - - initialize(); - } - - - void SkeletonRendererCocos2dX::update(float deltaTime) { - Node::update(deltaTime); - } - - void SkeletonRendererCocos2dX::draw(Renderer *renderer, const Mat4 &transform, uint32_t transformFlags) { - // Early exit if the skeleton is invisible. - if (getDisplayedOpacity() == 0 || _skeleton->getColor().a == 0) { - return; - } - - const int coordCount = computeTotalCoordCount(*_skeleton, _startSlotIndex, _endSlotIndex); - if (coordCount == 0) { - return; - } - assert(coordCount % 2 == 0); - - VLA(float, worldCoords, coordCount); - transformWorldVertices(worldCoords, coordCount, *_skeleton, _startSlotIndex, _endSlotIndex); - -#if CC_USE_CULLING - const cocos2d::Rect bb = computeBoundingRect(worldCoords, coordCount / 2); - - if (cullRectangle(renderer, transform, bb)) { - VLA_FREE(worldCoords); - return; - } -#endif - - const float *worldCoordPtr = worldCoords; - SkeletonBatch *batch = SkeletonBatch::getInstance(); - SkeletonTwoColorBatch *twoColorBatch = SkeletonTwoColorBatch::getInstance(); - const bool hasSingleTint = (isTwoColorTint() == false); - - const Color3B displayedColor = getDisplayedColor(); - Color nodeColor; - nodeColor.r = displayedColor.r / 255.f; - nodeColor.g = displayedColor.g / 255.f; - nodeColor.b = displayedColor.b / 255.f; - nodeColor.a = getDisplayedOpacity() / 255.f; - - Color color; - Color darkColor; - const float darkPremultipliedAlpha = _premultipliedAlpha ? 1.f : 0; - TwoColorTrianglesCommand *lastTwoColorTrianglesCommand = nullptr; - for (int i = 0, n = (int) _skeleton->getSlots().size(); i < n; ++i) { - Slot *slot = _skeleton->getDrawOrder()[i]; - - if (nothingToDraw(*slot, _startSlotIndex, _endSlotIndex)) { - _clipper->clipEnd(*slot); - continue; - } - - cocos2d::TrianglesCommand::Triangles triangles; - TwoColorTriangles trianglesTwoColor; - static unsigned short quadIndices[6] = {0, 1, 2, 2, 3, 0}; - Texture2D *texture = nullptr; - - if (slot->getAttachment()->getRTTI().isExactly(RegionAttachment::rtti)) { - RegionAttachment *attachment = static_cast(slot->getAttachment()); - texture = (Texture2D *) ((AtlasRegion *) attachment->getRegion())->page->texture; - - float *dstTriangleVertices = nullptr; - int dstStride = 0;// in floats - if (hasSingleTint) { - triangles.indices = quadIndices; - triangles.indexCount = 6; - triangles.verts = batch->allocateVertices(4); - triangles.vertCount = 4; - assert(triangles.vertCount == 4); - for (int v = 0, i = 0; v < triangles.vertCount; v++, i += 2) { - auto &texCoords = triangles.verts[v].texCoords; - texCoords.u = attachment->getUVs()[i]; - texCoords.v = attachment->getUVs()[i + 1]; - } - dstStride = sizeof(V3F_C4B_T2F) / sizeof(float); - dstTriangleVertices = reinterpret_cast(triangles.verts); - } else { - trianglesTwoColor.indices = quadIndices; - trianglesTwoColor.indexCount = 6; - trianglesTwoColor.verts = twoColorBatch->allocateVertices(4); - trianglesTwoColor.vertCount = 4; - assert(trianglesTwoColor.vertCount == 4); - for (int v = 0, i = 0; v < trianglesTwoColor.vertCount; v++, i += 2) { - auto &texCoords = trianglesTwoColor.verts[v].texCoords; - texCoords.u = attachment->getUVs()[i]; - texCoords.v = attachment->getUVs()[i + 1]; - } - dstTriangleVertices = reinterpret_cast(trianglesTwoColor.verts); - dstStride = sizeof(V3F_C4B_C4B_T2F) / sizeof(float); - } - // Copy world vertices to triangle vertices. - interleaveCoordinates(dstTriangleVertices, worldCoordPtr, 4, dstStride); - worldCoordPtr += 8; - - color = attachment->getColor(); - } else if (slot->getAttachment()->getRTTI().isExactly(MeshAttachment::rtti)) { - MeshAttachment *attachment = (MeshAttachment *) slot->getAttachment(); - texture = (Texture2D *) ((AtlasRegion *) attachment->getRegion())->page->texture; - - float *dstTriangleVertices = nullptr; - int dstStride = 0;// in floats - int dstVertexCount = 0; - if (hasSingleTint) { - triangles.indices = attachment->getTriangles().buffer(); - triangles.indexCount = (unsigned short) attachment->getTriangles().size(); - triangles.verts = batch->allocateVertices((int) attachment->getWorldVerticesLength() / 2); - triangles.vertCount = (int) attachment->getWorldVerticesLength() / 2; - for (int v = 0, i = 0; v < triangles.vertCount; v++, i += 2) { - auto &texCoords = triangles.verts[v].texCoords; - texCoords.u = attachment->getUVs()[i]; - texCoords.v = attachment->getUVs()[i + 1]; - } - dstTriangleVertices = (float *) triangles.verts; - dstStride = sizeof(V3F_C4B_T2F) / sizeof(float); - dstVertexCount = triangles.vertCount; - } else { - trianglesTwoColor.indices = attachment->getTriangles().buffer(); - trianglesTwoColor.indexCount = (unsigned short) attachment->getTriangles().size(); - trianglesTwoColor.verts = twoColorBatch->allocateVertices((int) attachment->getWorldVerticesLength() / 2); - trianglesTwoColor.vertCount = (int) attachment->getWorldVerticesLength() / 2; - for (int v = 0, i = 0; v < trianglesTwoColor.vertCount; v++, i += 2) { - auto &texCoords = trianglesTwoColor.verts[v].texCoords; - texCoords.u = attachment->getUVs()[i]; - texCoords.v = attachment->getUVs()[i + 1]; - } - dstTriangleVertices = (float *) trianglesTwoColor.verts; - dstStride = sizeof(V3F_C4B_C4B_T2F) / sizeof(float); - dstVertexCount = trianglesTwoColor.vertCount; - } - - // Copy world vertices to triangle vertices. - //assert(dstVertexCount * 2 == attachment->super.worldVerticesLength); - interleaveCoordinates(dstTriangleVertices, worldCoordPtr, dstVertexCount, dstStride); - worldCoordPtr += dstVertexCount * 2; - - color = attachment->getColor(); - } else if (slot->getAttachment()->getRTTI().isExactly(ClippingAttachment::rtti)) { - ClippingAttachment *clip = (ClippingAttachment *) slot->getAttachment(); - _clipper->clipStart(*slot, clip); - continue; - } else { - _clipper->clipEnd(*slot); - continue; - } - - if (slot->hasDarkColor()) { - darkColor = slot->getDarkColor(); - } else { - darkColor.r = 0; - darkColor.g = 0; - darkColor.b = 0; - } - darkColor.a = darkPremultipliedAlpha; - - color.a *= nodeColor.a * _skeleton->getColor().a * slot->getColor().a; - if (color.a == 0) { - _clipper->clipEnd(*slot); - continue; - } - color.r *= nodeColor.r * _skeleton->getColor().r * slot->getColor().r; - color.g *= nodeColor.g * _skeleton->getColor().g * slot->getColor().g; - color.b *= nodeColor.b * _skeleton->getColor().b * slot->getColor().b; - if (_premultipliedAlpha) { - color.r *= color.a; - color.g *= color.a; - color.b *= color.a; - } - - const cocos2d::Color4B color4B = ColorToColor4B(color); - const cocos2d::Color4B darkColor4B = ColorToColor4B(darkColor); - const BlendFunc blendFunc = makeBlendFunc(slot->getData().getBlendMode(), texture->hasPremultipliedAlpha()); - _blendFunc = blendFunc; - - if (hasSingleTint) { - if (_clipper->isClipping()) { - _clipper->clipTriangles((float *) &triangles.verts[0].vertices, triangles.indices, triangles.indexCount, - (float *) &triangles.verts[0].texCoords, sizeof(cocos2d::V3F_C4B_T2F) / 4); - batch->deallocateVertices(triangles.vertCount); - - if (_clipper->getClippedTriangles().size() == 0) { - _clipper->clipEnd(*slot); - continue; - } - - triangles.vertCount = (int) _clipper->getClippedVertices().size() / 2; - triangles.verts = batch->allocateVertices(triangles.vertCount); - triangles.indexCount = (int) _clipper->getClippedTriangles().size(); - triangles.indices = batch->allocateIndices(triangles.indexCount); - memcpy(triangles.indices, _clipper->getClippedTriangles().buffer(), - sizeof(unsigned short) * _clipper->getClippedTriangles().size()); - -#if COCOS2D_VERSION < 0x00040000 - cocos2d::TrianglesCommand *batchedTriangles = batch->addCommand(renderer, _globalZOrder, texture, _glProgramState, blendFunc, - triangles, transform, transformFlags); -#else - cocos2d::TrianglesCommand *batchedTriangles = batch->addCommand(renderer, _globalZOrder, texture, _programState, blendFunc, - triangles, transform, transformFlags); -#endif - - const float *verts = _clipper->getClippedVertices().buffer(); - const float *uvs = _clipper->getClippedUVs().buffer(); - V3F_C4B_T2F *vertex = batchedTriangles->getTriangles().verts; - for (int v = 0, vn = batchedTriangles->getTriangles().vertCount, vv = 0; v < vn; ++v, vv += 2, ++vertex) { - vertex->vertices.x = verts[vv]; - vertex->vertices.y = verts[vv + 1]; - vertex->texCoords.u = uvs[vv]; - vertex->texCoords.v = uvs[vv + 1]; - vertex->colors = color4B; - } - } else { - // Not clipping. -#if COCOS2D_VERSION < 0x00040000 - cocos2d::TrianglesCommand *batchedTriangles = batch->addCommand(renderer, _globalZOrder, texture, _glProgramState, blendFunc, - triangles, transform, transformFlags); -#else - cocos2d::TrianglesCommand *batchedTriangles = batch->addCommand(renderer, _globalZOrder, texture, _programState, blendFunc, - triangles, transform, transformFlags); -#endif - V3F_C4B_T2F *vertex = batchedTriangles->getTriangles().verts; - for (int v = 0, vn = batchedTriangles->getTriangles().vertCount; v < vn; ++v, ++vertex) { - vertex->colors = color4B; - } - } - } else { - // Two color tinting. - - if (_clipper->isClipping()) { - _clipper->clipTriangles((float *) &trianglesTwoColor.verts[0].position, trianglesTwoColor.indices, trianglesTwoColor.indexCount, - (float *) &trianglesTwoColor.verts[0].texCoords, sizeof(V3F_C4B_C4B_T2F) / 4); - twoColorBatch->deallocateVertices(trianglesTwoColor.vertCount); - - if (_clipper->getClippedTriangles().size() == 0) { - _clipper->clipEnd(*slot); - continue; - } - - trianglesTwoColor.vertCount = (int) _clipper->getClippedVertices().size() / 2; - trianglesTwoColor.verts = twoColorBatch->allocateVertices(trianglesTwoColor.vertCount); - trianglesTwoColor.indexCount = (int) _clipper->getClippedTriangles().size(); - trianglesTwoColor.indices = twoColorBatch->allocateIndices(trianglesTwoColor.indexCount); - memcpy(trianglesTwoColor.indices, _clipper->getClippedTriangles().buffer(), - sizeof(unsigned short) * _clipper->getClippedTriangles().size()); - - const float *verts = _clipper->getClippedVertices().buffer(); - const float *uvs = _clipper->getClippedUVs().buffer(); - - V3F_C4B_C4B_T2F *vertex = trianglesTwoColor.verts; - for (int v = 0, vn = trianglesTwoColor.vertCount, vv = 0; v < vn; ++v, vv += 2, ++vertex) { - vertex->position.x = verts[vv]; - vertex->position.y = verts[vv + 1]; - vertex->texCoords.u = uvs[vv]; - vertex->texCoords.v = uvs[vv + 1]; - vertex->color = color4B; - vertex->color2 = darkColor4B; - } - -#if COCOS2D_VERSION < 0x00040000 - TwoColorTrianglesCommand *batchedTriangles = lastTwoColorTrianglesCommand = twoColorBatch->addCommand(renderer, _globalZOrder, - texture->getName(), - _glProgramState, blendFunc, - trianglesTwoColor, - transform, transformFlags); -#else - lastTwoColorTrianglesCommand = twoColorBatch->addCommand(renderer, _globalZOrder, texture, _programState, blendFunc, - trianglesTwoColor, transform, transformFlags); -#endif - } else { - V3F_C4B_C4B_T2F *vertex = trianglesTwoColor.verts; - for (int v = 0, vn = trianglesTwoColor.vertCount; v < vn; ++v, ++vertex) { - vertex->color = color4B; - vertex->color2 = darkColor4B; - } -#if COCOS2D_VERSION < 0x00040000 - lastTwoColorTrianglesCommand = twoColorBatch->addCommand(renderer, _globalZOrder, texture->getName(), _glProgramState, blendFunc, - trianglesTwoColor, transform, transformFlags); -#else - lastTwoColorTrianglesCommand = twoColorBatch->addCommand(renderer, _globalZOrder, texture, _programState, blendFunc, - trianglesTwoColor, transform, transformFlags); -#endif - } - } - _clipper->clipEnd(*slot); - } - _clipper->clipEnd(); - - if (lastTwoColorTrianglesCommand) { - Node *parent = this->getParent(); - - // We need to decide if we can postpone flushing the current batch. We can postpone if the next sibling node is a two color - // tinted skeleton with the same global-z. - // The parent->getChildrenCount() > 100 check is a hack as checking for a sibling is an O(n) operation, and if all children - // of this nodes parent are skeletons, we are in O(n2) territory. - if (!parent || parent->getChildrenCount() > 100 || getChildrenCount() != 0) { - lastTwoColorTrianglesCommand->setForceFlush(true); - } else { - const cocos2d::Vector &children = parent->getChildren(); - Node *sibling = nullptr; - for (ssize_t i = 0; i < children.size(); i++) { - if (children.at(i) == this) { - if (i < children.size() - 1) { - sibling = children.at(i + 1); - break; - } - } - } - if (!sibling) { - lastTwoColorTrianglesCommand->setForceFlush(true); - } else { - SkeletonRendererCocos2dX *siblingSkeleton = dynamic_cast(sibling); - if (!siblingSkeleton || // flush is next sibling isn't a SkeletonRenderer - !siblingSkeleton->isTwoColorTint() ||// flush if next sibling isn't two color tinted - !siblingSkeleton->isVisible() || // flush if next sibling is two color tinted but not visible - (siblingSkeleton->getGlobalZOrder() != - this->getGlobalZOrder())) {// flush if next sibling is two color tinted but z-order differs - lastTwoColorTrianglesCommand->setForceFlush(true); - } - } - } - } - - if (_debugBoundingRect || _debugSlots || _debugBones || _debugMeshes) { - drawDebug(renderer, transform, transformFlags); - } - - VLA_FREE(worldCoords); - } - - - void SkeletonRendererCocos2dX::drawDebug(Renderer *renderer, const Mat4 &transform, uint32_t transformFlags) { - -#if !defined(USE_MATRIX_STACK_PROJECTION_ONLY) - Director *director = Director::getInstance(); - director->pushMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW); - director->loadMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW, transform); -#endif - - DrawNode *drawNode = DrawNode::create(); - drawNode->setGlobalZOrder(getGlobalZOrder()); - - // Draw bounding rectangle - if (_debugBoundingRect) { -#if COCOS2D_VERSION < 0x00040000 - glLineWidth(2); -#else - drawNode->setLineWidth(2.0f); -#endif - const cocos2d::Rect brect = getBoundingBox(); - const Vec2 points[4] = {brect.origin, - {brect.origin.x + brect.size.width, brect.origin.y}, - {brect.origin.x + brect.size.width, brect.origin.y + brect.size.height}, - {brect.origin.x, brect.origin.y + brect.size.height}}; - drawNode->drawPoly(points, 4, true, Color4F::GREEN); - } - - if (_debugSlots) { - // Slots. - // DrawPrimitives::setDrawColor4B(0, 0, 255, 255); -#if COCOS2D_VERSION < 0x00040000 - glLineWidth(2); -#else - drawNode->setLineWidth(2.0f); -#endif - V3F_C4B_T2F_Quad quad; - for (int i = 0, n = (int) _skeleton->getSlots().size(); i < n; i++) { - Slot *slot = _skeleton->getDrawOrder()[i]; - - if (!slot->getBone().isActive()) continue; - if (!slot->getAttachment() || !slot->getAttachment()->getRTTI().isExactly(RegionAttachment::rtti)) continue; - - if (slotIsOutRange(*slot, _startSlotIndex, _endSlotIndex)) { - continue; - } - - RegionAttachment *attachment = (RegionAttachment *) slot->getAttachment(); - float worldVertices[8]; - attachment->computeWorldVertices(*slot, worldVertices, 0, 2); - const Vec2 points[4] = {{worldVertices[0], worldVertices[1]}, - {worldVertices[2], worldVertices[3]}, - {worldVertices[4], worldVertices[5]}, - {worldVertices[6], worldVertices[7]}}; - drawNode->drawPoly(points, 4, true, Color4F::BLUE); - } - } - - if (_debugBones) { - // Bone lengths. -#if COCOS2D_VERSION < 0x00040000 - glLineWidth(2); -#else - drawNode->setLineWidth(2.0f); -#endif - for (int i = 0, n = (int) _skeleton->getBones().size(); i < n; i++) { - Bone *bone = _skeleton->getBones()[i]; - if (!bone->isActive()) continue; - float x = bone->getData().getLength() * bone->getA() + bone->getWorldX(); - float y = bone->getData().getLength() * bone->getC() + bone->getWorldY(); - drawNode->drawLine(Vec2(bone->getWorldX(), bone->getWorldY()), Vec2(x, y), Color4F::RED); - } - // Bone origins. - auto color = Color4F::BLUE;// Root bone is blue. - for (int i = 0, n = (int) _skeleton->getBones().size(); i < n; i++) { - Bone *bone = _skeleton->getBones()[i]; - if (!bone->isActive()) continue; - drawNode->drawPoint(Vec2(bone->getWorldX(), bone->getWorldY()), 4, color); - if (i == 0) color = Color4F::GREEN; - } - } - - if (_debugMeshes) { - // Meshes. -#if COCOS2D_VERSION < 0x00040000 - glLineWidth(2); -#else - drawNode->setLineWidth(2.0f); -#endif - for (int i = 0, n = (int) _skeleton->getSlots().size(); i < n; ++i) { - Slot *slot = _skeleton->getDrawOrder()[i]; - if (!slot->getBone().isActive()) continue; - if (!slot->getAttachment() || !slot->getAttachment()->getRTTI().isExactly(MeshAttachment::rtti)) continue; - MeshAttachment *const mesh = static_cast(slot->getAttachment()); - VLA(float, worldCoord, mesh->getWorldVerticesLength()); - mesh->computeWorldVertices(*slot, 0, mesh->getWorldVerticesLength(), worldCoord, 0, 2); - for (size_t t = 0; t < mesh->getTriangles().size(); t += 3) { - // Fetch triangle indices - const int idx0 = mesh->getTriangles()[t + 0]; - const int idx1 = mesh->getTriangles()[t + 1]; - const int idx2 = mesh->getTriangles()[t + 2]; - const Vec2 v[3] = {worldCoord + (idx0 * 2), worldCoord + (idx1 * 2), worldCoord + (idx2 * 2)}; - drawNode->drawPoly(v, 3, true, Color4F::YELLOW); - } - VLA_FREE(worldCoord); - } - } - - drawNode->draw(renderer, transform, transformFlags); -#if !defined(USE_MATRIX_STACK_PROJECTION_ONLY) - director->popMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW); -#endif - } - - cocos2d::Rect SkeletonRendererCocos2dX::getBoundingBox() const { - const int coordCount = computeTotalCoordCount(*_skeleton, _startSlotIndex, _endSlotIndex); - if (coordCount == 0) return {0, 0, 0, 0}; - VLA(float, worldCoords, coordCount); - transformWorldVertices(worldCoords, coordCount, *_skeleton, _startSlotIndex, _endSlotIndex); - const cocos2d::Rect bb = computeBoundingRect(worldCoords, coordCount / 2); - VLA_FREE(worldCoords); - return bb; - } - - // --- Convenience methods for Skeleton_* functions. - - void SkeletonRendererCocos2dX::updateWorldTransform(Physics physics) { - _skeleton->updateWorldTransform(physics); - } - - void SkeletonRendererCocos2dX::setToSetupPose() { - _skeleton->setToSetupPose(); - } - void SkeletonRendererCocos2dX::setBonesToSetupPose() { - _skeleton->setBonesToSetupPose(); - } - void SkeletonRendererCocos2dX::setSlotsToSetupPose() { - _skeleton->setSlotsToSetupPose(); - } - - Bone *SkeletonRendererCocos2dX::findBone(const std::string &boneName) const { - return _skeleton->findBone(boneName.c_str()); - } - - Slot *SkeletonRendererCocos2dX::findSlot(const std::string &slotName) const { - return _skeleton->findSlot(slotName.c_str()); - } - - void SkeletonRendererCocos2dX::setSkin(const std::string &skinName) { - _skeleton->setSkin(skinName.empty() ? 0 : skinName.c_str()); - } - void SkeletonRendererCocos2dX::setSkin(const char *skinName) { - _skeleton->setSkin(skinName); - } - - Attachment *SkeletonRendererCocos2dX::getAttachment(const std::string &slotName, const std::string &attachmentName) const { - return _skeleton->getAttachment(slotName.c_str(), attachmentName.c_str()); - } - bool SkeletonRendererCocos2dX::setAttachment(const std::string &slotName, const std::string &attachmentName) { - bool result = _skeleton->getAttachment(slotName.c_str(), attachmentName.empty() ? 0 : attachmentName.c_str()) ? true : false; - _skeleton->setAttachment(slotName.c_str(), attachmentName.empty() ? 0 : attachmentName.c_str()); - return result; - } - bool SkeletonRendererCocos2dX::setAttachment(const std::string &slotName, const char *attachmentName) { - bool result = _skeleton->getAttachment(slotName.c_str(), attachmentName) ? true : false; - _skeleton->setAttachment(slotName.c_str(), attachmentName); - return result; - } - - void SkeletonRendererCocos2dX::setTwoColorTint(bool enabled) { -#if COCOS2D_VERSION >= 0x00040000 - _twoColorTint = enabled; -#endif - setupGLProgramState(enabled); - } - - bool SkeletonRendererCocos2dX::isTwoColorTint() { -#if COCOS2D_VERSION < 0x00040000 - return getGLProgramState() == SkeletonTwoColorBatch::getInstance()->getTwoColorTintProgramState(); -#else - return _twoColorTint; -#endif - } - - void SkeletonRendererCocos2dX::setSlotsRange(int startSlotIndex, int endSlotIndex) { - _startSlotIndex = startSlotIndex == -1 ? 0 : startSlotIndex; - _endSlotIndex = endSlotIndex == -1 ? std::numeric_limits::max() : endSlotIndex; - } - - Skeleton *SkeletonRendererCocos2dX::getSkeleton() const { - return _skeleton; - } - - void SkeletonRendererCocos2dX::setTimeScale(float scale) { - _timeScale = scale; - } - float SkeletonRendererCocos2dX::getTimeScale() const { - return _timeScale; - } - - void SkeletonRendererCocos2dX::setDebugSlotsEnabled(bool enabled) { - _debugSlots = enabled; - } - bool SkeletonRendererCocos2dX::getDebugSlotsEnabled() const { - return _debugSlots; - } - - void SkeletonRendererCocos2dX::setDebugBonesEnabled(bool enabled) { - _debugBones = enabled; - } - bool SkeletonRendererCocos2dX::getDebugBonesEnabled() const { - return _debugBones; - } - - void SkeletonRendererCocos2dX::setDebugMeshesEnabled(bool enabled) { - _debugMeshes = enabled; - } - bool SkeletonRendererCocos2dX::getDebugMeshesEnabled() const { - return _debugMeshes; - } - - void SkeletonRendererCocos2dX::setDebugBoundingRectEnabled(bool enabled) { - _debugBoundingRect = enabled; - } - - bool SkeletonRendererCocos2dX::getDebugBoundingRectEnabled() const { - return _debugBoundingRect; - } - - void SkeletonRendererCocos2dX::onEnter() { -#if CC_ENABLE_SCRIPT_BINDING && COCOS2D_VERSION < 0x00040000 - if (_scriptType == kScriptTypeJavascript && ScriptEngineManager::sendNodeEventToJSExtended(this, kNodeOnEnter)) return; -#endif - Node::onEnter(); - scheduleUpdate(); - } - - void SkeletonRendererCocos2dX::onExit() { -#if CC_ENABLE_SCRIPT_BINDING && COCOS2D_VERSION < 0x00040000 - if (_scriptType == kScriptTypeJavascript && ScriptEngineManager::sendNodeEventToJSExtended(this, kNodeOnExit)) return; -#endif - Node::onExit(); - unscheduleUpdate(); - } - - // --- CCBlendProtocol - - const BlendFunc &SkeletonRendererCocos2dX::getBlendFunc() const { - return _blendFunc; - } - - void SkeletonRendererCocos2dX::setBlendFunc(const BlendFunc &blendFunc) { - _blendFunc = blendFunc; - } - - void SkeletonRendererCocos2dX::setOpacityModifyRGB(bool value) { - _premultipliedAlpha = value; - } - - bool SkeletonRendererCocos2dX::isOpacityModifyRGB() const { - return _premultipliedAlpha; - } - - namespace { - cocos2d::Rect computeBoundingRect(const float *coords, int vertexCount) { - assert(coords); - assert(vertexCount > 0); - - const float *v = coords; - float minX = v[0]; - float minY = v[1]; - float maxX = minX; - float maxY = minY; - for (int i = 1; i < vertexCount; ++i) { - v += 2; - float x = v[0]; - float y = v[1]; - minX = std::min(minX, x); - minY = std::min(minY, y); - maxX = std::max(maxX, x); - maxY = std::max(maxY, y); - } - return {minX, minY, maxX - minX, maxY - minY}; - } - - bool slotIsOutRange(Slot &slot, int startSlotIndex, int endSlotIndex) { - const int index = slot.getData().getIndex(); - return startSlotIndex > index || endSlotIndex < index; - } - - bool nothingToDraw(Slot &slot, int startSlotIndex, int endSlotIndex) { - Attachment *attachment = slot.getAttachment(); - if (!attachment || slotIsOutRange(slot, startSlotIndex, endSlotIndex) || !slot.getBone().isActive()) return true; - const auto &attachmentRTTI = attachment->getRTTI(); - if (attachmentRTTI.isExactly(ClippingAttachment::rtti)) return false; - if (slot.getColor().a == 0) return true; - if (attachmentRTTI.isExactly(RegionAttachment::rtti)) { - if (static_cast(attachment)->getColor().a == 0) return true; - } else if (attachmentRTTI.isExactly(MeshAttachment::rtti)) { - if (static_cast(attachment)->getColor().a == 0) return true; - } - return false; - } - - int computeTotalCoordCount(Skeleton &skeleton, int startSlotIndex, int endSlotIndex) { - int coordCount = 0; - for (size_t i = 0; i < skeleton.getSlots().size(); ++i) { - Slot &slot = *skeleton.getSlots()[i]; - if (nothingToDraw(slot, startSlotIndex, endSlotIndex)) { - continue; - } - Attachment *const attachment = slot.getAttachment(); - if (attachment->getRTTI().isExactly(RegionAttachment::rtti)) { - coordCount += 8; - } else if (attachment->getRTTI().isExactly(MeshAttachment::rtti)) { - MeshAttachment *const mesh = static_cast(attachment); - coordCount += mesh->getWorldVerticesLength(); - } - } - return coordCount; - } - - - void transformWorldVertices(float *dstCoord, int coordCount, Skeleton &skeleton, int startSlotIndex, int endSlotIndex) { - float *dstPtr = dstCoord; -#ifndef NDEBUG - float *const dstEnd = dstCoord + coordCount; -#endif - for (size_t i = 0; i < skeleton.getSlots().size(); ++i) { - /*const*/ Slot &slot = *skeleton.getDrawOrder()[i];// match the draw order of SkeletonRenderer::Draw - if (nothingToDraw(slot, startSlotIndex, endSlotIndex)) { - continue; - } - Attachment *const attachment = slot.getAttachment(); - if (attachment->getRTTI().isExactly(RegionAttachment::rtti)) { - RegionAttachment *const regionAttachment = static_cast(attachment); - assert(dstPtr + 8 <= dstEnd); - regionAttachment->computeWorldVertices(slot, dstPtr, 0, 2); - dstPtr += 8; - } else if (attachment->getRTTI().isExactly(MeshAttachment::rtti)) { - MeshAttachment *const mesh = static_cast(attachment); - assert(dstPtr + mesh->getWorldVerticesLength() <= dstEnd); - mesh->computeWorldVertices(slot, 0, mesh->getWorldVerticesLength(), dstPtr, 0, 2); - dstPtr += mesh->getWorldVerticesLength(); - } - } - assert(dstPtr == dstEnd); - } - - void interleaveCoordinates(float *dst, const float *src, int count, int dstStride) { - if (dstStride == 2) { - memcpy(dst, src, sizeof(float) * count * 2); - } else { - for (int i = 0; i < count; ++i) { - dst[0] = src[0]; - dst[1] = src[1]; - dst += dstStride; - src += 2; - } - } - } - - BlendFunc makeBlendFunc(BlendMode blendMode, bool premultipliedAlpha) { - BlendFunc blendFunc; - -#if COCOS2D_VERSION < 0x00040000 - switch (blendMode) { - case BlendMode_Additive: - blendFunc.src = premultipliedAlpha ? GL_ONE : GL_SRC_ALPHA; - blendFunc.dst = GL_ONE; - break; - case BlendMode_Multiply: - blendFunc.src = GL_DST_COLOR; - blendFunc.dst = GL_ONE_MINUS_SRC_ALPHA; - break; - case BlendMode_Screen: - blendFunc.src = GL_ONE; - blendFunc.dst = GL_ONE_MINUS_SRC_COLOR; - break; - default: - blendFunc.src = premultipliedAlpha ? GL_ONE : GL_SRC_ALPHA; - blendFunc.dst = GL_ONE_MINUS_SRC_ALPHA; - break; - } -#else - switch (blendMode) { - case BlendMode_Additive: - blendFunc.src = premultipliedAlpha ? backend::BlendFactor::ONE : backend::BlendFactor::SRC_ALPHA; - blendFunc.dst = backend::BlendFactor::ONE; - break; - case BlendMode_Multiply: - blendFunc.src = backend::BlendFactor::DST_COLOR; - blendFunc.dst = backend::BlendFactor::ONE_MINUS_SRC_ALPHA; - break; - case BlendMode_Screen: - blendFunc.src = backend::BlendFactor::ONE; - blendFunc.dst = backend::BlendFactor::ONE_MINUS_SRC_COLOR; - break; - default: - blendFunc.src = premultipliedAlpha ? backend::BlendFactor::ONE : backend::BlendFactor::SRC_ALPHA; - blendFunc.dst = backend::BlendFactor::ONE_MINUS_SRC_ALPHA; - } -#endif - return blendFunc; - } - - - bool cullRectangle(Renderer *renderer, const Mat4 &transform, const cocos2d::Rect &rect) { - if (Camera::getVisitingCamera() == nullptr) return false; - - auto director = Director::getInstance(); - auto scene = director->getRunningScene(); - - if (!scene || (scene && Camera::getDefaultCamera() != Camera::getVisitingCamera())) return false; - - Rect visibleRect(director->getVisibleOrigin(), director->getVisibleSize()); - - // transform center point to screen space - float hSizeX = rect.size.width / 2; - float hSizeY = rect.size.height / 2; - Vec3 v3p(rect.origin.x + hSizeX, rect.origin.y + hSizeY, 0); - transform.transformPoint(&v3p); - Vec2 v2p = Camera::getVisitingCamera()->projectGL(v3p); - - // convert content size to world coordinates - float wshw = std::max(fabsf(hSizeX * transform.m[0] + hSizeY * transform.m[4]), fabsf(hSizeX * transform.m[0] - hSizeY * transform.m[4])); - float wshh = std::max(fabsf(hSizeX * transform.m[1] + hSizeY * transform.m[5]), fabsf(hSizeX * transform.m[1] - hSizeY * transform.m[5])); - - // enlarge visible rect half size in screen coord - visibleRect.origin.x -= wshw; - visibleRect.origin.y -= wshh; - visibleRect.size.width += wshw * 2; - visibleRect.size.height += wshh * 2; - return !visibleRect.containsPoint(v2p); - } - - - Color4B ColorToColor4B(const Color &color) { - return {(uint8_t) (color.r * 255.f), (uint8_t) (color.g * 255.f), (uint8_t) (color.b * 255.f), (uint8_t) (color.a * 255.f)}; - } - }// namespace - -}// namespace spine diff --git a/spine-cocos2dx/spine-cocos2dx/src/spine/SkeletonRendererCocos2dX.h b/spine-cocos2dx/spine-cocos2dx/src/spine/SkeletonRendererCocos2dX.h deleted file mode 100644 index 7cf82c312..000000000 --- a/spine-cocos2dx/spine-cocos2dx/src/spine/SkeletonRendererCocos2dX.h +++ /dev/null @@ -1,162 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#ifndef SPINE_SKELETONRENDERER_H_ -#define SPINE_SKELETONRENDERER_H_ - -#include "cocos2d.h" -#include - -namespace spine { - - class AttachmentVertices; - - /* Draws a skeleton. */ - class SkeletonRendererCocos2dX : public cocos2d::Node, public cocos2d::BlendProtocol { - public: - CREATE_FUNC(SkeletonRendererCocos2dX); - static SkeletonRendererCocos2dX *createWithSkeleton(Skeleton *skeleton, bool ownsSkeleton = false, bool ownsSkeletonData = false); - static SkeletonRendererCocos2dX *createWithData(SkeletonData *skeletonData, bool ownsSkeletonData = false); - static SkeletonRendererCocos2dX *createWithFile(const std::string &skeletonDataFile, Atlas *atlas, float scale = 1); - static SkeletonRendererCocos2dX *createWithFile(const std::string &skeletonDataFile, const std::string &atlasFile, float scale = 1); - - void update(float deltaTime) override; - void draw(cocos2d::Renderer *renderer, const cocos2d::Mat4 &transform, uint32_t transformFlags) override; - cocos2d::Rect getBoundingBox() const override; - void onEnter() override; - void onExit() override; - - Skeleton *getSkeleton() const; - - void setTimeScale(float scale); - float getTimeScale() const; - - /* */ - void setDebugSlotsEnabled(bool enabled); - bool getDebugSlotsEnabled() const; - - void setDebugBonesEnabled(bool enabled); - bool getDebugBonesEnabled() const; - - void setDebugMeshesEnabled(bool enabled); - bool getDebugMeshesEnabled() const; - - void setDebugBoundingRectEnabled(bool enabled); - bool getDebugBoundingRectEnabled() const; - - // --- Convenience methods for common Skeleton_* functions. - void updateWorldTransform(spine::Physics physics); - - void setToSetupPose(); - void setBonesToSetupPose(); - void setSlotsToSetupPose(); - - /* Returns 0 if the bone was not found. */ - Bone *findBone(const std::string &boneName) const; - /* Returns 0 if the slot was not found. */ - Slot *findSlot(const std::string &slotName) const; - - /* Sets the skin used to look up attachments not found in the SkeletonData defaultSkin. Attachments from the new skin are - * attached if the corresponding attachment from the old skin was attached. - * @param skin May be empty string ("") for no skin.*/ - void setSkin(const std::string &skinName); - /** @param skin May be 0 for no skin.*/ - void setSkin(const char *skinName); - - /* Returns 0 if the slot or attachment was not found. */ - Attachment *getAttachment(const std::string &slotName, const std::string &attachmentName) const; - /* Returns false if the slot or attachment was not found. - * @param attachmentName May be empty string ("") for no attachment. */ - bool setAttachment(const std::string &slotName, const std::string &attachmentName); - /* @param attachmentName May be 0 for no attachment. */ - bool setAttachment(const std::string &slotName, const char *attachmentName); - - /* Enables/disables two color tinting for this instance. May break batching */ - void setTwoColorTint(bool enabled); - /* Whether two color tinting is enabled */ - bool isTwoColorTint(); - - /* Sets the range of slots that should be rendered. Use -1, -1 to clear the range */ - void setSlotsRange(int startSlotIndex, int endSlotIndex); - - // --- BlendProtocol - void setBlendFunc(const cocos2d::BlendFunc &blendFunc) override; - const cocos2d::BlendFunc &getBlendFunc() const override; - void setOpacityModifyRGB(bool value) override; - bool isOpacityModifyRGB() const override; - - CC_CONSTRUCTOR_ACCESS : SkeletonRendererCocos2dX(); - SkeletonRendererCocos2dX(Skeleton *skeleton, bool ownsSkeleton = false, bool ownsSkeletonData = false, bool ownsAtlas = false); - SkeletonRendererCocos2dX(SkeletonData *skeletonData, bool ownsSkeletonData = false); - SkeletonRendererCocos2dX(const std::string &skeletonDataFile, Atlas *atlas, float scale = 1); - SkeletonRendererCocos2dX(const std::string &skeletonDataFile, const std::string &atlasFile, float scale = 1); - - virtual ~SkeletonRendererCocos2dX(); - - void initWithSkeleton(Skeleton *skeleton, bool ownsSkeleton = false, bool ownsSkeletonData = false, bool ownsAtlas = false); - void initWithData(SkeletonData *skeletonData, bool ownsSkeletonData = false); - void initWithJsonFile(const std::string &skeletonDataFile, Atlas *atlas, float scale = 1); - void initWithJsonFile(const std::string &skeletonDataFile, const std::string &atlasFile, float scale = 1); - void initWithBinaryFile(const std::string &skeletonDataFile, Atlas *atlas, float scale = 1); - void initWithBinaryFile(const std::string &skeletonDataFile, const std::string &atlasFile, float scale = 1); - - virtual void initialize(); - - protected: - void setSkeletonData(SkeletonData *skeletonData, bool ownsSkeletonData); - void setupGLProgramState(bool twoColorTintEnabled); - virtual void drawDebug(cocos2d::Renderer *renderer, const cocos2d::Mat4 &transform, uint32_t transformFlags); - - bool _ownsSkeletonData; - bool _ownsSkeleton; - bool _ownsAtlas = false; - Atlas *_atlas; - AttachmentLoader *_attachmentLoader; - cocos2d::CustomCommand _debugCommand; - cocos2d::BlendFunc _blendFunc; - bool _premultipliedAlpha; - Skeleton *_skeleton; - float _timeScale; - bool _debugSlots; - bool _debugBones; - bool _debugMeshes; - bool _debugBoundingRect; - SkeletonClipping *_clipper; - cocos2d::Rect _boundingRect; - - int _startSlotIndex; - int _endSlotIndex; - bool _twoColorTint; - - Pool _verticesPool; - }; - -}// namespace spine - -#endif /* SPINE_SKELETONRENDERER_H_ */ diff --git a/spine-cocos2dx/spine-cocos2dx/src/spine/spine-cocos2dx.cpp b/spine-cocos2dx/spine-cocos2dx/src/spine/spine-cocos2dx.cpp deleted file mode 100644 index d8badf1fa..000000000 --- a/spine-cocos2dx/spine-cocos2dx/src/spine/spine-cocos2dx.cpp +++ /dev/null @@ -1,156 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#include -#include - -USING_NS_CC; -using namespace spine; - -Cocos2dAtlasAttachmentLoader::Cocos2dAtlasAttachmentLoader(Atlas *atlas) : AtlasAttachmentLoader(atlas) { -} - -Cocos2dAtlasAttachmentLoader::~Cocos2dAtlasAttachmentLoader() { -} - -#if COCOS2D_VERSION >= 0x0040000 - -backend::SamplerAddressMode wrap(TextureWrap wrap) { - return wrap == TextureWrap_ClampToEdge ? backend::SamplerAddressMode::CLAMP_TO_EDGE : backend::SamplerAddressMode::REPEAT; -} - -backend::SamplerFilter filter(TextureFilter filter) { - switch (filter) { - case TextureFilter_Unknown: - break; - case TextureFilter_Nearest: - return backend::SamplerFilter::NEAREST; - case TextureFilter_Linear: - return backend::SamplerFilter::LINEAR; - case TextureFilter_MipMap: - return backend::SamplerFilter::LINEAR; - case TextureFilter_MipMapNearestNearest: - return backend::SamplerFilter::NEAREST; - case TextureFilter_MipMapLinearNearest: - return backend::SamplerFilter::NEAREST; - case TextureFilter_MipMapNearestLinear: - return backend::SamplerFilter::LINEAR; - case TextureFilter_MipMapLinearLinear: - return backend::SamplerFilter::LINEAR; - } - return backend::SamplerFilter::LINEAR; -} - -#else - -GLuint wrap(TextureWrap wrap) { - return wrap == TextureWrap_ClampToEdge ? GL_CLAMP_TO_EDGE : GL_REPEAT; -} - -GLuint filter(TextureFilter filter) { - switch (filter) { - case TextureFilter_Unknown: - break; - case TextureFilter_Nearest: - return GL_NEAREST; - case TextureFilter_Linear: - return GL_LINEAR; - case TextureFilter_MipMap: - return GL_LINEAR_MIPMAP_LINEAR; - case TextureFilter_MipMapNearestNearest: - return GL_NEAREST_MIPMAP_NEAREST; - case TextureFilter_MipMapLinearNearest: - return GL_LINEAR_MIPMAP_NEAREST; - case TextureFilter_MipMapNearestLinear: - return GL_NEAREST_MIPMAP_LINEAR; - case TextureFilter_MipMapLinearLinear: - return GL_LINEAR_MIPMAP_LINEAR; - } - return GL_LINEAR; -} - -#endif - -Cocos2dTextureLoader::Cocos2dTextureLoader() : TextureLoader() { -} -Cocos2dTextureLoader::~Cocos2dTextureLoader() { -} - -void Cocos2dTextureLoader::load(AtlasPage &page, const spine::String &path) { - Texture2D *texture = Director::getInstance()->getTextureCache()->addImage(path.buffer()); - CCASSERT(texture != nullptr, "Invalid image"); - if (texture) { - texture->retain(); -#if COCOS2D_VERSION >= 0x0040000 - Texture2D::TexParams textureParams(filter(page.minFilter), filter(page.magFilter), wrap(page.uWrap), wrap(page.vWrap)); -#else - Texture2D::TexParams textureParams = {filter(page.minFilter), filter(page.magFilter), wrap(page.uWrap), wrap(page.vWrap)}; -#endif - texture->setTexParameters(textureParams); - - page.texture = texture; - page.width = texture->getPixelsWide(); - page.height = texture->getPixelsHigh(); - } -} - -void Cocos2dTextureLoader::unload(void *texture) { - if (texture) { - ((Texture2D *) texture)->release(); - } -} - - -Cocos2dExtension::Cocos2dExtension() : DefaultSpineExtension() { -} - -Cocos2dExtension::~Cocos2dExtension() { -} - -char *Cocos2dExtension::_readFile(const spine::String &path, int *length) { - Data data = FileUtils::getInstance()->getDataFromFile(path.buffer()); - if (data.isNull()) return nullptr; - - // avoid buffer overflow (int is shorter than ssize_t in certain platforms) -#if COCOS2D_VERSION >= 0x00031200 - ssize_t tmpLen; - char *ret = (char *) data.takeBuffer(&tmpLen); - *length = static_cast(tmpLen); - return ret; -#else - *length = static_cast(data.getSize()); - auto bytes = SpineExtension::alloc(*length, __FILE__, __LINE__); - memcpy(bytes, data.getBytes(), *length); - return bytes; -#endif -} - -SpineExtension *spine::getDefaultExtension() { - return new Cocos2dExtension(); -} diff --git a/spine-cocos2dx/spine-cocos2dx/src/spine/spine-cocos2dx.h b/spine-cocos2dx/spine-cocos2dx/src/spine/spine-cocos2dx.h deleted file mode 100644 index 4f1f7c99c..000000000 --- a/spine-cocos2dx/spine-cocos2dx/src/spine/spine-cocos2dx.h +++ /dev/null @@ -1,78 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#ifndef SPINE_COCOS2DX_H_ -#define SPINE_COCOS2DX_H_ - -#include "cocos2d.h" -#include - -#include - -#if COCOS2D_VERSION < 0x00040000 -#include -#include -#else -#include -#include -#endif - -#include - -namespace spine { - class Cocos2dAtlasAttachmentLoader : public AtlasAttachmentLoader { - public: - Cocos2dAtlasAttachmentLoader(Atlas *atlas); - virtual ~Cocos2dAtlasAttachmentLoader(); - virtual void configureAttachment(Attachment *attachment); - }; - - class Cocos2dTextureLoader : public TextureLoader { - public: - Cocos2dTextureLoader(); - - virtual ~Cocos2dTextureLoader(); - - virtual void load(AtlasPage &page, const String &path); - - virtual void unload(void *texture); - }; - - class Cocos2dExtension : public DefaultSpineExtension { - public: - Cocos2dExtension(); - - virtual ~Cocos2dExtension(); - - protected: - virtual char *_readFile(const String &path, int *length); - }; -}// namespace spine - -#endif /* SPINE_COCOS2DX_H_ */ diff --git a/spine-cocos2dx/spine-cocos2dx/src/spine/v3/SkeletonBatch.cpp b/spine-cocos2dx/spine-cocos2dx/src/spine/v3/SkeletonBatch.cpp deleted file mode 100644 index 73a563386..000000000 --- a/spine-cocos2dx/spine-cocos2dx/src/spine/v3/SkeletonBatch.cpp +++ /dev/null @@ -1,158 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#include -#if COCOS2D_VERSION < 0x00040000 - -#include -#include - -USING_NS_CC; -#define EVENT_AFTER_DRAW_RESET_POSITION "director_after_draw" -using std::max; -#define INITIAL_SIZE (10000) - -namespace spine { - - static SkeletonBatch *instance = nullptr; - - SkeletonBatch *SkeletonBatch::getInstance() { - if (!instance) instance = new SkeletonBatch(); - return instance; - } - - void SkeletonBatch::destroyInstance() { - if (instance) { - delete instance; - instance = nullptr; - } - } - - SkeletonBatch::SkeletonBatch() { - for (unsigned int i = 0; i < INITIAL_SIZE; i++) { - _commandsPool.push_back(new TrianglesCommand()); - } - - reset(); - - // callback after drawing is finished so we can clear out the batch state - // for the next frame - Director::getInstance()->getEventDispatcher()->addCustomEventListener(EVENT_AFTER_DRAW_RESET_POSITION, - [this](EventCustom *eventCustom) { this->update(0); }); - ; - } - - SkeletonBatch::~SkeletonBatch() { - Director::getInstance()->getEventDispatcher()->removeCustomEventListeners(EVENT_AFTER_DRAW_RESET_POSITION); - - for (unsigned int i = 0; i < _commandsPool.size(); i++) { - delete _commandsPool[i]; - _commandsPool[i] = nullptr; - } - } - - void SkeletonBatch::update(float delta) { - reset(); - } - - cocos2d::V3F_C4B_T2F *SkeletonBatch::allocateVertices(uint32_t numVertices) { - if (_vertices.size() - _numVertices < numVertices) { - cocos2d::V3F_C4B_T2F *oldData = _vertices.data(); - _vertices.resize((_vertices.size() + numVertices) * 2 + 1); - cocos2d::V3F_C4B_T2F *newData = _vertices.data(); - for (uint32_t i = 0; i < this->_nextFreeCommand; i++) { - TrianglesCommand *command = _commandsPool[i]; - cocos2d::TrianglesCommand::Triangles &triangles = (cocos2d::TrianglesCommand::Triangles &) command->getTriangles(); - triangles.verts = newData + (triangles.verts - oldData); - } - } - - cocos2d::V3F_C4B_T2F *vertices = _vertices.data() + _numVertices; - _numVertices += numVertices; - return vertices; - } - - void SkeletonBatch::deallocateVertices(uint32_t numVertices) { - _numVertices -= numVertices; - } - - - unsigned short *SkeletonBatch::allocateIndices(uint32_t numIndices) { - if (_indices.getCapacity() - _indices.size() < numIndices) { - unsigned short *oldData = _indices.buffer(); - int oldSize = _indices.size(); - _indices.ensureCapacity(_indices.size() + numIndices); - unsigned short *newData = _indices.buffer(); - for (uint32_t i = 0; i < this->_nextFreeCommand; i++) { - TrianglesCommand *command = _commandsPool[i]; - cocos2d::TrianglesCommand::Triangles &triangles = (cocos2d::TrianglesCommand::Triangles &) command->getTriangles(); - if (triangles.indices >= oldData && triangles.indices < oldData + oldSize) { - triangles.indices = newData + (triangles.indices - oldData); - } - } - } - - unsigned short *indices = _indices.buffer() + _indices.size(); - _indices.setSize(_indices.size() + numIndices, 0); - return indices; - } - - void SkeletonBatch::deallocateIndices(uint32_t numIndices) { - _indices.setSize(_indices.size() - numIndices, 0); - } - - - cocos2d::TrianglesCommand *SkeletonBatch::addCommand(cocos2d::Renderer *renderer, float globalOrder, cocos2d::Texture2D *texture, - cocos2d::GLProgramState *glProgramState, cocos2d::BlendFunc blendType, - const cocos2d::TrianglesCommand::Triangles &triangles, const cocos2d::Mat4 &mv, - uint32_t flags) { - TrianglesCommand *command = nextFreeCommand(); - command->init(globalOrder, texture, glProgramState, blendType, triangles, mv, flags); - renderer->addCommand(command); - return command; - } - - void SkeletonBatch::reset() { - _nextFreeCommand = 0; - _numVertices = 0; - _indices.setSize(0, 0); - } - - cocos2d::TrianglesCommand *SkeletonBatch::nextFreeCommand() { - if (_commandsPool.size() <= _nextFreeCommand) { - unsigned int newSize = _commandsPool.size() * 2 + 1; - for (int i = _commandsPool.size(); i < newSize; i++) { - _commandsPool.push_back(new TrianglesCommand()); - } - } - return _commandsPool[_nextFreeCommand++]; - } -}// namespace spine - -#endif diff --git a/spine-cocos2dx/spine-cocos2dx/src/spine/v3/SkeletonBatch.h b/spine-cocos2dx/spine-cocos2dx/src/spine/v3/SkeletonBatch.h deleted file mode 100644 index c0e3e3b9b..000000000 --- a/spine-cocos2dx/spine-cocos2dx/src/spine/v3/SkeletonBatch.h +++ /dev/null @@ -1,81 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#ifndef SPINE_SKELETONBATCH_H_ -#define SPINE_SKELETONBATCH_H_ - -#include "cocos2d.h" -#if COCOS2D_VERSION < 0x00040000 - -#include -#include - -namespace spine { - - class SkeletonBatch { - public: - static SkeletonBatch *getInstance(); - - static void destroyInstance(); - - void update(float delta); - - cocos2d::V3F_C4B_T2F *allocateVertices(uint32_t numVertices); - void deallocateVertices(uint32_t numVertices); - unsigned short *allocateIndices(uint32_t numIndices); - void deallocateIndices(uint32_t numVertices); - cocos2d::TrianglesCommand *addCommand(cocos2d::Renderer *renderer, float globalOrder, cocos2d::Texture2D *texture, - cocos2d::GLProgramState *glProgramState, cocos2d::BlendFunc blendType, - const cocos2d::TrianglesCommand::Triangles &triangles, const cocos2d::Mat4 &mv, uint32_t flags); - - protected: - SkeletonBatch(); - virtual ~SkeletonBatch(); - - void reset(); - - cocos2d::TrianglesCommand *nextFreeCommand(); - - // pool of commands - std::vector _commandsPool; - uint32_t _nextFreeCommand; - - // pool of vertices - std::vector _vertices; - uint32_t _numVertices; - - // pool of indices - Vector _indices; - }; - -}// namespace spine - -#endif - -#endif// SPINE_SKELETONBATCH_H_ diff --git a/spine-cocos2dx/spine-cocos2dx/src/spine/v3/SkeletonTwoColorBatch.cpp b/spine-cocos2dx/spine-cocos2dx/src/spine/v3/SkeletonTwoColorBatch.cpp deleted file mode 100644 index 4eb4045ef..000000000 --- a/spine-cocos2dx/spine-cocos2dx/src/spine/v3/SkeletonTwoColorBatch.cpp +++ /dev/null @@ -1,343 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#include -#if COCOS2D_VERSION < 0x00040000 - -#include -#include - -USING_NS_CC; -#define EVENT_AFTER_DRAW_RESET_POSITION "director_after_draw" -using std::max; -#define INITIAL_SIZE (10000) -#define MAX_VERTICES 64000 -#define MAX_INDICES 64000 - -#define STRINGIFY(A) #A - -namespace spine { - - TwoColorTrianglesCommand::TwoColorTrianglesCommand() - : _materialID(0), _textureID(0), _glProgramState(nullptr), _glProgram(nullptr), _blendType(BlendFunc::DISABLE), _alphaTextureID(0) { - _type = RenderCommand::Type::CUSTOM_COMMAND; - func = [this]() { draw(); }; - } - - void TwoColorTrianglesCommand::init(float globalOrder, GLuint textureID, GLProgramState *glProgramState, BlendFunc blendType, - const TwoColorTriangles &triangles, const Mat4 &mv, uint32_t flags) { - CCASSERT(glProgramState, "Invalid GLProgramState"); - CCASSERT(glProgramState->getVertexAttribsFlags() == 0, "No custom attributes are supported in QuadCommand"); - - RenderCommand::init(globalOrder, mv, flags); - - _triangles = triangles; - if (_triangles.indexCount % 3 != 0) { - int count = _triangles.indexCount; - _triangles.indexCount = count / 3 * 3; - CCLOGERROR("Resize indexCount from %d to %d, size must be multiple times of 3", count, _triangles.indexCount); - } - _mv = mv; - - if (_textureID != textureID || _blendType.src != blendType.src || _blendType.dst != blendType.dst || _glProgramState != glProgramState || - _glProgram != glProgramState->getGLProgram()) { - _textureID = textureID; - _blendType = blendType; - _glProgramState = glProgramState; - _glProgram = glProgramState->getGLProgram(); - - generateMaterialID(); - } - } - - TwoColorTrianglesCommand::~TwoColorTrianglesCommand() { - } - - void TwoColorTrianglesCommand::generateMaterialID() { - // do not batch if using custom uniforms (since we cannot batch) it - if (_glProgramState->getUniformCount() > 0) { - _materialID = Renderer::MATERIAL_ID_DO_NOT_BATCH; - setSkipBatching(true); - } else { - int glProgram = (int) _glProgram->getProgram(); - _materialID = glProgram + (int) _textureID + (int) _blendType.src + (int) _blendType.dst; - } - } - - void TwoColorTrianglesCommand::useMaterial() const { - //Set texture - GL::bindTexture2D(_textureID); - - if (_alphaTextureID > 0) { - // ANDROID ETC1 ALPHA supports. - GL::bindTexture2DN(1, _alphaTextureID); - } - //set blend mode - GL::blendFunc(_blendType.src, _blendType.dst); - - _glProgramState->apply(_mv); - } - - void TwoColorTrianglesCommand::draw() { - SkeletonTwoColorBatch::getInstance()->batch(this); - } - - const char *TWO_COLOR_TINT_VERTEX_SHADER = STRINGIFY(attribute vec4 a_position; attribute vec4 a_color; attribute vec4 a_color2; - attribute vec2 a_texCoords; - -\n #ifdef GL_ES\n varying lowp vec4 v_light; varying lowp vec4 v_dark; varying mediump vec2 v_texCoord; -\n #else \n varying vec4 v_light; varying vec4 v_dark; varying vec2 v_texCoord; - -\n #endif \n - - void main() { - v_light = a_color; - v_dark = a_color2; - v_texCoord = a_texCoords; - gl_Position = CC_PMatrix * a_position; - }); - - const char *TWO_COLOR_TINT_FRAGMENT_SHADER = STRINGIFY( -\n #ifdef GL_ES\n precision lowp float; -\n #endif \n - - varying vec4 v_light; - varying vec4 v_dark; varying vec2 v_texCoord; - - void main() { - vec4 texColor = texture2D(CC_Texture0, v_texCoord); - float alpha = texColor.a * v_light.a; - gl_FragColor.a = alpha; - gl_FragColor.rgb = ((texColor.a - 1.0) * v_dark.a + 1.0 - texColor.rgb) * v_dark.rgb + texColor.rgb * v_light.rgb; - }); - - - static SkeletonTwoColorBatch *instance = nullptr; - - SkeletonTwoColorBatch *SkeletonTwoColorBatch::getInstance() { - if (!instance) instance = new SkeletonTwoColorBatch(); - return instance; - } - - void SkeletonTwoColorBatch::destroyInstance() { - if (instance) { - delete instance; - instance = nullptr; - } - } - - SkeletonTwoColorBatch::SkeletonTwoColorBatch() : _vertexBuffer(0), _indexBuffer(0) { - for (unsigned int i = 0; i < INITIAL_SIZE; i++) { - _commandsPool.push_back(new TwoColorTrianglesCommand()); - } - - reset(); - - // callback after drawing is finished so we can clear out the batch state - // for the next frame - Director::getInstance()->getEventDispatcher()->addCustomEventListener(EVENT_AFTER_DRAW_RESET_POSITION, - [this](EventCustom *eventCustom) { this->update(0); }); - - _twoColorTintShader = cocos2d::GLProgram::createWithByteArrays(TWO_COLOR_TINT_VERTEX_SHADER, TWO_COLOR_TINT_FRAGMENT_SHADER); - _twoColorTintShaderState = GLProgramState::getOrCreateWithGLProgram(_twoColorTintShader); - _twoColorTintShaderState->retain(); - - glGenBuffers(1, &_vertexBufferHandle); - _vertexBuffer = new V3F_C4B_C4B_T2F[MAX_VERTICES]; - glGenBuffers(1, &_indexBufferHandle); - _indexBuffer = new unsigned short[MAX_INDICES]; - _positionAttributeLocation = _twoColorTintShader->getAttribLocation("a_position"); - _colorAttributeLocation = _twoColorTintShader->getAttribLocation("a_color"); - _color2AttributeLocation = _twoColorTintShader->getAttribLocation("a_color2"); - _texCoordsAttributeLocation = _twoColorTintShader->getAttribLocation("a_texCoords"); - } - - SkeletonTwoColorBatch::~SkeletonTwoColorBatch() { - Director::getInstance()->getEventDispatcher()->removeCustomEventListeners(EVENT_AFTER_DRAW_RESET_POSITION); - - for (unsigned int i = 0; i < _commandsPool.size(); i++) { - delete _commandsPool[i]; - _commandsPool[i] = nullptr; - } - _twoColorTintShader->release(); - delete[] _vertexBuffer; - delete[] _indexBuffer; - } - - void SkeletonTwoColorBatch::update(float delta) { - reset(); - } - - V3F_C4B_C4B_T2F *SkeletonTwoColorBatch::allocateVertices(uint32_t numVertices) { - if (_vertices.size() - _numVertices < numVertices) { - V3F_C4B_C4B_T2F *oldData = _vertices.data(); - _vertices.resize((_vertices.size() + numVertices) * 2 + 1); - V3F_C4B_C4B_T2F *newData = _vertices.data(); - for (uint32_t i = 0; i < this->_nextFreeCommand; i++) { - TwoColorTrianglesCommand *command = _commandsPool[i]; - TwoColorTriangles &triangles = (TwoColorTriangles &) command->getTriangles(); - triangles.verts = newData + (triangles.verts - oldData); - } - } - - V3F_C4B_C4B_T2F *vertices = _vertices.data() + _numVertices; - _numVertices += numVertices; - return vertices; - } - - - void SkeletonTwoColorBatch::deallocateVertices(uint32_t numVertices) { - _numVertices -= numVertices; - } - - - unsigned short *SkeletonTwoColorBatch::allocateIndices(uint32_t numIndices) { - if (_indices.getCapacity() - _indices.size() < numIndices) { - unsigned short *oldData = _indices.buffer(); - int oldSize = _indices.size(); - _indices.ensureCapacity(_indices.size() + numIndices); - unsigned short *newData = _indices.buffer(); - for (uint32_t i = 0; i < this->_nextFreeCommand; i++) { - TwoColorTrianglesCommand *command = _commandsPool[i]; - TwoColorTriangles &triangles = (TwoColorTriangles &) command->getTriangles(); - if (triangles.indices >= oldData && triangles.indices < oldData + oldSize) { - triangles.indices = newData + (triangles.indices - oldData); - } - } - } - - unsigned short *indices = _indices.buffer() + _indices.size(); - _indices.setSize(_indices.size() + numIndices, 0); - return indices; - } - - void SkeletonTwoColorBatch::deallocateIndices(uint32_t numIndices) { - _indices.setSize(_indices.size() - numIndices, 0); - } - - TwoColorTrianglesCommand *SkeletonTwoColorBatch::addCommand(cocos2d::Renderer *renderer, float globalOrder, GLuint textureID, - cocos2d::GLProgramState *glProgramState, cocos2d::BlendFunc blendType, - const TwoColorTriangles &triangles, const cocos2d::Mat4 &mv, uint32_t flags) { - TwoColorTrianglesCommand *command = nextFreeCommand(); - command->init(globalOrder, textureID, glProgramState, blendType, triangles, mv, flags); - renderer->addCommand(command); - return command; - } - - void SkeletonTwoColorBatch::batch(TwoColorTrianglesCommand *command) { - if (_numVerticesBuffer + command->getTriangles().vertCount >= MAX_VERTICES || - _numIndicesBuffer + command->getTriangles().indexCount >= MAX_INDICES) { - flush(_lastCommand); - } - - uint32_t materialID = command->getMaterialID(); - if (_lastCommand && _lastCommand->getMaterialID() != materialID) { - flush(_lastCommand); - } - - memcpy(_vertexBuffer + _numVerticesBuffer, command->getTriangles().verts, sizeof(V3F_C4B_C4B_T2F) * command->getTriangles().vertCount); - const Mat4 &modelView = command->getModelView(); - for (int i = _numVerticesBuffer; i < _numVerticesBuffer + command->getTriangles().vertCount; i++) { - modelView.transformPoint(&_vertexBuffer[i].position); - } - - unsigned short vertexOffset = (unsigned short) _numVerticesBuffer; - unsigned short *indices = command->getTriangles().indices; - for (int i = 0, j = _numIndicesBuffer; i < command->getTriangles().indexCount; i++, j++) { - _indexBuffer[j] = indices[i] + vertexOffset; - } - - _numVerticesBuffer += command->getTriangles().vertCount; - _numIndicesBuffer += command->getTriangles().indexCount; - - if (command->isForceFlush()) { - flush(command); - } - _lastCommand = command; - } - - void SkeletonTwoColorBatch::flush(TwoColorTrianglesCommand *materialCommand) { - if (!materialCommand) return; - - materialCommand->useMaterial(); - - glBindBuffer(GL_ARRAY_BUFFER, _vertexBufferHandle); - glBufferData(GL_ARRAY_BUFFER, sizeof(V3F_C4B_C4B_T2F) * _numVerticesBuffer, _vertexBuffer, GL_DYNAMIC_DRAW); - - glEnableVertexAttribArray(_positionAttributeLocation); - glEnableVertexAttribArray(_colorAttributeLocation); - glEnableVertexAttribArray(_color2AttributeLocation); - glEnableVertexAttribArray(_texCoordsAttributeLocation); - - glVertexAttribPointer(_positionAttributeLocation, 3, GL_FLOAT, GL_FALSE, sizeof(V3F_C4B_C4B_T2F), - (GLvoid *) offsetof(V3F_C4B_C4B_T2F, position)); - glVertexAttribPointer(_colorAttributeLocation, 4, GL_UNSIGNED_BYTE, GL_TRUE, sizeof(V3F_C4B_C4B_T2F), - (GLvoid *) offsetof(V3F_C4B_C4B_T2F, color)); - glVertexAttribPointer(_color2AttributeLocation, 4, GL_UNSIGNED_BYTE, GL_TRUE, sizeof(V3F_C4B_C4B_T2F), - (GLvoid *) offsetof(V3F_C4B_C4B_T2F, color2)); - glVertexAttribPointer(_texCoordsAttributeLocation, 2, GL_FLOAT, GL_FALSE, sizeof(V3F_C4B_C4B_T2F), - (GLvoid *) offsetof(V3F_C4B_C4B_T2F, texCoords)); - - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, _indexBufferHandle); - glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(unsigned short) * _numIndicesBuffer, _indexBuffer, GL_STATIC_DRAW); - - glDrawElements(GL_TRIANGLES, (GLsizei) _numIndicesBuffer, GL_UNSIGNED_SHORT, 0); - - glBindBuffer(GL_ARRAY_BUFFER, 0); - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); - - _numVerticesBuffer = 0; - _numIndicesBuffer = 0; - _numBatches++; - } - - void SkeletonTwoColorBatch::reset() { - _nextFreeCommand = 0; - _numVertices = 0; - _indices.setSize(0, 0); - _numVerticesBuffer = 0; - _numIndicesBuffer = 0; - _lastCommand = nullptr; - _numBatches = 0; - } - - TwoColorTrianglesCommand *SkeletonTwoColorBatch::nextFreeCommand() { - if (_commandsPool.size() <= _nextFreeCommand) { - unsigned int newSize = _commandsPool.size() * 2 + 1; - for (int i = _commandsPool.size(); i < newSize; i++) { - _commandsPool.push_back(new TwoColorTrianglesCommand()); - } - } - TwoColorTrianglesCommand *command = _commandsPool[_nextFreeCommand++]; - command->setForceFlush(false); - return command; - } -}// namespace spine - -#endif diff --git a/spine-cocos2dx/spine-cocos2dx/src/spine/v3/SkeletonTwoColorBatch.h b/spine-cocos2dx/spine-cocos2dx/src/spine/v3/SkeletonTwoColorBatch.h deleted file mode 100644 index 3b2f993e5..000000000 --- a/spine-cocos2dx/spine-cocos2dx/src/spine/v3/SkeletonTwoColorBatch.h +++ /dev/null @@ -1,203 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#ifndef SPINE_SKELETONTWOCOLORBATCH_H_ -#define SPINE_SKELETONTWOCOLORBATCH_H_ - -#include "cocos2d.h" -#if COCOS2D_VERSION < 0x00040000 - -#include -#include - -namespace spine { - struct V3F_C4B_C4B_T2F { - cocos2d::Vec3 position; - cocos2d::Color4B color; - cocos2d::Color4B color2; - cocos2d::Tex2F texCoords; - }; - - struct TwoColorTriangles { - V3F_C4B_C4B_T2F *verts; - unsigned short *indices; - int vertCount; - int indexCount; - }; - - class TwoColorTrianglesCommand : public cocos2d::CustomCommand { - public: - TwoColorTrianglesCommand(); - - ~TwoColorTrianglesCommand(); - - void init(float globalOrder, GLuint textureID, cocos2d::GLProgramState *glProgramState, cocos2d::BlendFunc blendType, - const TwoColorTriangles &triangles, const cocos2d::Mat4 &mv, uint32_t flags); - - void useMaterial() const; - - inline uint32_t getMaterialID() const { - return _materialID; - } - - inline GLuint getTextureID() const { - return _textureID; - } - - inline const TwoColorTriangles &getTriangles() const { - return _triangles; - } - - inline ssize_t getVertexCount() const { - return _triangles.vertCount; - } - - inline ssize_t getIndexCount() const { - return _triangles.indexCount; - } - - inline const V3F_C4B_C4B_T2F *getVertices() const { - return _triangles.verts; - } - - inline const unsigned short *getIndices() const { - return _triangles.indices; - } - - inline cocos2d::GLProgramState *getGLProgramState() const { - return _glProgramState; - } - - inline cocos2d::BlendFunc getBlendType() const { - return _blendType; - } - - inline const cocos2d::Mat4 &getModelView() const { - return _mv; - } - - void draw(); - - void setForceFlush(bool forceFlush) { - _forceFlush = forceFlush; - } - - bool isForceFlush() { - return _forceFlush; - }; - - protected: - void generateMaterialID(); - uint32_t _materialID; - GLuint _textureID; - cocos2d::GLProgramState *_glProgramState; - cocos2d::GLProgram *_glProgram; - cocos2d::BlendFunc _blendType; - TwoColorTriangles _triangles; - cocos2d::Mat4 _mv; - GLuint _alphaTextureID; - bool _forceFlush; - }; - - class SkeletonTwoColorBatch { - public: - static SkeletonTwoColorBatch *getInstance(); - - static void destroyInstance(); - - void update(float delta); - - V3F_C4B_C4B_T2F *allocateVertices(uint32_t numVertices); - void deallocateVertices(uint32_t numVertices); - - unsigned short *allocateIndices(uint32_t numIndices); - void deallocateIndices(uint32_t numIndices); - - TwoColorTrianglesCommand *addCommand(cocos2d::Renderer *renderer, float globalOrder, GLuint textureID, - cocos2d::GLProgramState *glProgramState, cocos2d::BlendFunc blendType, - const TwoColorTriangles &triangles, const cocos2d::Mat4 &mv, uint32_t flags); - - cocos2d::GLProgramState *getTwoColorTintProgramState() { - return _twoColorTintShaderState; - } - - void batch(TwoColorTrianglesCommand *command); - - void flush(TwoColorTrianglesCommand *materialCommand); - - uint32_t getNumBatches() { - return _numBatches; - }; - - protected: - SkeletonTwoColorBatch(); - virtual ~SkeletonTwoColorBatch(); - - void reset(); - - TwoColorTrianglesCommand *nextFreeCommand(); - - // pool of commands - std::vector _commandsPool; - uint32_t _nextFreeCommand; - - // pool of vertices - std::vector _vertices; - uint32_t _numVertices; - - // pool of indices - Vector _indices; - - // two color tint shader and state - cocos2d::GLProgram *_twoColorTintShader; - cocos2d::GLProgramState *_twoColorTintShaderState; - - // VBO handles & attribute locations - GLuint _vertexBufferHandle; - V3F_C4B_C4B_T2F *_vertexBuffer; - uint32_t _numVerticesBuffer; - GLuint _indexBufferHandle; - uint32_t _numIndicesBuffer; - unsigned short *_indexBuffer; - GLint _positionAttributeLocation; - GLint _colorAttributeLocation; - GLint _color2AttributeLocation; - GLint _texCoordsAttributeLocation; - - // last batched command, needed for flushing to set material - TwoColorTrianglesCommand *_lastCommand; - - // number of batches in the last frame - uint32_t _numBatches; - }; -}// namespace spine - -#endif - -#endif// SPINE_SKELETONTWOCOLORBATCH_H_ diff --git a/spine-cocos2dx/spine-cocos2dx/src/spine/v4/SkeletonBatch.cpp b/spine-cocos2dx/spine-cocos2dx/src/spine/v4/SkeletonBatch.cpp deleted file mode 100644 index 7a528d534..000000000 --- a/spine-cocos2dx/spine-cocos2dx/src/spine/v4/SkeletonBatch.cpp +++ /dev/null @@ -1,208 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#include -#if COCOS2D_VERSION >= 0x00040000 - -#include -#include - -USING_NS_CC; -#define EVENT_AFTER_DRAW_RESET_POSITION "director_after_draw" -using std::max; -#define INITIAL_SIZE (10000) - -#include "renderer/backend/Device.h" -#include "renderer/ccShaders.h" -#include "renderer/backend/Types.h" - -namespace spine { - - static SkeletonBatch *instance = nullptr; - - SkeletonBatch *SkeletonBatch::getInstance() { - if (!instance) instance = new SkeletonBatch(); - return instance; - } - - void SkeletonBatch::destroyInstance() { - if (instance) { - delete instance; - instance = nullptr; - } - } - - SkeletonBatch::SkeletonBatch() { - - auto program = backend::Program::getBuiltinProgram(backend::ProgramType::POSITION_TEXTURE_COLOR); - _programState = new backend::ProgramState(program);// new default program state - updateProgramStateLayout(_programState); - for (unsigned int i = 0; i < INITIAL_SIZE; i++) { - _commandsPool.push_back(createNewTrianglesCommand()); - } - reset(); - // callback after drawing is finished so we can clear out the batch state - // for the next frame - Director::getInstance()->getEventDispatcher()->addCustomEventListener(EVENT_AFTER_DRAW_RESET_POSITION, - [this](EventCustom *eventCustom) { this->update(0); }); - ; - } - - SkeletonBatch::~SkeletonBatch() { - Director::getInstance()->getEventDispatcher()->removeCustomEventListeners(EVENT_AFTER_DRAW_RESET_POSITION); - - for (unsigned int i = 0; i < _commandsPool.size(); i++) { - CC_SAFE_RELEASE(_commandsPool[i]->getPipelineDescriptor().programState); - delete _commandsPool[i]; - _commandsPool[i] = nullptr; - } - - CC_SAFE_RELEASE(_programState); - } - - void SkeletonBatch::updateProgramStateLayout(cocos2d::backend::ProgramState *programState) { - auto vertexLayout = programState->getVertexLayout(); - - auto locPosition = programState->getAttributeLocation(backend::ATTRIBUTE_NAME_POSITION); - auto locTexcoord = programState->getAttributeLocation(backend::ATTRIBUTE_NAME_TEXCOORD); - auto locColor = programState->getAttributeLocation(backend::ATTRIBUTE_NAME_COLOR); - vertexLayout->setAttribute(backend::ATTRIBUTE_NAME_POSITION, locPosition, backend::VertexFormat::FLOAT3, offsetof(V3F_C4B_T2F, vertices), - false); - vertexLayout->setAttribute(backend::ATTRIBUTE_NAME_COLOR, locColor, backend::VertexFormat::UBYTE4, offsetof(V3F_C4B_T2F, colors), true); - vertexLayout->setAttribute(backend::ATTRIBUTE_NAME_TEXCOORD, locTexcoord, backend::VertexFormat::FLOAT2, offsetof(V3F_C4B_T2F, texCoords), - false); - vertexLayout->setLayout(sizeof(_vertices[0])); - - - _locMVP = programState->getUniformLocation(backend::UNIFORM_NAME_MVP_MATRIX); - _locTexture = programState->getUniformLocation(backend::UNIFORM_NAME_TEXTURE); - } - - void SkeletonBatch::update(float delta) { - reset(); - } - - cocos2d::V3F_C4B_T2F *SkeletonBatch::allocateVertices(uint32_t numVertices) { - if (_vertices.size() - _numVertices < numVertices) { - cocos2d::V3F_C4B_T2F *oldData = _vertices.data(); - _vertices.resize((_vertices.size() + numVertices) * 2 + 1); - cocos2d::V3F_C4B_T2F *newData = _vertices.data(); - for (uint32_t i = 0; i < this->_nextFreeCommand; i++) { - TrianglesCommand *command = _commandsPool[i]; - cocos2d::TrianglesCommand::Triangles &triangles = (cocos2d::TrianglesCommand::Triangles &) command->getTriangles(); - triangles.verts = newData + (triangles.verts - oldData); - } - } - - cocos2d::V3F_C4B_T2F *vertices = _vertices.data() + _numVertices; - _numVertices += numVertices; - return vertices; - } - - void SkeletonBatch::deallocateVertices(uint32_t numVertices) { - _numVertices -= numVertices; - } - - - unsigned short *SkeletonBatch::allocateIndices(uint32_t numIndices) { - if (_indices.getCapacity() - _indices.size() < numIndices) { - unsigned short *oldData = _indices.buffer(); - int oldSize = (int) _indices.size(); - _indices.ensureCapacity(_indices.size() + numIndices); - unsigned short *newData = _indices.buffer(); - for (uint32_t i = 0; i < this->_nextFreeCommand; i++) { - TrianglesCommand *command = _commandsPool[i]; - cocos2d::TrianglesCommand::Triangles &triangles = (cocos2d::TrianglesCommand::Triangles &) command->getTriangles(); - if (triangles.indices >= oldData && triangles.indices < oldData + oldSize) { - triangles.indices = newData + (triangles.indices - oldData); - } - } - } - - unsigned short *indices = _indices.buffer() + _indices.size(); - _indices.setSize(_indices.size() + numIndices, 0); - return indices; - } - - void SkeletonBatch::deallocateIndices(uint32_t numIndices) { - _indices.setSize(_indices.size() - numIndices, 0); - } - - - cocos2d::TrianglesCommand *SkeletonBatch::addCommand(cocos2d::Renderer *renderer, float globalOrder, cocos2d::Texture2D *texture, - backend::ProgramState *programState, cocos2d::BlendFunc blendType, - const cocos2d::TrianglesCommand::Triangles &triangles, const cocos2d::Mat4 &mv, - uint32_t flags) { - TrianglesCommand *command = nextFreeCommand(); - const cocos2d::Mat4 &projectionMat = Director::getInstance()->getMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_PROJECTION); - - if (programState == nullptr) programState = _programState; - - CCASSERT(programState, "programState should not be null"); - - auto &pipelinePS = command->getPipelineDescriptor().programState; - if (pipelinePS == nullptr || pipelinePS->getProgram() != programState->getProgram()) { - CC_SAFE_RELEASE(pipelinePS); - pipelinePS = programState->clone(); - - updateProgramStateLayout(pipelinePS); - } - - pipelinePS->setUniform(_locMVP, projectionMat.m, sizeof(projectionMat.m)); - pipelinePS->setTexture(_locTexture, 0, texture->getBackendTexture()); - - command->init(globalOrder, texture, blendType, triangles, mv, flags); - renderer->addCommand(command); - return command; - } - - void SkeletonBatch::reset() { - _nextFreeCommand = 0; - _numVertices = 0; - _indices.setSize(0, 0); - } - - cocos2d::TrianglesCommand *SkeletonBatch::nextFreeCommand() { - if (_commandsPool.size() <= _nextFreeCommand) { - unsigned int newSize = (int) _commandsPool.size() * 2 + 1; - for (int i = (int) _commandsPool.size(); i < newSize; i++) { - _commandsPool.push_back(createNewTrianglesCommand()); - } - } - auto *command = _commandsPool[_nextFreeCommand++]; - return command; - } - - cocos2d::TrianglesCommand *SkeletonBatch::createNewTrianglesCommand() { - auto *command = new TrianglesCommand(); - return command; - } -}// namespace spine - -#endif diff --git a/spine-cocos2dx/spine-cocos2dx/src/spine/v4/SkeletonBatch.h b/spine-cocos2dx/spine-cocos2dx/src/spine/v4/SkeletonBatch.h deleted file mode 100644 index 692beb45c..000000000 --- a/spine-cocos2dx/spine-cocos2dx/src/spine/v4/SkeletonBatch.h +++ /dev/null @@ -1,91 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#ifndef SPINE_SKELETONBATCH_H_ -#define SPINE_SKELETONBATCH_H_ - -#include "cocos2d.h" -#if COCOS2D_VERSION >= 0x00040000 - -#include "renderer/backend/ProgramState.h" -#include -#include - -namespace spine { - - class SkeletonBatch { - public: - static SkeletonBatch *getInstance(); - - static void destroyInstance(); - - void update(float delta); - - cocos2d::V3F_C4B_T2F *allocateVertices(uint32_t numVertices); - void deallocateVertices(uint32_t numVertices); - unsigned short *allocateIndices(uint32_t numIndices); - void deallocateIndices(uint32_t numVertices); - cocos2d::TrianglesCommand *addCommand(cocos2d::Renderer *renderer, float globalOrder, cocos2d::Texture2D *texture, - cocos2d::backend::ProgramState *programState, cocos2d::BlendFunc blendType, - const cocos2d::TrianglesCommand::Triangles &triangles, const cocos2d::Mat4 &mv, uint32_t flags); - - void updateProgramStateLayout(cocos2d::backend::ProgramState *programState); - - protected: - SkeletonBatch(); - virtual ~SkeletonBatch(); - - void reset(); - - cocos2d::TrianglesCommand *nextFreeCommand(); - - cocos2d::TrianglesCommand *createNewTrianglesCommand(); - - // the default program state for batch draw - cocos2d::backend::ProgramState *_programState = nullptr; - cocos2d::backend::UniformLocation _locMVP; - cocos2d::backend::UniformLocation _locTexture; - - // pool of commands - std::vector _commandsPool; - uint32_t _nextFreeCommand; - - // pool of vertices - std::vector _vertices; - uint32_t _numVertices; - - // pool of indices - Vector _indices; - }; - -}// namespace spine - -#endif - -#endif// SPINE_SKELETONBATCH_H_ diff --git a/spine-cocos2dx/spine-cocos2dx/src/spine/v4/SkeletonTwoColorBatch.cpp b/spine-cocos2dx/spine-cocos2dx/src/spine/v4/SkeletonTwoColorBatch.cpp deleted file mode 100644 index 99963f8a1..000000000 --- a/spine-cocos2dx/spine-cocos2dx/src/spine/v4/SkeletonTwoColorBatch.cpp +++ /dev/null @@ -1,404 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#include -#if COCOS2D_VERSION >= 0x00040000 - -#include "base/ccTypes.h" -#include "base/ccUtils.h" -#include -#include -#include // offsetof - -#include "renderer/backend/Device.h" -#include "renderer/ccShaders.h" -#include "xxhash.h" - -USING_NS_CC; -#define EVENT_AFTER_DRAW_RESET_POSITION "director_after_draw" -using std::max; -#define INITIAL_SIZE (10000) -#define MAX_VERTICES 64000 -#define MAX_INDICES 64000 - -#define STRINGIFY(A) #A - -namespace { - - const char *TWO_COLOR_TINT_VERTEX_SHADER = STRINGIFY(uniform mat4 u_PMatrix; attribute vec4 a_position; attribute vec4 a_color; - attribute vec4 a_color2; attribute vec2 a_texCoords; - - \n #ifdef GL_ES\n varying lowp vec4 v_light; varying lowp vec4 v_dark; varying mediump vec2 v_texCoord; - \n #else \n varying vec4 v_light; varying vec4 v_dark; varying vec2 v_texCoord; - - \n #endif \n - - void main() { - v_light = a_color; - v_dark = a_color2; - v_texCoord = a_texCoords; - gl_Position = u_PMatrix * a_position; - }); - - const char *TWO_COLOR_TINT_FRAGMENT_SHADER = STRINGIFY( - \n #ifdef GL_ES\n precision lowp float; - \n #endif \n uniform sampler2D u_texture; varying vec4 v_light; varying vec4 v_dark; varying vec2 v_texCoord; - - void main() { - vec4 texColor = texture2D(u_texture, v_texCoord); - float alpha = texColor.a * v_light.a; - gl_FragColor.a = alpha; - gl_FragColor.rgb = ((texColor.a - 1.0) * v_dark.a + 1.0 - texColor.rgb) * v_dark.rgb + texColor.rgb * v_light.rgb; - }); - - - std::shared_ptr __twoColorProgramState = nullptr; - backend::UniformLocation __locPMatrix; - backend::UniformLocation __locTexture; - - static void updateProgramStateLayout(backend::ProgramState *programState) { - __locPMatrix = programState->getUniformLocation("u_PMatrix"); - __locTexture = programState->getUniformLocation("u_texture"); - - auto layout = programState->getVertexLayout(); - - auto locPosition = programState->getAttributeLocation("a_position"); - auto locTexcoord = programState->getAttributeLocation("a_texCoords"); - auto locColor = programState->getAttributeLocation("a_color"); - auto locColor2 = programState->getAttributeLocation("a_color2"); - - layout->setAttribute("a_position", locPosition, backend::VertexFormat::FLOAT3, offsetof(spine::V3F_C4B_C4B_T2F, position), false); - layout->setAttribute("a_color", locColor, backend::VertexFormat::UBYTE4, offsetof(spine::V3F_C4B_C4B_T2F, color), true); - layout->setAttribute("a_color2", locColor2, backend::VertexFormat::UBYTE4, offsetof(spine::V3F_C4B_C4B_T2F, color2), true); - layout->setAttribute("a_texCoords", locTexcoord, backend::VertexFormat::FLOAT2, offsetof(spine::V3F_C4B_C4B_T2F, texCoords), false); - layout->setLayout(sizeof(spine::V3F_C4B_C4B_T2F)); - } - - static void initTwoColorProgramState() { - if (__twoColorProgramState) { - return; - } - auto program = backend::Device::getInstance()->newProgram(TWO_COLOR_TINT_VERTEX_SHADER, TWO_COLOR_TINT_FRAGMENT_SHADER); - auto *programState = new backend::ProgramState(program); - program->release(); - - updateProgramStateLayout(programState); - - __twoColorProgramState = std::shared_ptr(programState); - } - -}// namespace - -namespace spine { - - TwoColorTrianglesCommand::TwoColorTrianglesCommand() : _materialID(0), _texture(nullptr), _blendType(BlendFunc::DISABLE) { - _type = RenderCommand::Type::CUSTOM_COMMAND; - } - - void TwoColorTrianglesCommand::init(float globalOrder, cocos2d::Texture2D *texture, cocos2d::backend::ProgramState *programState, - BlendFunc blendType, const TwoColorTriangles &triangles, const Mat4 &mv, uint32_t flags) { - - updateCommandPipelineDescriptor(programState); - const cocos2d::Mat4 &projectionMat = Director::getInstance()->getMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_PROJECTION); - - auto finalMatrix = projectionMat * mv; - - _programState->setUniform(_locPMatrix, finalMatrix.m, sizeof(finalMatrix.m)); - _programState->setTexture(_locTexture, 0, texture->getBackendTexture()); - - - RenderCommand::init(globalOrder, mv, flags); - - _triangles = triangles; - if (_triangles.indexCount % 3 != 0) { - int count = _triangles.indexCount; - _triangles.indexCount = count / 3 * 3; - CCLOGERROR("Resize indexCount from %d to %d, size must be multiple times of 3", count, _triangles.indexCount); - } - - _mv = mv; - - if (_blendType.src != blendType.src || _blendType.dst != blendType.dst || _texture != texture->getBackendTexture() || - _pipelineDescriptor.programState != _programState) { - _texture = texture->getBackendTexture(); - _blendType = blendType; - - _prog = _programState->getProgram(); - - auto &blendDescriptor = _pipelineDescriptor.blendDescriptor; - blendDescriptor.blendEnabled = true; - blendDescriptor.sourceRGBBlendFactor = blendDescriptor.sourceAlphaBlendFactor = blendType.src; - blendDescriptor.destinationRGBBlendFactor = blendDescriptor.destinationAlphaBlendFactor = blendType.dst; - - generateMaterialID(); - } - } - - - void TwoColorTrianglesCommand::updateCommandPipelineDescriptor(cocos2d::backend::ProgramState *programState) { - // OPTIMIZE ME: all commands belong a same Node should share a same programState like SkeletonBatch - if (!__twoColorProgramState) { - initTwoColorProgramState(); - } - - bool needsUpdateStateLayout = false; - auto &pipelinePS = _pipelineDescriptor.programState; - if (programState != nullptr) { - if (_programState != programState) { - CC_SAFE_RELEASE(_programState); - _programState = programState;// Because the programState belong to Node, so no need to clone - CC_SAFE_RETAIN(_programState); - needsUpdateStateLayout = true; - } - } else { - needsUpdateStateLayout = _programState != nullptr && _programState->getProgram() != __twoColorProgramState->getProgram(); - CC_SAFE_RELEASE(_programState); - _programState = __twoColorProgramState->clone(); - } - - CCASSERT(_programState, "programState should not be null"); - pipelinePS = _programState; - - if (needsUpdateStateLayout) updateProgramStateLayout(pipelinePS); - - _locPMatrix = __locPMatrix; - _locTexture = __locTexture; - } - - TwoColorTrianglesCommand::~TwoColorTrianglesCommand() { - CC_SAFE_RELEASE_NULL(_programState); - } - - void TwoColorTrianglesCommand::generateMaterialID() { - // do not batch if using custom uniforms (since we cannot batch) it - - - struct { - void *texture; - void *prog; - backend::BlendFactor src; - backend::BlendFactor dst; - } hashMe; - - // NOTE: Initialize hashMe struct to make the value of padding bytes be filled with zero. - // It's important since XXH32 below will also consider the padding bytes which probably - // are set to random values by different compilers. - memset(&hashMe, 0, sizeof(hashMe)); - - hashMe.texture = _texture; - hashMe.src = _blendType.src; - hashMe.dst = _blendType.dst; - hashMe.prog = _prog; - _materialID = XXH32((const void *) &hashMe, sizeof(hashMe), 0); - } - - - void TwoColorTrianglesCommand::draw(Renderer *r) { - SkeletonTwoColorBatch::getInstance()->batch(r, this); - } - - void TwoColorTrianglesCommand::updateVertexAndIndexBuffer(Renderer *r, V3F_C4B_C4B_T2F *vertices, int verticesSize, uint16_t *indices, - int indicesSize) { - if (verticesSize != _vertexCapacity) createVertexBuffer(sizeof(V3F_C4B_C4B_T2F), verticesSize, CustomCommand::BufferUsage::DYNAMIC); - if (indicesSize != _indexCapacity) createIndexBuffer(CustomCommand::IndexFormat::U_SHORT, indicesSize, CustomCommand::BufferUsage::DYNAMIC); - - updateVertexBuffer(vertices, sizeof(V3F_C4B_C4B_T2F) * verticesSize); - updateIndexBuffer(indices, sizeof(uint16_t) * indicesSize); - } - - - static SkeletonTwoColorBatch *instance = nullptr; - - SkeletonTwoColorBatch *SkeletonTwoColorBatch::getInstance() { - if (!instance) instance = new SkeletonTwoColorBatch(); - return instance; - } - - void SkeletonTwoColorBatch::destroyInstance() { - if (instance) { - delete instance; - instance = nullptr; - } - } - - SkeletonTwoColorBatch::SkeletonTwoColorBatch() : _vertexBuffer(0), _indexBuffer(0) { - _commandsPool.reserve(INITIAL_SIZE); - for (unsigned int i = 0; i < INITIAL_SIZE; i++) { - _commandsPool.push_back(new TwoColorTrianglesCommand()); - } - - reset(); - - // callback after drawing is finished so we can clear out the batch state - // for the next frame - Director::getInstance()->getEventDispatcher()->addCustomEventListener(EVENT_AFTER_DRAW_RESET_POSITION, - [this](EventCustom *eventCustom) { this->update(0); }); - } - - SkeletonTwoColorBatch::~SkeletonTwoColorBatch() { - Director::getInstance()->getEventDispatcher()->removeCustomEventListeners(EVENT_AFTER_DRAW_RESET_POSITION); - - for (unsigned int i = 0; i < _commandsPool.size(); i++) { - delete _commandsPool[i]; - _commandsPool[i] = nullptr; - } - - delete[] _vertexBuffer; - delete[] _indexBuffer; - } - - void SkeletonTwoColorBatch::update(float delta) { - reset(); - } - - V3F_C4B_C4B_T2F *SkeletonTwoColorBatch::allocateVertices(uint32_t numVertices) { - if (_vertices.size() - _numVertices < numVertices) { - V3F_C4B_C4B_T2F *oldData = _vertices.data(); - _vertices.resize((_vertices.size() + numVertices) * 2 + 1); - V3F_C4B_C4B_T2F *newData = _vertices.data(); - for (uint32_t i = 0; i < this->_nextFreeCommand; i++) { - TwoColorTrianglesCommand *command = _commandsPool[i]; - TwoColorTriangles &triangles = (TwoColorTriangles &) command->getTriangles(); - triangles.verts = newData + (triangles.verts - oldData); - } - } - - V3F_C4B_C4B_T2F *vertices = _vertices.data() + _numVertices; - _numVertices += numVertices; - return vertices; - } - - - void SkeletonTwoColorBatch::deallocateVertices(uint32_t numVertices) { - _numVertices -= numVertices; - } - - - unsigned short *SkeletonTwoColorBatch::allocateIndices(uint32_t numIndices) { - if (_indices.getCapacity() - _indices.size() < numIndices) { - unsigned short *oldData = _indices.buffer(); - int oldSize = (int) _indices.size(); - _indices.ensureCapacity(_indices.size() + numIndices); - unsigned short *newData = _indices.buffer(); - for (uint32_t i = 0; i < this->_nextFreeCommand; i++) { - TwoColorTrianglesCommand *command = _commandsPool[i]; - TwoColorTriangles &triangles = (TwoColorTriangles &) command->getTriangles(); - if (triangles.indices >= oldData && triangles.indices < oldData + oldSize) { - triangles.indices = newData + (triangles.indices - oldData); - } - } - } - - unsigned short *indices = _indices.buffer() + _indices.size(); - _indices.setSize(_indices.size() + numIndices, 0); - return indices; - } - - void SkeletonTwoColorBatch::deallocateIndices(uint32_t numIndices) { - _indices.setSize(_indices.size() - numIndices, 0); - } - - TwoColorTrianglesCommand *SkeletonTwoColorBatch::addCommand(cocos2d::Renderer *renderer, float globalOrder, cocos2d::Texture2D *texture, - backend::ProgramState *programState, cocos2d::BlendFunc blendType, - const TwoColorTriangles &triangles, const cocos2d::Mat4 &mv, uint32_t flags) { - TwoColorTrianglesCommand *command = nextFreeCommand(); - command->init(globalOrder, texture, programState, blendType, triangles, mv, flags); - command->updateVertexAndIndexBuffer(renderer, triangles.verts, triangles.vertCount, triangles.indices, triangles.indexCount); - renderer->addCommand(command); - return command; - } - - void SkeletonTwoColorBatch::batch(cocos2d::Renderer *renderer, TwoColorTrianglesCommand *command) { - if (_numVerticesBuffer + command->getTriangles().vertCount >= MAX_VERTICES || - _numIndicesBuffer + command->getTriangles().indexCount >= MAX_INDICES) { - flush(renderer, _lastCommand); - } - - uint32_t materialID = command->getMaterialID(); - if (_lastCommand && _lastCommand->getMaterialID() != materialID) { - flush(renderer, _lastCommand); - } - - memcpy(_vertexBuffer + _numVerticesBuffer, command->getTriangles().verts, sizeof(V3F_C4B_C4B_T2F) * command->getTriangles().vertCount); - const Mat4 &modelView = command->getModelView(); - for (int i = _numVerticesBuffer; i < _numVerticesBuffer + command->getTriangles().vertCount; i++) { - modelView.transformPoint(&_vertexBuffer[i].position); - } - - unsigned short vertexOffset = (unsigned short) _numVerticesBuffer; - unsigned short *indices = command->getTriangles().indices; - for (int i = 0, j = _numIndicesBuffer; i < command->getTriangles().indexCount; i++, j++) { - _indexBuffer[j] = indices[i] + vertexOffset; - } - - _numVerticesBuffer += command->getTriangles().vertCount; - _numIndicesBuffer += command->getTriangles().indexCount; - - if (command->isForceFlush()) { - flush(renderer, command); - } - _lastCommand = command; - } - - void SkeletonTwoColorBatch::flush(cocos2d::Renderer *renderer, TwoColorTrianglesCommand *materialCommand) { - if (!materialCommand) return; - - materialCommand->updateVertexAndIndexBuffer(renderer, _vertexBuffer, _numVerticesBuffer, _indexBuffer, _numIndicesBuffer); - - renderer->addCommand(materialCommand); - - _numVerticesBuffer = 0; - _numIndicesBuffer = 0; - _numBatches++; - } - - void SkeletonTwoColorBatch::reset() { - _nextFreeCommand = 0; - _numVertices = 0; - _indices.setSize(0, 0); - _numVerticesBuffer = 0; - _numIndicesBuffer = 0; - _lastCommand = nullptr; - _numBatches = 0; - } - - TwoColorTrianglesCommand *SkeletonTwoColorBatch::nextFreeCommand() { - if (_commandsPool.size() <= _nextFreeCommand) { - unsigned int newSize = (int) _commandsPool.size() * 2 + 1; - for (int i = (int) _commandsPool.size(); i < newSize; i++) { - _commandsPool.push_back(new TwoColorTrianglesCommand()); - } - } - TwoColorTrianglesCommand *command = _commandsPool[_nextFreeCommand++]; - command->setForceFlush(false); - return command; - } -}// namespace spine - -#endif diff --git a/spine-cocos2dx/spine-cocos2dx/src/spine/v4/SkeletonTwoColorBatch.h b/spine-cocos2dx/spine-cocos2dx/src/spine/v4/SkeletonTwoColorBatch.h deleted file mode 100644 index 40b8165d7..000000000 --- a/spine-cocos2dx/spine-cocos2dx/src/spine/v4/SkeletonTwoColorBatch.h +++ /dev/null @@ -1,193 +0,0 @@ -/****************************************************************************** - * 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: - * http://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. - *****************************************************************************/ - -#ifndef SPINE_SKELETONTWOCOLORBATCH_H_ -#define SPINE_SKELETONTWOCOLORBATCH_H_ - -#include "cocos2d.h" -#if COCOS2D_VERSION >= 0x00040000 - -#include "renderer/backend/ProgramState.h" -#include -#include - -namespace spine { - struct V3F_C4B_C4B_T2F { - cocos2d::Vec3 position; - cocos2d::Color4B color; - cocos2d::Color4B color2; - cocos2d::Tex2F texCoords; - }; - - struct TwoColorTriangles { - V3F_C4B_C4B_T2F *verts; - unsigned short *indices; - int vertCount; - int indexCount; - }; - - class TwoColorTrianglesCommand : public cocos2d::CustomCommand { - public: - TwoColorTrianglesCommand(); - - ~TwoColorTrianglesCommand(); - - void init(float globalOrder, cocos2d::Texture2D *texture, cocos2d::backend::ProgramState *programState, cocos2d::BlendFunc blendType, - const TwoColorTriangles &triangles, const cocos2d::Mat4 &mv, uint32_t flags); - - void updateCommandPipelineDescriptor(cocos2d::backend::ProgramState *programState); - - inline cocos2d::backend::TextureBackend *getTexture() const { - return _texture; - } - - void draw(cocos2d::Renderer *renderer); - - void updateVertexAndIndexBuffer(cocos2d::Renderer *renderer, V3F_C4B_C4B_T2F *vertices, int verticesSize, uint16_t *indices, int indicesSize); - - inline uint32_t getMaterialID() const { - return _materialID; - } - - inline const TwoColorTriangles &getTriangles() const { - return _triangles; - } - - inline ssize_t getVertexCount() const { - return _triangles.vertCount; - } - - inline ssize_t getIndexCount() const { - return _triangles.indexCount; - } - - inline const V3F_C4B_C4B_T2F *getVertices() const { - return _triangles.verts; - } - - inline const unsigned short *getIndices() const { - return _triangles.indices; - } - - inline cocos2d::BlendFunc getBlendType() const { - return _blendType; - } - - inline const cocos2d::Mat4 &getModelView() const { - return _mv; - } - - void setForceFlush(bool forceFlush) { - _forceFlush = forceFlush; - } - - bool isForceFlush() { - return _forceFlush; - }; - - protected: - void generateMaterialID(); - uint32_t _materialID; - - - void *_prog = nullptr; - cocos2d::backend::TextureBackend *_texture = nullptr; - cocos2d::backend::ProgramState *_programState = nullptr; - cocos2d::backend::UniformLocation _locPMatrix; - cocos2d::backend::UniformLocation _locTexture; - - cocos2d::BlendFunc _blendType; - TwoColorTriangles _triangles; - cocos2d::Mat4 _mv; - bool _forceFlush; - }; - - class SkeletonTwoColorBatch { - public: - static SkeletonTwoColorBatch *getInstance(); - - static void destroyInstance(); - - void update(float delta); - - V3F_C4B_C4B_T2F *allocateVertices(uint32_t numVertices); - void deallocateVertices(uint32_t numVertices); - - unsigned short *allocateIndices(uint32_t numIndices); - void deallocateIndices(uint32_t numIndices); - - TwoColorTrianglesCommand *addCommand(cocos2d::Renderer *renderer, float globalOrder, cocos2d::Texture2D *texture, - cocos2d::backend::ProgramState *programState, cocos2d::BlendFunc blendType, - const TwoColorTriangles &triangles, const cocos2d::Mat4 &mv, uint32_t flags); - - void batch(cocos2d::Renderer *renderer, TwoColorTrianglesCommand *command); - - void flush(cocos2d::Renderer *renderer, TwoColorTrianglesCommand *materialCommand); - - uint32_t getNumBatches() { - return _numBatches; - }; - - protected: - SkeletonTwoColorBatch(); - virtual ~SkeletonTwoColorBatch(); - - void reset(); - - TwoColorTrianglesCommand *nextFreeCommand(); - - // pool of commands - std::vector _commandsPool; - uint32_t _nextFreeCommand; - - // pool of vertices - std::vector _vertices; - uint32_t _numVertices; - - // pool of indices - Vector _indices; - - - // VBO handles & attribute locations - V3F_C4B_C4B_T2F *_vertexBuffer; - uint32_t _numVerticesBuffer; - uint32_t _numIndicesBuffer; - unsigned short *_indexBuffer; - - // last batched command, needed for flushing to set material - TwoColorTrianglesCommand *_lastCommand = nullptr; - - // number of batches in the last frame - uint32_t _numBatches; - }; -}// namespace spine - -#endif - -#endif// SPINE_SKELETONTWOCOLORBATCH_H_