Data Structures | |
class | DeferredEvent |
class | DeferredSwapEntities |
class | DeferredHandEvent |
Variables | |
class DeferredEvent | m_src |
ref InventoryLocation | m_dst |
DeferredSwapEntities | m_item1 |
EntityAI | m_item2 |
ref InventoryLocation | m_dst1 |
ref InventoryLocation | m_dst2 |
ref HandEventBase | m_event |
m_DeferredEvent = NULL | |
ref Timer | m_DeferredWeaponTimer = new Timer |
protected ref HandEventBase | m_DeferredPostedHandEvent = NULL |
ref WeaponEventBase | m_DeferredWeaponEvent = NULL |
deferred hand event | |
protected ref HandAnimatedTakingFromAtt | m_Taking |
deferred weapon event | |
protected ref HandAnimatedMovingToAtt | m_MovingTo |
protected ref HandAnimatedSwapping | m_Swapping |
protected ref HandAnimatedForceSwapping | m_FSwapping |
protected ref HandAnimatedForceSwapping_Inst | m_FSwappingInst |
void AbortWeaponEvent | ( | ) |
References Class::CastTo(), GetDayZPlayerOwner(), LogManager::IsWeaponLogEnable(), and wpnDebugPrint().
Referenced by ManBase::OnCommandClimbStart(), ManBase::OnCommandDeathStart(), ManBase::OnCommandFallStart(), ManBase::OnCommandMelee2Start(), ManBase::OnCommandSwimStart(), ManBase::OnJumpStart(), and ManBase::OnStanceChange().
CancelHandEvent | ( | ) |
cancels any handevents that will be executed this frame @NOTE: this is used in situations where the player performs an action that renders the event invalid exactly on the frame it will be executed
References m_DeferredPostedHandEvent.
void CancelWeaponEvent | ( | ) |
References m_DeferredWeaponEvent, m_DeferredWeaponTimer, and Timer::Stop().
Referenced by DeferredWeaponFailed().
void CheckForRope | ( | InventoryLocation | src, |
InventoryLocation | dst | ||
) |
References InventoryLocation::GetItem().
Referenced by ValidateHandEvent(), and ValidateSyncMove().
override void ClearInventoryReservation | ( | HumanInventory | inventory | ) |
References GameInventory::ClearInventoryReservationEx(), InventoryLocation::GetItem(), and m_dst.
void DayZPlayerInventory | ( | ) |
void DeferredForceSwapEntities | ( | InventoryMode | mode, |
notnull EntityAI | item1, | ||
notnull EntityAI | item2, | ||
notnull InventoryLocation | dst1, | ||
notnull InventoryLocation | dst2 | ||
) |
References m_dst1, m_dst2, m_item1, and m_item2.
Referenced by HandleForceSwapEntities(), and PostDeferredForceSwapEntities().
void DeferredHandEvent | ( | InventoryMode | mode, |
HandEventBase | e | ||
) |
void DeferredTakeToDst | ( | InventoryMode | mode, |
notnull InventoryLocation | src, | ||
notnull InventoryLocation | dst | ||
) |
Referenced by HandleTakeToDst(), and PostDeferredEventTakeToDst().
void DeferredWeaponFailed | ( | ) |
References CancelWeaponEvent(), Class::CastTo(), WeaponEventBase::DumpToString(), Error(), and m_DeferredWeaponEvent.
void EnableMovableOverride | ( | EntityAI | item | ) |
Referenced by HandleHandEvent(), HandleSwapEntities(), HandleTakeToDst(), ValidateHandEvent(), ValidateSwap(), and ValidateSyncMove().
override bool ForceSwapEntities | ( | InventoryMode | mode, |
notnull EntityAI | item1, | ||
notnull EntityAI | item2, | ||
notnull InventoryLocation | item2_dst | ||
) |
DayZPlayer GetDayZPlayerOwner | ( | ) |
Referenced by AbortWeaponEvent(), ForceSwapEntities(), HandEvent(), HandleForceSwapEntities(), HandleHandEvent(), HandleInventory(), HandleSwapEntities(), HandleTakeToDst(), HandleWeaponEvents(), IsServerOrLocalPlayer(), NetSyncCurrentStateID(), OnAfterStoreLoad(), OnEventForRemoteWeapon(), OnHandleStoredInputUserData(), OnHandleStoredJunctureData(), OnHandsStateChanged(), OnInputUserDataForRemote(), OnInputUserDataProcess(), OnInventoryJunctureFromServer(), OnServerInventoryCommand(), PlayerCheckDropRequest(), PlayerCheckRequestDst(), PlayerCheckRequestSrc(), PlayerCheckSwapItemsRequest(), ProcessInputData(), StoreInputForRemotes(), SwapEntities(), SyncHandEventToRemote(), TakeToDst(), ValidateDestroy(), ValidateHandEvent(), ValidateSwap(), and ValidateSyncMove().
override bool HandEvent | ( | InventoryMode | mode, |
HandEventBase | e | ||
) |
Let the client know a failure happened
If singleplayer or the client is executing this
References HandEventBase::CanPerformEventEx(), GetDayZPlayerOwner(), HandEventBase::GetDst(), GetGame(), IsProcessing(), m_DeferredEvent, InventoryValidation::m_Reason, OnInventoryFailure(), InventoryInputUserData::SerializeHandEvent(), InventoryLocation::SetHands(), DayZPlayerSyncJunctures::SJ_INVENTORY_FAILURE, and Serializer::Write().
void HandleForceSwapEntities | ( | DeferredEvent | deferred_event | ) |
References GameInventory::c_InventoryReservationTimeoutShortMS, DeferredForceSwapEntities(), InventoryLocation::DumpToStringNullSafe(), Error(), GetDayZPlayerOwner(), GetGame(), CGame::GetPlayer(), inventoryDebugPrint(), Debug::InventoryMoveLog(), LogManager::IsInventoryMoveLogEnable(), InventoryInputUserData::SendInputUserDataSwap(), and ToString().
Referenced by HandleInventoryManipulation().
void HandleHandEvent | ( | DeferredEvent | deferred_event | ) |
Default structure suffices
References HandEventBase::CanPerformEventEx(), DeferredHandEvent::ClearInventoryReservation(), HandEventBase::DumpToString(), EnableMovableOverride(), Error(), GetDayZPlayerOwner(), HandEventBase::GetDst(), InventoryLocation::GetItem(), hndDebugPrint(), Debug::InventoryHFSMLog(), LogManager::IsInventoryHFSMLogEnable(), HandEventBase::IsServerSideOnly(), DeferredHandEvent::m_event, DeferredEvent::m_mode, DeferredHandEvent::ReserveInventory(), InventoryInputUserData::SendInputUserDataHandEvent(), InventoryInputUserData::SendServerHandEventViaInventoryCommand(), SendServerHandEventViaJuncture(), and ToString().
Referenced by HandleInventoryManipulation().
void HandleInventory | ( | float | dt | ) |
References Class::CastTo(), GetDayZPlayerOwner(), HumanCommandWeapons::GetRunningAction(), HumanCommandWeapons::GetRunningActionType(), HandAnimEventFactory(), hndDebugPrint(), hndDebugSpamALot(), HumanCommandWeapons::IsActionFinished(), HumanCommandWeapons::IsEvent(), LogManager::IsInventoryHFSMLogEnable(), SyncHandEventToRemote(), and WeaponActionTypeToString().
override void HandleInventoryManipulation | ( | ) |
void HandleSwapEntities | ( | DeferredEvent | deferred_event | ) |
References GameInventory::c_InventoryReservationTimeoutShortMS, DeferredSwapEntities::ClearInventoryReservation(), InventoryLocation::DumpToStringNullSafe(), EnableMovableOverride(), Error(), GetDayZPlayerOwner(), GetGame(), InventoryLocation::GetItem(), CGame::GetPlayer(), inventoryDebugPrint(), Debug::InventoryMoveLog(), LogManager::IsInventoryMoveLogEnable(), DeferredSwapEntities::m_dst1, DeferredSwapEntities::m_dst2, DeferredSwapEntities::m_item1, DeferredSwapEntities::m_item2, DeferredEvent::m_mode, GameInventory::MakeSrcAndDstForSwap(), InventoryInputUserData::SendInputUserDataSwap(), and ToString().
Referenced by HandleInventoryManipulation().
void HandleTakeToDst | ( | DeferredEvent | deferred_event | ) |
References GameInventory::c_InventoryReservationTimeoutShortMS, DeferredTakeToDst(), InventoryLocation::DumpToStringNullSafe(), EnableMovableOverride(), Error(), GetDayZPlayerOwner(), GetGame(), CGame::GetPlayer(), inventoryDebugPrint(), Debug::InventoryHFSMLog(), Debug::InventoryMoveLog(), LogManager::IsInventoryHFSMLogEnable(), LogManager::IsInventoryMoveLogEnable(), InventoryInputUserData::SendInputUserDataMove(), and ToString().
Referenced by HandleInventoryManipulation().
References Class::CastTo(), WeaponEventBase::DumpToString(), fsmDebugSpam(), GetDayZPlayerOwner(), HumanCommandWeapons::GetRunningAction(), HumanCommandWeapons::GetRunningActionType(), HumanCommandWeapons::IsActionFinished(), HumanCommandWeapons::IsEvent(), LogManager::IsWeaponLogEnable(), m_DeferredWeaponEvent, m_DeferredWeaponTimer, Timer::Stop(), WeaponActionTypeToString(), WeaponAnimEventFactory(), wpnDebugPrint(), and wpnDebugSpamALot().
override void Init | ( | ) |
Launched from 'DayZGame.DeferredInit' to make earlier access, use, and updates impossible (downside of a non-static system)
whole body slots
upper body part slots
bottom body part slots
lower body part slots
heat comfort related slots
pre-init arrays
References hndDebugPrint(), LogManager::IsInventoryHFSMLogEnable(), m_FSwapping, m_FSwappingInst, m_MovingTo, m_Swapping, and m_Taking.
bool IsAuthoritative | ( | ) |
References Class::CastTo().
bool IsOwner | ( | ) |
References Class::CastTo().
bool IsProcessing | ( | ) |
References m_DeferredEvent, and m_DeferredPostedHandEvent.
bool IsProxy | ( | ) |
References Class::CastTo().
bool IsServerOrLocalPlayer | ( | ) |
References GetDayZPlayerOwner(), GetGame(), GetInstanceType(), and CGame::GetPlayer().
bool MoveCheckExclusionMaskLocal | ( | notnull InventoryLocation | src, |
notnull InventoryLocation | dst | ||
) |
Local, checks only stuff that is in guaranteed sync.
Referenced by ValidateSyncMove().
override void NetSyncCurrentStateID | ( | int | id | ) |
References GetDayZPlayerOwner(), and DayZPlayer::OnItemInHandsChanged().
override void OnAfterStoreLoad | ( | ) |
References GetDayZPlayerOwner(), and DayZPlayer::OnItemInHandsChanged().
bool OnEventForRemoteWeapon | ( | ParamsReadContext | ctx | ) |
bool OnHandEventForRemote | ( | ParamsReadContext | ctx | ) |
References hndDebugSpam(), and LogManager::IsInventoryHFSMLogEnable().
protected void OnHandleStoredInputUserData | ( | ParamsReadContext | ctx | ) |
protected void OnHandleStoredJunctureData | ( | ParamsReadContext | ctx | ) |
Juncture is only ever Server Req->Client Ack and Perform->Server Perform, never remote
References GetDayZPlayerOwner(), LogManager::IsSyncLogEnable(), ProcessInputData(), Serializer::Read(), and syncDebugPrint().
override void OnHandsEnteredStableState | ( | HandStateBase | src, |
HandStateBase | dst | ||
) |
References hndDebugPrint(), and LogManager::IsInventoryHFSMLogEnable().
Referenced by OnHandsStateChanged().
override void OnHandsExitedStableState | ( | HandStateBase | src, |
HandStateBase | dst | ||
) |
References hndDebugPrint(), and LogManager::IsInventoryHFSMLogEnable().
Referenced by OnHandsStateChanged().
override void OnHandsStateChanged | ( | HandStateBase | src, |
HandStateBase | dst | ||
) |
void OnInputUserDataForRemote | ( | ParamsReadContext | ctx | ) |
References GetDayZPlayerOwner(), LogManager::IsSyncLogEnable(), ProcessInputData(), and syncDebugPrint().
override bool OnInputUserDataProcess | ( | ParamsReadContext | ctx | ) |
References GetDayZPlayerOwner(), LogManager::IsSyncLogEnable(), StoreInputUserData(), and syncDebugPrint().
override void OnInventoryFailure | ( | InventoryCommandType | type, |
InventoryValidationReason | reason, | ||
InventoryLocation | src, | ||
InventoryLocation | dst | ||
) |
TODO(kumarjac): Notify player here
Referenced by HandEvent(), and OnInventoryJunctureFailureFromServer().
override void OnInventoryJunctureFailureFromServer | ( | ParamsReadContext | ctx | ) |
Function and setup is still messy due to the switch statement and relation with reading.
It could be cleaner if we used classes to handle each inventory command type, but that comes at a performance cost and will also probably require making a fair amount of changes elsewhere.
The downsides with this system right now:
The new changes at least remove the massive switch block and allow for all inventory commands to respond back to the client if something goes wrong
References HandEventBase::ClearInventoryReservation(), HandEventBase::GetDst(), GetGame(), InventoryLocation::GetItem(), INPUT_UDT_INVENTORY, OnInventoryFailure(), Serializer::Read(), and InventoryLocation::ReadFromContext().
override bool OnInventoryJunctureFromServer | ( | ParamsReadContext | ctx | ) |
override bool OnInventoryJunctureRepairFromServer | ( | ParamsReadContext | ctx | ) |
override void OnServerInventoryCommand | ( | ParamsReadContext | ctx | ) |
References GetDayZPlayerOwner(), LogManager::IsSyncLogEnable(), ProcessInputData(), and syncDebugPrint().
bool PlayerCheckDropRequest | ( | notnull InventoryLocation | src, |
float | radius | ||
) |
References GetDayZPlayerOwner().
Referenced by ValidateDestroy().
bool PlayerCheckRequestDst | ( | notnull InventoryLocation | src, |
notnull InventoryLocation | dst, | ||
float | radius | ||
) |
References GetDayZPlayerOwner().
Referenced by ValidateSyncMove().
bool PlayerCheckRequestSrc | ( | notnull InventoryLocation | src, |
float | radius | ||
) |
References CheckRequestSrc(), and GetDayZPlayerOwner().
Referenced by ValidateDestroy(), ValidateSwap(), and ValidateSyncMove().
bool PlayerCheckSwapItemsRequest | ( | notnull InventoryLocation | src1, |
notnull InventoryLocation | src2, | ||
notnull InventoryLocation | dst1, | ||
notnull InventoryLocation | dst2, | ||
float | radius | ||
) |
References GameInventory::c_MaxItemDistanceRadius, and GetDayZPlayerOwner().
Referenced by ValidateSwap().
override bool PostDeferredEventTakeToDst | ( | InventoryMode | mode, |
notnull InventoryLocation | src, | ||
notnull InventoryLocation | dst | ||
) |
References DeferredTakeToDst(), and m_DeferredEvent.
Referenced by TakeToDst().
override bool PostDeferredForceSwapEntities | ( | InventoryMode | mode, |
notnull EntityAI | item1, | ||
notnull EntityAI | item2, | ||
notnull InventoryLocation | dst1, | ||
notnull InventoryLocation | dst2 | ||
) |
References DeferredForceSwapEntities(), and m_DeferredEvent.
Referenced by ForceSwapEntities(), and SwapEntities().
void PostWeaponEvent | ( | WeaponEventBase | e | ) |
bool ProcessInputData | ( | ParamsReadContext | ctx, |
bool | isJuncture, | ||
bool | isRemote | ||
) |
It should be impossible for juncture to be ran on remote
Serializer can be updated and re-written to when we may want to only correct the client instead of denying the inventory command
Only inform client about failure
General purpose serializer change from read to write here if the validation doesn't update it
Only send juncture back to client
References Serializer::CanWrite(), ScriptInputUserData::CopyFrom(), Error(), GetDayZPlayerOwner(), InventoryValidation::m_IsJuncture, InventoryValidation::m_IsRemote, InventoryValidation::m_Reason, InventoryValidation::m_Result, Serializer::Read(), DayZPlayerSyncJunctures::SJ_INVENTORY, DayZPlayerSyncJunctures::SJ_INVENTORY_FAILURE, StoreInputForRemotes(), ValidateHandEvent(), ValidateSwap(), ValidateSyncMove(), and Serializer::Write().
Referenced by OnHandleStoredInputUserData(), OnHandleStoredJunctureData(), OnInputUserDataForRemote(), and OnServerInventoryCommand().
void RemoveMovableOverride | ( | EntityAI | item | ) |
Referenced by ValidateHandEvent(), ValidateSwap(), and ValidateSyncMove().
override bool ReserveInventory | ( | HumanInventory | inventory | ) |
|
static |
Remote inputs are processed in sync juncture once performed on the server - this code below was executing the inventory command before the player simulation timeestamp for remotes which is illegal
References GameInventory::c_InventoryReservationTimeoutMS, HandEventBase::DumpToString(), InventoryLocation::DumpToStringNullSafe(), Error(), HandEventBase::GetDst(), GetGame(), InventoryLocation::GetItem(), InventoryLocation::GetParent(), HandEventBase::IsServerSideOnly(), LogManager::IsSyncLogEnable(), InventoryLocation::IsValid(), InventoryInputUserData::SerializeHandEvent(), DayZPlayerSyncJunctures::SJ_INVENTORY, and syncDebugPrint().
Referenced by HandleHandEvent().
bool StoreInputForRemotes | ( | bool | handling_juncture, |
bool | remote, | ||
ParamsReadContext | ctx | ||
) |
proto native void StoreInputUserData | ( | ParamsReadContext | ctx | ) |
Referenced by OnInputUserDataProcess().
proto native void StoreJunctureData | ( | ParamsReadContext | ctx | ) |
Referenced by OnInventoryJunctureFromServer().
bool SwapCheckExclusionMaskLocal | ( | notnull InventoryLocation | src1, |
notnull InventoryLocation | src2, | ||
notnull InventoryLocation | dst1, | ||
notnull InventoryLocation | dst2 | ||
) |
Local, checks only stuff that is in guaranteed sync.
Referenced by ValidateSwap().
override bool SwapEntities | ( | InventoryMode | mode, |
notnull EntityAI | item1, | ||
notnull EntityAI | item2 | ||
) |
void SyncHandEventToRemote | ( | HandEventBase | e | ) |
override bool TakeToDst | ( | InventoryMode | mode, |
notnull InventoryLocation | src, | ||
notnull InventoryLocation | dst | ||
) |
Remote inputs are processed in sync juncture once performed on the server - this code below was executing the inventory command before the player simulation timeestamp for remotes which is illegal
References GameInventory::c_InventoryReservationTimeoutMS, InventoryLocation::DumpToStringNullSafe(), GetDayZPlayerOwner(), GetGame(), Debug::InventoryMoveLog(), LogManager::IsInventoryMoveLogEnable(), LogManager::IsSyncLogEnable(), PostDeferredEventTakeToDst(), InventoryInputUserData::SerializeMove(), DayZPlayerSyncJunctures::SJ_INVENTORY, syncDebugPrint(), and ToString().
Referenced by EntityAI::PredictiveMoveItemFromHandsToInventory().
bool ValidateDestroy | ( | inout Serializer | ctx, |
InventoryValidation | validation | ||
) |
DEPRECATED.
TODO(kumarjac): Probably should be called through inventory juncture, we shouldn't allow the client to delete until the server says it is okay as there can be more reasons than "cheater" for it to be rejected such as desync
Do not check for action validity on remotes or when performing through juncture. Juncture locks guarentee the item is safe to interact with and the server has validated the command at this point. Checking at this point is both wasteful and can result in a failure which leads to desync
Do not check for action validity on remotes or when performing through juncture. Juncture locks guarentee the item is safe to interact with and the server has validated the command at this point. Checking at this point is both wasteful and can result in a failure which leads to desync
References GameInventory::c_MaxItemDistanceRadius, InventoryLocation::DumpToStringNullSafe(), Error(), GetDayZPlayerOwner(), GetGame(), InventoryLocation::GetItem(), Debug::InventoryMoveLog(), LogManager::IsInventoryMoveLogEnable(), InventoryValidation::m_IsJuncture, InventoryValidation::m_IsRemote, InventoryValidation::m_Result, CGame::ObjectDelete(), PlayerCheckDropRequest(), PlayerCheckRequestSrc(), InventoryLocation::ReadFromContext(), and ToString().
bool ValidateHandEvent | ( | inout Serializer | ctx, |
InventoryValidation | validation | ||
) |
Pass partial information to guards so guards can do minimal checks if needed The guards can't prevent event so it would be incorrect to pass full InventoryValidation struct. We have to make sure guards don't inadvertantly produce different results in the FSM as that will create desync (two players attempting to put a rag into the same fireplace slot at the same time)
kumarjac: This indicates a failure in replication relationships as player full inventory should be synchronized always if player exists on the remote
TODO(kumarjac): Is this one correct to be 'RemoveMovableOverride' or are the other Validate methdos wrong with 'EnableMovableOverride'?
Do not check for action validity on remotes or when performing through juncture. Juncture locks guarentee the item is safe to interact with and the server has validated the command at this point. Checking at this point is both wasteful and can result in a failure which leads to desync
'HandEventBase.CheckRequestEx' updates failure reason
if it already happened on server, remote just needs to comply TODO(kumarjac): Move m_IsRemote check to inside of HandEventBase.CanPerformEventEx
'HandEventBase.CanPerformEventEx' updates failure reason
Check if this this is being executed on the server and not by a juncture or AI
Continuing on with execution of rest of the function
Is called twice unfortunately... but it works so won't change
TODO(kumarjac): We should probably set the result to failure like so
References HandEventBase::AcquireInventoryJunctureFromServer(), HandEventBase::CanPerformEventEx(), CheckForRope(), HandEventBase::CheckRequestSrc(), HandEventBase::ClearInventoryReservation(), InventoryLocation::Copy(), HandEventBase::DumpToString(), EnableMovableOverride(), Error(), GetDayZPlayerOwner(), HandEventBase::GetDst(), GetInstanceType(), HandEventBase::GetSecondSrcEntity(), Debug::InventoryMoveLog(), LogManager::IsInventoryMoveLogEnable(), LogManager::IsSyncLogEnable(), InventoryValidation::m_IsJuncture, InventoryValidation::m_IsRemote, InventoryValidation::m_Reason, InventoryValidation::m_Result, RemoveMovableOverride(), InventoryInputUserData::SerializeHandEvent(), and syncDebugPrint().
Referenced by ProcessInputData().
bool ValidateSwap | ( | inout Serializer | ctx, |
InventoryValidation | validation | ||
) |
kumarjac: This indicates a failure in replication relationships as player full inventory should be synchronized always if player exists on the remote
Do not check for action validity on remotes or when performing through juncture. Juncture locks guarentee the item is safe to interact with and the server has validated the command at this point. Checking at this point is both wasteful and can result in a failure which leads to desync
Do not check for action validity on remotes or when performing through juncture. Juncture locks guarentee the item is safe to interact with and the server has validated the command at this point. Checking at this point is both wasteful and can result in a failure which leads to desync
Do not check for action validity on remotes or when performing through juncture. Juncture locks guarentee the item is safe to interact with and the server has validated the command at this point. Checking at this point is both wasteful and can result in a failure which leads to desync
Do not check for action validity on remotes or when performing through juncture. Juncture locks guarentee the item is safe to interact with and the server has validated the command at this point. Checking at this point is both wasteful and can result in a failure which leads to desync
Check if this this is being executed on the server and not by a juncture or AI
Continuing on with execution of rest of the function
References GameInventory::c_InventoryReservationTimeoutShortMS, GameInventory::c_MaxItemDistanceRadius, GameInventory::CanForceSwapEntitiesEx(), CGame::ClearJunctureEx(), InventoryLocation::DumpToStringNullSafe(), EnableMovableOverride(), Error(), GetDayZPlayerOwner(), GetGame(), GetInstanceType(), InventoryLocation::GetItem(), Debug::InventoryMoveLog(), LogManager::IsInventoryMoveLogEnable(), LogManager::IsSyncLogEnable(), InventoryLocation::IsValid(), InventoryValidation::m_IsJuncture, InventoryValidation::m_IsRemote, InventoryValidation::m_Reason, InventoryValidation::m_Result, PlayerCheckRequestSrc(), PlayerCheckSwapItemsRequest(), InventoryLocation::ReadFromContext(), RemoveMovableOverride(), InventoryInputUserData::SerializeSwap(), SwapCheckExclusionMaskLocal(), syncDebugPrint(), ToString(), and TryAcquireTwoInventoryJuncturesFromServer().
Referenced by ProcessInputData().
bool ValidateSyncMove | ( | inout Serializer | ctx, |
InventoryValidation | validation | ||
) |
kumarjac: This indicates a failure in replication relationships as player full inventory should be synchronized always if player exists on the remote
Do not check for action validity on remotes or when performing through juncture. Juncture locks guarentee the item is safe to interact with and the server has validated the command at this point. Checking at this point is both wasteful and can result in a failure which leads to desync
kumarjac: This indicates a failure in replication relationships as player full inventory should be synchronized always if player exists on the remote
Do not check for action validity on remotes or when performing through juncture. Juncture locks guarentee the item is safe to interact with and the server has validated the command at this point. Checking at this point is both wasteful and can result in a failure which leads to desync
Check if this this is being executed on the server and not by a juncture or AI so we can lock the item and ensure replication relationships are setup
TODO(kumarjac): We should continue with the execution and not have this special block but making a change here now will require testing
Is called twice unfortunately...
Do not check for action validity on remotes or when performing through juncture. Juncture locks guarentee the item is safe to interact with and the server has validated the command at this point. Checking at this point is both wasteful and can result in a failure which leads to desync
References GameInventory::c_MaxItemDistanceRadius, CheckForRope(), InventoryLocation::DumpToStringNullSafe(), EnableMovableOverride(), Error(), GetDayZPlayerOwner(), GetGame(), GetInstanceType(), InventoryLocation::GetItem(), GetTime(), Debug::InventoryMoveLog(), LogManager::IsInventoryMoveLogEnable(), LogManager::IsSyncLogEnable(), GameInventory::LocationCanMoveEntity(), GameInventory::LocationCanMoveEntitySyncCheck(), InventoryValidation::m_IsJuncture, InventoryValidation::m_IsRemote, InventoryValidation::m_Reason, InventoryValidation::m_Result, MoveCheckExclusionMaskLocal(), PlayerCheckRequestDst(), PlayerCheckRequestSrc(), InventoryLocation::ReadFromContext(), RemoveMovableOverride(), syncDebugPrint(), ToString(), and TryAcquireInventoryJunctureFromServer().
Referenced by ProcessInputData().
m_DeferredEvent = NULL |
protected ref HandEventBase m_DeferredPostedHandEvent = NULL |
Referenced by CancelHandEvent(), and IsProcessing().
ref WeaponEventBase m_DeferredWeaponEvent = NULL |
deferred hand event
Referenced by CancelWeaponEvent(), DeferredWeaponFailed(), HandleWeaponEvents(), and PostWeaponEvent().
Referenced by CancelWeaponEvent(), and HandleWeaponEvents().
ref InventoryLocation m_dst |
Referenced by ClearInventoryReservation(), DeferredTakeToDst(), WeaponStateBase::LoadCurrentFSMState(), WeaponStateBase::OnAbort(), WeaponStateBase::OnEntry(), WeaponStateBase::OnExit(), WeaponEventBase::ReadFromContext(), ReserveInventory(), WeaponStateBase::SaveCurrentFSMState(), WeaponEventBase::WeaponEventDetachMagazine(), WeaponEventBase::WeaponEventSwapMagazine(), and WeaponEventBase::WriteToContext().
ref InventoryLocation m_dst1 |
Referenced by DeferredForceSwapEntities().
ref InventoryLocation m_dst2 |
Referenced by DeferredForceSwapEntities().
ref HandEventBase m_event |
protected ref HandAnimatedForceSwapping m_FSwapping |
Referenced by Init().
protected ref HandAnimatedForceSwapping_Inst m_FSwappingInst |
Referenced by Init().
DeferredSwapEntities m_item1 |
Referenced by DeferredForceSwapEntities().
EntityAI m_item2 |
Referenced by DeferredForceSwapEntities().
protected ref HandAnimatedMovingToAtt m_MovingTo |
Referenced by Init().
class DeferredEvent m_src |
Referenced by DeferredTakeToDst().
protected ref HandAnimatedSwapping m_Swapping |
Referenced by Init().
protected ref HandAnimatedTakingFromAtt m_Taking |
deferred weapon event
Referenced by Init().