static void ApplyParameters(GameObject gameObject, string parameters, WhenToApply whenToApply)
 {
     string[] parameterArray = parameters.Split(';');
     foreach (string parameter in parameterArray)
     {
         ApplyParameter(gameObject, parameter, whenToApply);
     }
 }
        static void ApplyParameter(GameObject gameObject, string parameter, WhenToApply whenToApply)
        {
            int indexOfEquals = parameter.IndexOf('=');

            if (indexOfEquals > 0)
            {
                string leftSide  = parameter.Substring(0, indexOfEquals).Trim();
                string rightSide = parameter.Substring(indexOfEquals + 1).Trim();
                ApplyParameter(gameObject, leftSide, rightSide, whenToApply);
            }
        }
        //static void ApplyColorOverride(GameObject gameObject, Color colorOverride)
        //{
        //	Talespire.Log.Debug($"colorOverride: {colorOverride}");
        //	Component script = gameObject.GetScript("RFX4_EffectSettings");
        //	if (script != null)
        //	{
        //		Talespire.Log.Warning($"Found script!");
        //		ReflectionHelper.SetPublicFieldValue(script, "UseCustomColor", true);
        //		ReflectionHelper.SetPublicFieldValue(script, "EffectColor", colorOverride);
        //		if (script is MonoBehaviour monoBehaviour)
        //		{
        //			monoBehaviour.enabled = false;
        //			monoBehaviour.enabled = true;
        //		}
        //	}
        //}

        static void ApplyParameter(GameObject gameObject, string leftSide, string rightSide, WhenToApply whenToApply)
        {
            if (whenToApply == WhenToApply.AfterCreation)
            {
                if (afterCreationParameterOverrides.ContainsKey(leftSide))
                {
                    afterCreationParameterOverrides[leftSide].Apply(gameObject, rightSide);
                }
            }
            else if (whenToApply == WhenToApply.AfterPositioning)
            {
                if (afterPositioningParameterOverrides.ContainsKey(leftSide))
                {
                    afterPositioningParameterOverrides[leftSide].Apply(gameObject, rightSide);
                }
            }
            //if (leftSide == "color")
            //{
            //	Color colorOverride = new HueSatLight(rightSide).AsRGB.ToUnityColor();
            //	ApplyColorOverride(gameObject, colorOverride);
            //}
        }
 public EffectParameterAttribute(string name, WhenToApply whenToApply = WhenToApply.AfterCreation)
 {
     Name        = name;
     WhenToApply = whenToApply;
 }