public override Int3 SlideByObstacles(Int3 from, Int3 to, Int3 hit) { Int groundY; bool collidered; Int3 delta = NavMeshUtility.Move(from, to - from, out groundY, out collidered); return(from + delta); }
private Vector3 GetMarkerPositionBySlotNew(int slot, bool secondary) { if (PartyInteractionPointsIsNull() || slot < 0) { return(base.transform.position); } if (slot >= 5) { if (PartyInteractionPoints.Length - 1 < slot) { Array.Resize(ref PartyInteractionPoints, slot + 1); } if (PartyInteractionPoints[slot] == null) { PartyInteractionPoints[slot] = new GameObject().transform; } else { return(PartyInteractionPoints[slot].transform.position); } var neighbor = PartyInteractionPoints[slot - 1] ?? PartyInteractionPoints[0]; var position = neighbor.transform.position + Vector3.right; var rotation = neighbor.transform.rotation; PartyInteractionPoints[slot].transform.SetPositionAndRotation(position, rotation); } if (slot >= PartyInteractionPoints.Length) { return(base.transform.position); } if (secondary) { Vector3 hitPosition = PartyInteractionPoints[slot].position + PartyInteractionPoints[slot].right; Vector3 origin = hitPosition + Vector3.up * 2f; RaycastHit result; if (GameUtilities.Raycast(origin, Vector3.down, out result, float.PositiveInfinity, LayerUtility.WalkableLayersMask)) { hitPosition = result.point; } NavMeshUtility.SamplePosition(hitPosition, out hitPosition, 5f, NavMeshUtility.WalkableAreasMask); return(hitPosition); } return(PartyInteractionPoints[slot].position); }