Exemplo n.º 1
0
 public static Node MoveZones(
     SmartObject mover, 
     SmartObject fromZone, 
     SmartObject toZone)
 {
     return new Sequence(
         mover.Node_Set(fromZone.Id, ~RelationName.IsInZone),
         mover.Node_Set(toZone.Id, RelationName.IsInZone));
 }
Exemplo n.º 2
0
    public Node TakeWallet(SmartObject user)
    {
        SmartCharacter character = (SmartCharacter)user;

        return new Sequence(
            //user.Node_Require(StateName.RoleActor, StateName.IsStanding, ~StateName.HoldingBall, ~StateName.HoldingWallet, ~StateName.HoldingDrink, ~StateName.IsIncapacitated),
            // this.Node_Require(StateName.RoleActor, StateName.HoldingWallet, StateName.IsIncapacitated),
            character.Node_GoToUpToRadius(new Val<Vector3>(this.transform.position), 1.0f),
            character.Node_OrientTowards(new Val<Vector3>(this.transform.position)),

            new LeafInvoke(() => character.HoldPropRightHand.Attach(this.HoldPropPocket.Release())),

            this.Node_Set(~StateName.HoldingWallet),
            user.Node_Set(StateName.HoldingWallet),

            character.Node_StartInteraction(FullBodyBipedEffector.RightHand, character.InteractionStoreWallet),
            character.Node_WaitForTrigger(FullBodyBipedEffector.RightHand),
            new LeafInvoke(() => character.HoldPropPocket.Attach(character.HoldPropRightHand.Release())),
            character.Node_ResumeInteraction(FullBodyBipedEffector.RightHand));
    }
Exemplo n.º 3
0
    protected Node TakeBall(SmartObject user)
    {
        // User Casting
        // TODO: Ths is going to get ugly if the cast fails...
        SmartCharacter character = (SmartCharacter)user;

        return new Sequence(
            user.Node_Require(StateName.RoleActor, StateName.IsStanding, ~StateName.HoldingBall, ~StateName.HoldingDrink, ~StateName.HoldingWallet, ~StateName.IsIncapacitated),
            this.Node_Require(StateName.RoleActor, StateName.HoldingBall, StateName.IsIncapacitated),
            character.Node_GoToUpToRadius(new Val<Vector3>(this.transform.position), 1.0f),
            character.Node_OrientTowards(new Val<Vector3>(this.transform.position)),

            new LeafInvoke(() => character.HoldPropRightHand.Attach(this.HoldPropRightHand.Release())),

            this.Node_Set(~StateName.HoldingBall),
            user.Node_Set(StateName.HoldingBall),

            new SequenceParallel(
                this.Node_StopInteraction(FullBodyBipedEffector.RightHand),
                character.Node_StartInteraction(FullBodyBipedEffector.RightHand, character.InteractionHoldRight)));
    }