Пример #1
0
    public override void BeginExecution(Entity stateEntity, ActionContext action, Otto actor)
    {
        base.BeginExecution(stateEntity, action, actor);

        // Trigger beginning of walk animation.
        m_Animator = actor.GetComponentInParent <Animator>();
        m_Animator.SetBool(k_Walk, true);

        m_TargetPosition = action.GetTrait <Location>(1).Position;
        m_OttoTransform  = actor.transform;

        // Grab nav mesh
        m_NavMeshAgent = actor.GetComponentInParent <NavMeshAgent>();

        // Motion Controller
        m_MotionController = actor.GetComponentInParent <MotionController>();
        m_MotionController.TargetPosition = m_TargetPosition;
        m_MotionController.StartMoving();
        SetAnimationParams();
        m_Arrived = false;

        var startPosition = action.GetTrait <Location>(0).Position;
        var distance      = Vector3.Distance(startPosition, m_TargetPosition);

        m_PredictedDeltaTime = Mathf.FloorToInt(distance / 0.47f + 1f);
    }
Пример #2
0
    public override void EndExecution(Entity stateEntity, ActionContext action, Otto actor)
    {
        base.EndExecution(stateEntity, action, actor);

        // Set target orientation based on location orientation
        var ecsAction = action;
        var forward   = ecsAction.GetTrait <Location>(1).Forward;

        m_MotionController.StopMoving(forward);

        // Effects
        // Update Otto position
        var agentDomainObjectTrait   = ecsAction.GetTrait <DomainObjectTrait>(0);
        var destinationLocationTrait = ecsAction.GetTrait <Location>(1);

        var agentEntity = actor.GetDomainObjectEntityByID(stateEntity, agentDomainObjectTrait.ID);

        var loc = actor.GetObjectTrait <Location>(agentEntity);

        loc.Position = destinationLocationTrait.Position;
        actor.SetObjectTrait(agentEntity, loc);

        // Trigger ending of walk animation.
        m_Animator.SetBool(k_Walk, false);
        SetAnimationParams(true);
    }
Пример #3
0
    public override void ContinueExecution(Entity stateEntity, ActionContext action, Otto actor)
    {
        base.ContinueExecution(stateEntity, action, actor);

        if (Time.time - m_StartTime >= m_Duration - k_ExitTime)
        {
            m_Animator.SetBool(s_ContinueWork, false);
        }
    }
Пример #4
0
    public override void BeginExecution(StateData state, ActionKey action, Otto actor)
    {
        base.BeginExecution(state, action, actor);

        m_StartTime = Time.time;

        m_Duration = state.GetTraitOnObjectAtIndex <Duration>(action[2]).Time;

        m_Animator.SetTrigger(k_Work);
        m_Animator.SetBool(s_ContinueWork, true);
    }
Пример #5
0
    public override void EndExecution(Entity stateEntity, ActionContext action, Otto actor)
    {
        foreach (var domainObjectEntity in actor.GetObjectEntities(stateEntity, typeof(Inventory)))
        {
            var inventory = actor.GetObjectTrait <Inventory>(domainObjectEntity);
            inventory.Amount += inventory.ConsumableType == m_ConsumableType ? 1 : 0;
            actor.SetObjectTrait(domainObjectEntity, inventory);
        }

        base.EndExecution(stateEntity, action, actor);
    }
Пример #6
0
    public override void BeginExecution(StateData state, ActionKey action, Otto actor)
    {
        base.BeginExecution(state, action, actor);

        AnimationComplete = false;
        m_Animator.SetTrigger(k_Consumables);

        var dispenser = state.GetTraitOnObjectAtIndex <Dispenser>(action[1]);

        m_ConsumableType = dispenser.ConsumableType;
        m_Animator.SetTrigger(m_ConsumableType == ConsumableType.Apple ? k_PocketFood : k_PocketDrink);
    }
Пример #7
0
    public override void BeginExecution(Entity stateEntity, ActionContext action, Otto actor)
    {
        base.BeginExecution(stateEntity, action, actor);

        AnimationComplete = false;
        m_Animator.SetTrigger(k_Consumables);

        var dispenser = action.GetTrait <Dispenser>(1);

        m_ConsumableType = dispenser.ConsumableType;
        m_Animator.SetTrigger(m_ConsumableType == ConsumableType.Apple ? k_PocketFood : k_PocketDrink);
    }
Пример #8
0
    public override void BeginExecution(Entity stateEntity, ActionContext action, Otto actor)
    {
        base.BeginExecution(stateEntity, action, actor);

        m_StartTime = Time.time;

        var ecsAction = action;

        m_Duration = ecsAction.GetTrait <Duration>(2).Time;

        m_Animator.SetTrigger(k_Work);
        m_Animator.SetBool(s_ContinueWork, true);
    }
Пример #9
0
    public override void BeginExecution(StateData state, ActionKey action, Otto actor)
    {
        base.BeginExecution(state, action, actor);

        var inventory = state.GetTraitOnObjectAtIndex <Inventory>(action[1]);

        m_ConsumableType = inventory.ConsumableType;
        m_NeedType       = inventory.SatisfiesNeed;
        m_NeedReduction  = inventory.NeedReduction;

        m_Animator.SetTrigger(k_Consumables);
        m_Animator.SetTrigger(m_ConsumableType == ConsumableType.Apple ? k_EatFromPocket : k_DrinkFromPocket);
    }
Пример #10
0
        public static void Main(string[] args)
        {
            Console.WriteLine("start");
            Mock myMock = new Mock();

            Console.WriteLine("name: " + myMock.getName());
            myMock.setName("Hello World");
            Console.WriteLine("name: " + myMock.getName());
            IntVector v = myMock.getInts();

            foreach (var n in v)
            {
                Console.WriteLine("v = " + n);
            }
            IntMap map = myMock.getMap();

            foreach (var n in map)
            {
                Console.WriteLine("m = " + n);
            }
            map[3] = "bar";
            map[4] = "foo";
            myMock.printMap(map);
            myPtr_s ptr     = myMock.getPtr();
            myPtr_s lastPtr = null;
            myPtr_s root    = ptr;

            while (ptr != null)
            {
                Console.WriteLine("ptr->i=" + ptr.i);
                Console.WriteLine("ptr->s=" + ptr.s);
                lastPtr = ptr;
                ptr     = ptr.next;
            }
            myPtr_s oneMore = new myPtr_s();

            oneMore.i    = 3;
            oneMore.s    = "one more from C#";
            oneMore.next = null;
            lastPtr.next = oneMore;
            myMock.printPtr(root);
            myPtr_s sp = myMock.getSharedPtr();

            Console.WriteLine("shared i=" + sp.i + " s=" + sp.s);
            Otto otto = myMock.getOtto();

            Console.WriteLine("otto i=" + otto.i() + " s=" + otto.s());
            otto.s("Karl");
            Console.WriteLine("otto i=" + otto.i() + " s=" + otto.s());
            Console.WriteLine("end.");
        }
Пример #11
0
    public override void EndExecution(StateData state, ActionKey action, Otto actor)
    {
        var domainObjects = new NativeList <(DomainObject, int)>(4, Allocator.TempJob);

        foreach (var(_, domainObjectIndex) in state.GetDomainObjects(domainObjects, new ComponentType[] { typeof(Inventory) }))
        {
            var inventory = state.GetTraitOnObjectAtIndex <Inventory>(domainObjectIndex);
            inventory.Amount += inventory.ConsumableType == m_ConsumableType ? 1 : 0;
            state.SetTraitOnObjectAtIndex(inventory, domainObjectIndex);
        }
        domainObjects.Dispose();

        base.EndExecution(state, action, actor);
    }
Пример #12
0
    public override void BeginExecution(Entity stateEntity, ActionContext action, Otto actor)
    {
        base.BeginExecution(stateEntity, action, actor);

        var ecsAction = action;
        var inventory = ecsAction.GetTrait <Inventory>(1);

        m_ConsumableType = inventory.ConsumableType;
        m_NeedType       = inventory.SatisfiesNeed;
        m_NeedReduction  = inventory.NeedReduction;

        m_Animator.SetTrigger(k_Consumables);
        m_Animator.SetTrigger(m_ConsumableType == ConsumableType.Apple ? k_EatFromPocket : k_DrinkFromPocket);
    }
Пример #13
0
    public void Awake()
    {
        m_Otto = GetComponent <Otto>();

        // Make instances of these, so the asset on disk doesn't get modified
        UIBarFood.material = Instantiate(UIBarFood.material);
        UIBarRest.material = Instantiate(UIBarRest.material);
        UIBarJoy.material  = Instantiate(UIBarJoy.material);
        m_HungerMat        = UIBarFood.material;
        m_FatigueMat       = UIBarRest.material;
        m_ThirstMat        = UIBarJoy.material;
        m_HungerMat.SetFloat(s_Amount, 1);
        m_ThirstMat.SetFloat(s_Amount, 1);
        m_FatigueMat.SetFloat(s_Amount, 1);
    }
Пример #14
0
    public override void ContinueExecution(Entity stateEntity, ActionContext action, Otto actor)
    {
        base.ContinueExecution(stateEntity, action, actor);

        // Delay the execution of this animation until we've reached the Navigation state in the animator.
        if (m_Animator.GetCurrentAnimatorStateInfo(0).IsName("Navigation"))
        {
            var position = m_OttoTransform.position;
            m_MotionController.TargetOrientation = m_NavMeshAgent.nextPosition - position;
            SetAnimationParams();

            // Check for arrival
            m_Arrived = Vector3.Distance(position, m_TargetPosition) <= 0.1;
        }
    }
Пример #15
0
    public override void EndExecution(Entity stateEntity, ActionContext action, Otto actor)
    {
        base.EndExecution(stateEntity, action, actor);

        foreach (var domainObjectEntity in actor.GetObjectEntities(stateEntity, typeof(Inventory)))
        {
            var inventory = actor.GetObjectTrait <Inventory>(domainObjectEntity);
            inventory.Amount -= inventory.ConsumableType == m_ConsumableType ? 1 : 0;
            actor.SetObjectTrait(domainObjectEntity, inventory);
        }

        foreach (var domainObjectEntity in actor.GetObjectEntities(stateEntity, typeof(Need)))
        {
            var need = actor.GetObjectTrait <Need>(domainObjectEntity);
            need.Urgency -= need.NeedType == m_NeedType ? m_NeedReduction : 0;
            actor.SetObjectTrait(domainObjectEntity, need);
        }
    }
Пример #16
0
    public override void BeginExecution(Entity stateEntity, ActionContext action, Otto actor)
    {
        base.BeginExecution(stateEntity, action, actor);

        m_Animator = actor.GetComponentInParent <Animator>();
        m_Animator.SetTrigger(Animator.StringToHash("Sleep"));

        // Reset fatigue.
        foreach (var domainObjectEntity in actor.GetObjectEntities(stateEntity, typeof(Need)))
        {
            var need = actor.GetObjectTrait <Need>(domainObjectEntity);
            if (need.NeedType == NeedType.Fatigue)
            {
                need.Urgency = 0;
                actor.SetObjectTrait(domainObjectEntity, need);
                break;
            }
        }
    }
Пример #17
0
    public override void EndExecution(StateData state, ActionKey action, Otto actor)
    {
        base.EndExecution(state, action, actor);

        var domainObjects = new NativeList <(DomainObject, int)>(4, Allocator.TempJob);

        foreach (var(_, domainObjectIndex) in state.GetDomainObjects(domainObjects, typeof(Inventory)))
        {
            var inventory = state.GetTraitOnObjectAtIndex <Inventory>(domainObjectIndex);
            inventory.Amount -= inventory.ConsumableType == m_ConsumableType ? 1 : 0;
            state.SetTraitOnObjectAtIndex(inventory, domainObjectIndex);
        }

        domainObjects.Clear();
        foreach (var(_, domainObjectIndex) in state.GetDomainObjects(domainObjects, typeof(Need)))
        {
            var need = state.GetTraitOnObjectAtIndex <Need>(domainObjectIndex);
            need.Urgency -= need.NeedType == m_NeedType ? m_NeedReduction : 0;
            state.SetTraitOnObjectAtIndex(need, domainObjectIndex);
        }
        domainObjects.Dispose();
    }
Пример #18
0
    public override void BeginExecution(StateData state, ActionKey action, Otto actor)
    {
        base.BeginExecution(state, action, actor);

        m_Animator = actor.GetComponentInParent <Animator>();
        m_Animator.SetTrigger(Animator.StringToHash("Sleep"));

        // Reset fatigue
        var domainObjects = new NativeList <(DomainObject, int)>(4, Allocator.TempJob);

        foreach (var(_, domainObjectIndex) in state.GetDomainObjects(domainObjects, new ComponentType[] { typeof(Need) }))
        {
            var need = state.GetTraitOnObjectAtIndex <Need>(domainObjectIndex);
            if (need.NeedType == NeedType.Fatigue)
            {
                need.Urgency = 0;
                state.SetTraitOnObjectAtIndex(need, domainObjectIndex);
                break;
            }
        }
        domainObjects.Dispose();
    }
Пример #19
0
    public override void EndExecution(StateData state, ActionKey action, Otto actor)
    {
        base.EndExecution(state, action, actor);

        // Set target orientation based on location orientation
        var forward = state.GetTraitOnObjectAtIndex <Location>(action[1]).Forward;

        m_MotionController.StopMoving(forward);

        // Effects
        // Update Otto position
        var agentDomainObjectIndex = action[0];
        var destinationLocation    = state.GetTraitOnObjectAtIndex <Location>(action[1]);

        var loc = state.GetTraitOnObjectAtIndex <Location>(agentDomainObjectIndex);

        loc.Position = destinationLocation.Position;
        state.SetTraitOnObjectAtIndex(loc, agentDomainObjectIndex);

        // Trigger ending of walk animation.
        m_Animator.SetBool(k_Walk, false);
        SetAnimationParams(true);
    }
Пример #20
0
 public override OperationalActionStatus Status(StateData state, ActionKey action, Otto actor)
 {
     return(m_Arrived && Time.time - m_StartTime >= m_PredictedDeltaTime ?
            OperationalActionStatus.Completed : OperationalActionStatus.InProgress);
 }
Пример #21
0
 public override OperationalActionStatus Status(StateData state, ActionKey action, Otto actor)
 {
     return(Time.time - m_StartTime >= m_Duration ?
            OperationalActionStatus.Completed :
            OperationalActionStatus.InProgress);
 }
Пример #22
0
 public override OperationalActionStatus Status(Entity stateEntity, ActionContext action, Otto actor)
 {
     return(Time.time - m_StartTime >= m_Duration ?
            OperationalActionStatus.Completed :
            OperationalActionStatus.InProgress);
 }
Пример #23
0
 public override OperationalActionStatus Status(Entity stateEntity, ActionContext action, Otto actor)
 {
     return(m_Arrived && Time.time - m_StartTime >= m_PredictedDeltaTime ?
            OperationalActionStatus.Completed : OperationalActionStatus.InProgress);
 }