Added KrCreateScene API
This commit is contained in:
@@ -429,6 +429,16 @@ KrResult KRContext::mapResource(const KrMapResourceInfo* mapResourceInfo)
|
|||||||
return KR_ERROR_NOT_IMPLEMENTED;
|
return KR_ERROR_NOT_IMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
KrResult KRContext::createScene(const KrCreateSceneInfo* createSceneInfo)
|
||||||
|
{
|
||||||
|
if (createSceneInfo->resourceHandle < 0 || createSceneInfo->resourceHandle >= m_resourceMapSize) {
|
||||||
|
return KR_ERROR_OUT_OF_BOUNDS;
|
||||||
|
}
|
||||||
|
KRScene* scene = m_pSceneManager->createScene(createSceneInfo->pSceneName);
|
||||||
|
m_resourceMap[createSceneInfo->resourceHandle] = scene;
|
||||||
|
return KR_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
KrResult KRContext::createBundle(const KrCreateBundleInfo* createBundleInfo)
|
KrResult KRContext::createBundle(const KrCreateBundleInfo* createBundleInfo)
|
||||||
{
|
{
|
||||||
if (createBundleInfo->resourceHandle < 0 || createBundleInfo->resourceHandle >= m_resourceMapSize) {
|
if (createBundleInfo->resourceHandle < 0 || createBundleInfo->resourceHandle >= m_resourceMapSize) {
|
||||||
|
|||||||
@@ -47,6 +47,8 @@ public:
|
|||||||
KrResult mapResource(const KrMapResourceInfo* mapResourceInfo);
|
KrResult mapResource(const KrMapResourceInfo* mapResourceInfo);
|
||||||
KrResult saveResource(const KrSaveResourceInfo* saveResourceInfo);
|
KrResult saveResource(const KrSaveResourceInfo* saveResourceInfo);
|
||||||
|
|
||||||
|
KrResult createScene(const KrCreateSceneInfo* createSceneInfo);
|
||||||
|
|
||||||
KRResource* loadResource(const std::string &file_name, KRDataBlock *data);
|
KRResource* loadResource(const std::string &file_name, KRDataBlock *data);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -67,6 +67,15 @@ KRScene *KRSceneManager::loadScene(const std::string &name, KRDataBlock *data) {
|
|||||||
return pScene;
|
return pScene;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
KRScene* KRSceneManager::createScene(const std::string& name)
|
||||||
|
{
|
||||||
|
// TODO: Check for name conflicts
|
||||||
|
KRScene* pScene = new KRScene(*m_pContext, name);
|
||||||
|
add(pScene);
|
||||||
|
return pScene;
|
||||||
|
}
|
||||||
|
|
||||||
void KRSceneManager::add(KRScene *scene)
|
void KRSceneManager::add(KRScene *scene)
|
||||||
{
|
{
|
||||||
std::string lowerName = scene->getName();
|
std::string lowerName = scene->getName();
|
||||||
|
|||||||
@@ -49,6 +49,8 @@ public:
|
|||||||
virtual KRResource* loadResource(const std::string& name, const std::string& extension, KRDataBlock* data) override;
|
virtual KRResource* loadResource(const std::string& name, const std::string& extension, KRDataBlock* data) override;
|
||||||
virtual KRResource* getResource(const std::string& name, const std::string& extension) override;
|
virtual KRResource* getResource(const std::string& name, const std::string& extension) override;
|
||||||
|
|
||||||
|
KRScene* createScene(const std::string& name);
|
||||||
|
|
||||||
void add(KRScene *scene);
|
void add(KRScene *scene);
|
||||||
KRScene *loadScene(const std::string &name, KRDataBlock *data);
|
KRScene *loadScene(const std::string &name, KRDataBlock *data);
|
||||||
|
|
||||||
|
|||||||
@@ -78,3 +78,11 @@ KrResult KrMoveToBundle(const KrMoveToBundleInfo* pMoveToBundleInfo)
|
|||||||
}
|
}
|
||||||
return sContext->moveToBundle(pMoveToBundleInfo);
|
return sContext->moveToBundle(pMoveToBundleInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
KrResult KrCreateScene(const KrCreateSceneInfo* pCreateSceneInfo)
|
||||||
|
{
|
||||||
|
if (!sContext) {
|
||||||
|
return KR_ERROR_NOT_INITIALIZED;
|
||||||
|
}
|
||||||
|
return sContext->createScene(pCreateSceneInfo);
|
||||||
|
}
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ typedef enum {
|
|||||||
KR_STRUCTURE_TYPE_UNMAP_RESOURCE = 0x00010004,
|
KR_STRUCTURE_TYPE_UNMAP_RESOURCE = 0x00010004,
|
||||||
KR_STRUCTURE_TYPE_CREATE_BUNDLE = 0x00010005,
|
KR_STRUCTURE_TYPE_CREATE_BUNDLE = 0x00010005,
|
||||||
KR_STRUCTURE_TYPE_MOVE_TO_BUNDLE = 0x00010006,
|
KR_STRUCTURE_TYPE_MOVE_TO_BUNDLE = 0x00010006,
|
||||||
|
KR_STRUCTURE_TYPE_CREATE_SCENE = 0x00020000,
|
||||||
|
|
||||||
KR_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF
|
KR_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF
|
||||||
} KrStructureType;
|
} KrStructureType;
|
||||||
@@ -107,6 +108,12 @@ typedef struct {
|
|||||||
KrResourceMapIndex bundleHandle;
|
KrResourceMapIndex bundleHandle;
|
||||||
} KrMoveToBundleInfo;
|
} KrMoveToBundleInfo;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
KrStructureType sType;
|
||||||
|
const char* pSceneName;
|
||||||
|
KrResourceMapIndex resourceHandle;
|
||||||
|
} KrCreateSceneInfo;
|
||||||
|
|
||||||
KrResult KrInitialize(const KrInitializeInfo* pInitializeInfo);
|
KrResult KrInitialize(const KrInitializeInfo* pInitializeInfo);
|
||||||
KrResult KrShutdown();
|
KrResult KrShutdown();
|
||||||
KrResult KrLoadResource(const KrLoadResourceInfo* pLoadResourceInfo);
|
KrResult KrLoadResource(const KrLoadResourceInfo* pLoadResourceInfo);
|
||||||
@@ -117,4 +124,6 @@ KrResult KrUnmapResource(const KrUnmapResourceInfo* pUnmapResourceInfo);
|
|||||||
KrResult KrCreateBundle(const KrCreateBundleInfo* pCreateBundleInfo);
|
KrResult KrCreateBundle(const KrCreateBundleInfo* pCreateBundleInfo);
|
||||||
KrResult KrMoveToBundle(const KrMoveToBundleInfo* pMoveToBundleInfo);
|
KrResult KrMoveToBundle(const KrMoveToBundleInfo* pMoveToBundleInfo);
|
||||||
|
|
||||||
|
KrResult KrCreateScene(const KrCreateSceneInfo* pCreateSceneInfo);
|
||||||
|
|
||||||
#endif // KRAKEN_H
|
#endif // KRAKEN_H
|
||||||
|
|||||||
Reference in New Issue
Block a user