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); }
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; } }
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") })); }
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); }
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)); } }
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)); } }
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); }
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); }
public HairHandler(DAZHairGroup hair) { _hair = hair; }
private int ConfigureSimHair(DAZHairGroup hair) { SuperController.LogError("Hair " + hair.name + " is not supported!"); return(HandlerConfigurationResult.CannotApply); }