Cogs.Core
ResourceFunctions.h
1#pragma once
2
3#include "BridgeApi.h"
4
5typedef void ResourceLoadCallback(BridgeContext* ctx, int resourceType, ResourceId resourceId, int code);
6typedef void HierarchyChangeCallback(BridgeContext* ctx, EntityId entityId);
7typedef void ReadbackCallback(BridgeContext* ctx, const char* key, const void* data, int size);
8
9COGSCORE_BRIDGE void setResourceLoadCallback(BridgeContext * ctx, ResourceLoadCallback * callback);
10COGSCORE_BRIDGE void setHierarchyChangeCallback(BridgeContext * ctx, HierarchyChangeCallback * callback);
11COGSCORE_BRIDGE void setReadbackCallback(BridgeContext * ctx, ReadbackCallback * callback);
12
19COGSCORE_BRIDGE ResourceId findResource(BridgeContext* ctx, int resourceType, const char* resourceName);
20
21// ------------- Buffer Resource access -------------
22
24COGSCORE_BRIDGE ResourceId getNextBufferId(BridgeContext * ctx);
25
27COGSCORE_BRIDGE void loadBuffer(BridgeContext * ctx, int size, const unsigned char * data, ResourceId resourceId, int resourceLoadFlags);
28COGSCORE_BRIDGE void resizeBuffer(BridgeContext * ctx, const ResourceId resourceId, int size);
29
31COGSCORE_BRIDGE void * mapBuffer(BridgeContext * ctx, const ResourceId resourceId, int flags);
32COGSCORE_BRIDGE void unmapBuffer(BridgeContext * ctx, const ResourceId resourceId);
33COGSCORE_BRIDGE void updateBufferRange(BridgeContext * ctx, const ResourceId resourceId, int offset, int size, const unsigned char * data);
34COGSCORE_BRIDGE void invalidateBufferRange(BridgeContext * ctx, const ResourceId resourceId, int offset, int size);
35
37COGSCORE_BRIDGE void setBufferField(BridgeContext * ctx, EntityId entityId, const ComponentId componentId, const FieldId fieldId, const ResourceId resourceId);
38
40COGSCORE_BRIDGE void releaseBuffer(BridgeContext* ctx, ResourceId resourceId);
41
42// ------------- Mesh Resource access -------------
43
44COGSCORE_BRIDGE ResourceId loadMesh(BridgeContext * ctx);
45
47COGSCORE_BRIDGE void setMeshField(BridgeContext * ctx, EntityId entityId, const ComponentId componentId, const FieldId fieldId, const ResourceId resourceId);
48
49// Access to mesh stream data. Offers limited access to mesh streams.
50// Only non-interleaved streams are currently supported.
51// The 'stream' parameter is a bridge-defined index to define stream to access.
52// Data type pass in 'data' parameter must match required type. see setMeshData implementation.
53
54COGSCORE_BRIDGE void setMeshData(BridgeContext * ctx, ResourceId resourceId, int stream, const void * data, int count);
55COGSCORE_BRIDGE const void * getMeshData(BridgeContext * ctx, ResourceId resourceId, int stream, int * count);
56COGSCORE_BRIDGE void * mapMeshData(BridgeContext * ctx, ResourceId resourceId, int stream, int start, int count);
57COGSCORE_BRIDGE void unmapMeshData(BridgeContext * ctx, ResourceId resourceId, int stream);
58
60COGSCORE_BRIDGE void setMeshPrimitiveType(BridgeContext * ctx, ResourceId resourceId, int primitiveType);
61COGSCORE_BRIDGE void setMeshBoundingBox(BridgeContext * ctx, ResourceId resourceId, const float * data);
62
64COGSCORE_BRIDGE void releaseMesh(BridgeContext* ctx, ResourceId resourceId);
65
66// ------------- Asset Resource access -------------
67
69COGSCORE_BRIDGE ResourceId createAsset(BridgeContext * ctx, const char * path, int assetLoadFlags);
70
72COGSCORE_BRIDGE void releaseAsset(BridgeContext* ctx, ResourceId resourceId);
73
75COGSCORE_BRIDGE void setAssetField(BridgeContext * ctx, EntityId entityId, const ComponentId componentId, const FieldId fieldId, const ResourceId resourceId);
76
77// ------------- Model Resource access -------------
78
80COGSCORE_BRIDGE ResourceId getNextModelId(BridgeContext * ctx);
81
83COGSCORE_BRIDGE ResourceId loadModel(BridgeContext * ctx, const char * resourceName, ResourceId resourceId, int modelLoadFlags);
84
86COGSCORE_BRIDGE void releaseModel(BridgeContext* ctx, ResourceId resourceId);
87
89COGSCORE_BRIDGE void setModelField(BridgeContext * ctx, EntityId entityId, const ComponentId componentId, const FieldId fieldId, const ResourceId resourceId);
90
91// ------------- Texture Resource access -------------
92
94COGSCORE_BRIDGE ResourceId getNextTextureId(BridgeContext * ctx);
95
97COGSCORE_BRIDGE void loadTexture(BridgeContext * ctx, ResourceId resourceId, const char * resourceName, int textureLoadFlags);
98
101COGSCORE_BRIDGE void loadTextureResource(BridgeContext * ctx, ResourceId resourceId, const void * imageData, int width, int height, int textureFormat, int stride, int textureLoadFlags);
102
105COGSCORE_BRIDGE void loadRenderTextureResource(BridgeContext* ctx, ResourceId resourceId, int width, int height, int textureFormat, int textureLoadFlags);
106
109COGSCORE_BRIDGE void loadTextureResource2(BridgeContext * ctx, ResourceId resourceId, const void * imageData, int target, int width, int height, int depth, int layers, int textureFormat, int stride, int textureLoadFlags);
110
113COGSCORE_BRIDGE void loadTextureVolumeResource(BridgeContext * ctx, ResourceId resourceId, const void * imageData, int width, int height, int depth, int textureFormat, int stride, int textureLoadFlags);
114
116COGSCORE_BRIDGE void loadExternalTextureResource(BridgeContext * ctx, ResourceId resourceId, intptr_t externalHandle, int width, int height, int bpp, int stride, int textureLoadFlags);
117
120COGSCORE_BRIDGE void loadExternalTextureResource2(BridgeContext * ctx, ResourceId resourceId, intptr_t externalHandle, int target, int width, int height, int depth, int layers, int textureFormat, int stride, int textureLoadFlags);
121
123COGSCORE_BRIDGE void setTextureField(BridgeContext * ctx, EntityId entityId, const ComponentId componentId, const FieldId fieldId, const ResourceId resourceId);
124
125COGSCORE_BRIDGE void setTexturesField(BridgeContext* ctx, EntityId entityId, const ComponentId componentId, const FieldId fieldId, const ResourceId* resourceIds, int size);
126
128COGSCORE_BRIDGE void releaseTexture(BridgeContext * ctx, ResourceId resourceId);
129
130// ------------- Material Resource access -------------
131
132COGSCORE_BRIDGE ResourceId loadMaterial(BridgeContext * ctx, const char * resourceName);
133
136COGSCORE_BRIDGE int getMaterialPropertyDataType(BridgeContext* ctx, ResourceId resourceId, const char* name);
137
138COGSCORE_BRIDGE void setMaterialSharedProperty(BridgeContext* ctx, ResourceId materialId, const char* name, const void* data, const int sizeInBytes);
139
140COGSCORE_BRIDGE void setMaterialsField(BridgeContext* ctx, EntityId entityId, const ComponentId componentId, const FieldId fieldId, const ResourceId* resourceIds, int size);
141
142// Cannot release materials when being used by material instance
143// COGSCORE_BRIDGE void releaseMaterial(BridgeContext* ctx, ResourceId resourceId);
144
145// ------------- MaterialInstance Resource access -------------
146
147COGSCORE_BRIDGE ResourceId loadMaterialInstance(BridgeContext * ctx, ResourceId materialId);
148
150COGSCORE_BRIDGE void setMaterialInstanceField(BridgeContext * ctx, EntityId entityId, const ComponentId componentId, const FieldId fieldId, const ResourceId resourceId);
154COGSCORE_BRIDGE void setMaterialInstancesField(BridgeContext* ctx, EntityId entityId, const ComponentId componentId, const FieldId fieldId, const ResourceId* resourceIds, int size);
155
157COGSCORE_BRIDGE void setMaterialInstanceArrayField(BridgeContext * ctx, EntityId entityId, const ComponentId componentId, const FieldId fieldId, const ResourceId resourceId, int index);
158
159COGSCORE_BRIDGE void setMaterialInstanceOption(BridgeContext * ctx, ResourceId resourceId, const char * name, const char * value);
160
162COGSCORE_BRIDGE void setMaterialInstanceProperty(BridgeContext * ctx, ResourceId resourceId, const char * name, const void * data, const int sizeInBytes);
163COGSCORE_BRIDGE CogsBool getMaterialInstanceProperty(BridgeContext * ctx, ResourceId resourceId, const char * name, void * data, const int sizeInBytes);
164
167COGSCORE_BRIDGE int getMaterialInstancePropertyDataType(BridgeContext* ctx, ResourceId resourceId, const char* name);
168COGSCORE_BRIDGE void setMaterialInstanceTexture(BridgeContext * ctx, ResourceId resourceId, const char * name, const ResourceId textureId);
169COGSCORE_BRIDGE void setMaterialInstanceTextureAddressMode(BridgeContext * ctx, ResourceId resourceId, const char * name, const char * mode);
170COGSCORE_BRIDGE void setMaterialInstanceTextureFilterMode(BridgeContext* ctx, ResourceId resourceId, const char* name, const char* filterMode);
171COGSCORE_BRIDGE void setMaterialInstancePermutation(BridgeContext * ctx, ResourceId resourceId, const char * name);
172COGSCORE_BRIDGE void setMaterialInstanceVariant(BridgeContext * ctx, ResourceId resourceId, const char * key, const char * value);
173COGSCORE_BRIDGE const char * getMaterialInstanceVariant(BridgeContext * ctx, ResourceId resourceId, const char * key);
174
176COGSCORE_BRIDGE void setMaterialInstanceFlags(BridgeContext * ctx, ResourceId resourceId, int materialFlags);
177COGSCORE_BRIDGE const char * getMaterialInstanceName(BridgeContext * ctx, ResourceId materialInstanceId);
178COGSCORE_BRIDGE void setMaterialInstanceName(BridgeContext * ctx, ResourceId materialInstanceId, const char * name);
179
181COGSCORE_BRIDGE void releaseMaterialInstance(BridgeContext* ctx, ResourceId resourceId);
182
183// ------------- Font Resource access -------------
184
186COGSCORE_BRIDGE ResourceId getNextFontId(BridgeContext* ctx);
187
189COGSCORE_BRIDGE ResourceId loadFont(BridgeContext* ctx, const char* resourceName, float size, ResourceId resourceId);
190
192COGSCORE_BRIDGE void releaseFont(BridgeContext* ctx, ResourceId resourceId);
193
195COGSCORE_BRIDGE void addFontDependency(BridgeContext * ctx, EntityId entityId, const ComponentId componentId, const FieldId fieldId, const ResourceId resourceId);
196
197// ------------- Resource Store functions -------------
198
200COGSCORE_BRIDGE void registerStringResource(BridgeContext * ctx, const char * key, const char * value);
201
206COGSCORE_BRIDGE void registerBinaryResource(BridgeContext* ctx, const char* key, const void* value, int length);
207
210COGSCORE_BRIDGE void addResourceArchive(BridgeContext* ctx, const char* key, CogsBool prepend);
211
213COGSCORE_BRIDGE CogsBool hasResource(BridgeContext* ctx, const char* key);
214
216COGSCORE_BRIDGE ResourceId getMaterialInstance(BridgeContext * ctx, EntityId entityId, const ComponentId componentId, const FieldId fieldId);
217
221COGSCORE_BRIDGE int getMaterialInstances(BridgeContext * ctx, EntityId entityId, const ComponentId componentId, const FieldId fieldId, ResourceId * ids, int idsCount);
222
224COGSCORE_BRIDGE void addSearchPath(BridgeContext * ctx, const char * path);
225
227COGSCORE_BRIDGE void purgeResource(BridgeContext * ctx, const char * resourceName);