Пример #1
0
        private void Equip(Entity entity, short itemSpecId, string anchorName)
        {
            if (!entity.Model.ModelInstance.HasAnchor(anchorName))
            {
                return;
            }

            if (itemSpecId == _itemSpecCache.EmptySpecId)
            {
                entity.Model.ModelInstance.RemoveSubModels(anchorName);
            }
            else
            {
                var subModel = entity.Model.ModelInstance.GetAttachedSubModels(anchorName).FirstOrDefault();
                var itemSpec = _itemSpecCache.GetItemSpec(itemSpecId);

                if (itemSpec == null)
                {
                    AddDelayedItemChange(entity, anchorName, itemSpecId);
                    return;
                }

                var newModelName = itemSpec.GetModelName();

                if (subModel != null && subModel.Model.Name.Equals(newModelName))
                {
                    // no need to change model, rejoice!
                    return;
                }

                entity.Model.ModelInstance.RemoveSubModels(anchorName);
                entity.Model.ModelInstance.AddSubModel(anchorName, _compiledModelCache.GetModel(itemSpec.GetModelName()));
            }
        }