public virtual void activateAll(SpriterAbstractPlayer
			 player)
        {
            foreach (SpriterBone bone in player.getRuntimeBones())
            {
                bone.active = true;
            }
            foreach (SpriterObject obj in player.getRuntimeObjects())
            {
                obj.active = true;
            }
        }
 public virtual void activateEffectors(SpriterAbstractPlayer player)
 {
     foreach (SpriterIKObject key in this.ikMap.Keys)
     {
         SpriterAbstractObject obj = this.ikMap[key];
         if (obj is SpriterBone) obj = player.getRuntimeBones()[obj.getId()];
         else obj = player.getRuntimeObjects()[obj.getId()];
         obj.active = true;
         SpriterBone par = (SpriterBone)obj.getParent();
         for (int j = 0; j < key.chainLength && par != null; j++)
         {
             player.getRuntimeBones()[par.getId()].active = true;
             par = (SpriterBone)par.getParent();
         }
     }
 }
        protected internal virtual void updateRecursively(SpriterAbstractPlayer
			 player, SpriterAbstractObject @object)
        {
            this.updateObject(player, @object);
            if (@object is SpriterBone)
            {
                foreach (SpriterBone child in ((SpriterBone
                    )@object).getChildBones())
                {
                    this.updateRecursively(player, player.getRuntimeBones()[child.getId()]);
                }
                foreach (SpriterObject child_1 in ((SpriterBone
                    )@object).getChildObjects())
                {
                    this.updateRecursively(player, player.getRuntimeObjects()[child_1.getId()]);
                }
            }
        }
 /// <summary>
 /// Resolves the inverse kinematics constraints with the implemented algorithm in
 /// <see cref="resolve(float, float, int, SpriterAbstractObject, SpriterAbstractPlayer)
 /// 	">resolve(float, float, int, SpriterAbstractObject, SpriterAbstractPlayer)
 /// 	</see>
 /// .
 /// </summary>
 /// <param name="player">player to apply the resolving.</param>
 public virtual void resolve(SpriterAbstractPlayer player)
 {
     foreach(SpriterIKObject key in this.ikMap.Keys)
     {
         for (int j = 0; j < key.iterations; j++)
         {
             SpriterAbstractObject obj = this.ikMap[key];
             if (obj is Com.Brashmonkey.Spriter.objects.SpriterBone) obj = player.getRuntimeBones()[obj.getId()];
             else obj = player.getRuntimeObjects()[obj.getId()];
             this.resolve(obj.getX(), obj.getY(), key.chainLength, obj, player);
         }
     }
 }