Exemplo n.º 1
0
 private void OnOpenedBlueprint(RdEditorModel unrealModel, BlueprintReference blueprintReference)
 {
     unrealModel.OpenBlueprint.Fire(blueprintReference);
 }
Exemplo n.º 2
0
        private void ResetModel(Lifetime lf, IProtocol protocol)
        {
            myUnrealHost.PerformModelAction(riderModel =>
            {
                UE4Library.RegisterDeclaredTypesSerializers(riderModel.SerializationContext.Serializers);
                riderModel.EditorId.SetValue(riderModel.EditorId.Value + 1);
            });

            var unrealModel = new RdEditorModel(lf, protocol);

            UE4Library.RegisterDeclaredTypesSerializers(unrealModel.SerializationContext.Serializers);

            unrealModel.AllowSetForegroundWindow.Set((lt, pid) =>
            {
                return(myUnrealHost.PerformModelAction(riderModel =>
                                                       riderModel.AllowSetForegroundWindow.Start(lt, pid)) as RdTask <bool>);
            });

            unrealModel.UnrealLog.Advise(lf,
                                         logEvent =>
            {
                myUnrealHost.PerformModelAction(riderModel => { OnMessageReceived(riderModel, logEvent); });
            });

            unrealModel.OnBlueprintAdded.Advise(lf, blueprintClass =>
            {
                //todo
            });

            unrealModel.Play.Advise(lf, val =>
            {
                myUnrealHost.PerformModelAction(riderModel =>
                {
                    if (PlayedFromRider)
                    {
                        return;
                    }
                    try
                    {
                        PlayedFromUnreal = true;
                        riderModel.Play.Set(val);
                    }
                    finally
                    {
                        PlayedFromUnreal = false;
                    }
                });
            });
            unrealModel.PlayMode.Advise(lf, val =>
            {
                myUnrealHost.PerformModelAction(riderModel =>
                {
                    if (PlayModeFromRider)
                    {
                        return;
                    }
                    try
                    {
                        PlayModeFromUnreal = true;
                        riderModel.PlayMode.Set(val);
                    }
                    finally
                    {
                        PlayModeFromUnreal = false;
                    }
                });
            });

            myUnrealHost.PerformModelAction(riderModel =>
            {
                riderModel.FilterLinkCandidates.Set((lifetime, candidates) =>
                                                    RdTask <ILinkResponse[]> .Successful(candidates
                                                                                         .Select(request => myLinkResolver.ResolveLink(request, unrealModel.IsBlueprintPathName))
                                                                                         .AsArray()));
                riderModel.IsMethodReference.Set((lifetime, methodReference) =>
                {
                    var b = myEditorNavigator.IsMethodReference(methodReference);
                    return(RdTask <bool> .Successful(b));
                });
                riderModel.OpenBlueprint.Advise(lf, blueprintReference =>
                                                OnOpenedBlueprint(unrealModel, blueprintReference));

                riderModel.NavigateToClass.Advise(lf,
                                                  uClass => myEditorNavigator.NavigateToClass(uClass));

                riderModel.NavigateToMethod.Advise(lf,
                                                   methodReference => myEditorNavigator.NavigateToMethod(methodReference));

                riderModel.Play.Advise(lf, val =>
                {
                    if (PlayedFromUnreal)
                    {
                        return;
                    }
                    try
                    {
                        PlayedFromRider = true;
                        unrealModel.Play.Set(val);
                    }
                    finally
                    {
                        PlayedFromRider = false;
                    }
                });

                riderModel.PlayMode.Advise(lf, val =>
                {
                    if (PlayModeFromUnreal)
                    {
                        return;
                    }
                    try
                    {
                        PlayModeFromRider = true;
                        unrealModel.PlayMode.Set(val);
                    }
                    finally
                    {
                        PlayModeFromRider = false;
                    }
                });
                riderModel.FrameSkip.Advise(lf, skip =>
                                            unrealModel.FrameSkip.Fire(skip));
            });

            if (myComponentLifetime.IsAlive)
            {
                myLocks.ExecuteOrQueueEx(myComponentLifetime, "setModel",
                                         () => { myEditorModel.SetValue(unrealModel); });
            }
        }