/// <summary> /// Depending on config setting a FixedUpdate or Update method will be generated. None will omit this step. /// </summary> void ProcessStateEventHandling() { StateEventHandlingMethod stateEventMethod = config.GenerateStateEventHandler; // StateEventHandlingMethod stateEventMethod = StateEventHandlingMethod.FixedUpdate; switch (stateEventMethod) { case StateEventHandlingMethod.FixedUpdate: GenericMethodCodeElement methodFixedUpdate = new GenericMethodCodeElement("void", "FixedUpdate", AccessType.Private); methodFixedUpdate.Code.Add("CheckForAnimatorStateChanges ();"); classCodeElement.Methods.Add(methodFixedUpdate); break; case StateEventHandlingMethod.Update: GenericMethodCodeElement methodUpdate = new GenericMethodCodeElement("void", "Update", AccessType.Private); methodUpdate.Code.Add("CheckForAnimatorStateChanges (animator);"); classCodeElement.Methods.Add(methodUpdate); break; default: return; } ProcessTransitions(); }
/// <summary> /// Callback from InternalAPIAccess to process a single parameter. Hopefully this remains stable on API changes. /// </summary> /// <param name="t">Type of parameter in our representation.</param> /// <param name="item">Raw parameter name.</param> /// <param name="defaultValue">Default value.</param> public void ProcessAnimatorParameter(AnimatorParameterType t, string item, string defaultValue) { string propName = CodeGenerationUtils.GeneratePropertyName(config.ParameterPrefix, item); string getterName = "Get" + propName; string setterName = "Set" + propName; string fieldName = CodeGenerationUtils.GeneratePropertyName(config.ParameterHashPrefix, item); fieldName = fieldName.FirstCharToLower(); VoidMethodCodeElement setterMethod = new VoidMethodCodeElement(setterName); GenericMethodCodeElement getterMethod = null; GenericFieldCodeElement field = new FieldCodeElement <int> (fieldName, "" + Animator.StringToHash(item)); field.ReadOnly = true; if (t == AnimatorParameterType.Bool) { getterMethod = new MethodCodeElement <bool> (getterName); getterMethod.Summary.Add("Access to boolean parameter " + item + ", default is: " + defaultValue + "."); getterMethod.Code.Add("return animator.GetBool (" + fieldName + ");"); setterMethod.Summary.Add("Set boolean value of parameter " + item + "."); setterMethod.Summary.Add("<param name=\"newValue\">New value for boolean parameter " + item + ".</param>"); setterMethod.AddParameter(typeof(bool), "newValue"); setterMethod.Code.Add("animator.SetBool (" + fieldName + ", newValue);"); } else if (t == AnimatorParameterType.Float) { getterMethod = new MethodCodeElement <float> (getterName); getterMethod.Summary.Add("Access to float parameter " + item + ", default is: " + defaultValue + "."); getterMethod.Code.Add("return animator.GetFloat (" + fieldName + ");"); setterMethod.Summary.Add("Set float value of parameter " + item + "."); setterMethod.Summary.Add("<param name=\"newValue\">New value for float parameter " + item + ".</param>"); setterMethod.AddParameter(typeof(float), "newValue"); setterMethod.Code.Add("animator.SetFloat (" + fieldName + ", newValue);"); // special case for float: provide setter with dampTime and deltaTime VoidMethodCodeElement methodExtended = new VoidMethodCodeElement(setterName); methodExtended.AddParameter(typeof(float), "newValue"); methodExtended.AddParameter(typeof(float), "dampTime"); methodExtended.AddParameter(typeof(float), "deltaTime"); methodExtended.Summary.Add("Set float parameter of " + item + " using damp and delta time ."); methodExtended.Summary.Add("<param name=\"newValue\">New value for float parameter " + item + ".</param>"); methodExtended.Summary.Add("<param name=\"dampTime\">The time allowed to parameter " + item + " to reach the value.</param>"); methodExtended.Summary.Add("<param name=\"deltaTime\">The current frame deltaTime.</param>"); methodExtended.Code.Add("animator.SetFloat (" + fieldName + ", newValue, dampTime, deltaTime);"); classCodeElement.Methods.Add(methodExtended); } else if (t == AnimatorParameterType.Int) { getterMethod = new MethodCodeElement <int> (getterName); getterMethod.Summary.Add("Access to integer parameter " + item + ", default is: " + defaultValue + "."); getterMethod.Code.Add("return animator.GetInteger (" + fieldName + ");"); setterMethod.Summary.Add("Set integer value of parameter " + item + "."); setterMethod.Summary.Add("<param name=\"newValue\">New value for integer parameter " + item + ".</param>"); setterMethod.AddParameter(typeof(int), "newValue"); setterMethod.Code.Add("animator.SetInteger (" + fieldName + ", newValue);"); } else if (t == AnimatorParameterType.Trigger) { setterMethod.Summary.Add("Activate trigger of parameter " + item + "."); setterMethod.Code.Add("animator.SetTrigger (" + fieldName + ");"); } else { Logger.Warning("Could not find type for param " + item + " as it seems to be no base type."); return; } classCodeElement.Methods.Add(setterMethod); if (getterMethod != null) { classCodeElement.Methods.Add(getterMethod); } field.Summary.Add("Hash of parameter " + item); classCodeElement.Fields.Add(field); }
/// <summary> /// Depending on config setting a FixedUpdate or Update method will be generated. None will omit this step. /// </summary> void ProcessStateEventHandling () { StateEventHandlingMethod stateEventMethod = config.GenerateStateEventHandler; // StateEventHandlingMethod stateEventMethod = StateEventHandlingMethod.FixedUpdate; switch (stateEventMethod) { case StateEventHandlingMethod.FixedUpdate: GenericMethodCodeElement methodFixedUpdate = new GenericMethodCodeElement ("void", "FixedUpdate", AccessType.Private); methodFixedUpdate.Code.Add ("CheckForAnimatorStateChanges ();"); classCodeElement.Methods.Add (methodFixedUpdate); break; case StateEventHandlingMethod.Update: GenericMethodCodeElement methodUpdate = new GenericMethodCodeElement ("void", "Update", AccessType.Private); methodUpdate.Code.Add ("CheckForAnimatorStateChanges (animator);"); classCodeElement.Methods.Add (methodUpdate); break; default: return; } ProcessTransitions (); }