public VoxelImporterHumanDescription(ref VoxelImporterHumanDescription src)
 {
     firstAutomapDone = src.firstAutomapDone;
     bones            = new VoxelSkinnedAnimationObjectBone[src.bones.Length];
     src.bones.CopyTo(bones, 0);
     upperArmTwist     = src.upperArmTwist;
     lowerArmTwist     = src.lowerArmTwist;
     upperLegTwist     = src.upperLegTwist;
     lowerLegTwist     = src.lowerLegTwist;
     armStretch        = src.armStretch;
     legStretch        = src.legStretch;
     feetSpacing       = src.feetSpacing;
     hasTranslationDoF = src.hasTranslationDoF;
 }
 public bool IsChanged(ref VoxelImporterHumanDescription src)
 {
     if (firstAutomapDone != src.firstAutomapDone)
     {
         return(true);
     }
     if (bones == null && src.bones != null)
     {
         return(true);
     }
     if (bones != null && src.bones == null)
     {
         return(true);
     }
     if (bones != null && src.bones != null)
     {
         if (bones.Length != src.bones.Length)
         {
             return(true);
         }
         for (int i = 0; i < bones.Length; i++)
         {
             if (bones[i] != src.bones[i])
             {
                 return(true);
             }
         }
     }
     if (upperArmTwist != src.upperArmTwist)
     {
         return(true);
     }
     if (lowerArmTwist != src.lowerArmTwist)
     {
         return(true);
     }
     if (upperLegTwist != src.upperLegTwist)
     {
         return(true);
     }
     if (lowerLegTwist != src.lowerLegTwist)
     {
         return(true);
     }
     if (armStretch != src.armStretch)
     {
         return(true);
     }
     if (legStretch != src.legStretch)
     {
         return(true);
     }
     if (feetSpacing != src.feetSpacing)
     {
         return(true);
     }
     if (hasTranslationDoF != src.hasTranslationDoF)
     {
         return(true);
     }
     return(false);
 }