paysages: Fixed memleaks + improved clouds lighting.
git-svn-id: https://subversion.assembla.com/svn/thunderk/paysages@265 b1fd45b6-86a6-48da-8261-f70d1f35bdcc
This commit is contained in:
parent
932552bc48
commit
8100fefad8
27 changed files with 106 additions and 8 deletions
2
TODO
2
TODO
|
@ -3,3 +3,5 @@
|
|||
- Implement scaling and scrolling on previews.
|
||||
- Water and terrain LOD moves with the camera, fix it like in the wanderer.
|
||||
- Restore render progress.
|
||||
- Find a licence and apply it.
|
||||
- Translate UI ?
|
||||
|
|
|
@ -111,7 +111,9 @@ int main(int argc, char** argv)
|
|||
conf_daytime_start += conf_daytime_step;
|
||||
}
|
||||
|
||||
printf("Cleaning up ...\n");
|
||||
rendererDelete(&renderer);
|
||||
paysagesQuit();
|
||||
|
||||
printf("\rDone. \n");
|
||||
|
||||
|
|
|
@ -24,6 +24,8 @@
|
|||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
int result;
|
||||
|
||||
paysagesInit();
|
||||
|
||||
QApplication app(argc, argv);
|
||||
|
@ -31,7 +33,10 @@ int main(int argc, char** argv)
|
|||
|
||||
window.show();
|
||||
|
||||
return app.exec();
|
||||
result = app.exec();
|
||||
|
||||
paysagesQuit();
|
||||
return result;
|
||||
}
|
||||
|
||||
MainWindow::MainWindow(QWidget *parent) :
|
||||
|
|
|
@ -9,7 +9,7 @@ void arrayCreate(Array* array, int item_size)
|
|||
array->alloc_length = 3;
|
||||
array->item_size = item_size;
|
||||
array->dirty = 1;
|
||||
array->data = malloc((size_t)item_size * 3);
|
||||
array->data = malloc((size_t)item_size * array->alloc_length);
|
||||
}
|
||||
|
||||
void arrayDelete(Array* array)
|
||||
|
|
|
@ -10,6 +10,10 @@ void atmosphereInit()
|
|||
{
|
||||
}
|
||||
|
||||
void atmosphereQuit()
|
||||
{
|
||||
}
|
||||
|
||||
void atmosphereSave(FILE* f, AtmosphereDefinition* definition)
|
||||
{
|
||||
toolsSaveDouble(f, &definition->distance_near);
|
||||
|
|
|
@ -19,6 +19,7 @@ typedef struct
|
|||
} AtmosphereDefinition;
|
||||
|
||||
void atmosphereInit();
|
||||
void atmosphereQuit();
|
||||
void atmosphereSave(FILE* f, AtmosphereDefinition* definition);
|
||||
void atmosphereLoad(FILE* f, AtmosphereDefinition* definition);
|
||||
|
||||
|
|
|
@ -62,7 +62,6 @@ void autoGenRealisticLandscape(int seed)
|
|||
TerrainDefinition terrain;
|
||||
WaterDefinition water;
|
||||
CloudsDefinition clouds;
|
||||
CloudsLayerDefinition* cloud;
|
||||
SkyDefinition sky;
|
||||
TexturesDefinition textures;
|
||||
TextureLayerDefinition* texture;
|
||||
|
@ -78,7 +77,7 @@ void autoGenRealisticLandscape(int seed)
|
|||
|
||||
/* Cloud layer */
|
||||
clouds = cloudsCreateDefinition();
|
||||
cloud = cloudsGetLayer(&clouds, cloudsAddLayer(&clouds));
|
||||
cloudsAddLayer(&clouds);
|
||||
scenerySetClouds(&clouds);
|
||||
cloudsDeleteDefinition(&clouds);
|
||||
|
||||
|
@ -163,6 +162,7 @@ void autoGenRealisticLandscape(int seed)
|
|||
zoneIncludeCircleArea(zone, 0.8, 0.0, 0.0, 0.3, 4.0);
|
||||
modifierActionFixValue(mod, -8.0);
|
||||
terrainAddModifier(&terrain, mod);
|
||||
modifierDelete(mod);
|
||||
/* DEBUG */
|
||||
scenerySetTerrain(&terrain);
|
||||
terrainDeleteDefinition(&terrain);
|
||||
|
|
|
@ -13,6 +13,10 @@ void cameraInit()
|
|||
{
|
||||
}
|
||||
|
||||
void cameraQuit()
|
||||
{
|
||||
}
|
||||
|
||||
void cameraSave(FILE* f, CameraDefinition* camera)
|
||||
{
|
||||
v3Save(f, &camera->location);
|
||||
|
|
|
@ -10,6 +10,7 @@ extern "C" {
|
|||
#endif
|
||||
|
||||
void cameraInit();
|
||||
void cameraQuit();
|
||||
void cameraSave(FILE* f, CameraDefinition* camera);
|
||||
void cameraLoad(FILE* f, CameraDefinition* camera);
|
||||
|
||||
|
|
|
@ -27,6 +27,11 @@ void cloudsInit()
|
|||
cloudsLayerValidateDefinition(&NULL_LAYER);
|
||||
}
|
||||
|
||||
void cloudsQuit()
|
||||
{
|
||||
cloudsLayerDeleteDefinition(&NULL_LAYER);
|
||||
}
|
||||
|
||||
void cloudsSave(FILE* f, CloudsDefinition* definition)
|
||||
{
|
||||
int i;
|
||||
|
@ -476,10 +481,10 @@ static Color _applyLayerLighting(CloudsLayerDefinition* definition, Renderer* re
|
|||
{
|
||||
Vector3 normal;
|
||||
|
||||
normal = v3Scale(_getNormal(definition, position, 1.0), 0.25);
|
||||
normal = v3Scale(_getNormal(definition, position, 3.0), 0.25);
|
||||
normal = v3Add(normal, v3Scale(_getNormal(definition, position, 2.0), 0.25));
|
||||
normal = v3Add(normal, v3Scale(_getNormal(definition, position, 1.0), 0.25));
|
||||
normal = v3Add(normal, v3Scale(_getNormal(definition, position, 0.5), 0.25));
|
||||
normal = v3Add(normal, v3Scale(_getNormal(definition, position, 0.2), 0.25));
|
||||
normal = v3Add(normal, v3Scale(_getNormal(definition, position, 0.1), 0.25));
|
||||
normal = v3Scale(v3Normalize(normal), 0.1);
|
||||
|
||||
return renderer->applyLightingToSurface(renderer, position, normal, definition->material);
|
||||
|
|
|
@ -38,6 +38,7 @@ typedef struct
|
|||
} CloudsDefinition;
|
||||
|
||||
void cloudsInit();
|
||||
void cloudsQuit();
|
||||
void cloudsSave(FILE* f, CloudsDefinition* definition);
|
||||
void cloudsLoad(FILE* f, CloudsDefinition* definition);
|
||||
|
||||
|
|
|
@ -30,6 +30,10 @@ void lightingInit()
|
|||
_LIGHT_NULL.amplitude = 0.0;
|
||||
}
|
||||
|
||||
void lightingQuit()
|
||||
{
|
||||
}
|
||||
|
||||
void lightingSave(FILE* f, LightingDefinition* definition)
|
||||
{
|
||||
int i;
|
||||
|
|
|
@ -31,6 +31,7 @@ typedef struct
|
|||
} LightingDefinition;
|
||||
|
||||
void lightingInit();
|
||||
void lightingQuit();
|
||||
void lightingSave(FILE* f, LightingDefinition* definition);
|
||||
void lightingLoad(FILE* f, LightingDefinition* definition);
|
||||
|
||||
|
|
|
@ -47,6 +47,12 @@ void paysagesInit()
|
|||
cameraSetTarget(x - 1.0, height, 0.0);*/
|
||||
}
|
||||
|
||||
void paysagesQuit()
|
||||
{
|
||||
sceneryQuit();
|
||||
renderQuit();
|
||||
}
|
||||
|
||||
void paysagesSave(char* filepath)
|
||||
{
|
||||
scenerySaveToFile(filepath);
|
||||
|
|
|
@ -6,6 +6,7 @@ extern "C" {
|
|||
#endif
|
||||
|
||||
void paysagesInit();
|
||||
void paysagesQuit();
|
||||
void paysagesSave(char* filepath);
|
||||
void paysagesLoad(char* filepath);
|
||||
|
||||
|
|
|
@ -44,6 +44,10 @@ void renderInit()
|
|||
{
|
||||
}
|
||||
|
||||
void renderQuit()
|
||||
{
|
||||
}
|
||||
|
||||
RenderArea* renderCreateArea()
|
||||
{
|
||||
RenderArea* result;
|
||||
|
@ -74,8 +78,19 @@ RenderArea* renderCreateArea()
|
|||
|
||||
void renderDeleteArea(RenderArea* area)
|
||||
{
|
||||
int x;
|
||||
int y;
|
||||
|
||||
for (x = 0; x < area->width; x++)
|
||||
{
|
||||
for (y = 0; y < area->height; y++)
|
||||
{
|
||||
arrayDelete(area->pixels + (y * area->width + x));
|
||||
}
|
||||
}
|
||||
|
||||
mutexDestroy(area->lock);
|
||||
arrayDelete(area->pixels);
|
||||
free(area->pixels);
|
||||
free(area->scanline_up);
|
||||
free(area->scanline_down);
|
||||
free(area);
|
||||
|
|
|
@ -10,6 +10,8 @@ extern "C" {
|
|||
#endif
|
||||
|
||||
void renderInit();
|
||||
void renderQuit();
|
||||
|
||||
RenderArea* renderCreateArea();
|
||||
void renderDeleteArea(RenderArea* area);
|
||||
|
||||
|
|
|
@ -36,6 +36,27 @@ void sceneryInit()
|
|||
_water = waterCreateDefinition();
|
||||
}
|
||||
|
||||
void sceneryQuit()
|
||||
{
|
||||
atmosphereDeleteDefinition(&_atmosphere);
|
||||
cameraDeleteDefinition(&_camera);
|
||||
cloudsDeleteDefinition(&_clouds);
|
||||
lightingDeleteDefinition(&_lighting);
|
||||
skyDeleteDefinition(&_sky);
|
||||
terrainDeleteDefinition(&_terrain);
|
||||
texturesDeleteDefinition(&_textures);
|
||||
waterDeleteDefinition(&_water);
|
||||
|
||||
atmosphereQuit();
|
||||
cameraQuit();
|
||||
cloudsQuit();
|
||||
lightingQuit();
|
||||
skyQuit();
|
||||
terrainQuit();
|
||||
texturesQuit();
|
||||
waterQuit();
|
||||
}
|
||||
|
||||
void scenerySaveToFile(char* filepath)
|
||||
{
|
||||
FILE* f = fopen(filepath, "wb");
|
||||
|
|
|
@ -24,6 +24,8 @@ extern "C" {
|
|||
#endif
|
||||
|
||||
void sceneryInit();
|
||||
void sceneryQuit();
|
||||
|
||||
void scenerySaveToFile(char* filepath);
|
||||
void sceneryLoadFromFile(char* filepath);
|
||||
|
||||
|
|
|
@ -18,6 +18,10 @@ void skyInit()
|
|||
{
|
||||
}
|
||||
|
||||
void skyQuit()
|
||||
{
|
||||
}
|
||||
|
||||
void skySave(FILE* f, SkyDefinition* definition)
|
||||
{
|
||||
toolsSaveDouble(f, &definition->daytime);
|
||||
|
|
|
@ -22,6 +22,7 @@ typedef struct
|
|||
} SkyDefinition;
|
||||
|
||||
void skyInit();
|
||||
void skyQuit();
|
||||
void skySave(FILE* f, SkyDefinition* definition);
|
||||
void skyLoad(FILE* f, SkyDefinition* definition);
|
||||
|
||||
|
|
|
@ -17,6 +17,10 @@ void terrainInit()
|
|||
{
|
||||
}
|
||||
|
||||
void terrainQuit()
|
||||
{
|
||||
}
|
||||
|
||||
void terrainSave(FILE* f, TerrainDefinition* definition)
|
||||
{
|
||||
int i;
|
||||
|
|
|
@ -25,6 +25,7 @@ typedef struct
|
|||
} TerrainDefinition;
|
||||
|
||||
void terrainInit();
|
||||
void terrainQuit();
|
||||
void terrainSave(FILE* f, TerrainDefinition* definition);
|
||||
void terrainLoad(FILE* f, TerrainDefinition* definition);
|
||||
|
||||
|
|
|
@ -20,6 +20,11 @@ void texturesInit()
|
|||
_NULL_LAYER = texturesLayerCreateDefinition();
|
||||
}
|
||||
|
||||
void texturesQuit()
|
||||
{
|
||||
texturesLayerDeleteDefinition(&_NULL_LAYER);
|
||||
}
|
||||
|
||||
void texturesSave(FILE* f, TexturesDefinition* definition)
|
||||
{
|
||||
int i;
|
||||
|
|
|
@ -26,6 +26,7 @@ typedef struct
|
|||
} TexturesDefinition;
|
||||
|
||||
void texturesInit();
|
||||
void texturesQuit();
|
||||
void texturesSave(FILE* f, TexturesDefinition* definition);
|
||||
void texturesLoad(FILE* f, TexturesDefinition* definition);
|
||||
|
||||
|
|
|
@ -15,6 +15,10 @@ void waterInit()
|
|||
{
|
||||
}
|
||||
|
||||
void waterQuit()
|
||||
{
|
||||
}
|
||||
|
||||
void waterSave(FILE* f, WaterDefinition* definition)
|
||||
{
|
||||
toolsSaveDouble(f, &definition->height);
|
||||
|
|
|
@ -35,6 +35,7 @@ typedef struct
|
|||
} WaterResult;
|
||||
|
||||
void waterInit();
|
||||
void waterQuit();
|
||||
void waterSave(FILE* f, WaterDefinition* definition);
|
||||
void waterLoad(FILE* f, WaterDefinition* definition);
|
||||
|
||||
|
|
Loading…
Reference in a new issue