private static Type GetSignalType(BaseSignal signal) { var signalType = signal.GetType(); while (signalType.BaseType != typeof(BaseSignal)) { signalType = signalType.BaseType; } return(signalType); }
public static void OnSignalDispatch(BaseSignal s, int nonbaseListeners, params object[] parametersToStrings) { if (Context.DebuggingOptions == null || !Context.DebuggingOptions.LogSignalDispatches) { return; } Type type = s.GetType(); string className = type.Name; if (type.IsNested) { string[] parts = type.FullName.Split('.'); parts = parts[parts.Length - 1].Split('+'); Assert.IsTrue(parts.Length == 2); className = FilterEndingsAndJoin(CamelCaseToArray(parts[0])) + " -> " + ColourNestedSignal(parts[1]); } else { className = FilterEndingsAndJoin(CamelCaseToArray(className)); } int count = s.BaseSubscriptionCount + nonbaseListeners; string p = ""; if (parametersToStrings.Length > 0) { p = "Parameters: ("; for (int i = 0; i < parametersToStrings.Length; i++) { p += parametersToStrings[i].ToString(); if (i > 0) { p += ", "; } } p += ")"; } Debug.Log(className.Colored(Colors.teal) + " - " + DetermineSignalType(type.Name) + " Dispatched to " + count + " subscriber(s) \n" + p + "\n" + type.FullName + "\n"); }