@ -47,12 +47,12 @@ struct SceneToolsTest: TestSuite::Tester {
struct {
struct {
const char * name ;
const char * name ;
SceneObject Type objectType ;
SceneMapping Type objectType ;
} CombineData [ ] {
} CombineData [ ] {
{ " UnsignedByte output " , SceneObject Type : : UnsignedByte } ,
{ " UnsignedByte output " , SceneMapping Type : : UnsignedByte } ,
{ " UnsignedShort output " , SceneObject Type : : UnsignedShort } ,
{ " UnsignedShort output " , SceneMapping Type : : UnsignedShort } ,
{ " UnsignedInt output " , SceneObject Type : : UnsignedInt } ,
{ " UnsignedInt output " , SceneMapping Type : : UnsignedInt } ,
{ " UnsignedLong output " , SceneObject Type : : UnsignedLong } ,
{ " UnsignedLong output " , SceneMapping Type : : UnsignedLong } ,
} ;
} ;
struct {
struct {
@ -86,76 +86,76 @@ void SceneToolsTest::combine() {
/* Testing the four possible object types, it should be possible to combine
/* Testing the four possible object types, it should be possible to combine
them */
them */
const UnsignedInt meshObjects [ ] { 45 , 78 , 23 } ;
const UnsignedInt meshMappingData [ ] { 45 , 78 , 23 } ;
const UnsignedByte meshes [ ] { 3 , 5 , 17 } ;
const UnsignedByte meshFieldData [ ] { 3 , 5 , 17 } ;
const UnsignedShort parentObjects [ ] { 33 , 25 } ;
const UnsignedShort parentMappingData [ ] { 33 , 25 } ;
const Short parents [ ] { - 1 , 33 } ;
const Short parentData [ ] { - 1 , 33 } ;
const UnsignedByte translationObjects [ ] { 16 } ;
const UnsignedByte translationMappingData [ ] { 16 } ;
const Vector2d translations [ ] { { 1.5 , - 0.5 } } ;
const Vector2d translationFieldData [ ] { { 1.5 , - 0.5 } } ;
const UnsignedLong fooObjects [ ] { 15 , 23 } ;
const UnsignedLong fooMappingData [ ] { 15 , 23 } ;
const Int foos [ ] { 0 , 1 , 2 , 3 } ;
const Int fooFieldData [ ] { 0 , 1 , 2 , 3 } ;
SceneData scene = Implementation : : sceneCombine ( data . objectType , 167 , Containers : : arrayView ( {
SceneData scene = Implementation : : sceneCombine ( data . objectType , 167 , Containers : : arrayView ( {
SceneFieldData { SceneField : : Mesh , Containers : : arrayView ( meshObjects ) , Containers : : arrayView ( meshes ) } ,
SceneFieldData { SceneField : : Mesh , Containers : : arrayView ( meshMappingData ) , Containers : : arrayView ( meshFieldData ) } ,
SceneFieldData { SceneField : : Parent , Containers : : arrayView ( parentObjects ) , Containers : : arrayView ( parents ) } ,
SceneFieldData { SceneField : : Parent , Containers : : arrayView ( parentMappingData ) , Containers : : arrayView ( parentData ) } ,
SceneFieldData { SceneField : : Translation , Containers : : arrayView ( translationObjects ) , Containers : : arrayView ( translations ) } ,
SceneFieldData { SceneField : : Translation , Containers : : arrayView ( translationMappingData ) , Containers : : arrayView ( translationFieldData ) } ,
/* Array field */
/* Array field */
SceneFieldData { sceneFieldCustom ( 15 ) , Containers : : arrayView ( fooObjects ) , Containers : : StridedArrayView2D < const Int > { foos , { 2 , 2 } } } ,
SceneFieldData { sceneFieldCustom ( 15 ) , Containers : : arrayView ( fooMappingData ) , Containers : : StridedArrayView2D < const Int > { fooFieldData , { 2 , 2 } } } ,
/* Empty field */
/* Empty field */
SceneFieldData { SceneField : : Camera , Containers : : ArrayView < const UnsignedByte > { } , Containers : : ArrayView < const UnsignedShort > { } }
SceneFieldData { SceneField : : Camera , Containers : : ArrayView < const UnsignedByte > { } , Containers : : ArrayView < const UnsignedShort > { } }
} ) ) ;
} ) ) ;
CORRADE_COMPARE ( scene . dataFlags ( ) , DataFlag : : Owned | DataFlag : : Mutable ) ;
CORRADE_COMPARE ( scene . dataFlags ( ) , DataFlag : : Owned | DataFlag : : Mutable ) ;
CORRADE_COMPARE ( scene . object Type( ) , data . objectType ) ;
CORRADE_COMPARE ( scene . mapping Type( ) , data . objectType ) ;
CORRADE_COMPARE ( scene . objectCount ( ) , 167 ) ;
CORRADE_COMPARE ( scene . mappingBound ( ) , 167 ) ;
CORRADE_COMPARE ( scene . fieldCount ( ) , 5 ) ;
CORRADE_COMPARE ( scene . fieldCount ( ) , 5 ) ;
CORRADE_COMPARE ( scene . fieldName ( 0 ) , SceneField : : Mesh ) ;
CORRADE_COMPARE ( scene . fieldName ( 0 ) , SceneField : : Mesh ) ;
CORRADE_COMPARE ( scene . fieldType ( 0 ) , SceneFieldType : : UnsignedByte ) ;
CORRADE_COMPARE ( scene . fieldType ( 0 ) , SceneFieldType : : UnsignedByte ) ;
CORRADE_COMPARE ( scene . fieldArraySize ( 0 ) , 0 ) ;
CORRADE_COMPARE ( scene . fieldArraySize ( 0 ) , 0 ) ;
CORRADE_COMPARE_AS ( scene . objects AsArray( 0 ) , Containers : : arrayView < UnsignedInt > ( {
CORRADE_COMPARE_AS ( scene . mapping AsArray( 0 ) , Containers : : arrayView < UnsignedInt > ( {
45 , 78 , 23
45 , 78 , 23
} ) , TestSuite : : Compare : : Container ) ;
} ) , TestSuite : : Compare : : Container ) ;
CORRADE_COMPARE_AS ( scene . field < UnsignedByte > ( 0 ) ,
CORRADE_COMPARE_AS ( scene . field < UnsignedByte > ( 0 ) ,
Containers : : arrayView ( meshes ) ,
Containers : : arrayView ( meshFieldData ) ,
TestSuite : : Compare : : Container ) ;
TestSuite : : Compare : : Container ) ;
CORRADE_COMPARE ( scene . fieldName ( 1 ) , SceneField : : Parent ) ;
CORRADE_COMPARE ( scene . fieldName ( 1 ) , SceneField : : Parent ) ;
CORRADE_COMPARE ( scene . fieldType ( 1 ) , SceneFieldType : : Short ) ;
CORRADE_COMPARE ( scene . fieldType ( 1 ) , SceneFieldType : : Short ) ;
CORRADE_COMPARE ( scene . fieldArraySize ( 1 ) , 0 ) ;
CORRADE_COMPARE ( scene . fieldArraySize ( 1 ) , 0 ) ;
CORRADE_COMPARE_AS ( scene . objects AsArray( 1 ) , Containers : : arrayView < UnsignedInt > ( {
CORRADE_COMPARE_AS ( scene . mapping AsArray( 1 ) , Containers : : arrayView < UnsignedInt > ( {
33 , 25
33 , 25
} ) , TestSuite : : Compare : : Container ) ;
} ) , TestSuite : : Compare : : Container ) ;
CORRADE_COMPARE_AS ( scene . field < Short > ( 1 ) ,
CORRADE_COMPARE_AS ( scene . field < Short > ( 1 ) ,
Containers : : arrayView ( parents ) ,
Containers : : arrayView ( parentData ) ,
TestSuite : : Compare : : Container ) ;
TestSuite : : Compare : : Container ) ;
CORRADE_COMPARE ( scene . fieldName ( 2 ) , SceneField : : Translation ) ;
CORRADE_COMPARE ( scene . fieldName ( 2 ) , SceneField : : Translation ) ;
CORRADE_COMPARE ( scene . fieldType ( 2 ) , SceneFieldType : : Vector2d ) ;
CORRADE_COMPARE ( scene . fieldType ( 2 ) , SceneFieldType : : Vector2d ) ;
CORRADE_COMPARE ( scene . fieldArraySize ( 2 ) , 0 ) ;
CORRADE_COMPARE ( scene . fieldArraySize ( 2 ) , 0 ) ;
CORRADE_COMPARE_AS ( scene . objects AsArray( 2 ) ,
CORRADE_COMPARE_AS ( scene . mapping AsArray( 2 ) ,
Containers : : arrayView < UnsignedInt > ( { 16 } ) ,
Containers : : arrayView < UnsignedInt > ( { 16 } ) ,
TestSuite : : Compare : : Container ) ;
TestSuite : : Compare : : Container ) ;
CORRADE_COMPARE_AS ( scene . field < Vector2d > ( 2 ) ,
CORRADE_COMPARE_AS ( scene . field < Vector2d > ( 2 ) ,
Containers : : arrayView ( translations ) ,
Containers : : arrayView ( translationFieldData ) ,
TestSuite : : Compare : : Container ) ;
TestSuite : : Compare : : Container ) ;
CORRADE_COMPARE ( scene . fieldName ( 3 ) , sceneFieldCustom ( 15 ) ) ;
CORRADE_COMPARE ( scene . fieldName ( 3 ) , sceneFieldCustom ( 15 ) ) ;
CORRADE_COMPARE ( scene . fieldType ( 3 ) , SceneFieldType : : Int ) ;
CORRADE_COMPARE ( scene . fieldType ( 3 ) , SceneFieldType : : Int ) ;
CORRADE_COMPARE ( scene . fieldArraySize ( 3 ) , 2 ) ;
CORRADE_COMPARE ( scene . fieldArraySize ( 3 ) , 2 ) ;
CORRADE_COMPARE_AS ( scene . objects AsArray( 3 ) ,
CORRADE_COMPARE_AS ( scene . mapping AsArray( 3 ) ,
Containers : : arrayView < UnsignedInt > ( { 15 , 23 } ) ,
Containers : : arrayView < UnsignedInt > ( { 15 , 23 } ) ,
TestSuite : : Compare : : Container ) ;
TestSuite : : Compare : : Container ) ;
/** @todo clean up once it's possible to compare multidimensional
/** @todo clean up once it's possible to compare multidimensional
containers */
containers */
CORRADE_COMPARE_AS ( scene . field < Int [ ] > ( 3 ) [ 0 ] ,
CORRADE_COMPARE_AS ( scene . field < Int [ ] > ( 3 ) [ 0 ] ,
( Containers : : StridedArrayView2D < const Int > { foos , { 2 , 2 } } ) [ 0 ] ,
( Containers : : StridedArrayView2D < const Int > { fooFieldData , { 2 , 2 } } ) [ 0 ] ,
TestSuite : : Compare : : Container ) ;
TestSuite : : Compare : : Container ) ;
CORRADE_COMPARE_AS ( scene . field < Int [ ] > ( 3 ) [ 1 ] ,
CORRADE_COMPARE_AS ( scene . field < Int [ ] > ( 3 ) [ 1 ] ,
( Containers : : StridedArrayView2D < const Int > { foos , { 2 , 2 } } ) [ 1 ] ,
( Containers : : StridedArrayView2D < const Int > { fooFieldData , { 2 , 2 } } ) [ 1 ] ,
TestSuite : : Compare : : Container ) ;
TestSuite : : Compare : : Container ) ;
CORRADE_COMPARE ( scene . fieldName ( 4 ) , SceneField : : Camera ) ;
CORRADE_COMPARE ( scene . fieldName ( 4 ) , SceneField : : Camera ) ;
@ -165,33 +165,33 @@ void SceneToolsTest::combine() {
}
}
void SceneToolsTest : : combineAlignment ( ) {
void SceneToolsTest : : combineAlignment ( ) {
const UnsignedShort meshObjects [ ] { 15 , 23 , 47 } ;
const UnsignedShort meshMappingData [ ] { 15 , 23 , 47 } ;
const UnsignedByte meshes [ ] { 0 , 1 , 2 } ;
const UnsignedByte meshFieldData [ ] { 0 , 1 , 2 } ;
const UnsignedShort translationObjects [ ] { 5 } ; /* 1 byte padding before */
const UnsignedShort translationMappingData [ ] { 5 } ; /* 1 byte padding before */
const Vector2d translations [ ] { { 1.5 , 3.0 } } ; /* 4 byte padding before */
const Vector2d translationFieldData [ ] { { 1.5 , 3.0 } } ; /* 4 byte padding before */
SceneData scene = Implementation : : sceneCombine ( SceneObject Type : : UnsignedShort , 167 , Containers : : arrayView ( {
SceneData scene = Implementation : : sceneCombine ( SceneMapping Type : : UnsignedShort , 167 , Containers : : arrayView ( {
SceneFieldData { SceneField : : Mesh , Containers : : arrayView ( meshObjects ) , Containers : : arrayView ( meshes ) } ,
SceneFieldData { SceneField : : Mesh , Containers : : arrayView ( meshMappingData ) , Containers : : arrayView ( meshFieldData ) } ,
SceneFieldData { SceneField : : Translation , Containers : : arrayView ( translationObjects ) , Containers : : arrayView ( translations ) }
SceneFieldData { SceneField : : Translation , Containers : : arrayView ( translationMappingData ) , Containers : : arrayView ( translationFieldData ) }
} ) ) ;
} ) ) ;
CORRADE_COMPARE ( scene . dataFlags ( ) , DataFlag : : Owned | DataFlag : : Mutable ) ;
CORRADE_COMPARE ( scene . dataFlags ( ) , DataFlag : : Owned | DataFlag : : Mutable ) ;
CORRADE_COMPARE ( scene . object Type( ) , SceneObject Type : : UnsignedShort ) ;
CORRADE_COMPARE ( scene . mapping Type( ) , SceneMapping Type : : UnsignedShort ) ;
CORRADE_COMPARE ( scene . objectCount ( ) , 167 ) ;
CORRADE_COMPARE ( scene . mappingBound ( ) , 167 ) ;
CORRADE_COMPARE ( scene . fieldCount ( ) , 2 ) ;
CORRADE_COMPARE ( scene . fieldCount ( ) , 2 ) ;
CORRADE_COMPARE ( scene . fieldName ( 0 ) , SceneField : : Mesh ) ;
CORRADE_COMPARE ( scene . fieldName ( 0 ) , SceneField : : Mesh ) ;
CORRADE_COMPARE ( scene . fieldType ( 0 ) , SceneFieldType : : UnsignedByte ) ;
CORRADE_COMPARE ( scene . fieldType ( 0 ) , SceneFieldType : : UnsignedByte ) ;
CORRADE_COMPARE ( scene . fieldArraySize ( 0 ) , 0 ) ;
CORRADE_COMPARE ( scene . fieldArraySize ( 0 ) , 0 ) ;
CORRADE_COMPARE_AS ( scene . objects < UnsignedShort > ( 0 ) ,
CORRADE_COMPARE_AS ( scene . mapping < UnsignedShort > ( 0 ) ,
Containers : : arrayView ( meshObjects ) ,
Containers : : arrayView ( meshMappingData ) ,
TestSuite : : Compare : : Container ) ;
TestSuite : : Compare : : Container ) ;
CORRADE_COMPARE_AS ( scene . field < UnsignedByte > ( 0 ) ,
CORRADE_COMPARE_AS ( scene . field < UnsignedByte > ( 0 ) ,
Containers : : arrayView ( meshes ) ,
Containers : : arrayView ( meshFieldData ) ,
TestSuite : : Compare : : Container ) ;
TestSuite : : Compare : : Container ) ;
CORRADE_COMPARE_AS ( reinterpret_cast < std : : ptrdiff_t > ( scene . objects ( 0 ) . data ( ) ) , 2 , TestSuite : : Compare : : Divisible ) ;
CORRADE_COMPARE_AS ( reinterpret_cast < std : : ptrdiff_t > ( scene . mapping ( 0 ) . data ( ) ) , 2 , TestSuite : : Compare : : Divisible ) ;
CORRADE_COMPARE ( scene . objects ( 0 ) . data ( ) , scene . data ( ) ) ;
CORRADE_COMPARE ( scene . mapping ( 0 ) . data ( ) , scene . data ( ) ) ;
CORRADE_COMPARE ( scene . objects ( 0 ) . stride ( ) [ 0 ] , 2 ) ;
CORRADE_COMPARE ( scene . mapping ( 0 ) . stride ( ) [ 0 ] , 2 ) ;
CORRADE_COMPARE_AS ( reinterpret_cast < std : : ptrdiff_t > ( scene . field ( 0 ) . data ( ) ) , 1 , TestSuite : : Compare : : Divisible ) ;
CORRADE_COMPARE_AS ( reinterpret_cast < std : : ptrdiff_t > ( scene . field ( 0 ) . data ( ) ) , 1 , TestSuite : : Compare : : Divisible ) ;
CORRADE_COMPARE ( scene . field ( 0 ) . data ( ) , scene . data ( ) + 3 * 2 ) ;
CORRADE_COMPARE ( scene . field ( 0 ) . data ( ) , scene . data ( ) + 3 * 2 ) ;
CORRADE_COMPARE ( scene . field ( 0 ) . stride ( ) [ 0 ] , 1 ) ;
CORRADE_COMPARE ( scene . field ( 0 ) . stride ( ) [ 0 ] , 1 ) ;
@ -199,60 +199,60 @@ void SceneToolsTest::combineAlignment() {
CORRADE_COMPARE ( scene . fieldName ( 1 ) , SceneField : : Translation ) ;
CORRADE_COMPARE ( scene . fieldName ( 1 ) , SceneField : : Translation ) ;
CORRADE_COMPARE ( scene . fieldType ( 1 ) , SceneFieldType : : Vector2d ) ;
CORRADE_COMPARE ( scene . fieldType ( 1 ) , SceneFieldType : : Vector2d ) ;
CORRADE_COMPARE ( scene . fieldArraySize ( 1 ) , 0 ) ;
CORRADE_COMPARE ( scene . fieldArraySize ( 1 ) , 0 ) ;
CORRADE_COMPARE_AS ( scene . objects < UnsignedShort > ( 1 ) ,
CORRADE_COMPARE_AS ( scene . mapping < UnsignedShort > ( 1 ) ,
Containers : : arrayView ( translationObjects ) ,
Containers : : arrayView ( translationMappingData ) ,
TestSuite : : Compare : : Container ) ;
TestSuite : : Compare : : Container ) ;
CORRADE_COMPARE_AS ( scene . field < Vector2d > ( 1 ) ,
CORRADE_COMPARE_AS ( scene . field < Vector2d > ( 1 ) ,
Containers : : arrayView ( translations ) ,
Containers : : arrayView ( translationFieldData ) ,
TestSuite : : Compare : : Container ) ;
TestSuite : : Compare : : Container ) ;
CORRADE_COMPARE_AS ( reinterpret_cast < std : : ptrdiff_t > ( scene . objects ( 1 ) . data ( ) ) , 2 , TestSuite : : Compare : : Divisible ) ;
CORRADE_COMPARE_AS ( reinterpret_cast < std : : ptrdiff_t > ( scene . mapping ( 1 ) . data ( ) ) , 2 , TestSuite : : Compare : : Divisible ) ;
CORRADE_COMPARE ( scene . objects ( 1 ) . data ( ) , scene . data ( ) + 3 * 2 + 3 + 1 ) ;
CORRADE_COMPARE ( scene . mapping ( 1 ) . data ( ) , scene . data ( ) + 3 * 2 + 3 + 1 ) ;
CORRADE_COMPARE ( scene . objects ( 1 ) . stride ( ) [ 0 ] , 2 ) ;
CORRADE_COMPARE ( scene . mapping ( 1 ) . stride ( ) [ 0 ] , 2 ) ;
CORRADE_COMPARE_AS ( reinterpret_cast < std : : ptrdiff_t > ( scene . field ( 1 ) . data ( ) ) , 8 , TestSuite : : Compare : : Divisible ) ;
CORRADE_COMPARE_AS ( reinterpret_cast < std : : ptrdiff_t > ( scene . field ( 1 ) . data ( ) ) , 8 , TestSuite : : Compare : : Divisible ) ;
CORRADE_COMPARE ( scene . field ( 1 ) . data ( ) , scene . data ( ) + 3 * 2 + 3 + 1 + 2 + 4 ) ;
CORRADE_COMPARE ( scene . field ( 1 ) . data ( ) , scene . data ( ) + 3 * 2 + 3 + 1 + 2 + 4 ) ;
CORRADE_COMPARE ( scene . field ( 1 ) . stride ( ) [ 0 ] , 16 ) ;
CORRADE_COMPARE ( scene . field ( 1 ) . stride ( ) [ 0 ] , 16 ) ;
}
}
void SceneToolsTest : : combineObjectsShared ( ) {
void SceneToolsTest : : combineObjectsShared ( ) {
const UnsignedShort meshObjects [ ] { 15 , 23 , 47 } ;
const UnsignedShort meshMappingData [ ] { 15 , 23 , 47 } ;
const UnsignedByte meshes [ ] { 0 , 1 , 2 } ;
const UnsignedByte meshFieldData [ ] { 0 , 1 , 2 } ;
const Int meshMaterials [ ] { 72 , - 1 , 23 } ;
const Int meshMaterialFieldData [ ] { 72 , - 1 , 23 } ;
const UnsignedShort translationRotationObjects [ ] { 14 , 22 } ;
const UnsignedShort translationRotationMappingData [ ] { 14 , 22 } ;
const Vector2 translations [ ] { { - 1.0f , 25.3f } , { 2.2f , 2.1f } } ;
const Vector2 translationFieldData [ ] { { - 1.0f , 25.3f } , { 2.2f , 2.1f } } ;
const Complex rotations [ ] { Complex : : rotation ( 35.0 _degf ) , Complex : : rotation ( 22.5 _degf ) } ;
const Complex rotationFieldData [ ] { Complex : : rotation ( 35.0 _degf ) , Complex : : rotation ( 22.5 _degf ) } ;
SceneData scene = Implementation : : sceneCombine ( SceneObject Type : : UnsignedInt , 173 , Containers : : arrayView ( {
SceneData scene = Implementation : : sceneCombine ( SceneMapping Type : : UnsignedInt , 173 , Containers : : arrayView ( {
/* Deliberately in an arbitrary order to avoid false assumptions like
/* Deliberately in an arbitrary order to avoid false assumptions like
fields sharing the same object mapping always being after each
fields sharing the same object mapping always being after each
other */
other */
SceneFieldData { SceneField : : Mesh , Containers : : arrayView ( meshObjects ) , Containers : : arrayView ( meshes ) } ,
SceneFieldData { SceneField : : Mesh , Containers : : arrayView ( meshMappingData ) , Containers : : arrayView ( meshFieldData ) } ,
SceneFieldData { SceneField : : Translation , Containers : : arrayView ( translationRotationObjects ) , Containers : : arrayView ( translations ) } ,
SceneFieldData { SceneField : : Translation , Containers : : arrayView ( translationRotationMappingData ) , Containers : : arrayView ( translationFieldData ) } ,
SceneFieldData { SceneField : : MeshMaterial , Containers : : arrayView ( meshObjects ) , Containers : : arrayView ( meshMaterials ) } ,
SceneFieldData { SceneField : : MeshMaterial , Containers : : arrayView ( meshMappingData ) , Containers : : arrayView ( meshMaterialFieldData ) } ,
SceneFieldData { SceneField : : Rotation , Containers : : arrayView ( translationRotationObjects ) , Containers : : arrayView ( rotations ) }
SceneFieldData { SceneField : : Rotation , Containers : : arrayView ( translationRotationMappingData ) , Containers : : arrayView ( rotationFieldData ) }
} ) ) ;
} ) ) ;
CORRADE_COMPARE ( scene . dataFlags ( ) , DataFlag : : Owned | DataFlag : : Mutable ) ;
CORRADE_COMPARE ( scene . dataFlags ( ) , DataFlag : : Owned | DataFlag : : Mutable ) ;
CORRADE_COMPARE ( scene . object Type( ) , SceneObject Type : : UnsignedInt ) ;
CORRADE_COMPARE ( scene . mapping Type( ) , SceneMapping Type : : UnsignedInt ) ;
CORRADE_COMPARE ( scene . objectCount ( ) , 173 ) ;
CORRADE_COMPARE ( scene . mappingBound ( ) , 173 ) ;
CORRADE_COMPARE ( scene . fieldCount ( ) , 4 ) ;
CORRADE_COMPARE ( scene . fieldCount ( ) , 4 ) ;
CORRADE_COMPARE ( scene . fieldSize ( SceneField : : Mesh ) , 3 ) ;
CORRADE_COMPARE ( scene . fieldSize ( SceneField : : Mesh ) , 3 ) ;
CORRADE_COMPARE ( scene . fieldSize ( SceneField : : MeshMaterial ) , 3 ) ;
CORRADE_COMPARE ( scene . fieldSize ( SceneField : : MeshMaterial ) , 3 ) ;
CORRADE_COMPARE ( scene . objects ( SceneField : : Mesh ) . data ( ) , scene . objects ( SceneField : : MeshMaterial ) . data ( ) ) ;
CORRADE_COMPARE ( scene . mapping ( SceneField : : Mesh ) . data ( ) , scene . mapping ( SceneField : : MeshMaterial ) . data ( ) ) ;
CORRADE_COMPARE ( scene . fieldSize ( SceneField : : Translation ) , 2 ) ;
CORRADE_COMPARE ( scene . fieldSize ( SceneField : : Translation ) , 2 ) ;
CORRADE_COMPARE ( scene . fieldSize ( SceneField : : Rotation ) , 2 ) ;
CORRADE_COMPARE ( scene . fieldSize ( SceneField : : Rotation ) , 2 ) ;
CORRADE_COMPARE ( scene . objects ( SceneField : : Translation ) . data ( ) , scene . objects ( SceneField : : Rotation ) . data ( ) ) ;
CORRADE_COMPARE ( scene . mapping ( SceneField : : Translation ) . data ( ) , scene . mapping ( SceneField : : Rotation ) . data ( ) ) ;
}
}
void SceneToolsTest : : combineObjectsPlaceholderFieldPlaceholder ( ) {
void SceneToolsTest : : combineObjectsPlaceholderFieldPlaceholder ( ) {
const UnsignedShort meshObjects [ ] { 15 , 23 , 47 } ;
const UnsignedShort meshMappingData [ ] { 15 , 23 , 47 } ;
const UnsignedByte meshes [ ] { 0 , 1 , 2 } ;
const UnsignedByte meshFieldData [ ] { 0 , 1 , 2 } ;
SceneData scene = Implementation : : sceneCombine ( SceneObject Type : : UnsignedShort , 173 , Containers : : arrayView ( {
SceneData scene = Implementation : : sceneCombine ( SceneMapping Type : : UnsignedShort , 173 , Containers : : arrayView ( {
SceneFieldData { SceneField : : Camera , Containers : : ArrayView < UnsignedByte > { nullptr , 1 } , Containers : : ArrayView < UnsignedShort > { nullptr , 1 } } ,
SceneFieldData { SceneField : : Camera , Containers : : ArrayView < UnsignedByte > { nullptr , 1 } , Containers : : ArrayView < UnsignedShort > { nullptr , 1 } } ,
SceneFieldData { SceneField : : Mesh , Containers : : arrayView ( meshObjects ) , Containers : : arrayView ( meshes ) } ,
SceneFieldData { SceneField : : Mesh , Containers : : arrayView ( meshMappingData ) , Containers : : arrayView ( meshFieldData ) } ,
/* Looks like sharing object mapping with the Camera field, but
/* Looks like sharing object mapping with the Camera field, but
actually both are placeholders */
actually both are placeholders */
SceneFieldData { SceneField : : Light , Containers : : ArrayView < UnsignedShort > { nullptr , 2 } , Containers : : ArrayView < UnsignedInt > { nullptr , 2 } } ,
SceneFieldData { SceneField : : Light , Containers : : ArrayView < UnsignedShort > { nullptr , 2 } , Containers : : ArrayView < UnsignedInt > { nullptr , 2 } } ,
@ -261,73 +261,73 @@ void SceneToolsTest::combineObjectsPlaceholderFieldPlaceholder() {
} ) ) ;
} ) ) ;
CORRADE_COMPARE ( scene . dataFlags ( ) , DataFlag : : Owned | DataFlag : : Mutable ) ;
CORRADE_COMPARE ( scene . dataFlags ( ) , DataFlag : : Owned | DataFlag : : Mutable ) ;
CORRADE_COMPARE ( scene . object Type( ) , SceneObject Type : : UnsignedShort ) ;
CORRADE_COMPARE ( scene . mapping Type( ) , SceneMapping Type : : UnsignedShort ) ;
CORRADE_COMPARE ( scene . objectCount ( ) , 173 ) ;
CORRADE_COMPARE ( scene . mappingBound ( ) , 173 ) ;
CORRADE_COMPARE ( scene . fieldCount ( ) , 4 ) ;
CORRADE_COMPARE ( scene . fieldCount ( ) , 4 ) ;
CORRADE_COMPARE ( scene . fieldType ( SceneField : : Camera ) , SceneFieldType : : UnsignedShort ) ;
CORRADE_COMPARE ( scene . fieldType ( SceneField : : Camera ) , SceneFieldType : : UnsignedShort ) ;
CORRADE_COMPARE ( scene . fieldSize ( SceneField : : Camera ) , 1 ) ;
CORRADE_COMPARE ( scene . fieldSize ( SceneField : : Camera ) , 1 ) ;
CORRADE_COMPARE ( scene . fieldArraySize ( SceneField : : Camera ) , 0 ) ;
CORRADE_COMPARE ( scene . fieldArraySize ( SceneField : : Camera ) , 0 ) ;
CORRADE_COMPARE ( scene . objects ( SceneField : : Camera ) . data ( ) , scene . data ( ) ) ;
CORRADE_COMPARE ( scene . mapping ( SceneField : : Camera ) . data ( ) , scene . data ( ) ) ;
CORRADE_COMPARE ( scene . objects ( SceneField : : Camera ) . stride ( ) [ 0 ] , 2 ) ;
CORRADE_COMPARE ( scene . mapping ( SceneField : : Camera ) . stride ( ) [ 0 ] , 2 ) ;
CORRADE_COMPARE ( scene . field ( SceneField : : Camera ) . data ( ) , scene . data ( ) + 2 ) ;
CORRADE_COMPARE ( scene . field ( SceneField : : Camera ) . data ( ) , scene . data ( ) + 2 ) ;
CORRADE_COMPARE ( scene . field ( SceneField : : Camera ) . stride ( ) [ 0 ] , 2 ) ;
CORRADE_COMPARE ( scene . field ( SceneField : : Camera ) . stride ( ) [ 0 ] , 2 ) ;
CORRADE_COMPARE ( scene . fieldType ( SceneField : : Mesh ) , SceneFieldType : : UnsignedByte ) ;
CORRADE_COMPARE ( scene . fieldType ( SceneField : : Mesh ) , SceneFieldType : : UnsignedByte ) ;
CORRADE_COMPARE ( scene . fieldArraySize ( SceneField : : Mesh ) , 0 ) ;
CORRADE_COMPARE ( scene . fieldArraySize ( SceneField : : Mesh ) , 0 ) ;
CORRADE_COMPARE_AS ( scene . objects < UnsignedShort > ( SceneField : : Mesh ) ,
CORRADE_COMPARE_AS ( scene . mapping < UnsignedShort > ( SceneField : : Mesh ) ,
Containers : : arrayView ( meshObjects ) ,
Containers : : arrayView ( meshMappingData ) ,
TestSuite : : Compare : : Container ) ;
TestSuite : : Compare : : Container ) ;
CORRADE_COMPARE_AS ( scene . field < UnsignedByte > ( SceneField : : Mesh ) ,
CORRADE_COMPARE_AS ( scene . field < UnsignedByte > ( SceneField : : Mesh ) ,
Containers : : arrayView ( meshes ) ,
Containers : : arrayView ( meshFieldData ) ,
TestSuite : : Compare : : Container ) ;
TestSuite : : Compare : : Container ) ;
CORRADE_COMPARE ( scene . fieldType ( SceneField : : Light ) , SceneFieldType : : UnsignedInt ) ;
CORRADE_COMPARE ( scene . fieldType ( SceneField : : Light ) , SceneFieldType : : UnsignedInt ) ;
CORRADE_COMPARE ( scene . fieldSize ( SceneField : : Light ) , 2 ) ;
CORRADE_COMPARE ( scene . fieldSize ( SceneField : : Light ) , 2 ) ;
CORRADE_COMPARE ( scene . fieldArraySize ( SceneField : : Light ) , 0 ) ;
CORRADE_COMPARE ( scene . fieldArraySize ( SceneField : : Light ) , 0 ) ;
CORRADE_COMPARE ( scene . objects ( SceneField : : Light ) . data ( ) , scene . data ( ) + 2 + 2 + 3 * 2 + 3 + 1 ) ;
CORRADE_COMPARE ( scene . mapping ( SceneField : : Light ) . data ( ) , scene . data ( ) + 2 + 2 + 3 * 2 + 3 + 1 ) ;
CORRADE_COMPARE ( scene . objects ( SceneField : : Light ) . stride ( ) [ 0 ] , 2 ) ;
CORRADE_COMPARE ( scene . mapping ( SceneField : : Light ) . stride ( ) [ 0 ] , 2 ) ;
CORRADE_COMPARE ( scene . field ( SceneField : : Light ) . data ( ) , scene . data ( ) + 2 + 2 + 3 * 2 + 3 + 1 + 2 * 2 + 2 ) ;
CORRADE_COMPARE ( scene . field ( SceneField : : Light ) . data ( ) , scene . data ( ) + 2 + 2 + 3 * 2 + 3 + 1 + 2 * 2 + 2 ) ;
CORRADE_COMPARE ( scene . field ( SceneField : : Light ) . stride ( ) [ 0 ] , 4 ) ;
CORRADE_COMPARE ( scene . field ( SceneField : : Light ) . stride ( ) [ 0 ] , 4 ) ;
CORRADE_COMPARE ( scene . fieldType ( sceneFieldCustom ( 15 ) ) , SceneFieldType : : Short ) ;
CORRADE_COMPARE ( scene . fieldType ( sceneFieldCustom ( 15 ) ) , SceneFieldType : : Short ) ;
CORRADE_COMPARE ( scene . fieldSize ( sceneFieldCustom ( 15 ) ) , 2 ) ;
CORRADE_COMPARE ( scene . fieldSize ( sceneFieldCustom ( 15 ) ) , 2 ) ;
CORRADE_COMPARE ( scene . fieldArraySize ( sceneFieldCustom ( 15 ) ) , 4 ) ;
CORRADE_COMPARE ( scene . fieldArraySize ( sceneFieldCustom ( 15 ) ) , 4 ) ;
CORRADE_COMPARE ( scene . objects ( sceneFieldCustom ( 15 ) ) . data ( ) , scene . data ( ) + 2 + 2 + 3 * 2 + 3 + 1 + 2 * 2 + 2 + 2 * 4 ) ;
CORRADE_COMPARE ( scene . mapping ( sceneFieldCustom ( 15 ) ) . data ( ) , scene . data ( ) + 2 + 2 + 3 * 2 + 3 + 1 + 2 * 2 + 2 + 2 * 4 ) ;
CORRADE_COMPARE ( scene . objects ( sceneFieldCustom ( 15 ) ) . stride ( ) [ 0 ] , 2 ) ;
CORRADE_COMPARE ( scene . mapping ( sceneFieldCustom ( 15 ) ) . stride ( ) [ 0 ] , 2 ) ;
CORRADE_COMPARE ( scene . field ( sceneFieldCustom ( 15 ) ) . data ( ) , scene . data ( ) + 2 + 2 + 3 * 2 + 3 + 1 + 2 * 2 + 2 + 2 * 4 + 2 * 2 ) ;
CORRADE_COMPARE ( scene . field ( sceneFieldCustom ( 15 ) ) . data ( ) , scene . data ( ) + 2 + 2 + 3 * 2 + 3 + 1 + 2 * 2 + 2 + 2 * 4 + 2 * 2 ) ;
CORRADE_COMPARE ( scene . field ( sceneFieldCustom ( 15 ) ) . stride ( ) [ 0 ] , 4 * 2 ) ;
CORRADE_COMPARE ( scene . field ( sceneFieldCustom ( 15 ) ) . stride ( ) [ 0 ] , 4 * 2 ) ;
}
}
void SceneToolsTest : : combineObjectSharedFieldPlaceholder ( ) {
void SceneToolsTest : : combineObjectSharedFieldPlaceholder ( ) {
const UnsignedInt meshObjects [ ] { 15 , 23 , 47 } ;
const UnsignedInt meshMappingData [ ] { 15 , 23 , 47 } ;
const UnsignedByte meshes [ ] { 0 , 1 , 2 } ;
const UnsignedByte meshFieldData [ ] { 0 , 1 , 2 } ;
SceneData scene = Implementation : : sceneCombine ( SceneObject Type : : UnsignedInt , 173 , Containers : : arrayView ( {
SceneData scene = Implementation : : sceneCombine ( SceneMapping Type : : UnsignedInt , 173 , Containers : : arrayView ( {
SceneFieldData { SceneField : : Mesh , Containers : : arrayView ( meshObjects ) , Containers : : arrayView ( meshes ) } ,
SceneFieldData { SceneField : : Mesh , Containers : : arrayView ( meshMappingData ) , Containers : : arrayView ( meshFieldData ) } ,
SceneFieldData { SceneField : : MeshMaterial , Containers : : arrayView ( meshObjects ) , Containers : : ArrayView < Int > { nullptr , 3 } } ,
SceneFieldData { SceneField : : MeshMaterial , Containers : : arrayView ( meshMappingData ) , Containers : : ArrayView < Int > { nullptr , 3 } } ,
} ) ) ;
} ) ) ;
CORRADE_COMPARE ( scene . dataFlags ( ) , DataFlag : : Owned | DataFlag : : Mutable ) ;
CORRADE_COMPARE ( scene . dataFlags ( ) , DataFlag : : Owned | DataFlag : : Mutable ) ;
CORRADE_COMPARE ( scene . object Type( ) , SceneObject Type : : UnsignedInt ) ;
CORRADE_COMPARE ( scene . mapping Type( ) , SceneMapping Type : : UnsignedInt ) ;
CORRADE_COMPARE ( scene . objectCount ( ) , 173 ) ;
CORRADE_COMPARE ( scene . mappingBound ( ) , 173 ) ;
CORRADE_COMPARE ( scene . fieldCount ( ) , 2 ) ;
CORRADE_COMPARE ( scene . fieldCount ( ) , 2 ) ;
CORRADE_COMPARE ( scene . fieldType ( SceneField : : Mesh ) , SceneFieldType : : UnsignedByte ) ;
CORRADE_COMPARE ( scene . fieldType ( SceneField : : Mesh ) , SceneFieldType : : UnsignedByte ) ;
CORRADE_COMPARE ( scene . fieldArraySize ( SceneField : : Mesh ) , 0 ) ;
CORRADE_COMPARE ( scene . fieldArraySize ( SceneField : : Mesh ) , 0 ) ;
CORRADE_COMPARE_AS ( scene . objects < UnsignedInt > ( 0 ) ,
CORRADE_COMPARE_AS ( scene . mapping < UnsignedInt > ( 0 ) ,
Containers : : arrayView ( meshObjects ) ,
Containers : : arrayView ( meshMappingData ) ,
TestSuite : : Compare : : Container ) ;
TestSuite : : Compare : : Container ) ;
CORRADE_COMPARE_AS ( scene . field < UnsignedByte > ( 0 ) ,
CORRADE_COMPARE_AS ( scene . field < UnsignedByte > ( 0 ) ,
Containers : : arrayView ( meshes ) ,
Containers : : arrayView ( meshFieldData ) ,
TestSuite : : Compare : : Container ) ;
TestSuite : : Compare : : Container ) ;
CORRADE_COMPARE ( scene . fieldType ( SceneField : : MeshMaterial ) , SceneFieldType : : Int ) ;
CORRADE_COMPARE ( scene . fieldType ( SceneField : : MeshMaterial ) , SceneFieldType : : Int ) ;
CORRADE_COMPARE ( scene . fieldSize ( SceneField : : MeshMaterial ) , 3 ) ;
CORRADE_COMPARE ( scene . fieldSize ( SceneField : : MeshMaterial ) , 3 ) ;
CORRADE_COMPARE ( scene . fieldArraySize ( SceneField : : MeshMaterial ) , 0 ) ;
CORRADE_COMPARE ( scene . fieldArraySize ( SceneField : : MeshMaterial ) , 0 ) ;
CORRADE_COMPARE ( scene . objects ( SceneField : : MeshMaterial ) . data ( ) , scene . objects ( SceneField : : Mesh ) . data ( ) ) ;
CORRADE_COMPARE ( scene . mapping ( SceneField : : MeshMaterial ) . data ( ) , scene . mapping ( SceneField : : Mesh ) . data ( ) ) ;
CORRADE_COMPARE_AS ( scene . objects < UnsignedInt > ( SceneField : : MeshMaterial ) ,
CORRADE_COMPARE_AS ( scene . mapping < UnsignedInt > ( SceneField : : MeshMaterial ) ,
Containers : : arrayView ( meshObjects ) ,
Containers : : arrayView ( meshMappingData ) ,
TestSuite : : Compare : : Container ) ;
TestSuite : : Compare : : Container ) ;
CORRADE_COMPARE ( scene . field ( SceneField : : MeshMaterial ) . data ( ) , scene . data ( ) + 3 * 4 + 3 + 1 ) ;
CORRADE_COMPARE ( scene . field ( SceneField : : MeshMaterial ) . data ( ) , scene . data ( ) + 3 * 4 + 3 + 1 ) ;
CORRADE_COMPARE ( scene . field ( SceneField : : MeshMaterial ) . stride ( ) [ 0 ] , 4 ) ;
CORRADE_COMPARE ( scene . field ( SceneField : : MeshMaterial ) . stride ( ) [ 0 ] , 4 ) ;
@ -340,13 +340,13 @@ void SceneToolsTest::convertToSingleFunctionObjects() {
/* Haha now I can use sceneCombine() to conveniently prepare the initial
/* Haha now I can use sceneCombine() to conveniently prepare the initial
state here , without having to mess with an ArrayTuple */
state here , without having to mess with an ArrayTuple */
const UnsignedShort parentObjects [ ] { 15 , 21 , 22 , 23 , 1 } ;
const UnsignedShort parentMappingData [ ] { 15 , 21 , 22 , 23 , 1 } ;
const Byte parents [ ] { - 1 , - 1 , 21 , 22 , - 1 } ;
const Byte parentFieldData [ ] { - 1 , - 1 , 21 , 22 , - 1 } ;
/* Two objects have two and three mesh assignments respectively, meaning we
/* Two objects have two and three mesh assignments respectively, meaning we
need three extra */
need three extra */
const UnsignedShort meshObjects [ ] { 15 , 23 , 23 , 23 , 1 , 15 , 21 } ;
const UnsignedShort meshMappingData [ ] { 15 , 23 , 23 , 23 , 1 , 15 , 21 } ;
const Containers : : Pair < UnsignedInt , Int > meshesMaterials [ ] {
const Containers : : Pair < UnsignedInt , Int > meshMaterialFieldData [ ] {
{ 6 , 4 } ,
{ 6 , 4 } ,
{ 1 , 0 } ,
{ 1 , 0 } ,
{ 2 , 3 } ,
{ 2 , 3 } ,
@ -358,13 +358,13 @@ void SceneToolsTest::convertToSingleFunctionObjects() {
/* One camera is attached to an object that already has a mesh, meaning we
/* One camera is attached to an object that already has a mesh, meaning we
need a third extra object */
need a third extra object */
const UnsignedShort cameraObjects [ ] { 22 , 1 } ;
const UnsignedShort cameraMappingData [ ] { 22 , 1 } ;
const UnsignedInt cameras [ ] { 1 , 5 } ;
const UnsignedInt cameraFieldData [ ] { 1 , 5 } ;
SceneData original = Implementation : : sceneCombine ( SceneObject Type : : UnsignedShort , data . originalObjectCount , Containers : : arrayView ( {
SceneData original = Implementation : : sceneCombine ( SceneMapping Type : : UnsignedShort , data . originalObjectCount , Containers : : arrayView ( {
SceneFieldData { SceneField : : Parent , Containers : : arrayView ( parentObjects ) , Containers : : arrayView ( parents ) } ,
SceneFieldData { SceneField : : Parent , Containers : : arrayView ( parentMappingData ) , Containers : : arrayView ( parentFieldData ) } ,
SceneFieldData { SceneField : : Mesh , Containers : : arrayView ( meshObjects ) , Containers : : StridedArrayView1D < const UnsignedInt > { meshesMaterials , & meshesMaterials [ 0 ] . first ( ) , Containers : : arraySize ( meshesMaterials ) , sizeof ( meshesMaterials [ 0 ] ) } } ,
SceneFieldData { SceneField : : Mesh , Containers : : arrayView ( meshMappingData ) , Containers : : StridedArrayView1D < const UnsignedInt > { meshMaterialFieldData , & meshMaterialFieldData [ 0 ] . first ( ) , Containers : : arraySize ( meshMaterialFieldData ) , sizeof ( meshMaterialFieldData [ 0 ] ) } } ,
SceneFieldData { SceneField : : MeshMaterial , Containers : : arrayView ( meshObjects ) , Containers : : StridedArrayView1D < const Int > { meshesMaterials , & meshesMaterials [ 0 ] . second ( ) , Containers : : arraySize ( meshesMaterials ) , sizeof ( meshesMaterials [ 0 ] ) } } ,
SceneFieldData { SceneField : : MeshMaterial , Containers : : arrayView ( meshMappingData ) , Containers : : StridedArrayView1D < const Int > { meshMaterialFieldData , & meshMaterialFieldData [ 0 ] . second ( ) , Containers : : arraySize ( meshMaterialFieldData ) , sizeof ( meshMaterialFieldData [ 0 ] ) } } ,
SceneFieldData { SceneField : : Camera , Containers : : arrayView ( cameraObjects ) , Containers : : arrayView ( cameras ) } ,
SceneFieldData { SceneField : : Camera , Containers : : arrayView ( cameraMappingData ) , Containers : : arrayView ( cameraFieldData ) } ,
} ) ) ;
} ) ) ;
SceneData scene = Implementation : : sceneConvertToSingleFunctionObjects ( original , Containers : : arrayView ( {
SceneData scene = Implementation : : sceneConvertToSingleFunctionObjects ( original , Containers : : arrayView ( {
@ -379,7 +379,7 @@ void SceneToolsTest::convertToSingleFunctionObjects() {
/* There should be three more objects, or the original count preserved if
/* There should be three more objects, or the original count preserved if
it ' s large enough */
it ' s large enough */
CORRADE_COMPARE ( scene . objectCount ( ) , data . expectedObjectCount ) ;
CORRADE_COMPARE ( scene . mappingBound ( ) , data . expectedObjectCount ) ;
/* Object 1 should have a new child that has the camera, as it has a mesh */
/* Object 1 should have a new child that has the camera, as it has a mesh */
CORRADE_COMPARE_AS ( scene . childrenFor ( 1 ) ,
CORRADE_COMPARE_AS ( scene . childrenFor ( 1 ) ,