private void CompleteItemDrop(InventoryItemInstance itemInstance, InventoryItemModel itemModel, int quantity, ModalStatusCode status) { if (quantity == 0 || status != ModalStatusCode.Complete) { return; } GameState.Instance.PlayerRpgState.Inventory.RemoveItem(itemInstance, quantity); Transform playerT = WorldUtils.GetPlayerObject().transform; Vector3 dropPos = (playerT.position + (playerT.forward.normalized * 1.0f)); RpgWorldUtils.DropItem(itemModel, quantity, dropPos); SignalPaint(); }
private void Update() { if (PlayerController == null) { PlayerController = RpgWorldUtils.GetPlayerController(); } if (PlayerController == null) { return; //can't tether if there's nothing to tether to } switch (ActorController.CurrentAiState) { case ActorAiState.Idle: case ActorAiState.Wandering: //chase the player instead of remaining in either of these states if ((ActorController.transform.position - PlayerController.transform.position).magnitude > MinDistance && ActorController.Target == null) { UpdateMovementTarget(); ActorController.EnterState(ActorAiState.ScriptedMoveTo); } break; case ActorAiState.Chasing: //break off the chase if too far away if ((ActorController.transform.position - PlayerController.transform.position).magnitude > MaxDistance) { ActorController.Target = null; UpdateMovementTarget(); ActorController.EnterState(ActorAiState.ScriptedMoveTo); } break; case ActorAiState.ScriptedMoveTo: //update movement target //return AI to normal if close enough to player UpdateMovementTarget(); if ((ActorController.transform.position - PlayerController.transform.position).magnitude < FollowEndDistance) { ActorController.EnterState(ActorController.BaseAiState); } break; } }