void OnResourceManagerDiagnosticEvent(ResourceManager.DiagnosticEventContext eventContext)
        {
            var            hashCode = eventContext.OperationHandle.GetHashCode();
            DiagnosticInfo diagInfo = null;

            if (eventContext.Type == ResourceManager.DiagnosticEventType.AsyncOperationDestroy)
            {
                if (m_cachedDiagnosticInfo.TryGetValue(hashCode, out diagInfo))
                {
                    m_cachedDiagnosticInfo.Remove(hashCode);
                }
            }
            else
            {
                if (!m_cachedDiagnosticInfo.TryGetValue(hashCode, out diagInfo))
                {
                    m_dependencyBuffer.Clear();
                    eventContext.OperationHandle.GetDependencies(m_dependencyBuffer);
                    var depIds = new int[m_dependencyBuffer.Count];
                    for (int i = 0; i < depIds.Length; i++)
                    {
                        depIds[i] = m_dependencyBuffer[i].GetHashCode();
                    }
                    m_cachedDiagnosticInfo.Add(hashCode, diagInfo = new DiagnosticInfo()
                    {
                        ObjectId = hashCode, DisplayName = eventContext.OperationHandle.DebugName, Dependencies = depIds
                    });
                }
            }

            if (diagInfo != null)
            {
                m_eventCollector.PostEvent(diagInfo.CreateEvent("ResourceManager", eventContext.Type, Time.frameCount, eventContext.EventValue));
            }
        }
        void OnResourceManagerDiagnosticEvent(ResourceManager.DiagnosticEventContext eventContext)
        {
            var            hashCode = CalculateHashCode(eventContext.OperationHandle);
            DiagnosticInfo diagInfo = null;

            if (eventContext.Type == ResourceManager.DiagnosticEventType.AsyncOperationDestroy)
            {
                if (m_cachedDiagnosticInfo.TryGetValue(hashCode, out diagInfo))
                {
                    m_cachedDiagnosticInfo.Remove(hashCode);
                }
            }
            else
            {
                if (!m_cachedDiagnosticInfo.TryGetValue(hashCode, out diagInfo))
                {
                    List <AsyncOperationHandle> deps = new List <AsyncOperationHandle>();
                    eventContext.OperationHandle.GetDependencies(deps);
                    var depIds = new int[deps.Count];

                    for (int i = 0; i < depIds.Length; i++)
                    {
                        depIds[i] = CalculateHashCode(deps[i]);
                    }

                    if (eventContext.OperationHandle.DebugName.Contains("CompletedOperation"))
                    {
                        string displayName = GenerateCompletedOperationDisplayName(eventContext.OperationHandle);
                        m_cachedDiagnosticInfo.Add(hashCode, diagInfo = new DiagnosticInfo()
                        {
                            ObjectId = hashCode, DisplayName = displayName, Dependencies = depIds
                        });
                    }
                    else
                    {
                        m_cachedDiagnosticInfo.Add(hashCode, diagInfo = new DiagnosticInfo()
                        {
                            ObjectId = hashCode, DisplayName = eventContext.OperationHandle.DebugName, Dependencies = depIds
                        });
                    }
                }
            }

            if (diagInfo != null)
            {
                DiagnosticEventCollectorSingleton.Instance.PostEvent(diagInfo.CreateEvent("ResourceManager", eventContext.Type, Time.frameCount, eventContext.EventValue));
            }
        }
Exemplo n.º 3
0
        private void DiagnosticCallback(ResourceManager.DiagnosticEventContext context)
        {
            if (context.Type == ResourceManager.DiagnosticEventType.AsyncOperationReferenceCount)
            {
                if (context.Location == null)
                {
                    return;
                }

                if (!context.Location.ToString().Equals(Location))
                {
                    return;
                }

                ReferenceCount = context.EventValue;
            }
        }