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; } }
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; } }
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); } }