/// <summary>Transforms the given bone with relative information to its parent</summary> /// <param name="bone"></param> public virtual void updateRecursively(com.brashmonkey.spriter.objects.SpriterBone bone) { this.updateBone(bone); foreach (com.brashmonkey.spriter.objects.SpriterBone child in bone.getChildBones( )) { this.updateRecursively(this.tempBones[child.getId()]); } }
/// <summary>Calculates the bounding box for the current running animation.</summary> /// <remarks> /// Calculates the bounding box for the current running animation. /// Call this method after updating the spriter player. /// </remarks> /// <param name="bone">root to start at. Set null, to iterate through all objects.</param> public virtual void calcBoundingBox(com.brashmonkey.spriter.objects.SpriterBone bone ) { if (bone == null) { this.calcBoundingBoxForAll(); } else { bone.boundingBox.set(this.rect); foreach (com.brashmonkey.spriter.objects.SpriterObject @object in bone.getChildObjects ()) { com.brashmonkey.spriter.SpriterPoint[] points = this.tempObjects[@object.getId()] .getBoundingBox(); bone.boundingBox.left = System.Math.Min(System.Math.Min(System.Math.Min(System.Math .Min(points[0].x, points[1].x), points[2].x), points[3].x), bone.boundingBox.left ); bone.boundingBox.right = System.Math.Max(System.Math.Max(System.Math.Max(System.Math .Max(points[0].x, points[1].x), points[2].x), points[3].x), bone.boundingBox.right ); bone.boundingBox.top = System.Math.Max(System.Math.Max(System.Math.Max(System.Math .Max(points[0].y, points[1].y), points[2].y), points[3].y), bone.boundingBox.top ); bone.boundingBox.bottom = System.Math.Min(System.Math.Min(System.Math.Min(System.Math .Min(points[0].y, points[1].y), points[2].y), points[3].y), bone.boundingBox.bottom ); } this.rect.set(bone.boundingBox); foreach (com.brashmonkey.spriter.objects.SpriterBone child in bone.getChildBones( )) { calcBoundingBox(child); bone.boundingBox.set(child.boundingBox); } this.rect.set(bone.boundingBox); } this.rect.calculateSize(); }