geography renders to a seprate texture, only updates when moved
Former-commit-id: 8f3b9d2977
[formerly f24714e0276678698dffbf4270fb73c16c9a872f] [formerly 8c6ec13e7e07eede486b4d804517de3212532216]
Former-commit-id: 09e11860daedfa3c625b44b19c55d375319932fe
Former-commit-id: 5ffce6f3e593acf6472ed5f540a871b0219d610b
This commit is contained in:
parent
1223881b4b
commit
49c4b4e4a6
2
defs.h
2
defs.h
|
@ -15,6 +15,8 @@
|
|||
#define DISPLAY_ACTIVE 30
|
||||
#define TRAIL_TTL_STEP 2
|
||||
|
||||
#define MIN_MAP_FEATURE 2
|
||||
|
||||
#define FRAMETIME 33
|
||||
|
||||
#define PAD 5
|
||||
|
|
61
draw.c
61
draw.c
|
@ -529,7 +529,7 @@ void drawPolys(QuadTree *tree, double screen_lat_min, double screen_lat_max, dou
|
|||
}
|
||||
|
||||
|
||||
if((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1) < 100){
|
||||
if((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1) < MIN_MAP_FEATURE){
|
||||
currentPoint = currentPoint->next;
|
||||
continue;
|
||||
}
|
||||
|
@ -538,7 +538,7 @@ void drawPolys(QuadTree *tree, double screen_lat_min, double screen_lat_max, dou
|
|||
|
||||
double factor = 1.0 - (d1+d2) / (3* appData.maxDist * appData.maxDist);
|
||||
|
||||
SDL_Color lineColor = lerpColor(blue, purple, factor);
|
||||
SDL_Color lineColor = lerpColor(purple, blue, factor);
|
||||
|
||||
lineRGBA(appData.renderer, x1, y1, x2, y2, lineColor.r, lineColor.g, lineColor.b, 255);
|
||||
|
||||
|
@ -865,17 +865,10 @@ void resolveLabelConflicts() {
|
|||
}
|
||||
|
||||
|
||||
void drawMap() {
|
||||
void drawPlanes() {
|
||||
struct planeObj *p = planes;
|
||||
time_t now = time(NULL);
|
||||
SDL_Color planeColor;
|
||||
drawGeography();
|
||||
|
||||
drawScaleBars();
|
||||
|
||||
for(int i = 0; i < 4; i++) {
|
||||
resolveLabelConflicts();
|
||||
}
|
||||
|
||||
//draw all trails first so they don't cover up planes and text
|
||||
|
||||
|
@ -931,9 +924,13 @@ void drawMap() {
|
|||
}
|
||||
|
||||
if(p == selectedPlane) {
|
||||
|
||||
if(fabs(p->lon - appData.centerLon) > 0.0001 || fabs(p->lat - appData.centerLat) > .0001) {
|
||||
appData.centerLon += 0.1 * (p->lon - appData.centerLon);
|
||||
appData.centerLat += 0.1 * (p->lat - appData.centerLat);
|
||||
|
||||
appData.mapMoved = 1;
|
||||
}
|
||||
|
||||
thickLineRGBA(appData.renderer, x - 40, y - 40, x - 10, y - 40, 4, pink.r, pink.g, pink.b, 255);
|
||||
thickLineRGBA(appData.renderer, x - 40, y - 40, x - 40, y - 10, 4, pink.r, pink.g, pink.b, 255);
|
||||
|
@ -1004,26 +1001,54 @@ void drawMap() {
|
|||
//
|
||||
|
||||
void draw() {
|
||||
|
||||
if ((mstime() - appData.lastFrameTime) < FRAMETIME) {
|
||||
return;
|
||||
}
|
||||
|
||||
appData.lastFrameTime = mstime();
|
||||
uint64_t drawStartTime = mstime();
|
||||
|
||||
updatePlanes();
|
||||
|
||||
updateStatus();
|
||||
|
||||
SDL_SetRenderDrawColor( appData.renderer, 0, 15, 30, 0);
|
||||
if(appData.mapMoved) {
|
||||
SDL_SetRenderTarget(appData.renderer, appData.mapTexture);
|
||||
SDL_SetRenderDrawColor(appData.renderer, 0, 0, 0, 0);
|
||||
SDL_RenderClear(appData.renderer);
|
||||
|
||||
drawGeography();
|
||||
drawScaleBars();
|
||||
|
||||
SDL_SetRenderTarget(appData.renderer, NULL );
|
||||
|
||||
appData.mapMoved = 0;
|
||||
}
|
||||
|
||||
for(int i = 0; i < 4; i++) {
|
||||
resolveLabelConflicts();
|
||||
}
|
||||
|
||||
//SDL_SetRenderDrawColor( appData.renderer, 0, 15, 30, 0);
|
||||
SDL_SetRenderDrawColor(appData.renderer, 0, 0, 0, 0);
|
||||
|
||||
SDL_RenderClear(appData.renderer);
|
||||
|
||||
drawMap();
|
||||
SDL_RenderCopy(appData.renderer, appData.mapTexture, NULL, NULL);
|
||||
|
||||
drawPlanes();
|
||||
drawStatus();
|
||||
|
||||
if(appData.showList) {
|
||||
drawList(0);
|
||||
}
|
||||
|
||||
char fps[10] = " ";
|
||||
snprintf(fps,10," %ffps", 1000.0 / (mstime() - appData.lastFrameTime));
|
||||
drawStringBG(fps, 0,0, appData.mapFont, grey, black);
|
||||
|
||||
|
||||
SDL_RenderPresent(appData.renderer);
|
||||
|
||||
|
||||
appData.lastFrameTime = mstime();
|
||||
|
||||
if ((mstime() - drawStartTime) < FRAMETIME) {
|
||||
usleep(1000 * (FRAMETIME - (mstime() - drawStartTime)));
|
||||
}
|
||||
}
|
|
@ -1 +1 @@
|
|||
d08aaa37cf2b39ef11671ed4f318ae82fcf0c1dd
|
||||
e35f478e482bb67eed7951d8c622b7fc5ad06aa7
|
6
init.c
6
init.c
|
@ -37,11 +37,13 @@ void init(char *title) {
|
|||
|
||||
appData.window = SDL_CreateWindow(title, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, appData.screen_width, appData.screen_height, flags);
|
||||
appData.renderer = SDL_CreateRenderer(appData.window, -1, 0);
|
||||
appData.texture = SDL_CreateTexture(appData.renderer,
|
||||
appData.mapTexture = SDL_CreateTexture(appData.renderer,
|
||||
SDL_PIXELFORMAT_ARGB8888,
|
||||
SDL_TEXTUREACCESS_STREAMING,
|
||||
SDL_TEXTUREACCESS_TARGET,
|
||||
appData.screen_width, appData.screen_height);
|
||||
|
||||
appData.mapMoved = 1;
|
||||
|
||||
if(appData.fullscreen) {
|
||||
//\SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "linear"); // make the scaled rendering look smoother.
|
||||
SDL_RenderSetLogicalSize(appData.renderer, appData.screen_width, appData.screen_height);
|
||||
|
|
3
input.c
3
input.c
|
@ -47,10 +47,12 @@ void getInput()
|
|||
case SDL_MOUSEWHEEL:
|
||||
|
||||
appData.maxDist *= 1.0 + event.wheel.y / 10.0;
|
||||
appData.mapMoved = 1;
|
||||
break;
|
||||
|
||||
case SDL_MULTIGESTURE:
|
||||
appData.maxDist /=1.0 + 4.0*event.mgesture.dDist;
|
||||
appData.mapMoved = 1;
|
||||
break;
|
||||
|
||||
case SDL_FINGERMOTION:;
|
||||
|
@ -74,6 +76,7 @@ void getInput()
|
|||
appData.centerLon += outLon;
|
||||
appData.centerLat += outLat;
|
||||
|
||||
appData.mapMoved = 1;
|
||||
break;
|
||||
|
||||
|
||||
|
|
|
@ -1 +1 @@
|
|||
71b217637379d15bac063de1731f31a46620dce5
|
||||
d4947b5d39abcf0073465f4b5683173294132874
|
BIN
planeObj.o
BIN
planeObj.o
Binary file not shown.
|
@ -1 +1 @@
|
|||
006a8fe10b2ac3777a05e5056d4166533ad2fae5
|
||||
9aa844df5159c2a246895c0eb2a306f53d0a36fd
|
|
@ -7,7 +7,7 @@ typedef struct AppData
|
|||
{
|
||||
SDL_Window *window;
|
||||
SDL_Renderer *renderer;
|
||||
SDL_Texture *texture;
|
||||
SDL_Texture *mapTexture;
|
||||
|
||||
TTF_Font *mapFont;
|
||||
TTF_Font *mapBoldFont;
|
||||
|
@ -43,6 +43,8 @@ typedef struct AppData
|
|||
int touchx;
|
||||
int touchy;
|
||||
|
||||
int mapMoved;
|
||||
|
||||
uint64_t lastFrameTime;
|
||||
} AppData;
|
||||
|
||||
|
|
|
@ -1 +1 @@
|
|||
607b9efc8cc81bbdd0c6f524632fc9b69ab1e244
|
||||
8796641d884a28c9d0b97396f099bd3333607849
|
|
@ -358,7 +358,7 @@ int main(int argc, char **argv) {
|
|||
}
|
||||
modesReadFromClient(c,"",decodeBinMessage);
|
||||
|
||||
usleep(10000);
|
||||
//usleep(10000);
|
||||
}
|
||||
|
||||
// The user has stopped us, so close any socket we opened
|
||||
|
|
|
@ -1 +1 @@
|
|||
188de208d70a8a746cda5dd29c243ac3053a9c0c
|
||||
790297577270307a97648484360f0eeb3de83233
|
Loading…
Reference in a new issue