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(); }
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); } }
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); }
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(); }
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(); }
void IFinalRenderDelegate.OnAddedToScene(ECScene scene) { }