public void SetUpDNADelegates(UMAData umaData) { targetAvatar.RecipeUpdated.RemoveListener(SetUpDNADelegates); if (umaData.umaRecipe.raceData) { lastRace = umaData.umaRecipe.raceData; foreach (IDNAConverter dcb in umaData.umaRecipe.raceData.dnaConverterList) { if (dcb.GetType() == typeof(DynamicDNAConverterBehaviour) || dcb.GetType() == typeof(DynamicDNAConverterController)) { if (dcb.GetType() == typeof(DynamicDNAConverterBehaviour)) { (dcb as DynamicDNAConverterBehaviour).AddDnaCallbackDelegate(ChangeCharacterRedness, "skinRedness"); (dcb as DynamicDNAConverterBehaviour).AddDnaCallbackDelegate(ChangeCharacterGreenness, "skinGreenness"); (dcb as DynamicDNAConverterBehaviour).AddDnaCallbackDelegate(ChangeCharacterBlueness, "skinBlueness"); } else { (dcb as DynamicDNAConverterController).AddDnaCallbackDelegate(ChangeCharacterRedness, "skinRedness"); (dcb as DynamicDNAConverterController).AddDnaCallbackDelegate(ChangeCharacterGreenness, "skinGreenness"); (dcb as DynamicDNAConverterController).AddDnaCallbackDelegate(ChangeCharacterBlueness, "skinBlueness"); } } } if (delegateDNAEditor) { delegateDNAEditor.Initialize(targetAvatar); } startingSkinColor = new Color(targetAvatar.GetColor("Skin").color.r, targetAvatar.GetColor("Skin").color.g, targetAvatar.GetColor("Skin").color.b); } }
public override void ProcessFrame(Playable playable, FrameData info, object playerData) { string sharedColorName = ""; avatar = playerData as DynamicCharacterAvatar; if (avatar == null) { if (Debug.isDebugBuild) { Debug.LogWarning("No DynamicCharacterAvatar set for UmaColor Playable!"); } return; } int inputCount = playable.GetInputCount(); bool colorUpdated = false; if (inputCount <= 0) { return; } UmaColorBehaviour firstBehaviour = ((ScriptPlayable <UmaColorBehaviour>)playable.GetInput(0)).GetBehaviour(); Color finalColor = Color.black; if (avatar.GetColor(firstBehaviour.sharedColorName) != null) { finalColor = avatar.GetColor(firstBehaviour.sharedColorName).color; } elapsedTime += info.deltaTime; for (int i = 0; i < inputCount; i++) { float inputWeight = playable.GetInputWeight(i); ScriptPlayable <UmaColorBehaviour> inputPlayable = (ScriptPlayable <UmaColorBehaviour>)playable.GetInput(i); UmaColorBehaviour input = inputPlayable.GetBehaviour(); sharedColorName = input.sharedColorName; finalColor = (finalColor * (1f - inputWeight)) + (input.color * inputWeight); } if (elapsedTime >= timeStep) { elapsedTime = 0f; avatar.SetColor(sharedColorName, finalColor); colorUpdated = true; } if (colorUpdated) { avatar.UpdateColors(true); } }
public void SetRawColorTest() { OverlayColorData ColorData = Avatar.GetColor("HairColor"); ColorData.channelMask[0] = new Color(1f, 1f, 1f, 1f); ColorData.channelAdditiveMask[0] = new Color(1f, 0f, 0f, 0f); Avatar.SetRawColor("HairColor", ColorData, true); }
// Start is called before the first frame update void Start() { DCA = GetComponent <DynamicCharacterAvatar>(); if (DCA != null) { Color = DCA.GetColor(ColorName); if (Color == null) { Color = new OverlayColorData(3); } DCA.SetColor(ColorName, Color, false); } }
public void ChangeSkinColor(Color SkinColor) { characterAvatar.SetColor("Skin", SkinColor); characterAvatar.UpdateColors(true); Debug.Log(characterAvatar.GetColor("Skin").color); }