init method

void init()

Implementation

void init() {
  var bones = this.bones;
  var boneInverses = this.boneInverses;

  // layout (1 matrix = 4 pixels)
  //      RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)
  //  with  8x8  pixel texture max   16 bones * 4 pixels =  (8 * 8)
  //       16x16 pixel texture max   64 bones * 4 pixels = (16 * 16)
  //       32x32 pixel texture max  256 bones * 4 pixels = (32 * 32)
  //       64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)

  double s = Math.sqrt(bones.length * 4); // 4 pixels needed for 1 matrix
  s = MathUtils.ceilPowerOfTwo(s).toDouble();
  s = Math.max(s, 4);

  int size = s.toInt();

  boneTextureSize = size;

  boneMatrices = Float32Array(size * size * 4);

  // calculate inverse bone matrices if necessary

  if (boneInverses.isEmpty) {
    calculateInverses();
  } else {
    // handle special case

    if (bones.length != boneInverses.length) {
      print('three.Skeleton: Number of inverse bone matrices does not match amount of bones.');

      this.boneInverses = [];

      for (var i = 0, il = this.bones.length; i < il; i++) {
        this.boneInverses.add(Matrix4());
      }
    }
  }
}