示例#1
0
    // Start is called before the first frame update
    void Start()
    {
        var container = new UFrameContainer();

        container.RegisterInstance(container);

        container.Register <IPlayer, Player>();

        container.Resolve <IPlayer>().Run();

        var player1 = container.Resolve <IPlayer>();
        var player2 = container.Resolve <IPlayer>();

        Debug.Log(player1.GetHashCode());
        Debug.Log(player2.GetHashCode());

        container.RegisterInstance <IPlayer>(new Player());

        var player3 = container.Resolve <IPlayer>();
        var player4 = container.Resolve <IPlayer>();

        Debug.Log(player3.GetHashCode());
        Debug.Log(player4.GetHashCode());

        Debug.Log(container.Resolve <UFrameContainer>().GetHashCode());
        Debug.Log(container.GetHashCode());
    }
示例#2
0
        public override void Initialize(UFrameContainer container)
        {
            base.Initialize(container);
            var path          = DbRootPath;
            var dbDirectories = Directory.GetDirectories(path, "*.db", SearchOption.AllDirectories);

            foreach (var item in dbDirectories)
            {
                var db     = new TypeDatabase(new JsonRepositoryFactory(item));
                var config = GetConfig(db, Path.GetFileNameWithoutExtension(item));
                config.FullPath = item;
                container.RegisterInstance <IGraphConfiguration>(config, config.Identifier);
            }

            CurrentConfiguration = Configurations.ContainsKey(CurrentDatabaseIdentifier)
                ? Configurations[CurrentDatabaseIdentifier]
                : Configurations.Values.FirstOrDefault();

            if (CurrentConfiguration != null)
            {
                container.RegisterInstance <IGraphConfiguration>(CurrentConfiguration);

                container.RegisterInstance <IRepository>(CurrentConfiguration.Database);

                //var typeDatabase = container.Resolve<IRepository>();
                CurrentConfiguration.Database.AddListener <IDataRecordInserted>(this);
                CurrentConfiguration.Database.AddListener <IDataRecordRemoved>(this);
                CurrentConfiguration.Database.AddListener <IDataRecordPropertyChanged>(this);
                CurrentConfiguration.Database.AddListener <IDataRecordPropertyBeforeChange>(this);
            }
            else
            {
                InvertApplication.Log("A uFrameDatabase doesn't exist.");
            }
        }
        public override void Initialize(UFrameContainer container)
        {
            EditorUtility.ClearProgressBar();
            // TODO 2.0: Obviously fix undo
            //Undo.undoRedoPerformed = delegate
            //{
            //    var ps = container.Resolve<WorkspaceService>();

            //    ps.RefreshProjects();
            //    InvertGraphEditor.DesignerWindow.RefreshContent();
            //};
            container.RegisterInstance <IPlatformDrawer>(InvertGraphEditor.PlatformDrawer);
            container.RegisterInstance <IStyleProvider>(new UnityStyleProvider());
#if DOCS
            container.RegisterToolbarCommand <GenerateDocsCommand>();
            container.RegisterToolbarCommand <DocsModeCommand>();
#endif
            // container.RegisterInstance<IToolbarCommand>(new Test(), "Test");


            //container.RegisterInstance<IAssetManager>(new UnityAssetManager());

            // Command Drawers
            container.RegisterInstance <ToolbarUI>(new UnityToolbar()
            {
            });
            container.Register <ContextMenuUI, UnityContextMenu>();

            container.RegisterInstance <IGraphEditorSettings>(new UFrameSettings());
            // Where the generated code files are placed
            container.Register <ICodePathStrategy, DefaultCodePathStrategy>("Default");
            container.RegisterInstance <IWindowManager>(new UnityWindowManager());
        }
示例#4
0
        public override void Initialize(UFrameContainer container)
        {
            base.Initialize(container);
            var typeDatabase = new TypeDatabase(new JsonRepositoryFactory(Path.Combine(Application.dataPath, "../uFrame")));

            container.RegisterInstance <IRepository>(typeDatabase, "Settings");
            container.RegisterInstance <IDesctiptorsService>(new DescriptorsService(typeDatabase));
        }
 public override void Initialize(UFrameContainer container)
 {
     container.RegisterInstance<IDiagramNodeCommand>(new CreateSceneCommand(), "CreateScene");
     container.RegisterInstance<IDiagramNodeCommand>(new AddManagerToSceneCommand(), "AddToScene");
     container.RegisterInstance<IDiagramNodeCommand>(new AddManagerToSceneSelectionCommand(), "AddToSceneSelection");
     container.RegisterInstance<IDiagramNodeCommand>(new AddViewToSceneCommand(), "AddViewToScene");
     //container.RegisterInstance<IDiagramNodeCommand>(new AddViewToSceneSelectionCommand(), "AddViewToSceneSelection");
     container.RegisterInstance<IToolbarCommand>(new ScaffoldOrUpdateKernelCommand(),"ScaffoldOrUpdateKernel");
 }
 public override void Initialize(UFrameContainer container)
 {
     container.RegisterInstance <IDiagramNodeCommand>(new CreateSceneCommand(), "CreateScene");
     container.RegisterInstance <IDiagramNodeCommand>(new AddManagerToSceneCommand(), "AddToScene");
     container.RegisterInstance <IDiagramNodeCommand>(new AddManagerToSceneSelectionCommand(), "AddToSceneSelection");
     container.RegisterInstance <IDiagramNodeCommand>(new AddViewToSceneCommand(), "AddViewToScene");
     //container.RegisterInstance<IDiagramNodeCommand>(new AddViewToSceneSelectionCommand(), "AddViewToSceneSelection");
     container.RegisterInstance <IToolbarCommand>(new ScaffoldOrUpdateKernelCommand(), "ScaffoldOrUpdateKernel");
 }
示例#7
0
    // Start is called before the first frame update
    void Start()
    {
        var container = new UFrameContainer();

        container.RegisterInstance(new A());

        container.Inject(this);

        AObj.LogSelf();
    }
        public override void Initialize(UFrameContainer container)
        {
           

            EditorUtility.ClearProgressBar();
            // TODO 2.0: Obviously fix undo
            //Undo.undoRedoPerformed = delegate
            //{
            //    var ps = container.Resolve<WorkspaceService>();
           
            //    ps.RefreshProjects();
            //    InvertGraphEditor.DesignerWindow.RefreshContent();
            //};
            container.RegisterInstance<IPlatformDrawer>(InvertGraphEditor.PlatformDrawer);
            container.RegisterInstance<IStyleProvider>(new UnityStyleProvider());
#if DOCS
            container.RegisterToolbarCommand<GenerateDocsCommand>();
            container.RegisterToolbarCommand<DocsModeCommand>();
#endif
           // container.RegisterInstance<IToolbarCommand>(new Test(), "Test");


            //container.RegisterInstance<IAssetManager>(new UnityAssetManager());

            // Command Drawers
            container.RegisterInstance<ToolbarUI>(new UnityToolbar()
            {
                
            });
            container.Register<ContextMenuUI, UnityContextMenu>();

            container.RegisterInstance<IGraphEditorSettings>(new UFrameSettings());
            // Where the generated code files are placed
            container.Register<ICodePathStrategy, DefaultCodePathStrategy>("Default");
            container.RegisterInstance<IWindowManager>(new UnityWindowManager());

        }
        public override void Initialize(UFrameContainer container)
        {
            //
//#if UNITY_EDITOR
        
//            foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
//            {
//                InvertApplication.CachedAssemblies.Add(assembly);
//            }
//#endif
            var typeContainer = InvertGraphEditor.TypesContainer;
            // Drawers
            container.Register<DiagramViewModel,DiagramViewModel>();
            container.RegisterDrawer<PropertyFieldViewModel, PropertyFieldDrawer>();
            container.Register<SectionHeaderDrawer, SectionHeaderDrawer>();
            container.RegisterItemDrawer<GenericItemHeaderViewModel, GenericChildItemHeaderDrawer>();
             
            container.RegisterDrawer<InspectorViewModel, InspectorDrawer>();
            container.RegisterDrawer<SectionHeaderViewModel, SectionHeaderDrawer>();
            container.RegisterDrawer<ConnectorViewModel, ConnectorDrawer>();
            container.RegisterDrawer<ConnectionViewModel, ConnectionDrawer>();
            container.RegisterDrawer<InputOutputViewModel, SlotDrawer>();
            
            container.RegisterDrawer<DiagramViewModel, DiagramDrawer>();
            //typeContainer.AddItem<GenericSlot,InputOutputViewModel,SlotDrawer>();
            //typeContainer.AddItem<BaseClassReference, InputOutputViewModel, SlotDrawer>();

            container.RegisterInstance<IConnectionStrategy>(new InputOutputStrategy(),"InputOutputStrategy");
            //container.RegisterConnectable<GenericTypedChildItem, IClassTypeNode>();
            container.RegisterConnectable<GenericInheritableNode, GenericInheritableNode>();
            container.RegisterInstance<IConnectionStrategy>(new TypedItemConnectionStrategy(), "TypedConnectionStrategy");
            //container.RegisterInstance<IConnectionStrategy>(new RegisteredConnectionStrategy(),"RegisteredConnectablesStrategy");

            container.AddNode<EnumNode>("Enum")
                .AddCodeTemplate<EnumNode, EnumNodeGenerator>();
            container.AddItem<EnumChildItem>();

            typeContainer.RegisterInstance(new GraphTypeInfo() { Type = typeof(int), Group = "", Label = "int", IsPrimitive = true }, "int");
            typeContainer.RegisterInstance(new GraphTypeInfo() { Type = typeof(string), Group = "", Label = "string", IsPrimitive = true }, "string");
            typeContainer.RegisterInstance(new GraphTypeInfo() { Type = typeof(decimal), Group = "", Label = "decimal", IsPrimitive = true }, "decimal");
            typeContainer.RegisterInstance(new GraphTypeInfo() { Type = typeof(float), Group = "", Label = "float", IsPrimitive = true }, "float");
            typeContainer.RegisterInstance(new GraphTypeInfo() { Type = typeof(bool), Group = "", Label = "bool", IsPrimitive = true }, "bool");
            typeContainer.RegisterInstance(new GraphTypeInfo() { Type = typeof(char), Group = "", Label = "char", IsPrimitive = true }, "char");
            typeContainer.RegisterInstance(new GraphTypeInfo() { Type = typeof(DateTime), Group = "", Label = "date", IsPrimitive = true }, "date");
            typeContainer.RegisterInstance(new GraphTypeInfo() { Type = typeof(Vector2), Group = "", Label = "Vector2", IsPrimitive = true }, "Vector2");
            typeContainer.RegisterInstance(new GraphTypeInfo() { Type = typeof(Vector3), Group = "", Label = "Vector3", IsPrimitive = true }, "Vector3");
   
            container.Register<DesignerGeneratorFactory, RegisteredTemplateGeneratorsFactory>("TemplateGenerators");
            
#if UNITY_EDITOR        
            typeContainer.RegisterInstance(new GraphTypeInfo() { Type = typeof(Quaternion), Group = "", Label = "Quaternion", IsPrimitive = true }, "Quaternion");
            //container.Register<DesignerGeneratorFactory, Invert.uFrame.CodeGen.ClassNodeGenerators.SimpleClassNodeCodeFactory>("ClassNodeData");  

#endif
            // Register the container itself
            container.RegisterInstance<IUFrameContainer>(container);
            container.RegisterInstance<UFrameContainer>(container);

            container.AddNode<TypeReferenceNode, TypeReferenceNodeViewModel, TypeReferenceNodeDrawer>("Type Reference");
            container.AddNode<NoteNode, NoteNodeViewModel, NoteNodeDrawer>("Note");

            // TODO 2.0 Key-bindings
//            container.RegisterKeyBinding(new RenameCommand(), "Rename", KeyCode.F2);
//            container.RegisterKeyBinding(new SimpleEditorCommand<DiagramViewModel>((p) =>
//            {
//                p.DeselectAll();
//            }), "End All Editing", KeyCode.Return);
      
//            container.RegisterKeyBinding(new DeleteItemCommand(), "Delete Item", KeyCode.X, true);
//            container.RegisterKeyBinding(new DeleteCommand(), "Delete", KeyCode.Delete);
//#if UNITY_EDITOR
//            container.RegisterKeyBinding(new MoveUpCommand(), "Move Up", KeyCode.UpArrow);
//            container.RegisterKeyBinding(new MoveDownCommand(), "Move Down", KeyCode.DownArrow);
//#endif


//            container.RegisterKeyBinding(new SimpleEditorCommand<DiagramViewModel>((p) =>
//            {
//                InvertGraphEditor.Settings.ShowHelp = !InvertGraphEditor.Settings.ShowHelp;
//            }), "Show/Hide This Help", KeyCode.F1);
//#if DEBUG
//            container.RegisterKeyBinding(new SimpleEditorCommand<DiagramViewModel>((p) =>
//            {
//                InvertGraphEditor.Settings.ShowGraphDebug = !InvertGraphEditor.Settings.ShowGraphDebug;
//            }), "Show/Hide Debug", KeyCode.F3);
//#endif
//            container.RegisterKeyBinding(new SimpleEditorCommand<DiagramViewModel>((p) =>
//            {
//                var saveCommand = InvertApplication.Container.Resolve<IToolbarCommand>("Save");
//                InvertGraphEditor.ExecuteCommand(saveCommand);
//            }), "Save & Compile", KeyCode.S, true, true);

          
        }
 public override void Initialize(UFrameContainer container)
 {
     base.Initialize(container);
     container.RegisterInstance <IExplorerProvider>(new GraphExplorerProvider(), "Graphs");
 }
示例#11
0
 public override void Initialize(UFrameContainer container)
 {
     base.Initialize(container);
     container.RegisterInstance <IConnectionStrategy>(new ConvertConnectionStrategy(), "ConvertConnectionStrategy");
 }
 public override void Initialize(UFrameContainer container)
 {
     base.Initialize(container);
     container.RegisterInstance<IExplorerProvider>(new GraphExplorerProvider(),"Graphs");
 }
        public override void Initialize(UFrameContainer container)
        {
            //
//#if UNITY_EDITOR

//            foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
//            {
//                InvertApplication.CachedAssemblies.Add(assembly);
//            }
//#endif
            var typeContainer = InvertGraphEditor.TypesContainer;

            // Drawers
            container.Register <DiagramViewModel, DiagramViewModel>();
            container.RegisterDrawer <PropertyFieldViewModel, PropertyFieldDrawer>();
            container.Register <SectionHeaderDrawer, SectionHeaderDrawer>();
            container.RegisterItemDrawer <GenericItemHeaderViewModel, GenericChildItemHeaderDrawer>();

            container.RegisterDrawer <InspectorViewModel, InspectorDrawer>();
            container.RegisterDrawer <SectionHeaderViewModel, SectionHeaderDrawer>();
            container.RegisterDrawer <ConnectorViewModel, ConnectorDrawer>();
            container.RegisterDrawer <ConnectionViewModel, ConnectionDrawer>();
            container.RegisterDrawer <InputOutputViewModel, SlotDrawer>();

            container.RegisterDrawer <DiagramViewModel, DiagramDrawer>();
            //typeContainer.AddItem<GenericSlot,InputOutputViewModel,SlotDrawer>();
            //typeContainer.AddItem<BaseClassReference, InputOutputViewModel, SlotDrawer>();

            // !! Keep TypedItemConnectionStrategy Before InputOutputStrategy to fix Type Connection Related Type problem
            container.RegisterInstance <IConnectionStrategy>(new TypedItemConnectionStrategy(), "TypedConnectionStrategy");
            container.RegisterInstance <IConnectionStrategy>(new InputOutputStrategy(), "InputOutputStrategy");
            container.RegisterConnectable <GenericInheritableNode, GenericInheritableNode>();
            //container.RegisterConnectable<GenericTypedChildItem, IClassTypeNode>();
            //container.RegisterInstance<IConnectionStrategy>(new RegisteredConnectionStrategy(),"RegisteredConnectablesStrategy");

            container.AddNode <EnumNode>("Enum").AddCodeTemplate <EnumNode, EnumNodeGenerator>();
            container.AddItem <EnumChildItem>();
            typeContainer.RegisterInstance(new GraphTypeInfo()
            {
                Type = typeof(byte), Group = "", Label = "byte", IsPrimitive = true
            }, "byte");
            typeContainer.RegisterInstance(new GraphTypeInfo()
            {
                Type = typeof(sbyte), Group = "", Label = "sbyte", IsPrimitive = true
            }, "sbyte");
            typeContainer.RegisterInstance(new GraphTypeInfo()
            {
                Type = typeof(int), Group = "", Label = "int", IsPrimitive = true
            }, "int");
            typeContainer.RegisterInstance(new GraphTypeInfo()
            {
                Type = typeof(uint), Group = "", Label = "uint", IsPrimitive = true
            }, "uint");
            typeContainer.RegisterInstance(new GraphTypeInfo()
            {
                Type = typeof(long), Group = "", Label = "long", IsPrimitive = true
            }, "long");
            typeContainer.RegisterInstance(new GraphTypeInfo()
            {
                Type = typeof(ulong), Group = "", Label = "ulong", IsPrimitive = true
            }, "ulong");
            typeContainer.RegisterInstance(new GraphTypeInfo()
            {
                Type = typeof(string), Group = "", Label = "string", IsPrimitive = true
            }, "string");
            typeContainer.RegisterInstance(new GraphTypeInfo()
            {
                Type = typeof(decimal), Group = "", Label = "decimal", IsPrimitive = true
            }, "decimal");
            typeContainer.RegisterInstance(new GraphTypeInfo()
            {
                Type = typeof(float), Group = "", Label = "float", IsPrimitive = true
            }, "float");
            typeContainer.RegisterInstance(new GraphTypeInfo()
            {
                Type = typeof(double), Group = "", Label = "double", IsPrimitive = true
            }, "double");
            typeContainer.RegisterInstance(new GraphTypeInfo()
            {
                Type = typeof(bool), Group = "", Label = "bool", IsPrimitive = true
            }, "bool");
            typeContainer.RegisterInstance(new GraphTypeInfo()
            {
                Type = typeof(char), Group = "", Label = "char", IsPrimitive = true
            }, "char");
            typeContainer.RegisterInstance(new GraphTypeInfo()
            {
                Type = typeof(DateTime), Group = "", Label = "date", IsPrimitive = true
            }, "date");
            typeContainer.RegisterInstance(new GraphTypeInfo()
            {
                Type = typeof(Vector2), Group = "", Label = "Vector2", IsPrimitive = true
            }, "Vector2");
            typeContainer.RegisterInstance(new GraphTypeInfo()
            {
                Type = typeof(Vector3), Group = "", Label = "Vector3", IsPrimitive = true
            }, "Vector3");

            container.Register <DesignerGeneratorFactory, RegisteredTemplateGeneratorsFactory>("TemplateGenerators");

#if UNITY_EDITOR
            typeContainer.RegisterInstance(new GraphTypeInfo()
            {
                Type = typeof(Quaternion), Group = "", Label = "Quaternion", IsPrimitive = true
            }, "Quaternion");
            //container.Register<DesignerGeneratorFactory, Invert.uFrame.CodeGen.ClassNodeGenerators.SimpleClassNodeCodeFactory>("ClassNodeData");
#endif
            // Register the container itself
            container.RegisterInstance <IUFrameContainer>(container);
            container.RegisterInstance <UFrameContainer>(container);

            container.AddNode <TypeReferenceNode, TypeReferenceNodeViewModel, TypeReferenceNodeDrawer>("Type Reference");
            container.AddNode <NoteNode, NoteNodeViewModel, NoteNodeDrawer>("Note");

            // TODO 2.0 Key-bindings
            //            container.RegisterKeyBinding(new RenameCommand(), "Rename", KeyCode.F2);
            //            container.RegisterKeyBinding(new SimpleEditorCommand<DiagramViewModel>((p) =>
            //            {
            //                p.DeselectAll();
            //            }), "End All Editing", KeyCode.Return);

            //            container.RegisterKeyBinding(new DeleteItemCommand(), "Delete Item", KeyCode.X, true);
            //            container.RegisterKeyBinding(new DeleteCommand(), "Delete", KeyCode.Delete);
//#if UNITY_EDITOR
//            container.RegisterKeyBinding(new MoveUpCommand(), "Move Up", KeyCode.UpArrow);
//            container.RegisterKeyBinding(new MoveDownCommand(), "Move Down", KeyCode.DownArrow);
//#endif


            //            container.RegisterKeyBinding(new SimpleEditorCommand<DiagramViewModel>((p) =>
            //            {
            //                InvertGraphEditor.Settings.ShowHelp = !InvertGraphEditor.Settings.ShowHelp;
            //            }), "Show/Hide This Help", KeyCode.F1);
            //#if DEBUG
            //            container.RegisterKeyBinding(new SimpleEditorCommand<DiagramViewModel>((p) =>
            //            {
            //                InvertGraphEditor.Settings.ShowGraphDebug = !InvertGraphEditor.Settings.ShowGraphDebug;
            //            }), "Show/Hide Debug", KeyCode.F3);
            //#endif
            //            container.RegisterKeyBinding(new SimpleEditorCommand<DiagramViewModel>((p) =>
            //            {
            //                var saveCommand = InvertApplication.Container.Resolve<IToolbarCommand>("Save");
            //                InvertGraphEditor.ExecuteCommand(saveCommand);
            //            }), "Save & Compile", KeyCode.S, true, true);
        }