/// <summary>
 /// Resets the behavior.
 /// </summary>
 public void ResetBehavior()
 {
     behavior = MobBehaviour.BEHAVIOUR_NONE.GetFlag();
     for (int i = 0; i < MAX_STACKED_BEHAVIOR; i++)
     {
         if (stacked[i] == null)
         {
             stacked[i] = new BehaviourData();
         }
         stacked[i].Exists = false;
     }
 }
 /// <summary>
 /// Creates a new instance of <see cref="IONpcData"/>.
 /// </summary>
 protected IONpcData()
 {
     name    = "";
     stacked = new BehaviourData[MAX_STACKED_BEHAVIOR];
     for (int i = 0; i < MAX_STACKED_BEHAVIOR; i++)
     {
         if (stacked[i] == null)
         {
             stacked[i] = new BehaviourData();
         }
     }
     //pathfinder = new IOPathfind();
 }
        public void StackBehavior()
        {
            for (int i = 0; i < MAX_STACKED_BEHAVIOR; i++)
            {
                BehaviourData bd = stacked[i];
                if (!bd.Exists)
                {
                    bd.Behaviour     = behavior;
                    bd.BehaviorParam = behavior_param;
                    bd.Tactics       = Tactics;
                    // set pathfinding information
                    // if (io->_npcdata->pathfind.listnb > 0)
                    // bd->target = io->_npcdata->pathfind.truetarget;
                    // else
                    // bd->target = io->targetinfo;

                    bd.MoveMode = Movemode;
                    bd.Exists   = true;
                    break;
                }
            }
        }
        public void UnstackBehavior()
        {
            for (int i = 0; i < MAX_STACKED_BEHAVIOR; i++)
            {
                BehaviourData bd = stacked[i];
                if (bd.Exists)
                {
                    // AcquireLastAnim(io);
                    behavior        = bd.Behaviour;
                    behavior_param  = bd.BehaviorParam;
                    this.Tactics    = bd.Tactics;
                    this.targetInfo = bd.Target;
                    this.Movemode   = bd.MoveMode;
                    bd.Exists       = false;
                    // ARX_NPC_LaunchPathfind(io, bd->target);

                    if (this.HasBehavior(MobBehaviour.BEHAVIOUR_NONE))
                    {
                        // memcpy(io->animlayer, bd->animlayer,
                        // sizeof(ANIM_USE)*MAX_ANIM_LAYERS);
                    }
                }
            }
        }