view semicongine.nim @ 1427:676fc13685a9

did: restructure files and imports
author sam <sam@basx.dev>
date Sat, 11 Jan 2025 14:04:39 +0700
parents 0daed956cf9e
children d16964858790
line wrap: on
line source

import std/tables
import std/locks

import ./semicongine/core
export core

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

#### Main engine object

proc initEngine*(appName: string) =
  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)

  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