forked from LeenkxTeam/LNXSDK
		
	
		
			
				
	
	
		
			98 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
| 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
 | |
| }
 |