Ejemplo n.º 1
0
 private static bool IsHeadHair(DAZHairGroup h)
 {
     if (h.tagsArray == null)
     {
         return(true);
     }
     if (h.tagsArray.Length == 0)
     {
         return(true);
     }
     if (
         Array.IndexOf(h.tagsArray, "head") > -1 ||
         Array.IndexOf(h.tagsArray, "face") > -1
         )
     {
         return(true);
     }
     // Oops, forgot to tag
     if (
         Array.IndexOf(h.tagsArray, "arms") == -1 &&
         Array.IndexOf(h.tagsArray, "full body") == -1 &&
         Array.IndexOf(h.tagsArray, "genital") == -1 &&
         Array.IndexOf(h.tagsArray, "legs") == -1 &&
         Array.IndexOf(h.tagsArray, "torso") == -1
         )
     {
         return(true);
     }
     return(false);
 }
Ejemplo n.º 2
0
    private void ApplyAll(bool active)
    {
        // Try again next frame
        if (_selector.selectedCharacter?.skin == null)
        {
            MakeDirty("Skin not yet loaded.");
            return;
        }

        _character = _selector.selectedCharacter;
        _hair      = _selector.selectedHairGroup;

        ApplyAutoWorldScale(active);
        ApplyCameraPosition(active);
        ApplyPossessorMeshVisibility(active);
        if (UpdateHandler(ref _skinHandler, active && _hideFaceJSON.val))
        {
            ConfigureHandler("Skin", ref _skinHandler, _skinHandler.Configure(_character.skin));
        }
        if (UpdateHandler(ref _hairHandler, active && _hideHairJSON.val))
        {
            ConfigureHandler("Hair", ref _hairHandler, _hairHandler.Configure(_character, _hair));
        }

        if (!_dirty)
        {
            _tryAgainAttempts = 0;
        }
    }
Ejemplo n.º 3
0
 private IEnumerable <MaterialReference> GetScalpMaterialReferences(DAZHairGroup hair)
 {
     return(hair.GetComponentsInChildren <DAZSkinWrap>()
            .SelectMany(m => m.GPUmaterials)
            .Distinct()
            .Select(m => new MaterialReference
     {
         material = m,
         originalAlphaAdjust = m.GetFloat("_AlphaAdjust")
     }));
 }
Ejemplo n.º 4
0
        public static bool Supports(DAZHairGroup hair)
        {
            if (hair == null || hair.name == "NoHair")
            {
                return(false);
            }

            if (hair.name == "SimHairGroup" || hair.name == "SimHairGroup2")
            {
                return(false);
            }

            return(true);
        }
Ejemplo n.º 5
0
        public int Configure(DAZHairGroup hair)
        {
            if (hair == null || hair.name == "NoHair")
            {
                return(HandlerConfigurationResult.CannotApply);
            }

            if (hair.name == "Sim2Hair" || hair.name == "Sim2HairMale" || hair.name == "CustomHairItem")
            {
                return(ConfigureSimV2Hair(hair));
            }
            else if (hair.name == "SimHairGroup" || hair.name == "SimHairGroup2")
            {
                return(ConfigureSimHair(hair));
            }
            else
            {
                return(ConfigureSimpleHair(hair));
            }
        }
Ejemplo n.º 6
0
        public int Configure(DAZCharacter character, DAZHairGroup hair)
        {
            if (hair.name == "NoHair")
            {
                return(HandlerConfigurationResult.CannotApply);
            }

            if (hair.name == "Sim2Hair" || hair.name == "Sim2HairMale")
            {
                return(ConfigureSimV2Hair(hair));
            }
            else if (hair.name == "SimHairGroup" || hair.name == "SimHairGroup2")
            {
                return(ConfigureSimHair(hair));
            }
            else
            {
                return(ConfigureSimpleHair(hair));
            }
        }
Ejemplo n.º 7
0
        private int ConfigureSimV2Hair(DAZHairGroup hair)
        {
            var materialRefs = new List <MaterialReference>(GetScalpMaterialReferences(hair));

            if (materialRefs.Count != 0)
            {
                _materialRefs = materialRefs;
            }

            var hairMaterial = hair.GetComponentInChildren <MeshRenderer>()?.material;

            if (hairMaterial == null)
            {
                return(HandlerConfigurationResult.TryAgainLater);
            }

            _hairMaterial            = hairMaterial;
            _hairShaderProperty      = "_StandWidth";
            _hairShaderHiddenValue   = 0f;
            _hairShaderOriginalValue = _hairMaterial.GetFloat(_hairShaderProperty);
            return(HandlerConfigurationResult.Success);
        }
Ejemplo n.º 8
0
        private int ConfigureSimpleHair(DAZHairGroup hair)
        {
            var materialRefs = hair.GetComponentsInChildren <DAZMesh>()
                               .SelectMany(m => m.materials)
                               .Distinct()
                               .Select(m => new MaterialReference
            {
                material            = m,
                originalAlphaAdjust = m.GetFloat("_AlphaAdjust")
            })
                               .ToList();

            if (materialRefs.Count == 0)
            {
                return(HandlerConfigurationResult.TryAgainLater);
            }

            materialRefs.AddRange(GetScalpMaterialReferences(hair));

            _materialRefs = materialRefs;

            return(HandlerConfigurationResult.Success);
        }
Ejemplo n.º 9
0
 public HairHandler(DAZHairGroup hair)
 {
     _hair = hair;
 }
Ejemplo n.º 10
0
 private int ConfigureSimHair(DAZHairGroup hair)
 {
     SuperController.LogError("Hair " + hair.name + " is not supported!");
     return(HandlerConfigurationResult.CannotApply);
 }