diff --git a/spine-ts/spine-core/src/PhysicsConstraint.ts b/spine-ts/spine-core/src/PhysicsConstraint.ts index 2d10b8ee8..a81225f36 100644 --- a/spine-ts/spine-core/src/PhysicsConstraint.ts +++ b/spine-ts/spine-core/src/PhysicsConstraint.ts @@ -176,7 +176,7 @@ export class PhysicsConstraint implements Updatable { if (rotateOrShearX || scaleX) { let ca = Math.atan2(bone.c, bone.a), c = 0, s = 0, mr = 0; if (rotateOrShearX) { - mr = mix * this.data.rotate; + mr = (this.data.rotate + this.data.shearX) * mix; let dx = this.cx - bone.worldX, dy = this.cy - bone.worldY, r = Math.atan2(dy + this.ty, dx + this.tx) - ca - this.rotateOffset * mr; this.rotateOffset += (r - Math.ceil(r * MathUtils.invPI2 - 0.5) * MathUtils.PI2) * i; r = this.rotateOffset * mr + ca; diff --git a/spine-ts/spine-webgl/example/example.css b/spine-ts/spine-webgl/example/example.css new file mode 100644 index 000000000..b7b293a07 --- /dev/null +++ b/spine-ts/spine-webgl/example/example.css @@ -0,0 +1,148 @@ +/*** + The new CSS reset - version 1.11.2 (last updated 15.11.2023) + GitHub page: https://github.com/elad2412/the-new-css-reset +***/ + +/* + Remove all the styles of the "User-Agent-Stylesheet", except for the 'display' property + - The "symbol *" part is to solve Firefox SVG sprite bug + - The "html" element is excluded, otherwise a bug in Chrome breaks the CSS hyphens property (https://github.com/elad2412/the-new-css-reset/issues/36) + */ + *:where(:not(html, iframe, canvas, img, svg, video, audio):not(svg *, symbol *)) { + all: unset; + display: revert; +} + +/* Preferred box-sizing value */ +*, +*::before, +*::after { + box-sizing: border-box; +} + +/* Fix mobile Safari increase font-size on landscape mode */ +html { + -moz-text-size-adjust: none; + -webkit-text-size-adjust: none; + text-size-adjust: none; +} + +/* Reapply the pointer cursor for anchor tags */ +a, button { + cursor: revert; +} + +/* Remove list styles (bullets/numbers) */ +ol, ul, menu, summary { + list-style: none; +} + +/* For images to not be able to exceed their container */ +img { + max-inline-size: 100%; + max-block-size: 100%; +} + +/* removes spacing between cells in tables */ +table { + border-collapse: collapse; +} + +/* Safari - solving issue when using user-select:none on the text input doesn't working */ +input, textarea { + -webkit-user-select: auto; +} + +/* revert the 'white-space' property for textarea elements on Safari */ +textarea { + white-space: revert; +} + +/* minimum style to allow to style meter element */ +meter { + -webkit-appearance: revert; + appearance: revert; +} + +/* preformatted text - use only for this feature */ +:where(pre) { + all: revert; + box-sizing: border-box; +} + +/* reset default text opacity of input placeholder */ +::placeholder { + color: unset; +} + +/* fix the feature of 'hidden' attribute. + display:revert; revert to element instead of attribute */ +:where([hidden]) { + display: none; +} + +/* revert for bug in Chromium browsers + - fix for the content editable attribute will work properly. + - webkit-user-select: auto; added for Safari in case of using user-select:none on wrapper element*/ +:where([contenteditable]:not([contenteditable="false"])) { + -moz-user-modify: read-write; + -webkit-user-modify: read-write; + overflow-wrap: break-word; + -webkit-line-break: after-white-space; + -webkit-user-select: auto; +} + +/* apply back the draggable feature - exist only in Chromium and Safari */ +:where([draggable="true"]) { + -webkit-user-drag: element; +} + +/* Revert Modal native behavior */ +:where(dialog:modal) { + all: revert; + box-sizing: border-box; +} + +/* Remove details summary webkit styles */ +::-webkit-details-marker { + display: none; +} + +html, body { + margin: 0; + padding: 0; + font-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif; +} + +* { + box-sizing: border-box; +} + +.btn { + display: inline-block; /* Aligns like a button */ + padding: 0.125em 0.5em; /* Button size */ + color: #333; /* Text color */ + background-color: #ccc; + border: none; /* No border */ + border-radius: 5px; /* Rounded corners */ + text-align: center; /* Center text */ + text-decoration: none; /* No underline */ + cursor: pointer; /* Cursor changes to hand symbol */ + transition: background-color 0.3s, box-shadow 0.3s; /* Smooth transition for hover effect */ + + /* Slight shadow for depth (optional) */ + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); +} + +/* Hover state */ +.btn:hover { + background-color: #fff; /* Darker shade when hovered */ + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); /* Larger shadow on hover */ +} + +.overlay { + display: flex; flex-direction: column; position: fixed; z-index: 10; top: 0; left: 0; gap: 0.5em; padding: 1em; + background-color: rgba(0, 0, 0, 0.7); + color: #ddd; + border-radius: 5px; +} \ No newline at end of file diff --git a/spine-ts/spine-webgl/example/physics2.html b/spine-ts/spine-webgl/example/physics2.html index 89b38b409..0c650f9d5 100644 --- a/spine-ts/spine-webgl/example/physics2.html +++ b/spine-ts/spine-webgl/example/physics2.html @@ -5,22 +5,33 @@ - + - +
+ Drag anywhere + +
+