Skip to content

Instantly share code, notes, and snippets.

@jrfondren
Created September 30, 2021 03:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jrfondren/d776ccffb105f464b53c53712656a1d3 to your computer and use it in GitHub Desktop.
Save jrfondren/d776ccffb105f464b53c53712656a1d3 to your computer and use it in GitHub Desktop.
diff --git a/api/source/hipengine/api/graphics/g2d/renderer2d.d b/api/source/hipengine/api/graphics/g2d/renderer2d.d
index ed81591..4921e32 100644
--- a/api/source/hipengine/api/graphics/g2d/renderer2d.d
+++ b/api/source/hipengine/api/graphics/g2d/renderer2d.d
@@ -16,7 +16,6 @@ public import hipengine.api.graphics.color;
public import hipengine.api.renderer.texture;
public import hipengine.api.graphics.g2d.hipsprite;
-
version(Script)
{
extern(C) void function() beginSprite;
@@ -44,19 +43,19 @@ void initG2D()
{
version(Script)
{
- loadSymbol!beginSprite;
- loadSymbol!endSprite;
- loadSymbol!beginGeometry;
- loadSymbol!endGeometry;
- loadSymbol!setGeometryColor;
- loadSymbol!drawPixel;
- loadSymbol!drawRectangle;
- loadSymbol!drawTriangle;
- loadSymbol!fillRectangle;
- loadSymbol!fillTriangle;
- loadSymbol!drawLine;
- loadSymbol!drawSprite;
- loadSymbol!newSprite;
- loadSymbol!destroySprite;
+ mixin(loadSymbol("beginSprite"));
+ mixin(loadSymbol("endSprite"));
+ mixin(loadSymbol("beginGeometry"));
+ mixin(loadSymbol("endGeometry"));
+ mixin(loadSymbol("setGeometryColor"));
+ mixin(loadSymbol("drawPixel"));
+ mixin(loadSymbol("drawRectangle"));
+ mixin(loadSymbol("drawTriangle"));
+ mixin(loadSymbol("fillRectangle"));
+ mixin(loadSymbol("fillTriangle"));
+ mixin(loadSymbol("drawLine"));
+ mixin(loadSymbol("drawSprite"));
+ mixin(loadSymbol("newSprite"));
+ mixin(loadSymbol("destroySprite"));
}
}
diff --git a/api/source/hipengine/api/input/package.d b/api/source/hipengine/api/input/package.d
index 88b0f82..6e19ab6 100644
--- a/api/source/hipengine/api/input/package.d
+++ b/api/source/hipengine/api/input/package.d
@@ -14,32 +14,31 @@ public import hipengine.api.math.vector;
public import hipengine.api.input.mouse;
public import hipengine.api.input.gamepad;
-
void initInput()
{
version(Script)
{
import hipengine.internal;
- loadSymbol!isKeyPressed;
- loadSymbol!isKeyJustPressed;
- loadSymbol!isKeyJustReleased;
- loadSymbol!getKeyDownTime;
- loadSymbol!getKeyUpTime;
- loadSymbol!isMouseButtonPressed;
- loadSymbol!isMouseButtonJustPressed;
- loadSymbol!isMouseButtonJustReleased;
- loadSymbol!getTouchPosition;
- loadSymbol!getTouchDeltaPosition;
- loadSymbol!getScroll;
+ mixin(loadSymbol("isKeyPressed"));
+ mixin(loadSymbol("isKeyJustPressed"));
+ mixin(loadSymbol("isKeyJustReleased"));
+ mixin(loadSymbol("getKeyDownTime"));
+ mixin(loadSymbol("getKeyUpTime"));
+ mixin(loadSymbol("isMouseButtonPressed"));
+ mixin(loadSymbol("isMouseButtonJustPressed"));
+ mixin(loadSymbol("isMouseButtonJustReleased"));
+ mixin(loadSymbol("getTouchPosition"));
+ mixin(loadSymbol("getTouchDeltaPosition"));
+ mixin(loadSymbol("getScroll"));
//Gamepad
- loadSymbol!getGamepadCount;
- loadSymbol!getGamepad;
- loadSymbol!getAnalog;
- loadSymbol!isGamepadButtonPressed;
- loadSymbol!setGamepadVibrating;
- loadSymbol!getGamepadBatteryStatus;
- loadSymbol!isGamepadWireless;
+ mixin(loadSymbol("getGamepadCount"));
+ mixin(loadSymbol("getGamepad"));
+ mixin(loadSymbol("getAnalog"));
+ mixin(loadSymbol("isGamepadButtonPressed"));
+ mixin(loadSymbol("setGamepadVibrating"));
+ mixin(loadSymbol("getGamepadBatteryStatus"));
+ mixin(loadSymbol("isGamepadWireless"));
}
}
diff --git a/api/source/hipengine/api/math/random.d b/api/source/hipengine/api/math/random.d
index 7d5c51d..2636a7f 100644
--- a/api/source/hipengine/api/math/random.d
+++ b/api/source/hipengine/api/math/random.d
@@ -30,9 +30,9 @@ package void initRandom()
version(Script)
{
import hipengine.internal;
- loadSymbol!range;
- loadSymbol!rangeu;
- loadSymbol!rangeub;
- loadSymbol!rangef;
+ mixin(loadSymbol("range"));
+ mixin(loadSymbol("rangeu"));
+ mixin(loadSymbol("rangeub"));
+ mixin(loadSymbol("rangef"));
}
}
diff --git a/api/source/hipengine/internal.d b/api/source/hipengine/internal.d
index 0a310ad..c8c7aae 100644
--- a/api/source/hipengine/internal.d
+++ b/api/source/hipengine/internal.d
@@ -12,7 +12,7 @@ Distributed under the CC BY-4.0 License.
module hipengine.internal;
-version(Script){private __gshared void* _dll;}
+version(Script){__gshared void* _dll;}
void initializeHip()
{
@@ -34,18 +34,18 @@ version(Script):
version(Windows)
{
import core.sys.windows.windows:GetProcAddress;
- private alias _loadSymbol = GetProcAddress;
+ alias _loadSymbol = GetProcAddress;
}
else
{
import core.sys.posix.dlfcn:dlsym;
- private alias _loadSymbol = dlsym;
+ alias _loadSymbol = dlsym;
}
///Loads the symbol directly inside 's'
-void loadSymbol(alias s)()
+string loadSymbol(string s)
{
- s = cast(typeof(s))_loadSymbol(_dll, (s.stringof~"\0").ptr);
+ return s ~ " = cast(typeof(" ~ s ~"))_loadSymbol(_dll, (\""~s~"\").ptr);";
}
///Gets the symbol from 's' casted to 's' type ( useful when not loading directly into the function pointers)
diff --git a/api/source/hipengine/package.d b/api/source/hipengine/package.d
index f760bba..15217a2 100644
--- a/api/source/hipengine/package.d
+++ b/api/source/hipengine/package.d
@@ -58,7 +58,7 @@ else
version(Script) void function(string s) log;
void initConsole()
{
- version(Script){loadSymbol!log;}
+ version(Script){mixin(loadSymbol("log"));}
}
mixin template HipEngineMain(alias StartScene)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment