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);
    }
示例#2
0
 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);
         }
     }
 }
示例#3
0
 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;
     }
 }
示例#5
0
	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);
    }
示例#8
0
    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);
    }
示例#10
0
 private void OnDestroy()
 {
     Moba_Camera_Boundaries.RemoveBoundary(this, this.type);
 }