public override object Clone() { var clone = (IItemInstance)base.Clone(); ServerItemRegistry.Register(clone.ID, clone); return(clone); }
public IItemInstance CreateInstance <TDefinition>(TDefinition itemDefinition, System.Guid guid) where TDefinition : IItemDefinition { ConstructorInfo info; if (_instanceLookupDictionary.TryGetValue(itemDefinition.GetType(), out info)) { var inst = (IItemInstance)info.Invoke(new object[] { guid, itemDefinition }); ItemRegistry.Register(inst.ID, inst); // On hosts (server+client) a client shouldn't overwrite the instance in the server registry. if (ServerItemRegistry.Contains(inst.ID) == false) { ServerItemRegistry.Register(inst.ID, inst); } return(inst); } throw new ArgumentException("No instance type found for definition " + itemDefinition.GetType()); }