Ejemplo n.º 1
0
    public override void UpdateInputAxis(float axis)
    {
        if (axis < axisOpeningThreshold)         //hand is opened
        {
            isOpen = true;
            if (itemHeld != null)
            {
                itemHeld.ReleaseItem();
                SendMessage("SetDefaultTarget", grabPoint.transform, SendMessageOptions.DontRequireReceiver);
                itemHeld = null;
            }
            grabPoint.SetActive(false);
        }
        else if (axis > axisClosingThreshold)         //hand is closed
        {
            isOpen = false;
            if (itemHeld == null && currentCollectableInRange != null)
            {
                grabPoint.SetActive(true);

                itemHeld = currentCollectableInRange;
                itemHeld.rigidbody.isKinematic = true;

                //HACK: Keeps the held object from flying away (should drop straight down)
                itemHeld.transform.position = grabPoint.transform.position + transform.forward * (itemHeld.transform.localScale.x - 1);

                itemHeld.GrabItem(grabPoint.rigidbody);
                itemHeld.rigidbody.isKinematic = false;
            }
        }
    }
Ejemplo n.º 2
0
    // Start is called before the first frame update
    void Start()
    {
        gravityObject = GetComponent <GrabbableItem>();
        gravityObject.SetGravityScale(gravityObject.GetGravityScale() * -1);

        controller = FindObjectOfType <GameController>();
    }
Ejemplo n.º 3
0
 void OnValidate()
 {
     if (grabbableItem == null || grabbableItem.gameObject != gameObject)
     {
         grabbableItem = GetComponent <GrabbableItem>();
     }
 }
Ejemplo n.º 4
0
    public void SetHandClosed(float axis)
    {
        if (axis < axisOpeningThreshold)         //open hand
        {
            isOpen = true;
            if (itemHeld != null)
            {
                itemHeld.ReleaseItem();
            }
            grabPoint.SetActive(false);
        }
        else if (axis > axisClosingThreshold)
        {
            isOpen = false;
            if (currentCollectableInRange != null)
            {
                grabPoint.SetActive(true);

                itemHeld = currentCollectableInRange;
                itemHeld.rigidbody.isKinematic = true;
                itemHeld.transform.position    = grabPoint.transform.position;
                itemHeld.GrabItem(grabPoint.rigidbody);
                itemHeld.rigidbody.isKinematic = false;
            }
        }
    }
Ejemplo n.º 5
0
 void Start()
 {
     if (grabbableItem == null)
     {
         grabbableItem = GetComponent <GrabbableItem>();
     }
     grabbableItem.OnReleased += Invoke;
 }
Ejemplo n.º 6
0
 void OnTriggerStay(Collider col)
 {
     if (col.gameObject.CompareTag("Collectable"))
     {
         GrabbableItem item = col.GetComponent <GrabbableItem>();
         if (item != currentCollectableInRange && item != null)
         {
             currentCollectableInRange = item;
         }
     }
 }
Ejemplo n.º 7
0
 void OnTriggerExit(Collider col)
 {
     if (col.gameObject.CompareTag("Collectable"))
     {
         //Debug.LogError ("Trigger Exit");
         GrabbableItem item = col.GetComponent <GrabbableItem>();
         if (item == currentCollectableInRange)
         {
             currentCollectableInRange = null;
         }
     }
 }
Ejemplo n.º 8
0
        static void Postfix(GrabbableItem grabbableItem)
        {
            var rb = grabbableItem.gameObject.GetComponent <Rigidbody>();

            if (JobSimulatorMultiplayer.isClient && rb)
            {
                foreach (var newRb in grabbableItem.gameObject.GetComponentsInChildren <Rigidbody>())
                {
                    newRb.isKinematic = false;
                }

                rb.isKinematic = false;
            }
        }
Ejemplo n.º 9
0
    public void SetClosestGrabbableItem(GrabbableItem item)
    {
        if (closest == item)
        {
            return;
        }

        if (closest != null)
        {
            closest.ResetItem();
        }
        
        closest = item;
    }
Ejemplo n.º 10
0
    void OnTriggerStay(Collider col)
    {
        if (col.gameObject.CompareTag("Collectable"))
        {
            GrabbableItem item = col.GetComponent <GrabbableItem>();

            if (item != currentCollectableInRange && item != null)
            {
                if (currentCollectableInRange != null)
                {
                    currentCollectableInRange.SetOutlineFeedback(false);
                }
                currentCollectableInRange = item;
                currentCollectableInRange.SetOutlineFeedback(true);
                //this is for the view to use, potentially
                SendMessage("SetTarget", currentCollectableInRange.transform, SendMessageOptions.DontRequireReceiver);
            }
        }
    }
Ejemplo n.º 11
0
 void AddHeartsByBreaking(Vector3 position, int NumOfParticles, int force = 400)
 {
     position.y += 0.7f;
     if (NumOfParticles > 20)
     {
         NumOfParticles = 20;
     }
     for (int a = 0; a < NumOfParticles; a++)
     {
         SceneObject newSO = ObjectPool.instance.GetObjectForType(explotionGift.name, true);
         if (newSO)
         {
             newSO.Restart(position);
             newSO.transform.localEulerAngles = new Vector3(0, a * (360 / NumOfParticles), 0);
             Vector3 direction = ((newSO.transform.forward * force) + (Vector3.up * (force * 3)));
             newSO.GetComponent <Rigidbody>().AddForce(direction, ForceMode.Impulse);
             GrabbableItem gi = newSO.GetComponent <GrabbableItem> ();
             gi.SetGroundMaterial();
         }
     }
 }
Ejemplo n.º 12
0
    void OnAddHeartsByBreaking(Vector3 position, Material[] mat, Vector3[] pos)
    {
        int force = 400;

        position.y += 0.7f;
        int NumOfParticles = mat.Length;

        for (int a = 0; a < NumOfParticles; a++)
        {
            SceneObject newSO = ObjectPool.instance.GetObjectForType(explotionGift.name, true);
            if (newSO)
            {
                newSO.Restart(pos[a]);
                newSO.transform.localEulerAngles = new Vector3(0, a * (360 / NumOfParticles), 0);
                Vector3 direction = ((newSO.transform.forward * force) + (Vector3.up * (force * 2)));
                newSO.GetComponent <Rigidbody>().AddForce(direction, ForceMode.Impulse);
                GrabbableItem gi = newSO.GetComponent <GrabbableItem> ();
                gi.SetMaterial(mat[a]);
            }
        }
    }
Ejemplo n.º 13
0
    private void EquipItem(GrabbableItem item)
    {
        if (equipped != null)
        {
            equipped.ResetItem();
            equipped.Enable();
            equipped.SetGravityScale(gameController.GetGravityDirection());
        }

        closest = null;

        equipped = item;
        if (item == null)
        {
            return;
        }

        item.ResetItem();
        item.Disable();
        item.Equip(itemHolder);
    }
Ejemplo n.º 14
0
    void OnTriggerExit(Collider col)
    {
        if (col.gameObject.CompareTag("Collectable"))
        {
            //Debug.LogError ("Trigger Exit");
            GrabbableItem item = col.GetComponent <GrabbableItem>();
            if (item == null)
            {
                return;
            }

            if (item == currentCollectableInRange)
            {
                currentCollectableInRange.SetOutlineFeedback(false);
                if (item != itemHeld)
                {
                    SendMessage("SetDefaultTarget", grabPoint.transform, SendMessageOptions.DontRequireReceiver);
                }
                currentCollectableInRange = null;
            }
        }
    }
Ejemplo n.º 15
0
 void Reset()
 {
     grabbableItem = GetComponent <GrabbableItem>();
 }