Skip to content

Commit

Permalink
Adds teleporting methods for moving sprite kinematic physics bodies w…
Browse files Browse the repository at this point in the history
…ithout assigning velocities
  • Loading branch information
vlidholt committed Oct 16, 2015
1 parent 1cf3220 commit 5af0631
Showing 1 changed file with 27 additions and 0 deletions.
27 changes: 27 additions & 0 deletions skysprites/lib/src/node.dart
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,16 @@ class Node {
invalidateTransformMatrix();
}

void teleportRotation(double rotation) {
assert(rotation != null);
if (_physicsBody != null && parent is PhysicsNode) {
_physicsBody._body.setTransform(_physicsBody._body.position, radians(rotation));
_physicsBody._body.angularVelocity = 0.0;
_physicsBody._body.setType(box2d.BodyType.STATIC);
}
_setRotationFromPhysics(rotation);
}

/// The position of this node relative to its parent.
///
/// myNode.position = new Point(42.0, 42.0);
Expand All @@ -172,6 +182,23 @@ class Node {
invalidateTransformMatrix();
}

void teleportPosition(Point position) {
assert(position != null);
if (_physicsBody != null && parent is PhysicsNode) {
PhysicsNode physicsNode = parent;
_physicsBody._body.setTransform(
new Vector2(
position.x / physicsNode.b2WorldToNodeConversionFactor,
position.y / physicsNode.b2WorldToNodeConversionFactor
),
_physicsBody._body.getAngle()
);
_physicsBody._body.linearVelocity = new Vector2.zero();
_physicsBody._body.setType(box2d.BodyType.STATIC);
}
_setPositionFromPhysics(position);
}

/// The skew along the x-axis of this node in degrees.
///
/// myNode.skewX = 45.0;
Expand Down

0 comments on commit 5af0631

Please sign in to comment.