[sfml] Clean-up and refactoring.
41
spine-sfml/CMakeLists.txt
Normal file
@ -0,0 +1,41 @@
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(spine-sfml VERSION 4.3.0 LANGUAGES C CXX)
|
||||
|
||||
option(BUILD_EXAMPLES "Build examples" ON)
|
||||
|
||||
# Default flags
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/../flags.cmake)
|
||||
|
||||
# SFML
|
||||
include(FetchContent)
|
||||
set(BUILD_SHARED_LIBS OFF)
|
||||
FetchContent_Declare(
|
||||
SFML
|
||||
GIT_REPOSITORY https://github.com/SFML/SFML
|
||||
GIT_TAG 2.6.1
|
||||
)
|
||||
FetchContent_MakeAvailable(SFML)
|
||||
|
||||
|
||||
add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../spine-cpp ${CMAKE_BINARY_DIR}/spine-cpp)
|
||||
|
||||
# spine-sfml library (C++ only since SFML is a C++ library)
|
||||
add_library(spine-sfml STATIC
|
||||
src/spine-sfml.cpp
|
||||
src/spine-sfml.h)
|
||||
target_include_directories(spine-sfml PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
|
||||
$<INSTALL_INTERFACE:include>)
|
||||
target_link_libraries(spine-sfml
|
||||
PUBLIC spine-cpp sfml-graphics sfml-window sfml-system)
|
||||
|
||||
# Example
|
||||
if(BUILD_EXAMPLES)
|
||||
add_executable(spine-sfml-example example/main.cpp)
|
||||
target_link_libraries(spine-sfml-example spine-sfml)
|
||||
|
||||
# Copy data to build directory
|
||||
add_custom_command(TARGET spine-sfml-example PRE_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||
${CMAKE_CURRENT_LIST_DIR}/data $<TARGET_FILE_DIR:spine-sfml-example>/data)
|
||||
endif()
|
||||
45
spine-sfml/CMakePresets.json
Normal file
@ -0,0 +1,45 @@
|
||||
{
|
||||
"version": 3,
|
||||
"configurePresets": [
|
||||
{
|
||||
"name": "default",
|
||||
"hidden": true,
|
||||
"cacheVariables": {
|
||||
"CMAKE_EXPORT_COMPILE_COMMANDS": "YES",
|
||||
"BUILD_EXAMPLES": "ON"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "debug",
|
||||
"inherits": "default",
|
||||
"displayName": "Debug",
|
||||
"description": "Debug build",
|
||||
"generator": "Ninja",
|
||||
"binaryDir": "${sourceDir}/build/debug",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Debug"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "release",
|
||||
"inherits": "default",
|
||||
"displayName": "Release",
|
||||
"description": "Release build",
|
||||
"generator": "Ninja",
|
||||
"binaryDir": "${sourceDir}/build/release",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Release"
|
||||
}
|
||||
}
|
||||
],
|
||||
"buildPresets": [
|
||||
{
|
||||
"name": "debug",
|
||||
"configurePreset": "debug"
|
||||
},
|
||||
{
|
||||
"name": "release",
|
||||
"configurePreset": "release"
|
||||
}
|
||||
]
|
||||
}
|
||||
100
spine-sfml/README.md
Normal file
@ -0,0 +1,100 @@
|
||||
# spine-sfml
|
||||
|
||||
The spine-sfml runtime provides functionality to load, manipulate and render [Spine](http://esotericsoftware.com) skeletal animation data using [SFML](https://www.sfml-dev.org/). spine-sfml is based on [spine-cpp](../spine-cpp).
|
||||
|
||||
# See the [Spine Runtimes documentation](http://esotericsoftware.com/spine-documentation#runtimes) for in-depth information
|
||||
|
||||
## 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-sfml works with data exported from Spine 4.3.xx.
|
||||
|
||||
spine-sfml supports all Spine features.
|
||||
|
||||
## Usage
|
||||
|
||||
### Integration with CMake (Recommended)
|
||||
|
||||
The easiest way to integrate spine-sfml into your project is via CMake FetchContent:
|
||||
|
||||
```cmake
|
||||
include(FetchContent)
|
||||
FetchContent_Declare(
|
||||
spine-sfml
|
||||
GIT_REPOSITORY https://github.com/esotericsoftware/spine-runtimes.git
|
||||
GIT_TAG 4.3
|
||||
SOURCE_SUBDIR spine-sfml
|
||||
)
|
||||
FetchContent_MakeAvailable(spine-sfml)
|
||||
|
||||
# Link against spine-sfml
|
||||
target_link_libraries(your_target spine-sfml)
|
||||
```
|
||||
|
||||
This will automatically fetch and build spine-sfml along with its dependencies (spine-cpp and SFML).
|
||||
|
||||
### Manual Integration
|
||||
|
||||
If you prefer manual integration:
|
||||
|
||||
1. Download the Spine Runtimes source using git (`git clone https://github.com/esotericsoftware/spine-runtimes`) or download it as a zip.
|
||||
2. Add the required source files to your project:
|
||||
- Add sources from `spine-cpp/src` and `spine-sfml/src/spine-sfml.cpp`
|
||||
3. Add the include directories: `spine-cpp/include` and `spine-sfml/src`
|
||||
4. Link against SFML libraries
|
||||
|
||||
See the [Spine Runtimes documentation](http://esotericsoftware.com/spine-documentation#runtimes) for detailed API usage.
|
||||
|
||||
## Examples
|
||||
|
||||
The repository includes example code:
|
||||
- C++ example: [example/main.cpp](example/main.cpp)
|
||||
|
||||
### Building the Examples
|
||||
|
||||
### Windows
|
||||
|
||||
1. Install [Visual Studio Community](https://visualstudio.microsoft.com/downloads/). Make sure you install support for C++ and CMake.
|
||||
2. Download the Spine Runtimes repository using git (`git clone https://github.com/esotericsoftware/spine-runtimes`) or download it as a zip.
|
||||
3. Open Visual Studio Community, then open `spine-sfml/` via the **Open a local folder** button in the Visual Studio Community launcher.
|
||||
4. Wait for CMake to finish, then select `spine-sfml-example.exe` as the start-up project and start debugging.
|
||||
|
||||
### Linux
|
||||
|
||||
1. Install dependencies:
|
||||
```bash
|
||||
sudo apt-get install cmake ninja-build libsfml-dev # Ubuntu/Debian
|
||||
# or equivalent for your distribution
|
||||
```
|
||||
2. Clone the repository: `git clone https://github.com/esotericsoftware/spine-runtimes`
|
||||
3. Build and run:
|
||||
```bash
|
||||
cd spine-runtimes/spine-sfml
|
||||
./build.sh
|
||||
./build/debug/spine-sfml-example
|
||||
```
|
||||
|
||||
### macOS
|
||||
|
||||
1. Install [Xcode](https://developer.apple.com/xcode/)
|
||||
2. Install [Homebrew](http://brew.sh/)
|
||||
3. Install dependencies:
|
||||
```bash
|
||||
brew install cmake ninja
|
||||
```
|
||||
4. Clone the repository: `git clone https://github.com/esotericsoftware/spine-runtimes`
|
||||
5. Build and run:
|
||||
```bash
|
||||
cd spine-runtimes/spine-sfml
|
||||
./build.sh
|
||||
./build/debug/spine-sfml-example
|
||||
```
|
||||
22
spine-sfml/build.sh
Executable file
@ -0,0 +1,22 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
|
||||
cd "$script_dir"
|
||||
|
||||
if [ ! -f "CMakePresets.json" ]; then
|
||||
echo "Error: CMakePresets.json not found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Default to debug build
|
||||
preset=${1:-debug}
|
||||
|
||||
echo "Configuring with preset: $preset"
|
||||
cmake --preset=$preset
|
||||
|
||||
echo "Building..."
|
||||
cmake --build --preset=$preset
|
||||
|
||||
echo "Build complete!"
|
||||
echo "Examples are in build/$preset/"
|
||||
@ -1,42 +0,0 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
project(spine-sfml)
|
||||
|
||||
# Default flags
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/../../flags.cmake)
|
||||
|
||||
# SFML
|
||||
include(FetchContent)
|
||||
FetchContent_Declare(SFML GIT_REPOSITORY https://github.com/SFML/SFML GIT_TAG 2.6.1)
|
||||
set(FETCHCONTENT_QUIET NO)
|
||||
FetchContent_MakeAvailable(SFML)
|
||||
|
||||
# Add spine-c
|
||||
add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../../spine-c ${CMAKE_BINARY_DIR}/spine-c-build)
|
||||
|
||||
# Define spine-sfml-c library
|
||||
include_directories(${CMAKE_CURRENT_LIST_DIR}/src ${SFML_SOURCE_DIR}/include)
|
||||
file(GLOB INCLUDES "${CMAKE_CURRENT_LIST_DIR}/src/**/*.h")
|
||||
file(GLOB SOURCES "${CMAKE_CURRENT_LIST_DIR}/src/**/*.cpp")
|
||||
add_library(spine-sfml-c STATIC ${SOURCES} ${INCLUDES})
|
||||
target_link_libraries(spine-sfml-c LINK_PUBLIC spine-c sfml-graphics sfml-window sfml-system)
|
||||
|
||||
# Define spine-sfml-c example executable
|
||||
add_executable(spine-sfml-c-example example/main.cpp)
|
||||
target_link_libraries(spine-sfml-c-example spine-c spine-sfml-c)
|
||||
|
||||
# Link in OS dependencies like OpenGL
|
||||
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||
find_library(COCOA_FRAMEWORK Cocoa)
|
||||
find_library(OPENGL_FRAMEWORK OpenGL)
|
||||
target_link_libraries(spine-sfml-c-example ${COCOA_FRAMEWORK} ${OPENGL_FRAMEWORK})
|
||||
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||
target_link_libraries(spine-sfml-c-example GL)
|
||||
else()
|
||||
target_link_libraries(spine-sfml-c-example opengl32 gdi32 winmm)
|
||||
add_definitions(-DSFML_STATIC)
|
||||
endif()
|
||||
|
||||
# copy data to build directory
|
||||
add_custom_command(TARGET spine-sfml-c-example PRE_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||
${CMAKE_CURRENT_LIST_DIR}/data $<TARGET_FILE_DIR:spine-sfml-c-example>/data)
|
||||
@ -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:
|
||||
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.
|
||||
@ -1,65 +0,0 @@
|
||||
# spine-sfml
|
||||
|
||||
The spine-sfml runtime provides functionality to load, manipulate and render [Spine](http://esotericsoftware.com) skeletal animation data using [SFML](http://www.sfml-dev.org/). spine-sfml is based on [spine-c](../../spine-c).
|
||||
|
||||
## 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-sfml works with data exported from Spine 4.2.xx.
|
||||
|
||||
spine-sfml supports all Spine features except two color tinting.
|
||||
|
||||
## Usage
|
||||
|
||||
1. Create a new SFML project. See the [SFML documentation](https://www.sfml-dev.org/tutorials/2.6/) or have a look at the example in this repository.
|
||||
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.
|
||||
3. Add the sources from `spine-c/spine-c/src/spine` and `spine-sfml/src/c/spine` to your project
|
||||
4. Add the folder `spine-c/spine-c/include` to your header search path. Note that includes are specified as `#inclue <spine/file.h>`, so the `spine` directory cannot be omitted when copying the source files.
|
||||
|
||||
See the [Spine Runtimes documentation](http://esotericsoftware.com/spine-documentation#runtimes) on how to use the APIs or check out the Spine SFML example.
|
||||
|
||||
## Example
|
||||
|
||||
The Spine SFML example works on Windows, Linux and Mac OS X.
|
||||
|
||||
### Windows
|
||||
|
||||
1. Install [Visual Studio 2022 Community](https://visualstudio.microsoft.com/downloads/). Make sure you install support for C++, CMake as well as th Windows SDK for XP/7/8.
|
||||
1. Open Visual Studio and open the `spine-sfml/c` folder via the `Open a local folder` button
|
||||
1. Let CMake finish, then select `spine-sfml-cpp-example.exe` as the start-up project
|
||||
1. Start debugging to run the example
|
||||
|
||||
### Linux
|
||||
|
||||
1. Install the SFML dependencies, e.g. on Ubuntu/Debian via `sudo apt install libsfml-dev`
|
||||
2. Install CMake, e.g. on Ubuntu/Debian via `sudo apt-get install -y cmake`
|
||||
3. Download the Spine Runtimes repository using git (`git clone https://github.com/esotericsoftware/spine-runtimes`) or download it as a zip via the download button above.
|
||||
4. Open a terminal, and `cd` into the `spine-runtimes/spine-sfml/c` folder
|
||||
5. Type `mkdir build && cd build && cmake ..` to generate Make files
|
||||
6. Type `make -j8` to compile the example
|
||||
7. Run the example via `./spine-sfml-c-example`
|
||||
|
||||
### Mac OS X
|
||||
|
||||
1. Install [Xcode](https://developer.apple.com/xcode/)
|
||||
2. Install [Homebrew](http://brew.sh/)
|
||||
3. Open a terminal and install CMake via `brew install cmake`
|
||||
4. Download the Spine Runtimes repository using git (`git clone https://github.com/esotericsoftware/spine-runtimes`) or download it as a zip via the download button above.
|
||||
5. Open a terminal, and `cd` into the `spine-runtimes/spine-sfml/c` folder
|
||||
6. Type `mkdir build && cd build && cmake -G Xcode ..` to generate an Xcode project called `spine-sfml.xcodeproj`
|
||||
7. Type `open spine-sfml.xcodeproj` to open the Xcode project
|
||||
8. In Xcode, set the active scheme to `spine-sfml-c-example`
|
||||
9. Click the `Run` button or press `CMD+R` to run the example
|
||||
|
||||
## Notes
|
||||
|
||||
- Atlas images should not use premultiplied alpha.
|
||||
@ -1,158 +0,0 @@
|
||||
celestial-circus-pma.png
|
||||
size: 1024, 1024
|
||||
filter: Linear, Linear
|
||||
pma: true
|
||||
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
|
||||
|
Before Width: | Height: | Size: 791 KiB |
@ -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
|
||||
|
Before Width: | Height: | Size: 784 KiB |
@ -1,84 +0,0 @@
|
||||
cloud-pot-pma.png
|
||||
size: 1024, 512
|
||||
filter: Linear, Linear
|
||||
pma: true
|
||||
scale: 0.5
|
||||
cloud-base-1
|
||||
bounds: 548, 129, 233, 210
|
||||
cloud-base-10
|
||||
bounds: 448, 227, 97, 101
|
||||
cloud-base-2
|
||||
bounds: 783, 129, 210, 208
|
||||
rotate: 90
|
||||
cloud-base-3
|
||||
bounds: 271, 156, 175, 164
|
||||
cloud-base-4
|
||||
bounds: 2, 148, 176, 163
|
||||
cloud-base-5
|
||||
bounds: 495, 2, 145, 125
|
||||
cloud-base-6
|
||||
bounds: 332, 18, 161, 136
|
||||
cloud-base-7
|
||||
bounds: 180, 5, 150, 149
|
||||
cloud-base-8
|
||||
bounds: 2, 18, 154, 128
|
||||
cloud-base-9
|
||||
bounds: 862, 19, 107, 108
|
||||
cloud-cheeks
|
||||
bounds: 642, 48, 218, 79
|
||||
cloud-eyes-closed
|
||||
bounds: 137, 317, 132, 22
|
||||
cloud-eyes-open
|
||||
bounds: 2, 313, 133, 26
|
||||
cloud-eyes-reflex
|
||||
bounds: 271, 322, 120, 17
|
||||
cloud-mouth-closed
|
||||
bounds: 180, 201, 49, 16
|
||||
cloud-mouth-open
|
||||
bounds: 180, 219, 59, 35
|
||||
leaf-big
|
||||
bounds: 448, 205, 20, 49
|
||||
rotate: 90
|
||||
leaf-small
|
||||
bounds: 993, 278, 17, 30
|
||||
petal-1
|
||||
bounds: 241, 236, 26, 18
|
||||
petal-2
|
||||
bounds: 993, 248, 28, 17
|
||||
rotate: 90
|
||||
petal-3
|
||||
bounds: 993, 310, 29, 21
|
||||
rotate: 90
|
||||
pot-base
|
||||
bounds: 180, 256, 76, 59
|
||||
pot-eyes-closed
|
||||
bounds: 500, 330, 46, 9
|
||||
pot-eyes-open
|
||||
bounds: 499, 214, 40, 11
|
||||
pot-mouth-open
|
||||
bounds: 241, 220, 14, 16
|
||||
rotate: 90
|
||||
pot-mouth-pouty
|
||||
bounds: 521, 202, 18, 10
|
||||
pot-mouth-smile
|
||||
bounds: 993, 198, 14, 10
|
||||
pot-mouth-smile-big
|
||||
bounds: 499, 203, 20, 9
|
||||
rain-blue
|
||||
bounds: 241, 206, 12, 18
|
||||
rotate: 90
|
||||
rain-color
|
||||
bounds: 258, 298, 9, 17
|
||||
rain-green
|
||||
bounds: 993, 210, 12, 18
|
||||
rotate: 90
|
||||
rain-white
|
||||
bounds: 993, 224, 12, 22
|
||||
rain-white-reflex
|
||||
bounds: 393, 324, 5, 10
|
||||
rotate: 90
|
||||
stem
|
||||
bounds: 393, 331, 8, 105
|
||||
rotate: 90
|
||||
stem-end
|
||||
bounds: 1007, 233, 13, 13
|
||||
|
Before Width: | Height: | Size: 341 KiB |
@ -1,83 +0,0 @@
|
||||
cloud-pot.png
|
||||
size: 1024, 512
|
||||
filter: Linear, Linear
|
||||
scale: 0.5
|
||||
cloud-base-1
|
||||
bounds: 548, 129, 233, 210
|
||||
cloud-base-10
|
||||
bounds: 448, 227, 97, 101
|
||||
cloud-base-2
|
||||
bounds: 783, 129, 210, 208
|
||||
rotate: 90
|
||||
cloud-base-3
|
||||
bounds: 271, 156, 175, 164
|
||||
cloud-base-4
|
||||
bounds: 2, 148, 176, 163
|
||||
cloud-base-5
|
||||
bounds: 495, 2, 145, 125
|
||||
cloud-base-6
|
||||
bounds: 332, 18, 161, 136
|
||||
cloud-base-7
|
||||
bounds: 180, 5, 150, 149
|
||||
cloud-base-8
|
||||
bounds: 2, 18, 154, 128
|
||||
cloud-base-9
|
||||
bounds: 862, 19, 107, 108
|
||||
cloud-cheeks
|
||||
bounds: 642, 48, 218, 79
|
||||
cloud-eyes-closed
|
||||
bounds: 137, 317, 132, 22
|
||||
cloud-eyes-open
|
||||
bounds: 2, 313, 133, 26
|
||||
cloud-eyes-reflex
|
||||
bounds: 271, 322, 120, 17
|
||||
cloud-mouth-closed
|
||||
bounds: 180, 201, 49, 16
|
||||
cloud-mouth-open
|
||||
bounds: 180, 219, 59, 35
|
||||
leaf-big
|
||||
bounds: 448, 205, 20, 49
|
||||
rotate: 90
|
||||
leaf-small
|
||||
bounds: 993, 278, 17, 30
|
||||
petal-1
|
||||
bounds: 241, 236, 26, 18
|
||||
petal-2
|
||||
bounds: 993, 248, 28, 17
|
||||
rotate: 90
|
||||
petal-3
|
||||
bounds: 993, 310, 29, 21
|
||||
rotate: 90
|
||||
pot-base
|
||||
bounds: 180, 256, 76, 59
|
||||
pot-eyes-closed
|
||||
bounds: 500, 330, 46, 9
|
||||
pot-eyes-open
|
||||
bounds: 499, 214, 40, 11
|
||||
pot-mouth-open
|
||||
bounds: 241, 220, 14, 16
|
||||
rotate: 90
|
||||
pot-mouth-pouty
|
||||
bounds: 521, 202, 18, 10
|
||||
pot-mouth-smile
|
||||
bounds: 993, 198, 14, 10
|
||||
pot-mouth-smile-big
|
||||
bounds: 499, 203, 20, 9
|
||||
rain-blue
|
||||
bounds: 241, 206, 12, 18
|
||||
rotate: 90
|
||||
rain-color
|
||||
bounds: 258, 298, 9, 17
|
||||
rain-green
|
||||
bounds: 993, 210, 12, 18
|
||||
rotate: 90
|
||||
rain-white
|
||||
bounds: 993, 224, 12, 22
|
||||
rain-white-reflex
|
||||
bounds: 393, 324, 5, 10
|
||||
rotate: 90
|
||||
stem
|
||||
bounds: 393, 331, 8, 105
|
||||
rotate: 90
|
||||
stem-end
|
||||
bounds: 1007, 233, 13, 13
|
||||
@ -1,846 +0,0 @@
|
||||
{
|
||||
"skeleton": {
|
||||
"hash": "XPuWaTjiwek",
|
||||
"spine": "4.3.37-beta",
|
||||
"x": -345,
|
||||
"y": -17,
|
||||
"width": 756,
|
||||
"height": 1098,
|
||||
"images": "./images/",
|
||||
"audio": ""
|
||||
},
|
||||
"bones": [
|
||||
{ "name": "root" },
|
||||
{ "name": "pot-control", "parent": "root", "x": 5, "y": 42, "color": "8828ffff", "icon": "arrowsB" },
|
||||
{ "name": "cloud", "parent": "pot-control", "x": 26.5, "y": 772, "color": "1ee8c0ff", "icon": "circle" },
|
||||
{ "name": "cloud-base-1", "parent": "cloud", "x": -4, "y": 57, "color": "b0d5eaff" },
|
||||
{ "name": "cloud-base-2", "parent": "cloud-base-1", "x": 148.5, "y": -18.5, "color": "b0d5eaff" },
|
||||
{ "name": "cloud-base-3", "parent": "cloud-base-1", "x": -182, "y": -87.5, "color": "b0d5eaff" },
|
||||
{ "name": "cloud-base-4", "parent": "cloud", "x": -31.5, "y": -77, "color": "b0d5eaff" },
|
||||
{ "name": "cloud-base-5", "parent": "cloud-base-4", "x": 177.5, "y": 8, "color": "b0d5eaff" },
|
||||
{ "name": "cloud-base-6", "parent": "cloud-base-1", "x": -150.5, "y": 40, "color": "b0d5eaff" },
|
||||
{ "name": "cloud-base-7", "parent": "cloud-base-1", "x": 8.5, "y": 36.5, "color": "b0d5eaff" },
|
||||
{ "name": "cloud-base-8", "parent": "cloud-base-2", "x": 3.5, "y": 68.5, "color": "b0d5eaff" },
|
||||
{ "name": "cloud-base-9", "parent": "cloud-base-3", "x": -83.5, "y": 30.5, "color": "b0d5eaff" },
|
||||
{ "name": "cloud-base-10", "parent": "cloud-base-5", "x": 137, "y": 54.5, "color": "b0d5eaff" },
|
||||
{ "name": "rain-blue", "parent": "cloud", "x": 102.49, "y": -26, "color": "2360e3ff", "icon": "diamond" },
|
||||
{ "name": "rain-color", "parent": "cloud", "x": -39.42, "y": -26, "color": "2360e3ff", "icon": "diamond" },
|
||||
{ "name": "rain-green", "parent": "cloud", "x": 35.08, "y": -26, "color": "2360e3ff", "icon": "diamond" },
|
||||
{ "name": "rain-white", "parent": "cloud", "x": -103.92, "y": -26, "color": "2360e3ff", "icon": "diamond" },
|
||||
{ "name": "pot", "parent": "pot-control", "x": -5, "y": -42, "color": "8828ffff" },
|
||||
{ "name": "pot-face", "parent": "pot", "x": -1.06, "y": 28.16, "color": "f38383ff", "icon": "gear" },
|
||||
{
|
||||
"name": "leaf-big",
|
||||
"parent": "pot",
|
||||
"length": 46.73,
|
||||
"rotation": 119.24,
|
||||
"x": 4.04,
|
||||
"y": 95.05,
|
||||
"color": "abe323ff"
|
||||
},
|
||||
{ "name": "leaf-big-tip", "parent": "leaf-big", "length": 46.73, "x": 46.73, "color": "abe323ff" },
|
||||
{
|
||||
"name": "leaf-small",
|
||||
"parent": "pot",
|
||||
"length": 51.32,
|
||||
"rotation": 50.93,
|
||||
"x": 10.16,
|
||||
"y": 96.81,
|
||||
"color": "abe323ff"
|
||||
},
|
||||
{
|
||||
"name": "stem",
|
||||
"parent": "pot",
|
||||
"length": 104.76,
|
||||
"rotation": 90,
|
||||
"x": 7.24,
|
||||
"y": 92.61,
|
||||
"color": "abe323ff"
|
||||
},
|
||||
{ "name": "stem2", "parent": "stem", "length": 69.84, "x": 104.76, "color": "abe323ff" },
|
||||
{ "name": "stem3", "parent": "stem2", "length": 34.92, "x": 69.84, "color": "abe323ff" },
|
||||
{
|
||||
"name": "petal-3",
|
||||
"parent": "stem3",
|
||||
"length": 37.74,
|
||||
"rotation": 1.03,
|
||||
"x": 30.73,
|
||||
"y": 0.64,
|
||||
"color": "2381e3ff"
|
||||
},
|
||||
{
|
||||
"name": "petal-1",
|
||||
"parent": "stem3",
|
||||
"length": 40.11,
|
||||
"rotation": 70.18,
|
||||
"x": 34.13,
|
||||
"y": 3.02,
|
||||
"color": "2381e3ff"
|
||||
},
|
||||
{
|
||||
"name": "petal-2",
|
||||
"parent": "stem3",
|
||||
"length": 48.62,
|
||||
"rotation": -80.34,
|
||||
"x": 32.09,
|
||||
"y": -4.46,
|
||||
"color": "2381e3ff"
|
||||
},
|
||||
{ "name": "cloud-face", "parent": "cloud", "y": 14.93, "color": "9e82ffff", "icon": "arrowsB" }
|
||||
],
|
||||
"slots": [
|
||||
{ "name": "rain/rain-green", "bone": "rain-green", "attachment": "rain-green" },
|
||||
{ "name": "rain/rain-blue", "bone": "rain-blue", "attachment": "rain-blue" },
|
||||
{ "name": "rain/rain-color", "bone": "rain-color", "attachment": "rain-color" },
|
||||
{ "name": "rain/rain-white", "bone": "rain-white", "attachment": "rain-white" },
|
||||
{ "name": "rain/rain-white-reflex", "bone": "rain-white", "attachment": "rain-white-reflex" },
|
||||
{ "name": "flower/petal-1", "bone": "petal-1", "attachment": "petal-1" },
|
||||
{ "name": "flower/petal-2", "bone": "petal-2", "attachment": "petal-2" },
|
||||
{ "name": "flower/petal-3", "bone": "petal-3", "attachment": "petal-3" },
|
||||
{ "name": "flower/stem", "bone": "stem", "attachment": "stem" },
|
||||
{ "name": "flower/leaf-big", "bone": "leaf-big", "attachment": "leaf-big" },
|
||||
{ "name": "flower/leaf-small", "bone": "leaf-small", "attachment": "leaf-small" },
|
||||
{ "name": "flower/stem-end", "bone": "stem3", "attachment": "stem-end" },
|
||||
{ "name": "pot/pot-base", "bone": "pot", "attachment": "pot-base" },
|
||||
{ "name": "pot/pot-mouth", "bone": "pot-face", "attachment": "pot-mouth-smile-big" },
|
||||
{ "name": "pot/pot-eyes", "bone": "pot-face", "attachment": "pot-eyes-open" },
|
||||
{ "name": "cloud/cloud-base/cloud-base-1", "bone": "cloud-base-1", "attachment": "cloud-base-1" },
|
||||
{ "name": "cloud/cloud-base/cloud-base-2", "bone": "cloud-base-2", "attachment": "cloud-base-2" },
|
||||
{ "name": "cloud/cloud-base/cloud-base-3", "bone": "cloud-base-3", "attachment": "cloud-base-3" },
|
||||
{ "name": "cloud/cloud-base/cloud-base-4", "bone": "cloud-base-4", "attachment": "cloud-base-4" },
|
||||
{ "name": "cloud/cloud-base/cloud-base-5", "bone": "cloud-base-5", "attachment": "cloud-base-5" },
|
||||
{ "name": "cloud/cloud-base/cloud-base-6", "bone": "cloud-base-6", "attachment": "cloud-base-6" },
|
||||
{ "name": "cloud/cloud-base/cloud-base-7", "bone": "cloud-base-7", "attachment": "cloud-base-7" },
|
||||
{ "name": "cloud/cloud-base/cloud-base-8", "bone": "cloud-base-8", "attachment": "cloud-base-8" },
|
||||
{ "name": "cloud/cloud-base/cloud-base-9", "bone": "cloud-base-9", "attachment": "cloud-base-9" },
|
||||
{ "name": "cloud/cloud-base/cloud-base-10", "bone": "cloud-base-10", "attachment": "cloud-base-10" },
|
||||
{ "name": "cloud/cloud-cheeks", "bone": "cloud-face", "attachment": "cloud-cheeks" },
|
||||
{ "name": "cloud/cloud-eyes", "bone": "cloud-face", "attachment": "cloud-eyes-open" },
|
||||
{ "name": "cloud/cloud-eyes-reflex", "bone": "cloud-face", "attachment": "cloud-eyes-reflex" },
|
||||
{ "name": "cloud/cloud-mouth", "bone": "cloud-face", "attachment": "cloud-mouth-closed" }
|
||||
],
|
||||
"constraints": [
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "cloud",
|
||||
"bone": "cloud",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"strength": 172.8,
|
||||
"damping": 0.8571,
|
||||
"mass": 3
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "rain/rain-white",
|
||||
"bone": "rain-white",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"inertia": 1,
|
||||
"strength": 0,
|
||||
"damping": 1,
|
||||
"gravity": 70
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "rain/rain-green",
|
||||
"bone": "rain-green",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"inertia": 1,
|
||||
"strength": 0,
|
||||
"damping": 1,
|
||||
"gravity": 70
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "rain/rain-color",
|
||||
"bone": "rain-color",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"inertia": 1,
|
||||
"strength": 0,
|
||||
"damping": 1,
|
||||
"gravity": 70
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "rain/rain-blue",
|
||||
"bone": "rain-blue",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"inertia": 1,
|
||||
"strength": 0,
|
||||
"damping": 1,
|
||||
"gravity": 70
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "cloud-base/cloud-base-1",
|
||||
"bone": "cloud-base-1",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"limit": 500,
|
||||
"inertia": 0.3741,
|
||||
"strength": 134.7,
|
||||
"damping": 0.8163,
|
||||
"mass": 2.8
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "cloud-base/cloud-base-2",
|
||||
"bone": "cloud-base-2",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"limit": 300,
|
||||
"inertia": 0.3741,
|
||||
"strength": 134.7,
|
||||
"damping": 0.8163,
|
||||
"mass": 2.8
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "cloud-base/cloud-base-3",
|
||||
"bone": "cloud-base-3",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"limit": 300,
|
||||
"inertia": 0.3741,
|
||||
"strength": 134.7,
|
||||
"damping": 0.8163,
|
||||
"mass": 2.8
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "cloud-base/cloud-base-4",
|
||||
"bone": "cloud-base-4",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"limit": 500,
|
||||
"inertia": 0.3741,
|
||||
"strength": 134.7,
|
||||
"damping": 0.8163,
|
||||
"mass": 2.8
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "cloud-base/cloud-base-5",
|
||||
"bone": "cloud-base-5",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"limit": 300,
|
||||
"inertia": 0.3741,
|
||||
"strength": 134.7,
|
||||
"damping": 0.8163,
|
||||
"mass": 2.8
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "cloud-base/cloud-base-6",
|
||||
"bone": "cloud-base-6",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"limit": 300,
|
||||
"inertia": 0.3741,
|
||||
"strength": 134.7,
|
||||
"damping": 0.8163,
|
||||
"mass": 2.8
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "cloud-base/cloud-base-7",
|
||||
"bone": "cloud-base-7",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"limit": 300,
|
||||
"inertia": 0.3741,
|
||||
"strength": 134.7,
|
||||
"damping": 0.8163,
|
||||
"mass": 2.8
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "cloud-base/cloud-base-8",
|
||||
"bone": "cloud-base-8",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"limit": 300,
|
||||
"inertia": 0.3741,
|
||||
"strength": 134.7,
|
||||
"damping": 0.8163,
|
||||
"mass": 2.8
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "cloud-base/cloud-base-9",
|
||||
"bone": "cloud-base-9",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"limit": 300,
|
||||
"inertia": 0.3741,
|
||||
"strength": 134.7,
|
||||
"damping": 0.8163,
|
||||
"mass": 2.8
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "cloud-base/cloud-base-10",
|
||||
"bone": "cloud-base-10",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"limit": 300,
|
||||
"inertia": 0.3741,
|
||||
"strength": 134.7,
|
||||
"damping": 0.8163,
|
||||
"mass": 2.8
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "plant/leaf-big",
|
||||
"bone": "leaf-big",
|
||||
"rotate": 0.7532,
|
||||
"shearX": 0.2468,
|
||||
"limit": 500,
|
||||
"strength": 160.5,
|
||||
"damping": 0.8367,
|
||||
"mass": 4
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "plant/leaf-small",
|
||||
"bone": "leaf-small",
|
||||
"rotate": 0.6026,
|
||||
"limit": 500,
|
||||
"strength": 160.5,
|
||||
"damping": 0.8367,
|
||||
"mass": 4
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "plant/stem",
|
||||
"bone": "stem",
|
||||
"rotate": 0.8205,
|
||||
"limit": 700,
|
||||
"strength": 152.4,
|
||||
"damping": 0.9388,
|
||||
"mass": 2.6
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "plant/stem2",
|
||||
"bone": "stem2",
|
||||
"rotate": 0.8205,
|
||||
"limit": 700,
|
||||
"strength": 152.4,
|
||||
"damping": 0.9388,
|
||||
"mass": 2.6
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "plant/stem3",
|
||||
"bone": "stem3",
|
||||
"rotate": 0.8205,
|
||||
"limit": 700,
|
||||
"strength": 152.4,
|
||||
"damping": 0.9388,
|
||||
"mass": 2.6
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "plant/petal-1",
|
||||
"bone": "petal-1",
|
||||
"rotate": 1,
|
||||
"limit": 500,
|
||||
"strength": 164.6,
|
||||
"damping": 0.6531,
|
||||
"mass": 2.6
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "plant/petal-3",
|
||||
"bone": "petal-3",
|
||||
"rotate": 1,
|
||||
"limit": 500,
|
||||
"strength": 164.6,
|
||||
"damping": 0.7823,
|
||||
"mass": 3.83
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "plant/petal-2",
|
||||
"bone": "petal-2",
|
||||
"rotate": 1,
|
||||
"limit": 500,
|
||||
"strength": 164.6,
|
||||
"damping": 0.6531,
|
||||
"mass": 2.6
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "plant/leaf-big-tip",
|
||||
"bone": "leaf-big-tip",
|
||||
"rotate": 1,
|
||||
"limit": 500,
|
||||
"strength": 160.5,
|
||||
"damping": 0.8367,
|
||||
"mass": 4
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "pot-face",
|
||||
"bone": "pot-face",
|
||||
"x": 0.1667,
|
||||
"y": 0.1026,
|
||||
"limit": 500,
|
||||
"strength": 137.3,
|
||||
"damping": 0.6078
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "cloud-face",
|
||||
"bone": "cloud-face",
|
||||
"x": 0.1923,
|
||||
"y": 0.141,
|
||||
"limit": 500,
|
||||
"damping": 0.15
|
||||
}
|
||||
],
|
||||
"skins": [
|
||||
{
|
||||
"name": "default",
|
||||
"attachments": {
|
||||
"cloud/cloud-base/cloud-base-1": {
|
||||
"cloud-base-1": { "width": 465, "height": 420 }
|
||||
},
|
||||
"cloud/cloud-base/cloud-base-2": {
|
||||
"cloud-base-2": { "width": 420, "height": 415 }
|
||||
},
|
||||
"cloud/cloud-base/cloud-base-3": {
|
||||
"cloud-base-3": { "width": 349, "height": 327 }
|
||||
},
|
||||
"cloud/cloud-base/cloud-base-4": {
|
||||
"cloud-base-4": { "width": 352, "height": 326 }
|
||||
},
|
||||
"cloud/cloud-base/cloud-base-5": {
|
||||
"cloud-base-5": { "width": 289, "height": 250 }
|
||||
},
|
||||
"cloud/cloud-base/cloud-base-6": {
|
||||
"cloud-base-6": { "width": 322, "height": 272 }
|
||||
},
|
||||
"cloud/cloud-base/cloud-base-7": {
|
||||
"cloud-base-7": { "width": 300, "height": 297 }
|
||||
},
|
||||
"cloud/cloud-base/cloud-base-8": {
|
||||
"cloud-base-8": { "width": 307, "height": 256 }
|
||||
},
|
||||
"cloud/cloud-base/cloud-base-9": {
|
||||
"cloud-base-9": { "width": 214, "height": 216 }
|
||||
},
|
||||
"cloud/cloud-base/cloud-base-10": {
|
||||
"cloud-base-10": { "width": 193, "height": 201 }
|
||||
},
|
||||
"cloud/cloud-cheeks": {
|
||||
"cloud-cheeks": { "x": -19, "y": -53.93, "width": 435, "height": 158 }
|
||||
},
|
||||
"cloud/cloud-eyes": {
|
||||
"cloud-eyes-closed": { "x": -10, "y": -5.43, "width": 263, "height": 43 },
|
||||
"cloud-eyes-open": { "x": -8, "y": -4.43, "width": 265, "height": 51 }
|
||||
},
|
||||
"cloud/cloud-eyes-reflex": {
|
||||
"cloud-eyes-reflex": { "x": -10, "y": 2.07, "width": 239, "height": 34 }
|
||||
},
|
||||
"cloud/cloud-mouth": {
|
||||
"cloud-mouth-closed": { "y": -14.93, "width": 97, "height": 32 },
|
||||
"cloud-mouth-open": { "x": -0.5, "y": -27.93, "width": 118, "height": 70 }
|
||||
},
|
||||
"flower/leaf-big": {
|
||||
"leaf-big": {
|
||||
"type": "mesh",
|
||||
"uvs": [ 1, 1, 0, 1, 0, 0.75, 0, 0.5, 0, 0.25, 0, 0, 1, 0, 1, 0.25, 1, 0.5, 1, 0.75 ],
|
||||
"triangles": [ 4, 5, 6, 7, 4, 6, 3, 4, 7, 8, 3, 7, 2, 3, 8, 9, 2, 8, 1, 2, 9, 0, 1, 9 ],
|
||||
"vertices": [ 1, 19, -5.05, -21.72, 1, 1, 19, -5.05, 18.28, 1, 2, 19, 19.45, 18.28, 0.75483, 20, -27.28, 18.28, 0.24517, 2, 19, 43.95, 18.28, 0.50538, 20, -2.78, 18.28, 0.49462, 2, 19, 68.45, 18.28, 0.25278, 20, 21.72, 18.28, 0.74722, 1, 20, 46.22, 18.28, 1, 1, 20, 46.22, -21.72, 1, 2, 19, 68.45, -21.72, 0.24458, 20, 21.72, -21.72, 0.75542, 2, 19, 43.95, -21.72, 0.4937, 20, -2.78, -21.72, 0.5063, 2, 19, 19.45, -21.72, 0.74651, 20, -27.28, -21.72, 0.25349 ],
|
||||
"hull": 10,
|
||||
"edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 0 ],
|
||||
"width": 40,
|
||||
"height": 98
|
||||
}
|
||||
},
|
||||
"flower/leaf-small": {
|
||||
"leaf-small": { "x": 25.02, "y": 0.4, "rotation": -91.36, "width": 34, "height": 59 }
|
||||
},
|
||||
"flower/petal-1": {
|
||||
"petal-1": { "x": 18.88, "y": -4.54, "rotation": -160.18, "width": 52, "height": 36 }
|
||||
},
|
||||
"flower/petal-2": {
|
||||
"petal-2": { "x": 21.96, "y": 2.06, "rotation": -9.66, "width": 56, "height": 34 }
|
||||
},
|
||||
"flower/petal-3": {
|
||||
"petal-3": { "x": 16.97, "y": -5.71, "rotation": -91.03, "width": 58, "height": 42 }
|
||||
},
|
||||
"flower/stem": {
|
||||
"stem": {
|
||||
"type": "mesh",
|
||||
"uvs": [ 1, 1, 0, 1, 0, 0.90909, 0, 0.81818, 0, 0.72727, 0, 0.63636, 0, 0.54545, 0, 0.45455, 0, 0.36364, 0, 0.27273, 0, 0.18182, 0, 0.09091, 0, 0, 1, 0, 1, 0.09091, 1, 0.18182, 1, 0.27273, 1, 0.36364, 1, 0.45455, 1, 0.54545, 1, 0.63636, 1, 0.72727, 1, 0.81818, 1, 0.90909 ],
|
||||
"triangles": [ 11, 12, 13, 14, 11, 13, 10, 11, 14, 15, 10, 14, 9, 10, 15, 16, 9, 15, 8, 9, 16, 17, 8, 16, 7, 8, 17, 18, 7, 17, 6, 7, 18, 19, 6, 18, 5, 6, 19, 20, 5, 19, 4, 5, 20, 21, 4, 20, 3, 4, 21, 22, 3, 21, 2, 3, 22, 23, 2, 22, 1, 2, 23, 0, 1, 23 ],
|
||||
"vertices": [ 1, 22, -3.61, -6.76, 1, 1, 22, -3.61, 9.24, 1, 3, 22, 15.49, 9.24, 0.97258, 23, -89.27, 9.24, 0.02734, 24, -159.11, 9.24, 8.0E-5, 3, 22, 34.58, 9.24, 0.92758, 23, -70.18, 9.24, 0.07175, 24, -140.02, 9.24, 6.7E-4, 3, 22, 53.67, 9.24, 0.851, 23, -51.09, 9.24, 0.14565, 24, -120.93, 9.24, 0.00335, 3, 22, 72.76, 9.24, 0.73702, 23, -32, 9.24, 0.25075, 24, -101.84, 9.24, 0.01223, 3, 22, 91.85, 9.24, 0.59184, 23, -12.91, 9.24, 0.37282, 24, -82.74, 9.24, 0.03534, 3, 22, 110.94, 9.24, 0.43333, 23, 6.18, 9.24, 0.482, 24, -63.65, 9.24, 0.08467, 3, 22, 130.03, 9.24, 0.28467, 23, 25.27, 9.24, 0.54153, 24, -44.56, 9.24, 0.1738, 3, 22, 149.12, 9.24, 0.16502, 23, 44.37, 9.24, 0.52188, 24, -25.47, 9.24, 0.3131, 3, 22, 168.21, 9.24, 0.08234, 23, 63.46, 9.24, 0.4129, 24, -6.38, 9.24, 0.50477, 3, 22, 187.3, 9.24, 0.03198, 23, 82.55, 9.24, 0.228, 24, 12.71, 9.24, 0.74001, 1, 24, 31.8, 9.24, 1, 1, 24, 31.8, -6.76, 1, 3, 22, 187.3, -6.76, 0.02989, 23, 82.55, -6.76, 0.23389, 24, 12.71, -6.76, 0.73622, 3, 22, 168.21, -6.76, 0.07799, 23, 63.46, -6.76, 0.42357, 24, -6.38, -6.76, 0.49844, 3, 22, 149.12, -6.76, 0.1584, 23, 44.37, -6.76, 0.53549, 24, -25.47, -6.76, 0.30611, 3, 22, 130.03, -6.76, 0.27629, 23, 25.27, -6.76, 0.55594, 24, -44.56, -6.76, 0.16777, 3, 22, 110.94, -6.76, 0.42428, 23, 6.18, -6.76, 0.49529, 24, -63.65, -6.76, 0.08044, 3, 22, 91.85, -6.76, 0.58346, 23, -12.91, -6.76, 0.38366, 24, -82.74, -6.76, 0.03289, 3, 22, 72.76, -6.76, 0.73038, 23, -32, -6.76, 0.25856, 24, -101.84, -6.76, 0.01107, 3, 22, 53.67, -6.76, 0.84652, 23, -51.09, -6.76, 0.15057, 24, -120.93, -6.76, 0.00291, 3, 22, 34.58, -6.76, 0.92506, 23, -70.18, -6.76, 0.0744, 24, -140.02, -6.76, 5.4E-4, 3, 22, 15.49, -6.76, 0.97151, 23, -89.27, -6.76, 0.02843, 24, -159.11, -6.76, 6.0E-5 ],
|
||||
"hull": 24,
|
||||
"edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 0 ],
|
||||
"width": 16,
|
||||
"height": 210
|
||||
}
|
||||
},
|
||||
"flower/stem-end": {
|
||||
"stem-end": { "x": 25.8, "y": -0.26, "rotation": -90, "width": 25, "height": 26 }
|
||||
},
|
||||
"pot/pot-base": {
|
||||
"pot-base": { "x": 5, "y": 42, "width": 152, "height": 118 }
|
||||
},
|
||||
"pot/pot-eyes": {
|
||||
"pot-eyes-closed": { "x": -0.94, "y": 2.34, "width": 92, "height": 17 },
|
||||
"pot-eyes-open": { "x": 0.06, "y": 3.84, "width": 80, "height": 22 }
|
||||
},
|
||||
"pot/pot-mouth": {
|
||||
"pot-mouth-open": { "x": -1.44, "y": -13.66, "width": 27, "height": 31 },
|
||||
"pot-mouth-pouty": { "x": 0.56, "y": -12.66, "width": 35, "height": 19 },
|
||||
"pot-mouth-smile": { "x": 0.56, "y": -12.16, "width": 27, "height": 20 },
|
||||
"pot-mouth-smile-big": { "x": 1.56, "y": -9.16, "width": 39, "height": 18 }
|
||||
},
|
||||
"rain/rain-blue": {
|
||||
"rain-blue": { "width": 23, "height": 36 }
|
||||
},
|
||||
"rain/rain-color": {
|
||||
"rain-color": { "width": 18, "height": 34 }
|
||||
},
|
||||
"rain/rain-green": {
|
||||
"rain-green": { "width": 23, "height": 36 }
|
||||
},
|
||||
"rain/rain-white": {
|
||||
"rain-white": { "width": 23, "height": 44 }
|
||||
},
|
||||
"rain/rain-white-reflex": {
|
||||
"rain-white-reflex": { "x": -0.5, "y": 3.5, "width": 10, "height": 19 }
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"animations": {
|
||||
"playing-in-the-rain": {
|
||||
"slots": {
|
||||
"cloud/cloud-eyes": {
|
||||
"attachment": [
|
||||
{ "time": 0.2, "name": "cloud-eyes-closed" },
|
||||
{ "time": 0.9, "name": "cloud-eyes-open" },
|
||||
{ "time": 1.7667, "name": "cloud-eyes-closed" },
|
||||
{ "time": 1.9333, "name": "cloud-eyes-open" },
|
||||
{ "time": 2.4333, "name": "cloud-eyes-closed" },
|
||||
{ "time": 2.6, "name": "cloud-eyes-open" },
|
||||
{ "time": 3.9333, "name": "cloud-eyes-closed" },
|
||||
{ "time": 4.1, "name": "cloud-eyes-open" }
|
||||
]
|
||||
},
|
||||
"cloud/cloud-mouth": {
|
||||
"attachment": [
|
||||
{ "time": 0.2, "name": "cloud-mouth-open" },
|
||||
{ "time": 0.9, "name": "cloud-mouth-closed" }
|
||||
]
|
||||
},
|
||||
"pot/pot-eyes": {
|
||||
"attachment": [
|
||||
{ "time": 0.1333, "name": "pot-eyes-closed" },
|
||||
{ "time": 0.3, "name": "pot-eyes-open" },
|
||||
{ "time": 1.0667, "name": "pot-eyes-closed" },
|
||||
{ "time": 1.5, "name": "pot-eyes-open" },
|
||||
{ "time": 3.0333, "name": "pot-eyes-closed" },
|
||||
{ "time": 3.2333, "name": "pot-eyes-open" },
|
||||
{ "time": 3.4667, "name": "pot-eyes-closed" },
|
||||
{ "time": 3.6667, "name": "pot-eyes-open" }
|
||||
]
|
||||
},
|
||||
"pot/pot-mouth": {
|
||||
"attachment": [
|
||||
{ "time": 0.1333, "name": "pot-mouth-open" },
|
||||
{ "time": 0.3, "name": "pot-mouth-smile-big" },
|
||||
{ "time": 1.0667, "name": "pot-mouth-pouty" },
|
||||
{ "time": 2.4, "name": "pot-mouth-smile" },
|
||||
{ "time": 3.0333, "name": "pot-mouth-smile-big" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"bones": {
|
||||
"pot": {
|
||||
"rotate": [
|
||||
{ "time": 1.1 },
|
||||
{ "time": 1.2, "value": -12.76 },
|
||||
{ "time": 1.5333, "curve": "stepped" },
|
||||
{ "time": 3.7667 },
|
||||
{ "time": 3.9, "value": 8.28 },
|
||||
{ "time": 4.2333, "value": -4.34 },
|
||||
{ "time": 4.4333 }
|
||||
],
|
||||
"scale": [
|
||||
{},
|
||||
{ "time": 0.2, "y": 0.752 },
|
||||
{ "time": 0.4, "x": 0.845, "y": 1.068 },
|
||||
{ "time": 0.6333 }
|
||||
]
|
||||
},
|
||||
"pot-control": {
|
||||
"translatex": [
|
||||
{
|
||||
"time": 1.0667,
|
||||
"curve": [ 1.222, -203.48, 1.378, -610.44 ]
|
||||
},
|
||||
{ "time": 1.5333, "value": -610.44, "curve": "stepped" },
|
||||
{
|
||||
"time": 2.2333,
|
||||
"value": -610.44,
|
||||
"curve": [ 2.389, -610.44, 2.544, -478.45 ]
|
||||
},
|
||||
{ "time": 2.7, "value": -478.45, "curve": "stepped" },
|
||||
{
|
||||
"time": 3.8333,
|
||||
"value": -478.45,
|
||||
"curve": [ 3.971, -478.45, 4.095, -135.56 ]
|
||||
},
|
||||
{ "time": 4.2333 }
|
||||
],
|
||||
"translatey": [
|
||||
{
|
||||
"time": 1.0333,
|
||||
"curve": [ 1.089, 10.56, 1.144, 44.34 ]
|
||||
},
|
||||
{
|
||||
"time": 1.2,
|
||||
"value": 44.34,
|
||||
"curve": [ 1.256, 44.34, 1.311, 0 ]
|
||||
},
|
||||
{ "time": 1.3667, "curve": "stepped" },
|
||||
{
|
||||
"time": 2.2333,
|
||||
"curve": [ 2.408, 0, 2.392, 44.34 ]
|
||||
},
|
||||
{
|
||||
"time": 2.4333,
|
||||
"value": 44.34,
|
||||
"curve": [ 2.455, 44.34, 2.51, 0 ]
|
||||
},
|
||||
{ "time": 2.6, "curve": "stepped" },
|
||||
{
|
||||
"time": 3.8,
|
||||
"curve": [ 3.841, 14.78, 3.893, 44.34 ]
|
||||
},
|
||||
{
|
||||
"time": 3.9333,
|
||||
"value": 44.34,
|
||||
"curve": [ 4.023, 44.34, 4.111, 14.78 ]
|
||||
},
|
||||
{ "time": 4.2 }
|
||||
]
|
||||
},
|
||||
"cloud-base-1": {
|
||||
"rotate": [
|
||||
{
|
||||
"curve": [ 0.144, -9.36, 0.289, -17.29 ]
|
||||
},
|
||||
{
|
||||
"time": 0.4333,
|
||||
"value": -17.29,
|
||||
"curve": [ 0.5, -17.29, 0.567, -4.32 ]
|
||||
},
|
||||
{ "time": 0.6333 }
|
||||
],
|
||||
"scale": [
|
||||
{
|
||||
"curve": [ 0.089, 1, 0.178, 1.064, 0.089, 1, 0.178, 1.064 ]
|
||||
},
|
||||
{
|
||||
"time": 0.2667,
|
||||
"x": 1.064,
|
||||
"y": 1.064,
|
||||
"curve": [ 0.411, 1.064, 0.556, 1.021, 0.411, 1.064, 0.556, 1.021 ]
|
||||
},
|
||||
{ "time": 0.7 }
|
||||
]
|
||||
},
|
||||
"cloud-base-4": {
|
||||
"rotate": [
|
||||
{
|
||||
"curve": [ 0.1, 5.55, 0.2, 14.81 ]
|
||||
},
|
||||
{
|
||||
"time": 0.3,
|
||||
"value": 14.81,
|
||||
"curve": [ 0.467, 14.81, 0.633, 9.25 ]
|
||||
},
|
||||
{ "time": 0.8 }
|
||||
],
|
||||
"scale": [
|
||||
{
|
||||
"curve": [ 0.089, 1, 0.178, 1.064, 0.089, 1, 0.178, 1.064 ]
|
||||
},
|
||||
{
|
||||
"time": 0.2667,
|
||||
"x": 1.064,
|
||||
"y": 1.064,
|
||||
"curve": [ 0.411, 1.064, 0.556, 1.021, 0.411, 1.064, 0.556, 1.021 ]
|
||||
},
|
||||
{ "time": 0.7 }
|
||||
]
|
||||
},
|
||||
"cloud": {
|
||||
"translate": [
|
||||
{ "time": 0.2333 },
|
||||
{ "time": 0.3333, "y": 30.43 },
|
||||
{ "time": 0.4667 },
|
||||
{ "time": 0.5667, "y": 30.43 },
|
||||
{ "time": 0.6667 },
|
||||
{ "time": 0.7667, "y": 30.43 },
|
||||
{ "time": 0.9333 }
|
||||
]
|
||||
}
|
||||
},
|
||||
"physics": {
|
||||
"rain/rain-blue": {
|
||||
"reset": [
|
||||
{ "time": 0.4667 },
|
||||
{ "time": 0.9333 },
|
||||
{ "time": 1.4 },
|
||||
{ "time": 1.8667 },
|
||||
{ "time": 2.3333 },
|
||||
{ "time": 2.8 },
|
||||
{ "time": 3.2667 },
|
||||
{ "time": 3.7333 },
|
||||
{ "time": 4.2 },
|
||||
{ "time": 4.6667 }
|
||||
]
|
||||
},
|
||||
"rain/rain-color": {
|
||||
"reset": [
|
||||
{ "time": 0.3 },
|
||||
{ "time": 0.7667 },
|
||||
{ "time": 1.2333 },
|
||||
{ "time": 1.7 },
|
||||
{ "time": 2.1667 },
|
||||
{ "time": 2.6333 },
|
||||
{ "time": 3.1 },
|
||||
{ "time": 3.5667 },
|
||||
{ "time": 4.0333 },
|
||||
{ "time": 4.5 }
|
||||
]
|
||||
},
|
||||
"rain/rain-green": {
|
||||
"reset": [
|
||||
{ "time": 0.1333 },
|
||||
{ "time": 0.6 },
|
||||
{ "time": 1.0667 },
|
||||
{ "time": 1.5333 },
|
||||
{ "time": 2 },
|
||||
{ "time": 2.4667 },
|
||||
{ "time": 2.9333 },
|
||||
{ "time": 3.4 },
|
||||
{ "time": 3.8667 },
|
||||
{ "time": 4.3333 }
|
||||
]
|
||||
},
|
||||
"rain/rain-white": {
|
||||
"reset": [
|
||||
{},
|
||||
{ "time": 0.4667 },
|
||||
{ "time": 0.9333 },
|
||||
{ "time": 1.4 },
|
||||
{ "time": 1.8667 },
|
||||
{ "time": 2.3333 },
|
||||
{ "time": 2.8 },
|
||||
{ "time": 3.2667 },
|
||||
{ "time": 3.7333 },
|
||||
{ "time": 4.2 }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"pot-moving-followed-by-rain": {
|
||||
"bones": {
|
||||
"pot-control": {
|
||||
"translate": [
|
||||
{},
|
||||
{ "time": 0.5667, "x": -389.34, "curve": "stepped" },
|
||||
{ "time": 1.1667, "x": -389.34 },
|
||||
{ "time": 2.2, "x": 463.88, "curve": "stepped" },
|
||||
{ "time": 2.4667, "x": 463.88 },
|
||||
{ "time": 3 }
|
||||
]
|
||||
}
|
||||
},
|
||||
"physics": {
|
||||
"rain/rain-blue": {
|
||||
"reset": [
|
||||
{ "time": 0.4667 },
|
||||
{ "time": 0.9333 },
|
||||
{ "time": 1.4 },
|
||||
{ "time": 1.8667 },
|
||||
{ "time": 2.3333 },
|
||||
{ "time": 2.8 },
|
||||
{ "time": 3.2667 }
|
||||
]
|
||||
},
|
||||
"rain/rain-color": {
|
||||
"reset": [
|
||||
{ "time": 0.3 },
|
||||
{ "time": 0.7667 },
|
||||
{ "time": 1.2333 },
|
||||
{ "time": 1.7 },
|
||||
{ "time": 2.1667 },
|
||||
{ "time": 2.6333 },
|
||||
{ "time": 3.1 }
|
||||
]
|
||||
},
|
||||
"rain/rain-green": {
|
||||
"reset": [
|
||||
{ "time": 0.1333 },
|
||||
{ "time": 0.6 },
|
||||
{ "time": 1.0667 },
|
||||
{ "time": 1.5333 },
|
||||
{ "time": 2 },
|
||||
{ "time": 2.4667 },
|
||||
{ "time": 2.9333 }
|
||||
]
|
||||
},
|
||||
"rain/rain-white": {
|
||||
"reset": [
|
||||
{},
|
||||
{ "time": 0.4667 },
|
||||
{ "time": 0.9333 },
|
||||
{ "time": 1.4 },
|
||||
{ "time": 1.8667 },
|
||||
{ "time": 2.3333 },
|
||||
{ "time": 2.8 }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"rain": {
|
||||
"physics": {
|
||||
"rain/rain-blue": {
|
||||
"reset": [
|
||||
{ "time": 0.4667 }
|
||||
]
|
||||
},
|
||||
"rain/rain-color": {
|
||||
"reset": [
|
||||
{ "time": 0.3 }
|
||||
]
|
||||
},
|
||||
"rain/rain-green": {
|
||||
"reset": [
|
||||
{ "time": 0.1333 }
|
||||
]
|
||||
},
|
||||
"rain/rain-white": {
|
||||
"reset": [
|
||||
{}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 327 KiB |
@ -1,20 +0,0 @@
|
||||
coin-pma.png
|
||||
size: 1024, 1024
|
||||
filter: Linear, Linear
|
||||
pma: true
|
||||
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
|
||||
|
Before Width: | Height: | Size: 289 KiB |
@ -1,259 +0,0 @@
|
||||
{
|
||||
"skeleton": {
|
||||
"hash": "aqQIMNiF9ZY",
|
||||
"spine": "4.3.37-beta",
|
||||
"x": -152.5,
|
||||
"y": -151,
|
||||
"width": 305,
|
||||
"height": 302,
|
||||
"images": "./images/",
|
||||
"audio": ""
|
||||
},
|
||||
"bones": [
|
||||
{ "name": "root" },
|
||||
{ "name": "coin-front", "parent": "root" },
|
||||
{ "name": "clipping", "parent": "coin-front" },
|
||||
{ "name": "coin-sides", "parent": "root" },
|
||||
{ "name": "coin-side-round", "parent": "coin-sides" },
|
||||
{ "name": "coin-side-straight", "parent": "coin-sides" },
|
||||
{ "name": "shine", "parent": "root", "x": 243.14 }
|
||||
],
|
||||
"slots": [
|
||||
{ "name": "coin-side", "bone": "coin-side-straight", "color": "ffdb2fff", "attachment": "coin-side-straight" },
|
||||
{ "name": "coin-side-round", "bone": "coin-side-round", "color": "ffdb2fff", "attachment": "coin-side-round" },
|
||||
{ "name": "coin-front-texture", "bone": "coin-front", "color": "868686ff", "attachment": "coin-front-logo" },
|
||||
{ "name": "coin-front-shine", "bone": "coin-front", "color": "888888ff", "dark": "000000", "attachment": "coin-front-shine-logo", "blend": "additive" },
|
||||
{ "name": "clipping", "bone": "clipping", "attachment": "clipping" },
|
||||
{ "name": "shine", "bone": "shine", "color": "ffffff60", "attachment": "shine", "blend": "additive" }
|
||||
],
|
||||
"skins": [
|
||||
{
|
||||
"name": "default",
|
||||
"attachments": {
|
||||
"clipping": {
|
||||
"clipping": {
|
||||
"type": "clipping",
|
||||
"end": "clipping",
|
||||
"vertexCount": 39,
|
||||
"vertices": [ 0.1, 140.26, -26.4, 138.14, -50.51, 131.25, -75.42, 119.06, -98.21, 101.04, -115.44, 82.22, -127.63, 62.08, -136.11, 39.03, -140.08, 19.68, -141.41, -0.19, -140.08, -22.98, -134.78, -45.5, -125.24, -66.44, -113.32, -84.19, -98.21, -101.95, -80.46, -116.52, -61.38, -127.39, -38.92, -134.81, -18.22, -139.27, -0.14, -140.58, 24.23, -138.48, 45.45, -132.46, 67.98, -122.5, 86.58, -110.19, 102.56, -95.25, 115.4, -78.75, 125.36, -61.72, 134, -42.33, 138.46, -22.15, 139.24, -0.15, 138.46, 20.29, 133.48, 39.94, 127.19, 58.54, 117.5, 76.1, 104.4, 92.86, 88.42, 108.32, 69.03, 121.42, 50.43, 130.85, 26.32, 137.4 ],
|
||||
"color": "ce3a3aff"
|
||||
}
|
||||
},
|
||||
"coin-front-shine": {
|
||||
"coin-front-shine-logo": { "width": 282, "height": 282 },
|
||||
"coin-front-shine-spineboy": { "width": 282, "height": 282 }
|
||||
},
|
||||
"coin-front-texture": {
|
||||
"coin-front-logo": { "width": 305, "height": 302 },
|
||||
"coin-front-spineboy": { "width": 305, "height": 302 }
|
||||
},
|
||||
"coin-side": {
|
||||
"coin-side-straight": { "x": 0.5, "width": 17, "height": 282 }
|
||||
},
|
||||
"coin-side-round": {
|
||||
"coin-side-round": { "x": -69.43, "width": 144, "height": 282 }
|
||||
},
|
||||
"shine": {
|
||||
"shine": { "y": 0.5, "scaleX": 1.6004, "scaleY": 1.6004, "width": 72, "height": 245 }
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"animations": {
|
||||
"animation": {
|
||||
"slots": {
|
||||
"coin-front-shine": {
|
||||
"rgba2": [
|
||||
{ "light": "7d7d7dff", "dark": "000000" },
|
||||
{ "time": 0.2667, "light": "000000ff", "dark": "7e7e7e" },
|
||||
{ "time": 0.664, "light": "000000ff", "dark": "000000" },
|
||||
{ "time": 1.0333, "light": "7f7f7fff", "dark": "000000" },
|
||||
{ "time": 1.3333, "light": "404040ff", "dark": "000000" },
|
||||
{ "time": 1.6, "light": "000000ff", "dark": "7e7e7e" },
|
||||
{ "time": 2.0022, "light": "000000ff", "dark": "000000" },
|
||||
{ "time": 2.4, "light": "7f7f7fff", "dark": "000000" },
|
||||
{ "time": 2.6667, "light": "7d7d7dff", "dark": "000000" }
|
||||
],
|
||||
"attachment": [
|
||||
{ "time": 0.6667, "name": "coin-front-shine-spineboy" },
|
||||
{ "time": 2, "name": "coin-front-shine-logo" }
|
||||
]
|
||||
},
|
||||
"coin-front-texture": {
|
||||
"rgba": [
|
||||
{ "color": "858585ff" },
|
||||
{ "time": 0.4, "color": "ffffffff" },
|
||||
{
|
||||
"time": 0.6696,
|
||||
"color": "858585ff",
|
||||
"curve": [ 0.725, 0.59, 0.892, 1, 0.725, 0.59, 0.892, 1, 0.725, 0.59, 0.892, 1, 0.725, 1, 0.892, 1 ]
|
||||
},
|
||||
{ "time": 0.9667, "color": "ffffffff" },
|
||||
{ "time": 1.3318, "color": "858585ff", "curve": "stepped" },
|
||||
{ "time": 1.3333, "color": "858585ff" },
|
||||
{ "time": 1.7333, "color": "ffffffff" },
|
||||
{ "time": 1.9982, "color": "858585ff", "curve": "stepped" },
|
||||
{ "time": 2.0022, "color": "858585ff" },
|
||||
{ "time": 2.3, "color": "ffffffff" },
|
||||
{ "time": 2.6667, "color": "858585ff" }
|
||||
],
|
||||
"attachment": [
|
||||
{ "time": 0.6667, "name": "coin-front-spineboy" },
|
||||
{ "time": 2, "name": "coin-front-logo" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"bones": {
|
||||
"coin-front": {
|
||||
"translate": [
|
||||
{},
|
||||
{ "time": 0.664, "x": 8.3, "curve": "stepped" },
|
||||
{
|
||||
"time": 0.6696,
|
||||
"x": -8.3,
|
||||
"curve": [ 0.794, -7.08, 1.167, 0, 0.794, 0, 1.167, 0 ]
|
||||
},
|
||||
{ "time": 1.3333 },
|
||||
{ "time": 1.9982, "x": 8.3, "curve": "stepped" },
|
||||
{ "time": 2.0022, "x": -8.3 },
|
||||
{ "time": 2.6667 }
|
||||
],
|
||||
"scale": [
|
||||
{
|
||||
"curve": [ 0.164, 1, 0.484, 0.091, 0.164, 1, 0.484, 1 ]
|
||||
},
|
||||
{ "time": 0.664, "x": 0, "curve": "stepped" },
|
||||
{
|
||||
"time": 0.6696,
|
||||
"x": 0.003,
|
||||
"curve": [ 0.786, 0.153, 1.167, 1, 0.786, 1, 1.167, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 1.3333,
|
||||
"curve": [ 1.442, 0.992, 1.858, 0.098, 1.442, 1, 1.858, 1 ]
|
||||
},
|
||||
{ "time": 1.9982, "x": 0.003, "curve": "stepped" },
|
||||
{
|
||||
"time": 2.0022,
|
||||
"x": 0.003,
|
||||
"curve": [ 2.123, 0.151, 2.501, 1, 2.123, 1, 2.501, 1 ]
|
||||
},
|
||||
{ "time": 2.6667 }
|
||||
]
|
||||
},
|
||||
"coin-side-round": {
|
||||
"translate": [
|
||||
{},
|
||||
{ "time": 0.664, "x": -6.75, "curve": "stepped" },
|
||||
{
|
||||
"time": 0.6696,
|
||||
"x": 7.03,
|
||||
"curve": [ 0.794, 5.99, 1.167, 0, 0.794, 0, 1.167, 0 ]
|
||||
},
|
||||
{ "time": 1.3333 },
|
||||
{ "time": 1.9982, "x": -6.75, "curve": "stepped" },
|
||||
{ "time": 2.0022, "x": 7.03 },
|
||||
{ "time": 2.6667 }
|
||||
],
|
||||
"scale": [
|
||||
{
|
||||
"curve": [ 0.085, 1, 0.207, 0.789, 0.085, 1, 0.207, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 0.3333,
|
||||
"x": 0.555,
|
||||
"curve": [ 0.449, 0.347, 0.567, 0.122, 0.449, 1, 0.567, 1 ]
|
||||
},
|
||||
{ "time": 0.664, "x": 0.014, "curve": "stepped" },
|
||||
{
|
||||
"time": 0.6696,
|
||||
"x": -0.028,
|
||||
"curve": [ 0.723, -0.126, 0.865, -0.367, 0.723, 1, 0.865, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 1,
|
||||
"x": -0.609,
|
||||
"curve": [ 1.053, -0.778, 1.29, -0.997, 1.053, 1, 1.29, 1 ]
|
||||
},
|
||||
{ "time": 1.3318, "x": -1, "curve": "stepped" },
|
||||
{
|
||||
"time": 1.3333,
|
||||
"curve": [ 1.384, 0.997, 1.439, 0.94, 1.384, 1, 1.439, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 1.5,
|
||||
"x": 0.852,
|
||||
"curve": [ 1.564, 0.748, 1.703, 0.509, 1.564, 1, 1.703, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 1.8,
|
||||
"x": 0.315,
|
||||
"curve": [ 1.873, 0.13, 1.987, 0.015, 1.873, 1, 1.987, 1 ]
|
||||
},
|
||||
{ "time": 1.9982, "x": 0.014, "curve": "stepped" },
|
||||
{
|
||||
"time": 2.0022,
|
||||
"x": -0.028,
|
||||
"curve": [ 2.039, -0.072, 2.123, -0.239, 2.039, 1, 2.123, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 2.2018,
|
||||
"x": -0.365,
|
||||
"curve": [ 2.269, -0.513, 2.337, -0.635, 2.269, 1, 2.337, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 2.4,
|
||||
"x": -0.731,
|
||||
"curve": [ 2.503, -0.871, 2.596, -0.961, 2.503, 1, 2.596, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 2.6592,
|
||||
"x": -1,
|
||||
"curve": [ 2.661, -1, 2.665, 1, 2.661, 1, 2.665, 1 ]
|
||||
},
|
||||
{ "time": 2.6667 }
|
||||
]
|
||||
},
|
||||
"shine": {
|
||||
"translate": [
|
||||
{
|
||||
"curve": [ 0.167, 0, 0.5, -473.39, 0.167, 0, 0.5, 0 ]
|
||||
},
|
||||
{
|
||||
"time": 0.6667,
|
||||
"x": -473.39,
|
||||
"curve": [ 0.833, -473.39, 1.167, -33.16, 0.833, 0, 1.167, 0 ]
|
||||
},
|
||||
{
|
||||
"time": 1.3333,
|
||||
"x": -33.16,
|
||||
"curve": [ 1.5, -33.16, 1.833, -473.39, 1.5, 0, 1.833, 0 ]
|
||||
},
|
||||
{
|
||||
"time": 2,
|
||||
"x": -473.39,
|
||||
"curve": [ 2.167, -473.39, 2.5, 0, 2.167, 0, 2.5, 0 ]
|
||||
},
|
||||
{ "time": 2.6667 }
|
||||
]
|
||||
}
|
||||
},
|
||||
"drawOrder": [
|
||||
{
|
||||
"time": 0.6667,
|
||||
"offsets": [
|
||||
{ "slot": "coin-side", "offset": 2 }
|
||||
]
|
||||
},
|
||||
{ "time": 0.6696 },
|
||||
{
|
||||
"time": 1.9982,
|
||||
"offsets": [
|
||||
{ "slot": "coin-side", "offset": 2 }
|
||||
]
|
||||
},
|
||||
{ "time": 2.0022 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
|
Before Width: | Height: | Size: 227 KiB |
|
Before Width: | Height: | Size: 216 KiB |
|
Before Width: | Height: | Size: 279 KiB |
|
Before Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 16 KiB |
@ -1,106 +0,0 @@
|
||||
goblins-pma.png
|
||||
size: 1024, 128
|
||||
filter: Linear, Linear
|
||||
pma: true
|
||||
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
|
||||
|
Before Width: | Height: | Size: 141 KiB |
@ -1,351 +0,0 @@
|
||||
mix-and-match-pma.png
|
||||
size: 1024, 512
|
||||
filter: Linear, Linear
|
||||
pma: true
|
||||
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
|
||||
|
Before Width: | Height: | Size: 363 KiB |
@ -1,66 +0,0 @@
|
||||
owl-pma.png
|
||||
size: 1024, 512
|
||||
filter: Linear, Linear
|
||||
pma: true
|
||||
scale: 0.5
|
||||
L_eye-closed
|
||||
bounds: 927, 317, 90, 86
|
||||
rotate: 90
|
||||
L_eye-iris
|
||||
bounds: 835, 321, 90, 86
|
||||
L_eye-light
|
||||
bounds: 254, 479, 21, 20
|
||||
L_eye-pupil
|
||||
bounds: 611, 224, 63, 60
|
||||
L_foot
|
||||
bounds: 456, 225, 64, 48
|
||||
L_wing
|
||||
bounds: 752, 389, 81, 110
|
||||
R_eye-closed
|
||||
bounds: 923, 409, 90, 86
|
||||
rotate: 90
|
||||
R_eye-iris
|
||||
bounds: 835, 409, 90, 86
|
||||
rotate: 90
|
||||
R_eye-light
|
||||
bounds: 41, 479, 21, 20
|
||||
R_eye-pupil
|
||||
bounds: 747, 230, 63, 60
|
||||
R_foot
|
||||
bounds: 676, 236, 64, 48
|
||||
R_wing
|
||||
bounds: 669, 389, 81, 110
|
||||
beak
|
||||
bounds: 2, 458, 39, 41
|
||||
beak-down
|
||||
bounds: 280, 459, 37, 40
|
||||
body
|
||||
bounds: 302, 251, 248, 196
|
||||
rotate: 90
|
||||
feather-1
|
||||
bounds: 128, 227, 59, 60
|
||||
feather-2
|
||||
bounds: 258, 226, 62, 65
|
||||
feather-3
|
||||
bounds: 905, 239, 56, 76
|
||||
head-base
|
||||
bounds: 2, 262, 299, 237
|
||||
leaf-1
|
||||
bounds: 669, 286, 76, 101
|
||||
leaf-2
|
||||
bounds: 747, 292, 65, 95
|
||||
leaf-3
|
||||
bounds: 590, 367, 132, 77
|
||||
rotate: 90
|
||||
leaf-4
|
||||
bounds: 814, 270, 89, 49
|
||||
leaf-5
|
||||
bounds: 500, 275, 53, 106
|
||||
leaf-6
|
||||
bounds: 500, 383, 88, 116
|
||||
leaf-7
|
||||
bounds: 555, 279, 54, 86
|
||||
wood
|
||||
bounds: 34, 2, 617, 295
|
||||
offsets: 0, 0, 617, 305
|
||||
rotate: 180
|
||||
|
Before Width: | Height: | Size: 318 KiB |
@ -1,89 +0,0 @@
|
||||
raptor-pma.png
|
||||
size: 1024, 512
|
||||
filter: Linear, Linear
|
||||
pma: true
|
||||
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
|
||||
|
Before Width: | Height: | Size: 404 KiB |
@ -1,12 +0,0 @@
|
||||
sack-pma.png
|
||||
size: 512, 512
|
||||
filter: Linear, Linear
|
||||
pma: true
|
||||
scale: 0.5
|
||||
cape-back
|
||||
bounds: 229, 149, 260, 260
|
||||
rotate: 270
|
||||
cape-front
|
||||
bounds: 310, 58, 200, 104
|
||||
sack
|
||||
bounds: 2, 2, 233, 407
|
||||
|
Before Width: | Height: | Size: 168 KiB |
@ -1,201 +0,0 @@
|
||||
snowglobe-pma.png
|
||||
size: 1024, 1024
|
||||
filter: Linear, Linear
|
||||
pma: true
|
||||
scale: 0.5
|
||||
blue-present-decoration
|
||||
bounds: 905, 377, 41, 40
|
||||
rotate: 180
|
||||
green-present-decoration
|
||||
bounds: 905, 377, 41, 40
|
||||
rotate: 180
|
||||
elf-shadow
|
||||
bounds: 846, 626, 395, 158
|
||||
rotate: 90
|
||||
eye-reflex-l
|
||||
bounds: 1006, 954, 12, 13
|
||||
eye-reflex-r
|
||||
bounds: 1006, 940, 10, 12
|
||||
globe-reflections
|
||||
bounds: 9, 375, 646, 835
|
||||
rotate: 90
|
||||
globe-shadow
|
||||
bounds: 2, 7, 920, 366
|
||||
glove-fingers-l
|
||||
bounds: 983, 448, 39, 51
|
||||
glove-shadow-l
|
||||
bounds: 990, 169, 28, 57
|
||||
hair-side
|
||||
bounds: 994, 571, 27, 53
|
||||
hair-strand-2
|
||||
bounds: 988, 228, 26, 66
|
||||
hair-strand-5
|
||||
bounds: 997, 27, 25, 47
|
||||
hair-strand-6
|
||||
bounds: 1006, 986, 14, 35
|
||||
hat
|
||||
bounds: 846, 403, 153, 221
|
||||
leg-up-l
|
||||
bounds: 924, 147, 65, 147
|
||||
mouth
|
||||
bounds: 846, 389, 39, 13
|
||||
nose
|
||||
bounds: 846, 610, 17, 14
|
||||
nose-shadow
|
||||
bounds: 1006, 969, 15, 15
|
||||
red-present-decoration
|
||||
bounds: 924, 105, 41, 40
|
||||
scarf-end-r
|
||||
bounds: 935, 2, 151, 87
|
||||
rotate: 270
|
||||
scarf-shadow
|
||||
bounds: 948, 296, 149, 74
|
||||
rotate: 90
|
||||
shoelace
|
||||
bounds: 1001, 551, 21, 18
|
||||
snow
|
||||
bounds: 846, 468, 27, 28
|
||||
string
|
||||
bounds: 2, 968, 5, 53
|
||||
|
||||
snowglobe-pma_2.png
|
||||
size: 1024, 1024
|
||||
filter: Linear, Linear
|
||||
pma: true
|
||||
scale: 0.5
|
||||
arm-down-l
|
||||
bounds: 80, 8, 56, 54
|
||||
arm-down-l-fuzzy
|
||||
bounds: 944, 19, 57, 59
|
||||
arm-down-r
|
||||
bounds: 2, 44, 76, 53
|
||||
arm-down-r-fuzzy
|
||||
bounds: 675, 17, 61, 66
|
||||
rotate: 90
|
||||
arm-up-l
|
||||
bounds: 94, 64, 49, 114
|
||||
rotate: 90
|
||||
arm-up-r
|
||||
bounds: 569, 20, 58, 104
|
||||
rotate: 90
|
||||
blue-present-base
|
||||
bounds: 676, 555, 126, 139
|
||||
body
|
||||
bounds: 709, 829, 139, 151
|
||||
ear-l
|
||||
bounds: 464, 11, 55, 50
|
||||
ear-r
|
||||
bounds: 389, 560, 45, 66
|
||||
rotate: 90
|
||||
eye-white-l
|
||||
bounds: 521, 4, 35, 43
|
||||
rotate: 90
|
||||
eye-white-r
|
||||
bounds: 754, 525, 34, 48
|
||||
rotate: 90
|
||||
eyelashes-l
|
||||
bounds: 804, 788, 32, 40
|
||||
eyelashes-r
|
||||
bounds: 703, 805, 32, 47
|
||||
gift-base
|
||||
bounds: 24, 400, 125, 105
|
||||
rotate: 90
|
||||
gift-decoration
|
||||
bounds: 457, 558, 48, 40
|
||||
globe-base-front
|
||||
bounds: 2, 522, 706, 458
|
||||
globe-borders
|
||||
bounds: 573, 80, 440, 441
|
||||
rotate: 90
|
||||
globe-texture
|
||||
bounds: 130, 115, 440, 441
|
||||
rotate: 90
|
||||
glove-fingers-r
|
||||
bounds: 305, 5, 41, 56
|
||||
rotate: 90
|
||||
glove-l
|
||||
bounds: 469, 940, 40, 61
|
||||
rotate: 90
|
||||
glove-r
|
||||
bounds: 214, 557, 44, 65
|
||||
rotate: 90
|
||||
glove-shadow-r
|
||||
bounds: 138, 24, 38, 62
|
||||
rotate: 90
|
||||
green-present-base
|
||||
bounds: 698, 689, 126, 139
|
||||
hair-front
|
||||
bounds: 27, 248, 150, 101
|
||||
rotate: 90
|
||||
hair-strand-1
|
||||
bounds: 656, 524, 37, 65
|
||||
rotate: 90
|
||||
hair-strand-3
|
||||
bounds: 363, 6, 40, 53
|
||||
rotate: 90
|
||||
hair-strand-4
|
||||
bounds: 398, 943, 37, 69
|
||||
rotate: 90
|
||||
head-base
|
||||
bounds: 850, 729, 134, 135
|
||||
iris-l
|
||||
bounds: 2, 2, 40, 41
|
||||
rotate: 90
|
||||
iris-r
|
||||
bounds: 418, 5, 40, 41
|
||||
leg-down-l
|
||||
bounds: 850, 27, 92, 51
|
||||
leg-down-r
|
||||
bounds: 464, 41, 72, 103
|
||||
rotate: 90
|
||||
leg-up-l-fuzzy
|
||||
bounds: 316, 48, 73, 65
|
||||
leg-up-r
|
||||
bounds: 927, 610, 83, 118
|
||||
offsets: 0, 22, 83, 140
|
||||
rotate: 180
|
||||
leg-up-r-fuzzy
|
||||
bounds: 391, 48, 65, 71
|
||||
rotate: 90
|
||||
neck-scarf
|
||||
bounds: 850, 866, 142, 114
|
||||
pupil-l
|
||||
bounds: 986, 798, 32, 32
|
||||
pupil-r
|
||||
bounds: 986, 832, 32, 32
|
||||
red-present-base
|
||||
bounds: 803, 599, 126, 139
|
||||
scarf-end-l
|
||||
bounds: 2, 163, 126, 109
|
||||
rotate: 90
|
||||
scarf-pompom-l
|
||||
bounds: 253, 8, 50, 46
|
||||
scarf-pompom-r
|
||||
bounds: 202, 7, 49, 47
|
||||
scarf-ribbon-bottom-l
|
||||
bounds: 743, 25, 106, 53
|
||||
scarf-ribbon-bottom-r
|
||||
bounds: 210, 56, 105, 57
|
||||
scarf-ribbon-middle-l
|
||||
bounds: 2, 99, 63, 90
|
||||
rotate: 90
|
||||
scarf-ribbon-middle-r
|
||||
bounds: 804, 536, 62, 89
|
||||
rotate: 90
|
||||
scarf-ribbon-top-l
|
||||
bounds: 895, 551, 105, 58
|
||||
scarf-ribbon-top-r
|
||||
bounds: 281, 561, 106, 53
|
||||
shoe-l
|
||||
bounds: 155, 931, 49, 95
|
||||
rotate: 90
|
||||
shoe-r
|
||||
bounds: 2, 521, 44, 93
|
||||
|
||||
snowglobe-pma_3.png
|
||||
size: 1024, 512
|
||||
filter: Linear, Linear
|
||||
pma: true
|
||||
scale: 0.5
|
||||
globe-base-back
|
||||
bounds: 2, 2, 606, 258
|
||||
|
Before Width: | Height: | Size: 314 KiB |
|
Before Width: | Height: | Size: 875 KiB |
|
Before Width: | Height: | Size: 68 KiB |
@ -1,198 +0,0 @@
|
||||
snowglobe.png
|
||||
size: 1024, 1024
|
||||
filter: Linear, Linear
|
||||
scale: 0.5
|
||||
blue-present-decoration
|
||||
bounds: 905, 377, 41, 40
|
||||
rotate: 180
|
||||
green-present-decoration
|
||||
bounds: 905, 377, 41, 40
|
||||
rotate: 180
|
||||
elf-shadow
|
||||
bounds: 846, 626, 395, 158
|
||||
rotate: 90
|
||||
eye-reflex-l
|
||||
bounds: 1006, 954, 12, 13
|
||||
eye-reflex-r
|
||||
bounds: 1006, 940, 10, 12
|
||||
globe-reflections
|
||||
bounds: 9, 375, 646, 835
|
||||
rotate: 90
|
||||
globe-shadow
|
||||
bounds: 2, 7, 920, 366
|
||||
glove-fingers-l
|
||||
bounds: 983, 448, 39, 51
|
||||
glove-shadow-l
|
||||
bounds: 990, 169, 28, 57
|
||||
hair-side
|
||||
bounds: 994, 571, 27, 53
|
||||
hair-strand-2
|
||||
bounds: 988, 228, 26, 66
|
||||
hair-strand-5
|
||||
bounds: 997, 27, 25, 47
|
||||
hair-strand-6
|
||||
bounds: 1006, 986, 14, 35
|
||||
hat
|
||||
bounds: 846, 403, 153, 221
|
||||
leg-up-l
|
||||
bounds: 924, 147, 65, 147
|
||||
mouth
|
||||
bounds: 846, 389, 39, 13
|
||||
nose
|
||||
bounds: 846, 610, 17, 14
|
||||
nose-shadow
|
||||
bounds: 1006, 969, 15, 15
|
||||
red-present-decoration
|
||||
bounds: 924, 105, 41, 40
|
||||
scarf-end-r
|
||||
bounds: 935, 2, 151, 87
|
||||
rotate: 270
|
||||
scarf-shadow
|
||||
bounds: 948, 296, 149, 74
|
||||
rotate: 90
|
||||
shoelace
|
||||
bounds: 1001, 551, 21, 18
|
||||
snow
|
||||
bounds: 846, 468, 27, 28
|
||||
string
|
||||
bounds: 2, 968, 5, 53
|
||||
|
||||
snowglobe_2.png
|
||||
size: 1024, 1024
|
||||
filter: Linear, Linear
|
||||
scale: 0.5
|
||||
arm-down-l
|
||||
bounds: 80, 8, 56, 54
|
||||
arm-down-l-fuzzy
|
||||
bounds: 944, 19, 57, 59
|
||||
arm-down-r
|
||||
bounds: 2, 44, 76, 53
|
||||
arm-down-r-fuzzy
|
||||
bounds: 675, 17, 61, 66
|
||||
rotate: 90
|
||||
arm-up-l
|
||||
bounds: 94, 64, 49, 114
|
||||
rotate: 90
|
||||
arm-up-r
|
||||
bounds: 569, 20, 58, 104
|
||||
rotate: 90
|
||||
blue-present-base
|
||||
bounds: 676, 555, 126, 139
|
||||
body
|
||||
bounds: 709, 829, 139, 151
|
||||
ear-l
|
||||
bounds: 464, 11, 55, 50
|
||||
ear-r
|
||||
bounds: 389, 560, 45, 66
|
||||
rotate: 90
|
||||
eye-white-l
|
||||
bounds: 521, 4, 35, 43
|
||||
rotate: 90
|
||||
eye-white-r
|
||||
bounds: 754, 525, 34, 48
|
||||
rotate: 90
|
||||
eyelashes-l
|
||||
bounds: 804, 788, 32, 40
|
||||
eyelashes-r
|
||||
bounds: 703, 805, 32, 47
|
||||
gift-base
|
||||
bounds: 24, 400, 125, 105
|
||||
rotate: 90
|
||||
gift-decoration
|
||||
bounds: 457, 558, 48, 40
|
||||
globe-base-front
|
||||
bounds: 2, 522, 706, 458
|
||||
globe-borders
|
||||
bounds: 573, 80, 440, 441
|
||||
rotate: 90
|
||||
globe-texture
|
||||
bounds: 130, 115, 440, 441
|
||||
rotate: 90
|
||||
glove-fingers-r
|
||||
bounds: 305, 5, 41, 56
|
||||
rotate: 90
|
||||
glove-l
|
||||
bounds: 469, 940, 40, 61
|
||||
rotate: 90
|
||||
glove-r
|
||||
bounds: 214, 557, 44, 65
|
||||
rotate: 90
|
||||
glove-shadow-r
|
||||
bounds: 138, 24, 38, 62
|
||||
rotate: 90
|
||||
green-present-base
|
||||
bounds: 698, 689, 126, 139
|
||||
hair-front
|
||||
bounds: 27, 248, 150, 101
|
||||
rotate: 90
|
||||
hair-strand-1
|
||||
bounds: 656, 524, 37, 65
|
||||
rotate: 90
|
||||
hair-strand-3
|
||||
bounds: 363, 6, 40, 53
|
||||
rotate: 90
|
||||
hair-strand-4
|
||||
bounds: 398, 943, 37, 69
|
||||
rotate: 90
|
||||
head-base
|
||||
bounds: 850, 729, 134, 135
|
||||
iris-l
|
||||
bounds: 2, 2, 40, 41
|
||||
rotate: 90
|
||||
iris-r
|
||||
bounds: 418, 5, 40, 41
|
||||
leg-down-l
|
||||
bounds: 850, 27, 92, 51
|
||||
leg-down-r
|
||||
bounds: 464, 41, 72, 103
|
||||
rotate: 90
|
||||
leg-up-l-fuzzy
|
||||
bounds: 316, 48, 73, 65
|
||||
leg-up-r
|
||||
bounds: 927, 610, 83, 118
|
||||
offsets: 0, 22, 83, 140
|
||||
rotate: 180
|
||||
leg-up-r-fuzzy
|
||||
bounds: 391, 48, 65, 71
|
||||
rotate: 90
|
||||
neck-scarf
|
||||
bounds: 850, 866, 142, 114
|
||||
pupil-l
|
||||
bounds: 986, 798, 32, 32
|
||||
pupil-r
|
||||
bounds: 986, 832, 32, 32
|
||||
red-present-base
|
||||
bounds: 803, 599, 126, 139
|
||||
scarf-end-l
|
||||
bounds: 2, 163, 126, 109
|
||||
rotate: 90
|
||||
scarf-pompom-l
|
||||
bounds: 253, 8, 50, 46
|
||||
scarf-pompom-r
|
||||
bounds: 202, 7, 49, 47
|
||||
scarf-ribbon-bottom-l
|
||||
bounds: 743, 25, 106, 53
|
||||
scarf-ribbon-bottom-r
|
||||
bounds: 210, 56, 105, 57
|
||||
scarf-ribbon-middle-l
|
||||
bounds: 2, 99, 63, 90
|
||||
rotate: 90
|
||||
scarf-ribbon-middle-r
|
||||
bounds: 804, 536, 62, 89
|
||||
rotate: 90
|
||||
scarf-ribbon-top-l
|
||||
bounds: 895, 551, 105, 58
|
||||
scarf-ribbon-top-r
|
||||
bounds: 281, 561, 106, 53
|
||||
shoe-l
|
||||
bounds: 155, 931, 49, 95
|
||||
rotate: 90
|
||||
shoe-r
|
||||
bounds: 2, 521, 44, 93
|
||||
|
||||
snowglobe_3.png
|
||||
size: 1024, 512
|
||||
filter: Linear, Linear
|
||||
scale: 0.5
|
||||
globe-base-back
|
||||
bounds: 2, 2, 606, 258
|
||||
|
Before Width: | Height: | Size: 580 KiB |
|
Before Width: | Height: | Size: 1.0 MiB |
|
Before Width: | Height: | Size: 76 KiB |
@ -1,21 +0,0 @@
|
||||
stretchyman-pma.png
|
||||
size: 512, 256
|
||||
filter: Linear, Linear
|
||||
pma: true
|
||||
back-arm
|
||||
bounds: 2, 10, 70, 199
|
||||
offsets: 1, 2, 72, 202
|
||||
rotate: 90
|
||||
back-leg
|
||||
bounds: 2, 50, 100, 316
|
||||
offsets: 0, 1, 100, 318
|
||||
rotate: 90
|
||||
body
|
||||
bounds: 2, 104, 139, 448
|
||||
offsets: 0, 0, 141, 452
|
||||
rotate: 90
|
||||
front-arm
|
||||
bounds: 280, 2, 145, 221
|
||||
rotate: 270
|
||||
head
|
||||
bounds: 319, 70, 87, 102
|
||||
|
Before Width: | Height: | Size: 86 KiB |
@ -1,56 +0,0 @@
|
||||
tank-pma.png
|
||||
size: 1024, 1024
|
||||
filter: Linear, Linear
|
||||
pma: true
|
||||
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
|
||||
|
Before Width: | Height: | Size: 446 KiB |
@ -1,6 +0,0 @@
|
||||
vine-pma.png
|
||||
size: 128, 1024
|
||||
filter: Linear, Linear
|
||||
pma: true
|
||||
vine
|
||||
bounds: 2, 2, 68, 962
|
||||
|
Before Width: | Height: | Size: 69 KiB |
@ -1,805 +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 <SFML/Graphics.hpp>
|
||||
#include <SFML/Window/Mouse.hpp>
|
||||
#include <iostream>
|
||||
#include <spine/Debug.h>
|
||||
#include <spine/spine-sfml.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace spine;
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
void callback(spAnimationState *state, spEventType type, spTrackEntry *entry, spEvent *event) {
|
||||
UNUSED(state);
|
||||
const char *animationName = (entry && entry->animation) ? entry->animation->name : 0;
|
||||
|
||||
switch (type) {
|
||||
case SP_ANIMATION_START:
|
||||
printf("%d start: %s\n", entry->trackIndex, animationName);
|
||||
break;
|
||||
case SP_ANIMATION_INTERRUPT:
|
||||
printf("%d interrupt: %s\n", entry->trackIndex, animationName);
|
||||
break;
|
||||
case SP_ANIMATION_END:
|
||||
printf("%d end: %s\n", entry->trackIndex, animationName);
|
||||
break;
|
||||
case SP_ANIMATION_COMPLETE:
|
||||
printf("%d complete: %s\n", entry->trackIndex, animationName);
|
||||
break;
|
||||
case SP_ANIMATION_DISPOSE:
|
||||
printf("%d dispose: %s\n", entry->trackIndex, animationName);
|
||||
break;
|
||||
case SP_ANIMATION_EVENT:
|
||||
printf("%d event: %s, %s: %d, %f, %s %f %f\n", entry->trackIndex, animationName, event->data->name, event->intValue, event->floatValue,
|
||||
event->stringValue, event->volume, event->balance);
|
||||
break;
|
||||
}
|
||||
fflush(stdout);
|
||||
}
|
||||
|
||||
spSkeletonData *readSkeletonJsonData(const char *filename, spAtlas *atlas, float scale) {
|
||||
spSkeletonJson *json = spSkeletonJson_create(atlas);
|
||||
json->scale = scale;
|
||||
spSkeletonData *skeletonData = spSkeletonJson_readSkeletonDataFile(json, filename);
|
||||
if (!skeletonData) {
|
||||
printf("%s\n", json->error);
|
||||
exit(0);
|
||||
}
|
||||
spSkeletonJson_dispose(json);
|
||||
return skeletonData;
|
||||
}
|
||||
|
||||
spSkeletonData *readSkeletonBinaryData(const char *filename, spAtlas *atlas, float scale) {
|
||||
spSkeletonBinary *binary = spSkeletonBinary_create(atlas);
|
||||
binary->scale = scale;
|
||||
spSkeletonData *skeletonData = spSkeletonBinary_readSkeletonDataFile(binary, filename);
|
||||
if (!skeletonData) {
|
||||
printf("%s\n", binary->error);
|
||||
exit(0);
|
||||
}
|
||||
spSkeletonBinary_dispose(binary);
|
||||
return skeletonData;
|
||||
}
|
||||
|
||||
void testcase(void func(spSkeletonData *skeletonData, spAtlas *atlas), const char *jsonName, const char *binaryName, const char *atlasName,
|
||||
float scale) {
|
||||
spAtlas *atlas = spAtlas_createFromFile(atlasName, 0);
|
||||
|
||||
spSkeletonData *skeletonData = readSkeletonJsonData(jsonName, atlas, scale);
|
||||
func(skeletonData, atlas);
|
||||
spSkeletonData_dispose(skeletonData);
|
||||
|
||||
skeletonData = readSkeletonBinaryData(binaryName, atlas, scale);
|
||||
func(skeletonData, atlas);
|
||||
spSkeletonData_dispose(skeletonData);
|
||||
|
||||
spAtlas_dispose(atlas);
|
||||
|
||||
UNUSED(jsonName);
|
||||
}
|
||||
|
||||
void spineboy(spSkeletonData *skeletonData, spAtlas *atlas) {
|
||||
UNUSED(atlas);
|
||||
spSkeletonBounds *bounds = spSkeletonBounds_create();
|
||||
|
||||
// Configure mixing.
|
||||
spAnimationStateData *stateData = spAnimationStateData_create(skeletonData);
|
||||
spAnimationStateData_setMixByName(stateData, "walk", "jump", 0.2f);
|
||||
spAnimationStateData_setMixByName(stateData, "jump", "run", 0.2f);
|
||||
|
||||
SkeletonDrawable *drawable = new SkeletonDrawable(skeletonData, stateData);
|
||||
drawable->timeScale = 1;
|
||||
drawable->setUsePremultipliedAlpha(true);
|
||||
|
||||
spSkeleton *skeleton = drawable->skeleton;
|
||||
spSkeleton_setToSetupPose(skeleton);
|
||||
|
||||
skeleton->x = 320;
|
||||
skeleton->y = 590;
|
||||
spSkeleton_updateWorldTransform(skeleton, SP_PHYSICS_UPDATE);
|
||||
|
||||
spSlot *headSlot = spSkeleton_findSlot(skeleton, "head");
|
||||
|
||||
drawable->state->listener = callback;
|
||||
spAnimationState_addAnimationByName(drawable->state, 0, "walk", true, 0);
|
||||
spAnimationState_addAnimationByName(drawable->state, 0, "jump", false, 3);
|
||||
spAnimationState_addAnimationByName(drawable->state, 0, "run", true, 0);
|
||||
|
||||
sf::RenderWindow window(sf::VideoMode(640, 640), "Spine SFML - spineboy");
|
||||
window.setFramerateLimit(60);
|
||||
sf::Event event;
|
||||
sf::Clock deltaClock;
|
||||
while (window.isOpen()) {
|
||||
while (window.pollEvent(event))
|
||||
if (event.type == sf::Event::Closed) window.close();
|
||||
|
||||
float delta = deltaClock.getElapsedTime().asSeconds();
|
||||
deltaClock.restart();
|
||||
|
||||
spSkeletonBounds_update(bounds, skeleton, true);
|
||||
sf::Vector2i position = sf::Mouse::getPosition(window);
|
||||
if (spSkeletonBounds_containsPoint(bounds, (float) position.x, (float) position.y)) {
|
||||
headSlot->color.g = 0;
|
||||
headSlot->color.b = 0;
|
||||
} else {
|
||||
headSlot->color.g = 1;
|
||||
headSlot->color.b = 1;
|
||||
}
|
||||
|
||||
drawable->update(delta, SP_PHYSICS_UPDATE);
|
||||
|
||||
window.clear();
|
||||
window.draw(*drawable);
|
||||
window.display();
|
||||
}
|
||||
|
||||
spSkeletonBounds_dispose(bounds);
|
||||
}
|
||||
|
||||
void ikDemo(spSkeletonData *skeletonData, spAtlas *atlas) {
|
||||
UNUSED(atlas);
|
||||
|
||||
// Create the SkeletonDrawable and position it
|
||||
spAnimationStateData *stateData = spAnimationStateData_create(skeletonData);
|
||||
SkeletonDrawable *drawable = new SkeletonDrawable(skeletonData, stateData);
|
||||
drawable->timeScale = 1;
|
||||
drawable->setUsePremultipliedAlpha(true);
|
||||
|
||||
spSkeleton *skeleton = drawable->skeleton;
|
||||
skeleton->x = 320;
|
||||
skeleton->y = 590;
|
||||
|
||||
// Queue the "walk" animation on the first track.
|
||||
spAnimationState_setAnimationByName(drawable->state, 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 render() method below.
|
||||
spAnimationState_setAnimationByName(drawable->state, 1, "aim", true);
|
||||
|
||||
sf::RenderWindow window(sf::VideoMode(640, 640), "Spine SFML - IK Demo");
|
||||
window.setFramerateLimit(60);
|
||||
sf::Event event;
|
||||
sf::Clock deltaClock;
|
||||
while (window.isOpen()) {
|
||||
while (window.pollEvent(event))
|
||||
if (event.type == sf::Event::Closed) window.close();
|
||||
|
||||
float delta = deltaClock.getElapsedTime().asSeconds();
|
||||
deltaClock.restart();
|
||||
|
||||
// Update and apply the animations to the skeleton,
|
||||
// then calculate the world transforms of every bone.
|
||||
// This is needed so we can call Bone#worldToLocal()
|
||||
// later.
|
||||
drawable->update(delta, SP_PHYSICS_UPDATE);
|
||||
|
||||
// Position the "crosshair" bone at the mouse
|
||||
// location. We do this before calling
|
||||
// skeleton.updateWorldTransform() below, so
|
||||
// our change is incorporated before the IK
|
||||
// constraint is applied.
|
||||
//
|
||||
// When setting the crosshair bone position
|
||||
// to the mouse position, we need to translate
|
||||
// from "mouse space" to "local bone space". Note that the local
|
||||
// bone space is calculated using the bone's parent
|
||||
// worldToLocal() function!
|
||||
sf::Vector2i mouseCoords = sf::Mouse::getPosition(window);
|
||||
float boneCoordsX = 0, boneCoordsY = 0;
|
||||
spBone *crosshair = spSkeleton_findBone(drawable->skeleton, "crosshair");// Should be cached.
|
||||
spBone_worldToLocal(crosshair->parent, mouseCoords.x, mouseCoords.y, &boneCoordsX, &boneCoordsY);
|
||||
crosshair->x = boneCoordsX;
|
||||
crosshair->y = boneCoordsY;
|
||||
|
||||
// Calculate final world transform with the
|
||||
// crosshair bone set to the mouse cursor
|
||||
// position.
|
||||
spSkeleton_updateWorldTransform(drawable->skeleton, SP_PHYSICS_UPDATE);
|
||||
|
||||
window.clear();
|
||||
window.draw(*drawable);
|
||||
window.display();
|
||||
}
|
||||
}
|
||||
|
||||
void goblins(spSkeletonData *skeletonData, spAtlas *atlas) {
|
||||
UNUSED(atlas);
|
||||
SkeletonDrawable *drawable = new SkeletonDrawable(skeletonData);
|
||||
drawable->timeScale = 1;
|
||||
drawable->setUsePremultipliedAlpha(true);
|
||||
|
||||
spSkeleton *skeleton = drawable->skeleton;
|
||||
spSkeleton_setSkinByName(skeleton, "goblingirl");
|
||||
spSkeleton_setSlotsToSetupPose(skeleton);
|
||||
skeleton->x = 320;
|
||||
skeleton->y = 590;
|
||||
spSkeleton_updateWorldTransform(skeleton, SP_PHYSICS_UPDATE);
|
||||
|
||||
spAnimationState_setAnimationByName(drawable->state, 0, "walk", true);
|
||||
|
||||
sf::RenderWindow window(sf::VideoMode(640, 640), "Spine SFML - goblins");
|
||||
window.setFramerateLimit(60);
|
||||
sf::Event event;
|
||||
sf::Clock deltaClock;
|
||||
while (window.isOpen()) {
|
||||
while (window.pollEvent(event))
|
||||
if (event.type == sf::Event::Closed) window.close();
|
||||
|
||||
float delta = deltaClock.getElapsedTime().asSeconds();
|
||||
deltaClock.restart();
|
||||
|
||||
drawable->update(delta, SP_PHYSICS_UPDATE);
|
||||
|
||||
window.clear();
|
||||
window.draw(*drawable);
|
||||
window.display();
|
||||
}
|
||||
}
|
||||
|
||||
void raptor(spSkeletonData *skeletonData, spAtlas *atlas) {
|
||||
UNUSED(atlas);
|
||||
SkeletonDrawable *drawable = new SkeletonDrawable(skeletonData);
|
||||
drawable->timeScale = 1;
|
||||
drawable->setUsePremultipliedAlpha(true);
|
||||
|
||||
spSkeleton *skeleton = drawable->skeleton;
|
||||
skeleton->x = 320;
|
||||
skeleton->y = 590;
|
||||
spSkeleton_updateWorldTransform(skeleton, SP_PHYSICS_UPDATE);
|
||||
|
||||
spAnimationState_setAnimationByName(drawable->state, 0, "walk", true);
|
||||
spAnimationState_addAnimationByName(drawable->state, 1, "gun-grab", false, 2);
|
||||
|
||||
sf::RenderWindow window(sf::VideoMode(640, 640), "Spine SFML - raptor");
|
||||
window.setFramerateLimit(60);
|
||||
sf::Event event;
|
||||
sf::Clock deltaClock;
|
||||
while (window.isOpen()) {
|
||||
while (window.pollEvent(event))
|
||||
if (event.type == sf::Event::Closed) window.close();
|
||||
|
||||
float delta = deltaClock.getElapsedTime().asSeconds();
|
||||
deltaClock.restart();
|
||||
|
||||
drawable->update(delta, SP_PHYSICS_UPDATE);
|
||||
|
||||
window.clear();
|
||||
window.draw(*drawable);
|
||||
window.display();
|
||||
}
|
||||
}
|
||||
|
||||
void tank(spSkeletonData *skeletonData, spAtlas *atlas) {
|
||||
UNUSED(atlas);
|
||||
SkeletonDrawable *drawable = new SkeletonDrawable(skeletonData);
|
||||
drawable->timeScale = 1;
|
||||
drawable->setUsePremultipliedAlpha(true);
|
||||
|
||||
spSkeleton *skeleton = drawable->skeleton;
|
||||
skeleton->x = 500;
|
||||
skeleton->y = 590;
|
||||
spSkeleton_updateWorldTransform(skeleton, SP_PHYSICS_UPDATE);
|
||||
|
||||
spAnimationState_setAnimationByName(drawable->state, 0, "drive", true);
|
||||
|
||||
sf::RenderWindow window(sf::VideoMode(640, 640), "Spine SFML - tank");
|
||||
window.setFramerateLimit(60);
|
||||
sf::Event event;
|
||||
sf::Clock deltaClock;
|
||||
|
||||
while (window.isOpen()) {
|
||||
while (window.pollEvent(event))
|
||||
if (event.type == sf::Event::Closed) window.close();
|
||||
|
||||
float delta = deltaClock.getElapsedTime().asSeconds();
|
||||
deltaClock.restart();
|
||||
drawable->update(delta, SP_PHYSICS_UPDATE);
|
||||
window.clear();
|
||||
window.draw(*drawable);
|
||||
window.display();
|
||||
}
|
||||
}
|
||||
|
||||
void vine(spSkeletonData *skeletonData, spAtlas *atlas) {
|
||||
UNUSED(atlas);
|
||||
SkeletonDrawable *drawable = new SkeletonDrawable(skeletonData);
|
||||
drawable->timeScale = 1;
|
||||
drawable->setUsePremultipliedAlpha(true);
|
||||
|
||||
spSkeleton *skeleton = drawable->skeleton;
|
||||
skeleton->x = 320;
|
||||
skeleton->y = 590;
|
||||
spSkeleton_updateWorldTransform(skeleton, SP_PHYSICS_UPDATE);
|
||||
|
||||
spAnimationState_setAnimationByName(drawable->state, 0, "grow", true);
|
||||
|
||||
sf::RenderWindow window(sf::VideoMode(640, 640), "Spine SFML - vine");
|
||||
window.setFramerateLimit(60);
|
||||
sf::Event event;
|
||||
sf::Clock deltaClock;
|
||||
while (window.isOpen()) {
|
||||
while (window.pollEvent(event))
|
||||
if (event.type == sf::Event::Closed) window.close();
|
||||
|
||||
float delta = deltaClock.getElapsedTime().asSeconds();
|
||||
deltaClock.restart();
|
||||
|
||||
drawable->update(delta, SP_PHYSICS_UPDATE);
|
||||
|
||||
window.clear();
|
||||
window.draw(*drawable);
|
||||
window.display();
|
||||
}
|
||||
}
|
||||
|
||||
void stretchyman(spSkeletonData *skeletonData, spAtlas *atlas) {
|
||||
UNUSED(atlas);
|
||||
SkeletonDrawable *drawable = new SkeletonDrawable(skeletonData);
|
||||
drawable->timeScale = 1;
|
||||
drawable->setUsePremultipliedAlpha(true);
|
||||
|
||||
spSkeleton *skeleton = drawable->skeleton;
|
||||
skeleton->x = 100;
|
||||
skeleton->y = 590;
|
||||
spSkeleton_updateWorldTransform(skeleton, SP_PHYSICS_UPDATE);
|
||||
|
||||
spAnimationState_setAnimationByName(drawable->state, 0, "sneak", true);
|
||||
|
||||
sf::RenderWindow window(sf::VideoMode(640, 640), "Spine SFML - Streatchyman");
|
||||
window.setFramerateLimit(60);
|
||||
sf::Event event;
|
||||
sf::Clock deltaClock;
|
||||
while (window.isOpen()) {
|
||||
while (window.pollEvent(event))
|
||||
if (event.type == sf::Event::Closed) window.close();
|
||||
|
||||
float delta = deltaClock.getElapsedTime().asSeconds();
|
||||
deltaClock.restart();
|
||||
|
||||
drawable->update(delta, SP_PHYSICS_UPDATE);
|
||||
|
||||
window.clear();
|
||||
window.draw(*drawable);
|
||||
window.display();
|
||||
}
|
||||
}
|
||||
|
||||
void coin(spSkeletonData *skeletonData, spAtlas *atlas) {
|
||||
UNUSED(atlas);
|
||||
|
||||
|
||||
SkeletonDrawable *drawable = new SkeletonDrawable(skeletonData);
|
||||
drawable->timeScale = 1;
|
||||
drawable->setUsePremultipliedAlpha(true);
|
||||
|
||||
spSkeleton *skeleton = drawable->skeleton;
|
||||
skeleton->x = 320;
|
||||
skeleton->y = 320;
|
||||
spSkeleton_updateWorldTransform(skeleton, SP_PHYSICS_UPDATE);
|
||||
spAnimationState_setAnimationByName(drawable->state, 0, "animation", true);
|
||||
|
||||
sf::RenderWindow window(sf::VideoMode(640, 640), "Spine SFML - vine");
|
||||
window.setFramerateLimit(60);
|
||||
sf::Event event;
|
||||
sf::Clock deltaClock;
|
||||
|
||||
while (window.isOpen()) {
|
||||
while (window.pollEvent(event))
|
||||
if (event.type == sf::Event::Closed) window.close();
|
||||
|
||||
float delta = deltaClock.getElapsedTime().asSeconds();
|
||||
deltaClock.restart();
|
||||
|
||||
drawable->update(delta, SP_PHYSICS_UPDATE);
|
||||
|
||||
window.clear();
|
||||
window.draw(*drawable);
|
||||
window.display();
|
||||
}
|
||||
}
|
||||
|
||||
void dragon(spSkeletonData *skeletonData, spAtlas *atlas) {
|
||||
UNUSED(atlas);
|
||||
|
||||
|
||||
SkeletonDrawable *drawable = new SkeletonDrawable(skeletonData);
|
||||
drawable->timeScale = 1;
|
||||
drawable->setUsePremultipliedAlpha(true);
|
||||
|
||||
spSkeleton *skeleton = drawable->skeleton;
|
||||
skeleton->x = 320;
|
||||
skeleton->y = 320;
|
||||
spSkeleton_updateWorldTransform(skeleton, SP_PHYSICS_UPDATE);
|
||||
spAnimationState_setAnimationByName(drawable->state, 0, "flying", true);
|
||||
|
||||
sf::RenderWindow window(sf::VideoMode(640, 640), "Spine SFML - dragon");
|
||||
window.setFramerateLimit(60);
|
||||
sf::Event event;
|
||||
sf::Clock deltaClock;
|
||||
|
||||
while (window.isOpen()) {
|
||||
while (window.pollEvent(event))
|
||||
if (event.type == sf::Event::Closed) window.close();
|
||||
|
||||
float delta = deltaClock.getElapsedTime().asSeconds();
|
||||
deltaClock.restart();
|
||||
|
||||
drawable->update(delta, SP_PHYSICS_UPDATE);
|
||||
|
||||
window.clear();
|
||||
window.draw(*drawable);
|
||||
window.display();
|
||||
}
|
||||
}
|
||||
|
||||
void owl(spSkeletonData *skeletonData, spAtlas *atlas) {
|
||||
UNUSED(atlas);
|
||||
SkeletonDrawable *drawable = new SkeletonDrawable(skeletonData);
|
||||
drawable->timeScale = 1;
|
||||
drawable->setUsePremultipliedAlpha(true);
|
||||
|
||||
spSkeleton *skeleton = drawable->skeleton;
|
||||
skeleton->x = 320;
|
||||
skeleton->y = 400;
|
||||
spSkeleton_updateWorldTransform(skeleton, SP_PHYSICS_UPDATE);
|
||||
|
||||
spAnimationState_setAnimationByName(drawable->state, 0, "idle", true);
|
||||
spAnimationState_setAnimationByName(drawable->state, 1, "blink", true);
|
||||
spTrackEntry *left = spAnimationState_setAnimationByName(drawable->state, 2, "left", true);
|
||||
spTrackEntry *right = spAnimationState_setAnimationByName(drawable->state, 3, "right", true);
|
||||
spTrackEntry *up = spAnimationState_setAnimationByName(drawable->state, 4, "up", true);
|
||||
spTrackEntry *down = spAnimationState_setAnimationByName(drawable->state, 5, "down", true);
|
||||
|
||||
left->alpha = 0;
|
||||
left->mixBlend = SP_MIX_BLEND_ADD;
|
||||
right->alpha = 0;
|
||||
right->mixBlend = SP_MIX_BLEND_ADD;
|
||||
up->alpha = 0;
|
||||
up->mixBlend = SP_MIX_BLEND_ADD;
|
||||
down->alpha = 0;
|
||||
down->mixBlend = SP_MIX_BLEND_ADD;
|
||||
|
||||
sf::RenderWindow window(sf::VideoMode(640, 640), "Spine SFML - owl");
|
||||
window.setFramerateLimit(60);
|
||||
sf::Event event;
|
||||
sf::Clock deltaClock;
|
||||
while (window.isOpen()) {
|
||||
while (window.pollEvent(event)) {
|
||||
if (event.type == sf::Event::Closed) window.close();
|
||||
if (event.type == sf::Event::MouseMoved) {
|
||||
float x = event.mouseMove.x / 640.0f;
|
||||
left->alpha = (MAX(x, 0.5f) - 0.5f) * 2;
|
||||
right->alpha = (0.5f - MIN(x, 0.5f)) * 2;
|
||||
|
||||
float y = event.mouseMove.y / 640.0f;
|
||||
down->alpha = (MAX(y, 0.5f) - 0.5f) * 2;
|
||||
up->alpha = (0.5f - MIN(y, 0.5f)) * 2;
|
||||
}
|
||||
}
|
||||
|
||||
float delta = deltaClock.getElapsedTime().asSeconds();
|
||||
deltaClock.restart();
|
||||
|
||||
spSkeleton_setToSetupPose(drawable->skeleton);
|
||||
drawable->update(delta, SP_PHYSICS_UPDATE);
|
||||
|
||||
window.clear();
|
||||
window.draw(*drawable);
|
||||
window.display();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Used for debugging purposes during runtime development
|
||||
*/
|
||||
void test(spSkeletonData *skeletonData, spAtlas *atlas) {
|
||||
UNUSED(atlas);
|
||||
spSkeleton *skeleton = spSkeleton_create(skeletonData);
|
||||
spAnimationStateData *animData = spAnimationStateData_create(skeletonData);
|
||||
spAnimationState *animState = spAnimationState_create(animData);
|
||||
spAnimationState_setAnimationByName(animState, 0, "drive", true);
|
||||
|
||||
|
||||
float d = 3;
|
||||
for (int i = 0; i < 1; i++) {
|
||||
spAnimationState_update(animState, d);
|
||||
spAnimationState_apply(animState, skeleton);
|
||||
spSkeleton_updateWorldTransform(skeleton, SP_PHYSICS_UPDATE);
|
||||
for (int ii = 0; ii < skeleton->bonesCount; ii++) {
|
||||
spBone *bone = skeleton->bones[ii];
|
||||
printf("%s %f %f %f %f %f %f\n", bone->data->name, bone->a, bone->b, bone->c, bone->d, bone->worldX, bone->worldY);
|
||||
}
|
||||
printf("========================================\n");
|
||||
d += 0.1f;
|
||||
}
|
||||
|
||||
spSkeleton_dispose(skeleton);
|
||||
}
|
||||
|
||||
void testSkinsApi(spSkeletonData *skeletonData, spAtlas *atlas) {
|
||||
UNUSED(atlas);
|
||||
SkeletonDrawable *drawable = new SkeletonDrawable(skeletonData);
|
||||
drawable->timeScale = 1;
|
||||
drawable->setUsePremultipliedAlpha(true);
|
||||
|
||||
spSkeleton *skeleton = drawable->skeleton;
|
||||
|
||||
spSkin *skin = spSkin_create("test-skin");
|
||||
spSkin_copySkin(skin, spSkeletonData_findSkin(skeletonData, "goblingirl"));
|
||||
// spSkin_addSkin(skin, spSkeletonData_findSkin(skeletonData, "goblingirl"));
|
||||
spSkeleton_setSkin(skeleton, skin);
|
||||
spSkeleton_setSlotsToSetupPose(skeleton);
|
||||
|
||||
skeleton->x = 320;
|
||||
skeleton->y = 590;
|
||||
spSkeleton_updateWorldTransform(skeleton, SP_PHYSICS_UPDATE);
|
||||
|
||||
spAnimationState_setAnimationByName(drawable->state, 0, "walk", true);
|
||||
|
||||
sf::RenderWindow window(sf::VideoMode(640, 640), "Spine SFML - skins api");
|
||||
window.setFramerateLimit(60);
|
||||
sf::Event event;
|
||||
sf::Clock deltaClock;
|
||||
while (window.isOpen()) {
|
||||
while (window.pollEvent(event))
|
||||
if (event.type == sf::Event::Closed) window.close();
|
||||
|
||||
float delta = deltaClock.getElapsedTime().asSeconds();
|
||||
deltaClock.restart();
|
||||
|
||||
drawable->update(delta, SP_PHYSICS_UPDATE);
|
||||
|
||||
window.clear();
|
||||
window.draw(*drawable);
|
||||
window.display();
|
||||
}
|
||||
|
||||
spSkin_clear(skin);
|
||||
spSkin_dispose(skin);
|
||||
}
|
||||
|
||||
void testMixAndMatch(spSkeletonData *skeletonData, spAtlas *atlas) {
|
||||
UNUSED(atlas);
|
||||
SkeletonDrawable *drawable = new SkeletonDrawable(skeletonData);
|
||||
drawable->timeScale = 1;
|
||||
drawable->setUsePremultipliedAlpha(true);
|
||||
|
||||
spSkeleton *skeleton = drawable->skeleton;
|
||||
|
||||
// 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.
|
||||
spSkin *skin = spSkin_create("mix-and-match");
|
||||
spSkin_addSkin(skin, spSkeletonData_findSkin(skeletonData, "skin-base"));
|
||||
spSkin_addSkin(skin, spSkeletonData_findSkin(skeletonData, "nose/short"));
|
||||
spSkin_addSkin(skin, spSkeletonData_findSkin(skeletonData, "eyelids/girly"));
|
||||
spSkin_addSkin(skin, spSkeletonData_findSkin(skeletonData, "eyes/violet"));
|
||||
spSkin_addSkin(skin, spSkeletonData_findSkin(skeletonData, "hair/brown"));
|
||||
spSkin_addSkin(skin, spSkeletonData_findSkin(skeletonData, "clothes/hoodie-orange"));
|
||||
spSkin_addSkin(skin, spSkeletonData_findSkin(skeletonData, "legs/pants-jeans"));
|
||||
spSkin_addSkin(skin, spSkeletonData_findSkin(skeletonData, "accessories/bag"));
|
||||
spSkin_addSkin(skin, spSkeletonData_findSkin(skeletonData, "accessories/hat-red-yellow"));
|
||||
spSkeleton_setSkin(skeleton, skin);
|
||||
spSkeleton_setSlotsToSetupPose(skeleton);
|
||||
|
||||
skeleton->x = 320;
|
||||
skeleton->y = 590;
|
||||
spSkeleton_updateWorldTransform(skeleton, SP_PHYSICS_UPDATE);
|
||||
|
||||
spAnimationState_setAnimationByName(drawable->state, 0, "dance", true);
|
||||
|
||||
sf::RenderWindow window(sf::VideoMode(640, 640), "Spine SFML - mix and match");
|
||||
window.setFramerateLimit(60);
|
||||
sf::Event event;
|
||||
sf::Clock deltaClock;
|
||||
while (window.isOpen()) {
|
||||
while (window.pollEvent(event))
|
||||
if (event.type == sf::Event::Closed) window.close();
|
||||
|
||||
float delta = deltaClock.getElapsedTime().asSeconds();
|
||||
deltaClock.restart();
|
||||
|
||||
drawable->update(delta, SP_PHYSICS_UPDATE);
|
||||
|
||||
window.clear();
|
||||
window.draw(*drawable);
|
||||
window.display();
|
||||
}
|
||||
|
||||
spSkin_clear(skin);
|
||||
spSkin_dispose(skin);
|
||||
}
|
||||
|
||||
void cloudpot(spSkeletonData *skeletonData, spAtlas *atlas) {
|
||||
UNUSED(atlas);
|
||||
|
||||
SkeletonDrawable *drawable = new SkeletonDrawable(skeletonData);
|
||||
drawable->timeScale = 1;
|
||||
drawable->setUsePremultipliedAlpha(true);
|
||||
|
||||
spSkeleton *skeleton = drawable->skeleton;
|
||||
skeleton->x = 320;
|
||||
skeleton->y = 480;
|
||||
spSkeleton_updateWorldTransform(skeleton, SP_PHYSICS_UPDATE);
|
||||
spAnimationState_setAnimationByName(drawable->state, 0, "playing-in-the-rain", true);
|
||||
|
||||
sf::RenderWindow window(sf::VideoMode(640, 640), "Spine SFML - cloudpot");
|
||||
window.setFramerateLimit(60);
|
||||
sf::Event event;
|
||||
sf::Clock deltaClock;
|
||||
|
||||
while (window.isOpen()) {
|
||||
while (window.pollEvent(event))
|
||||
if (event.type == sf::Event::Closed) window.close();
|
||||
|
||||
float delta = deltaClock.getElapsedTime().asSeconds();
|
||||
deltaClock.restart();
|
||||
|
||||
drawable->update(delta, SP_PHYSICS_UPDATE);
|
||||
|
||||
window.clear();
|
||||
window.draw(*drawable);
|
||||
window.display();
|
||||
}
|
||||
}
|
||||
|
||||
void sack(spSkeletonData *skeletonData, spAtlas *atlas) {
|
||||
UNUSED(atlas);
|
||||
|
||||
|
||||
SkeletonDrawable *drawable = new SkeletonDrawable(skeletonData);
|
||||
drawable->timeScale = 1;
|
||||
drawable->setUsePremultipliedAlpha(true);
|
||||
|
||||
spSkeleton *skeleton = drawable->skeleton;
|
||||
skeleton->x = 320;
|
||||
skeleton->y = 480;
|
||||
spSkeleton_updateWorldTransform(skeleton, SP_PHYSICS_UPDATE);
|
||||
spAnimationState_setAnimationByName(drawable->state, 0, "walk", true);
|
||||
|
||||
sf::RenderWindow window(sf::VideoMode(640, 640), "Spine SFML - sack");
|
||||
window.setFramerateLimit(60);
|
||||
sf::Event event;
|
||||
sf::Clock deltaClock;
|
||||
|
||||
while (window.isOpen()) {
|
||||
while (window.pollEvent(event))
|
||||
if (event.type == sf::Event::Closed) window.close();
|
||||
|
||||
float delta = deltaClock.getElapsedTime().asSeconds();
|
||||
deltaClock.restart();
|
||||
|
||||
drawable->update(delta, SP_PHYSICS_UPDATE);
|
||||
|
||||
window.clear();
|
||||
window.draw(*drawable);
|
||||
window.display();
|
||||
}
|
||||
}
|
||||
|
||||
void snowglobe(spSkeletonData *skeletonData, spAtlas *atlas) {
|
||||
UNUSED(atlas);
|
||||
|
||||
|
||||
SkeletonDrawable *drawable = new SkeletonDrawable(skeletonData);
|
||||
drawable->timeScale = 1;
|
||||
drawable->setUsePremultipliedAlpha(true);
|
||||
|
||||
spSkeleton *skeleton = drawable->skeleton;
|
||||
skeleton->x = 320;
|
||||
skeleton->y = 480;
|
||||
spSkeleton_updateWorldTransform(skeleton, SP_PHYSICS_UPDATE);
|
||||
spAnimationState_setAnimationByName(drawable->state, 0, "shake", true);
|
||||
|
||||
sf::RenderWindow window(sf::VideoMode(640, 640), "Spine SFML - snowglobe");
|
||||
window.setFramerateLimit(60);
|
||||
sf::Event event;
|
||||
sf::Clock deltaClock;
|
||||
|
||||
while (window.isOpen()) {
|
||||
while (window.pollEvent(event))
|
||||
if (event.type == sf::Event::Closed) window.close();
|
||||
|
||||
float delta = deltaClock.getElapsedTime().asSeconds();
|
||||
deltaClock.restart();
|
||||
|
||||
drawable->update(delta, SP_PHYSICS_UPDATE);
|
||||
|
||||
window.clear();
|
||||
window.draw(*drawable);
|
||||
window.display();
|
||||
}
|
||||
}
|
||||
|
||||
void celestialCircus(spSkeletonData *skeletonData, spAtlas *atlas) {
|
||||
UNUSED(atlas);
|
||||
|
||||
|
||||
SkeletonDrawable *drawable = new SkeletonDrawable(skeletonData);
|
||||
drawable->timeScale = 1;
|
||||
drawable->setUsePremultipliedAlpha(true);
|
||||
|
||||
spSkeleton *skeleton = drawable->skeleton;
|
||||
skeleton->x = 320;
|
||||
skeleton->y = 480;
|
||||
skeleton->scaleX = skeleton->scaleY = 0.2f;
|
||||
spSkeleton_updateWorldTransform(skeleton, SP_PHYSICS_UPDATE);
|
||||
spAnimationState_setAnimationByName(drawable->state, 0, "swing", true);
|
||||
|
||||
sf::RenderWindow window(sf::VideoMode(640, 640), "Spine SFML - celestrial circus");
|
||||
window.setFramerateLimit(60);
|
||||
sf::Event event;
|
||||
sf::Clock deltaClock;
|
||||
|
||||
while (window.isOpen()) {
|
||||
while (window.pollEvent(event))
|
||||
if (event.type == sf::Event::Closed) window.close();
|
||||
|
||||
float delta = deltaClock.getElapsedTime().asSeconds();
|
||||
deltaClock.restart();
|
||||
|
||||
drawable->update(delta, SP_PHYSICS_UPDATE);
|
||||
|
||||
window.clear();
|
||||
window.draw(*drawable);
|
||||
window.display();
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
testcase(celestialCircus, "data/celestial-circus-pro.json", "data/celestial-circus-pro.skel", "data/celestial-circus-pma.atlas", 1);
|
||||
testcase(cloudpot, "data/cloud-pot.json", "data/cloud-pot.skel", "data/cloud-pot-pma.atlas", 0.2);
|
||||
testcase(sack, "data/sack-pro.json", "data/sack-pro.skel", "data/sack-pma.atlas", 0.2f);
|
||||
testcase(snowglobe, "data/snowglobe-pro.json", "data/snowglobe-pro.skel", "data/snowglobe-pma.atlas", 0.2f);
|
||||
testcase(raptor, "data/raptor-pro.json", "data/raptor-pro.skel", "data/raptor-pma.atlas", 0.5f);
|
||||
testcase(dragon, "data/dragon-ess.json", "data/dragon-ess.skel", "data/dragon-pma.atlas", 0.6f);
|
||||
testcase(ikDemo, "data/spineboy-pro.json", "data/spineboy-pro.skel", "data/spineboy-pma.atlas", 0.6f);
|
||||
testcase(spineboy, "data/spineboy-pro.json", "data/spineboy-pro.skel", "data/spineboy-pma.atlas", 0.6f);
|
||||
testcase(coin, "data/coin-pro.json", "data/coin-pro.skel", "data/coin-pma.atlas", 0.5f);
|
||||
testcase(testMixAndMatch, "data/mix-and-match-pro.json", "data/mix-and-match-pro.skel", "data/mix-and-match-pma.atlas", 0.5f);
|
||||
testcase(test, "data/tank-pro.json", "data/tank-pro.skel", "data/tank-pma.atlas", 1.0f);
|
||||
testcase(owl, "data/owl-pro.json", "data/owl-pro.skel", "data/owl-pma.atlas", 0.5f);
|
||||
testcase(vine, "data/vine-pro.json", "data/vine-pro.skel", "data/vine-pma.atlas", 0.5f);
|
||||
testcase(tank, "data/tank-pro.json", "data/tank-pro.skel", "data/tank-pma.atlas", 0.2f);
|
||||
testcase(goblins, "data/goblins-pro.json", "data/goblins-pro.skel", "data/goblins-pma.atlas", 1.4f);
|
||||
testcase(stretchyman, "data/stretchyman-pro.json", "data/stretchyman-pro.skel", "data/stretchyman-pma.atlas", 0.6f);
|
||||
testcase(testSkinsApi, "data/goblins-pro.json", "data/goblins-pro.skel", "data/goblins-pma.atlas", 1.4f);
|
||||
return 0;
|
||||
}
|
||||
@ -1,326 +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 <spine/spine-sfml.h>
|
||||
|
||||
#ifndef SPINE_MESH_VERTEX_COUNT_MAX
|
||||
#define SPINE_MESH_VERTEX_COUNT_MAX 1000
|
||||
#endif
|
||||
|
||||
using namespace sf;
|
||||
|
||||
sf::BlendMode normal = sf::BlendMode(sf::BlendMode::SrcAlpha, sf::BlendMode::OneMinusSrcAlpha);
|
||||
sf::BlendMode additive = sf::BlendMode(sf::BlendMode::SrcAlpha, sf::BlendMode::One);
|
||||
sf::BlendMode multiply = sf::BlendMode(sf::BlendMode::DstColor, sf::BlendMode::OneMinusSrcAlpha);
|
||||
sf::BlendMode screen = sf::BlendMode(sf::BlendMode::One, sf::BlendMode::OneMinusSrcColor);
|
||||
|
||||
sf::BlendMode normalPma = sf::BlendMode(sf::BlendMode::One, sf::BlendMode::OneMinusSrcAlpha);
|
||||
sf::BlendMode additivePma = sf::BlendMode(sf::BlendMode::One, sf::BlendMode::One);
|
||||
sf::BlendMode multiplyPma = sf::BlendMode(sf::BlendMode::DstColor, sf::BlendMode::OneMinusSrcAlpha);
|
||||
sf::BlendMode screenPma = sf::BlendMode(sf::BlendMode::One, sf::BlendMode::OneMinusSrcColor);
|
||||
|
||||
spColorArray *spColorArray_create(int initialCapacity) {
|
||||
spColorArray *array = ((spColorArray *) _spCalloc(1, sizeof(spColorArray), "_file_name_", 48));
|
||||
array->size = 0;
|
||||
array->capacity = initialCapacity;
|
||||
array->items = ((spColor *) _spCalloc(initialCapacity, sizeof(spColor), "_file_name_", 48));
|
||||
return array;
|
||||
}
|
||||
void spColorArray_dispose(spColorArray *self) {
|
||||
_spFree((void *) self->items);
|
||||
_spFree((void *) self);
|
||||
}
|
||||
void spColorArray_clear(spColorArray *self) {
|
||||
self->size = 0;
|
||||
}
|
||||
spColorArray *spColorArray_setSize(spColorArray *self, int newSize) {
|
||||
self->size = newSize;
|
||||
if (self->capacity < newSize) {
|
||||
self->capacity = ((8) > ((int) (self->size * 1.75f)) ? (8) : ((int) (self->size * 1.75f)));
|
||||
self->items = ((spColor *) _spRealloc(self->items, sizeof(spColor) * (self->capacity)));
|
||||
}
|
||||
return self;
|
||||
}
|
||||
void spColorArray_ensureCapacity(spColorArray *self, int newCapacity) {
|
||||
if (self->capacity >= newCapacity) return;
|
||||
self->capacity = newCapacity;
|
||||
self->items = ((spColor *) _spRealloc(self->items, sizeof(spColor) * (self->capacity)));
|
||||
}
|
||||
void spColorArray_add(spColorArray *self, spColor value) {
|
||||
if (self->size == self->capacity) {
|
||||
self->capacity = ((8) > ((int) (self->size * 1.75f)) ? (8) : ((int) (self->size * 1.75f)));
|
||||
self->items = ((spColor *) _spRealloc(self->items, sizeof(spColor) * (self->capacity)));
|
||||
}
|
||||
self->items[self->size++] = value;
|
||||
}
|
||||
void spColorArray_addAll(spColorArray *self, spColorArray *other) {
|
||||
int i = 0;
|
||||
for (; i < other->size; i++) {
|
||||
spColorArray_add(self, other->items[i]);
|
||||
}
|
||||
}
|
||||
void spColorArray_addAllValues(spColorArray *self, spColor *values, int offset, int count) {
|
||||
int i = offset, n = offset + count;
|
||||
for (; i < n; i++) {
|
||||
spColorArray_add(self, values[i]);
|
||||
}
|
||||
}
|
||||
void spColorArray_removeAt(spColorArray *self, int index) {
|
||||
self->size--;
|
||||
memmove(self->items + index, self->items + index + 1, sizeof(spColor) * (self->size - index));
|
||||
}
|
||||
|
||||
spColor spColorArray_pop(spColorArray *self) {
|
||||
spColor item = self->items[--self->size];
|
||||
return item;
|
||||
}
|
||||
spColor spColorArray_peek(spColorArray *self) {
|
||||
return self->items[self->size - 1];
|
||||
}
|
||||
|
||||
void _spAtlasPage_createTexture(spAtlasPage *self, const char *path) {
|
||||
Texture *texture = new Texture();
|
||||
if (!texture->loadFromFile(path)) return;
|
||||
|
||||
if (self->magFilter == SP_ATLAS_LINEAR) texture->setSmooth(true);
|
||||
if (self->uWrap == SP_ATLAS_REPEAT && self->vWrap == SP_ATLAS_REPEAT) texture->setRepeated(true);
|
||||
|
||||
self->rendererObject = texture;
|
||||
Vector2u size = texture->getSize();
|
||||
self->width = size.x;
|
||||
self->height = size.y;
|
||||
}
|
||||
|
||||
void _spAtlasPage_disposeTexture(spAtlasPage *self) {
|
||||
delete (Texture *) self->rendererObject;
|
||||
}
|
||||
|
||||
char *_spUtil_readFile(const char *path, int *length) {
|
||||
return _spReadFile(path, length);
|
||||
}
|
||||
|
||||
/**/
|
||||
|
||||
namespace spine {
|
||||
|
||||
SkeletonDrawable::SkeletonDrawable(spSkeletonData *skeletonData, spAnimationStateData *stateData)
|
||||
: timeScale(1), vertexArray(new VertexArray(Triangles, skeletonData->bonesCount * 4)), worldVertices(0), clipper(0) {
|
||||
spBone_setYDown(true);
|
||||
worldVertices = MALLOC(float, SPINE_MESH_VERTEX_COUNT_MAX);
|
||||
skeleton = spSkeleton_create(skeletonData);
|
||||
tempUvs = spFloatArray_create(16);
|
||||
tempColors = spColorArray_create(16);
|
||||
|
||||
ownsAnimationStateData = stateData == 0;
|
||||
if (ownsAnimationStateData) stateData = spAnimationStateData_create(skeletonData);
|
||||
|
||||
state = spAnimationState_create(stateData);
|
||||
|
||||
clipper = spSkeletonClipping_create();
|
||||
}
|
||||
|
||||
SkeletonDrawable::~SkeletonDrawable() {
|
||||
delete vertexArray;
|
||||
FREE(worldVertices);
|
||||
if (ownsAnimationStateData) spAnimationStateData_dispose(state->data);
|
||||
spAnimationState_dispose(state);
|
||||
spSkeleton_dispose(skeleton);
|
||||
spSkeletonClipping_dispose(clipper);
|
||||
spFloatArray_dispose(tempUvs);
|
||||
spColorArray_dispose(tempColors);
|
||||
}
|
||||
|
||||
void SkeletonDrawable::update(float deltaTime, spPhysics physics) {
|
||||
spAnimationState_update(state, deltaTime * timeScale);
|
||||
spAnimationState_apply(state, skeleton);
|
||||
spSkeleton_update(skeleton, deltaTime * timeScale);
|
||||
spSkeleton_updateWorldTransform(skeleton, physics);
|
||||
}
|
||||
|
||||
void SkeletonDrawable::draw(RenderTarget &target, RenderStates states) const {
|
||||
vertexArray->clear();
|
||||
states.texture = 0;
|
||||
unsigned short quadIndices[6] = {0, 1, 2, 2, 3, 0};
|
||||
|
||||
// Early out if skeleton is invisible
|
||||
if (skeleton->color.a == 0) return;
|
||||
|
||||
sf::Vertex vertex;
|
||||
Texture *texture = 0;
|
||||
for (int i = 0; i < skeleton->slotsCount; ++i) {
|
||||
spSlot *slot = skeleton->drawOrder[i];
|
||||
spAttachment *attachment = slot->attachment;
|
||||
if (!attachment) {
|
||||
spSkeletonClipping_clipEnd(clipper, slot);
|
||||
continue;
|
||||
}
|
||||
|
||||
// Early out if slot is invisible
|
||||
if (slot->color.a == 0 || !slot->bone->active) {
|
||||
spSkeletonClipping_clipEnd(clipper, slot);
|
||||
continue;
|
||||
}
|
||||
|
||||
float *vertices = worldVertices;
|
||||
int verticesCount = 0;
|
||||
float *uvs = 0;
|
||||
unsigned short *indices = 0;
|
||||
int indicesCount = 0;
|
||||
spColor *attachmentColor;
|
||||
|
||||
if (attachment->type == SP_ATTACHMENT_REGION) {
|
||||
spRegionAttachment *regionAttachment = (spRegionAttachment *) attachment;
|
||||
attachmentColor = ®ionAttachment->color;
|
||||
|
||||
// Early out if slot is invisible
|
||||
if (attachmentColor->a == 0) {
|
||||
spSkeletonClipping_clipEnd(clipper, slot);
|
||||
continue;
|
||||
}
|
||||
|
||||
spRegionAttachment_computeWorldVertices(regionAttachment, slot, vertices, 0, 2);
|
||||
verticesCount = 4;
|
||||
uvs = regionAttachment->uvs;
|
||||
indices = quadIndices;
|
||||
indicesCount = 6;
|
||||
texture = (Texture *) ((spAtlasRegion *) regionAttachment->rendererObject)->page->rendererObject;
|
||||
|
||||
} else if (attachment->type == SP_ATTACHMENT_MESH) {
|
||||
spMeshAttachment *mesh = (spMeshAttachment *) attachment;
|
||||
attachmentColor = &mesh->color;
|
||||
|
||||
// Early out if slot is invisible
|
||||
if (attachmentColor->a == 0) {
|
||||
spSkeletonClipping_clipEnd(clipper, slot);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (mesh->super.worldVerticesLength > SPINE_MESH_VERTEX_COUNT_MAX) continue;
|
||||
spVertexAttachment_computeWorldVertices(SUPER(mesh), slot, 0, mesh->super.worldVerticesLength, worldVertices, 0, 2);
|
||||
verticesCount = mesh->super.worldVerticesLength >> 1;
|
||||
uvs = mesh->uvs;
|
||||
indices = mesh->triangles;
|
||||
indicesCount = mesh->trianglesCount;
|
||||
texture = (Texture *) ((spAtlasRegion *) mesh->rendererObject)->page->rendererObject;
|
||||
|
||||
} else if (attachment->type == SP_ATTACHMENT_CLIPPING) {
|
||||
spClippingAttachment *clip = (spClippingAttachment *) slot->attachment;
|
||||
spSkeletonClipping_clipStart(clipper, slot, clip);
|
||||
continue;
|
||||
} else
|
||||
continue;
|
||||
|
||||
Uint8 r = static_cast<Uint8>(skeleton->color.r * slot->color.r * attachmentColor->r * 255);
|
||||
Uint8 g = static_cast<Uint8>(skeleton->color.g * slot->color.g * attachmentColor->g * 255);
|
||||
Uint8 b = static_cast<Uint8>(skeleton->color.b * slot->color.b * attachmentColor->b * 255);
|
||||
Uint8 a = static_cast<Uint8>(skeleton->color.a * slot->color.a * attachmentColor->a * 255);
|
||||
vertex.color.r = r;
|
||||
vertex.color.g = g;
|
||||
vertex.color.b = b;
|
||||
vertex.color.a = a;
|
||||
|
||||
spColor light;
|
||||
light.r = r / 255.0f;
|
||||
light.g = g / 255.0f;
|
||||
light.b = b / 255.0f;
|
||||
light.a = a / 255.0f;
|
||||
|
||||
sf::BlendMode blend;
|
||||
if (!usePremultipliedAlpha) {
|
||||
switch (slot->data->blendMode) {
|
||||
case SP_BLEND_MODE_NORMAL:
|
||||
blend = normal;
|
||||
break;
|
||||
case SP_BLEND_MODE_ADDITIVE:
|
||||
blend = additive;
|
||||
break;
|
||||
case SP_BLEND_MODE_MULTIPLY:
|
||||
blend = multiply;
|
||||
break;
|
||||
case SP_BLEND_MODE_SCREEN:
|
||||
blend = screen;
|
||||
break;
|
||||
default:
|
||||
blend = normal;
|
||||
}
|
||||
} else {
|
||||
switch (slot->data->blendMode) {
|
||||
case SP_BLEND_MODE_NORMAL:
|
||||
blend = normalPma;
|
||||
break;
|
||||
case SP_BLEND_MODE_ADDITIVE:
|
||||
blend = additivePma;
|
||||
break;
|
||||
case SP_BLEND_MODE_MULTIPLY:
|
||||
blend = multiplyPma;
|
||||
break;
|
||||
case SP_BLEND_MODE_SCREEN:
|
||||
blend = screenPma;
|
||||
break;
|
||||
default:
|
||||
blend = normalPma;
|
||||
}
|
||||
}
|
||||
|
||||
if (states.texture == 0) states.texture = texture;
|
||||
|
||||
if (states.blendMode != blend || states.texture != texture) {
|
||||
target.draw(*vertexArray, states);
|
||||
vertexArray->clear();
|
||||
states.blendMode = blend;
|
||||
states.texture = texture;
|
||||
}
|
||||
|
||||
if (spSkeletonClipping_isClipping(clipper)) {
|
||||
spSkeletonClipping_clipTriangles(clipper, vertices, verticesCount << 1, indices, indicesCount, uvs, 2);
|
||||
vertices = clipper->clippedVertices->items;
|
||||
verticesCount = clipper->clippedVertices->size >> 1;
|
||||
uvs = clipper->clippedUVs->items;
|
||||
indices = clipper->clippedTriangles->items;
|
||||
indicesCount = clipper->clippedTriangles->size;
|
||||
}
|
||||
|
||||
Vector2u size = texture->getSize();
|
||||
|
||||
for (int j = 0; j < indicesCount; ++j) {
|
||||
int index = indices[j] << 1;
|
||||
vertex.position.x = vertices[index];
|
||||
vertex.position.y = vertices[index + 1];
|
||||
vertex.texCoords.x = uvs[index] * size.x;
|
||||
vertex.texCoords.y = uvs[index + 1] * size.y;
|
||||
vertexArray->append(vertex);
|
||||
}
|
||||
|
||||
spSkeletonClipping_clipEnd(clipper, slot);
|
||||
}
|
||||
target.draw(*vertexArray, states);
|
||||
spSkeletonClipping_clipEnd2(clipper);
|
||||
}
|
||||
|
||||
} /* namespace spine */
|
||||
@ -1,53 +0,0 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
project(spine-sfml)
|
||||
|
||||
# Default flags
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/../../flags.cmake)
|
||||
|
||||
# SFML
|
||||
include(FetchContent)
|
||||
FetchContent_Declare(SFML GIT_REPOSITORY https://github.com/SFML/SFML GIT_TAG 2.6.1)
|
||||
set(FETCHCONTENT_QUIET NO)
|
||||
FetchContent_MakeAvailable(SFML)
|
||||
|
||||
# Add spine-cpp
|
||||
add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../../spine-cpp ${CMAKE_BINARY_DIR}/spine-cpp-build)
|
||||
|
||||
# Define spine-sfml-cpp library
|
||||
include_directories(${CMAKE_CURRENT_LIST_DIR}/src ${SFML_SOURCE_DIR}/include)
|
||||
file(GLOB INCLUDES "${CMAKE_CURRENT_LIST_DIR}/src/**/*.h")
|
||||
file(GLOB SOURCES "${CMAKE_CURRENT_LIST_DIR}/src/**/*.cpp")
|
||||
add_library(spine-sfml-cpp STATIC ${SOURCES} ${INCLUDES})
|
||||
target_link_libraries(spine-sfml-cpp LINK_PUBLIC spine-cpp sfml-graphics sfml-window sfml-system)
|
||||
|
||||
# Define spine-sfml example executable
|
||||
add_executable(spine-sfml-cpp-example ${CMAKE_CURRENT_LIST_DIR}/example/main.cpp)
|
||||
target_link_libraries(spine-sfml-cpp-example spine-cpp spine-sfml-cpp sfml-graphics sfml-window sfml-system)
|
||||
|
||||
# Define spine-sfml testbed executable
|
||||
add_executable(spine-sfml-cpp-testbed ${CMAKE_CURRENT_LIST_DIR}/example/testbed.cpp)
|
||||
target_link_libraries(spine-sfml-cpp-testbed spine-cpp spine-sfml-cpp sfml-graphics sfml-window sfml-system)
|
||||
|
||||
# Link in OS dependencies like OpenGL
|
||||
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||
find_library(COCOA_FRAMEWORK Cocoa)
|
||||
find_library(OPENGL_FRAMEWORK OpenGL)
|
||||
target_link_libraries(spine-sfml-cpp-example ${COCOA_FRAMEWORK} ${OPENGL_FRAMEWORK})
|
||||
target_link_libraries(spine-sfml-cpp-testbed ${COCOA_FRAMEWORK} ${OPENGL_FRAMEWORK})
|
||||
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||
target_link_libraries(spine-sfml-cpp-example GL)
|
||||
target_link_libraries(spine-sfml-cpp-testbed GL)
|
||||
else()
|
||||
target_link_libraries(spine-sfml-cpp-example opengl32 gdi32 winmm)
|
||||
target_link_libraries(spine-sfml-cpp-testbed opengl32 gdi32 winmm)
|
||||
add_definitions(-DSFML_STATIC)
|
||||
endif()
|
||||
|
||||
# Copy data to build directory
|
||||
add_custom_command(TARGET spine-sfml-cpp-example
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||
${CMAKE_CURRENT_LIST_DIR}/data $<TARGET_FILE_DIR:spine-sfml-cpp-example>/data)
|
||||
|
||||
add_custom_command(TARGET spine-sfml-cpp-testbed
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||
${CMAKE_CURRENT_LIST_DIR}/data $<TARGET_FILE_DIR:spine-sfml-cpp-testbed>/data)
|
||||
@ -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:
|
||||
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.
|
||||
@ -1,65 +0,0 @@
|
||||
# spine-sfml
|
||||
|
||||
The spine-sfml runtime provides functionality to load, manipulate and render [Spine](http://esotericsoftware.com) skeletal animation data using [SFML](http://www.sfml-dev.org/). spine-sfml 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-sfml works with data exported from Spine 4.2.xx.
|
||||
|
||||
spine-sfml supports all Spine features except two color tinting.
|
||||
|
||||
## Usage
|
||||
|
||||
1. Create a new SFML project. See the [SFML documentation](https://www.sfml-dev.org/tutorials/2.6/) or have a look at the example in this repository.
|
||||
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.
|
||||
3. Add the sources from `spine-cpp/spine-cpp/src/spine` and `spine-sfml/cpp/src/spine` to your project
|
||||
4. Add the folder `spine-cpp/spine-cpp/include` to your header search path. Note that includes are specified as `#inclue <spine/file.h>`, so the `spine` directory cannot be omitted when copying the source files.
|
||||
|
||||
See the [Spine Runtimes documentation](http://esotericsoftware.com/spine-documentation#runtimes) on how to use the APIs or check out the Spine SFML example.
|
||||
|
||||
## Example
|
||||
|
||||
The Spine SFML example works on Windows, Linux and Mac OS X.
|
||||
|
||||
### Windows
|
||||
|
||||
1. Install [Visual Studio 2022 Community](https://visualstudio.microsoft.com/downloads/). Make sure you install support for C++, CMake as well as th Windows SDK for XP/7/8.
|
||||
1. Open Visual Studio and open the `spine-sfml/cpp` folder via the `Open a local folder` button
|
||||
1. Let CMake finish, then select `spine-sfml-cpp-example.exe` as the start-up project
|
||||
1. Start debugging to run the example
|
||||
|
||||
### Linux
|
||||
|
||||
1. Install the SFML dependencies, e.g. on Ubuntu/Debian via `sudo apt install libsfml-dev`
|
||||
2. Install CMake, e.g. on Ubuntu/Debian via `sudo apt-get install -y cmake`
|
||||
3. Download the Spine Runtimes repository using git (`git clone https://github.com/esotericsoftware/spine-runtimes`) or download it as a zip via the download button above.
|
||||
4. Open a terminal, and `cd` into the `spine-runtimes/spine-sfml/cpp` folder
|
||||
5. Type `mkdir build && cd build && cmake ../..` to generate Make files
|
||||
6. Type `make` to compile the example
|
||||
7. Run the example via `./spine-sfml-cpp-example`
|
||||
|
||||
### Mac OS X
|
||||
|
||||
1. Install [Xcode](https://developer.apple.com/xcode/)
|
||||
2. Install [Homebrew](http://brew.sh/)
|
||||
3. Open a terminal and install CMake via `brew install cmake`
|
||||
4. Download the Spine Runtimes repository using git (`git clone https://github.com/esotericsoftware/spine-runtimes`) or download it as a zip via the download button above.
|
||||
5. Open a terminal, and `cd` into the `spine-runtimes/spine-sfml/cpp` folder
|
||||
6. Type `mkdir build && cd build && cmake -G Xcode ..` to generate an Xcode project called `spine-sfml.xcodeproj`
|
||||
7. Type `open spine-sfml.xcodeproj` to open the Xcode project
|
||||
8. In Xcode, set the active scheme to `spine-sfml-cpp-example`
|
||||
9. Click the `Run` button or press `CMD+R` to run the example
|
||||
|
||||
## Notes
|
||||
|
||||
- Atlas images should not use premultiplied alpha.
|
||||
@ -1,158 +0,0 @@
|
||||
celestial-circus-pma.png
|
||||
size: 1024, 1024
|
||||
filter: Linear, Linear
|
||||
pma: true
|
||||
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
|
||||
|
Before Width: | Height: | Size: 791 KiB |
@ -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
|
||||
|
Before Width: | Height: | Size: 784 KiB |
@ -1,84 +0,0 @@
|
||||
cloud-pot-pma.png
|
||||
size: 1024, 512
|
||||
filter: Linear, Linear
|
||||
pma: true
|
||||
scale: 0.5
|
||||
cloud-base-1
|
||||
bounds: 548, 129, 233, 210
|
||||
cloud-base-10
|
||||
bounds: 448, 227, 97, 101
|
||||
cloud-base-2
|
||||
bounds: 783, 129, 210, 208
|
||||
rotate: 90
|
||||
cloud-base-3
|
||||
bounds: 271, 156, 175, 164
|
||||
cloud-base-4
|
||||
bounds: 2, 148, 176, 163
|
||||
cloud-base-5
|
||||
bounds: 495, 2, 145, 125
|
||||
cloud-base-6
|
||||
bounds: 332, 18, 161, 136
|
||||
cloud-base-7
|
||||
bounds: 180, 5, 150, 149
|
||||
cloud-base-8
|
||||
bounds: 2, 18, 154, 128
|
||||
cloud-base-9
|
||||
bounds: 862, 19, 107, 108
|
||||
cloud-cheeks
|
||||
bounds: 642, 48, 218, 79
|
||||
cloud-eyes-closed
|
||||
bounds: 137, 317, 132, 22
|
||||
cloud-eyes-open
|
||||
bounds: 2, 313, 133, 26
|
||||
cloud-eyes-reflex
|
||||
bounds: 271, 322, 120, 17
|
||||
cloud-mouth-closed
|
||||
bounds: 180, 201, 49, 16
|
||||
cloud-mouth-open
|
||||
bounds: 180, 219, 59, 35
|
||||
leaf-big
|
||||
bounds: 448, 205, 20, 49
|
||||
rotate: 90
|
||||
leaf-small
|
||||
bounds: 993, 278, 17, 30
|
||||
petal-1
|
||||
bounds: 241, 236, 26, 18
|
||||
petal-2
|
||||
bounds: 993, 248, 28, 17
|
||||
rotate: 90
|
||||
petal-3
|
||||
bounds: 993, 310, 29, 21
|
||||
rotate: 90
|
||||
pot-base
|
||||
bounds: 180, 256, 76, 59
|
||||
pot-eyes-closed
|
||||
bounds: 500, 330, 46, 9
|
||||
pot-eyes-open
|
||||
bounds: 499, 214, 40, 11
|
||||
pot-mouth-open
|
||||
bounds: 241, 220, 14, 16
|
||||
rotate: 90
|
||||
pot-mouth-pouty
|
||||
bounds: 521, 202, 18, 10
|
||||
pot-mouth-smile
|
||||
bounds: 993, 198, 14, 10
|
||||
pot-mouth-smile-big
|
||||
bounds: 499, 203, 20, 9
|
||||
rain-blue
|
||||
bounds: 241, 206, 12, 18
|
||||
rotate: 90
|
||||
rain-color
|
||||
bounds: 258, 298, 9, 17
|
||||
rain-green
|
||||
bounds: 993, 210, 12, 18
|
||||
rotate: 90
|
||||
rain-white
|
||||
bounds: 993, 224, 12, 22
|
||||
rain-white-reflex
|
||||
bounds: 393, 324, 5, 10
|
||||
rotate: 90
|
||||
stem
|
||||
bounds: 393, 331, 8, 105
|
||||
rotate: 90
|
||||
stem-end
|
||||
bounds: 1007, 233, 13, 13
|
||||
|
Before Width: | Height: | Size: 341 KiB |
@ -1,83 +0,0 @@
|
||||
cloud-pot.png
|
||||
size: 1024, 512
|
||||
filter: Linear, Linear
|
||||
scale: 0.5
|
||||
cloud-base-1
|
||||
bounds: 548, 129, 233, 210
|
||||
cloud-base-10
|
||||
bounds: 448, 227, 97, 101
|
||||
cloud-base-2
|
||||
bounds: 783, 129, 210, 208
|
||||
rotate: 90
|
||||
cloud-base-3
|
||||
bounds: 271, 156, 175, 164
|
||||
cloud-base-4
|
||||
bounds: 2, 148, 176, 163
|
||||
cloud-base-5
|
||||
bounds: 495, 2, 145, 125
|
||||
cloud-base-6
|
||||
bounds: 332, 18, 161, 136
|
||||
cloud-base-7
|
||||
bounds: 180, 5, 150, 149
|
||||
cloud-base-8
|
||||
bounds: 2, 18, 154, 128
|
||||
cloud-base-9
|
||||
bounds: 862, 19, 107, 108
|
||||
cloud-cheeks
|
||||
bounds: 642, 48, 218, 79
|
||||
cloud-eyes-closed
|
||||
bounds: 137, 317, 132, 22
|
||||
cloud-eyes-open
|
||||
bounds: 2, 313, 133, 26
|
||||
cloud-eyes-reflex
|
||||
bounds: 271, 322, 120, 17
|
||||
cloud-mouth-closed
|
||||
bounds: 180, 201, 49, 16
|
||||
cloud-mouth-open
|
||||
bounds: 180, 219, 59, 35
|
||||
leaf-big
|
||||
bounds: 448, 205, 20, 49
|
||||
rotate: 90
|
||||
leaf-small
|
||||
bounds: 993, 278, 17, 30
|
||||
petal-1
|
||||
bounds: 241, 236, 26, 18
|
||||
petal-2
|
||||
bounds: 993, 248, 28, 17
|
||||
rotate: 90
|
||||
petal-3
|
||||
bounds: 993, 310, 29, 21
|
||||
rotate: 90
|
||||
pot-base
|
||||
bounds: 180, 256, 76, 59
|
||||
pot-eyes-closed
|
||||
bounds: 500, 330, 46, 9
|
||||
pot-eyes-open
|
||||
bounds: 499, 214, 40, 11
|
||||
pot-mouth-open
|
||||
bounds: 241, 220, 14, 16
|
||||
rotate: 90
|
||||
pot-mouth-pouty
|
||||
bounds: 521, 202, 18, 10
|
||||
pot-mouth-smile
|
||||
bounds: 993, 198, 14, 10
|
||||
pot-mouth-smile-big
|
||||
bounds: 499, 203, 20, 9
|
||||
rain-blue
|
||||
bounds: 241, 206, 12, 18
|
||||
rotate: 90
|
||||
rain-color
|
||||
bounds: 258, 298, 9, 17
|
||||
rain-green
|
||||
bounds: 993, 210, 12, 18
|
||||
rotate: 90
|
||||
rain-white
|
||||
bounds: 993, 224, 12, 22
|
||||
rain-white-reflex
|
||||
bounds: 393, 324, 5, 10
|
||||
rotate: 90
|
||||
stem
|
||||
bounds: 393, 331, 8, 105
|
||||
rotate: 90
|
||||
stem-end
|
||||
bounds: 1007, 233, 13, 13
|
||||
@ -1,846 +0,0 @@
|
||||
{
|
||||
"skeleton": {
|
||||
"hash": "XPuWaTjiwek",
|
||||
"spine": "4.3.37-beta",
|
||||
"x": -345,
|
||||
"y": -17,
|
||||
"width": 756,
|
||||
"height": 1098,
|
||||
"images": "./images/",
|
||||
"audio": ""
|
||||
},
|
||||
"bones": [
|
||||
{ "name": "root" },
|
||||
{ "name": "pot-control", "parent": "root", "x": 5, "y": 42, "color": "8828ffff", "icon": "arrowsB" },
|
||||
{ "name": "cloud", "parent": "pot-control", "x": 26.5, "y": 772, "color": "1ee8c0ff", "icon": "circle" },
|
||||
{ "name": "cloud-base-1", "parent": "cloud", "x": -4, "y": 57, "color": "b0d5eaff" },
|
||||
{ "name": "cloud-base-2", "parent": "cloud-base-1", "x": 148.5, "y": -18.5, "color": "b0d5eaff" },
|
||||
{ "name": "cloud-base-3", "parent": "cloud-base-1", "x": -182, "y": -87.5, "color": "b0d5eaff" },
|
||||
{ "name": "cloud-base-4", "parent": "cloud", "x": -31.5, "y": -77, "color": "b0d5eaff" },
|
||||
{ "name": "cloud-base-5", "parent": "cloud-base-4", "x": 177.5, "y": 8, "color": "b0d5eaff" },
|
||||
{ "name": "cloud-base-6", "parent": "cloud-base-1", "x": -150.5, "y": 40, "color": "b0d5eaff" },
|
||||
{ "name": "cloud-base-7", "parent": "cloud-base-1", "x": 8.5, "y": 36.5, "color": "b0d5eaff" },
|
||||
{ "name": "cloud-base-8", "parent": "cloud-base-2", "x": 3.5, "y": 68.5, "color": "b0d5eaff" },
|
||||
{ "name": "cloud-base-9", "parent": "cloud-base-3", "x": -83.5, "y": 30.5, "color": "b0d5eaff" },
|
||||
{ "name": "cloud-base-10", "parent": "cloud-base-5", "x": 137, "y": 54.5, "color": "b0d5eaff" },
|
||||
{ "name": "rain-blue", "parent": "cloud", "x": 102.49, "y": -26, "color": "2360e3ff", "icon": "diamond" },
|
||||
{ "name": "rain-color", "parent": "cloud", "x": -39.42, "y": -26, "color": "2360e3ff", "icon": "diamond" },
|
||||
{ "name": "rain-green", "parent": "cloud", "x": 35.08, "y": -26, "color": "2360e3ff", "icon": "diamond" },
|
||||
{ "name": "rain-white", "parent": "cloud", "x": -103.92, "y": -26, "color": "2360e3ff", "icon": "diamond" },
|
||||
{ "name": "pot", "parent": "pot-control", "x": -5, "y": -42, "color": "8828ffff" },
|
||||
{ "name": "pot-face", "parent": "pot", "x": -1.06, "y": 28.16, "color": "f38383ff", "icon": "gear" },
|
||||
{
|
||||
"name": "leaf-big",
|
||||
"parent": "pot",
|
||||
"length": 46.73,
|
||||
"rotation": 119.24,
|
||||
"x": 4.04,
|
||||
"y": 95.05,
|
||||
"color": "abe323ff"
|
||||
},
|
||||
{ "name": "leaf-big-tip", "parent": "leaf-big", "length": 46.73, "x": 46.73, "color": "abe323ff" },
|
||||
{
|
||||
"name": "leaf-small",
|
||||
"parent": "pot",
|
||||
"length": 51.32,
|
||||
"rotation": 50.93,
|
||||
"x": 10.16,
|
||||
"y": 96.81,
|
||||
"color": "abe323ff"
|
||||
},
|
||||
{
|
||||
"name": "stem",
|
||||
"parent": "pot",
|
||||
"length": 104.76,
|
||||
"rotation": 90,
|
||||
"x": 7.24,
|
||||
"y": 92.61,
|
||||
"color": "abe323ff"
|
||||
},
|
||||
{ "name": "stem2", "parent": "stem", "length": 69.84, "x": 104.76, "color": "abe323ff" },
|
||||
{ "name": "stem3", "parent": "stem2", "length": 34.92, "x": 69.84, "color": "abe323ff" },
|
||||
{
|
||||
"name": "petal-3",
|
||||
"parent": "stem3",
|
||||
"length": 37.74,
|
||||
"rotation": 1.03,
|
||||
"x": 30.73,
|
||||
"y": 0.64,
|
||||
"color": "2381e3ff"
|
||||
},
|
||||
{
|
||||
"name": "petal-1",
|
||||
"parent": "stem3",
|
||||
"length": 40.11,
|
||||
"rotation": 70.18,
|
||||
"x": 34.13,
|
||||
"y": 3.02,
|
||||
"color": "2381e3ff"
|
||||
},
|
||||
{
|
||||
"name": "petal-2",
|
||||
"parent": "stem3",
|
||||
"length": 48.62,
|
||||
"rotation": -80.34,
|
||||
"x": 32.09,
|
||||
"y": -4.46,
|
||||
"color": "2381e3ff"
|
||||
},
|
||||
{ "name": "cloud-face", "parent": "cloud", "y": 14.93, "color": "9e82ffff", "icon": "arrowsB" }
|
||||
],
|
||||
"slots": [
|
||||
{ "name": "rain/rain-green", "bone": "rain-green", "attachment": "rain-green" },
|
||||
{ "name": "rain/rain-blue", "bone": "rain-blue", "attachment": "rain-blue" },
|
||||
{ "name": "rain/rain-color", "bone": "rain-color", "attachment": "rain-color" },
|
||||
{ "name": "rain/rain-white", "bone": "rain-white", "attachment": "rain-white" },
|
||||
{ "name": "rain/rain-white-reflex", "bone": "rain-white", "attachment": "rain-white-reflex" },
|
||||
{ "name": "flower/petal-1", "bone": "petal-1", "attachment": "petal-1" },
|
||||
{ "name": "flower/petal-2", "bone": "petal-2", "attachment": "petal-2" },
|
||||
{ "name": "flower/petal-3", "bone": "petal-3", "attachment": "petal-3" },
|
||||
{ "name": "flower/stem", "bone": "stem", "attachment": "stem" },
|
||||
{ "name": "flower/leaf-big", "bone": "leaf-big", "attachment": "leaf-big" },
|
||||
{ "name": "flower/leaf-small", "bone": "leaf-small", "attachment": "leaf-small" },
|
||||
{ "name": "flower/stem-end", "bone": "stem3", "attachment": "stem-end" },
|
||||
{ "name": "pot/pot-base", "bone": "pot", "attachment": "pot-base" },
|
||||
{ "name": "pot/pot-mouth", "bone": "pot-face", "attachment": "pot-mouth-smile-big" },
|
||||
{ "name": "pot/pot-eyes", "bone": "pot-face", "attachment": "pot-eyes-open" },
|
||||
{ "name": "cloud/cloud-base/cloud-base-1", "bone": "cloud-base-1", "attachment": "cloud-base-1" },
|
||||
{ "name": "cloud/cloud-base/cloud-base-2", "bone": "cloud-base-2", "attachment": "cloud-base-2" },
|
||||
{ "name": "cloud/cloud-base/cloud-base-3", "bone": "cloud-base-3", "attachment": "cloud-base-3" },
|
||||
{ "name": "cloud/cloud-base/cloud-base-4", "bone": "cloud-base-4", "attachment": "cloud-base-4" },
|
||||
{ "name": "cloud/cloud-base/cloud-base-5", "bone": "cloud-base-5", "attachment": "cloud-base-5" },
|
||||
{ "name": "cloud/cloud-base/cloud-base-6", "bone": "cloud-base-6", "attachment": "cloud-base-6" },
|
||||
{ "name": "cloud/cloud-base/cloud-base-7", "bone": "cloud-base-7", "attachment": "cloud-base-7" },
|
||||
{ "name": "cloud/cloud-base/cloud-base-8", "bone": "cloud-base-8", "attachment": "cloud-base-8" },
|
||||
{ "name": "cloud/cloud-base/cloud-base-9", "bone": "cloud-base-9", "attachment": "cloud-base-9" },
|
||||
{ "name": "cloud/cloud-base/cloud-base-10", "bone": "cloud-base-10", "attachment": "cloud-base-10" },
|
||||
{ "name": "cloud/cloud-cheeks", "bone": "cloud-face", "attachment": "cloud-cheeks" },
|
||||
{ "name": "cloud/cloud-eyes", "bone": "cloud-face", "attachment": "cloud-eyes-open" },
|
||||
{ "name": "cloud/cloud-eyes-reflex", "bone": "cloud-face", "attachment": "cloud-eyes-reflex" },
|
||||
{ "name": "cloud/cloud-mouth", "bone": "cloud-face", "attachment": "cloud-mouth-closed" }
|
||||
],
|
||||
"constraints": [
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "cloud",
|
||||
"bone": "cloud",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"strength": 172.8,
|
||||
"damping": 0.8571,
|
||||
"mass": 3
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "rain/rain-white",
|
||||
"bone": "rain-white",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"inertia": 1,
|
||||
"strength": 0,
|
||||
"damping": 1,
|
||||
"gravity": 70
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "rain/rain-green",
|
||||
"bone": "rain-green",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"inertia": 1,
|
||||
"strength": 0,
|
||||
"damping": 1,
|
||||
"gravity": 70
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "rain/rain-color",
|
||||
"bone": "rain-color",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"inertia": 1,
|
||||
"strength": 0,
|
||||
"damping": 1,
|
||||
"gravity": 70
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "rain/rain-blue",
|
||||
"bone": "rain-blue",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"inertia": 1,
|
||||
"strength": 0,
|
||||
"damping": 1,
|
||||
"gravity": 70
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "cloud-base/cloud-base-1",
|
||||
"bone": "cloud-base-1",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"limit": 500,
|
||||
"inertia": 0.3741,
|
||||
"strength": 134.7,
|
||||
"damping": 0.8163,
|
||||
"mass": 2.8
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "cloud-base/cloud-base-2",
|
||||
"bone": "cloud-base-2",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"limit": 300,
|
||||
"inertia": 0.3741,
|
||||
"strength": 134.7,
|
||||
"damping": 0.8163,
|
||||
"mass": 2.8
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "cloud-base/cloud-base-3",
|
||||
"bone": "cloud-base-3",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"limit": 300,
|
||||
"inertia": 0.3741,
|
||||
"strength": 134.7,
|
||||
"damping": 0.8163,
|
||||
"mass": 2.8
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "cloud-base/cloud-base-4",
|
||||
"bone": "cloud-base-4",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"limit": 500,
|
||||
"inertia": 0.3741,
|
||||
"strength": 134.7,
|
||||
"damping": 0.8163,
|
||||
"mass": 2.8
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "cloud-base/cloud-base-5",
|
||||
"bone": "cloud-base-5",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"limit": 300,
|
||||
"inertia": 0.3741,
|
||||
"strength": 134.7,
|
||||
"damping": 0.8163,
|
||||
"mass": 2.8
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "cloud-base/cloud-base-6",
|
||||
"bone": "cloud-base-6",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"limit": 300,
|
||||
"inertia": 0.3741,
|
||||
"strength": 134.7,
|
||||
"damping": 0.8163,
|
||||
"mass": 2.8
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "cloud-base/cloud-base-7",
|
||||
"bone": "cloud-base-7",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"limit": 300,
|
||||
"inertia": 0.3741,
|
||||
"strength": 134.7,
|
||||
"damping": 0.8163,
|
||||
"mass": 2.8
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "cloud-base/cloud-base-8",
|
||||
"bone": "cloud-base-8",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"limit": 300,
|
||||
"inertia": 0.3741,
|
||||
"strength": 134.7,
|
||||
"damping": 0.8163,
|
||||
"mass": 2.8
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "cloud-base/cloud-base-9",
|
||||
"bone": "cloud-base-9",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"limit": 300,
|
||||
"inertia": 0.3741,
|
||||
"strength": 134.7,
|
||||
"damping": 0.8163,
|
||||
"mass": 2.8
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "cloud-base/cloud-base-10",
|
||||
"bone": "cloud-base-10",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"limit": 300,
|
||||
"inertia": 0.3741,
|
||||
"strength": 134.7,
|
||||
"damping": 0.8163,
|
||||
"mass": 2.8
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "plant/leaf-big",
|
||||
"bone": "leaf-big",
|
||||
"rotate": 0.7532,
|
||||
"shearX": 0.2468,
|
||||
"limit": 500,
|
||||
"strength": 160.5,
|
||||
"damping": 0.8367,
|
||||
"mass": 4
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "plant/leaf-small",
|
||||
"bone": "leaf-small",
|
||||
"rotate": 0.6026,
|
||||
"limit": 500,
|
||||
"strength": 160.5,
|
||||
"damping": 0.8367,
|
||||
"mass": 4
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "plant/stem",
|
||||
"bone": "stem",
|
||||
"rotate": 0.8205,
|
||||
"limit": 700,
|
||||
"strength": 152.4,
|
||||
"damping": 0.9388,
|
||||
"mass": 2.6
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "plant/stem2",
|
||||
"bone": "stem2",
|
||||
"rotate": 0.8205,
|
||||
"limit": 700,
|
||||
"strength": 152.4,
|
||||
"damping": 0.9388,
|
||||
"mass": 2.6
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "plant/stem3",
|
||||
"bone": "stem3",
|
||||
"rotate": 0.8205,
|
||||
"limit": 700,
|
||||
"strength": 152.4,
|
||||
"damping": 0.9388,
|
||||
"mass": 2.6
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "plant/petal-1",
|
||||
"bone": "petal-1",
|
||||
"rotate": 1,
|
||||
"limit": 500,
|
||||
"strength": 164.6,
|
||||
"damping": 0.6531,
|
||||
"mass": 2.6
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "plant/petal-3",
|
||||
"bone": "petal-3",
|
||||
"rotate": 1,
|
||||
"limit": 500,
|
||||
"strength": 164.6,
|
||||
"damping": 0.7823,
|
||||
"mass": 3.83
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "plant/petal-2",
|
||||
"bone": "petal-2",
|
||||
"rotate": 1,
|
||||
"limit": 500,
|
||||
"strength": 164.6,
|
||||
"damping": 0.6531,
|
||||
"mass": 2.6
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "plant/leaf-big-tip",
|
||||
"bone": "leaf-big-tip",
|
||||
"rotate": 1,
|
||||
"limit": 500,
|
||||
"strength": 160.5,
|
||||
"damping": 0.8367,
|
||||
"mass": 4
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "pot-face",
|
||||
"bone": "pot-face",
|
||||
"x": 0.1667,
|
||||
"y": 0.1026,
|
||||
"limit": 500,
|
||||
"strength": 137.3,
|
||||
"damping": 0.6078
|
||||
},
|
||||
{
|
||||
"type": "physics",
|
||||
"name": "cloud-face",
|
||||
"bone": "cloud-face",
|
||||
"x": 0.1923,
|
||||
"y": 0.141,
|
||||
"limit": 500,
|
||||
"damping": 0.15
|
||||
}
|
||||
],
|
||||
"skins": [
|
||||
{
|
||||
"name": "default",
|
||||
"attachments": {
|
||||
"cloud/cloud-base/cloud-base-1": {
|
||||
"cloud-base-1": { "width": 465, "height": 420 }
|
||||
},
|
||||
"cloud/cloud-base/cloud-base-2": {
|
||||
"cloud-base-2": { "width": 420, "height": 415 }
|
||||
},
|
||||
"cloud/cloud-base/cloud-base-3": {
|
||||
"cloud-base-3": { "width": 349, "height": 327 }
|
||||
},
|
||||
"cloud/cloud-base/cloud-base-4": {
|
||||
"cloud-base-4": { "width": 352, "height": 326 }
|
||||
},
|
||||
"cloud/cloud-base/cloud-base-5": {
|
||||
"cloud-base-5": { "width": 289, "height": 250 }
|
||||
},
|
||||
"cloud/cloud-base/cloud-base-6": {
|
||||
"cloud-base-6": { "width": 322, "height": 272 }
|
||||
},
|
||||
"cloud/cloud-base/cloud-base-7": {
|
||||
"cloud-base-7": { "width": 300, "height": 297 }
|
||||
},
|
||||
"cloud/cloud-base/cloud-base-8": {
|
||||
"cloud-base-8": { "width": 307, "height": 256 }
|
||||
},
|
||||
"cloud/cloud-base/cloud-base-9": {
|
||||
"cloud-base-9": { "width": 214, "height": 216 }
|
||||
},
|
||||
"cloud/cloud-base/cloud-base-10": {
|
||||
"cloud-base-10": { "width": 193, "height": 201 }
|
||||
},
|
||||
"cloud/cloud-cheeks": {
|
||||
"cloud-cheeks": { "x": -19, "y": -53.93, "width": 435, "height": 158 }
|
||||
},
|
||||
"cloud/cloud-eyes": {
|
||||
"cloud-eyes-closed": { "x": -10, "y": -5.43, "width": 263, "height": 43 },
|
||||
"cloud-eyes-open": { "x": -8, "y": -4.43, "width": 265, "height": 51 }
|
||||
},
|
||||
"cloud/cloud-eyes-reflex": {
|
||||
"cloud-eyes-reflex": { "x": -10, "y": 2.07, "width": 239, "height": 34 }
|
||||
},
|
||||
"cloud/cloud-mouth": {
|
||||
"cloud-mouth-closed": { "y": -14.93, "width": 97, "height": 32 },
|
||||
"cloud-mouth-open": { "x": -0.5, "y": -27.93, "width": 118, "height": 70 }
|
||||
},
|
||||
"flower/leaf-big": {
|
||||
"leaf-big": {
|
||||
"type": "mesh",
|
||||
"uvs": [ 1, 1, 0, 1, 0, 0.75, 0, 0.5, 0, 0.25, 0, 0, 1, 0, 1, 0.25, 1, 0.5, 1, 0.75 ],
|
||||
"triangles": [ 4, 5, 6, 7, 4, 6, 3, 4, 7, 8, 3, 7, 2, 3, 8, 9, 2, 8, 1, 2, 9, 0, 1, 9 ],
|
||||
"vertices": [ 1, 19, -5.05, -21.72, 1, 1, 19, -5.05, 18.28, 1, 2, 19, 19.45, 18.28, 0.75483, 20, -27.28, 18.28, 0.24517, 2, 19, 43.95, 18.28, 0.50538, 20, -2.78, 18.28, 0.49462, 2, 19, 68.45, 18.28, 0.25278, 20, 21.72, 18.28, 0.74722, 1, 20, 46.22, 18.28, 1, 1, 20, 46.22, -21.72, 1, 2, 19, 68.45, -21.72, 0.24458, 20, 21.72, -21.72, 0.75542, 2, 19, 43.95, -21.72, 0.4937, 20, -2.78, -21.72, 0.5063, 2, 19, 19.45, -21.72, 0.74651, 20, -27.28, -21.72, 0.25349 ],
|
||||
"hull": 10,
|
||||
"edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 0 ],
|
||||
"width": 40,
|
||||
"height": 98
|
||||
}
|
||||
},
|
||||
"flower/leaf-small": {
|
||||
"leaf-small": { "x": 25.02, "y": 0.4, "rotation": -91.36, "width": 34, "height": 59 }
|
||||
},
|
||||
"flower/petal-1": {
|
||||
"petal-1": { "x": 18.88, "y": -4.54, "rotation": -160.18, "width": 52, "height": 36 }
|
||||
},
|
||||
"flower/petal-2": {
|
||||
"petal-2": { "x": 21.96, "y": 2.06, "rotation": -9.66, "width": 56, "height": 34 }
|
||||
},
|
||||
"flower/petal-3": {
|
||||
"petal-3": { "x": 16.97, "y": -5.71, "rotation": -91.03, "width": 58, "height": 42 }
|
||||
},
|
||||
"flower/stem": {
|
||||
"stem": {
|
||||
"type": "mesh",
|
||||
"uvs": [ 1, 1, 0, 1, 0, 0.90909, 0, 0.81818, 0, 0.72727, 0, 0.63636, 0, 0.54545, 0, 0.45455, 0, 0.36364, 0, 0.27273, 0, 0.18182, 0, 0.09091, 0, 0, 1, 0, 1, 0.09091, 1, 0.18182, 1, 0.27273, 1, 0.36364, 1, 0.45455, 1, 0.54545, 1, 0.63636, 1, 0.72727, 1, 0.81818, 1, 0.90909 ],
|
||||
"triangles": [ 11, 12, 13, 14, 11, 13, 10, 11, 14, 15, 10, 14, 9, 10, 15, 16, 9, 15, 8, 9, 16, 17, 8, 16, 7, 8, 17, 18, 7, 17, 6, 7, 18, 19, 6, 18, 5, 6, 19, 20, 5, 19, 4, 5, 20, 21, 4, 20, 3, 4, 21, 22, 3, 21, 2, 3, 22, 23, 2, 22, 1, 2, 23, 0, 1, 23 ],
|
||||
"vertices": [ 1, 22, -3.61, -6.76, 1, 1, 22, -3.61, 9.24, 1, 3, 22, 15.49, 9.24, 0.97258, 23, -89.27, 9.24, 0.02734, 24, -159.11, 9.24, 8.0E-5, 3, 22, 34.58, 9.24, 0.92758, 23, -70.18, 9.24, 0.07175, 24, -140.02, 9.24, 6.7E-4, 3, 22, 53.67, 9.24, 0.851, 23, -51.09, 9.24, 0.14565, 24, -120.93, 9.24, 0.00335, 3, 22, 72.76, 9.24, 0.73702, 23, -32, 9.24, 0.25075, 24, -101.84, 9.24, 0.01223, 3, 22, 91.85, 9.24, 0.59184, 23, -12.91, 9.24, 0.37282, 24, -82.74, 9.24, 0.03534, 3, 22, 110.94, 9.24, 0.43333, 23, 6.18, 9.24, 0.482, 24, -63.65, 9.24, 0.08467, 3, 22, 130.03, 9.24, 0.28467, 23, 25.27, 9.24, 0.54153, 24, -44.56, 9.24, 0.1738, 3, 22, 149.12, 9.24, 0.16502, 23, 44.37, 9.24, 0.52188, 24, -25.47, 9.24, 0.3131, 3, 22, 168.21, 9.24, 0.08234, 23, 63.46, 9.24, 0.4129, 24, -6.38, 9.24, 0.50477, 3, 22, 187.3, 9.24, 0.03198, 23, 82.55, 9.24, 0.228, 24, 12.71, 9.24, 0.74001, 1, 24, 31.8, 9.24, 1, 1, 24, 31.8, -6.76, 1, 3, 22, 187.3, -6.76, 0.02989, 23, 82.55, -6.76, 0.23389, 24, 12.71, -6.76, 0.73622, 3, 22, 168.21, -6.76, 0.07799, 23, 63.46, -6.76, 0.42357, 24, -6.38, -6.76, 0.49844, 3, 22, 149.12, -6.76, 0.1584, 23, 44.37, -6.76, 0.53549, 24, -25.47, -6.76, 0.30611, 3, 22, 130.03, -6.76, 0.27629, 23, 25.27, -6.76, 0.55594, 24, -44.56, -6.76, 0.16777, 3, 22, 110.94, -6.76, 0.42428, 23, 6.18, -6.76, 0.49529, 24, -63.65, -6.76, 0.08044, 3, 22, 91.85, -6.76, 0.58346, 23, -12.91, -6.76, 0.38366, 24, -82.74, -6.76, 0.03289, 3, 22, 72.76, -6.76, 0.73038, 23, -32, -6.76, 0.25856, 24, -101.84, -6.76, 0.01107, 3, 22, 53.67, -6.76, 0.84652, 23, -51.09, -6.76, 0.15057, 24, -120.93, -6.76, 0.00291, 3, 22, 34.58, -6.76, 0.92506, 23, -70.18, -6.76, 0.0744, 24, -140.02, -6.76, 5.4E-4, 3, 22, 15.49, -6.76, 0.97151, 23, -89.27, -6.76, 0.02843, 24, -159.11, -6.76, 6.0E-5 ],
|
||||
"hull": 24,
|
||||
"edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 0 ],
|
||||
"width": 16,
|
||||
"height": 210
|
||||
}
|
||||
},
|
||||
"flower/stem-end": {
|
||||
"stem-end": { "x": 25.8, "y": -0.26, "rotation": -90, "width": 25, "height": 26 }
|
||||
},
|
||||
"pot/pot-base": {
|
||||
"pot-base": { "x": 5, "y": 42, "width": 152, "height": 118 }
|
||||
},
|
||||
"pot/pot-eyes": {
|
||||
"pot-eyes-closed": { "x": -0.94, "y": 2.34, "width": 92, "height": 17 },
|
||||
"pot-eyes-open": { "x": 0.06, "y": 3.84, "width": 80, "height": 22 }
|
||||
},
|
||||
"pot/pot-mouth": {
|
||||
"pot-mouth-open": { "x": -1.44, "y": -13.66, "width": 27, "height": 31 },
|
||||
"pot-mouth-pouty": { "x": 0.56, "y": -12.66, "width": 35, "height": 19 },
|
||||
"pot-mouth-smile": { "x": 0.56, "y": -12.16, "width": 27, "height": 20 },
|
||||
"pot-mouth-smile-big": { "x": 1.56, "y": -9.16, "width": 39, "height": 18 }
|
||||
},
|
||||
"rain/rain-blue": {
|
||||
"rain-blue": { "width": 23, "height": 36 }
|
||||
},
|
||||
"rain/rain-color": {
|
||||
"rain-color": { "width": 18, "height": 34 }
|
||||
},
|
||||
"rain/rain-green": {
|
||||
"rain-green": { "width": 23, "height": 36 }
|
||||
},
|
||||
"rain/rain-white": {
|
||||
"rain-white": { "width": 23, "height": 44 }
|
||||
},
|
||||
"rain/rain-white-reflex": {
|
||||
"rain-white-reflex": { "x": -0.5, "y": 3.5, "width": 10, "height": 19 }
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"animations": {
|
||||
"playing-in-the-rain": {
|
||||
"slots": {
|
||||
"cloud/cloud-eyes": {
|
||||
"attachment": [
|
||||
{ "time": 0.2, "name": "cloud-eyes-closed" },
|
||||
{ "time": 0.9, "name": "cloud-eyes-open" },
|
||||
{ "time": 1.7667, "name": "cloud-eyes-closed" },
|
||||
{ "time": 1.9333, "name": "cloud-eyes-open" },
|
||||
{ "time": 2.4333, "name": "cloud-eyes-closed" },
|
||||
{ "time": 2.6, "name": "cloud-eyes-open" },
|
||||
{ "time": 3.9333, "name": "cloud-eyes-closed" },
|
||||
{ "time": 4.1, "name": "cloud-eyes-open" }
|
||||
]
|
||||
},
|
||||
"cloud/cloud-mouth": {
|
||||
"attachment": [
|
||||
{ "time": 0.2, "name": "cloud-mouth-open" },
|
||||
{ "time": 0.9, "name": "cloud-mouth-closed" }
|
||||
]
|
||||
},
|
||||
"pot/pot-eyes": {
|
||||
"attachment": [
|
||||
{ "time": 0.1333, "name": "pot-eyes-closed" },
|
||||
{ "time": 0.3, "name": "pot-eyes-open" },
|
||||
{ "time": 1.0667, "name": "pot-eyes-closed" },
|
||||
{ "time": 1.5, "name": "pot-eyes-open" },
|
||||
{ "time": 3.0333, "name": "pot-eyes-closed" },
|
||||
{ "time": 3.2333, "name": "pot-eyes-open" },
|
||||
{ "time": 3.4667, "name": "pot-eyes-closed" },
|
||||
{ "time": 3.6667, "name": "pot-eyes-open" }
|
||||
]
|
||||
},
|
||||
"pot/pot-mouth": {
|
||||
"attachment": [
|
||||
{ "time": 0.1333, "name": "pot-mouth-open" },
|
||||
{ "time": 0.3, "name": "pot-mouth-smile-big" },
|
||||
{ "time": 1.0667, "name": "pot-mouth-pouty" },
|
||||
{ "time": 2.4, "name": "pot-mouth-smile" },
|
||||
{ "time": 3.0333, "name": "pot-mouth-smile-big" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"bones": {
|
||||
"pot": {
|
||||
"rotate": [
|
||||
{ "time": 1.1 },
|
||||
{ "time": 1.2, "value": -12.76 },
|
||||
{ "time": 1.5333, "curve": "stepped" },
|
||||
{ "time": 3.7667 },
|
||||
{ "time": 3.9, "value": 8.28 },
|
||||
{ "time": 4.2333, "value": -4.34 },
|
||||
{ "time": 4.4333 }
|
||||
],
|
||||
"scale": [
|
||||
{},
|
||||
{ "time": 0.2, "y": 0.752 },
|
||||
{ "time": 0.4, "x": 0.845, "y": 1.068 },
|
||||
{ "time": 0.6333 }
|
||||
]
|
||||
},
|
||||
"pot-control": {
|
||||
"translatex": [
|
||||
{
|
||||
"time": 1.0667,
|
||||
"curve": [ 1.222, -203.48, 1.378, -610.44 ]
|
||||
},
|
||||
{ "time": 1.5333, "value": -610.44, "curve": "stepped" },
|
||||
{
|
||||
"time": 2.2333,
|
||||
"value": -610.44,
|
||||
"curve": [ 2.389, -610.44, 2.544, -478.45 ]
|
||||
},
|
||||
{ "time": 2.7, "value": -478.45, "curve": "stepped" },
|
||||
{
|
||||
"time": 3.8333,
|
||||
"value": -478.45,
|
||||
"curve": [ 3.971, -478.45, 4.095, -135.56 ]
|
||||
},
|
||||
{ "time": 4.2333 }
|
||||
],
|
||||
"translatey": [
|
||||
{
|
||||
"time": 1.0333,
|
||||
"curve": [ 1.089, 10.56, 1.144, 44.34 ]
|
||||
},
|
||||
{
|
||||
"time": 1.2,
|
||||
"value": 44.34,
|
||||
"curve": [ 1.256, 44.34, 1.311, 0 ]
|
||||
},
|
||||
{ "time": 1.3667, "curve": "stepped" },
|
||||
{
|
||||
"time": 2.2333,
|
||||
"curve": [ 2.408, 0, 2.392, 44.34 ]
|
||||
},
|
||||
{
|
||||
"time": 2.4333,
|
||||
"value": 44.34,
|
||||
"curve": [ 2.455, 44.34, 2.51, 0 ]
|
||||
},
|
||||
{ "time": 2.6, "curve": "stepped" },
|
||||
{
|
||||
"time": 3.8,
|
||||
"curve": [ 3.841, 14.78, 3.893, 44.34 ]
|
||||
},
|
||||
{
|
||||
"time": 3.9333,
|
||||
"value": 44.34,
|
||||
"curve": [ 4.023, 44.34, 4.111, 14.78 ]
|
||||
},
|
||||
{ "time": 4.2 }
|
||||
]
|
||||
},
|
||||
"cloud-base-1": {
|
||||
"rotate": [
|
||||
{
|
||||
"curve": [ 0.144, -9.36, 0.289, -17.29 ]
|
||||
},
|
||||
{
|
||||
"time": 0.4333,
|
||||
"value": -17.29,
|
||||
"curve": [ 0.5, -17.29, 0.567, -4.32 ]
|
||||
},
|
||||
{ "time": 0.6333 }
|
||||
],
|
||||
"scale": [
|
||||
{
|
||||
"curve": [ 0.089, 1, 0.178, 1.064, 0.089, 1, 0.178, 1.064 ]
|
||||
},
|
||||
{
|
||||
"time": 0.2667,
|
||||
"x": 1.064,
|
||||
"y": 1.064,
|
||||
"curve": [ 0.411, 1.064, 0.556, 1.021, 0.411, 1.064, 0.556, 1.021 ]
|
||||
},
|
||||
{ "time": 0.7 }
|
||||
]
|
||||
},
|
||||
"cloud-base-4": {
|
||||
"rotate": [
|
||||
{
|
||||
"curve": [ 0.1, 5.55, 0.2, 14.81 ]
|
||||
},
|
||||
{
|
||||
"time": 0.3,
|
||||
"value": 14.81,
|
||||
"curve": [ 0.467, 14.81, 0.633, 9.25 ]
|
||||
},
|
||||
{ "time": 0.8 }
|
||||
],
|
||||
"scale": [
|
||||
{
|
||||
"curve": [ 0.089, 1, 0.178, 1.064, 0.089, 1, 0.178, 1.064 ]
|
||||
},
|
||||
{
|
||||
"time": 0.2667,
|
||||
"x": 1.064,
|
||||
"y": 1.064,
|
||||
"curve": [ 0.411, 1.064, 0.556, 1.021, 0.411, 1.064, 0.556, 1.021 ]
|
||||
},
|
||||
{ "time": 0.7 }
|
||||
]
|
||||
},
|
||||
"cloud": {
|
||||
"translate": [
|
||||
{ "time": 0.2333 },
|
||||
{ "time": 0.3333, "y": 30.43 },
|
||||
{ "time": 0.4667 },
|
||||
{ "time": 0.5667, "y": 30.43 },
|
||||
{ "time": 0.6667 },
|
||||
{ "time": 0.7667, "y": 30.43 },
|
||||
{ "time": 0.9333 }
|
||||
]
|
||||
}
|
||||
},
|
||||
"physics": {
|
||||
"rain/rain-blue": {
|
||||
"reset": [
|
||||
{ "time": 0.4667 },
|
||||
{ "time": 0.9333 },
|
||||
{ "time": 1.4 },
|
||||
{ "time": 1.8667 },
|
||||
{ "time": 2.3333 },
|
||||
{ "time": 2.8 },
|
||||
{ "time": 3.2667 },
|
||||
{ "time": 3.7333 },
|
||||
{ "time": 4.2 },
|
||||
{ "time": 4.6667 }
|
||||
]
|
||||
},
|
||||
"rain/rain-color": {
|
||||
"reset": [
|
||||
{ "time": 0.3 },
|
||||
{ "time": 0.7667 },
|
||||
{ "time": 1.2333 },
|
||||
{ "time": 1.7 },
|
||||
{ "time": 2.1667 },
|
||||
{ "time": 2.6333 },
|
||||
{ "time": 3.1 },
|
||||
{ "time": 3.5667 },
|
||||
{ "time": 4.0333 },
|
||||
{ "time": 4.5 }
|
||||
]
|
||||
},
|
||||
"rain/rain-green": {
|
||||
"reset": [
|
||||
{ "time": 0.1333 },
|
||||
{ "time": 0.6 },
|
||||
{ "time": 1.0667 },
|
||||
{ "time": 1.5333 },
|
||||
{ "time": 2 },
|
||||
{ "time": 2.4667 },
|
||||
{ "time": 2.9333 },
|
||||
{ "time": 3.4 },
|
||||
{ "time": 3.8667 },
|
||||
{ "time": 4.3333 }
|
||||
]
|
||||
},
|
||||
"rain/rain-white": {
|
||||
"reset": [
|
||||
{},
|
||||
{ "time": 0.4667 },
|
||||
{ "time": 0.9333 },
|
||||
{ "time": 1.4 },
|
||||
{ "time": 1.8667 },
|
||||
{ "time": 2.3333 },
|
||||
{ "time": 2.8 },
|
||||
{ "time": 3.2667 },
|
||||
{ "time": 3.7333 },
|
||||
{ "time": 4.2 }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"pot-moving-followed-by-rain": {
|
||||
"bones": {
|
||||
"pot-control": {
|
||||
"translate": [
|
||||
{},
|
||||
{ "time": 0.5667, "x": -389.34, "curve": "stepped" },
|
||||
{ "time": 1.1667, "x": -389.34 },
|
||||
{ "time": 2.2, "x": 463.88, "curve": "stepped" },
|
||||
{ "time": 2.4667, "x": 463.88 },
|
||||
{ "time": 3 }
|
||||
]
|
||||
}
|
||||
},
|
||||
"physics": {
|
||||
"rain/rain-blue": {
|
||||
"reset": [
|
||||
{ "time": 0.4667 },
|
||||
{ "time": 0.9333 },
|
||||
{ "time": 1.4 },
|
||||
{ "time": 1.8667 },
|
||||
{ "time": 2.3333 },
|
||||
{ "time": 2.8 },
|
||||
{ "time": 3.2667 }
|
||||
]
|
||||
},
|
||||
"rain/rain-color": {
|
||||
"reset": [
|
||||
{ "time": 0.3 },
|
||||
{ "time": 0.7667 },
|
||||
{ "time": 1.2333 },
|
||||
{ "time": 1.7 },
|
||||
{ "time": 2.1667 },
|
||||
{ "time": 2.6333 },
|
||||
{ "time": 3.1 }
|
||||
]
|
||||
},
|
||||
"rain/rain-green": {
|
||||
"reset": [
|
||||
{ "time": 0.1333 },
|
||||
{ "time": 0.6 },
|
||||
{ "time": 1.0667 },
|
||||
{ "time": 1.5333 },
|
||||
{ "time": 2 },
|
||||
{ "time": 2.4667 },
|
||||
{ "time": 2.9333 }
|
||||
]
|
||||
},
|
||||
"rain/rain-white": {
|
||||
"reset": [
|
||||
{},
|
||||
{ "time": 0.4667 },
|
||||
{ "time": 0.9333 },
|
||||
{ "time": 1.4 },
|
||||
{ "time": 1.8667 },
|
||||
{ "time": 2.3333 },
|
||||
{ "time": 2.8 }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"rain": {
|
||||
"physics": {
|
||||
"rain/rain-blue": {
|
||||
"reset": [
|
||||
{ "time": 0.4667 }
|
||||
]
|
||||
},
|
||||
"rain/rain-color": {
|
||||
"reset": [
|
||||
{ "time": 0.3 }
|
||||
]
|
||||
},
|
||||
"rain/rain-green": {
|
||||
"reset": [
|
||||
{ "time": 0.1333 }
|
||||
]
|
||||
},
|
||||
"rain/rain-white": {
|
||||
"reset": [
|
||||
{}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 327 KiB |
@ -1,20 +0,0 @@
|
||||
coin-pma.png
|
||||
size: 1024, 1024
|
||||
filter: Linear, Linear
|
||||
pma: true
|
||||
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
|
||||
|
Before Width: | Height: | Size: 289 KiB |
@ -1,259 +0,0 @@
|
||||
{
|
||||
"skeleton": {
|
||||
"hash": "aqQIMNiF9ZY",
|
||||
"spine": "4.3.37-beta",
|
||||
"x": -152.5,
|
||||
"y": -151,
|
||||
"width": 305,
|
||||
"height": 302,
|
||||
"images": "./images/",
|
||||
"audio": ""
|
||||
},
|
||||
"bones": [
|
||||
{ "name": "root" },
|
||||
{ "name": "coin-front", "parent": "root" },
|
||||
{ "name": "clipping", "parent": "coin-front" },
|
||||
{ "name": "coin-sides", "parent": "root" },
|
||||
{ "name": "coin-side-round", "parent": "coin-sides" },
|
||||
{ "name": "coin-side-straight", "parent": "coin-sides" },
|
||||
{ "name": "shine", "parent": "root", "x": 243.14 }
|
||||
],
|
||||
"slots": [
|
||||
{ "name": "coin-side", "bone": "coin-side-straight", "color": "ffdb2fff", "attachment": "coin-side-straight" },
|
||||
{ "name": "coin-side-round", "bone": "coin-side-round", "color": "ffdb2fff", "attachment": "coin-side-round" },
|
||||
{ "name": "coin-front-texture", "bone": "coin-front", "color": "868686ff", "attachment": "coin-front-logo" },
|
||||
{ "name": "coin-front-shine", "bone": "coin-front", "color": "888888ff", "dark": "000000", "attachment": "coin-front-shine-logo", "blend": "additive" },
|
||||
{ "name": "clipping", "bone": "clipping", "attachment": "clipping" },
|
||||
{ "name": "shine", "bone": "shine", "color": "ffffff60", "attachment": "shine", "blend": "additive" }
|
||||
],
|
||||
"skins": [
|
||||
{
|
||||
"name": "default",
|
||||
"attachments": {
|
||||
"clipping": {
|
||||
"clipping": {
|
||||
"type": "clipping",
|
||||
"end": "clipping",
|
||||
"vertexCount": 39,
|
||||
"vertices": [ 0.1, 140.26, -26.4, 138.14, -50.51, 131.25, -75.42, 119.06, -98.21, 101.04, -115.44, 82.22, -127.63, 62.08, -136.11, 39.03, -140.08, 19.68, -141.41, -0.19, -140.08, -22.98, -134.78, -45.5, -125.24, -66.44, -113.32, -84.19, -98.21, -101.95, -80.46, -116.52, -61.38, -127.39, -38.92, -134.81, -18.22, -139.27, -0.14, -140.58, 24.23, -138.48, 45.45, -132.46, 67.98, -122.5, 86.58, -110.19, 102.56, -95.25, 115.4, -78.75, 125.36, -61.72, 134, -42.33, 138.46, -22.15, 139.24, -0.15, 138.46, 20.29, 133.48, 39.94, 127.19, 58.54, 117.5, 76.1, 104.4, 92.86, 88.42, 108.32, 69.03, 121.42, 50.43, 130.85, 26.32, 137.4 ],
|
||||
"color": "ce3a3aff"
|
||||
}
|
||||
},
|
||||
"coin-front-shine": {
|
||||
"coin-front-shine-logo": { "width": 282, "height": 282 },
|
||||
"coin-front-shine-spineboy": { "width": 282, "height": 282 }
|
||||
},
|
||||
"coin-front-texture": {
|
||||
"coin-front-logo": { "width": 305, "height": 302 },
|
||||
"coin-front-spineboy": { "width": 305, "height": 302 }
|
||||
},
|
||||
"coin-side": {
|
||||
"coin-side-straight": { "x": 0.5, "width": 17, "height": 282 }
|
||||
},
|
||||
"coin-side-round": {
|
||||
"coin-side-round": { "x": -69.43, "width": 144, "height": 282 }
|
||||
},
|
||||
"shine": {
|
||||
"shine": { "y": 0.5, "scaleX": 1.6004, "scaleY": 1.6004, "width": 72, "height": 245 }
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"animations": {
|
||||
"animation": {
|
||||
"slots": {
|
||||
"coin-front-shine": {
|
||||
"rgba2": [
|
||||
{ "light": "7d7d7dff", "dark": "000000" },
|
||||
{ "time": 0.2667, "light": "000000ff", "dark": "7e7e7e" },
|
||||
{ "time": 0.664, "light": "000000ff", "dark": "000000" },
|
||||
{ "time": 1.0333, "light": "7f7f7fff", "dark": "000000" },
|
||||
{ "time": 1.3333, "light": "404040ff", "dark": "000000" },
|
||||
{ "time": 1.6, "light": "000000ff", "dark": "7e7e7e" },
|
||||
{ "time": 2.0022, "light": "000000ff", "dark": "000000" },
|
||||
{ "time": 2.4, "light": "7f7f7fff", "dark": "000000" },
|
||||
{ "time": 2.6667, "light": "7d7d7dff", "dark": "000000" }
|
||||
],
|
||||
"attachment": [
|
||||
{ "time": 0.6667, "name": "coin-front-shine-spineboy" },
|
||||
{ "time": 2, "name": "coin-front-shine-logo" }
|
||||
]
|
||||
},
|
||||
"coin-front-texture": {
|
||||
"rgba": [
|
||||
{ "color": "858585ff" },
|
||||
{ "time": 0.4, "color": "ffffffff" },
|
||||
{
|
||||
"time": 0.6696,
|
||||
"color": "858585ff",
|
||||
"curve": [ 0.725, 0.59, 0.892, 1, 0.725, 0.59, 0.892, 1, 0.725, 0.59, 0.892, 1, 0.725, 1, 0.892, 1 ]
|
||||
},
|
||||
{ "time": 0.9667, "color": "ffffffff" },
|
||||
{ "time": 1.3318, "color": "858585ff", "curve": "stepped" },
|
||||
{ "time": 1.3333, "color": "858585ff" },
|
||||
{ "time": 1.7333, "color": "ffffffff" },
|
||||
{ "time": 1.9982, "color": "858585ff", "curve": "stepped" },
|
||||
{ "time": 2.0022, "color": "858585ff" },
|
||||
{ "time": 2.3, "color": "ffffffff" },
|
||||
{ "time": 2.6667, "color": "858585ff" }
|
||||
],
|
||||
"attachment": [
|
||||
{ "time": 0.6667, "name": "coin-front-spineboy" },
|
||||
{ "time": 2, "name": "coin-front-logo" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"bones": {
|
||||
"coin-front": {
|
||||
"translate": [
|
||||
{},
|
||||
{ "time": 0.664, "x": 8.3, "curve": "stepped" },
|
||||
{
|
||||
"time": 0.6696,
|
||||
"x": -8.3,
|
||||
"curve": [ 0.794, -7.08, 1.167, 0, 0.794, 0, 1.167, 0 ]
|
||||
},
|
||||
{ "time": 1.3333 },
|
||||
{ "time": 1.9982, "x": 8.3, "curve": "stepped" },
|
||||
{ "time": 2.0022, "x": -8.3 },
|
||||
{ "time": 2.6667 }
|
||||
],
|
||||
"scale": [
|
||||
{
|
||||
"curve": [ 0.164, 1, 0.484, 0.091, 0.164, 1, 0.484, 1 ]
|
||||
},
|
||||
{ "time": 0.664, "x": 0, "curve": "stepped" },
|
||||
{
|
||||
"time": 0.6696,
|
||||
"x": 0.003,
|
||||
"curve": [ 0.786, 0.153, 1.167, 1, 0.786, 1, 1.167, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 1.3333,
|
||||
"curve": [ 1.442, 0.992, 1.858, 0.098, 1.442, 1, 1.858, 1 ]
|
||||
},
|
||||
{ "time": 1.9982, "x": 0.003, "curve": "stepped" },
|
||||
{
|
||||
"time": 2.0022,
|
||||
"x": 0.003,
|
||||
"curve": [ 2.123, 0.151, 2.501, 1, 2.123, 1, 2.501, 1 ]
|
||||
},
|
||||
{ "time": 2.6667 }
|
||||
]
|
||||
},
|
||||
"coin-side-round": {
|
||||
"translate": [
|
||||
{},
|
||||
{ "time": 0.664, "x": -6.75, "curve": "stepped" },
|
||||
{
|
||||
"time": 0.6696,
|
||||
"x": 7.03,
|
||||
"curve": [ 0.794, 5.99, 1.167, 0, 0.794, 0, 1.167, 0 ]
|
||||
},
|
||||
{ "time": 1.3333 },
|
||||
{ "time": 1.9982, "x": -6.75, "curve": "stepped" },
|
||||
{ "time": 2.0022, "x": 7.03 },
|
||||
{ "time": 2.6667 }
|
||||
],
|
||||
"scale": [
|
||||
{
|
||||
"curve": [ 0.085, 1, 0.207, 0.789, 0.085, 1, 0.207, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 0.3333,
|
||||
"x": 0.555,
|
||||
"curve": [ 0.449, 0.347, 0.567, 0.122, 0.449, 1, 0.567, 1 ]
|
||||
},
|
||||
{ "time": 0.664, "x": 0.014, "curve": "stepped" },
|
||||
{
|
||||
"time": 0.6696,
|
||||
"x": -0.028,
|
||||
"curve": [ 0.723, -0.126, 0.865, -0.367, 0.723, 1, 0.865, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 1,
|
||||
"x": -0.609,
|
||||
"curve": [ 1.053, -0.778, 1.29, -0.997, 1.053, 1, 1.29, 1 ]
|
||||
},
|
||||
{ "time": 1.3318, "x": -1, "curve": "stepped" },
|
||||
{
|
||||
"time": 1.3333,
|
||||
"curve": [ 1.384, 0.997, 1.439, 0.94, 1.384, 1, 1.439, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 1.5,
|
||||
"x": 0.852,
|
||||
"curve": [ 1.564, 0.748, 1.703, 0.509, 1.564, 1, 1.703, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 1.8,
|
||||
"x": 0.315,
|
||||
"curve": [ 1.873, 0.13, 1.987, 0.015, 1.873, 1, 1.987, 1 ]
|
||||
},
|
||||
{ "time": 1.9982, "x": 0.014, "curve": "stepped" },
|
||||
{
|
||||
"time": 2.0022,
|
||||
"x": -0.028,
|
||||
"curve": [ 2.039, -0.072, 2.123, -0.239, 2.039, 1, 2.123, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 2.2018,
|
||||
"x": -0.365,
|
||||
"curve": [ 2.269, -0.513, 2.337, -0.635, 2.269, 1, 2.337, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 2.4,
|
||||
"x": -0.731,
|
||||
"curve": [ 2.503, -0.871, 2.596, -0.961, 2.503, 1, 2.596, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 2.6592,
|
||||
"x": -1,
|
||||
"curve": [ 2.661, -1, 2.665, 1, 2.661, 1, 2.665, 1 ]
|
||||
},
|
||||
{ "time": 2.6667 }
|
||||
]
|
||||
},
|
||||
"shine": {
|
||||
"translate": [
|
||||
{
|
||||
"curve": [ 0.167, 0, 0.5, -473.39, 0.167, 0, 0.5, 0 ]
|
||||
},
|
||||
{
|
||||
"time": 0.6667,
|
||||
"x": -473.39,
|
||||
"curve": [ 0.833, -473.39, 1.167, -33.16, 0.833, 0, 1.167, 0 ]
|
||||
},
|
||||
{
|
||||
"time": 1.3333,
|
||||
"x": -33.16,
|
||||
"curve": [ 1.5, -33.16, 1.833, -473.39, 1.5, 0, 1.833, 0 ]
|
||||
},
|
||||
{
|
||||
"time": 2,
|
||||
"x": -473.39,
|
||||
"curve": [ 2.167, -473.39, 2.5, 0, 2.167, 0, 2.5, 0 ]
|
||||
},
|
||||
{ "time": 2.6667 }
|
||||
]
|
||||
}
|
||||
},
|
||||
"drawOrder": [
|
||||
{
|
||||
"time": 0.6667,
|
||||
"offsets": [
|
||||
{ "slot": "coin-side", "offset": 2 }
|
||||
]
|
||||
},
|
||||
{ "time": 0.6696 },
|
||||
{
|
||||
"time": 1.9982,
|
||||
"offsets": [
|
||||
{ "slot": "coin-side", "offset": 2 }
|
||||
]
|
||||
},
|
||||
{ "time": 2.0022 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
|
Before Width: | Height: | Size: 227 KiB |
|
Before Width: | Height: | Size: 216 KiB |