Exemple #1
0
 protected override void OnGrabbed(HVRGrabArgs args)
 {
     Debug.Log($"nocked");
     args.Cancel = true;
     Grabbed.Invoke(this, args.Grabbable);
     ForceRelease();
 }
Exemple #2
0
 public void Apply_Character_WithExistingGrabbedCondition_Test()
 {
     var character = CreateMockCharacter();
     character.Conditions.Add(new Grabbed());
     var grabbed = new Grabbed();
     grabbed.Apply(character);
 }
Exemple #3
0
 public void Apply_NotACharacter_Test()
 {
     var entity = Mock.Of<IEntity>();
     var grabbed = new Grabbed();
     grabbed.Apply(entity);            
     Assert.IsTrue(true); // If we made it here without exception then the test passed
 }
        protected override void OnGrabbed(HVRGrabArgs args)
        {
            //Debug.Log($"force grabbed!");
            base.OnGrabbed(args);

            if (_additionalGrabRoutine != null)
            {
                StopCoroutine(_additionalGrabRoutine);
            }

            IsForceGrabbing = true;
            if (GrabStyle == HVRForceGrabMode.GravityGloves)
            {
                StartCoroutine(ForceGrab(args.Grabbable));
            }
            else
            {
                CheckForceAnchor();
                StartCoroutine(ForcePull(args.Grabbable));
            }

            Grabbed.Invoke(this, args.Grabbable);
            args.Grabbable.Collided.AddListener(OnGrabbableCollided);
            args.Grabbable.Grabbed.AddListener(OnGrabbableGrabbed);

            if (SFXGrab)
            {
                SFXPlayer.Instance.PlaySFX(SFXGrab, transform.position);
            }
        }
Exemple #5
0
 void MouseUnselected(string key)
 {
     //fire event
     Grabbed?.Invoke(this, new GrabbedEventArgs()
     {
         IsGrabbed = false
     });
 }
Exemple #6
0
 public void Remove_NoConditions_Test()
 {
     var character = CreateMockCharacter();
     var grabbed = new Grabbed();
     grabbed.Apply(character);
     grabbed.Remove(character);
     Assert.AreEqual(0, character.Conditions.Count);
 }
Exemple #7
0
 void OnCollisionEnter2D(Collision2D other)
 {
     if (other.gameObject.CompareTag("Player"))
     {
         Grabbed?.Invoke();
         Destroy(gameObject);
     }
 }
Exemple #8
0
 public void Apply_Character_NoConditions_Test()
 {
     var character = CreateMockCharacter();
     var grabbed = new Grabbed();
     grabbed.Apply(character);
     Assert.IsTrue(character.Conditions.Contains(grabbed));
     Assert.IsTrue(character.Conditions.Any(c => c.Id == EntityIds.FLAT_FOOTED_CONDITION_ID));
     Assert.IsTrue(character.Conditions.Any(c => c.Id == EntityIds.IMMOBILIZED_CONDITION_ID));
 }
Exemple #9
0
 public void OnGripPressed(object sender, ControllerGripArgs e)
 {
     if (!handIsIn)
     {
         return;
     }
     Connect(sender, true, gameObject);
     Grabbed?.Invoke(this);
 }
Exemple #10
0
 private void OnCollisionEnter(Collision collision)
 {
     if (!holdingCube && collision.gameObject.tag == "cube" && intakeAxis < 0)
     {
         grabbedScript        = collision.gameObject.GetComponent <Grabbed>();
         grabbedScript.intake = intake;
         grabbedScript.SetGrabbed(true);
         holdingCube = true;
     }
 }
        public void Grab()
        {
            if (IsGrabbed)
            {
                return;
            }

            IsGrabbed = true;
            Grabbed?.Invoke(this, EventArgs.Empty);
        }
Exemple #12
0
        public void Apply_Character_GrabConditionRemoval_Test()
        {
            var character = CreateMockCharacter();
            var grabbed   = new Grabbed();

            grabbed.Apply(character);
            var restrained = new Restrained();

            restrained.Apply(character);
            Assert.IsFalse(character.Conditions.Any(c => c.Id == EntityIds.GRABBED_CONDITION_ID));
            Assert.IsTrue(character.Conditions.Any(c => c.Id == EntityIds.RESTRAINED_CONDITION_ID));
            Assert.IsTrue(character.Conditions.Any(c => c.Id == EntityIds.FLAT_FOOTED_CONDITION_ID));
            Assert.IsTrue(character.Conditions.Any(c => c.Id == EntityIds.IMMOBILIZED_CONDITION_ID));
        }
Exemple #13
0
        public IEventGrabber Grab(StationDesc station)
        {
            if (!_grabbeds.ContainsKey(station))
            {
                var grabbed = new Grabbed()
                {
                    { MsgType.Signal, delegate {} },
                    { MsgType.Link, delegate {} },
                    { MsgType.Block, delegate {} }
                };
                _grabbeds.Add(station, grabbed);
            }

            return(new EventGrabber(_grabbeds[station]));
        }
Exemple #14
0
    public void Release(Planet planet)
    {
        if (!Grabbed)
        {
            return;
        }
        foreach (var col in Grabbed.GetComponentsInChildren <Collider>())
        {
            col.enabled = true;
        }
        //Grabbed.Release(planet);


        Grabbed = null;
    }
Exemple #15
0
        protected override void OnGrabbed(HVRGrabArgs args)
        {
            base.OnGrabbed(args);

            var grabbable = args.Grabbable;

            _previousParent            = grabbable.transform.parent;
            _previousScale             = grabbable.transform.localScale;
            grabbable.transform.parent = transform;

            grabbable.transform.localPosition = Vector3.zero;
            grabbable.transform.localRotation = Quaternion.identity;



            var socketable = grabbable.Socketable;

            _modelBounds = grabbable.ModelBounds;

            UpdateScale(grabbable);

            Vector3 offSet = Vector3.zero;

            if (socketable.SocketOrientation)
            {
                offSet = -GetPositionOffset(grabbable);
                var rotationOffset = GetRotationOffset(grabbable);
                var delta          = grabbable.transform.localRotation * Quaternion.Inverse(rotationOffset);
                grabbable.transform.localRotation *= delta;
                offSet = delta * offSet;
            }

            offSet.x *= grabbable.transform.localScale.x;
            offSet.y *= grabbable.transform.localScale.y;
            offSet.z *= grabbable.transform.localScale.z;

            grabbable.transform.localPosition += offSet;

            HandleRigidBodyGrab(grabbable);

            PlaySFX(socketable);

            if (args.RaiseEvents)
            {
                Grabbed.Invoke(this, grabbable);
            }
        }
Exemple #16
0
    public void Release()
    {
        AnimationController.SetBool("Grabbed", false);

        if (!Grabbed)
        {
            return;
        }

        foreach (var col in Grabbed.GetComponentsInChildren <Collider>())
        {
            col.enabled = true;
        }

        Grabbed.transform.SetParent(null);
        Grabbed.Throw(Velocity);
        Grabbed.Flying = true;

        SteamVR_Controller.Input((int)_controller.controllerIndex).TriggerHapticPulse(3000);
        StartCoroutine(KillTimer(Grabbed.gameObject));
        Grabbed = null;
    }
 protected void EmitGrabbed()
 {
     Grabbed?.Invoke(this, EventArgs.Empty);
 }
Exemple #18
0
        void MouseSelecting(MouseSelectingArgs e, string key)
        {
            //get selection plane for moving within
            if (e.Ray != null)
            {
                //select corect plane
                var cameraDir = (Application as App).CameraNode.Direction;
                switch (key)
                {
                case "x":
                    if (Math.Abs(cameraDir.Y) > Math.Abs(cameraDir.X))
                    {
                        _plane = new Urho.Plane(Vector3.Forward, Node.Position);
                    }
                    else
                    {
                        _plane = new Urho.Plane(Vector3.Up, Node.Position);
                    }
                    break;

                case "y":
                    if (Math.Abs(cameraDir.X) > Math.Abs(cameraDir.Z))
                    {
                        _plane = new Urho.Plane(Vector3.Right, Node.Position);
                    }
                    else
                    {
                        _plane = new Urho.Plane(Vector3.Forward, Node.Position);
                    }
                    break;

                case "z":
                    if (Math.Abs(cameraDir.X) > Math.Abs(cameraDir.Y))
                    {
                        _plane = new Urho.Plane(Vector3.Right, Node.Position);
                    }
                    else
                    {
                        _plane = new Urho.Plane(Vector3.Up, Node.Position);
                    }
                    break;

                case "xz":
                    _plane = new Urho.Plane(Vector3.Up, Node.Position);
                    break;

                case "yx":
                    _plane = new Urho.Plane(Vector3.Forward, Node.Position);
                    break;

                case "zy":
                    _plane = new Urho.Plane(Vector3.Right, Node.Position);
                    break;
                }
                _offset = Node.Position - e.Ray.Value.Position;
            }

            //using touch
            _usingTouch = Application.Input.IsTouching();

            //fire event
            Grabbed?.Invoke(this, new GrabbedEventArgs()
            {
                IsGrabbed = true
            });
        }