forked from LeenkxTeam/LNXSDK
Update Files
This commit is contained in:
97
lib/leenkx2d/Sources/Main.hx
Normal file
97
lib/leenkx2d/Sources/Main.hx
Normal file
@ -0,0 +1,97 @@
|
||||
package;
|
||||
|
||||
// Kha
|
||||
import kha.input.KeyCode;
|
||||
|
||||
// Zui
|
||||
import leenkx.ui.Canvas;
|
||||
|
||||
// Editor
|
||||
import lnx2d.Editor;
|
||||
|
||||
class Main {
|
||||
|
||||
public static var prefs:TPrefs = null;
|
||||
public static var cwd = ""; // Canvas path
|
||||
public static var inst:Editor;
|
||||
|
||||
public static function main() {
|
||||
|
||||
var w = 1600;
|
||||
var h = 900;
|
||||
if (kha.Display.primary != null) { // TODO: no Display.primary returned on Linux
|
||||
if (w > kha.Display.primary.width) w = kha.Display.primary.width;
|
||||
if (h > kha.Display.primary.height - 30) h = kha.Display.primary.height - 30;
|
||||
}
|
||||
kha.System.start({ title : "Leenkx2D", width : w, height : h, framebuffer : {samplesPerPixel : 2}}, initialized);
|
||||
}
|
||||
|
||||
static function initialized(window:kha.Window) {
|
||||
|
||||
prefs = {
|
||||
path: "",
|
||||
scaleFactor: 1.0,
|
||||
keyMap: {
|
||||
selectMouseButton: "Left",
|
||||
grabKey: KeyCode.G,
|
||||
rotateKey: KeyCode.R,
|
||||
sizeKey: KeyCode.S,
|
||||
slowMovement: KeyCode.Shift,
|
||||
gridInvert: KeyCode.Control,
|
||||
gridInvertRelative: KeyCode.Alt,
|
||||
}
|
||||
};
|
||||
|
||||
#if kha_krom
|
||||
|
||||
var c = Krom.getArgCount();
|
||||
// ./krom . . canvas_path scale_factor
|
||||
if (c > 4) prefs.path = Krom.getArg(3);
|
||||
if (c > 5) prefs.scaleFactor = Std.parseFloat(Krom.getArg(4));
|
||||
|
||||
var ar = prefs.path.split("/");
|
||||
ar.pop();
|
||||
cwd = ar.join("/");
|
||||
|
||||
if(cwd != ""){
|
||||
var path = kha.System.systemId == "Windows" ? StringTools.replace(prefs.path, "/", "\\") : prefs.path;
|
||||
kha.Assets.loadBlobFromPath(path, function(cblob:kha.Blob) {
|
||||
inst = new Editor(Canvas.parseCanvasFromBlob(cblob));
|
||||
});
|
||||
}
|
||||
else {
|
||||
prefs.path = Krom.getFilesLocation();
|
||||
#end
|
||||
var raw:TCanvas = { name: "untitled", x: 0, y: 0, width: 1280, height: 720, theme: "Default Light", visible: true, elements: [], assets: [] };
|
||||
inst = new Editor(raw);
|
||||
#if kha_krom
|
||||
}
|
||||
#end
|
||||
}
|
||||
|
||||
static function loadDefaultKeyMap() {
|
||||
Main.prefs.keyMap.grabKey = KeyCode.G;
|
||||
Main.prefs.keyMap.rotateKey = KeyCode.R;
|
||||
Main.prefs.keyMap.sizeKey = KeyCode.S;
|
||||
Main.prefs.keyMap.slowMovement = KeyCode.Shift;
|
||||
Main.prefs.keyMap.gridInvert = KeyCode.Control;
|
||||
Main.prefs.keyMap.gridInvertRelative = KeyCode.Alt;
|
||||
}
|
||||
}
|
||||
|
||||
typedef TPrefs = {
|
||||
var path:String;
|
||||
var scaleFactor:Float;
|
||||
var keyMap:TKeyMap;
|
||||
@:optional var window_vsync:Bool;
|
||||
}
|
||||
|
||||
typedef TKeyMap = {
|
||||
var selectMouseButton:String;
|
||||
var grabKey:Int;
|
||||
var rotateKey:Int;
|
||||
var sizeKey:Int;
|
||||
var slowMovement:Int; // Key which slows down manipulation
|
||||
var gridInvert:Int; // Toggles the grid setting during element manipulation
|
||||
var gridInvertRelative:Int; // Make the grid relative to the selected element
|
||||
}
|
Reference in New Issue
Block a user