Fix followers leaking (#20643)
This commit is contained in:
@@ -33,6 +33,8 @@ public sealed class FollowerSystem : EntitySystem
|
|||||||
SubscribeLocalEvent<GetVerbsEvent<AlternativeVerb>>(OnGetAlternativeVerbs);
|
SubscribeLocalEvent<GetVerbsEvent<AlternativeVerb>>(OnGetAlternativeVerbs);
|
||||||
SubscribeLocalEvent<FollowerComponent, MoveInputEvent>(OnFollowerMove);
|
SubscribeLocalEvent<FollowerComponent, MoveInputEvent>(OnFollowerMove);
|
||||||
SubscribeLocalEvent<FollowerComponent, PullStartedMessage>(OnPullStarted);
|
SubscribeLocalEvent<FollowerComponent, PullStartedMessage>(OnPullStarted);
|
||||||
|
SubscribeLocalEvent<FollowerComponent, EntityTerminatingEvent>(OnFollowerTerminating);
|
||||||
|
|
||||||
SubscribeLocalEvent<FollowerComponent, GotEquippedHandEvent>(OnGotEquippedHand);
|
SubscribeLocalEvent<FollowerComponent, GotEquippedHandEvent>(OnGotEquippedHand);
|
||||||
SubscribeLocalEvent<FollowedComponent, EntityTerminatingEvent>(OnFollowedTerminating);
|
SubscribeLocalEvent<FollowedComponent, EntityTerminatingEvent>(OnFollowedTerminating);
|
||||||
SubscribeLocalEvent<BeforeSaveEvent>(OnBeforeSave);
|
SubscribeLocalEvent<BeforeSaveEvent>(OnBeforeSave);
|
||||||
@@ -107,6 +109,11 @@ public sealed class FollowerSystem : EntitySystem
|
|||||||
StopFollowingEntity(uid, component.Following, deparent:false);
|
StopFollowingEntity(uid, component.Following, deparent:false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void OnFollowerTerminating(EntityUid uid, FollowerComponent component, ref EntityTerminatingEvent args)
|
||||||
|
{
|
||||||
|
StopFollowingEntity(uid, component.Following, deparent: false);
|
||||||
|
}
|
||||||
|
|
||||||
// Since we parent our observer to the followed entity, we need to detach
|
// Since we parent our observer to the followed entity, we need to detach
|
||||||
// before they get deleted so that we don't get recursively deleted too.
|
// before they get deleted so that we don't get recursively deleted too.
|
||||||
private void OnFollowedTerminating(EntityUid uid, FollowedComponent component, ref EntityTerminatingEvent args)
|
private void OnFollowedTerminating(EntityUid uid, FollowedComponent component, ref EntityTerminatingEvent args)
|
||||||
@@ -186,7 +193,7 @@ public sealed class FollowerSystem : EntitySystem
|
|||||||
|
|
||||||
RaiseLocalEvent(uid, uidEv, true);
|
RaiseLocalEvent(uid, uidEv, true);
|
||||||
RaiseLocalEvent(target, targetEv, false);
|
RaiseLocalEvent(target, targetEv, false);
|
||||||
Dirty(followed);
|
Dirty(target, followed);
|
||||||
RaiseLocalEvent(uid, uidEv);
|
RaiseLocalEvent(uid, uidEv);
|
||||||
RaiseLocalEvent(target, targetEv);
|
RaiseLocalEvent(target, targetEv);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user