Ejemplo n.º 1
0
        public override void Loaded(UFrameContainer container)
        {
            base.Loaded(container);
            MVVM.HasSubNode <ServiceNode>();
            MVVM.HasSubNode <SimpleClassNode>();
            MVVM.HasSubNode <TypeReferenceNode>();

            MVVM.Name = "MVVM Kernel Graph";



            ComputedProperty.Name = "Computed Property";
            Subsystem.HasSubNode <TypeReferenceNode>();
            Element.HasSubNode <TypeReferenceNode>();
            Subsystem.HasSubNode <EnumNode>();
            Element.HasSubNode <EnumNode>();
            Service.HasSubNode <EnumNode>();
            Service.HasSubNode <SimpleClassNode>();
            Service.HasSubNode <TypeReferenceNode>();
            SceneType.Name     = "Scene Type";
            Subsystem.Name     = "Sub System";
            Service.Name       = "Service";
            ViewComponent.Name = "View Component";
            StateMachine.Name  = "State Machine";
            BindingTypes       = InvertGraphEditor.Container.Instances.Where(p => p.Key.Item1 == typeof(uFrameBindingType)).ToArray();
            container.AddItemFlag <CommandsChildItem>("Publish", Color.green);
            container.RegisterConnectable <PropertiesChildItem, ComputedPropertyNode>();//  container.Connectable<PropertiesChildItem, ComputedPropertyNode>();
        }
        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)
        {
            //
//#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);
        }