Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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
        }
Ejemplo n.º 3
0
        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;
        }
Ejemplo n.º 4
0
 public void SubscribeToEvent(string eventType, EventDelegate eventDelegate)
 {
     SubscribeToEvent(AtomicNET.StringToStringHash(eventType), eventDelegate);
 }
Ejemplo n.º 5
0
 public void SubscribeToEvent(AObject sender, string eventType, SenderEventDelegate eventDelegate)
 {
     SubscribeToEvent(sender, AtomicNET.StringToStringHash(eventType), eventDelegate);
 }