private void AddToStockpile() { var targetGameObject = NPCUtils.GetTargetGameObject(Owner.Data.targetEntityId); if (targetGameObject != null && NPCUtils.IsTargetATeamStockpile(parentBehaviour.gameObject, targetGameObject)) { var resourcesToAdd = inventory.Data.resources; SpatialOS.Commands.SendCommand(inventory, StockpileDepository.Commands.AddResource.Descriptor, new AddResource(resourcesToAdd), Owner.Data.targetEntityId, response => OnStockpileResponse(response, resourcesToAdd)); } else { Owner.TriggerTransition(LumberjackFSMState.StateEnum.IDLE, new EntityId(), SimulationSettings.InvalidPosition); } }
private void AttemptInteractionWithTarget() { var targetGameObject = NPCUtils.GetTargetGameObject(Owner.Data.targetEntityId); if (targetGameObject == null) { Owner.TriggerTransition(LumberjackFSMState.StateEnum.IDLE, new EntityId(), SimulationSettings.InvalidPosition); return; } if (NPCUtils.IsTargetAHealthyTree(parentBehaviour.gameObject, targetGameObject) && NPCUtils.IsWithinInteractionRange(parentBehaviour.transform.position, targetGameObject.transform.position, SimulationSettings.NPCDefaultInteractionSqrDistance)) { Owner.TriggerTransition(LumberjackFSMState.StateEnum.HARVESTING, Owner.Data.targetEntityId, SimulationSettings.InvalidPosition); return; } if (NPCUtils.IsTargetATeamStockpile(parentBehaviour.gameObject, targetGameObject) && NPCUtils.IsWithinInteractionRange(parentBehaviour.transform.position, targetGameObject.transform.position, SimulationSettings.NPCDefaultInteractionSqrDistance)) { Owner.TriggerTransition(LumberjackFSMState.StateEnum.STOCKPILING, Owner.Data.targetEntityId, SimulationSettings.InvalidPosition); return; } Owner.TriggerTransition(LumberjackFSMState.StateEnum.IDLE, new EntityId(), SimulationSettings.InvalidPosition); }