/// <summary> /// Does not clone textures and shapes /// </summary> /// <returns></returns> public override EntitySidedProperties Clone() { AnimationMetaData[] newAnimations = null; if (Animations != null) { newAnimations = new AnimationMetaData[Animations.Length]; for (int i = 0; i < newAnimations.Length; i++) { newAnimations[i] = Animations[i].Clone(); } } Dictionary <string, AnimationMetaData> newAnimationsByMetaData = new Dictionary <string, AnimationMetaData>(StringComparer.OrdinalIgnoreCase); Dictionary <uint, AnimationMetaData> animsByCrc32 = new Dictionary <uint, AnimationMetaData>(); foreach (var animation in AnimationsByMetaCode) { newAnimationsByMetaData[animation.Key] = animation.Value.Clone(); animsByCrc32[newAnimationsByMetaData[animation.Key].CodeCrc32] = newAnimationsByMetaData[animation.Key]; } return(new EntityClientProperties(BehaviorsAsJsonObj.Clone() as JsonObject[]) { Textures = Textures, RendererName = RendererName, GlowLevel = GlowLevel, Size = Size, Shape = Shape?.Clone(), Animations = newAnimations, AnimationsByMetaCode = newAnimationsByMetaData, AnimationsByCrc32 = animsByCrc32 }); }
/// <summary> /// Makes a copy of this EntiyServerProperties type /// </summary> /// <returns></returns> public override EntitySidedProperties Clone() { return(new EntityServerProperties(BehaviorsAsJsonObj.Clone() as JsonObject[]) { Attributes = Attributes?.Clone(), SpawnConditions = SpawnConditions?.Clone() }); }