예제 #1
0
    void OnEnable()
    {
        eventDatabase      = Resources.Load <EventDatabase>("EventDatabase");
        eventNames         = eventDatabase.GetSortedEventNames().ToArray();
        showConfig         = false;
        showAdditionalInfo = false;
        senders            = new List <SenderEventWrapper>();
        receivers          = new List <ReceiverEventWrapper>();
        inspectedObject    = new SerializedObject(target);



        FieldInfo[] objectMembers = target.GetType().GetFields(BindingFlags.Public | BindingFlags.Instance);

        foreach (FieldInfo member in objectMembers)
        {
            if (member.FieldType == typeof(ReceiveEvent))
            {
                // Conseguimos los eventos a los que se escucha
                SerializedProperty receivingEvents = inspectedObject.FindProperty(member.Name).FindPropertyRelative("receivingEvents");

                List <int> receivingEventIndex = new List <int>();
                List <SerializedProperty> receivingEventHolder = new List <SerializedProperty>();


                for (int i = 0; i < receivingEvents.arraySize; i++)
                {
                    receivingEventIndex.Add(FindNameIndex(receivingEvents.GetArrayElementAtIndex(i).intValue));
                    receivingEventHolder.Add(receivingEvents.GetArrayElementAtIndex(i));
                }


                receivers.Add(new ReceiverEventWrapper(member.Name, receivingEventIndex, receivingEventHolder));
            }
            else
            {
                if (member.FieldType == typeof(SendEvent))
                {
                    SerializedProperty senderEvent = inspectedObject.FindProperty(member.Name).FindPropertyRelative("senderEvent");

                    if (senderEvent.intValue == 0)
                    {
                        showConfig = true;
                    }
                    SenderEventWrapper ep = new SenderEventWrapper(member.Name, FindNameIndex(senderEvent.intValue), senderEvent);
                    senders.Add(ep);
                }
            }
        }

        BaseMonoBehaviour baseMono = (BaseMonoBehaviour)target;

        object[] attributes = baseMono.GetType().GetCustomAttributes(true);
        foreach (object att in attributes)
        {
            if (att is ExtraInfoAttribute)
            {
                ExtraInfoAttribute b = (ExtraInfoAttribute)att;
                additionalInfo     = b.Info;
                showAdditionalInfo = true;
            }
        }
    }
    void OnEnable()
    {
        eventDatabase=Resources.Load<EventDatabase>("EventDatabase");
        eventNames=eventDatabase.GetSortedEventNames().ToArray();
        showConfig=false;
        showAdditionalInfo=false;
        senders=new List<SenderEventWrapper>();
        receivers=new List<ReceiverEventWrapper>();
        inspectedObject=new SerializedObject(target);

        FieldInfo[] objectMembers=target.GetType().GetFields(BindingFlags.Public | BindingFlags.Instance);

        foreach(FieldInfo member in objectMembers)
        {
            if(member.FieldType==typeof(ReceiveEvent))
            {
                // Conseguimos los eventos a los que se escucha
                SerializedProperty receivingEvents=inspectedObject.FindProperty(member.Name).FindPropertyRelative("receivingEvents");

                List<int> receivingEventIndex=new List<int>();
                List<SerializedProperty> receivingEventHolder=new List<SerializedProperty>();

                for(int i=0;i<receivingEvents.arraySize;i++)
                {
                    receivingEventIndex.Add(FindNameIndex(receivingEvents.GetArrayElementAtIndex(i).intValue));
                    receivingEventHolder.Add(receivingEvents.GetArrayElementAtIndex(i));
                }

                receivers.Add(new ReceiverEventWrapper(member.Name,receivingEventIndex,receivingEventHolder));

            }
            else
            {
                if(member.FieldType==typeof(SendEvent))
                {
                    SerializedProperty senderEvent=inspectedObject.FindProperty(member.Name).FindPropertyRelative("senderEvent");

                    if(senderEvent.intValue==0)
                    {
                        showConfig=true;
                    }
                    SenderEventWrapper ep=new SenderEventWrapper(member.Name,FindNameIndex(senderEvent.intValue),senderEvent);
                    senders.Add(ep);
                }
            }

        }

        BaseMonoBehaviour baseMono=(BaseMonoBehaviour)target;
        object[] attributes=baseMono.GetType().GetCustomAttributes(true);
        foreach(object att in attributes)
        {
            if(att is ExtraInfoAttribute)
            {
                ExtraInfoAttribute b=(ExtraInfoAttribute)att;
                additionalInfo=b.Info;
                showAdditionalInfo=true;
            }
        }
    }