Example #1
0
        public override void Initialize()
        {
            base.Initialize();
            IoCManager.InjectDependencies(this);
            DrawingNode = new Godot.Node2D()
            {
                Name = "EffectSystem",
            };
            sceneTree.WorldRoot.AddChild(DrawingNode);

            UnshadedMaterial = new Godot.CanvasItemMaterial()
            {
                LightMode = Godot.CanvasItemMaterial.LightModeEnum.Unshaded
            };

            ShadedMaterial = new Godot.CanvasItemMaterial();

            ShadedCanvasItem = VS.CanvasItemCreate();
            VS.CanvasItemSetParent(ShadedCanvasItem, DrawingNode.GetCanvasItem());
            VS.CanvasItemSetMaterial(ShadedCanvasItem, ShadedMaterial.GetRid());

            UnshadedCanvasItem = VS.CanvasItemCreate();
            VS.CanvasItemSetParent(UnshadedCanvasItem, DrawingNode.GetCanvasItem());
            VS.CanvasItemSetMaterial(UnshadedCanvasItem, UnshadedMaterial.GetRid());
        }
        public void AddOverlay(Overlay overlay)
        {
            if (_overlays.ContainsKey(overlay.ID))
            {
                throw new InvalidOperationException($"We already have an overlay with ID '{overlay.ID}'");
            }

            _overlays.Add(overlay.ID, overlay);
            if (GameController.OnGodot)
            {
                Godot.RID parent;
                switch (overlay.Space)
                {
                case OverlaySpace.ScreenSpace:
                    parent = RootNodeScreen.GetCanvasItem();
                    break;

                case OverlaySpace.WorldSpace:
                    parent = RootNodeWorld.GetCanvasItem();
                    break;

                case OverlaySpace.ScreenSpaceBelowWorld:
                    parent = RootNodeScreenBelowWorld.GetCanvasItem();
                    break;

                default:
                    throw new NotImplementedException($"Unknown overlay space: {overlay.Space}");
                }

                var item = VS.CanvasItemCreate();
                VS.CanvasItemSetParent(item, parent);
                overlay.AssignCanvasItem(item);
                _canvasItems.Add(overlay, item);
            }
        }