static ImaginaryObject[] GetConstructorParameters(Type type) { Output.Log($"Constructor parameter wizard for {type.FullName}."); Output.Log("Please select a constructor."); ConstructorInfo constructorInfo = SelectItem(type.GetConstructors()); ParameterInfo[] parameterInfoArray = constructorInfo.GetParameters(); ImaginaryObject[] parameters = new ImaginaryObject[parameterInfoArray.Length]; Output.Log("Now provide values for the different parameters."); for (var i = 0; i < parameterInfoArray.Length; i++) { ParameterInfo parameter = parameterInfoArray[i]; if (parameter.IsOptional) { if (AskYOrNQuestion( $"{parameter.Name} is optional, and defaults to {(parameter.DefaultValue is null ? "null" : parameter.DefaultValue)}, do you want to change it?") ) { parameters[i] = null; } } else { Output.Log($"{parameter.Name}:"); parameters[i] = CreateImaginaryObject(parameter.ParameterType); } } return(parameters); }
public Script(ImaginaryObject scriptBase, HierarchyObject attachedTo = null) { if (!IsScript(((IGeneralImaginaryObject)scriptBase).TypeData.GetConstructionType())) { throw new ArgumentException("ScriptBase is not a Script!"); } ScriptInstance = scriptBase.CreateInstance(); ScriptType = ((IGeneralImaginaryObject)scriptBase).TypeData.GetConstructionType(); if (ScriptType.IsHierarchyScript()) { HierarchyScript.SetUp(ScriptInstance, attachedTo); } EventSystem.EventSystem.SubscribeEvents(ScriptType, ScriptInstance); }