public virtual void OnSpawn(MatchSimulationUnit unitState, MatchSimulation matchSimulation) { InitializeChildComponents(); transform.position = unitState.MovementState.Value.GetUnityPosition(); transform.rotation = unitState.MovementState.Value.GetUnityRotation(); unitState.MovementState .Subscribe(OnPositionRotationUpdate) .AddTo(this); healthbar.Initialize(unitState); matchSimulation.SimulationFrameSubject .Subscribe(UpdateToNextState) .AddTo(this); unitState.AbilityActivationSubject .Subscribe(abilityActivation => OnAbilityActivation(abilityActivation.Rotation, abilityActivation.StartFrame, abilityActivation.ActivationFrame)); }