#[repr(C)]pub struct SKPhysicsBody { /* private fields */ }SKPhysicsBody only.Expand description
A SpriteKit physics body. These are the physical representations of your nodes. These specify the area and mass and any collision masking needed.
All bodies have zero, one or more shapes that define its area. A body with no shapes is ethereal and does not collide with other bodies.
See also Apple’s documentation
Implementations§
Source§impl SKPhysicsBody
impl SKPhysicsBody
Sourcepub unsafe fn bodyWithCircleOfRadius(r: CGFloat) -> Retained<SKPhysicsBody>
Available on crate feature objc2-core-foundation only.
pub unsafe fn bodyWithCircleOfRadius(r: CGFloat) -> Retained<SKPhysicsBody>
objc2-core-foundation only.Creates a circle of radius r centered at the node’s origin.
Parameter r: the radius in points
Sourcepub unsafe fn bodyWithCircleOfRadius_center(
r: CGFloat,
center: CGPoint,
) -> Retained<SKPhysicsBody>
Available on crate feature objc2-core-foundation only.
pub unsafe fn bodyWithCircleOfRadius_center( r: CGFloat, center: CGPoint, ) -> Retained<SKPhysicsBody>
objc2-core-foundation only.Creates a circle of radius r centered at a point in the node’s coordinate space.
Parameter r: the radius in points
Sourcepub unsafe fn bodyWithRectangleOfSize(s: CGSize) -> Retained<SKPhysicsBody>
Available on crate feature objc2-core-foundation only.
pub unsafe fn bodyWithRectangleOfSize(s: CGSize) -> Retained<SKPhysicsBody>
objc2-core-foundation only.Creates a rectangle of the specified size centered at the node’s origin.
Parameter s: the size in points
Sourcepub unsafe fn bodyWithRectangleOfSize_center(
s: CGSize,
center: CGPoint,
) -> Retained<SKPhysicsBody>
Available on crate feature objc2-core-foundation only.
pub unsafe fn bodyWithRectangleOfSize_center( s: CGSize, center: CGPoint, ) -> Retained<SKPhysicsBody>
objc2-core-foundation only.Creates a rectangle of the specified size centered at a point in the node’s coordinate space.
Parameter s: the size in points
Sourcepub unsafe fn bodyWithPolygonFromPath(path: &CGPath) -> Retained<SKPhysicsBody>
Available on crate feature objc2-core-graphics only.
pub unsafe fn bodyWithPolygonFromPath(path: &CGPath) -> Retained<SKPhysicsBody>
objc2-core-graphics only.The path must represent a convex or concave polygon with counter clockwise winding and no self intersection. Positions are relative to the node’s origin.
Parameter path: the path to use
Sourcepub unsafe fn bodyWithEdgeFromPoint_toPoint(
p1: CGPoint,
p2: CGPoint,
) -> Retained<SKPhysicsBody>
Available on crate feature objc2-core-foundation only.
pub unsafe fn bodyWithEdgeFromPoint_toPoint( p1: CGPoint, p2: CGPoint, ) -> Retained<SKPhysicsBody>
objc2-core-foundation only.Creates an edge from p1 to p2. Edges have no volume and are intended to be used to create static environments. Edges can collide with bodies of volume, but not with each other.
Parameter p1: start point
Parameter p2: end point
Sourcepub unsafe fn bodyWithEdgeChainFromPath(
path: &CGPath,
) -> Retained<SKPhysicsBody>
Available on crate feature objc2-core-graphics only.
pub unsafe fn bodyWithEdgeChainFromPath( path: &CGPath, ) -> Retained<SKPhysicsBody>
objc2-core-graphics only.Creates an edge chain from a path. The path must have no self intersection. Edges have no volume and are intended to be used to create static environments. Edges can collide with bodies of volume, but not with each other.
Parameter path: the path to use
Sourcepub unsafe fn bodyWithEdgeLoopFromPath(path: &CGPath) -> Retained<SKPhysicsBody>
Available on crate feature objc2-core-graphics only.
pub unsafe fn bodyWithEdgeLoopFromPath(path: &CGPath) -> Retained<SKPhysicsBody>
objc2-core-graphics only.Creates an edge loop from a path. A loop is automatically created by joining the last point to the first. The path must have no self intersection. Edges have no volume and are intended to be used to create static environments. Edges can collide with body’s of volume, but not with each other.
Parameter path: the path to use
Sourcepub unsafe fn bodyWithEdgeLoopFromRect(rect: CGRect) -> Retained<SKPhysicsBody>
Available on crate feature objc2-core-foundation only.
pub unsafe fn bodyWithEdgeLoopFromRect(rect: CGRect) -> Retained<SKPhysicsBody>
objc2-core-foundation only.Creates an edge loop from a CGRect. Edges have no volume and are intended to be used to create static environments. Edges can collide with body’s of volume, but not with each other.
Parameter rect: the CGRect to use
Sourcepub unsafe fn bodyWithTexture_size(
texture: &SKTexture,
size: CGSize,
) -> Retained<SKPhysicsBody>
Available on crate features SKTexture and objc2-core-foundation only.
pub unsafe fn bodyWithTexture_size( texture: &SKTexture, size: CGSize, ) -> Retained<SKPhysicsBody>
SKTexture and objc2-core-foundation only.Creates a body from the alpha values in the supplied texture.
Parameter texture: the texture to be interpreted
Parameter size: of the generated physics body
Sourcepub unsafe fn bodyWithTexture_alphaThreshold_size(
texture: &SKTexture,
alpha_threshold: c_float,
size: CGSize,
) -> Retained<SKPhysicsBody>
Available on crate features SKTexture and objc2-core-foundation only.
pub unsafe fn bodyWithTexture_alphaThreshold_size( texture: &SKTexture, alpha_threshold: c_float, size: CGSize, ) -> Retained<SKPhysicsBody>
SKTexture and objc2-core-foundation only.Creates a body from the alpha values in the supplied texture.
Parameter texture: the texture to be interpreted
Parameter alphaThreshold: the alpha value above which a pixel is interpreted as opaque
Parameter size: of the generated physics body
Sourcepub unsafe fn bodyWithBodies(
bodies: &NSArray<SKPhysicsBody>,
) -> Retained<SKPhysicsBody>
pub unsafe fn bodyWithBodies( bodies: &NSArray<SKPhysicsBody>, ) -> Retained<SKPhysicsBody>
Creates an compound body that is the union of the bodies used to create it.
pub unsafe fn isDynamic(&self) -> bool
Sourcepub unsafe fn setDynamic(&self, dynamic: bool)
pub unsafe fn setDynamic(&self, dynamic: bool)
Setter for isDynamic.
pub unsafe fn usesPreciseCollisionDetection(&self) -> bool
Sourcepub unsafe fn setUsesPreciseCollisionDetection(
&self,
uses_precise_collision_detection: bool,
)
pub unsafe fn setUsesPreciseCollisionDetection( &self, uses_precise_collision_detection: bool, )
Setter for usesPreciseCollisionDetection.
pub unsafe fn allowsRotation(&self) -> bool
Sourcepub unsafe fn setAllowsRotation(&self, allows_rotation: bool)
pub unsafe fn setAllowsRotation(&self, allows_rotation: bool)
Setter for allowsRotation.
pub unsafe fn pinned(&self) -> bool
Sourcepub unsafe fn isResting(&self) -> bool
pub unsafe fn isResting(&self) -> bool
If the physics simulation has determined that this body is at rest it may set the resting property to YES. Resting bodies do not participate in the simulation until some collision with a non-resting object, or an impulse is applied, that unrests it. If all bodies in the world are resting then the simulation as a whole is “at rest”.
Sourcepub unsafe fn setResting(&self, resting: bool)
pub unsafe fn setResting(&self, resting: bool)
Setter for isResting.
Sourcepub unsafe fn friction(&self) -> CGFloat
Available on crate feature objc2-core-foundation only.
pub unsafe fn friction(&self) -> CGFloat
objc2-core-foundation only.Determines the ‘roughness’ for the surface of the physics body (0.0 - 1.0). Defaults to 0.2
Sourcepub unsafe fn setFriction(&self, friction: CGFloat)
Available on crate feature objc2-core-foundation only.
pub unsafe fn setFriction(&self, friction: CGFloat)
objc2-core-foundation only.Setter for friction.
Sourcepub unsafe fn charge(&self) -> CGFloat
Available on crate feature objc2-core-foundation only.
pub unsafe fn charge(&self) -> CGFloat
objc2-core-foundation only.Specifies the charge on the body. Charge determines the degree to which a body is affected by electric and magnetic fields. Note that this is a unitless quantity, it is up to the developer to set charge and field strength appropriately. Defaults to 0.0
Sourcepub unsafe fn setCharge(&self, charge: CGFloat)
Available on crate feature objc2-core-foundation only.
pub unsafe fn setCharge(&self, charge: CGFloat)
objc2-core-foundation only.Setter for charge.
Sourcepub unsafe fn restitution(&self) -> CGFloat
Available on crate feature objc2-core-foundation only.
pub unsafe fn restitution(&self) -> CGFloat
objc2-core-foundation only.Determines the ‘bounciness’ of the physics body (0.0 - 1.0). Defaults to 0.2
Sourcepub unsafe fn setRestitution(&self, restitution: CGFloat)
Available on crate feature objc2-core-foundation only.
pub unsafe fn setRestitution(&self, restitution: CGFloat)
objc2-core-foundation only.Setter for restitution.
Sourcepub unsafe fn linearDamping(&self) -> CGFloat
Available on crate feature objc2-core-foundation only.
pub unsafe fn linearDamping(&self) -> CGFloat
objc2-core-foundation only.Optionally reduce the body’s linear velocity each frame to simulate fluid/air friction. Value should be zero or greater. Defaults to 0.1. Used in conjunction with per frame impulses, an object can be made to move at a constant speed. For example, if an object 64 points in size and default density and a linearDamping of 25 will slide across the screen in a few seconds if an impulse of magnitude 10 is applied every update.
Sourcepub unsafe fn setLinearDamping(&self, linear_damping: CGFloat)
Available on crate feature objc2-core-foundation only.
pub unsafe fn setLinearDamping(&self, linear_damping: CGFloat)
objc2-core-foundation only.Setter for linearDamping.
Sourcepub unsafe fn angularDamping(&self) -> CGFloat
Available on crate feature objc2-core-foundation only.
pub unsafe fn angularDamping(&self) -> CGFloat
objc2-core-foundation only.Optionally reduce the body’s angular velocity each frame to simulate rotational friction. (0.0 - 1.0). Defaults to 0.1
Sourcepub unsafe fn setAngularDamping(&self, angular_damping: CGFloat)
Available on crate feature objc2-core-foundation only.
pub unsafe fn setAngularDamping(&self, angular_damping: CGFloat)
objc2-core-foundation only.Setter for angularDamping.
Sourcepub unsafe fn density(&self) -> CGFloat
Available on crate feature objc2-core-foundation only.
pub unsafe fn density(&self) -> CGFloat
objc2-core-foundation only.The density of the body.
The unit is arbitrary, as long as the relative densities are consistent throughout the application. Note that density and mass are inherently related (they are directly proportional), so changing one also changes the other. Both are provided so either can be used depending on what is more relevant to your usage.
Sourcepub unsafe fn setDensity(&self, density: CGFloat)
Available on crate feature objc2-core-foundation only.
pub unsafe fn setDensity(&self, density: CGFloat)
objc2-core-foundation only.Setter for density.
Sourcepub unsafe fn mass(&self) -> CGFloat
Available on crate feature objc2-core-foundation only.
pub unsafe fn mass(&self) -> CGFloat
objc2-core-foundation only.The mass of the body.
The unit is arbitrary, as long as the relative masses are consistent throughout the application. Note that density and mass are inherently related (they are directly proportional), so changing one also changes the other. Both are provided so either can be used depending on what is more relevant to your usage.
Sourcepub unsafe fn setMass(&self, mass: CGFloat)
Available on crate feature objc2-core-foundation only.
pub unsafe fn setMass(&self, mass: CGFloat)
objc2-core-foundation only.Setter for mass.
Sourcepub unsafe fn area(&self) -> CGFloat
Available on crate feature objc2-core-foundation only.
pub unsafe fn area(&self) -> CGFloat
objc2-core-foundation only.The area of the body.
The unit is arbitrary, as long as the relative areas are consistent throughout the application.
Sourcepub unsafe fn affectedByGravity(&self) -> bool
pub unsafe fn affectedByGravity(&self) -> bool
Bodies are affected by field forces such as gravity if this property is set and the field’s category mask is set appropriately. The default value is YES.
If this is set a force is applied to the object based on the mass. Set the field force vector in the scene to modify the strength of the force.
Sourcepub unsafe fn setAffectedByGravity(&self, affected_by_gravity: bool)
pub unsafe fn setAffectedByGravity(&self, affected_by_gravity: bool)
Setter for affectedByGravity.
Sourcepub unsafe fn fieldBitMask(&self) -> u32
pub unsafe fn fieldBitMask(&self) -> u32
Defines what logical ‘categories’ of fields this body responds to. Defaults to all bits set (all categories). Can be forced off via affectedByGravity.
Sourcepub unsafe fn setFieldBitMask(&self, field_bit_mask: u32)
pub unsafe fn setFieldBitMask(&self, field_bit_mask: u32)
Setter for fieldBitMask.
Sourcepub unsafe fn categoryBitMask(&self) -> u32
pub unsafe fn categoryBitMask(&self) -> u32
Defines what logical ‘categories’ this body belongs to. Defaults to all bits set (all categories).
Sourcepub unsafe fn setCategoryBitMask(&self, category_bit_mask: u32)
pub unsafe fn setCategoryBitMask(&self, category_bit_mask: u32)
Setter for categoryBitMask.
Sourcepub unsafe fn collisionBitMask(&self) -> u32
pub unsafe fn collisionBitMask(&self) -> u32
Defines what logical ‘categories’ of bodies this body responds to collisions with. Defaults to all bits set (all categories).
Sourcepub unsafe fn setCollisionBitMask(&self, collision_bit_mask: u32)
pub unsafe fn setCollisionBitMask(&self, collision_bit_mask: u32)
Setter for collisionBitMask.
Sourcepub unsafe fn contactTestBitMask(&self) -> u32
pub unsafe fn contactTestBitMask(&self) -> u32
Defines what logical ‘categories’ of bodies this body generates intersection notifications with. Defaults to all bits cleared (no categories).
Sourcepub unsafe fn setContactTestBitMask(&self, contact_test_bit_mask: u32)
pub unsafe fn setContactTestBitMask(&self, contact_test_bit_mask: u32)
Setter for contactTestBitMask.
pub unsafe fn joints(&self) -> Retained<NSArray<SKPhysicsJoint>>
SKPhysicsJoint only.Sourcepub unsafe fn node(&self, mtm: MainThreadMarker) -> Option<Retained<SKNode>>
Available on crate feature SKNode and crate feature objc2-app-kit and macOS only.
pub unsafe fn node(&self, mtm: MainThreadMarker) -> Option<Retained<SKNode>>
SKNode and crate feature objc2-app-kit and macOS only.The representedObject this physicsBody is currently bound to, or nil if it is not.
pub unsafe fn velocity(&self) -> CGVector
objc2-core-foundation only.Sourcepub unsafe fn setVelocity(&self, velocity: CGVector)
Available on crate feature objc2-core-foundation only.
pub unsafe fn setVelocity(&self, velocity: CGVector)
objc2-core-foundation only.Setter for velocity.
pub unsafe fn angularVelocity(&self) -> CGFloat
objc2-core-foundation only.Sourcepub unsafe fn setAngularVelocity(&self, angular_velocity: CGFloat)
Available on crate feature objc2-core-foundation only.
pub unsafe fn setAngularVelocity(&self, angular_velocity: CGFloat)
objc2-core-foundation only.Setter for angularVelocity.
pub unsafe fn applyForce(&self, force: CGVector)
objc2-core-foundation only.pub unsafe fn applyForce_atPoint(&self, force: CGVector, point: CGPoint)
objc2-core-foundation only.pub unsafe fn applyTorque(&self, torque: CGFloat)
objc2-core-foundation only.pub unsafe fn applyImpulse(&self, impulse: CGVector)
objc2-core-foundation only.pub unsafe fn applyImpulse_atPoint(&self, impulse: CGVector, point: CGPoint)
objc2-core-foundation only.pub unsafe fn applyAngularImpulse(&self, impulse: CGFloat)
objc2-core-foundation only.pub unsafe fn allContactedBodies(&self) -> Retained<NSArray<SKPhysicsBody>>
Methods from Deref<Target = NSObject>§
Sourcepub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
pub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
Handle messages the object doesn’t recognize.
See Apple’s documentation for details.
Methods from Deref<Target = AnyObject>§
Sourcepub fn class(&self) -> &'static AnyClass
pub fn class(&self) -> &'static AnyClass
Dynamically find the class of this object.
§Example
Check that an instance of NSObject has the precise class NSObject.
use objc2::ClassType;
use objc2::runtime::NSObject;
let obj = NSObject::new();
assert_eq!(obj.class(), NSObject::class());Sourcepub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
👎Deprecated: this is difficult to use correctly, use Ivar::load instead.
pub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
Ivar::load instead.Use Ivar::load instead.
§Safety
The object must have an instance variable with the given name, and it
must be of type T.
See Ivar::load_ptr for details surrounding this.
Sourcepub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
pub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
Attempt to downcast the object to a class of type T.
This is the reference-variant. Use Retained::downcast if you want
to convert a retained object to another type.
§Mutable classes
Some classes have immutable and mutable variants, such as NSString
and NSMutableString.
When some Objective-C API signature says it gives you an immutable class, it generally expects you to not mutate that, even though it may technically be mutable “under the hood”.
So using this method to convert a NSString to a NSMutableString,
while not unsound, is generally frowned upon unless you created the
string yourself, or the API explicitly documents the string to be
mutable.
See Apple’s documentation on mutability and on
isKindOfClass: for more details.
§Generic classes
Objective-C generics are called “lightweight generics”, and that’s because they aren’t exposed in the runtime. This makes it impossible to safely downcast to generic collections, so this is disallowed by this method.
You can, however, safely downcast to generic collections where all the
type-parameters are AnyObject.
§Panics
This works internally by calling isKindOfClass:. That means that the
object must have the instance method of that name, and an exception
will be thrown (if CoreFoundation is linked) or the process will abort
if that is not the case. In the vast majority of cases, you don’t need
to worry about this, since both root objects NSObject and
NSProxy implement this method.
§Examples
Cast an NSString back and forth from NSObject.
use objc2::rc::Retained;
use objc2_foundation::{NSObject, NSString};
let obj: Retained<NSObject> = NSString::new().into_super();
let string = obj.downcast_ref::<NSString>().unwrap();
// Or with `downcast`, if we do not need the object afterwards
let string = obj.downcast::<NSString>().unwrap();Try (and fail) to cast an NSObject to an NSString.
use objc2_foundation::{NSObject, NSString};
let obj = NSObject::new();
assert!(obj.downcast_ref::<NSString>().is_none());Try to cast to an array of strings.
use objc2_foundation::{NSArray, NSObject, NSString};
let arr = NSArray::from_retained_slice(&[NSObject::new()]);
// This is invalid and doesn't type check.
let arr = arr.downcast_ref::<NSArray<NSString>>();This fails to compile, since it would require enumerating over the array to ensure that each element is of the desired type, which is a performance pitfall.
Downcast when processing each element instead.
use objc2_foundation::{NSArray, NSObject, NSString};
let arr = NSArray::from_retained_slice(&[NSObject::new()]);
for elem in arr {
if let Some(data) = elem.downcast_ref::<NSString>() {
// handle `data`
}
}Trait Implementations§
Source§impl AsRef<AnyObject> for SKPhysicsBody
impl AsRef<AnyObject> for SKPhysicsBody
Source§impl AsRef<NSObject> for SKPhysicsBody
impl AsRef<NSObject> for SKPhysicsBody
Source§impl AsRef<SKPhysicsBody> for SKPhysicsBody
impl AsRef<SKPhysicsBody> for SKPhysicsBody
Source§impl Borrow<AnyObject> for SKPhysicsBody
impl Borrow<AnyObject> for SKPhysicsBody
Source§impl Borrow<NSObject> for SKPhysicsBody
impl Borrow<NSObject> for SKPhysicsBody
Source§impl ClassType for SKPhysicsBody
impl ClassType for SKPhysicsBody
Source§const NAME: &'static str = "SKPhysicsBody"
const NAME: &'static str = "SKPhysicsBody"
Source§type ThreadKind = <<SKPhysicsBody as ClassType>::Super as ClassType>::ThreadKind
type ThreadKind = <<SKPhysicsBody as ClassType>::Super as ClassType>::ThreadKind
Source§impl CopyingHelper for SKPhysicsBody
impl CopyingHelper for SKPhysicsBody
Source§type Result = SKPhysicsBody
type Result = SKPhysicsBody
Self if the type has no
immutable counterpart. Read moreSource§impl Debug for SKPhysicsBody
impl Debug for SKPhysicsBody
Source§impl Deref for SKPhysicsBody
impl Deref for SKPhysicsBody
Source§impl Hash for SKPhysicsBody
impl Hash for SKPhysicsBody
Source§impl Message for SKPhysicsBody
impl Message for SKPhysicsBody
Source§impl NSCoding for SKPhysicsBody
impl NSCoding for SKPhysicsBody
Source§impl NSCopying for SKPhysicsBody
impl NSCopying for SKPhysicsBody
Source§impl NSObjectProtocol for SKPhysicsBody
impl NSObjectProtocol for SKPhysicsBody
Source§fn isEqual(&self, other: Option<&AnyObject>) -> bool
fn isEqual(&self, other: Option<&AnyObject>) -> bool
Source§fn hash(&self) -> usize
fn hash(&self) -> usize
Source§fn isKindOfClass(&self, cls: &AnyClass) -> bool
fn isKindOfClass(&self, cls: &AnyClass) -> bool
Source§fn is_kind_of<T>(&self) -> bool
fn is_kind_of<T>(&self) -> bool
isKindOfClass directly, or cast your objects with AnyObject::downcast_ref