{
base.Initialize();
UpdatesOutsidePrediction = true;
- SubscribeLocalEvent<TimedDespawnComponent, ComponentGetState>(OnDespawnGetState);
- SubscribeLocalEvent<TimedDespawnComponent, ComponentHandleState>(OnDespawnHandleState);
- }
-
- private void OnDespawnGetState(EntityUid uid, TimedDespawnComponent component, ref ComponentGetState args)
- {
- args.State = new TimedDespawnComponentState()
- {
- Lifetime = component.Lifetime,
- };
- }
-
- private void OnDespawnHandleState(EntityUid uid, TimedDespawnComponent component, ref ComponentHandleState args)
- {
- if (args.Current is not TimedDespawnComponentState state)
- return;
-
- component.Lifetime = state.Lifetime;
}
public override void Update(float frameTime)
{
base.Update(frameTime);
+ // AAAAAAAAAAAAAAAAAAAAAAAAAAA
+ // Client both needs to predict this, but also can't properly handle prediction resetting.
if (!_timing.IsFirstTimePredicted)
return;
}
protected abstract bool CanDelete(EntityUid uid);
-
- [Serializable, NetSerializable]
- private sealed class TimedDespawnComponentState : ComponentState
- {
- public float Lifetime;
- }
}