Physics stage 2: colliders gain the shapes capsule and polygon, a polygon keeps its corners in the property points, turns, scales and mirrors with its object and is edited in the scene view (drag a corner, click an edge to insert one, double-click to delete, at least three stay, each step one undo step), a concave polygon is split into convex parts, a self-intersecting one is drawn red and collides with nothing, Rapier gets a capsule and one convex collider per part on the same body, and Move and the editor run use our own f64 geometry for the new shapes, where on a tie between two normals the one that blocks the move least wins, so a box no longer stops at the foot of a slope (#151); first version of a collision outline per texture frame, edited in the texture tab with the new Collision toggle, which a plain tile blocks with instead of its rectangle (#141, to be reworked)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
1b5e386b60
commit
32057a96fc
25 files changed
+2341
-122
No files matched your search
@@ -48,8 +48,10 @@ import {
|
||||
isTextureFile,
|
||||
normalizeBorders,
|
||||
normalizeFrameRect,
|
||||
setFrameCollision,
|
||||
setFrameSlice,
|
||||
} from '../model/texture';
|
||||
import { pointsOf } from '../model/polygon';
|
||||
import { hasParentCycle } from '../model/walk';
|
||||
import {
|
||||
DECLARED_PORT_KINDS,
|
||||
@@ -479,6 +481,9 @@ function normalizeTexture(
|
||||
),
|
||||
fill: f.fill === 'stretch' ? 'stretch' : DEFAULT_FILL,
|
||||
});
|
||||
// Corners that are no numbers fall away; what is left is kept only as an outline (#141).
|
||||
const collision = pointsOf(f.collision as PropertyValue);
|
||||
if (collision.length >= 3) setFrameCollision(frame, collision);
|
||||
frames.push(frame);
|
||||
}
|
||||
return { file, width, height, frames };
|
||||
|
||||
Reference in new issue
Block a user