Ue new alloc semantic when using aiMetadata + increase test coverage.
This commit is contained in:
@@ -1075,10 +1075,7 @@ void Converter::SetupNodeMetadata( const Model& model, aiNode& nd )
|
||||
|
||||
// create metadata on node
|
||||
std::size_t numStaticMetaData = 2;
|
||||
aiMetadata* data = new aiMetadata();
|
||||
data->mNumProperties = unparsedProperties.size() + numStaticMetaData;
|
||||
data->mKeys = new aiString[ data->mNumProperties ]();
|
||||
data->mValues = new aiMetadataEntry[ data->mNumProperties ]();
|
||||
aiMetadata* data = aiMetadata::Alloc( unparsedProperties.size() + numStaticMetaData );
|
||||
nd.mMetaData = data;
|
||||
int index = 0;
|
||||
|
||||
@@ -1089,22 +1086,22 @@ void Converter::SetupNodeMetadata( const Model& model, aiNode& nd )
|
||||
|
||||
// add unparsed properties to the node's metadata
|
||||
for( const DirectPropertyMap::value_type& prop : unparsedProperties ) {
|
||||
|
||||
// Interpret the property as a concrete type
|
||||
if ( const TypedProperty<bool>* interpreted = prop.second->As<TypedProperty<bool> >() )
|
||||
if ( const TypedProperty<bool>* interpreted = prop.second->As<TypedProperty<bool> >() ) {
|
||||
data->Set( index++, prop.first, interpreted->Value() );
|
||||
else if ( const TypedProperty<int>* interpreted = prop.second->As<TypedProperty<int> >() )
|
||||
} else if ( const TypedProperty<int>* interpreted = prop.second->As<TypedProperty<int> >() ) {
|
||||
data->Set( index++, prop.first, interpreted->Value() );
|
||||
else if ( const TypedProperty<uint64_t>* interpreted = prop.second->As<TypedProperty<uint64_t> >() )
|
||||
} else if ( const TypedProperty<uint64_t>* interpreted = prop.second->As<TypedProperty<uint64_t> >() ) {
|
||||
data->Set( index++, prop.first, interpreted->Value() );
|
||||
else if ( const TypedProperty<float>* interpreted = prop.second->As<TypedProperty<float> >() )
|
||||
} else if ( const TypedProperty<float>* interpreted = prop.second->As<TypedProperty<float> >() ) {
|
||||
data->Set( index++, prop.first, interpreted->Value() );
|
||||
else if ( const TypedProperty<std::string>* interpreted = prop.second->As<TypedProperty<std::string> >() )
|
||||
} else if ( const TypedProperty<std::string>* interpreted = prop.second->As<TypedProperty<std::string> >() ) {
|
||||
data->Set( index++, prop.first, aiString( interpreted->Value() ) );
|
||||
else if ( const TypedProperty<aiVector3D>* interpreted = prop.second->As<TypedProperty<aiVector3D> >() )
|
||||
} else if ( const TypedProperty<aiVector3D>* interpreted = prop.second->As<TypedProperty<aiVector3D> >() ) {
|
||||
data->Set( index++, prop.first, interpreted->Value() );
|
||||
else
|
||||
assert( false );
|
||||
} else {
|
||||
ai_assert( false );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user