/// <summary> /// Get a new theme instance and load it with settings /// </summary> /// <param name="settings"></param> /// <param name="host"></param> /// <param name="lists"></param> /// <returns></returns> public static InteractableThemeBase GetTheme(InteractableThemePropertySettings settings, GameObject host, ThemeLists lists) { int index = InspectorField.ReverseLookup(settings.Name, lists.Names.ToArray()); Type themeType = lists.Types[index]; InteractableThemeBase theme = (InteractableThemeBase)Activator.CreateInstance(themeType, host); theme.Init(host, settings); return(theme); }
/// <summary> /// Create the event and setup the values from the inspector /// </summary> /// <param name="iEvent"></param> /// <param name="lists"></param> /// <returns></returns> public static ReceiverBase GetReceiver(InteractableEvent iEvent, EventLists lists) { int index = InspectorField.ReverseLookup(iEvent.ClassName, lists.EventNames.ToArray()); Type eventType = lists.EventTypes[index]; // apply the settings? ReceiverBase newEvent = (ReceiverBase)Activator.CreateInstance(eventType, iEvent.Event); InspectorGenericFields <ReceiverBase> .LoadSettings(newEvent, iEvent.Settings); return(newEvent); }
/// <summary> /// Create the event and setup the values from the inspector /// </summary> public static ReceiverBase GetReceiver(InteractableEvent iEvent, InteractableTypesContainer interactableTypes) { #if UNITY_EDITOR int index = InspectorField.ReverseLookup(iEvent.ClassName, interactableTypes.ClassNames); Type eventType = interactableTypes.Types[index]; #else Type eventType = Type.GetType(iEvent.AssemblyQualifiedName); #endif // apply the settings? ReceiverBase newEvent = (ReceiverBase)Activator.CreateInstance(eventType, iEvent.Event); InspectorGenericFields <ReceiverBase> .LoadSettings(newEvent, iEvent.Settings); return(newEvent); }