Merge branch 'master' into kimkulling-miniz-memoryaccessfix
commit
98cb898463
|
@ -46,7 +46,7 @@ if [ "$TRAVIS_OS_NAME" = "linux" ]; then
|
||||||
if [ $ANALYZE = "ON" ] ; then
|
if [ $ANALYZE = "ON" ] ; then
|
||||||
if [ "$CC" = "clang" ]; then
|
if [ "$CC" = "clang" ]; then
|
||||||
scan-build cmake -G "Unix Makefiles" -DBUILD_SHARED_LIBS=OFF -DASSIMP_BUILD_TESTS=OFF
|
scan-build cmake -G "Unix Makefiles" -DBUILD_SHARED_LIBS=OFF -DASSIMP_BUILD_TESTS=OFF
|
||||||
scan-build --status-bugs make -j2 -v
|
scan-build --status-bugs make -j2
|
||||||
else
|
else
|
||||||
cppcheck --version
|
cppcheck --version
|
||||||
generate \
|
generate \
|
||||||
|
|
|
@ -89,12 +89,12 @@ aiScene* BaseImporter::ReadFile(const Importer* pImp, const std::string& pFile,
|
||||||
FileSystemFilter filter(pFile,pIOHandler);
|
FileSystemFilter filter(pFile,pIOHandler);
|
||||||
|
|
||||||
// create a scene object to hold the data
|
// create a scene object to hold the data
|
||||||
ScopeGuard<aiScene> sc(new aiScene());
|
std::unique_ptr<aiScene> sc(new aiScene());
|
||||||
|
|
||||||
// dispatch importing
|
// dispatch importing
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
InternReadFile( pFile, sc, &filter);
|
InternReadFile( pFile, sc.get(), &filter);
|
||||||
|
|
||||||
} catch( const std::exception& err ) {
|
} catch( const std::exception& err ) {
|
||||||
// extract error description
|
// extract error description
|
||||||
|
@ -104,8 +104,7 @@ aiScene* BaseImporter::ReadFile(const Importer* pImp, const std::string& pFile,
|
||||||
}
|
}
|
||||||
|
|
||||||
// return what we gathered from the import.
|
// return what we gathered from the import.
|
||||||
sc.dismiss();
|
return sc.release();
|
||||||
return sc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -65,42 +65,6 @@ class IOStream;
|
||||||
#define AI_MAKE_MAGIC(string) ((uint32_t)((string[0] << 24) + \
|
#define AI_MAKE_MAGIC(string) ((uint32_t)((string[0] << 24) + \
|
||||||
(string[1] << 16) + (string[2] << 8) + string[3]))
|
(string[1] << 16) + (string[2] << 8) + string[3]))
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
|
||||||
template <typename T>
|
|
||||||
struct ScopeGuard
|
|
||||||
{
|
|
||||||
explicit ScopeGuard(T* obj) : obj(obj), mdismiss() {}
|
|
||||||
~ScopeGuard () throw() {
|
|
||||||
if (!mdismiss) {
|
|
||||||
delete obj;
|
|
||||||
}
|
|
||||||
obj = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
T* dismiss() {
|
|
||||||
mdismiss=true;
|
|
||||||
return obj;
|
|
||||||
}
|
|
||||||
|
|
||||||
operator T*() {
|
|
||||||
return obj;
|
|
||||||
}
|
|
||||||
|
|
||||||
T* operator -> () {
|
|
||||||
return obj;
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
// no copying allowed.
|
|
||||||
ScopeGuard();
|
|
||||||
ScopeGuard( const ScopeGuard & );
|
|
||||||
ScopeGuard &operator = ( const ScopeGuard & );
|
|
||||||
|
|
||||||
T* obj;
|
|
||||||
bool mdismiss;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
/** FOR IMPORTER PLUGINS ONLY: The BaseImporter defines a common interface
|
/** FOR IMPORTER PLUGINS ONLY: The BaseImporter defines a common interface
|
||||||
|
|
|
@ -1148,7 +1148,7 @@ void BlenderImporter::ConvertMesh(const Scene& /*in*/, const Object* /*obj*/, co
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
aiCamera* BlenderImporter::ConvertCamera(const Scene& /*in*/, const Object* obj, const Camera* cam, ConversionData& /*conv_data*/)
|
aiCamera* BlenderImporter::ConvertCamera(const Scene& /*in*/, const Object* obj, const Camera* cam, ConversionData& /*conv_data*/)
|
||||||
{
|
{
|
||||||
ScopeGuard<aiCamera> out(new aiCamera());
|
std::unique_ptr<aiCamera> out(new aiCamera());
|
||||||
out->mName = obj->id.name+2;
|
out->mName = obj->id.name+2;
|
||||||
out->mPosition = aiVector3D(0.f, 0.f, 0.f);
|
out->mPosition = aiVector3D(0.f, 0.f, 0.f);
|
||||||
out->mUp = aiVector3D(0.f, 1.f, 0.f);
|
out->mUp = aiVector3D(0.f, 1.f, 0.f);
|
||||||
|
@ -1159,13 +1159,13 @@ aiCamera* BlenderImporter::ConvertCamera(const Scene& /*in*/, const Object* obj,
|
||||||
out->mClipPlaneNear = cam->clipsta;
|
out->mClipPlaneNear = cam->clipsta;
|
||||||
out->mClipPlaneFar = cam->clipend;
|
out->mClipPlaneFar = cam->clipend;
|
||||||
|
|
||||||
return out.dismiss();
|
return out.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
aiLight* BlenderImporter::ConvertLight(const Scene& /*in*/, const Object* obj, const Lamp* lamp, ConversionData& /*conv_data*/)
|
aiLight* BlenderImporter::ConvertLight(const Scene& /*in*/, const Object* obj, const Lamp* lamp, ConversionData& /*conv_data*/)
|
||||||
{
|
{
|
||||||
ScopeGuard<aiLight> out(new aiLight());
|
std::unique_ptr<aiLight> out(new aiLight());
|
||||||
out->mName = obj->id.name+2;
|
out->mName = obj->id.name+2;
|
||||||
|
|
||||||
switch (lamp->type)
|
switch (lamp->type)
|
||||||
|
@ -1203,7 +1203,7 @@ aiLight* BlenderImporter::ConvertLight(const Scene& /*in*/, const Object* obj, c
|
||||||
out->mColorAmbient = aiColor3D(lamp->r, lamp->g, lamp->b) * lamp->energy;
|
out->mColorAmbient = aiColor3D(lamp->r, lamp->g, lamp->b) * lamp->energy;
|
||||||
out->mColorSpecular = aiColor3D(lamp->r, lamp->g, lamp->b) * lamp->energy;
|
out->mColorSpecular = aiColor3D(lamp->r, lamp->g, lamp->b) * lamp->energy;
|
||||||
out->mColorDiffuse = aiColor3D(lamp->r, lamp->g, lamp->b) * lamp->energy;
|
out->mColorDiffuse = aiColor3D(lamp->r, lamp->g, lamp->b) * lamp->energy;
|
||||||
return out.dismiss();
|
return out.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
|
@ -1221,7 +1221,7 @@ aiNode* BlenderImporter::ConvertNode(const Scene& in, const Object* obj, Convers
|
||||||
++it;
|
++it;
|
||||||
}
|
}
|
||||||
|
|
||||||
ScopeGuard<aiNode> node(new aiNode(obj->id.name+2)); // skip over the name prefix 'OB'
|
std::unique_ptr<aiNode> node(new aiNode(obj->id.name+2)); // skip over the name prefix 'OB'
|
||||||
if (obj->data) {
|
if (obj->data) {
|
||||||
switch (obj->type)
|
switch (obj->type)
|
||||||
{
|
{
|
||||||
|
@ -1305,14 +1305,14 @@ aiNode* BlenderImporter::ConvertNode(const Scene& in, const Object* obj, Convers
|
||||||
aiNode** nd = node->mChildren = new aiNode*[node->mNumChildren]();
|
aiNode** nd = node->mChildren = new aiNode*[node->mNumChildren]();
|
||||||
for (const Object* nobj :children) {
|
for (const Object* nobj :children) {
|
||||||
*nd = ConvertNode(in,nobj,conv_data,node->mTransformation * parentTransform);
|
*nd = ConvertNode(in,nobj,conv_data,node->mTransformation * parentTransform);
|
||||||
(*nd++)->mParent = node;
|
(*nd++)->mParent = node.get();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// apply modifiers
|
// apply modifiers
|
||||||
modifier_cache->ApplyModifiers(*node,conv_data,in,*obj);
|
modifier_cache->ApplyModifiers(*node,conv_data,in,*obj);
|
||||||
|
|
||||||
return node.dismiss();
|
return node.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // ASSIMP_BUILD_NO_BLEND_IMPORTER
|
#endif // ASSIMP_BUILD_NO_BLEND_IMPORTER
|
||||||
|
|
|
@ -185,11 +185,11 @@ void C4DImporter::InternReadFile( const std::string& pFile,
|
||||||
if(mesh->mMaterialIndex >= mat_count) {
|
if(mesh->mMaterialIndex >= mat_count) {
|
||||||
++mat_count;
|
++mat_count;
|
||||||
|
|
||||||
ScopeGuard<aiMaterial> def_material(new aiMaterial());
|
std::unique_ptr<aiMaterial> def_material(new aiMaterial());
|
||||||
const aiString name(AI_DEFAULT_MATERIAL_NAME);
|
const aiString name(AI_DEFAULT_MATERIAL_NAME);
|
||||||
def_material->AddProperty(&name, AI_MATKEY_NAME);
|
def_material->AddProperty(&name, AI_MATKEY_NAME);
|
||||||
|
|
||||||
materials.push_back(def_material.dismiss());
|
materials.push_back(def_material.release());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -412,7 +412,7 @@ aiMesh* C4DImporter::ReadMesh(BaseObject* object)
|
||||||
const CPolygon* polys = polyObject->GetPolygonR();
|
const CPolygon* polys = polyObject->GetPolygonR();
|
||||||
ai_assert(polys != NULL);
|
ai_assert(polys != NULL);
|
||||||
|
|
||||||
ScopeGuard<aiMesh> mesh(new aiMesh());
|
std::unique_ptr<aiMesh> mesh(new aiMesh());
|
||||||
mesh->mNumFaces = static_cast<unsigned int>(polyCount);
|
mesh->mNumFaces = static_cast<unsigned int>(polyCount);
|
||||||
aiFace* face = mesh->mFaces = new aiFace[mesh->mNumFaces]();
|
aiFace* face = mesh->mFaces = new aiFace[mesh->mNumFaces]();
|
||||||
|
|
||||||
|
@ -616,7 +616,7 @@ aiMesh* C4DImporter::ReadMesh(BaseObject* object)
|
||||||
}
|
}
|
||||||
|
|
||||||
mesh->mMaterialIndex = ResolveMaterial(polyObject);
|
mesh->mMaterialIndex = ResolveMaterial(polyObject);
|
||||||
return mesh.dismiss();
|
return mesh.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -106,7 +106,7 @@ public:
|
||||||
private:
|
private:
|
||||||
aiNode* ReadObject(aiScene* scene)
|
aiNode* ReadObject(aiScene* scene)
|
||||||
{
|
{
|
||||||
ScopeGuard<aiNode> node(new aiNode());
|
std::unique_ptr<aiNode> node(new aiNode());
|
||||||
|
|
||||||
std::vector<unsigned long> meshIds;
|
std::vector<unsigned long> meshIds;
|
||||||
|
|
||||||
|
@ -146,7 +146,7 @@ private:
|
||||||
|
|
||||||
std::copy(meshIds.begin(), meshIds.end(), node->mMeshes);
|
std::copy(meshIds.begin(), meshIds.end(), node->mMeshes);
|
||||||
|
|
||||||
return node.dismiss();
|
return node.release();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2744,10 +2744,10 @@ aiNodeAnim* Converter::GenerateRotationNodeAnim( const std::string& name,
|
||||||
double& max_time,
|
double& max_time,
|
||||||
double& min_time )
|
double& min_time )
|
||||||
{
|
{
|
||||||
ScopeGuard<aiNodeAnim> na( new aiNodeAnim() );
|
std::unique_ptr<aiNodeAnim> na( new aiNodeAnim() );
|
||||||
na->mNodeName.Set( name );
|
na->mNodeName.Set( name );
|
||||||
|
|
||||||
ConvertRotationKeys( na, curves, layer_map, start, stop, max_time, min_time, target.RotationOrder() );
|
ConvertRotationKeys( na.get(), curves, layer_map, start, stop, max_time, min_time, target.RotationOrder() );
|
||||||
|
|
||||||
// dummy scaling key
|
// dummy scaling key
|
||||||
na->mScalingKeys = new aiVectorKey[ 1 ];
|
na->mScalingKeys = new aiVectorKey[ 1 ];
|
||||||
|
@ -2763,7 +2763,7 @@ aiNodeAnim* Converter::GenerateRotationNodeAnim( const std::string& name,
|
||||||
na->mPositionKeys[ 0 ].mTime = 0.;
|
na->mPositionKeys[ 0 ].mTime = 0.;
|
||||||
na->mPositionKeys[ 0 ].mValue = aiVector3D();
|
na->mPositionKeys[ 0 ].mValue = aiVector3D();
|
||||||
|
|
||||||
return na.dismiss();
|
return na.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
aiNodeAnim* Converter::GenerateScalingNodeAnim( const std::string& name,
|
aiNodeAnim* Converter::GenerateScalingNodeAnim( const std::string& name,
|
||||||
|
@ -2774,10 +2774,10 @@ aiNodeAnim* Converter::GenerateScalingNodeAnim( const std::string& name,
|
||||||
double& max_time,
|
double& max_time,
|
||||||
double& min_time )
|
double& min_time )
|
||||||
{
|
{
|
||||||
ScopeGuard<aiNodeAnim> na( new aiNodeAnim() );
|
std::unique_ptr<aiNodeAnim> na( new aiNodeAnim() );
|
||||||
na->mNodeName.Set( name );
|
na->mNodeName.Set( name );
|
||||||
|
|
||||||
ConvertScaleKeys( na, curves, layer_map, start, stop, max_time, min_time );
|
ConvertScaleKeys( na.get(), curves, layer_map, start, stop, max_time, min_time );
|
||||||
|
|
||||||
// dummy rotation key
|
// dummy rotation key
|
||||||
na->mRotationKeys = new aiQuatKey[ 1 ];
|
na->mRotationKeys = new aiQuatKey[ 1 ];
|
||||||
|
@ -2793,7 +2793,7 @@ aiNodeAnim* Converter::GenerateScalingNodeAnim( const std::string& name,
|
||||||
na->mPositionKeys[ 0 ].mTime = 0.;
|
na->mPositionKeys[ 0 ].mTime = 0.;
|
||||||
na->mPositionKeys[ 0 ].mValue = aiVector3D();
|
na->mPositionKeys[ 0 ].mValue = aiVector3D();
|
||||||
|
|
||||||
return na.dismiss();
|
return na.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -2806,10 +2806,10 @@ aiNodeAnim* Converter::GenerateTranslationNodeAnim( const std::string& name,
|
||||||
double& min_time,
|
double& min_time,
|
||||||
bool inverse )
|
bool inverse )
|
||||||
{
|
{
|
||||||
ScopeGuard<aiNodeAnim> na( new aiNodeAnim() );
|
std::unique_ptr<aiNodeAnim> na( new aiNodeAnim() );
|
||||||
na->mNodeName.Set( name );
|
na->mNodeName.Set( name );
|
||||||
|
|
||||||
ConvertTranslationKeys( na, curves, layer_map, start, stop, max_time, min_time );
|
ConvertTranslationKeys( na.get(), curves, layer_map, start, stop, max_time, min_time );
|
||||||
|
|
||||||
if ( inverse ) {
|
if ( inverse ) {
|
||||||
for ( unsigned int i = 0; i < na->mNumPositionKeys; ++i ) {
|
for ( unsigned int i = 0; i < na->mNumPositionKeys; ++i ) {
|
||||||
|
@ -2831,7 +2831,7 @@ aiNodeAnim* Converter::GenerateTranslationNodeAnim( const std::string& name,
|
||||||
na->mRotationKeys[ 0 ].mTime = 0.;
|
na->mRotationKeys[ 0 ].mTime = 0.;
|
||||||
na->mRotationKeys[ 0 ].mValue = aiQuaternion();
|
na->mRotationKeys[ 0 ].mValue = aiQuaternion();
|
||||||
|
|
||||||
return na.dismiss();
|
return na.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
aiNodeAnim* Converter::GenerateSimpleNodeAnim( const std::string& name,
|
aiNodeAnim* Converter::GenerateSimpleNodeAnim( const std::string& name,
|
||||||
|
@ -2845,7 +2845,7 @@ aiNodeAnim* Converter::GenerateSimpleNodeAnim( const std::string& name,
|
||||||
bool reverse_order )
|
bool reverse_order )
|
||||||
|
|
||||||
{
|
{
|
||||||
ScopeGuard<aiNodeAnim> na( new aiNodeAnim() );
|
std::unique_ptr<aiNodeAnim> na( new aiNodeAnim() );
|
||||||
na->mNodeName.Set( name );
|
na->mNodeName.Set( name );
|
||||||
|
|
||||||
const PropertyTable& props = target.Props();
|
const PropertyTable& props = target.Props();
|
||||||
|
@ -2917,7 +2917,7 @@ aiNodeAnim* Converter::GenerateSimpleNodeAnim( const std::string& name,
|
||||||
// which requires all of rotation, scaling and translation
|
// which requires all of rotation, scaling and translation
|
||||||
// to be set.
|
// to be set.
|
||||||
if ( chain[ TransformationComp_Scaling ] != iter_end ) {
|
if ( chain[ TransformationComp_Scaling ] != iter_end ) {
|
||||||
ConvertScaleKeys( na, ( *chain[ TransformationComp_Scaling ] ).second,
|
ConvertScaleKeys( na.get(), ( *chain[ TransformationComp_Scaling ] ).second,
|
||||||
layer_map,
|
layer_map,
|
||||||
start, stop,
|
start, stop,
|
||||||
max_time,
|
max_time,
|
||||||
|
@ -2933,7 +2933,7 @@ aiNodeAnim* Converter::GenerateSimpleNodeAnim( const std::string& name,
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( chain[ TransformationComp_Rotation ] != iter_end ) {
|
if ( chain[ TransformationComp_Rotation ] != iter_end ) {
|
||||||
ConvertRotationKeys( na, ( *chain[ TransformationComp_Rotation ] ).second,
|
ConvertRotationKeys( na.get(), ( *chain[ TransformationComp_Rotation ] ).second,
|
||||||
layer_map,
|
layer_map,
|
||||||
start, stop,
|
start, stop,
|
||||||
max_time,
|
max_time,
|
||||||
|
@ -2951,7 +2951,7 @@ aiNodeAnim* Converter::GenerateSimpleNodeAnim( const std::string& name,
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( chain[ TransformationComp_Translation ] != iter_end ) {
|
if ( chain[ TransformationComp_Translation ] != iter_end ) {
|
||||||
ConvertTranslationKeys( na, ( *chain[ TransformationComp_Translation ] ).second,
|
ConvertTranslationKeys( na.get(), ( *chain[ TransformationComp_Translation ] ).second,
|
||||||
layer_map,
|
layer_map,
|
||||||
start, stop,
|
start, stop,
|
||||||
max_time,
|
max_time,
|
||||||
|
@ -2967,7 +2967,7 @@ aiNodeAnim* Converter::GenerateSimpleNodeAnim( const std::string& name,
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
return na.dismiss();
|
return na.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
Converter::KeyFrameListList Converter::GetKeyframeList( const std::vector<const AnimationCurveNode*>& nodes, int64_t start, int64_t stop )
|
Converter::KeyFrameListList Converter::GetKeyframeList( const std::vector<const AnimationCurveNode*>& nodes, int64_t start, int64_t stop )
|
||||||
|
|
|
@ -1018,11 +1018,11 @@ void MD3Importer::InternReadFile( const std::string& pFile,
|
||||||
|
|
||||||
// Convert the normal vector to uncompressed float3 format
|
// Convert the normal vector to uncompressed float3 format
|
||||||
aiVector3D& nor = pcMesh->mNormals[iCurrent];
|
aiVector3D& nor = pcMesh->mNormals[iCurrent];
|
||||||
LatLngNormalToVec3(pcVertices[pcTriangles->INDEXES[c]].NORMAL,(ai_real*)&nor);
|
LatLngNormalToVec3(pcVertices[index].NORMAL,(ai_real*)&nor);
|
||||||
|
|
||||||
// Read texture coordinates
|
// Read texture coordinates
|
||||||
pcMesh->mTextureCoords[0][iCurrent].x = pcUVs[ pcTriangles->INDEXES[c]].U;
|
pcMesh->mTextureCoords[0][iCurrent].x = pcUVs[index].U;
|
||||||
pcMesh->mTextureCoords[0][iCurrent].y = 1.0f-pcUVs[ pcTriangles->INDEXES[c]].V;
|
pcMesh->mTextureCoords[0][iCurrent].y = 1.0f-pcUVs[index].V;
|
||||||
}
|
}
|
||||||
// Flip face order if necessary
|
// Flip face order if necessary
|
||||||
if (!shader || shader->cull == Q3Shader::CULL_CW) {
|
if (!shader || shader->cull == Q3Shader::CULL_CW) {
|
||||||
|
|
|
@ -58,6 +58,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
using namespace Assimp;
|
using namespace Assimp;
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
static const aiImporterDesc desc = {
|
static const aiImporterDesc desc = {
|
||||||
"Stereolithography (STL) Importer",
|
"Stereolithography (STL) Importer",
|
||||||
"",
|
"",
|
||||||
|
@ -505,6 +506,12 @@ bool STLImporter::LoadBinaryFile()
|
||||||
// now copy faces
|
// now copy faces
|
||||||
addFacesToMesh(pMesh);
|
addFacesToMesh(pMesh);
|
||||||
|
|
||||||
|
// add all created meshes to the single node
|
||||||
|
pScene->mRootNode->mNumMeshes = pScene->mNumMeshes;
|
||||||
|
pScene->mRootNode->mMeshes = new unsigned int[pScene->mNumMeshes];
|
||||||
|
for (unsigned int i = 0; i < pScene->mNumMeshes; i++)
|
||||||
|
pScene->mRootNode->mMeshes[i] = i;
|
||||||
|
|
||||||
if (bIsMaterialise && !pMesh->mColors[0])
|
if (bIsMaterialise && !pMesh->mColors[0])
|
||||||
{
|
{
|
||||||
// use the color as diffuse material color
|
// use the color as diffuse material color
|
||||||
|
|
|
@ -359,7 +359,7 @@ void XGLImporter::ReadLighting(TempScope& scope)
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
aiLight* XGLImporter::ReadDirectionalLight()
|
aiLight* XGLImporter::ReadDirectionalLight()
|
||||||
{
|
{
|
||||||
ScopeGuard<aiLight> l(new aiLight());
|
std::unique_ptr<aiLight> l(new aiLight());
|
||||||
l->mType = aiLightSource_DIRECTIONAL;
|
l->mType = aiLightSource_DIRECTIONAL;
|
||||||
|
|
||||||
while (ReadElementUpToClosing("directionallight")) {
|
while (ReadElementUpToClosing("directionallight")) {
|
||||||
|
@ -374,13 +374,13 @@ aiLight* XGLImporter::ReadDirectionalLight()
|
||||||
l->mColorSpecular = ReadCol3();
|
l->mColorSpecular = ReadCol3();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return l.dismiss();
|
return l.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
aiNode* XGLImporter::ReadObject(TempScope& scope, bool skipFirst, const char* closetag)
|
aiNode* XGLImporter::ReadObject(TempScope& scope, bool skipFirst, const char* closetag)
|
||||||
{
|
{
|
||||||
ScopeGuard<aiNode> nd(new aiNode());
|
std::unique_ptr<aiNode> nd(new aiNode());
|
||||||
std::vector<aiNode*> children;
|
std::vector<aiNode*> children;
|
||||||
std::vector<unsigned int> meshes;
|
std::vector<unsigned int> meshes;
|
||||||
|
|
||||||
|
@ -463,11 +463,11 @@ aiNode* XGLImporter::ReadObject(TempScope& scope, bool skipFirst, const char* cl
|
||||||
nd->mChildren = new aiNode*[nd->mNumChildren]();
|
nd->mChildren = new aiNode*[nd->mNumChildren]();
|
||||||
for(unsigned int i = 0; i < nd->mNumChildren; ++i) {
|
for(unsigned int i = 0; i < nd->mNumChildren; ++i) {
|
||||||
nd->mChildren[i] = children[i];
|
nd->mChildren[i] = children[i];
|
||||||
children[i]->mParent = nd;
|
children[i]->mParent = nd.get();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nd.dismiss();
|
return nd.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
|
@ -539,7 +539,7 @@ aiMatrix4x4 XGLImporter::ReadTrafo()
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
aiMesh* XGLImporter::ToOutputMesh(const TempMaterialMesh& m)
|
aiMesh* XGLImporter::ToOutputMesh(const TempMaterialMesh& m)
|
||||||
{
|
{
|
||||||
ScopeGuard<aiMesh> mesh(new aiMesh());
|
std::unique_ptr<aiMesh> mesh(new aiMesh());
|
||||||
|
|
||||||
mesh->mNumVertices = static_cast<unsigned int>(m.positions.size());
|
mesh->mNumVertices = static_cast<unsigned int>(m.positions.size());
|
||||||
mesh->mVertices = new aiVector3D[mesh->mNumVertices];
|
mesh->mVertices = new aiVector3D[mesh->mNumVertices];
|
||||||
|
@ -576,7 +576,7 @@ aiMesh* XGLImporter::ToOutputMesh(const TempMaterialMesh& m)
|
||||||
|
|
||||||
mesh->mPrimitiveTypes = m.pflags;
|
mesh->mPrimitiveTypes = m.pflags;
|
||||||
mesh->mMaterialIndex = m.matid;
|
mesh->mMaterialIndex = m.matid;
|
||||||
return mesh.dismiss();
|
return mesh.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
|
@ -745,7 +745,7 @@ void XGLImporter::ReadMaterial(TempScope& scope)
|
||||||
{
|
{
|
||||||
const unsigned int mat_id = ReadIDAttr();
|
const unsigned int mat_id = ReadIDAttr();
|
||||||
|
|
||||||
ScopeGuard<aiMaterial> mat(new aiMaterial());
|
std::unique_ptr<aiMaterial> mat(new aiMaterial());
|
||||||
while (ReadElementUpToClosing("mat")) {
|
while (ReadElementUpToClosing("mat")) {
|
||||||
const std::string& s = GetElementName();
|
const std::string& s = GetElementName();
|
||||||
if (s == "amb") {
|
if (s == "amb") {
|
||||||
|
@ -774,8 +774,8 @@ void XGLImporter::ReadMaterial(TempScope& scope)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
scope.materials[mat_id] = mat;
|
scope.materials[mat_id] = mat.get();
|
||||||
scope.materials_linear.push_back(mat.dismiss());
|
scope.materials_linear.push_back(mat.release());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3807,9 +3807,7 @@ mz_bool mz_zip_reader_extract_to_callback(mz_zip_archive *pZip, mz_uint file_ind
|
||||||
status = TINFL_STATUS_FAILED;
|
status = TINFL_STATUS_FAILED;
|
||||||
else if (!(flags & MZ_ZIP_FLAG_COMPRESSED_DATA))
|
else if (!(flags & MZ_ZIP_FLAG_COMPRESSED_DATA))
|
||||||
file_crc32 = (mz_uint32)mz_crc32(file_crc32, (const mz_uint8 *)pRead_buf, (size_t)file_stat.m_comp_size);
|
file_crc32 = (mz_uint32)mz_crc32(file_crc32, (const mz_uint8 *)pRead_buf, (size_t)file_stat.m_comp_size);
|
||||||
cur_file_ofs += file_stat.m_comp_size;
|
|
||||||
out_buf_ofs += file_stat.m_comp_size;
|
out_buf_ofs += file_stat.m_comp_size;
|
||||||
comp_remaining = 0;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -4688,7 +4686,6 @@ mz_bool mz_zip_writer_add_from_zip_reader(mz_zip_archive *pZip, mz_zip_archive *
|
||||||
return MZ_FALSE;
|
return MZ_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
cur_src_file_ofs += n;
|
|
||||||
cur_dst_file_ofs += n;
|
cur_dst_file_ofs += n;
|
||||||
}
|
}
|
||||||
pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf);
|
pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf);
|
||||||
|
|
Loading…
Reference in New Issue