mirror of
https://github.com/liabru/matter-js.git
synced 2024-12-23 13:19:01 -05:00
dont draw offscreen constraints. Set visible flag on offscreen sprites
This commit is contained in:
parent
97f0f8d7d4
commit
e263ecb60b
1 changed files with 27 additions and 3 deletions
|
@ -170,7 +170,8 @@ var RenderPixi = {};
|
||||||
container = render.container,
|
container = render.container,
|
||||||
options = render.options,
|
options = render.options,
|
||||||
bodies = Composite.allBodies(world),
|
bodies = Composite.allBodies(world),
|
||||||
constraints = Composite.allConstraints(world),
|
allConstraints = Composite.allConstraints(world),
|
||||||
|
constraints = [],
|
||||||
i;
|
i;
|
||||||
|
|
||||||
if (options.wireframes) {
|
if (options.wireframes) {
|
||||||
|
@ -186,12 +187,35 @@ var RenderPixi = {};
|
||||||
boundsScaleY = boundsHeight / render.options.height;
|
boundsScaleY = boundsHeight / render.options.height;
|
||||||
|
|
||||||
if (options.hasBounds) {
|
if (options.hasBounds) {
|
||||||
// TODO: filter out bodies that are not in view
|
// Hide bodies that are not in view
|
||||||
// TODO: filter out constraints that are not in view
|
for (i = 0; i < bodies.length; i++) {
|
||||||
|
var body = bodies[i];
|
||||||
|
body.render.sprite.visible = Bounds.overlaps(body.bounds, render.bounds);
|
||||||
|
}
|
||||||
|
|
||||||
|
// filter out constraints that are not in view
|
||||||
|
for (i = 0; i < allConstraints.length; i++) {
|
||||||
|
var constraint = allConstraints[i],
|
||||||
|
bodyA = constraint.bodyA,
|
||||||
|
bodyB = constraint.bodyB,
|
||||||
|
pointAWorld = constraint.pointA,
|
||||||
|
pointBWorld = constraint.pointB;
|
||||||
|
|
||||||
|
if (bodyA) pointAWorld = Vector.add(bodyA.position, constraint.pointA);
|
||||||
|
if (bodyB) pointBWorld = Vector.add(bodyB.position, constraint.pointB);
|
||||||
|
|
||||||
|
if (!pointAWorld || !pointBWorld)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (Bounds.contains(render.bounds, pointAWorld) || Bounds.contains(render.bounds, pointBWorld))
|
||||||
|
constraints.push(constraint);
|
||||||
|
}
|
||||||
|
|
||||||
// transform the view
|
// transform the view
|
||||||
container.scale.set(1 / boundsScaleX, 1 / boundsScaleY);
|
container.scale.set(1 / boundsScaleX, 1 / boundsScaleY);
|
||||||
container.position.set(-render.bounds.min.x, -render.bounds.min.y);
|
container.position.set(-render.bounds.min.x, -render.bounds.min.y);
|
||||||
|
} else {
|
||||||
|
constraints = allConstraints;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < bodies.length; i++)
|
for (i = 0; i < bodies.length; i++)
|
||||||
|
|
Loading…
Reference in a new issue