/** * Copyright: Copyright (C) 2018 Gabriel Gheorghe, All Rights Reserved * Authors: $(Gabriel Gheorghe) * License: $(LINK2 https://www.gnu.org/licenses/gpl-3.0.txt, GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007) * Source * Documentation: * Coverage: */ module liberty.core.geometry.volumes; import liberty.core.engine : CoreEngine; import liberty.core.components : Renderer; import liberty.core.scenegraph.services : NodeServices, Constructor; import liberty.core.scenegraph.entity : Entity; import liberty.core.scenegraph.node : Node; import liberty.core.model: Models; import liberty.graphics.util : RenderUtil; import liberty.graphics.renderer : DrawMode, VectorType, Vertex; /// abstract class Volume : Entity { /// this(string id, Node parent) { super(id, parent); } } /// final class CubeVolume : Volume { mixin(NodeServices); /// @Constructor private void _() { renderer = Renderer!Vertex(this, Models.get.cubeModel); } /// override void render() { renderer.pass(() @safe { RenderUtil.get.drawElements(DrawMode.Triangles, 36, VectorType.UnsignedInt); }); } }