nim-wasm-test/src/nim_wasm_test.nim

77 lines
2 KiB
Nim
Raw Normal View History

2025-08-19 13:21:43 -07:00
# vim: set et sta sw=4 ts=4 :
import
std/os,
std/parsecfg,
std/strformat,
std/strutils
2025-08-19 13:21:43 -07:00
import raylib
var conf: Config
try:
conf = loadConfig( "resources/config.ini" )
except IOError as err:
echo "No config file, using defaults."
conf = newConfig()
when defined( emscripten ):
var tick = conf.getSectionValue( "Performance", "tick", defaultVal = "10").parseInt.cuint
else:
var tick = conf.getSectionValue( "Performance", "tick", defaultVal = "10").parseInt
2025-08-19 13:21:43 -07:00
# Emscripten specific imports
proc emscripten_set_main_loop( f: proc() {.cdecl.}, a: cint, b: bool ) {.importc.}
proc emscripten_sleep( a: cuint ) {.importc.}
var camera = Camera(
position: Vector3(x: 5, y: 5, z: 10), # Camera position
target: Vector3(x: 0, y: 0, z: 0), # Camera target it looks-at
up: Vector3(x: 0, y: 1, z: 0), # Camera up vector (rotation over its axis)
fovy: 45, # Camera field-of-view apperture in Y (degrees)
projection: Perspective # Defines projection type, see CameraProjection
)
# This only works with:
# --passL:"-s EXPORT_FUNCTIONS=_nativeGreet", but it breaks raylib loading.
# hmmmmm. EXPORT_ALL=1 is also a no go.
# Maybe it won't be necessary with raylib/opengl input
#
#[ proc nativeGreet*(): int {.exportc.} =
echo "Oh jeez, hello from native nim!"
return 0 ]#
proc mainLoop() {.cdecl.} =
2025-08-19 13:21:43 -07:00
defer: closeWindow()
initWindow( 800, 600, "raylib nim playground" )
2025-08-19 13:21:43 -07:00
var count = 0
2025-08-19 13:21:43 -07:00
while not windowShouldClose():
beginDrawing();
clearBackground( WHITE );
beginMode3D( camera );
drawGrid( 10, 1.0f );
endMode3D();
var col = if isCursorOnScreen(): BLUE else: GRAY
drawText( "OH SNAP IT'S WORKING\n{count}".fmt, 10, 10, 20, col );
endDrawing();
count = count + 1
when defined( emscripten ):
emscripten_sleep( tick )
2025-08-19 13:21:43 -07:00
else:
sleep( tick )
2025-08-19 13:21:43 -07:00
when defined( emscripten ):
emscripten_set_main_loop( mainLoop, 0, true );
else:
mainLoop()
2025-08-19 13:21:43 -07:00