Class GLFWRenderModuleEntrypoint

java.lang.Object
io.codetoil.curved_spacetime.render.glfw.GLFWRenderModuleEntrypoint
All Implemented Interfaces:
ModuleInitializer

public class GLFWRenderModuleEntrypoint extends Object implements ModuleInitializer
The GLFW render module's main entrypoint.

Implements the render module's window and input abstractions using GLFW. It depends on the render module, so it blocks during initialization until that module's entrypoint is handed to it, then hands itself to modules that build on GLFW — the Vulkan GLFW render module.

  • Constructor Details

    • GLFWRenderModuleEntrypoint

      public GLFWRenderModuleEntrypoint()
      Creates the GLFW render module's entrypoint.

      Called by the loader; GLFW is not initialised until a window is opened.

  • Method Details

    • onInitialize

      public void onInitialize()
      Description copied from interface: ModuleInitializer
      Brings this module up.

      An implementation sets its logger's level from the engine's configuration, loads its own configuration and saves it if loading substituted defaults, receives any dependencies it declares through ModuleInitializer.getDependencyModuleTransferQueue(), performs any operations it must perform during initialization, and finally invokes its own dependent entrypoints, passing itself.

      Specified by:
      onInitialize in interface ModuleInitializer
    • recieveDependenciesFromTransferQueue

      protected void recieveDependenciesFromTransferQueue() throws InterruptedException
      Blocks until the render module's entrypoint has been handed to this module.

      Takes exactly one element, this module declaring exactly one dependency.

      Throws:
      InterruptedException - if interrupted while waiting for the dependency
    • getConfig

      public ModuleConfig getConfig()
      Description copied from interface: ModuleInitializer
      Returns this module's configuration.
      Specified by:
      getConfig in interface ModuleInitializer
      Returns:
      the configuration, or null before ModuleInitializer.onInitialize() has loaded it
    • getLogger

      public Logger getLogger()
      Description copied from interface: ModuleInitializer
      Returns the logger this module writes its diagnostics to.

      The same instance is returned for the lifetime of this entrypoint.

      Specified by:
      getLogger in interface ModuleInitializer
      Returns:
      this module's logger
    • getDependencyModuleTransferQueue

      public TransferQueue<ModuleInitializer> getDependencyModuleTransferQueue()
      Description copied from interface: ModuleInitializer
      Returns the queue by which this module receives the entrypoints it depends on.

      A module does not look its dependencies up. Each module it depends on invokes a dependent entrypoint, which transfers that module's own entrypoint into this queue. The same instance is returned for the lifetime of this entrypoint; a fresh or defensively copied queue breaks the handshake, because the producer transfers into whichever queue this method returned.

      Specified by:
      getDependencyModuleTransferQueue in interface ModuleInitializer
      Returns:
      this module's dependency transfer queue