#[repr(C)]pub struct SKTileGroupRule { /* private fields */ }SKTileSet only.Expand description
A tile group rule defines how a certain type of tile should be placed on the map. These tiles are like puzzle pieces, and the rules define how they should be pieced together. This is accomplished by defining which neighboring spaces need to be filled with tiles that belong to the same group, and which tiles are required to be empty. The required pattern of neighboring tiles is defined using the SKTileAdjacencyMask.
See also Apple’s documentation
Implementations§
Source§impl SKTileGroupRule
impl SKTileGroupRule
Sourcepub unsafe fn tileGroupRuleWithAdjacency_tileDefinitions(
adjacency: SKTileAdjacencyMask,
tile_definitions: &NSArray<SKTileDefinition>,
) -> Retained<Self>
Available on crate feature SKTileDefinition only.
pub unsafe fn tileGroupRuleWithAdjacency_tileDefinitions( adjacency: SKTileAdjacencyMask, tile_definitions: &NSArray<SKTileDefinition>, ) -> Retained<Self>
SKTileDefinition only.Create a tile group rule with the specified adjacency and tile definitions.
Parameter adjacency: the adjacency requirements for this rule; use the mask that covers the adjacent spaces that must be filled with tiles belonging to the same group; tiles not masked out must be empty
Parameter tileDefinitions: the tile definitions used for this rule
Sourcepub unsafe fn initWithAdjacency_tileDefinitions(
this: Allocated<Self>,
adjacency: SKTileAdjacencyMask,
tile_definitions: &NSArray<SKTileDefinition>,
) -> Retained<Self>
Available on crate feature SKTileDefinition only.
pub unsafe fn initWithAdjacency_tileDefinitions( this: Allocated<Self>, adjacency: SKTileAdjacencyMask, tile_definitions: &NSArray<SKTileDefinition>, ) -> Retained<Self>
SKTileDefinition only.Initilize a tile group rule with the specified adjacency and tile definitions.
Parameter adjacency: the adjacency requirements for this rule; use the mask that covers the adjacent spaces that must be filled with tiles belonging to the same group; tiles not masked out must be empty
Parameter tileDefinitions: the tile definitions used for this rule
Sourcepub unsafe fn adjacency(&self) -> SKTileAdjacencyMask
pub unsafe fn adjacency(&self) -> SKTileAdjacencyMask
The adjacency mask used by this rule. Set this to the mask that covers the adjacent spaces that must be filled with tiles belonging to the same group for this rule met.
Sourcepub unsafe fn setAdjacency(&self, adjacency: SKTileAdjacencyMask)
pub unsafe fn setAdjacency(&self, adjacency: SKTileAdjacencyMask)
Setter for adjacency.
Sourcepub unsafe fn tileDefinitions(&self) -> Retained<NSArray<SKTileDefinition>>
Available on crate feature SKTileDefinition only.
pub unsafe fn tileDefinitions(&self) -> Retained<NSArray<SKTileDefinition>>
SKTileDefinition only.The tile definitions used by this rule. If the rule is evaluated and its conditions are met, one of the tile definitions within this array will be randomly selected for placement within the tile map. Each tile definitions’ placement weight is taken into consideration to determine how likely each is to be selected; tile definitions with higher placement weights will be selected more frequently than those with lower placement weights.
Sourcepub unsafe fn setTileDefinitions(
&self,
tile_definitions: &NSArray<SKTileDefinition>,
)
Available on crate feature SKTileDefinition only.
pub unsafe fn setTileDefinitions( &self, tile_definitions: &NSArray<SKTileDefinition>, )
SKTileDefinition only.Setter for tileDefinitions.
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 SKTileGroupRule
impl AsRef<AnyObject> for SKTileGroupRule
Source§impl AsRef<NSObject> for SKTileGroupRule
impl AsRef<NSObject> for SKTileGroupRule
Source§impl AsRef<SKTileGroupRule> for SKTileGroupRule
impl AsRef<SKTileGroupRule> for SKTileGroupRule
Source§impl Borrow<AnyObject> for SKTileGroupRule
impl Borrow<AnyObject> for SKTileGroupRule
Source§impl Borrow<NSObject> for SKTileGroupRule
impl Borrow<NSObject> for SKTileGroupRule
Source§impl ClassType for SKTileGroupRule
impl ClassType for SKTileGroupRule
Source§const NAME: &'static str = "SKTileGroupRule"
const NAME: &'static str = "SKTileGroupRule"
Source§type ThreadKind = <<SKTileGroupRule as ClassType>::Super as ClassType>::ThreadKind
type ThreadKind = <<SKTileGroupRule as ClassType>::Super as ClassType>::ThreadKind
Source§impl CopyingHelper for SKTileGroupRule
impl CopyingHelper for SKTileGroupRule
Source§type Result = SKTileGroupRule
type Result = SKTileGroupRule
Self if the type has no
immutable counterpart. Read moreSource§impl Debug for SKTileGroupRule
impl Debug for SKTileGroupRule
Source§impl Deref for SKTileGroupRule
impl Deref for SKTileGroupRule
Source§impl Hash for SKTileGroupRule
impl Hash for SKTileGroupRule
Source§impl Message for SKTileGroupRule
impl Message for SKTileGroupRule
Source§impl NSCoding for SKTileGroupRule
impl NSCoding for SKTileGroupRule
Source§impl NSCopying for SKTileGroupRule
impl NSCopying for SKTileGroupRule
Source§impl NSObjectProtocol for SKTileGroupRule
impl NSObjectProtocol for SKTileGroupRule
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