view semicongine.nim @ 1433:b1130c34ad0c

fix: more imports
author sam <sam@basx.dev>
date Sun, 19 Jan 2025 21:35:29 +0700
parents b03d3d8524fc
children 3502e1efaeb4
line wrap: on
line source

import std/tables
import std/locks

import ./semicongine/core
export core

from ./semicongine/rendering import initVulkan
from ./semicongine/background_loaders import initBackgroundLoader
import ./semicongine/loaders
import ./semicongine/images
import ./semicongine/audio

proc initEngine*(appName: string) =
  ## Required to be called before most features of the engine can be used
  engine_obj_internal = Engine()
  engine_obj_internal.vulkan = initVulkan(appName)

  # start audio
  engine_obj_internal.mixer = createShared(Mixer)
  engine_obj_internal.mixer[] = Mixer()
  engine_obj_internal.mixer[].tracks[""] = Track(level: 1)
  engine_obj_internal.mixer[].lock.initLock()
  engine_obj_internal.audiothread.createThread(audioWorker, engine_obj_internal.mixer)

  # start background resource loaders
  engine_obj_internal.rawLoader = initBackgroundLoader(loadBytes)
  engine_obj_internal.jsonLoader = initBackgroundLoader(loadJson)
  engine_obj_internal.configLoader = initBackgroundLoader(loadConfig)
  engine_obj_internal.grayImageLoader = initBackgroundLoader(loadImage[Gray])
  engine_obj_internal.imageLoader = initBackgroundLoader(loadImage[BGRA])
  engine_obj_internal.audioLoader = initBackgroundLoader(loadAudio)

  engine_obj_internal.initialized = true