public virtual void OnSelected(ref MotionSynthesizer synthesizer)
 {
     for (int i = 0; i < Debugger.frameDebugger.NumSelected; ++i)
     {
         SelectedFrameDebugProvider selected = Debugger.frameDebugger.GetSelected(i);
         if (selected.providerInfo.provider != null && selected.providerInfo.provider == owner.FrameDebugProvider)
         {
             Debugger.frameDebugger.TrySelect(selected.providerInfo.provider, reference.identifier);
         }
     }
 }
Esempio n. 2
0
        public void UpdateSelection()
        {
            for (int i = 0; i < Debugger.frameDebugger.NumSelected; ++i)
            {
                SelectedFrameDebugProvider selected = Debugger.frameDebugger.GetSelected(i);

                IMotionSynthesizerProvider synthesizerProvider = selected.providerInfo.provider as IMotionSynthesizerProvider;
                if (synthesizerProvider == null || !synthesizerProvider.IsSynthesizerInitialized)
                {
                    continue;
                }

                ref MotionSynthesizer synthesizer = ref synthesizerProvider.Synthesizer.Ref;

                DebugMemory debugMemory = synthesizer.ReadDebugMemory;

                if (selected.metadata != null)
                {
                    DebugIdentifier identifier = (DebugIdentifier)selected.metadata;
                    if (debugMemory.FindObjectReference(identifier).IsValid)
                    {
                        break;
                    }
                    else
                    {
                        selected.metadata = null;
                    }
                }

                for (DebugReference reference = debugMemory.FirstOrDefault; reference.IsValid; reference = debugMemory.Next(reference))
                {
                    if (!DataTypes.IsValidType(reference.identifier.typeHashCode))
                    {
                        continue;
                    }

                    Type debugType = DataTypes.GetTypeFromHashCode(reference.identifier.typeHashCode).Item1;
                    if (typeof(IMotionMatchingQuery).IsAssignableFrom(debugType))
                    {
                        selected.metadata = reference.identifier;
                        break;
                    }
                }

                Debugger.frameDebugger.TrySelect(selected.providerInfo.provider, selected.metadata);
            }