@@ -1092,6 +1092,7 @@ function makeEntity(info, views, sizes) {  
		
	
		
			
			        name: info.name,  
		
	
		
			
			        identifier: info.name,  
		
	
		
			
			        scale: 1,  
		
	
		
			
			        rotation: 0,  
		
	
		
			
			        info: JSON.parse(JSON.stringify(info)),  
		
	
		
			
			        views: JSON.parse(JSON.stringify(views), math.reviver),  
		
	
		
			
			        sizes: sizes === undefined ? [] : JSON.parse(JSON.stringify(sizes), math.reviver),  
		
	
	
		
			
				
				
					 
			
			@@ -1681,10 +1682,17 @@ function clearViewOptions() {  
		
	
		
			
			const testCanvas = document.createElement("canvas");  
		
	
		
			
			testCanvas.id = "test-canvas";  
		
	
		
			
			 
		
	
		
			
			function rotate(point, angle) {  
		
	
		
			
			    return [  
		
	
		
			
			        point[0] * Math.cos(angle) - point[1] * Math.sin(angle),  
		
	
		
			
			        point[0] * Math.sin(angle) + point[1] * Math.cos(angle)  
		
	
		
			
			    ];  
		
	
		
			
			}  
		
	
		
			
			 
		
	
		
			
			const testCtx = testCanvas.getContext("2d");  
		
	
		
			
			function testClick(event) {  
		
	
		
			
			 
		
	
		
			
			    // oh my god I can't believe I'm doing this  
		
	
		
			
			    testCtx.save();   
		
	
		
			
			 
		
	
		
			
			    const target = event.target;  
		
	
		
			
			    if (rulerMode) {  
		
	
	
		
			
				
				
				
				
					 
			
			@@ -1709,19 +1717,59 @@ function testClick(event) {  
		
	
		
			
			        h /= ratioH;  
		
	
		
			
			    }  
		
	
		
			
			 
		
	
		
			
			    // todo remove some of this unused stuff  
		
	
		
			
			 
		
	
		
			
			    const ratio = ratioW * ratioH;  
		
	
		
			
			    console.log("SDFSDFSD")  
		
	
		
			
			    console.log(ratio);  
		
	
		
			
			    const entity = entities[target.parentElement.dataset.key];  
		
	
		
			
			 
		
	
		
			
			    const angle = entity.rotation;  
		
	
		
			
			 
		
	
		
			
			    var x = event.clientX - target.getBoundingClientRect().x,  
		
	
		
			
			        y = event.clientY - target.getBoundingClientRect().y,  
		
	
		
			
			        alpha;  
		
	
		
			
			    testCtx.canvas.width = w;  
		
	
		
			
			    testCtx.canvas.height = h;  
		
	
		
			
			 
		
	
		
			
			    // Draw image to canvas  
		
	
		
			
			    // and read Alpha channel value  
		
	
		
			
			    testCtx.drawImage(target, 0, 0, w, h);  
		
	
		
			
			    alpha = testCtx.getImageData(Math.floor(x / ratio), Math.floor(y / ratio), 1, 1).data[3]; // [0]R [1]G [2]B [3]A  
		
	
		
			
			    // If pixel is transparent,  
		
	
		
			
			 
		
	
		
			
			    [xTarget,yTarget] = [x,y];  
		
	
		
			
			    console.log(xTarget);  
		
	
		
			
			 
		
	
		
			
			    [actualW, actualH] = [target.getBoundingClientRect().width, target.getBoundingClientRect().height];  
		
	
		
			
			    xTarget -= actualW/2;  
		
	
		
			
			    xTarget /= ratio;  
		
	
		
			
			    xTarget += actualW/2;  
		
	
		
			
			    yTarget -= actualH/2;  
		
	
		
			
			    yTarget /= ratio;  
		
	
		
			
			    yTarget += actualH/2;  
		
	
		
			
			 
		
	
		
			
			      
		
	
		
			
			 
		
	
		
			
			    testCtx.canvas.width = actualW;  
		
	
		
			
			    testCtx.canvas.height = actualH;  
		
	
		
			
			 
		
	
		
			
			    testCtx.save();  
		
	
		
			
			 
		
	
		
			
			    // dear future me: Sorry :(  
		
	
		
			
			 
		
	
		
			
			    testCtx.resetTransform();  
		
	
		
			
			 
		
	
		
			
			 
		
	
		
			
			    testCtx.translate(actualW/2, actualH/2);  
		
	
		
			
			    testCtx.rotate(angle);  
		
	
		
			
			    testCtx.translate(-actualW/2, -actualH/2);  
		
	
		
			
			    testCtx.drawImage(target, (actualW/2 - w/2), (actualH/2 - h/2), w, h);  
		
	
		
			
			    testCtx.fillStyle = "red";  
		
	
		
			
			    testCtx.fillRect(actualW/2,actualH/2,10,10);  
		
	
		
			
			 
		
	
		
			
			    testCtx.restore();  
		
	
		
			
			 
		
	
		
			
			    testCtx.fillStyle = "red";  
		
	
		
			
			    alpha = testCtx.getImageData(xTarget, yTarget, 1, 1).data[3];  
		
	
		
			
			    testCtx.fillRect(xTarget, yTarget, 3, 3);  
		
	
		
			
			    // console.log(testCtx.canvas.width, testCtx.canvas.height);  
		
	
		
			
			    console.log(actualW, actualH);  
		
	
		
			
			    // console.log(xTarget, yTarget);  
		
	
		
			
			 
		
	
		
			
			    // If the pixel is transparent,  
		
	
		
			
			    // retrieve the element underneath and trigger its click event  
		
	
		
			
			    if (alpha === 0) {  
		
	
		
			
			        const oldDisplay = target.style.display;  
		
	
	
		
			
				
				
				
				
					 
			
			@@ -1735,6 +1783,7 @@ function testClick(event) {  
		
	
		
			
			    } else {  
		
	
		
			
			        clickDown(target.parentElement, event.clientX, event.clientY);  
		
	
		
			
			    }  
		
	
		
			
			    testCtx.restore();  
		
	
		
			
			}  
		
	
		
			
			 
		
	
		
			
			function arrangeEntities(order) {  
		
	
	
		
			
				
				
					 
			
			@@ -1984,6 +2033,8 @@ function displayEntity(entity, view, x, y, selectEntity = false, refresh = false  
		
	
		
			
			        img.style.setProperty("--offset", ((-1) * 100) + "%")  
		
	
		
			
			    }  
		
	
		
			
			 
		
	
		
			
			    img.style.setProperty("--rotation", (entity.rotation * 180 / Math.PI) + "deg")  
		
	
		
			
			 
		
	
		
			
			    box.dataset.x = x;  
		
	
		
			
			    box.dataset.y = y;  
		
	
		
			
			 
		
	
	
		
			
				
				
					 
			
			@@ -2359,7 +2410,7 @@ const settingsData = {  
		
	
		
			
			            "high",  
		
	
		
			
			            "medium",  
		
	
		
			
			            "low",  
		
	
		
			
			            "bottom"  
		
	
		
			
			            "bottom",   
		
	
		
			
			        ],  
		
	
		
			
			        get value() {  
		
	
		
			
			            return config.groundPos;  
		
	
	
		
			
				
				
					 
			
			@@ -2942,12 +2993,28 @@ document.addEventListener("DOMContentLoaded", () => {  
		
	
		
			
			 
		
	
		
			
			    document.querySelector("#options-brightness-down").addEventListener("click", e => {  
		
	
		
			
			        if (selected) {  
		
	
		
			
			            entities[selected.dataset.key].brightness = Math.max(entities[selected.dataset.key].brightness - 1, 0) ;  
		
	
		
			
			            entities[selected.dataset.key].brightness - = 1;  
		
	
		
			
			        }  
		
	
		
			
			        document.querySelector("#options-brightness-display").innerText = entities[selected.dataset.key].brightness;  
		
	
		
			
			        updateSizes();  
		
	
		
			
			    });  
		
	
		
			
			 
		
	
		
			
			    document.querySelector("#options-rotate-left").addEventListener("click", e => {  
		
	
		
			
			        if (selected) {  
		
	
		
			
			            entities[selected.dataset.key].rotation -= Math.PI/4;  
		
	
		
			
			        }  
		
	
		
			
			        selected.querySelector("img").style.setProperty("--rotation",  (entities[selected.dataset.key].rotation * 180 / Math.PI) + "deg")  
		
	
		
			
			        updateSizes();  
		
	
		
			
			    });  
		
	
		
			
			 
		
	
		
			
			    document.querySelector("#options-rotate-right").addEventListener("click", e => {  
		
	
		
			
			        if (selected) {  
		
	
		
			
			            entities[selected.dataset.key].rotation += Math.PI/4;  
		
	
		
			
			        }  
		
	
		
			
			        selected.querySelector("img").style.setProperty("--rotation",  (entities[selected.dataset.key].rotation * 180 / Math.PI) + "deg")  
		
	
		
			
			        updateSizes();  
		
	
		
			
			    });  
		
	
		
			
			 
		
	
		
			
			    document.querySelector("#options-flip").addEventListener("click", e => {  
		
	
		
			
			        if (selected) {  
		
	
		
			
			            selected.querySelector(".entity-image").classList.toggle("flipped");  
		
	
	
		
			
				
				
					 
			
			@@ -4380,6 +4447,7 @@ function exportScene() {  
		
	
		
			
			            name: entity.identifier,  
		
	
		
			
			            customName: entity.name,  
		
	
		
			
			            scale: entity.scale,  
		
	
		
			
			            rotation: entity.rotation,  
		
	
		
			
			            view: entity.view,  
		
	
		
			
			            x: element.dataset.x,  
		
	
		
			
			            y: element.dataset.y,  
		
	
	
		
			
				
				
					 
			
			@@ -4502,6 +4570,17 @@ const migrationDefs = [  
		
	
		
			
			        data.entities.forEach(entity => {  
		
	
		
			
			            entity.customName = entity.name  
		
	
		
			
			        });  
		
	
		
			
			    },  
		
	
		
			
			    /*  
		
	
		
			
			    Migration: 3 -> $  
		
	
		
			
			 
		
	
		
			
			    Rotation is now stored  
		
	
		
			
			    */  
		
	
		
			
			 
		
	
		
			
			    data => {  
		
	
		
			
			        data.entities.forEach(entity => {  
		
	
		
			
			            entity.rotation = 0  
		
	
		
			
			        });  
		
	
		
			
			    }  
		
	
		
			
			]  
		
	
		
			
			 
		
	
	
		
			
				
				
				
				
					 
			
			@@ -4527,6 +4606,7 @@ function importScene(data) {  
		
	
		
			
			        const entity = findEntity(entityInfo.name).constructor();  
		
	
		
			
			        entity.name = entityInfo.customName;  
		
	
		
			
			        entity.scale = entityInfo.scale;  
		
	
		
			
			        entity.rotation = entityInfo.rotation;  
		
	
		
			
			        entity.priority = entityInfo.priority;  
		
	
		
			
			        entity.brightness = entityInfo.brightness;  
		
	
		
			
			        displayEntity(entity, entityInfo.view, entityInfo.x, entityInfo.y);  
		
	
	
		
			
				
				
					 
			
			@@ -4567,17 +4647,25 @@ function renderToCanvas() {  
		
	
		
			
			 
		
	
		
			
			        let offset = img.style.getPropertyValue("--offset");  
		
	
		
			
			        offset = parseFloat(offset.substring(0, offset.length-1))  
		
	
		
			
			        x = coords.x - img.getBoundingClientRect().width/2;  
		
	
		
			
			        y = coords.y - img.getBoundingClientRect().height * (-offset/100);  
		
	
		
			
			 
		
	
		
			
			        let xSize = img.getBoundingClientRect().width;  
		
	
		
			
			        let ySize = img.getBoundingClientRect().height;  
		
	
		
			
			        let xSize = img.width;  
		
	
		
			
			        let ySize = img.height;  
		
	
		
			
			        x = coords.x  
		
	
		
			
			        y = coords.y + ySize/2 + ySize * offset / 100;  
		
	
		
			
			        const oldFilter = ctx.filter  
		
	
		
			
			        const brightness = getComputedStyle(element).getPropertyValue("--brightness")  
		
	
		
			
			        ctx.filter = `brightness(${brightness})`;  
		
	
		
			
			 
		
	
		
			
			        ctx.drawImage(img, x, y, xSize, ySize);  
		
	
		
			
			          
		
	
		
			
			        ctx.save();  
		
	
		
			
			        ctx.resetTransform();  
		
	
		
			
			        ctx.translate(x, y);  
		
	
		
			
			        console.log(entity.rotation)  
		
	
		
			
			        ctx.rotate(entity.rotation);  
		
	
		
			
			        ctx.drawImage(img, -xSize/2, -ySize/2, xSize, ySize);  
		
	
		
			
			        console.log(x,y)  
		
	
		
			
			        ctx.restore();  
		
	
		
			
			        ctx.drawImage(document.querySelector("#rulers"), 0, 0);  
		
	
		
			
			        ctx.translate(-xSize/2, -ySize/2);  
		
	
		
			
			 
		
	
		
			
			        ctx.filter = oldFilter  
		
	
		
			
			    });