Table of Contents

Class PetController

Namespace
FishMMO.Shared
Assembly
FishMMO.Shared.dll

Controller for managing pet entities attached to a character. Handles pet state, network broadcasts, and event invocation.

public class PetController : CharacterBehaviour, IPetController, ICharacterBehaviour
Inheritance
Object
Component
Behaviour
MonoBehaviour
NetworkBehaviour
PetController
Implements
Inherited Members
NetworkBehaviour.IsSpawned
NetworkBehaviour.ComponentIndex
NetworkBehaviour.NetworkObject
NetworkBehaviour.MAXIMUM_NETWORKBEHAVIOURS
NetworkBehaviour.UNSET_NETWORKBEHAVIOUR_ID
NetworkBehaviour.ToString()
NetworkBehaviour.Reset()
NetworkBehaviour.OnValidate()
NetworkBehaviour.IsBehaviourReconciling
NetworkBehaviour.ClearReplicateCache()
NetworkBehaviour.CreateReconcile()
NetworkBehaviour.Reconcile_Reader<T>(PooledReader, ref T)
NetworkBehaviour.OnStartServerCalled
NetworkBehaviour.OnStartClientCalled
NetworkBehaviour.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.ExcludeOwnerFromUnbufferedObserversRpcs
NetworkBehaviour.IsClientOnly
NetworkBehaviour.IsServerOnly
NetworkBehaviour.IsHost
NetworkBehaviour.IsClient
NetworkBehaviour.IsServer
NetworkBehaviour.IsDeinitializing
NetworkBehaviour.NetworkManager
NetworkBehaviour.ServerManager
NetworkBehaviour.ClientManager
NetworkBehaviour.ObserverManager
NetworkBehaviour.TransportManager
NetworkBehaviour.TimeManager
NetworkBehaviour.SceneManager
NetworkBehaviour.PredictionManager
NetworkBehaviour.RollbackManager
NetworkBehaviour.NetworkObserver
NetworkBehaviour.IsClientInitialized
NetworkBehaviour.IsClientStarted
NetworkBehaviour.IsClientOnlyInitialized
NetworkBehaviour.IsClientOnlyStarted
NetworkBehaviour.IsServerInitialized
NetworkBehaviour.IsServerStarted
NetworkBehaviour.IsServerOnlyInitialized
NetworkBehaviour.IsServerOnlyStarted
NetworkBehaviour.IsHostInitialized
NetworkBehaviour.IsHostStarted
NetworkBehaviour.IsOffline
NetworkBehaviour.IsNetworked
NetworkBehaviour.GetIsNetworked()
NetworkBehaviour.IsManagerReconciling
NetworkBehaviour.Observers
NetworkBehaviour.IsOwner
NetworkBehaviour.IsController
NetworkBehaviour.HasAuthority
NetworkBehaviour.Owner
NetworkBehaviour.OwnerId
NetworkBehaviour.ObjectId
NetworkBehaviour.LocalConnection
NetworkBehaviour.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.destroyCancellationToken
MonoBehaviour.useGUILayout
MonoBehaviour.didStart
MonoBehaviour.didAwake
MonoBehaviour.runInEditMode
Behaviour.enabled
Behaviour.isActiveAndEnabled
Component.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.transform
Component.transformHandle
Component.gameObject
Component.tag
Object.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.name
Object.hideFlags

Properties

MovementOrder

The pet's movement order as this peer currently understands it.

public PetMovementOrder MovementOrder { get; set; }

Property Value

PetMovementOrder

OnPetDismissTriggers

Triggers invoked when a pet is dismissed or destroyed.

public List<Trigger> OnPetDismissTriggers { get; }

Property Value

List<Trigger>

OnPetSummonTriggers

Triggers invoked when a pet is summoned.

public List<Trigger> OnPetSummonTriggers { get; }

Property Value

List<Trigger>

Pet

The pet instance managed by this controller.

public Pet Pet { get; set; }

Property Value

Pet

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

PetStance

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

msg PetAddBroadcast

The broadcast message containing the pet ID and orders.

channel Channel

The network channel.

OnClientPetMovementOrderBroadcastReceived(PetMovementOrderBroadcast, Channel)

Applies the server's authoritative movement order.

public void OnClientPetMovementOrderBroadcastReceived(PetMovementOrderBroadcast msg, Channel channel)

Parameters

msg PetMovementOrderBroadcast

The movement order broadcast.

channel Channel

The 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

msg PetRemoveBroadcast

The broadcast message for pet removal.

channel Channel

The 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

msg PetStanceBroadcast

The stance broadcast.

channel Channel

The 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

asServer bool

Whether 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

Action<IPetController, ICharacter>

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.