Пример #1
0
 public void LoadFromPreset(RagdollPresetMetadata preset)
 {
     ReleaseBaseTexture();
     savePath = FileTools.Combine(preset.folder, part.ToString() + ".png");
     textureLoadSuppressed = preset.GetPart(part).suppressCustomTexture;
     if (!textureLoadSuppressed)
     {
         RagdollPresetPartMetadata ragdollPresetPartMetadata = preset.GetPart(part);
         if (ragdollPresetPartMetadata != null && ragdollPresetPartMetadata.bytes != null)
         {
             ChangeBaseTexture(FileTools.TextureFromBytes(part.ToString(), ragdollPresetPartMetadata.bytes), isAsset: false);
         }
         else if (!string.IsNullOrEmpty(savePath))
         {
             bool      isAsset;
             Texture2D newRes = FileTools.ReadTexture(savePath, out isAsset);
             ChangeBaseTexture(newRes, isAsset);
         }
         if (baseTexture != null)
         {
             baseTexture.Compress(highQuality: true);
             baseTexture.Apply(updateMipmaps: true);
         }
     }
     if (model.meta.metaPath.StartsWith("builtin"))
     {
         if (baseTexture == null)
         {
             ChangeBaseTexture(HFFResources.instance.FindTextureResource("SkinTextures/" + model.meta.modelPrefab.name + "Color"), isAsset: true);
         }
         if (model.maskTexture == null)
         {
             ChangeMaskTexture(HFFResources.instance.FindTextureResource("SkinTextures/" + model.meta.modelPrefab.name + "Mask"), isAsset: true);
         }
     }
     if (baseTexture != null)
     {
         width           = baseTexture.width;
         height          = baseTexture.height;
         paintingEnabled = true;
     }
     else if (model.maskTexture != null)
     {
         width           = model.maskTexture.width;
         height          = model.maskTexture.height;
         paintingEnabled = true;
     }
     else
     {
         width           = (height = 2048);
         paintingEnabled = true;
     }
 }
Пример #2
0
    private static void CopyPartTexture(RagdollPresetMetadata preset, WorkshopItemType part, string targetFolder)
    {
        string sourcePath = FileTools.Combine(preset.folder, part.ToString() + ".png");
        string text       = FileTools.Combine(targetFolder, part.ToString() + ".png");
        RagdollPresetPartMetadata part2 = preset.GetPart(part);

        if (part2 == null || string.IsNullOrEmpty(part2.modelPath) || part2.suppressCustomTexture)
        {
            FileTools.DeleteFile(text);
        }
        else
        {
            FileTools.Copy(sourcePath, text, deleteIfMissing: true);
        }
        if (part2 != null && part2.suppressCustomTexture)
        {
            part2.suppressCustomTexture = false;
        }
    }
Пример #3
0
        private void SerializePart(WorkshopItemType part, NetStream stream)
        {
            byte[] array = null;
            RagdollPresetPartMetadata part2 = GetPart(part);

            if (part2 != null)
            {
                array = part2.bytes;
                if (array == null && !string.IsNullOrEmpty(folder))
                {
                    string path = FileTools.Combine(folder, part.ToString() + ".png");
                    array = FileTools.ReadAllBytes(path);
                }
            }
            if (array != null)
            {
                stream.Write(v: true);
                stream.WriteArray(array, 32);
            }
            else
            {
                stream.Write(v: false);
            }
        }