@startuml namespace Core { class Character { -NetworkCharacter _networkCharacter +CharacterStatus Status +CharacterRenderer Renderer <<readonly>> +CharacterInput Input <<readonly>> +bool IsConnectedNetwork <<readonly>> +bool IsMine <<readonly>> +Player NetworkPlayer <<readonly>> +int ViewID <<readonly>> +Vector3 HeadUpOffset <<readonly>> +Action OnStatusLoaded +Action<Item> OnPickupItem +Action RemoveHoldingItem +Action<Vector3> OnRespawn +AddHealth(float health) +AddStamina(float health) +TakeDamage(int attackerViewId, float damage) +PickupItem(int itemViewId) +ThrowItem() +ConsumeItem() +DiscardItem() +GenerateFootprint(Vector3 generatePos, bool flipX, float lifeTime = 0.0f) +GenerateSoundWave(Vector3 generatePos, float duration) -OnRespawned(Vector3 pos) } Character --> Core.CharacterInput Character --> Core.CharacterStatus Character --> Graphics.CharacterRenderer note left of Character::Status This member is property and will be set when the character spawned and call OnStatusLoaded. end note class CharacterInput { +InputReader InputReader -GameCamera _gameCamera -Vector2 _mouseScreenPosition -Vector2 _moveDirection +bool InputRun <<readonly>> +bool InputCrouch <<readonly>> +Action OnAttack +Action Aiming +Action OnThrowItem +Action OnConsumeItem +Action OnDiscardItem +Vector3 GetMouseWorldPosition() +Vector2 GetMoveDirectionInput() -OnPointInput(Vector2 mousePosition) -OnMovementInput(Vector2 direction) -OnRunInput() -OnRunCanceledInput() -OnCrouchInput() -OnCrouchCanceledInput() -OnAttackInput() -OnAimingInput() -OnThrowInput() -OnConsumeInput() -OnDiscardInput() } note left of CharacterInput::InputReader InputReader is ScriptableObject so you can find on "Resources/ScriptableObjects/Input/InputReaderSO" end note class CharacterRotator { -Character _character -UpdateViewAngle() } CharacterRotator --> Character class NetworkCharacter { -CharacterStatus _status +Player Owner -VoidEventChannelSO _enteredHideState -VoidEventChannelSO _exitedHideState +TakeDamage(int attackerViewID, float damage) +PickupItem(int itemViewId) +ThrowItem(Vector3 thrownPosition) +ConsumeItem() +DiscardItem() +GenerateFootprint(Vector3 generatePos, bool flipX, float lifeTime = 0.0f) +GenerateSoundWave(Vector3 generatePos, float duration) -RPC_TakeDamage(int attackerViewID, float damage) -RPC_PickUpItem(int pickedUpCharacterViewId, int itemViewId) -RPC_ThrowItem(int throwerViewId, Vector3 thrownPosition) -RPC_ConsumeItem(int consumerViewId) -RPC_DiscardItem(int discarderViewId) -RPC_GenerateFootprint(string className, string skinName, Vector3 generatePos, float angle, bool flipX, float lifeTime) -RPC_GenerateSoundWave(Vector3 generatePos, float duration) -OnEnteredHideState() -OnExitedHideState() +OnPhotonInstantiate(PhotonMessageInfo info) +OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) } NetworkCharacter --> CharacterStatus NetworkCharacter --|> MonoBehaviourPun } @enduml
Decode URL
Submit
amiga
aws-orange
black-knight
bluegray
blueprint
cerulean-outline
cerulean
crt-amber
crt-green
cyborg-outline
cyborg
hacker
lightgray
mars
materia-outline
materia
metal
mimeograph
minty
plain
reddress-darkblue
reddress-darkgreen
reddress-darkorange
reddress-darkred
reddress-lightblue
reddress-lightgreen
reddress-lightorange
reddress-lightred
sandstone
silver
sketchy-outline
sketchy
spacelab
spacelab-white
superhero-outline
superhero
toy
united
vibrant
🎉 Discover the future PlantUML Web Editor! 🚀
PNG
SVG
ASCII Art