GetActorOwner - ObjectReference

From the CreationKit Wiki
Revision as of 02:51, 8 September 2015 by imported>Fireundubh (explicit vs. inherited ownership)
Jump to navigation Jump to search

Member of: ObjectReference Script

Gets the ActorBase that owns this object. Will return None if the object isn't owned by an actor.

Syntax

ActorBase Function GetActorOwner() native

Parameters

None.

Return Value

The ActorBase that owns this object.

Examples

Returning an explicit owner

; Does the player own the sword?
Bool playerOwnsSword = SwordProperty.GetActorOwner() == Game.GetPlayer().GetActorBase()

Returning an inherited owner

; Does the player own the sword?
Bool playerOwnsSword = GetInheritedOwner(SwordProperty, SwordRackProperty) == Game.GetPlayer().GetActorBase()

ActorBase Function GetInheritedOwner(ObjectReference aObj, ObjectReference aContainer)
    ActorBase actorOwner = aObj.GetActorOwner()
    If !actorOwner 
        If aContainer
            actorOwner = aContainer.GetActorOwner()
            If !actorOwner
                actorOwner = aContainer.GetParentCell().GetActorOwner()
            EndIf
        EndIf
        If !actorOwner 
            actorOwner = aObj.GetParentCell().GetActorOwner()
        EndIf
    EndIf
    Return actorOwner
EndFunction

Notes

Explicit vs. Inherited Ownership

Object references can have explicit owners and inherited owners. An explicit owner is associated directly with the object. An inherited owner is derived from the container that contains the object, the cell that contains the object, or the cell that contains the container that contains the object when the object has not been associated with an explicit owner. GetActorOwner() returns only the explicit owner of an object reference and None when an explicit owner is not found.

See Also