예제 #1
0
        /// <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
            });
        }
예제 #2
0
 /// <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()
     });
 }