1#include "TerrainFunctions.h"
3#include "../Source/TerrainSystem.h"
6#include "Bridge/DebugFunctions.h"
7#include "Resources/ResourceStore.h"
9#include "../Source/Terrain.h"
11#include "Foundation/ComponentModel/Entity.h"
16void initializeTerrain()
27 auto terrainSystem = ExtensionRegistry::getExtensionSystem<TerrainSystem>(context);
29 for (
auto & terrainComponent : terrainSystem->pool) {
30 if (terrainComponent.getContainer()->getId() ==
id) {
31 return &terrainSystem->getData(&terrainComponent);
40void setRasterSources(BridgeContext * ctx,
43 const size_t numTerrain,
45 const size_t numImagery)
47 auto context =
static_cast<Context*
>(ctx);
48 auto terrainData = Cogs::Core::getTerrainData(context,
id);
50 terrainSetRasterSources(terrainData->context, terrainParameters, numTerrain, imageryParameters, numImagery);
53void setDebugOptions(BridgeContext * ctx, EntityId
id,
const Cogs::DebugOptions * options)
55 auto context =
static_cast<Context*
>(ctx);
56 auto terrainData = Cogs::Core::getTerrainData(context,
id);
58 terrainSetDebugOptions(terrainData->context, options);
61void setOceanOptions(BridgeContext * ctx, EntityId
id,
const Cogs::OceanOptions * options)
63 auto context =
static_cast<Context*
>(ctx);
64 auto terrainData = Cogs::Core::getTerrainData(context,
id);
66 oceanSetOptions(terrainData->context, options);
69void * createSharedContext(BridgeContext * ctx)
71 auto context =
static_cast<Context*
>(ctx);
72 return context->device->createSharedContext();
75void initializeSharedContext(BridgeContext * ctx,
void * sharedContext)
77 auto context =
static_cast<Context*
>(ctx);
81void releaseSharedContext(BridgeContext * ctx,
void * sharedContext)
83 auto context =
static_cast<Context*
>(ctx);
89 auto context =
static_cast<Context*
>(ctx);
90 auto terrainData = Cogs::Core::getTerrainData(context,
id);
92 terrainData->customComputeColor = options->customComputeColor;
95void invalidateRasterSource(BridgeContext * ctx, EntityId
id,
const long rasterSourceId,
const bool clearContents)
97 auto context =
static_cast<Context*
>(ctx);
98 auto terrainData = Cogs::Core::getTerrainData(context,
id);
100 terrainInvalidateRasterSource(terrainData->context, rasterSourceId, clearContents);
103float getNearestSample(BridgeContext * ctx, EntityId
id)
105 auto context =
static_cast<Context*
>(ctx);
106 auto terrainData = Cogs::Core::getTerrainData(context,
id);
108 return terrainGetNearestSample(terrainData->context);
111void triggerTerrainUpdate(BridgeContext * , EntityId )
118 auto context =
static_cast<Context*
>(ctx);
119 auto terrainData = Cogs::Core::getTerrainData(context,
id);
121 terrainSetParameters(terrainData->context, parameters);
124void setWorldOptions(BridgeContext * ctx, EntityId
id,
const Cogs::WorldOptions * options)
126 auto context =
static_cast<Context*
>(ctx);
127 auto terrainData = Cogs::Core::getTerrainData(context,
id);
129 terrainSetWorldOptions(terrainData->context, options);
132void setUpdateOptions(BridgeContext * ctx, EntityId
id,
const Cogs::UpdateOptions * options)
134 auto context =
static_cast<Context*
>(ctx);
135 auto terrainData = Cogs::Core::getTerrainData(context,
id);
137 terrainSetUpdateOptions(terrainData->context, options);
140void setRenderOptions(BridgeContext * ctx, EntityId
id,
const Cogs::RenderOptions * options)
142 auto context =
static_cast<Context*
>(ctx);
143 auto terrainData = Cogs::Core::getTerrainData(context,
id);
145 terrainSetRenderOptions(terrainData->context, options);
148void queryTerrain(BridgeContext * ctx, EntityId
id,
Cogs::TerrainQuery * query, Cogs::TerrainQueryCallback callback)
150 auto context =
static_cast<Context*
>(ctx);
151 auto terrainData = Cogs::Core::getTerrainData(context,
id);
153 terrainPostQuery(terrainData->context, query, callback);
156void processQueries(BridgeContext * ctx, EntityId
id)
158 auto context =
static_cast<Context*
>(ctx);
159 auto terrainData = Cogs::Core::getTerrainData(context,
id);
161 CHECKED(context, terrainProcessQueries(terrainData->context));
166 auto context =
static_cast<Context*
>(ctx);
167 auto terrainData = Cogs::Core::getTerrainData(context,
id);
169 terrainGetTerrainMetrics(terrainData->context, metrics);
172void setMaxTilesPerFrame(BridgeContext * ctx, EntityId
id,
int count)
174 auto context =
static_cast<Context*
>(ctx);
175 auto terrainData = Cogs::Core::getTerrainData(context,
id);
177 terrainData->maxTilesPerFrame = count;
180void disposeRasterSource(BridgeContext* , int64_t
id)
182 terrainDisposeRasterSource(
id);
185void invalidateRasterTile(BridgeContext*, int64_t
id,
int level,
int x,
int y,
int flags)
187 terrainInvalidateTile(
id, level, x, y, flags);
190void setImageryEnabled(BridgeContext * ctx, EntityId
id,
const bool * data,
int count)
192 auto context =
static_cast<Context*
>(ctx);
193 auto terrainData = Cogs::Core::getTerrainData(context,
id);
195 terrainSetImageryEnabled(terrainData->context, data, count);
198void setCustomParameters(BridgeContext * ctx, EntityId
id,
const unsigned char * data,
int count)
200 auto context =
static_cast<Context*
>(ctx);
201 auto terrainData = Cogs::Core::getTerrainData(context,
id);
203 terrainSetCustomParameters(terrainData->context, data, count);
A Context instance contains all the services, systems and runtime components needed to use Cogs.
Contains the Engine, Renderer, resource managers and other systems needed to run Cogs....
Contains all Cogs related functionality.