public CSComponentInfo(Type type) { this.Type = type; // Fields var fields = type.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance) .Where(field => field.IsDefined(typeof(InspectorAttribute), true)); InspectorFields = fields.ToArray <FieldInfo>(); foreach (var field in InspectorFields) { fieldLookup[AtomicNET.StringToStringHash(field.Name)] = field; } // Methods Type[] updateParms = new Type[1] { typeof(float) }; UpdateMethod = type.GetMethod("Update", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.DefaultBinder, updateParms, null); Type[] startParms = new Type[0] { }; StartMethod = type.GetMethod("Start", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.DefaultBinder, startParms, null); }
public CSComponentInfo(Type type) { #if ATOMIC_DESKTOP || ATOMIC_MOBILE this.Type = type; // Fields List <FieldInfo> fields = new List <FieldInfo>(); fields.AddRange(type.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance) .Where(field => field.IsDefined(typeof(InspectorAttribute), true))); // Inspector fields may be private. BindingFlags.NonPublic does not report private fields in superclasses var baseType = type.BaseType; while (baseType != typeof(CSComponent)) { fields.AddRange(baseType.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance) .Where(field => field.IsDefined(typeof(InspectorAttribute), true))); baseType = baseType.BaseType; } InspectorFields = fields.ToArray <FieldInfo>(); foreach (var field in InspectorFields) { fieldLookup[AtomicNET.StringToStringHash(field.Name)] = field; } // Methods Type[] updateParms = new Type[1] { typeof(float) }; UpdateMethod = type.GetMethod("Update", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.DefaultBinder, updateParms, null); Type[] postUpdateParms = new Type[1] { typeof(float) }; PostUpdateMethod = type.GetMethod("PostUpdate", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.DefaultBinder, postUpdateParms, null); Type[] physicsPreStepParms = new Type[1] { typeof(float) }; PhysicsPreStepMethod = type.GetMethod("PhysicsPreStep", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.DefaultBinder, physicsPreStepParms, null); Type[] physicsPostStepParms = new Type[1] { typeof(float) }; PhysicsPostStepMethod = type.GetMethod("PhysicsPostStep", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.DefaultBinder, physicsPostStepParms, null); Type[] startParms = new Type[0] { }; StartMethod = type.GetMethod("Start", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.DefaultBinder, startParms, null); #endif }
public static void RegisterEventID <T>(string eventName) where T : NativeEventData { var eventID = AtomicNET.StringToStringHash(eventName); var type = typeof(T); eventIDLookup[type] = eventID; typeLookup[eventID] = type; // create event data cache var cache = new NativeEventDataCache(type); eventCache[type] = cache; eventCacheByEventID[eventID] = cache; }
public void SubscribeToEvent(string eventType, EventDelegate eventDelegate) { SubscribeToEvent(AtomicNET.StringToStringHash(eventType), eventDelegate); }
public void SubscribeToEvent(AObject sender, string eventType, SenderEventDelegate eventDelegate) { SubscribeToEvent(sender, AtomicNET.StringToStringHash(eventType), eventDelegate); }