Beispiel #1
0
        public void OnSceneChanged()
        {
            CastScene = Core.Scene as ECScene;
            if (CastScene == null)
            {
                throw new InvalidOperationException("You cannot use Post Processors if you are not inheriting the base Scene implementation.");
            }

            _renderers.Clear();
            _isRendererListInitialized = false;
            UpdateRenderersPaneList();
        }
Beispiel #2
0
        public override void OnEnabled()
        {
            if (Core.Scene != null && Core.Scene is ECScene scene)
            {
                CastScene = scene;
                CastScene.FinalRenderDelegate = this;

                // why call beforeLayout here? If added from the DebugConsole we missed the GlobalManger.update call and ImGui needs NextFrame
                // called or it fails. Calling NextFrame twice in a frame causes no harm, just missed input.
                _renderer.BeforeLayout(Time.DeltaTime);
            }
        }
Beispiel #3
0
        protected override void DebugRender(ECScene scene, Camera cam)
        {
            Graphics.Instance.Batcher.End();
            Graphics.Instance.Batcher.Begin(cam.TransformMatrix);

            for (var i = 0; i < scene.RenderableComponents.Count; i++)
            {
                var renderable = scene.RenderableComponents[i];
                if (!ExcludedRenderLayers.Contains(renderable.RenderLayer) && renderable.Enabled &&
                    renderable.IsVisibleFromCamera(cam))
                {
                    renderable.DebugRender(Graphics.Instance.Batcher);
                }
            }

            base.DebugRender(scene, cam);
        }
Beispiel #4
0
        public override void Render(ECScene scene)
        {
            var cam = Camera ?? scene.Camera;

            BeginRender(cam);

            for (var i = 0; i < scene.RenderableComponents.Count; i++)
            {
                var renderable = scene.RenderableComponents[i];
                if (renderable.Enabled && renderable.IsVisibleFromCamera(cam))
                {
                    RenderAfterStateCheck(renderable, cam);
                }
            }

            if (ShouldDebugRender && ECScene.DebugRenderEnabled)
            {
                DebugRender(scene, cam);
            }

            EndRender();
        }
Beispiel #5
0
        unsafe public void Draw()
        {
            CastScene = Core.Scene as ECScene;
            if (CastScene == null)
            {
                return;
            }

            if (CastScene.Entities.Count > MIN_ENTITIES_FOR_CLIPPER)
            {
                var clipperPtr = ImGuiNative.ImGuiListClipper_ImGuiListClipper(CastScene.Entities.Count, -1);
                var clipper    = new ImGuiListClipperPtr(clipperPtr);

                while (clipper.Step())
                {
                    for (var i = clipper.DisplayStart; i < clipper.DisplayEnd; i++)
                    {
                        DrawEntity(CastScene.Entities[i]);
                    }
                }

                ImGuiNative.ImGuiListClipper_destroy(clipperPtr);
            }
            else
            {
                for (var i = 0; i < CastScene.Entities.Count; i++)
                {
                    DrawEntity(CastScene.Entities[i]);
                }
            }

            NezImGui.MediumVerticalSpace();
            if (NezImGui.CenteredButton("Create Entity", 0.6f))
            {
                ImGui.OpenPopup("create-entity");
            }

            DrawCreateEntityPopup();
        }
Beispiel #6
0
 void IFinalRenderDelegate.OnAddedToScene(ECScene scene)
 {
 }