private static Vector3 getClosestPointOnSurfaceBox(BoxCollider box, Vector3 point) { bool flag; Vector3 vector = Moba_Camera_Boundaries.calBoxRelations(box, point, true, out flag); return(box.transform.position + box.transform.forward * vector.z + box.transform.right * vector.x + box.transform.up * vector.y); }
private void CalculateCameraBoundaries() { if (this.settings.useBoundaries && !((!this.inputs.useKeyCodeInputs) ? Input.GetButton(this.inputs.axis.button_camera_move_right) : Input.GetKey(this.inputs.keycodes.CameraMoveRight)) && !Moba_Camera_Boundaries.isPointInBoundary(this.requirements.pivot.position)) { Moba_Camera_Boundary closestBoundary = Moba_Camera_Boundaries.GetClosestBoundary(this.requirements.pivot.position); if (closestBoundary != null) { this.requirements.pivot.position = Moba_Camera_Boundaries.GetClosestPointOnBoundary(closestBoundary, this.requirements.pivot.position); } } }
private void Start() { Moba_Camera_Boundaries.AddBoundary(this, this.type); if (LayerMask.NameToLayer(Moba_Camera_Boundaries.boundaryLayer) != -1) { base.gameObject.layer = LayerMask.NameToLayer(Moba_Camera_Boundaries.boundaryLayer); } else { Moba_Camera_Boundaries.SetBoundaryLayerExist(false); base.GetComponent <Collider>().isTrigger = true; } }
// Use this for initialization void Start() { // Adds this boundary to the list of boundaries Moba_Camera_Boundaries.AddBoundary(this, type); if (LayerMask.NameToLayer(Moba_Camera_Boundaries.boundaryLayer) != -1) { this.gameObject.layer = LayerMask.NameToLayer(Moba_Camera_Boundaries.boundaryLayer); } else { Moba_Camera_Boundaries.SetBoundaryLayerExist(false); collider.isTrigger = true; } }
void CalculateCameraBoundaries() { if(settings.useBoundaries && ! ((inputs.useKeyCodeInputs)? (Input.GetKey(inputs.keycodes.CameraMoveRight)): (Input.GetButton(inputs.axis.button_camera_move_right)))) { // check if the pivot is not in a boundary if(!Moba_Camera_Boundaries.isPointInBoundary(requirements.pivot.position)) { // Get the closet boundary to the pivot Moba_Camera_Boundary boundary = Moba_Camera_Boundaries.GetClosestBoundary(requirements.pivot.position); if(boundary != null) { // set the pivot's position to the closet point on the boundary requirements.pivot.position = Moba_Camera_Boundaries.GetClosestPointOnBoundary(boundary, requirements.pivot.position); } } } }
public static Vector3 GetClosestPointOnBoundary(Moba_Camera_Boundary boundary, Vector3 point) { Vector3 result = point; if (boundary.type == Moba_Camera_Boundaries.BoundaryType.cube) { BoxCollider component = boundary.GetComponent <BoxCollider>(); result = Moba_Camera_Boundaries.getClosestPointOnSurfaceBox(component, point); } else if (boundary.type == Moba_Camera_Boundaries.BoundaryType.sphere) { SphereCollider component2 = boundary.GetComponent <SphereCollider>(); Vector3 vector = boundary.transform.position + component2.center; float radius = component2.radius; result = vector + (point - vector).normalized * radius; } return(result); }
public static Moba_Camera_Boundary GetClosestBoundary(Vector3 point) { Moba_Camera_Boundary result = null; float num = 999999f; ListView <Moba_Camera_Boundary> .Enumerator enumerator = Moba_Camera_Boundaries.cube_boundaries.GetEnumerator(); while (enumerator.MoveNext()) { Moba_Camera_Boundary current = enumerator.get_Current(); if (!(current == null)) { if (current.isActive) { BoxCollider component = current.GetComponent <BoxCollider>(); Vector3 closestPointOnSurfaceBox = Moba_Camera_Boundaries.getClosestPointOnSurfaceBox(component, point); float magnitude = (point - closestPointOnSurfaceBox).magnitude; if (magnitude < num) { result = current; num = magnitude; } } } } ListView <Moba_Camera_Boundary> .Enumerator enumerator2 = Moba_Camera_Boundaries.sphere_boundaries.GetEnumerator(); while (enumerator2.MoveNext()) { Moba_Camera_Boundary current2 = enumerator2.get_Current(); if (current2.isActive) { SphereCollider component2 = current2.GetComponent <SphereCollider>(); Vector3 vector = current2.transform.position + component2.center; float radius = component2.radius; Vector3 b = vector + (point - vector).normalized * radius; float magnitude2 = (point - b).magnitude; if (magnitude2 < num) { result = current2; num = magnitude2; } } } return(result); }
public static bool isPointInBoundary(Vector3 point) { bool result = false; foreach (Moba_Camera_Boundary current in Moba_Camera_Boundaries.cube_boundaries) { if (current.isActive) { BoxCollider component = current.GetComponent <BoxCollider>(); if (component == null) { Debug.LogWarning("Boundary: " + current.name + "; Error: BoundaryType and Collider mismatch."); } else { bool flag; Moba_Camera_Boundaries.calBoxRelations(component, point, false, out flag); if (flag) { result = true; } } } } foreach (Moba_Camera_Boundary current2 in Moba_Camera_Boundaries.sphere_boundaries) { if (current2.isActive) { SphereCollider component2 = current2.GetComponent <SphereCollider>(); if (component2 == null) { Debug.LogWarning("Boundary: " + current2.name + "; Error: BoundaryType and Collider mismatch."); } else if ((current2.transform.position + component2.center - point).magnitude < component2.radius) { result = true; } } } return(result); }
public static bool isPointInBoundary(Vector3 point) { bool result = false; ListView <Moba_Camera_Boundary> .Enumerator enumerator = Moba_Camera_Boundaries.cube_boundaries.GetEnumerator(); while (enumerator.MoveNext()) { Moba_Camera_Boundary current = enumerator.get_Current(); if (current.isActive) { BoxCollider component = current.GetComponent <BoxCollider>(); if (!(component == null)) { bool flag; Moba_Camera_Boundaries.calBoxRelations(component, point, false, out flag); if (flag) { result = true; } } } } ListView <Moba_Camera_Boundary> .Enumerator enumerator2 = Moba_Camera_Boundaries.sphere_boundaries.GetEnumerator(); while (enumerator2.MoveNext()) { Moba_Camera_Boundary current2 = enumerator2.get_Current(); if (current2.isActive) { SphereCollider component2 = current2.GetComponent <SphereCollider>(); if (!(component2 == null)) { if ((current2.transform.position + component2.center - point).magnitude < component2.radius) { result = true; } } } } return(result); }
private void OnDestroy() { Moba_Camera_Boundaries.RemoveBoundary(this, this.type); }