Merge branch '4.1' into 4.2-beta

# Conflicts:
#	spine-ts/package-lock.json
#	spine-ts/package.json
#	spine-ts/spine-canvas/package.json
#	spine-ts/spine-core/package.json
#	spine-ts/spine-player/package.json
#	spine-ts/spine-threejs/package.json
#	spine-ts/spine-webgl/package.json
This commit is contained in:
Mario Zechner 2022-11-28 09:12:49 +01:00
commit d878e5356b
3 changed files with 53 additions and 25 deletions

View File

@ -195,7 +195,7 @@ export class SkeletonDebugRenderer implements Disposable {
for (let i = 0, n = bones.length; i < n; i++) {
let bone = bones[i];
if (ignoredBones && ignoredBones.indexOf(bone.data.name) > -1) continue;
shapes.circle(true, bone.worldX, bone.worldY, 3 * this.scale, SkeletonDebugRenderer.GREEN, 8);
shapes.circle(true, bone.worldX, bone.worldY, 3 * this.scale, this.boneOriginColor, 8);
}
}

View File

@ -203,40 +203,58 @@ namespace Spine.Unity.Editor {
var renderableAttachment = entry.Attachment as IHasTextureRegion;
if (renderableAttachment != null) {
var originalRegion = (AtlasRegion)renderableAttachment.Region;
Sequence sequence = null;
if (originalRegion == null && (sequence = renderableAttachment.Sequence) != null) {
if (sequence.Regions != null && sequence.Regions.Length > 0)
originalRegion = (AtlasRegion)sequence.Regions[0];
}
bool replacementExists = replacementMaterials.Exists(
replacement => replacement.pageName == originalRegion.page.name);
if (!replacementExists) {
bool createdNewMaterial;
var replacement = CreateOrLoadReplacementMaterial(originalRegion, materialTemplate, materialSuffix, out createdNewMaterial);
if (replacement != null) {
replacementMaterials.Add(replacement);
anyReplacementMaterialsChanged = true;
if (createdNewMaterial) {
Debug.Log(string.Format("Created blend mode Material '{0}' for SkeletonData asset '{1}'.",
replacement.material.name, skeletonDataAsset), replacement.material);
if (originalRegion != null) {
anyCreationFailed |= CreateForRegion(
ref replacementMaterials, ref anyReplacementMaterialsChanged,
originalRegion, materialTemplate, materialSuffix, skeletonDataAsset);
} else {
Sequence sequence = renderableAttachment.Sequence;
if (sequence != null && sequence.Regions != null) {
for (int i = 0, count = sequence.Regions.Length; i < count; ++i) {
originalRegion = (AtlasRegion)sequence.Regions[i];
anyCreationFailed |= CreateForRegion(
ref replacementMaterials, ref anyReplacementMaterialsChanged,
originalRegion, materialTemplate, materialSuffix, skeletonDataAsset);
}
} else {
Debug.LogError(string.Format("Failed creating blend mode Material for SkeletonData asset '{0}'," +
" atlas page '{1}', template '{2}'.",
skeletonDataAsset.name, originalRegion.page.name, materialTemplate.name),
skeletonDataAsset);
anyCreationFailed = true;
}
}
}
}
}
skeletonDataAsset.isUpgradingBlendModeMaterials = false;
EditorUtility.SetDirty(skeletonDataAsset);
return !anyCreationFailed;
}
protected static bool CreateForRegion (ref List<BlendModeMaterials.ReplacementMaterial> replacementMaterials,
ref bool anyReplacementMaterialsChanged,
AtlasRegion originalRegion, Material materialTemplate, string materialSuffix,
SkeletonDataAsset skeletonDataAsset) {
bool anyCreationFailed = false;
bool replacementExists = replacementMaterials.Exists(
replacement => replacement.pageName == originalRegion.page.name);
if (!replacementExists) {
bool createdNewMaterial;
var replacement = CreateOrLoadReplacementMaterial(originalRegion, materialTemplate, materialSuffix, out createdNewMaterial);
if (replacement != null) {
replacementMaterials.Add(replacement);
anyReplacementMaterialsChanged = true;
if (createdNewMaterial) {
Debug.Log(string.Format("Created blend mode Material '{0}' for SkeletonData asset '{1}'.",
replacement.material.name, skeletonDataAsset), replacement.material);
}
} else {
Debug.LogError(string.Format("Failed creating blend mode Material for SkeletonData asset '{0}'," +
" atlas page '{1}', template '{2}'.",
skeletonDataAsset.name, originalRegion.page.name, materialTemplate.name),
skeletonDataAsset);
anyCreationFailed = true;
}
}
return anyCreationFailed;
}
protected static string GetBlendModeMaterialPath (AtlasPage originalPage, string materialSuffix) {
var originalMaterial = originalPage.rendererObject as Material;
var originalPath = AssetDatabase.GetAssetPath(originalMaterial);

View File

@ -96,7 +96,12 @@ namespace Spine.Unity {
"\nWarning: 'Canvas Group Tint Black' is enabled at SkeletonGraphic but not 'CanvasGroup Compatible' at the Material!\n\nPlease\n"
+ "a) enable 'CanvasGroup Compatible' at the Material or\n"
+ "b) disable 'Canvas Group Tint Black' at the SkeletonGraphic component under 'Advanced'.\n"
+ "You may want to duplicate the 'SkeletonGraphicDefault' material and change settings at the duplicate to not affect all instances.";
+ "You may want to duplicate the 'SkeletonGraphicTintBlack' material and change settings at the duplicate to not affect all instances.";
public static readonly string kCanvasGroupCompatibleDisabledMessage =
"\nWarning: 'CanvasGroup Compatible' is enabled at the Material but 'Canvas Group Tint Black' is disabled at SkeletonGraphic!\n\nPlease\n"
+ "a) disable 'CanvasGroup Compatible' at the Material or\n"
+ "b) enable 'Canvas Group Tint Black' at the SkeletonGraphic component under 'Advanced'.\n"
+ "You may want to duplicate the 'SkeletonGraphicTintBlack' material and change settings at the duplicate to not affect all instances.";
public static bool IsMaterialSetupProblematic (SkeletonRenderer renderer, ref string errorMessage) {
var materials = renderer.GetComponent<Renderer>().sharedMaterials;
@ -152,6 +157,11 @@ namespace Spine.Unity {
isProblematic = true;
errorMessage += kCanvasGroupCompatibleMessage;
}
if (settings.tintBlack == true && settings.canvasGroupTintBlack == false
&& IsCanvasGroupCompatible(material)) {
isProblematic = true;
errorMessage += kCanvasGroupCompatibleDisabledMessage;
}
}
return isProblematic;
}