public void ReadFrom(UnityEventBase obj, IIDMap idMap)
        {
            if (obj == null)
            {
                return;
            }

            object persistentCalls = m_persistentCallGroupInfo.GetValue(obj);

            if (persistentCalls == null)
            {
                return;
            }

            object calls = m_callsInfo.GetValue(persistentCalls);

            if (calls == null)
            {
                return;
            }

            IList list = (IList)calls;

            m_calls = new PersistentPersistentCall[list.Count];
            for (int i = 0; i < list.Count; ++i)
            {
                object call = list[i];
                PersistentPersistentCall persistentCall = new PersistentPersistentCall();
                persistentCall.ReadFrom(call, idMap);
                m_calls[i] = persistentCall;
            }
        }
Пример #2
0
        public static IIDMap <T> GetIDMapProvider <T>()
        {
            IIDMap <T> idMap = null;

            if (!idMaps.ContainsKey(typeof(T)))
            {
                idMap = new DictionaryIDMap <T>();
                idMaps.Add(typeof(T), idMap);
            }
            else
            {
                idMap = idMaps[typeof(T)] as IIDMap <T>;
            }
            return(idMap);
        }
        public void ReadFrom(object obj, IIDMap idMap)
        {
            if (obj == null)
            {
                m_Arguments  = default(PersistentArgumentCache);
                m_CallState  = default(UnityEventCallState);
                m_MethodName = null;
                m_Mode       = default(PersistentListenerMode);
                m_Target     = 0;
                return;
            }

            Initialize(obj.GetType());
            m_Arguments = new PersistentArgumentCache();
            m_Arguments.ReadFrom(m_argumentsFieldInfo.GetValue(obj), idMap);
            m_CallState  = (UnityEventCallState)m_callStatFieldInfo.GetValue(obj);
            m_MethodName = (string)m_methodNameFieldInfo.GetValue(obj);
            m_Mode       = (PersistentListenerMode)m_modeFieldInfo.GetValue(obj);
            UnityObject target = (UnityObject)m_targetFieldInfo.GetValue(obj);

            m_Target = idMap.ToID(target);
        }
        public void ReadFrom(object obj, IIDMap idMap)
        {
            if (obj == null)
            {
                m_BoolArgument   = false;
                m_FloatArgument  = 0;
                m_IntArgument    = 0;
                m_StringArgument = null;
                m_ObjectArgument = 0;
                m_ObjectArgumentAssemblyTypeName = null;
                return;
            }
            Initialize(obj.GetType());
            m_BoolArgument   = (bool)m_boolArgumentFieldInfo.GetValue(obj);
            m_FloatArgument  = (float)m_floatArgumentFieldInfo.GetValue(obj);
            m_IntArgument    = (int)m_intArgumentFieldInfo.GetValue(obj);
            m_StringArgument = (string)m_stringArgumentFieldInfo.GetValue(obj);
            UnityObject uobjArgument = (UnityObject)m_objectArgumentFieldInfo.GetValue(obj);

            m_ObjectArgument = idMap.ToID(uobjArgument);
            m_ObjectArgumentAssemblyTypeName = (string)m_objectArgumentAssemblyTypeNameFieldInfo.GetValue(obj);
        }
        public void WriteTo(UnityEventBase obj, Dictionary <long, UnityObject> objects, IIDMap idMap)
        {
            if (obj == null)
            {
                return;
            }

            if (m_calls == null)
            {
                return;
            }

            object persistentCalls = Activator.CreateInstance(m_persistentCallGroupInfo.FieldType);
            object calls           = Activator.CreateInstance(m_callsInfo.FieldType);

            IList list = (IList)calls;

            for (int i = 0; i < m_calls.Length; ++i)
            {
                PersistentPersistentCall persistentCall = m_calls[i];
                if (persistentCall != null)
                {
                    object call = Activator.CreateInstance(m_callType);
                    persistentCall.WriteTo(call, objects);
                    list.Add(call);
                }
                else
                {
                    list.Add(null);
                }
            }
            m_callsInfo.SetValue(persistentCalls, calls);
            m_persistentCallGroupInfo.SetValue(obj, persistentCalls);
        }
        public void GetDependencies(UnityEventBase obj, Dictionary <long, UnityObject> dependencies, IIDMap idMap)
        {
            if (obj == null)
            {
                return;
            }

            object persistentCalls = m_persistentCallGroupInfo.GetValue(obj);

            if (persistentCalls == null)
            {
                return;
            }

            object calls = m_callsInfo.GetValue(persistentCalls);

            if (calls == null)
            {
                return;
            }

            IList list = (IList)calls;

            for (int i = 0; i < list.Count; ++i)
            {
                object call = list[i];
                PersistentPersistentCall persistentCall = new PersistentPersistentCall();
                persistentCall.GetDependencies(call, dependencies, idMap);
            }
        }
        protected void AddDependency(UnityObject obj, Dictionary <long, UnityObject> dependencies, IIDMap idMap)
        {
            if (obj == null)
            {
                return;
            }

            long instanceId = idMap.ToID(obj);

            if (!dependencies.ContainsKey(instanceId))
            {
                dependencies.Add(instanceId, obj);
            }
        }
        public void GetDependencies(object obj, Dictionary <long, UnityObject> dependencies, IIDMap idMap)
        {
            if (obj == null)
            {
                return;
            }

            Initialize(obj.GetType());

            PersistentArgumentCache args = new PersistentArgumentCache();

            args.GetDependencies(m_argumentsFieldInfo.GetValue(obj), dependencies, idMap);

            UnityObject target = (UnityObject)m_targetFieldInfo.GetValue(obj);

            AddDependency(target, dependencies, idMap);
        }
        public void GetDependencies(object obj, Dictionary <long, UnityObject> dependencies, IIDMap idMap)
        {
            if (obj == null)
            {
                return;
            }

            Initialize(obj.GetType());
            UnityObject uobjArgument = (UnityObject)m_objectArgumentFieldInfo.GetValue(obj);

            AddDependency(uobjArgument, dependencies, idMap);
        }
 public RuntimeShaderUtil()
 {
     m_idMap = IOC.Resolve <IIDMap>();
 }