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())); } }