Class PetController
Controller for managing pet entities attached to a character. Handles pet state, network broadcasts, and event invocation.
public class PetController : CharacterBehaviour, IPetController, ICharacterBehaviour
- Inheritance
-
ObjectComponentBehaviourMonoBehaviourNetworkBehaviourPetController
- Implements
- Inherited Members
-
NetworkBehaviour.IsSpawnedNetworkBehaviour.ComponentIndexNetworkBehaviour.NetworkObjectNetworkBehaviour.MAXIMUM_NETWORKBEHAVIOURSNetworkBehaviour.UNSET_NETWORKBEHAVIOUR_IDNetworkBehaviour.ToString()NetworkBehaviour.Reset()NetworkBehaviour.OnValidate()NetworkBehaviour.IsBehaviourReconcilingNetworkBehaviour.ClearReplicateCache()NetworkBehaviour.CreateReconcile()NetworkBehaviour.Reconcile_Reader<T>(PooledReader, ref T)NetworkBehaviour.OnStartServerCalledNetworkBehaviour.OnStartClientCalledNetworkBehaviour.WritePayload(NetworkConnection, Writer)NetworkBehaviour.ReadPayload(NetworkConnection, Reader)NetworkBehaviour.OnStartServer()NetworkBehaviour.OnStopServer()NetworkBehaviour.OnOwnershipServer(NetworkConnection)NetworkBehaviour.OnSpawnServer(NetworkConnection)NetworkBehaviour.OnDespawnServer(NetworkConnection)NetworkBehaviour.OnStartClient()NetworkBehaviour.OnStopClient()NetworkBehaviour.OnOwnershipClient(NetworkConnection)NetworkBehaviour.ClearBuffedRpcs()NetworkBehaviour.ExcludeOwnerFromUnbufferedObserversRpcsNetworkBehaviour.IsClientOnlyNetworkBehaviour.IsServerOnlyNetworkBehaviour.IsHostNetworkBehaviour.IsClientNetworkBehaviour.IsServerNetworkBehaviour.IsDeinitializingNetworkBehaviour.NetworkManagerNetworkBehaviour.ServerManagerNetworkBehaviour.ClientManagerNetworkBehaviour.ObserverManagerNetworkBehaviour.TransportManagerNetworkBehaviour.TimeManagerNetworkBehaviour.SceneManagerNetworkBehaviour.PredictionManagerNetworkBehaviour.RollbackManagerNetworkBehaviour.NetworkObserverNetworkBehaviour.IsClientInitializedNetworkBehaviour.IsClientStartedNetworkBehaviour.IsClientOnlyInitializedNetworkBehaviour.IsClientOnlyStartedNetworkBehaviour.IsServerInitializedNetworkBehaviour.IsServerStartedNetworkBehaviour.IsServerOnlyInitializedNetworkBehaviour.IsServerOnlyStartedNetworkBehaviour.IsHostInitializedNetworkBehaviour.IsHostStartedNetworkBehaviour.IsOfflineNetworkBehaviour.IsNetworkedNetworkBehaviour.GetIsNetworked()NetworkBehaviour.IsManagerReconcilingNetworkBehaviour.ObserversNetworkBehaviour.IsOwnerNetworkBehaviour.IsControllerNetworkBehaviour.HasAuthorityNetworkBehaviour.OwnerNetworkBehaviour.OwnerIdNetworkBehaviour.ObjectIdNetworkBehaviour.LocalConnectionNetworkBehaviour.OwnerMatches(NetworkConnection)NetworkBehaviour.Despawn(GameObject, DespawnType?)NetworkBehaviour.Despawn(NetworkObject, DespawnType?)NetworkBehaviour.Despawn(DespawnType?)NetworkBehaviour.Spawn(GameObject, NetworkConnection, Scene)NetworkBehaviour.Spawn(NetworkObject, NetworkConnection, Scene)NetworkBehaviour.RemoveOwnership()NetworkBehaviour.GiveOwnership(NetworkConnection)NetworkBehaviour.GetInstance<T>()NetworkBehaviour.TryRegisterInstance<T>(T)NetworkBehaviour.UnregisterInstance<T>()NetworkBehaviour.CanLog(LoggingType)MonoBehaviour.IsInvoking()MonoBehaviour.CancelInvoke()MonoBehaviour.StopCoroutine(Coroutine)MonoBehaviour.StopAllCoroutines()MonoBehaviour.destroyCancellationTokenMonoBehaviour.useGUILayoutMonoBehaviour.didStartMonoBehaviour.didAwakeMonoBehaviour.runInEditModeBehaviour.enabledBehaviour.isActiveAndEnabledComponent.GetComponent<T>()Component.TryGetComponent<T>(out T)Component.GetComponentInChildren<T>()Component.GetComponentsInChildren<T>()Component.GetComponentInParent<T>()Component.GetComponentsInParent<T>()Component.GetComponents<T>()Component.GetComponentIndex()Component.CompareTag(TagHandle)Component.transformComponent.transformHandleComponent.gameObjectComponent.tagObject.GetEntityId()Object.GetInstanceID()Object.GetHashCode()Object.InstantiateAsync<T>(T)Object.InstantiateAsync<T>(T, Transform)Object.InstantiateAsync<T>(T, Vector3, Quaternion)Object.InstantiateAsync<T>(T, Transform, Vector3, Quaternion)Object.Instantiate(Object, Vector3, Quaternion)Object.Instantiate(Object, Vector3, Quaternion, Transform)Object.Instantiate(Object)Object.Instantiate(Object, Scene)Object.Instantiate<T>(T, InstantiateParameters)Object.Instantiate<T>(T, Vector3, Quaternion, InstantiateParameters)Object.Instantiate(Object, Transform)Object.Instantiate<T>(T)Object.Instantiate<T>(T, Vector3, Quaternion)Object.Instantiate<T>(T, Vector3, Quaternion, Transform)Object.Instantiate<T>(T, Transform)Object.Destroy(Object)Object.DestroyImmediate(Object)Object.DontDestroyOnLoad(Object)Object.DestroyObject(Object)Object.FindObjectsOfType<T>()Object.FindObjectsByType<T>(FindObjectsSortMode)Object.FindObjectsByType<T>(FindObjectsInactive, FindObjectsSortMode)Object.FindObjectOfType<T>()Object.FindFirstObjectByType<T>()Object.FindAnyObjectByType<T>()Object.FindFirstObjectByType<T>(FindObjectsInactive)Object.FindAnyObjectByType<T>(FindObjectsInactive)Object.FindObjectsByType<T>()Object.FindObjectsByType<T>(FindObjectsInactive)Object.nameObject.hideFlags
Properties
MovementOrder
The pet's movement order as this peer currently understands it.
public PetMovementOrder MovementOrder { get; set; }
Property Value
OnPetDismissTriggers
Triggers invoked when a pet is dismissed or destroyed.
public List<Trigger> OnPetDismissTriggers { get; }
Property Value
OnPetSummonTriggers
Triggers invoked when a pet is summoned.
public List<Trigger> OnPetSummonTriggers { get; }
Property Value
Pet
The pet instance managed by this controller.
public Pet Pet { get; set; }
Property Value
Remarks
Assignment drives the server's damage subscription — see FishMMO.Shared.PetController.UpdateDamageSubscription().
Stance
The pet's combat stance as this peer currently understands it.
public PetStance Stance { get; set; }
Property Value
Remarks
Mirrored here as well as on Pet so the UI has something to bind to between a pet being dismissed and re-summoned.
Methods
OnClientPetAddBroadcastReceived(PetAddBroadcast, Channel)
Handles the broadcast when a pet is added. Sets the pet reference and invokes the OnPetSummoned event.
public void OnClientPetAddBroadcastReceived(PetAddBroadcast msg, Channel channel)
Parameters
msgPetAddBroadcastThe broadcast message containing the pet ID and orders.
channelChannelThe network channel.
OnClientPetMovementOrderBroadcastReceived(PetMovementOrderBroadcast, Channel)
Applies the server's authoritative movement order.
public void OnClientPetMovementOrderBroadcastReceived(PetMovementOrderBroadcast msg, Channel channel)
Parameters
msgPetMovementOrderBroadcastThe movement order broadcast.
channelChannelThe network channel.
OnClientPetRemoveBroadcastReceived(PetRemoveBroadcast, Channel)
Handles the broadcast when a pet is removed. Clears the pet reference and invokes the OnPetDestroyed event.
public void OnClientPetRemoveBroadcastReceived(PetRemoveBroadcast msg, Channel channel)
Parameters
msgPetRemoveBroadcastThe broadcast message for pet removal.
channelChannelThe network channel.
OnClientPetStanceBroadcastReceived(PetStanceBroadcast, Channel)
Applies the server's authoritative stance so the UI reflects what the pet is really doing.
public void OnClientPetStanceBroadcastReceived(PetStanceBroadcast msg, Channel channel)
Parameters
msgPetStanceBroadcastThe stance broadcast.
channelChannelThe network channel.
OnDestroying()
Called during OnDestroy for custom cleanup logic. Override in derived classes.
public override void OnDestroying()
OnStartCharacter()
Called when the character starts. Registers broadcast listeners for pet events if owner.
public override void OnStartCharacter()
OnStartNetwork()
Called when the network object starts. The damage subscription is taken lazily, when a pet actually exists.
public override void OnStartNetwork()
OnStopCharacter()
Called when the character stops. Unregisters broadcast listeners for pet events if owner.
public override void OnStopCharacter()
OnStopNetwork()
Releases the global damage subscription.
public override void OnStopNetwork()
ResetState(bool)
Resets the controller's state, clearing the pet reference and orders.
public override void ResetState(bool asServer)
Parameters
asServerboolWhether the reset is performed on the server.
Events
OnOwnerAttacked
Raised on the server when this controller's owner is damaged by a hostile character.
public event Action<IPetController, ICharacter> OnOwnerAttacked
Event Type
Remarks
A defensive pet has to know its owner is under attack, and the owner is a player with no aggression table of its own to read. Subscribing here — one handler per player, mirroring what AggressionState already does per NPC — is what lets a defensive pet come to its owner's aid instead of watching.