Exemple #1
0
 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);
     }
 }
Exemple #5
0
 public void ChangeSkinColor(Color SkinColor)
 {
     characterAvatar.SetColor("Skin", SkinColor);
     characterAvatar.UpdateColors(true);
     Debug.Log(characterAvatar.GetColor("Skin").color);
 }