public void InitializeAll()
        {
            var sceneRoot = commonNodeFactory.WorldRoot(true);
            var scene     = Scene.Create(sceneRoot);

            scene.BackgroundColor = Color4.White;
            scene.Root            = sceneRoot;
            worldTreeService.World.Scenes.Clear();
            worldTreeService.World.Scenes.Add(scene);

            //var abstractRootComponent = world.Components.ThatAre<IStoryComponent>().Single();
            //abstractRootComponent.StartLayoutType = typeof(SphereStoryLayout);

            sceneRoot.GetComponent <IStoryComponent>().StartLayoutType = typeof(NestedSpheresStoryLayout);

            var subworld = commonNodeFactory.StoryNode();

            subworld.ChildNodes.Add(commonNodeFactory.StoryNode());
            subworld.ChildNodes.Add(commonNodeFactory.StoryNode());
            subworld.ChildNodes.Add(commonNodeFactory.StoryNode());

            sceneRoot.ChildNodes.Add(subworld);

            storyService.AddEdge(subworld.ChildNodes[0].Id, subworld.ChildNodes[1].Id);
            storyService.AddEdge(subworld.ChildNodes[1].Id, subworld.ChildNodes[2].Id);

            var renderingControl = gui.RenderControl;

            ResetEditingViewports(renderingControl, sceneRoot.GetComponent <IFocusNodeComponent>());
        }
Пример #2
0
        private ConversionContext InitConversionContext(IFileLoadInfo loadInfo, Presentation ppPresentation)
        {
            var nextId = 1;
            var world  = AmFactory.Create <World>();
            var scene  = AmFactory.Create <Scene>();

            scene.Name            = "Scene";
            scene.BackgroundColor = Color4.White;
            world.Scenes.Add(scene);
            var rootNode = commonNodeFactory.WorldRoot(true);

            scene.Root  = rootNode;
            rootNode.Id = nextId++;
            var floorNode = commonNodeFactory.StoryNode();

            floorNode.Id   = nextId++;
            floorNode.Name = "Slides";
            rootNode.ChildNodes.Add(floorNode);

            return(new ConversionContext
            {
                NextId = nextId,
                LoadInfo = loadInfo,
                PpPresentation = ppPresentation,
                World = world,
                SlideNodes = floorNode.ChildNodes
            });
        }
Пример #3
0
        public static ISceneNode AddChild(IStoryService storyService, ICommonNodeFactory commonNodeFactory, int parent, object transaction)
        {
            storyService.OnBeginTransaction(transaction);
            var newNode = commonNodeFactory.StoryNode();

            if (storyService.GlobalGraph.Leaves.Contains(parent))
            {
                var nexts = storyService.GlobalGraph.Next[parent].ToArray();
                var prevs = storyService.GlobalGraph.Previous[parent].ToArray();
                foreach (var prev in prevs)
                {
                    storyService.RemoveEdge(prev, parent);
                }
                foreach (var next in nexts)
                {
                    storyService.RemoveEdge(parent, next);
                }
                storyService.GlobalGraph.NodeObjects[parent].ChildNodes.Add(newNode);
                foreach (var prev in prevs)
                {
                    storyService.AddEdge(prev, newNode.Id);
                }
                foreach (var next in nexts)
                {
                    storyService.AddEdge(newNode.Id, next);
                }
            }
            else
            {
                storyService.GlobalGraph.NodeObjects[parent].ChildNodes.Add(newNode);
            }
            storyService.OnEndTransaction(transaction);
            return(newNode);
        }
Пример #4
0
 public override void AmOnAttached()
 {
     guiCommandBlock = new IGuiCommand[]
     {
         // todo: undo/redo
         new GuiCommand("Next into...", KeyModifiers.Control, Key.N, () =>
         {
             toolService.CurrentTool = toolFactory.StoryBranchInto(Node.Id);
         }),
         new GuiCommand("Insert Next", KeyModifiers.Control, Key.I, () =>
         {
             StoryService.OnBeginTransaction(this);
             var newNode = commonNodeFactory.StoryNode();
             var nexts   = StoryService.GlobalGraph.Next[Node.Id].ToArray();
             foreach (var next in nexts)
             {
                 StoryService.RemoveEdge(Node.Id, next);
             }
             var index = Node.ParentNode.ChildNodes.IndexOf(Node);
             Node.ParentNode.ChildNodes.Insert(index + 1, newNode);
             StoryService.AddEdge(Node.Id, newNode.Id);
             foreach (var nextNode in nexts)
             {
                 StoryService.AddEdge(newNode.Id, nextNode);
             }
             StoryService.OnEndTransaction(this);
         }),
         new GuiCommand("Connect to...", KeyModifiers.Control, Key.C, () =>
         {
             toolService.CurrentTool = toolFactory.AddExplicitStoryGraphEdge(Node.Id);
         }),
         new GuiCommand("Wrap into", KeyModifiers.None, Key.None, () =>
         {
             StoryOperations.AddChild(StoryService, commonNodeFactory, Node.Id, this);
         }),
     };
     SetDynamicParts(new StoryNodeDynamicParts
     {
         DefaultViewpointMechanism = new WallDefaultViewpointMechanism(Node),
         VisualElements            = EmptyArrays <IVisualElement> .Array
     });
 }