Пример #1
0
        private bool OnWindowCreated(byte[] newVal)
        {
            if (ElementWdwPtr.Read <int>() == 0)
            {
                return(false);
            }

            ElementIdPtr        = SMProcess[SM17Natives.TElWind.ElementIdPtr];
            CurrentConceptIdPtr = SMProcess[SM17Natives.Globals.CurrentConceptIdPtr];
            CurrentRootIdPtr    = SMProcess[SM17Natives.Globals.CurrentRootIdPtr];
            CurrentHookIdPtr    = SMProcess[SM17Natives.Globals.CurrentHookIdPtr];

            ElementIdPtr.RegisterValueChangedEventHandler <int>(OnElementChangedInternal);

            LastElementId = CurrentElementId;

            // TODO: ??? This somehow gets delayed and causes all sorts of troubles
            //OnElementChanged?.Invoke(new SMDisplayedElementChangedArgs(SMA.Instance,
            //                                                   CurrentElement,
            //                                                   null));

            OnAvailable?.Invoke();

            return(true);
        }
Пример #2
0
        private bool OnWindowCreated(byte[] newVal)
        {
            if (ElementWdwPtr.Read <int>() == 0)
            {
                return(false);
            }

            ElementIdPtr             = SMProcess[Core.Natives.ElWind.ElementIdPtr];
            LimitChildrenCountPtr    = SMProcess[Core.Natives.Globals.LimitChildrenCountPtr];
            CurrentConceptIdPtr      = SMProcess[Core.Natives.Globals.CurrentConceptIdPtr];
            CurrentConceptGroupIdPtr = SMProcess[Core.Natives.Globals.CurrentConceptGroupIdPtr];
            CurrentRootIdPtr         = SMProcess[Core.Natives.Globals.CurrentRootIdPtr];
            CurrentHookIdPtr         = SMProcess[Core.Natives.Globals.CurrentHookIdPtr];
            LearningModePtr          = SMProcess[Core.Natives.ElWind.LearningModePtr];

            ElementIdPtr.RegisterValueChangedEventHandler <int>(OnElementChangedInternal);

            LastElementId = CurrentElementId;

            // TODO: ??? This somehow gets delayed and causes all sorts of troubles
            //OnElementChanged?.Invoke(new SMDisplayedElementChangedEventArgs(SMA.Instance,
            //                                                   CurrentElement,
            //                                                   null));

            IsAvailable = true;

            OnAvailableInternal?.Invoke();

            OnAvailable?.InvokeRemote(
                nameof(OnAvailable),
                h => OnAvailable -= h
                );

            return(true);
        }