Exemple #1
0
    private Vector3 NewWanderTarget(StateController controller)
    {
        Bounds territory       = controller.gameObject.GetComponent <Crab>().territory;
        float  wanderThreshold = 8;

        if (controller.GetComponent <Crab>().isTrained)
        {
            wanderThreshold = 2;
        }
        float wanderStep = 5;
        // Randomly select an angle between 45 and 135 degrees (but in radians)
        float   angle      = Random.Range(Mathf.PI / 4, Mathf.PI * 3 / 4);
        Vector3 tempTarget = new Vector3(controller.transform.position.x + Mathf.Cos(angle) * wanderStep, controller.transform.position.y, controller.transform.position.z + Mathf.Sin(angle) * wanderStep);

        int i = Random.Range(1, 4);

        if (!territory.Contains(tempTarget))
        {
            tempTarget = new Vector3(controller.transform.position.x + Mathf.Cos(angle + (Mathf.PI * i / 2)) * wanderStep, controller.transform.position.y, controller.transform.position.z + Mathf.Sin(angle + (Mathf.PI * i / 2)) * wanderStep);
            if (Vector3.Distance(tempTarget, territory.ClosestPoint(tempTarget)) > wanderThreshold)
            {
                tempTarget = territory.ClosestPoint(tempTarget);
            }
        }

        controller.target = tempTarget;
        return(controller.target);
    }
Exemple #2
0
            public static GameObject GetCloserHand(GameObject agent, GameObject obj)
            {
                GameObject leftGrasper  = agent.GetComponent <FullBodyBipedIK>().references.leftHand.gameObject;
                GameObject rightGrasper = agent.GetComponent <FullBodyBipedIK>().references.rightHand.gameObject;
                GameObject grasper;

                Bounds bounds = Helper.GetObjectWorldSize((obj as GameObject));

                // which hand is closer?
                float leftToGoalDist =
                    (leftGrasper.transform.position - bounds.ClosestPoint(leftGrasper.transform.position)).magnitude;
                float rightToGoalDist =
                    (rightGrasper.transform.position - bounds.ClosestPoint(rightGrasper.transform.position)).magnitude;

                if (leftToGoalDist < rightToGoalDist)
                {
                    grasper = leftGrasper;
                }
                else
                {
                    grasper = rightGrasper;
                }

                //			Debug.Log (grasper);
                return(grasper);
            }
Exemple #3
0
    /// <summary>
    /// must be called on initialization
    ///
    /// this must be called whenever an actors colder changes
    /// (including when an actor is scaled)
    /// </summary>
    private void updateEquipPoints()
    {
        Bounds  bounds      = collider.bounds;
        Vector3 centerPoint = bounds.center;
        float   offset      = 0.1f;

        equipPoint_Above = transform.InverseTransformPoint(bounds.ClosestPoint(centerPoint + new Vector3(0, 20f)) + new Vector3(0, offset));
        equipPoint_Right = transform.InverseTransformPoint(bounds.ClosestPoint(centerPoint + new Vector3(20f, 0)) + new Vector3(offset, 0));
        equipPoint_Below = transform.InverseTransformPoint(bounds.ClosestPoint(centerPoint + new Vector3(0, -20f)) + new Vector3(0, -offset));
        equipPoint_Left  = transform.InverseTransformPoint(bounds.ClosestPoint(centerPoint + new Vector3(-20f, 0)) + new Vector3(-offset, 0));

        equipPoint_OnTopOf = transform.InverseTransformPoint(centerPoint);
    }
    private void moveEditCameraTargetToDirectorPostion()
    {
        Vector3 position = director.DefaultTarget.position;

        if (boundsForCameraTarget.Contains(position))
        {
            EditCameraTarget.transform.position = position;
        }
        else
        {
            EditCameraTarget.transform.position = boundsForCameraTarget.ClosestPoint(position);
        }
    }
    private void Update()
    {
        for (int i = 0; i < rats.Length; i++)
        {
            if (rats[i].enabled)
            {
                rats[i].transform.position = Vector3.MoveTowards(
                    rats[i].transform.position, end[i],
                    timeManager.WorldDeltaTime * 5f);

                float dist = Vector3.Distance(rats[i].transform.position, end[i]);

                if (dist < 0.2f)
                {
                    rats[i].enabled = false;
                }
            }
            else
            {
                //once every n seconds
                const int n = 4;
                if (Random.value < timeManager.WorldDeltaTime / n)
                {
                    rats[i].enabled            = true;
                    rats[i].transform.position = bounds.ClosestPoint(
                        bounds.center +
                        (Random.insideUnitSphere - Random.insideUnitSphere).normalized
                        * bounds.size.magnitude);

                    //a vector pointing from the start to a random point in the bounds
                    Vector3 line = (rats[i].transform.position - bounds.center).normalized *
                                   bounds.size.magnitude + new Vector3(
                        bounds.extents.x * (Random.value - 0.5f),
                        0,
                        bounds.extents.z * (Random.value - 0.5f)) * 20;

                    end[i] = bounds.ClosestPoint(rats[i].transform.position + line);

                    line = rats[i].transform.position - end[i];

                    rats[i].transform.rotation = Quaternion.Euler(
                        rats[i].transform.rotation.eulerAngles.x,
                        (-Mathf.Atan2(line.z, line.x) * Mathf.Rad2Deg) + 90,
                        rats[i].transform.rotation.eulerAngles.z);

                    // rats[i].transform.rotation = Quaternion.LookRotation(line);
                }
            }
        }
    }
Exemple #6
0
 private bool MovingTowardsBounds()
 {
     if ((((Vector2)aiBase.transform.position + aiBase.aiMovement.direction) +
          (Vector2)playArea.ClosestPoint(aiBase.transform.position)).magnitude <
         ((Vector2)aiBase.transform.position +
          (Vector2)playArea.ClosestPoint(aiBase.transform.position)).magnitude)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
Exemple #7
0
 /// <summary>
 /// Unity callback. Called once per frame after all Update calls.
 /// </summary>
 void LateUpdate()
 {
     foreach (Transform child in transform)
     {
         child.localPosition = _bounds.ClosestPoint(child.localPosition);
     }
 }
    private void Move(BasicStateMachine controller)
    {
        Bounds b = controller.moveBounds.bounds;

        if (controller.moveToPoint == new Vector2(-999, -999))
        {
            float xpos = Random.Range(b.min.x, b.max.x);
            float ypos = Random.Range(b.min.y, b.max.y);
            controller.moveToPoint = new Vector2(xpos, ypos);
        }

        controller.movement = Vector2.MoveTowards(controller.thisTransform.position, controller.moveToPoint, controller.moveSpeed * Time.fixedDeltaTime);

        controller.movement = b.ClosestPoint(controller.movement);
        controller.rigidBody.MovePosition(controller.movement);

        if (controller.thisTransform.position.x < controller.moveToPoint.x)
        {
            controller.moveDirection = 1;
        }
        else
        {
            controller.moveDirection = -1;
        }
    }
Exemple #9
0
    /// <summary>
    /// Return objects that are within <paramref name="maxDistance"/> of the specified position.
    /// </summary>
    /// <param name="position">The position.</param>
    /// <param name="maxDistance">Maximum distance from the position to consider.</param>
    /// <param name="result">List result.</param>
    /// <returns>Objects within range.</returns>
    public void GetNearby(ref Vector3 position, float maxDistance, List <T> result)
    {
        // Does the node intersects with the sphere of center = position and radius = maxDistance?
        float sqrMaxDistance = maxDistance * maxDistance;

        if ((bounds.ClosestPoint(position) - position).sqrMagnitude > sqrMaxDistance)
        {
            return;
        }

        // Check against any objects in this node
        for (int i = 0; i < objects.Count; i++)
        {
            if ((position - objects[i].Pos).sqrMagnitude <= sqrMaxDistance)
            {
                result.Add(objects[i].Obj);
            }
        }

        // Check children
        if (children != null)
        {
            for (int i = 0; i < 8; i++)
            {
                children[i].GetNearby(ref position, maxDistance, result);
            }
        }
    }
    void FixedUpdate()
    {
        // If player input has said to accelerate on last Update(), accelerate.
        if (currentlyAccelerating)
        {
            // Calculate mass.
            float differentialEmittedMass = massSliderProgress * maxEmittedMassPerSecondFraction * _rigidbody.mass * Time.fixedDeltaTime;
            float newMass = _rigidbody.mass - differentialEmittedMass;

            // Add the emitted mass to the score.
            score += differentialEmittedMass;

            // Get mouse position to target.
            Vector3 targetDirection = GetMouseTargetDirection();

            // Calculate velocity.
            Vector3 newVelocity = (_rigidbody.mass * _rigidbody.velocity - differentialEmittedMass * targetDirection * emissionSpeed) / newMass;

            // Apply mass and velocity.
            _rigidbody.mass     = newMass;
            _rigidbody.velocity = newVelocity;
        }

        // If player is not in bounds, apply spring force to return player to bounds.
        if (!playerBounds.Contains(transform.position))
        {
            // Get normalized direction vector from player to closest point on bounds and scale by spring stiffness.
            Vector3 springForce = springStiffness * Vector3.Normalize(playerBounds.ClosestPoint(transform.position) - transform.position);
            _rigidbody.AddForce(springForce);
        }
    }
        // Update is called once per frame
        void LateUpdate()
        {
            Bounds bounds = BlobManager.OverallGooBounds;


            float screenRatio = Screen.width / (float)Screen.height;
            float largerSide  = Mathf.Max(bounds.size.x, bounds.size.z * screenRatio);

            float heightAbove = Mathf.Atan(_camera.fieldOfView * 0.5f) * largerSide;

            _transform.position = bounds.center + Vector3.up * heightAbove;
            _transform.rotation = Quaternion.LookRotation(bounds.center - transform.position, Vector3.forward);


            bounds.Encapsulate(Vector3.down);
            Vector3 near = bounds.ClosestPoint(_transform.position);
            Vector3 far  = bounds.center - (near - bounds.center);


            float nearPos = Vector3.Dot((near - transform.position), _transform.forward);
            float farPos  = Vector3.Dot((far - transform.position), _transform.forward);

            _camera.nearClipPlane = Mathf.Min(nearPos, farPos) - 1f;
            _camera.farClipPlane  = Mathf.Max(nearPos, farPos) + 1f;
        }
        // private
        private void OnUpdate(Vector3 cameraPosition)
        {
            // check if we need to populate or depopulate

            // TODO: manage populate/depopulate

            // get proper distance to the camera
            var boundsPoint = Bounds.ClosestPoint(cameraPosition);
            var distance    = Vector3.Distance(boundsPoint, cameraPosition);

            if (!IsPopulated && CanPopulate)
            {
                // try populate
                if (distance < Bounds.size.x * 2.0f)
                {
                    Populate();
                }
            }

            if (IsPopulated && CanDepopulate)
            {
                // try depopulate
                if (distance > Bounds.size.x * 2.25f + Size * 4.0f)
                {
                    Depopulate();
                }
            }
        }
Exemple #13
0
    public static bool IsHited(BoxCollider2D bulletCollider, BoxCollider2D fishCollider, out float x, out float y, out float z)
    {
        x = 0;
        y = 0;
        z = 0;
        bool bHited = false;

        if (bulletCollider == null || fishCollider == null)
        {
            return(bHited);
        }
        Bounds  bulletBounds      = bulletCollider.bounds;
        Vector3 target_old_center = fishCollider.bounds.center;

        Vector3 targetCenter      = new Vector3(target_old_center.x, target_old_center.y, bulletBounds.center.z);
        Bounds  target_new_bounds = new Bounds(targetCenter, fishCollider.bounds.size);

        bHited = bulletBounds.Intersects(target_new_bounds);

        Vector3 collision_pos = bulletBounds.ClosestPoint(targetCenter);

        collision_pos.z = bulletCollider.bounds.center.z;

        x = collision_pos.x;
        y = collision_pos.y;
        z = collision_pos.z;
        return(bHited);
    }
Exemple #14
0
    /// <summary>
    /// 获取一个滚动物体在区域内的位置。
    /// 如果物体不在区域内,则获取将物体以最短距离挪动到区域内后的位置
    /// </summary>
    public bool GetInAreaPosition(Vector3 objPos, ScrollObject obj, out Vector3 pos)
    {
        Vector3 min, max; Bounds2Local(objPos, obj.bounds, out min, out max);

        Vector3[] boundsVertexs = CalculateBoundsVertexs(min, max);
        if (LocalContains(Area, boundsVertexs))//滚动物体没有超出范围
        {
            pos = objPos;
            return(true);
        }

        //处理滚动物体超出范围的情况
        Vector3 moveDistance = Vector3.zero;

        foreach (Vector3 v in boundsVertexs)
        {
            if (!Area.Contains(v))                     //该点超出范围
            {
                Vector3 n      = Area.ClosestPoint(v); //将该点限制在范围内
                Vector3 offset = n - v;                //移动进包围盒偏移量
                if (Math.Abs(offset.x) > Math.Abs(moveDistance.x))
                {
                    moveDistance.x = offset.x;
                }
                //if (Math.Abs(offset.y) > Math.Abs(moveDistance.y)) moveDistance.y = offset.y;
                //if (Math.Abs(offset.z) > Math.Abs(moveDistance.z)) moveDistance.z = offset.z;
            }
        }
        pos = objPos + moveDistance;
        return(false);
    }
Exemple #15
0
        private void DoOriginEditing()
        {
            ReflectionProbe reflectionProbe = (ReflectionProbe)this.target;
            Vector3         position        = reflectionProbe.transform.position;
            Vector3         size            = reflectionProbe.size;
            Vector3         center          = reflectionProbe.center + position;

            EditorGUI.BeginChangeCheck();
            Vector3 vector = Handles.PositionHandle(position, Quaternion.identity);
            bool    flag   = EditorGUI.EndChangeCheck();

            if (!flag)
            {
                vector = position;
                flag   = ((this.m_OldTransformPosition - vector).magnitude > 1E-05f);
                if (flag)
                {
                    center = reflectionProbe.center + this.m_OldTransformPosition;
                }
            }
            if (flag)
            {
                Undo.RecordObject(reflectionProbe, "Modified Reflection Probe Origin");
                Bounds bounds = new Bounds(center, size);
                vector = bounds.ClosestPoint(vector);
                Vector3 vector2 = vector;
                reflectionProbe.transform.position = vector2;
                this.m_OldTransformPosition        = vector2;
                reflectionProbe.center             = bounds.center - vector;
                EditorUtility.SetDirty(this.target);
            }
        }
    void FixedUpdate()
    {
        foreach (GameObject asteroid in HelperFunctions.FindGameObjectsOnLayer("GravityObjects"))
        {
            Rigidbody asteroidRigidbody = asteroid.GetComponent <Rigidbody>();

            // Do asteroid bounds checking to reflect the velocity.
            if (!asteroidBounds.Contains(asteroid.transform.position))
            {
                // Get the required vectors for calculating reflection vector.
                Vector3 closestPoint     = asteroidBounds.ClosestPoint(asteroidRigidbody.position);
                Vector3 reflectionNormal = Vector3.Normalize(closestPoint - asteroidRigidbody.position);
                Vector3 direction        = Vector3.Normalize(asteroidRigidbody.velocity);

                // Set the position to the closestpoint on the bounds and the velocity to the dampened reflection.
                asteroidRigidbody.position = closestPoint;
                Vector3 reflection = 2 * Vector3.Dot(reflectionNormal, -direction) * reflectionNormal + direction;
                asteroidRigidbody.velocity = reflection * asteroidRigidbody.velocity.magnitude;
            }

            // Do player bounds checking and apply constant force.
            if (!cameraBounds.Contains(asteroid.transform.position))
            {
                Vector3 force = Time.fixedDeltaTime * asteroidRigidbody.mass * boundsForceMagnitude * Vector3.Normalize(cameraBounds.ClosestPoint(asteroidRigidbody.position) - asteroidRigidbody.position);
                asteroidRigidbody.AddForce(force);
            }
        }
    }
        private void DoOriginEditing()
        {
            ReflectionProbe target   = (ReflectionProbe)this.target;
            Vector3         position = target.transform.position;
            Vector3         size     = target.size;
            Vector3         center   = target.center + position;

            EditorGUI.BeginChangeCheck();
            Vector3 point = Handles.PositionHandle(position, Quaternion.identity);
            bool    flag  = EditorGUI.EndChangeCheck();

            if (!flag)
            {
                point = position;
                Vector3 vector5 = this.m_OldTransformPosition - point;
                flag = vector5.magnitude > 1E-05f;
                if (flag)
                {
                    center = target.center + this.m_OldTransformPosition;
                }
            }
            if (flag)
            {
                Undo.RecordObject(target, "Modified Reflection Probe Origin");
                Bounds bounds = new Bounds(center, size);
                point = bounds.ClosestPoint(point);
                Vector3 vector6 = point;
                target.transform.position   = vector6;
                this.m_OldTransformPosition = vector6;
                target.center = bounds.center - point;
                EditorUtility.SetDirty(this.target);
            }
        }
    void KeepInBlockBounds()
    {
        if (blockBounds == null)
        {
            return;
        }

        Bounds b = rollable.GetComponent <BoxCollider>().bounds;
        //b.size -= new Vector3(character.radius, 0, character.radius);

        Vector3 pos = transform.position;

        pos.y = b.center.y;

        Vector3 dirOfMovement = (pos - b.center).normalized;

        // are we in the block area
        if (b.Contains(pos) == false)
        {
            // are we in a walkable area?
            if (IsWalkable(pos) == false)
            {
                // snap into position
                pos = b.ClosestPoint(pos);
                Vector3 diff = pos - transform.position;
                diff.y = 0;

                MovePlayer(diff);
            }
        }
    }
Exemple #19
0
    public List <Vector4> Update(Vector3 viewerPositon)
    {
        var dist = Vector3.Distance(viewerPositon, bounds.ClosestPoint(viewerPositon));

        if (parentChunk != null)
        {
            var distParent = Vector3.Distance(viewerPositon, parentChunk.GetBounds().ClosestPoint(viewerPositon));

            if (distParent > parentChunk.GetScale() * chunkSize)
            {
                parentChunk.MergeChunk();
                return(positionsList);
            }
        }

        if (scale * chunkSize > dist)
        {
            SubDivide(viewerPositon);
        }

        else
        {
            positionsList.Clear();
            directionList.Clear();
            positionsList.Add(positionToDraw);
            directionList.Add(directionX);
        }

        return(positionsList);
    }
        void DoOriginEditing()
        {
            ReflectionProbe p = (ReflectionProbe)target;
            Vector3         transformPosition = p.transform.position;
            Vector3         size = p.size;

            EditorGUI.BeginChangeCheck();
            Vector3 newPostion = Handles.PositionHandle(transformPosition, GetLocalSpaceRotation(p));

            bool changed = EditorGUI.EndChangeCheck();

            if (changed || m_OldLocalSpace != GetLocalSpace((ReflectionProbe)target))
            {
                Vector3 localNewPosition = m_OldLocalSpace.inverse.MultiplyPoint3x4(newPostion);

                Bounds b = new Bounds(p.center, size);
                localNewPosition = b.ClosestPoint(localNewPosition);

                Undo.RecordObject(p.transform, "Modified Reflection Probe Origin");
                p.transform.position = m_OldLocalSpace.MultiplyPoint3x4(localNewPosition);

                Undo.RecordObject(p, "Modified Reflection Probe Origin");
                p.center = GetLocalSpace(p).inverse.MultiplyPoint3x4(m_OldLocalSpace.MultiplyPoint3x4(p.center));

                EditorUtility.SetDirty(target);

                UpdateOldLocalSpace();
            }
        }
    public void DamageText(int value, Vector3 damagePos, Bounds bounds)
    {
        CombatText text = GetText();


        text.position = bounds.ClosestPoint(damagePos);
        text.velocity = (bounds.center - damagePos).normalized * 300;
        text.drag     = 0.9f;

        text.transform.localPosition = Vector3.zero;

        text.uiText.color = damageColor;
        text.bounds       = bounds;

        text.worldSpace  = true;
        text.uiText.text = "" + value;

        text.uiText.font = damageFont;

        if (value < 300)
        {
            text.fadeSpeed       = 100;
            text.uiText.fontSize = (int)(30 * screenScale);
        }
        else
        {
            text.fadeSpeed       = 60;
            text.uiText.fontSize = (int)(40 * screenScale);
        }
    }
 private void Update()
 {
     if (!worldBounds.Contains(target.position))
     {
         target.position = worldBounds.ClosestPoint(target.position);
     }
 }
Exemple #23
0
    // Update is called once per frame
    void Update()
    {
        if (!active)
        {
            return;
        }

        foreach (Player p in ReInput.players.Players)
        {
            if (p.GetButtonDown("Cancel"))
            {
                manager.ChangeToScreen(GameSetupManager.Screen.TEAMSELECT);
            }
        }

        cursor.position += (Vector3)player.GetAxis2DRaw("Move Horizontal", "Move Vertical") * cursorSpeed;
        cursor.position  = menuBounds.ClosestPoint(cursor.position);

        if (player.GetButtonDown("Confirm"))
        {
            PointerEventData data = new PointerEventData(eventSystem);
            data.position = cursor.position;
            List <RaycastResult> results = new List <RaycastResult>();
            raycaster.Raycast(data, results);
            if (results.Count > 0)
            {
                LoadSceneButtonController sceneLoader = results[0].gameObject.GetComponent <LoadSceneButtonController>();
                if (sceneLoader)
                {
                    sceneLoader.LoadNewScene();
                }
            }
        }
    }
Exemple #24
0
        static void Handle_OriginEditing(HDReflectionProbeUI s, SerializedHDReflectionProbe sp, Editor o)
        {
            var p = (ReflectionProbe)sp.so.targetObject;
            var transformPosition = p.transform.position;
            var size = p.size;

            EditorGUI.BeginChangeCheck();
            var newPostion = Handles.PositionHandle(transformPosition, HDReflectionProbeEditorUtility.GetLocalSpaceRotation(p));

            var changed = EditorGUI.EndChangeCheck();

            if (changed || s.oldLocalSpace != HDReflectionProbeEditorUtility.GetLocalSpace(p))
            {
                var localNewPosition = s.oldLocalSpace.inverse.MultiplyPoint3x4(newPostion);

                var b = new Bounds(p.center, size);
                localNewPosition = b.ClosestPoint(localNewPosition);

                Undo.RecordObject(p.transform, "Modified Reflection Probe Origin");
                p.transform.position = s.oldLocalSpace.MultiplyPoint3x4(localNewPosition);

                Undo.RecordObject(p, "Modified Reflection Probe Origin");
                p.center = HDReflectionProbeEditorUtility.GetLocalSpace(p).inverse.MultiplyPoint3x4(s.oldLocalSpace.MultiplyPoint3x4(p.center));

                EditorUtility.SetDirty(p);

                s.UpdateOldLocalSpace(p);
            }
        }
Exemple #25
0
        private void ClampTarget()
        {
            float distanceToTarget = Vector3.Distance(transform.position, ArmTarget.position);

            if (distanceToTarget > maxRange)
            {
                Vector3 dirToTarget = (ArmTarget.position - transform.position).normalized;
                ArmTarget.position = new Vector3(
                    transform.position.x + dirToTarget.x * maxRange,
                    ArmTarget.position.y,
                    transform.position.z + dirToTarget.z * maxRange);
            }

            float flatDistanceToTarget =
                Vector3.Distance(new Vector3(transform.position.x, 0, transform.position.z),
                                 new Vector3(armIKSolver.Target.position.x, 0, armIKSolver.Target.position.z));

            if (flatDistanceToTarget < minRange)
            {
                Vector3 dirToTarget = (ArmTarget.position - transform.position);
                dirToTarget.y = 0;
                dirToTarget.Normalize();
                ArmTarget.position = new Vector3(
                    transform.position.x + dirToTarget.x * minRange,
                    ArmTarget.position.y,
                    transform.position.z + dirToTarget.z * minRange);
            }

            if (!boundingBox.Contains(ArmTarget.position))
            {
                ArmTarget.position = boundingBox.ClosestPoint(ArmTarget.position);
            }
        }
 void Update()
 {
     if (!bounds.Contains(transform.position))
     {
         transform.position = bounds.ClosestPoint(transform.position);
     }
 }
Exemple #27
0
    public static Vector2 ClosestPointOnBounds(this Bounds bounds, Vector2 p)
    {
        //If point is outside bounds, just use this:
        if (!bounds.Contains(p))
        {
            return(bounds.ClosestPoint(p));
        }

        //Point is inside bounds, so check distance to find closest point
        List <Vector2> boundPos = new List <Vector2>();

        boundPos.Add(new Vector2(bounds.min.x, p.y));
        boundPos.Add(new Vector2(bounds.max.x, p.y));
        boundPos.Add(new Vector2(p.x, bounds.min.y));
        boundPos.Add(new Vector2(p.x, bounds.max.y));

        Vector2 closestPos = boundPos[0];

        foreach (Vector2 bpos in boundPos)
        {
            if (Vector2.Distance(p, bpos) < Vector2.Distance(p, closestPos))
            {
                closestPos = bpos;
            }
        }

        return(closestPos);
    }
Exemple #28
0
        public static Vector3 ProjectPoint(this Bounds bounds, Vector3 point, Vector3 origin)
        {
            //IL_0002: Unknown result type (might be due to invalid IL or missing references)
            //IL_000a: Unknown result type (might be due to invalid IL or missing references)
            //IL_000e: Unknown result type (might be due to invalid IL or missing references)
            //IL_000f: Unknown result type (might be due to invalid IL or missing references)
            //IL_0010: Unknown result type (might be due to invalid IL or missing references)
            //IL_0011: Unknown result type (might be due to invalid IL or missing references)
            //IL_001d: Unknown result type (might be due to invalid IL or missing references)
            //IL_0029: Unknown result type (might be due to invalid IL or missing references)
            //IL_002a: Unknown result type (might be due to invalid IL or missing references)
            //IL_0033: Unknown result type (might be due to invalid IL or missing references)
            if (bounds.Contains(point))
            {
                return(point);
            }
            Ray val = default(Ray);

            val._002Ector(origin, origin - point);
            float num = default(float);

            if (!bounds.IntersectRay(val, ref num))
            {
                return(bounds.ClosestPoint(point));
            }
            return(val.GetPoint(num));
        }
Exemple #29
0
 /// <inheritdoc />
 public override void Apply(TacticalCamera tCamera)
 {
     if (!boundingBox.Contains(tCamera.transform.position))
     {
         tCamera.transform.position = boundingBox.ClosestPoint(tCamera.transform.position);
     }
 }
    public void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            _pressedPosition = Input.mousePosition;
        }

        if (Input.GetMouseButton(0))
        {
            var currentPosition = Input.mousePosition;

            var p0 = _camera.ScreenToWorldPoint(_pressedPosition);
            var p1 = _camera.ScreenToWorldPoint(currentPosition);

            var difference = p1 - p0;

            _camera.transform.position = _camera.transform.position + difference * _speed;

            _pressedPosition = currentPosition;
        }

        if (_truncatePosition)
        {
            //var sp = _camera.WorldToScreenPoint(_camera.transform.position);
            var sp = _camera.transform.position;
            var p  = _bounds.ClosestPoint(sp);
            p.z = sp.z;
            _camera.transform.position = p;

            // _camera.transform.position = _camera.ScreenToWorldPoint(p);
        }
    }