Class CharacterCreateSystem
- Namespace
- FishMMO.Server.Implementation.LoginServer
- Assembly
- FishMMO.Server.dll
Manages character creation for player accounts, validates character data, and initializes starting equipment and abilities. All Unity object access (templates, prefabs) occurs on the main thread. Only database operations run asynchronously. Broadcast replies are marshalled back to the main thread via a thread-safe queue drained in OnLateUpdate.
[CreateAssetMenu(fileName = "CharacterCreateSystem", menuName = "FishMMO/Server/LoginServer/Character Create System", order = 1)]
[RequiresDataContainer(typeof(CharacterCreateSystemMainThreadQueueData))]
[RequiresDataContainer(typeof(CharacterCreateSystemRuntimeData))]
[RequiresDataContainer(typeof(AsyncWorkerData))]
public class CharacterCreateSystem : ServerBehaviour, IServerBehaviour<INetworkManagerWrapper, ServerManager, NetworkConnection, IServerBehaviour>, IServerComponent<INetworkManagerWrapper, ServerManager, NetworkConnection, IServerBehaviour>, ICharacterCreateSystem, IServerBehaviour, IServerComponent
- Inheritance
-
ObjectScriptableObjectCharacterCreateSystem
- Implements
- Inherited Members
-
ScriptableObject.SetDirty()ScriptableObject.CreateInstance<T>()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.ToString()Object.nameObject.hideFlags
Properties
MaxCharacters
Gets the maximum number of characters allowed per account.
public int MaxCharacters { get; }
Property Value
StartingAbilityIDs
Read-only view of the starting ability template IDs for new characters.
public IReadOnlyList<int> StartingAbilityIDs { get; }
Property Value
StartingEquipmentIDs
Read-only view of the starting equipment template IDs for new characters.
public IReadOnlyList<int> StartingEquipmentIDs { get; }
Property Value
StartingInventoryItemIDs
Read-only view of the starting inventory item template IDs for new characters.
public IReadOnlyList<int> StartingInventoryItemIDs { get; }
Property Value
WorldSceneDetailsCache
Read-only access to the cached world scene details.
public WorldSceneDetailsCache WorldSceneDetailsCache { get; }
Property Value
Methods
InitializeOnce()
Initializes the character creation system, registering broadcast handlers for character creation requests.
public override ServerComponentInitializationStatus InitializeOnce()
Returns
OnDeinitialize()
Cleans up the character creation system, unregistering broadcast handlers for character creation requests. Drains remaining main-thread responses so clients get their final messages.
public override void OnDeinitialize()
OnRemoteConnectionStopped(NetworkConnection)
Releases per-connection in-flight create state when a client disconnects.
protected override void OnRemoteConnectionStopped(NetworkConnection conn)
Parameters
connNetworkConnection
OnUpdate(float)
Drains the main-thread response queue each frame. All network operations from async workers are marshalled through this queue to ensure they execute on the main Unity thread.
protected override void OnUpdate(float deltaTime)
Parameters
deltaTimefloatTime elapsed since last frame.