#nullable enable using Content.Shared.GameObjects.Components.Body.Mechanism; using Content.Shared.GameObjects.Components.Body.Part; namespace Content.Shared.GameObjects.Components.Body.Behavior { public interface IMechanismBehavior : IHasBody { IBodyPart? Part { get; } /// /// Upward reference to the parent that this /// behavior is attached to. /// IMechanism? Mechanism { get; } void Update(float frameTime); /// /// Called when the containing is attached to a /// . /// For instance, attaching a head with a brain inside to a body. /// DO NOT CALL THIS DIRECTLY FROM OUTSIDE BODY SYSTEM CODE! /// void AddedToBody(); /// /// Called when the parent is /// added into a that is not attached to a /// . /// For instance, adding a brain to a dismembered head. /// DO NOT CALL THIS DIRECTLY FROM OUTSIDE BODY SYSTEM CODE! /// void AddedToPart(); /// /// Called when the parent is removed from a /// . /// For instance, removing a head with a brain inside from a body. /// DO NOT CALL THIS DIRECTLY FROM OUTSIDE BODY SYSTEM CODE! /// void RemovedFromBody(IBody old); /// /// Called when the parent is /// removed from a that is not attached to a /// . /// For instance, removing a brain from a dismembered head. /// DO NOT CALL THIS DIRECTLY FROM OUTSIDE BODY SYSTEM CODE! /// void RemovedFromPart(IBodyPart old); /// /// Called when the parent is added to a /// that is attached to a . /// For instance, adding a brain to a head that is attached to a body. /// DO NOT CALL THIS DIRECTLY FROM OUTSIDE BODY SYSTEM CODE! /// void AddedToPartInBody(); /// /// Called when the parent is removed from a /// that is attached to a . /// For instance, removing a brain from a head that is attached to a body. /// DO NOT CALL THIS DIRECTLY FROM OUTSIDE BODY SYSTEM CODE! /// void RemovedFromPartInBody(IBody? oldBody, IBodyPart? oldPart); } }