41 lines
1.4 KiB
Plaintext
41 lines
1.4 KiB
Plaintext
void calculateViewport() {
|
|
//fokkin mahjick viewport calculateion scale translate tath bitch back and map to mouse
|
|
viewportX = map(-translateX/scaleFactor, 0, width, 0, renderer.width);
|
|
viewportW = map((-translateX+width)/scaleFactor - (-translateX/scaleFactor), 0, width, 0, renderer.width);
|
|
viewportR = map((-translateX+width)/scaleFactor, 0, width, 0, renderer.width);
|
|
viewportY = map(-translateY/scaleFactor, 0, height, 0, renderer.height);
|
|
viewportH = map((-translateY+height)/scaleFactor - (-translateY/scaleFactor), 0, height, 0, renderer.height);
|
|
viewportB = map((-translateY+height)/scaleFactor, 0, height, 0, renderer.height);
|
|
viewX = map(mouseX, 0, width, viewportX, viewportR);
|
|
viewY = map(mouseY, 0, height, viewportY, viewportB);
|
|
}
|
|
float viewyfyX(float x) {
|
|
return map(x, 0, width, viewportX, viewportR);
|
|
}
|
|
float viewyfyY(float y) {
|
|
return map(y, 0, height, viewportY, viewportB);
|
|
}
|
|
|
|
void zoom(float delta) {
|
|
translateX -= mouseX;
|
|
translateY -= mouseY;
|
|
scaleFactor *= delta;
|
|
translateX *= delta;
|
|
translateY *= delta;
|
|
translateX += mouseX;
|
|
translateY += mouseY;
|
|
collisionDetection();
|
|
}
|
|
|
|
void collisionDetection() {
|
|
while (translateX*scaleFactor > 0.0) translateX--;
|
|
while (translateY*scaleFactor > 0.0) translateY--;
|
|
while (translateX+width*scaleFactor < width) translateX++;
|
|
while (translateY+height*scaleFactor < height) translateY++;
|
|
}
|
|
|
|
void reset() {
|
|
scaleFactor = 1;
|
|
translateX = 0.0;
|
|
translateY = 0.0;
|
|
} |