void Grab() { if (!target) { return; } Grippable grippable = target.GetComponentInParent <Grippable>(); if (!grippable) { return; } rayGrabber.transform.position = targetPoint; rayGrabber.GrabObject(grippable); }
void Grab() { if (!sender.CurrTargetData.hitting) { return; } //Grippable grippable = sender.CurrTargetData.target.GetComponentInParent<Grippable>(); Grippable grippable = sender.CurrTargetData.target.GetComponent <Grippable>(); if (!grippable) { return; } rayGrabber.transform.position = sender.TargetPoint; rayGrabber.GrabObject(grippable); }
public void AddGrippable(Grippable g) { switch (g.priority) { case Grippable.PRIORITY.LOW: gripOptionsLow.Add(g); break; case Grippable.PRIORITY.MEDIUM: gripOptionsMedium.Add(g); break; case Grippable.PRIORITY.HIGH: gripOptionsHigh.Add(g); break; } }
public void RemoveGrippable(Grippable g) { switch (g.priority) { case Grippable.PRIORITY.LOW: gripOptionsLow.Remove(g); DropObject(g); break; case Grippable.PRIORITY.MEDIUM: gripOptionsMedium.Remove(g); DropObject(g); break; case Grippable.PRIORITY.HIGH: gripOptionsHigh.Remove(g); DropObject(g); break; } }
private void UpdateGrip() { if (Gripping == GripState.SHOULD_GRIP && Range.WithinRange) { var shapeInRange = Range.ShapesWithinRange .FirstOrDefault(s => s.Parent.GameObj.GetComponent <Grippable>() != null); if (shapeInRange != null) { gripped = shapeInRange.Parent.GameObj.GetComponent <Grippable>(); if (gripped != null) { Gripping = GripState.GRIPPING; Body.LinearVelocity = new Vector2(); Body.AngularVelocity = 0; //Body.BodyType = BodyType.Kinematic; Rect grabbedShape = gripped.RectangularBody.LoopShape.AABB; Rect soldierShape = Soldier.Shape.AABB; int side = gripped.FindSide(GameObj.Transform, Soldier.Shape); if ((side & Grippable.IN) > 0) { topLimit = gripped.GameObj.Transform.Pos.Y - grabbedShape.H / 2 + soldierShape.H / 2; bottomLimit = gripped.GameObj.Transform.Pos.Y + grabbedShape.H / 2 - soldierShape.H / 2; leftLimit = gripped.GameObj.Transform.Pos.X - grabbedShape.W / 2 + soldierShape.W / 2; rightLimit = gripped.GameObj.Transform.Pos.X + grabbedShape.W / 2 - soldierShape.W / 2; } else if ((side & Grippable.OUT) > 0) { topLimit = gripped.GameObj.Transform.Pos.Y - grabbedShape.H / 2 - soldierShape.H / 2; bottomLimit = gripped.GameObj.Transform.Pos.Y + grabbedShape.H / 2 + soldierShape.H / 2; leftLimit = gripped.GameObj.Transform.Pos.X - grabbedShape.W / 2 - soldierShape.W / 2; rightLimit = gripped.GameObj.Transform.Pos.X + grabbedShape.W / 2 + soldierShape.W / 2; } } } } }
protected void DropObject(Grippable g, ControllerComponentArgs e) { g.ReleaseController(this, e); grabbed.Remove(g); }
public void DropObject(Grippable g) { DropObject(g, dummyArgs); }
public void GrabObject(Grippable g) { GrabObject(g, dummyArgs); }
protected void GrabObject(Grippable g, ControllerComponentArgs e) { g.RegisterController(this, e); grabbed.Add(g); }