private void RegisterType(CKlaxScriptTypeInfo typeInfo) { Type type = typeInfo.Type; Types.Add(typeInfo); m_klaxTypeMap.Add(typeInfo.Type, typeInfo); foreach (var method in type.GetMethods()) { KlaxFunctionAttribute klaxFunction = method.GetCustomAttribute <KlaxFunctionAttribute>(); if (klaxFunction != null) { MethodInfo baseMethod = method.GetBaseDefinition(); if (baseMethod.DeclaringType == type) { typeInfo.Functions.Add(CreateFunction(klaxFunction, method)); } } } foreach (var property in type.GetProperties()) { KlaxPropertyAttribute klaxProperty = property.GetCustomAttribute <KlaxPropertyAttribute>(); if (klaxProperty != null) { if (property.DeclaringType == type) { typeInfo.Properties.Add(CreateProperty(klaxProperty, property)); } } } foreach (var field in type.GetFields()) { KlaxPropertyAttribute klaxProperty = field.GetCustomAttribute <KlaxPropertyAttribute>(); if (klaxProperty != null) { if (field.DeclaringType == type) { string name = klaxProperty.DisplayName ?? field.Name; typeInfo.Properties.Add(CreateProperty(field, name, klaxProperty.Category, klaxProperty.IsReadOnly)); } } else { KlaxEventAttribute klaxEvent = field.GetCustomAttribute <KlaxEventAttribute>(); if (klaxEvent != null && field.DeclaringType == type) { typeInfo.Events.Add(CreateEvent(field, klaxEvent)); } } } }
private CKlaxScriptEventInfo CreateEvent(FieldInfo eventField, KlaxEventAttribute eventAttribute) { CKlaxScriptEventInfo info = new CKlaxScriptEventInfo() { klaxEventInfo = eventField, displayName = eventAttribute.DisplayName ?? eventField.Name, category = eventAttribute.Category, tooltip = eventAttribute.Tooltip, ParameterName1 = eventAttribute.ParameterName1, ParameterName2 = eventAttribute.ParameterName2, ParameterName3 = eventAttribute.ParameterName3, ParameterName4 = eventAttribute.ParameterName4, ParameterName5 = eventAttribute.ParameterName5, ParameterName6 = eventAttribute.ParameterName6, ParameterName7 = eventAttribute.ParameterName7, ParameterName8 = eventAttribute.ParameterName8, ParameterName9 = eventAttribute.ParameterName9, ParameterName10 = eventAttribute.ParameterName10, }; return(info); }