37 lines
870 B
C
37 lines
870 B
C
#ifndef TERRAIN_H
|
|
#define TERRAIN_H
|
|
|
|
#include <raylib.h>
|
|
#include <stdbool.h>
|
|
|
|
#include "engineSprite.h"
|
|
|
|
#define TERRAIN_CHUNK_WORLD_SIZE 256.0f
|
|
#define TERRAIN_CHUNK_RESOLUTION ((int)TERRAIN_CHUNK_WORLD_SIZE)
|
|
#define TERRAIN_LOAD_RADIUS 2
|
|
#define TERRAIN_GRID_SIZE (TERRAIN_LOAD_RADIUS * 2 + 1)
|
|
#define TERRAIN_MAX_CHUNKS (TERRAIN_GRID_SIZE * TERRAIN_GRID_SIZE)
|
|
|
|
typedef struct {
|
|
bool active;
|
|
int chunkX, chunkY;
|
|
Sprite sprite;
|
|
bool *landMask;
|
|
} TerrainChunk;
|
|
|
|
typedef struct {
|
|
TerrainChunk chunks[TERRAIN_MAX_CHUNKS];
|
|
Shader shader;
|
|
float time;
|
|
} Terrain;
|
|
|
|
Terrain CreateTerrain(Camera2D *camera);
|
|
void UpdateTerrain(Terrain *terrain, Camera2D *camera);
|
|
void RenderTerrain(Terrain *terrain);
|
|
void UnloadTerrain(Terrain *terrain);
|
|
|
|
bool IsTerrainLand(Terrain *terrain, Vector2 worldPos);
|
|
bool IsTerrainLoaded(Terrain *terrain, Vector2 worldPos);
|
|
|
|
#endif
|