Merge branch '3.6' into 3.7-beta

This commit is contained in:
badlogic 2017-11-10 11:13:50 +01:00
commit 064a8b1377
14 changed files with 27 additions and 131 deletions

View File

@ -93,7 +93,8 @@ static float toColor (const char* value, int index) {
char *error;
int color;
if (strlen(value) / 2 < index) return -1;
if (index >= strlen(value) / 2)
return -1;
value += index * 2;
digits[0] = *value;

View File

@ -2,14 +2,14 @@ cmake_minimum_required(VERSION 2.8)
set(EXAMPLE_DIR "${CMAKE_CURRENT_LIST_DIR}/example")
if (NOT EXISTS ${EXAMPLE_DIR}/cocos2d)
message("Downloading cocos2dx, this may take some time!")
file(DOWNLOAD "http://www.cocos2d-x.org/filedown/start/364" "${EXAMPLE_DIR}/cocos2dx.zip")
file(DOWNLOAD "http://cdn.cocos2d-x.org/cocos2d-x-3.16.zip" "${EXAMPLE_DIR}/cocos2dx.zip")
execute_process(
COMMAND ${CMAKE_COMMAND} -E tar x ${EXAMPLE_DIR}/cocos2dx.zip
WORKING_DIRECTORY ${EXAMPLE_DIR}
)
execute_process(
COMMAND ${CMAKE_COMMAND} -E rename
"${EXAMPLE_DIR}/cocos2d-x-3.14.1" "${EXAMPLE_DIR}/cocos2d"
"${EXAMPLE_DIR}/cocos2d-x-3.16" "${EXAMPLE_DIR}/cocos2d"
)
execute_process(
COMMAND ${CMAKE_COMMAND} -E remove_directory "${EXAMPLE_DIR}/cocos2d/cocos/editor-support/spine"

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
define("ace/theme/monokai",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-monokai",t.cssText=".ace-monokai .ace_gutter {background: #2F3129;color: #8F908A}.ace-monokai .ace_print-margin {width: 1px;background: #555651}.ace-monokai {background-color: #272822;color: #F8F8F2}.ace-monokai .ace_cursor {color: #F8F8F0}.ace-monokai .ace_marker-layer .ace_selection {background: #49483E}.ace-monokai.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #272822;}.ace-monokai .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-monokai .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #49483E}.ace-monokai .ace_marker-layer .ace_active-line {background: #202020}.ace-monokai .ace_gutter-active-line {background-color: #272727}.ace-monokai .ace_marker-layer .ace_selected-word {border: 1px solid #49483E}.ace-monokai .ace_invisible {color: #52524d}.ace-monokai .ace_entity.ace_name.ace_tag,.ace-monokai .ace_keyword,.ace-monokai .ace_meta.ace_tag,.ace-monokai .ace_storage {color: #F92672}.ace-monokai .ace_punctuation,.ace-monokai .ace_punctuation.ace_tag {color: #fff}.ace-monokai .ace_constant.ace_character,.ace-monokai .ace_constant.ace_language,.ace-monokai .ace_constant.ace_numeric,.ace-monokai .ace_constant.ace_other {color: #AE81FF}.ace-monokai .ace_invalid {color: #F8F8F0;background-color: #F92672}.ace-monokai .ace_invalid.ace_deprecated {color: #F8F8F0;background-color: #AE81FF}.ace-monokai .ace_support.ace_constant,.ace-monokai .ace_support.ace_function {color: #66D9EF}.ace-monokai .ace_fold {background-color: #A6E22E;border-color: #F8F8F2}.ace-monokai .ace_storage.ace_type,.ace-monokai .ace_support.ace_class,.ace-monokai .ace_support.ace_type {font-style: italic;color: #66D9EF}.ace-monokai .ace_entity.ace_name.ace_function,.ace-monokai .ace_entity.ace_other,.ace-monokai .ace_entity.ace_other.ace_attribute-name,.ace-monokai .ace_variable {color: #A6E22E}.ace-monokai .ace_variable.ace_parameter {font-style: italic;color: #FD971F}.ace-monokai .ace_string {color: #E6DB74}.ace-monokai .ace_comment {color: #75715E}.ace-monokai .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ0FD0ZXBzd/wPAAjVAoxeSgNeAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,96 +0,0 @@
<html>
<script src="../../build/spine-webgl.js"></script>
<script src="https://code.jquery.com/jquery-3.1.0.min.js"></script>
<style>
/* Dead Simple Grid (c) 2015 Vladimir Agafonkin */
.row .row { margin: 0 -1.5em; }
.col { padding: 0 1.5em; }
.row:after {
content: "";
clear: both;
display: table;
}
@media only screen { .col {
float: left;
width: 100%;
box-sizing: border-box;
}}
@media only screen and (min-width: 30em) {
.content { width: 50%; height: 100%; padding: 0 }
.sidebar { width: 50%; height: 100%; padding: 0 }
}
body {
margin: 0;
}
iframe {
width: 100%;
height: 100%;
border:none;
}
.panel {
width: 100%;
height: 50%;
}
.buttons {
position: absolute;
top: 5; left: 5;
}
</style>
<body>
<div class="buttons">
<button id="playButton">Run</button>
<button id="stopButton">Stop</button>
</div>
<div class="row">
<div class="col content">
<iframe id="iframe"></iframe>
</div>
<div class="col sidebar">
<div id="codeJs" class="panel"></div>
<div id="codeHtml" class="panel"></div>
</div>
</div>
</body>
<script id="initialJs" type="text/plain">
var canvas = document.getElementById("canvas");
var config = { alpha: false };
var context = new spine.webgl.ManagedWebGLRenderingContext(canvas, config);
var gl = context.gl;
function render() {
gl.clearColor(0.2, 0.2, 0.2, 1);
gl.clear(gl.COLOR_BUFFER_BIT);
requestAnimationFrame(render);
}
requestAnimationFrame(render);
</script>
<script src="js/ace.js" type="text/javascript" charset="utf-8"></script>
<script>
$(document).ready(function() {
var editorJs = ace.edit("codeJs");
editorJs.setTheme("ace/theme/monokai");
editorJs.getSession().setMode("ace/mode/javascript");
editorJs.setValue(document.getElementById("initialJs").innerHTML);
var editorHtml = ace.edit("codeHtml");
editorHtml.setTheme("ace/theme/monokai");
editorHtml.getSession().setMode("ace/mode/html");
editorHtml.setValue('<script src="../../build/spine-webgl.js"><\/script>\n<canvas id="canvas" style="width: 100%; height: 98vh;"></canvas>');
$("#playButton").click(function() {
var iframe = document.getElementById("iframe");
var source = "<html><body>" + editorHtml.getValue() + "<script>" + editorJs.getValue() + "<\/script></body></html>";
iframe.srcdoc = source;
});
});
</script>
</html>

View File

@ -84,8 +84,8 @@
var ivanShader = loadIvanShader(context, shader);
var assetManager = new spine.webgl.AssetManager(context);
assetManager.loadTexture("assets/spineboy.png");
assetManager.loadTexture("assets/spineboy-pma.png");
assetManager.loadTexture("../example/assets/spineboy.png");
assetManager.loadTexture("../example/assets/spineboy-pma.png");
var camMatrix = new spine.webgl.Matrix4();
@ -95,8 +95,8 @@
function load () {
if (assetManager.isLoadingComplete()) {
texture = assetManager.get("assets/spineboy.png");
texturePma = assetManager.get("assets/spineboy-pma.png");
texture = assetManager.get("../example/assets/spineboy.png");
texturePma = assetManager.get("../example/assets/spineboy-pma.png");
requestAnimationFrame(render);
} else requestAnimationFrame(load);
}

View File

@ -45,7 +45,7 @@ function init() {
swirlEffect.centerY = 200;
swirlEffect.radius = 500;
assetManager = new spine.webgl.AssetManager(context, "assets/");
assetManager = new spine.webgl.AssetManager(context, "../example/assets/");
var textureLoader = function(img) { return new spine.webgl.GLTexture(gl, img); };
input = new spine.webgl.Input(canvas);

View File

@ -30,7 +30,7 @@ mesh.setIndices(indices);
var shader = spine.webgl.Shader.newTwoColoredTextured(context);
var assetManager = new spine.webgl.AssetManager(context);
assetManager.loadTexture("assets/spineboy.png");
assetManager.loadTexture("../example/assets/spineboy.png");
var camMatrix = new spine.webgl.Matrix4();
@ -40,7 +40,7 @@ requestAnimationFrame(load);
function load () {
if (assetManager.isLoadingComplete()) {
texture = assetManager.get("assets/spineboy.png");
texture = assetManager.get("../example/assets/spineboy.png");
requestAnimationFrame(render);
} else requestAnimationFrame(load);
}

View File

@ -150,10 +150,18 @@ float USpineSkeletonAnimationComponent::GetTimeScale() {
return 1;
}
// we need to disable the queue when setting or adding animations, see #1037
extern "C" {
void _spAnimationState_disableQueue(spAnimationState* state);
void _spAnimationState_enableQueue(spAnimationState* state);
}
UTrackEntry* USpineSkeletonAnimationComponent::SetAnimation (int trackIndex, FString animationName, bool loop) {
CheckState();
if (state && spSkeletonData_findAnimation(skeleton->data, TCHAR_TO_UTF8(*animationName))) {
_spAnimationState_disableQueue(state);
spTrackEntry* entry = spAnimationState_setAnimationByName(state, trackIndex, TCHAR_TO_UTF8(*animationName), loop ? 1 : 0);
_spAnimationState_enableQueue(state);
UTrackEntry* uEntry = NewObject<UTrackEntry>();
uEntry->SetTrackEntry(entry);
trackEntries.Add(uEntry);
@ -165,7 +173,9 @@ UTrackEntry* USpineSkeletonAnimationComponent::SetAnimation (int trackIndex, FSt
UTrackEntry* USpineSkeletonAnimationComponent::AddAnimation (int trackIndex, FString animationName, bool loop, float delay) {
CheckState();
if (state && spSkeletonData_findAnimation(skeleton->data, TCHAR_TO_UTF8(*animationName))) {
_spAnimationState_disableQueue(state);
spTrackEntry* entry = spAnimationState_addAnimationByName(state, trackIndex, TCHAR_TO_UTF8(*animationName), loop ? 1 : 0, delay);
_spAnimationState_enableQueue(state);
UTrackEntry* uEntry = NewObject<UTrackEntry>();
uEntry->SetTrackEntry(entry);
trackEntries.Add(uEntry);

View File

@ -399,7 +399,7 @@ namespace Spine.Unity.Modules.AttachmentTools {
/// <param name = "outputAttachments">The List(Attachment) to populate with the newly created Attachment objects.</param>
///
/// <param name="materialPropertySource">May be null. If no Material property source is provided, no special </param>
public static void GetRepackedAttachments (List<Attachment> sourceAttachments, List<Attachment> outputAttachments, Material materialPropertySource, out Material outputMaterial, out Texture2D outputTexture, int maxAtlasSize = 1024, int padding = 2, TextureFormat textureFormat = SpineTextureFormat, bool mipmaps = UseMipMaps, string newAssetName = "Repacked Attachments") {
public static void GetRepackedAttachments (List<Attachment> sourceAttachments, List<Attachment> outputAttachments, Material materialPropertySource, out Material outputMaterial, out Texture2D outputTexture, int maxAtlasSize = 1024, int padding = 2, TextureFormat textureFormat = SpineTextureFormat, bool mipmaps = UseMipMaps, string newAssetName = "Repacked Attachments", bool clearCache = false) {
if (sourceAttachments == null) throw new System.ArgumentNullException("sourceAttachments");
if (outputAttachments == null) throw new System.ArgumentNullException("outputAttachments");
@ -468,8 +468,8 @@ namespace Spine.Unity.Modules.AttachmentTools {
}
// Clean up.
foreach (var ttp in texturesToPack)
UnityEngine.Object.Destroy(ttp);
if (clearCache)
AtlasUtilities.ClearCache();
outputTexture = newTexture;
outputMaterial = newMaterial;
@ -485,7 +485,7 @@ namespace Spine.Unity.Modules.AttachmentTools {
/// <summary>
/// Creates and populates a duplicate skin with cloned attachments that are backed by a new packed texture atlas comprised of all the regions from the original skin.</summary>
/// <remarks>No Spine.Atlas object is created so there is no way to find AtlasRegions except through the Attachments using them.</remarks>
public static Skin GetRepackedSkin (this Skin o, string newName, Shader shader, out Material outputMaterial, out Texture2D outputTexture, int maxAtlasSize = 1024, int padding = 2, TextureFormat textureFormat = SpineTextureFormat, bool mipmaps = UseMipMaps, Material materialPropertySource = null) {
public static Skin GetRepackedSkin (this Skin o, string newName, Shader shader, out Material outputMaterial, out Texture2D outputTexture, int maxAtlasSize = 1024, int padding = 2, TextureFormat textureFormat = SpineTextureFormat, bool mipmaps = UseMipMaps, Material materialPropertySource = null, bool clearCache = false) {
var skinAttachments = o.Attachments;
var newSkin = new Skin(newName);
@ -553,8 +553,8 @@ namespace Spine.Unity.Modules.AttachmentTools {
}
// Clean up.
foreach (var ttp in texturesToPack)
UnityEngine.Object.Destroy(ttp);
if (clearCache)
AtlasUtilities.ClearCache();
outputTexture = newTexture;
outputMaterial = newMaterial;