InstancedBufferGeometry.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /**
  2. * @author simonThiele / https://github.com/simonThiele
  3. */
  4. QUnit.module( "InstancedBufferGeometry" );
  5. function createClonableMock() {
  6. return {
  7. callCount: 0,
  8. clone: function() {
  9. this.callCount++;
  10. return this;
  11. }
  12. }
  13. }
  14. QUnit.test( "copy" , function( assert ) {
  15. var instanceMock1 = {};
  16. var instanceMock2 = {};
  17. var indexMock = createClonableMock();
  18. var defaultAttribute1 = new THREE.BufferAttribute( new Float32Array( [ 1 ] ) );
  19. var defaultAttribute2 = new THREE.BufferAttribute( new Float32Array( [ 2 ] ) );
  20. var instance = new THREE.InstancedBufferGeometry();
  21. instance.addGroup( 0, 10, instanceMock1 );
  22. instance.addGroup( 10, 5, instanceMock2 );
  23. instance.setIndex( indexMock );
  24. instance.addAttribute( 'defaultAttribute1', defaultAttribute1 );
  25. instance.addAttribute( 'defaultAttribute2', defaultAttribute2 );
  26. var copiedInstance = instance.copy( instance );
  27. assert.ok( copiedInstance instanceof THREE.InstancedBufferGeometry, "the clone has the correct type" );
  28. assert.equal( copiedInstance.index, indexMock, "index was copied" );
  29. assert.equal( copiedInstance.index.callCount, 1, "index.clone was called once" );
  30. assert.ok( copiedInstance.attributes['defaultAttribute1'] instanceof THREE.BufferAttribute, "attribute was created" );
  31. assert.deepEqual( copiedInstance.attributes['defaultAttribute1'].array, defaultAttribute1.array, "attribute was copied" );
  32. assert.deepEqual( copiedInstance.attributes['defaultAttribute2'].array, defaultAttribute2.array, "attribute was copied" );
  33. assert.equal( copiedInstance.groups[0].start, 0, "group was copied" );
  34. assert.equal( copiedInstance.groups[0].count, 10, "group was copied" );
  35. assert.equal( copiedInstance.groups[0].materialIndex, instanceMock1, "group was copied" );
  36. assert.equal( copiedInstance.groups[1].start, 10, "group was copied" );
  37. assert.equal( copiedInstance.groups[1].count, 5, "group was copied" );
  38. assert.equal( copiedInstance.groups[1].materialIndex, instanceMock2, "group was copied" );
  39. });
粤ICP备19079148号