private void OnSelect(ListViewItem item)
    {
        CustomizationSelectModelMenuItem customizationSelectModelMenuItem = item as CustomizationSelectModelMenuItem;

        if (selectedMenuItem != null)
        {
            selectedMenuItem.SetActive(active: false);
        }
        selectedMenuItem = customizationSelectModelMenuItem;
        selectedMenuItem.SetActive(active: true);
        RagdollModelMetadata ragdollModelMetadata = item.data as RagdollModelMetadata;

        if (selectedItem == null || !ragdollModelMetadata.folder.Equals(selectedItem.folder))
        {
            selectedItem = ragdollModelMetadata;
            if (RagdollPresetPartMetadata.IsEmpty(selectedItem.folder))
            {
                CustomizationController.instance.SetPart(part, null);
                return;
            }
            RagdollPresetPartMetadata ragdollPresetPartMetadata = new RagdollPresetPartMetadata();
            ragdollPresetPartMetadata.modelPath = selectedItem.folder;
            RagdollPresetPartMetadata data = ragdollPresetPartMetadata;
            CustomizationController.instance.SetPart(part, data);
        }
    }
Example #2
0
    private void AddPartButtons(WorkshopItemType part, string prefix)
    {
        if (RagdollPresetPartMetadata.IsEmpty(CustomizationController.instance.activeCustomization.preset.GetPart(part)))
        {
            return;
        }
        RagdollModel model = CustomizationController.instance.activeCustomization.GetModel(part);

        if (!(model == null))
        {
            if (model.mask1)
            {
                AddChannelButton(part, 1, string.Format(prefix, 1));
            }
            if (model.mask2)
            {
                AddChannelButton(part, 2, string.Format(prefix, 2));
            }
            if (model.mask3)
            {
                AddChannelButton(part, 3, string.Format(prefix, 3));
            }
            if (channelButtons.Count > 9)
            {
                title.gameObject.SetActive(value: false);
                buttons.pivot = new Vector2(0f, 0.3f);
            }
            else
            {
                title.gameObject.SetActive(value: true);
                buttons.pivot = new Vector2(0f, 0.4f);
            }
        }
    }
 private bool MatchesPart(RagdollPresetPartMetadata partRef, WorkshopItemMetadata part)
 {
     if (RagdollPresetPartMetadata.IsEmpty(partRef))
     {
         return(RagdollPresetPartMetadata.IsEmpty(part.folder));
     }
     return(partRef.modelPath == part.folder);
 }
Example #4
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;
     }
 }
Example #5
0
    public void ApplyPresetColors(RagdollPresetMetadata preset, bool bake, bool compress)
    {
        string b = FileTools.Combine(preset.folder, part.ToString() + ".png");
        bool   suppressCustomTexture = preset.GetPart(part).suppressCustomTexture;

        if (savePath != b || textureLoadSuppressed != suppressCustomTexture)
        {
            LoadFromPreset(preset);
        }
        RagdollPresetPartMetadata ragdollPresetPartMetadata = preset.GetPart(part);

        ApplyColors(HexConverter.HexToColor(ragdollPresetPartMetadata.color1, default(Color)), HexConverter.HexToColor(ragdollPresetPartMetadata.color2, default(Color)), HexConverter.HexToColor(ragdollPresetPartMetadata.color3, default(Color)), bake, compress);
    }
    public static RagdollPresetMetadata ClonePreset(RagdollPresetMetadata preset)
    {
        RagdollPresetMetadata ragdollPresetMetadata = new RagdollPresetMetadata();

        ragdollPresetMetadata.folder      = preset.folder;
        ragdollPresetMetadata.itemType    = preset.itemType;
        ragdollPresetMetadata.title       = preset.title;
        ragdollPresetMetadata.description = preset.description;
        ragdollPresetMetadata.workshopId  = preset.workshopId;
        ragdollPresetMetadata.main        = RagdollPresetPartMetadata.Clone(preset.main);
        ragdollPresetMetadata.head        = RagdollPresetPartMetadata.Clone(preset.head);
        ragdollPresetMetadata.upperBody   = RagdollPresetPartMetadata.Clone(preset.upperBody);
        ragdollPresetMetadata.lowerBody   = RagdollPresetPartMetadata.Clone(preset.lowerBody);
        return(ragdollPresetMetadata);
    }
    public void SetPart(WorkshopItemType part, RagdollPresetPartMetadata data)
    {
        if (data != null)
        {
            data.suppressCustomTexture = true;
        }
        activeCustomization.preset.SetPart(part, data);
        activeCustomization.ApplyPreset(activeCustomization.preset);
        RagdollModel model = activeCustomization.GetModel(part);

        if (model != null)
        {
            data.color1 = HexConverter.ColorToHex(model.color1);
            data.color2 = HexConverter.ColorToHex(model.color2);
            data.color3 = HexConverter.ColorToHex(model.color3);
        }
        activeCustomization.RebindColors(bake: false);
    }
    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;
        }
    }
    public override void OnGotFocus()
    {
        base.OnGotFocus();
        CustomizationController.instance.cameraController.FocusPart(part);
        characterTitle.SetActive(part == WorkshopItemType.ModelFull);
        headTitle.SetActive(part == WorkshopItemType.ModelHead);
        upperBodyTitle.SetActive(part == WorkshopItemType.ModelUpperBody);
        lowerBodyTitle.SetActive(part == WorkshopItemType.ModelLowerBody);
        list.onSelect       = OnSelect;
        list.onPointerClick = OnPointerClick;
        list.onSubmit       = OnSubmit;
        selectedItem        = null;
        partBackup          = CustomizationController.instance.GetPart(part);
        RagdollModelMetadata        ragdollModelMetadata = null;
        List <RagdollModelMetadata> partRepository       = WorkshopRepository.instance.GetPartRepository(part);

        for (int i = 0; i < partRepository.Count; i++)
        {
            if (MatchesPart(partBackup, partRepository[i]))
            {
                selectedItem = partRepository[i];
            }
            if (RagdollPresetPartMetadata.IsEmpty(partRepository[i].folder))
            {
                ragdollModelMetadata = partRepository[i];
            }
        }
        if (selectedItem == null)
        {
            selectedItem = ragdollModelMetadata;
        }
        int num = partRepository.IndexOf(selectedItem);

        list.Bind(partRepository);
        if (num >= 0)
        {
            list.FocusItem(num);
        }
        PageLeftButton.SetActive(list.isCarousel);
        PageRightButton.SetActive(list.isCarousel);
    }
Example #10
0
    private void AddPartButtons(WorkshopItemType part, string prefix)
    {
        if (RagdollPresetPartMetadata.IsEmpty(CustomizationController.instance.activeCustomization.preset.GetPart(part)))
        {
            return;
        }
        RagdollModel model = CustomizationController.instance.activeCustomization.GetModel(part);

        if (!(model == null))
        {
            if (model.mask1)
            {
                AddChannelButton(part, 1, string.Format(prefix, 1));
            }
            if (model.mask2)
            {
                AddChannelButton(part, 2, string.Format(prefix, 2));
            }
            if (model.mask3)
            {
                AddChannelButton(part, 3, string.Format(prefix, 3));
            }
        }
    }