extra callback

pull/3280/head
ywang 2020-06-11 17:37:06 -07:00
parent f57e7221c0
commit e65434bf82
5 changed files with 14 additions and 22 deletions

View File

@ -1,4 +1,4 @@
/* /*
Open Asset Import Library (assimp) Open Asset Import Library (assimp)
---------------------------------------------------------------------- ----------------------------------------------------------------------
@ -1006,6 +1006,7 @@ public:
} extensionsRequired; } extensionsRequired;
AssetMetadata asset; AssetMetadata asset;
Value* extras = nullptr;
// Dictionaries for each type of object // Dictionaries for each type of object

View File

@ -1,4 +1,4 @@
/* /*
Open Asset Import Library (assimp) Open Asset Import Library (assimp)
---------------------------------------------------------------------- ----------------------------------------------------------------------
@ -600,6 +600,10 @@ namespace glTF2 {
if (mAsset.scene) { if (mAsset.scene) {
mDoc.AddMember("scene", mAsset.scene->index, mAl); mDoc.AddMember("scene", mAsset.scene->index, mAl);
} }
if(mAsset.extras) {
mDoc.AddMember("extras", *mAsset.extras, mAl);
}
} }
inline void AssetWriter::WriteFile(const char* path) inline void AssetWriter::WriteFile(const char* path)

View File

@ -116,17 +116,11 @@ glTF2Exporter::glTF2Exporter(const char* filename, IOSystem* pIOSystem, const ai
ExportAnimations(); ExportAnimations();
//wangyi 0608 // export extras
if(mProperties->HasPropertyCallback("extras")) if(mProperties->HasPropertyCallback("extras"))
{ {
std::function<void*(void*)> ExportExtras = mProperties->GetPropertyCallback("extras"); std::function<void*(void*)> ExportExtras = mProperties->GetPropertyCallback("extras");
char* ret = (char*)ExportExtras((void*)mAsset.get()); mAsset->extras = (rapidjson::Value*)ExportExtras(0);
Document extrasD;
extrasD.Parse(ret);
std::string strHello = extrasD["hello"].GetString();
printf("wangyi 0608 ret: %s\r\n", ret);
} }
AssetWriter writer(*mAsset); AssetWriter writer(*mAsset);

View File

@ -581,19 +581,18 @@ ExportProperties::ExportProperties(const ExportProperties &other)
, mFloatProperties(other.mFloatProperties) , mFloatProperties(other.mFloatProperties)
, mStringProperties(other.mStringProperties) , mStringProperties(other.mStringProperties)
, mMatrixProperties(other.mMatrixProperties) , mMatrixProperties(other.mMatrixProperties)
//wangyi 0608
, mCallbackProperties(other.mCallbackProperties){ , mCallbackProperties(other.mCallbackProperties){
// empty // empty
} }
//wangyi 0608
bool ExportProperties::SetPropertyCallback(const char *szName, const std::function<void *(void *)> &f) { bool ExportProperties::SetPropertyCallback(const char *szName, const std::function<void *(void *)> &f) {
return SetGenericProperty<std::function<void *(void *)>>(mCallbackProperties, szName, f); return SetGenericProperty<std::function<void *(void *)>>(mCallbackProperties, szName, f);
} }
std::function<void *(void *)> ExportProperties::GetPropertyCallback(const char *szName) const { std::function<void *(void *)> ExportProperties::GetPropertyCallback(const char *szName) const {
return GetGenericProperty<std::function<void *(void *)>>(mCallbackProperties, szName, 0); return GetGenericProperty<std::function<void *(void *)>>(mCallbackProperties, szName, 0);
} }
//wangyi 0608
bool ExportProperties::HasPropertyCallback(const char *szName) const { bool ExportProperties::HasPropertyCallback(const char *szName) const {
return HasGenericProperty<std::function<void *(void *)>>(mCallbackProperties, szName); return HasGenericProperty<std::function<void *(void *)>>(mCallbackProperties, szName);
} }

View File

@ -54,7 +54,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include "cexport.h" #include "cexport.h"
#include <map> #include <map>
//wangyi 0608
#include <functional> #include <functional>
namespace Assimp { namespace Assimp {
@ -332,7 +331,6 @@ public:
typedef std::map<KeyType, ai_real> FloatPropertyMap; typedef std::map<KeyType, ai_real> FloatPropertyMap;
typedef std::map<KeyType, std::string> StringPropertyMap; typedef std::map<KeyType, std::string> StringPropertyMap;
typedef std::map<KeyType, aiMatrix4x4> MatrixPropertyMap; typedef std::map<KeyType, aiMatrix4x4> MatrixPropertyMap;
//wangyi 0608
typedef std::map<KeyType, std::function<void *(void *)>> CallbackPropertyMap; typedef std::map<KeyType, std::function<void *(void *)>> CallbackPropertyMap;
public: public:
@ -392,8 +390,7 @@ public:
* @see SetPropertyInteger() * @see SetPropertyInteger()
*/ */
bool SetPropertyMatrix(const char *szName, const aiMatrix4x4 &sValue); bool SetPropertyMatrix(const char *szName, const aiMatrix4x4 &sValue);
//wangyi 0608
bool SetPropertyCallback(const char *szName, const std::function<void *(void *)> &f); bool SetPropertyCallback(const char *szName, const std::function<void *(void *)> &f);
// ------------------------------------------------------------------- // -------------------------------------------------------------------
@ -448,7 +445,6 @@ public:
const aiMatrix4x4 GetPropertyMatrix(const char *szName, const aiMatrix4x4 GetPropertyMatrix(const char *szName,
const aiMatrix4x4 &sErrorReturn = aiMatrix4x4()) const; const aiMatrix4x4 &sErrorReturn = aiMatrix4x4()) const;
//wangyi 0608
std::function<void *(void *)> GetPropertyCallback(const char* szName) const; std::function<void *(void *)> GetPropertyCallback(const char* szName) const;
// ------------------------------------------------------------------- // -------------------------------------------------------------------
@ -476,8 +472,7 @@ public:
* @see HasPropertyMatrix() * @see HasPropertyMatrix()
*/ */
bool HasPropertyMatrix(const char *szName) const; bool HasPropertyMatrix(const char *szName) const;
//wangyi 0608
bool HasPropertyCallback(const char *szName) const; bool HasPropertyCallback(const char *szName) const;
protected: protected:
@ -492,8 +487,7 @@ protected:
/** List of Matrix properties */ /** List of Matrix properties */
MatrixPropertyMap mMatrixProperties; MatrixPropertyMap mMatrixProperties;
//wangyi 0608
CallbackPropertyMap mCallbackProperties; CallbackPropertyMap mCallbackProperties;
}; };