From f7a5dc2e318a7ec8d3179a66f6e227a59b75e40a Mon Sep 17 00:00:00 2001 From: underscorediscovery Date: Fri, 17 Apr 2015 15:01:33 -0230 Subject: [PATCH] update docs --- docs/api/differ/Collision.html | 133 ++ docs/api/differ/ShapeDrawer.html | 126 ++ docs/api/differ/data/RayCollision.html | 110 + docs/api/differ/data/RayCollisionHelper.html | 109 + docs/api/differ/data/RayIntersection.html | 110 + docs/api/differ/data/ShapeCollision.html | 110 + docs/api/differ/math/Matrix.html | 143 ++ docs/api/differ/math/Vector.html | 153 ++ docs/api/differ/sat/Common.html | 97 + docs/api/differ/sat/SAT2D.html | 122 ++ docs/api/differ/shapes/Circle.html | 121 ++ docs/api/differ/shapes/Polygon.html | 145 ++ docs/api/differ/shapes/Ray.html | 114 + docs/api/differ/shapes/Shape.html | 149 ++ docs/api/hxcollision/Collision.html | 92 - docs/api/hxcollision/CollisionData.html | 83 - docs/api/hxcollision/OpenFLDrawer.html | 92 - docs/api/hxcollision/ShapeDrawer.html | 92 - docs/api/hxcollision/math/Matrix.html | 105 - docs/api/hxcollision/math/Vector.html | 130 -- docs/api/hxcollision/shapes/Circle.html | 107 - docs/api/hxcollision/shapes/Polygon.html | 119 -- docs/api/hxcollision/shapes/Shape.html | 103 - docs/api/index.html | 162 +- docs/css/code.css | 6 +- docs/css/font.css | 62 +- docs/css/font.eot | Bin 14164 -> 0 bytes docs/css/font.ttf | Bin 35256 -> 0 bytes docs/css/font.woff | Bin 15988 -> 0 bytes docs/css/font/cabin-bold-webfont.eot | Bin 0 -> 23977 bytes docs/css/font/cabin-bold-webfont.svg | 1804 ++++++++++++++++ docs/css/font/cabin-bold-webfont.ttf | Bin 0 -> 58024 bytes docs/css/font/cabin-bold-webfont.woff | Bin 0 -> 26848 bytes docs/css/font/cabin-medium-webfont.eot | Bin 0 -> 24684 bytes docs/css/font/cabin-medium-webfont.svg | 1935 +++++++++++++++++ docs/css/font/cabin-medium-webfont.ttf | Bin 0 -> 58984 bytes docs/css/font/cabin-medium-webfont.woff | Bin 0 -> 27596 bytes docs/css/font/cabin-regular-webfont.eot | Bin 0 -> 24847 bytes docs/css/font/cabin-regular-webfont.svg | 1953 ++++++++++++++++++ docs/css/font/cabin-regular-webfont.ttf | Bin 0 -> 58860 bytes docs/css/font/cabin-regular-webfont.woff | Bin 0 -> 27668 bytes docs/css/font/cabin-semibold-webfont.eot | Bin 0 -> 24067 bytes docs/css/font/cabin-semibold-webfont.svg | 1827 ++++++++++++++++ docs/css/font/cabin-semibold-webfont.ttf | Bin 0 -> 58228 bytes docs/css/font/cabin-semibold-webfont.woff | Bin 0 -> 26908 bytes docs/css/{ => font}/droidsansmono.eot | Bin docs/css/{ => font}/droidsansmono.ttf | Bin docs/css/{ => font}/droidsansmono.woff | Bin docs/css/font/stylesheet.css | 45 + docs/css/omnibar.css | 47 + docs/css/style.css | 265 ++- docs/images/close.png | Bin 0 -> 693 bytes docs/images/favicon.png | Bin 0 -> 17973 bytes docs/images/search.png | Bin 0 -> 676 bytes docs/index.html | 121 +- docs/js/omnibar.js | 116 ++ docs/js/release.version.js | 63 + 57 files changed, 9872 insertions(+), 1199 deletions(-) create mode 100644 docs/api/differ/Collision.html create mode 100644 docs/api/differ/ShapeDrawer.html create mode 100644 docs/api/differ/data/RayCollision.html create mode 100644 docs/api/differ/data/RayCollisionHelper.html create mode 100644 docs/api/differ/data/RayIntersection.html create mode 100644 docs/api/differ/data/ShapeCollision.html create mode 100644 docs/api/differ/math/Matrix.html create mode 100644 docs/api/differ/math/Vector.html create mode 100644 docs/api/differ/sat/Common.html create mode 100644 docs/api/differ/sat/SAT2D.html create mode 100644 docs/api/differ/shapes/Circle.html create mode 100644 docs/api/differ/shapes/Polygon.html create mode 100644 docs/api/differ/shapes/Ray.html create mode 100644 docs/api/differ/shapes/Shape.html delete mode 100644 docs/api/hxcollision/Collision.html delete mode 100644 docs/api/hxcollision/CollisionData.html delete mode 100644 docs/api/hxcollision/OpenFLDrawer.html delete mode 100644 docs/api/hxcollision/ShapeDrawer.html delete mode 100644 docs/api/hxcollision/math/Matrix.html delete mode 100644 docs/api/hxcollision/math/Vector.html delete mode 100644 docs/api/hxcollision/shapes/Circle.html delete mode 100644 docs/api/hxcollision/shapes/Polygon.html delete mode 100644 docs/api/hxcollision/shapes/Shape.html delete mode 100644 docs/css/font.eot delete mode 100644 docs/css/font.ttf delete mode 100644 docs/css/font.woff create mode 100644 docs/css/font/cabin-bold-webfont.eot create mode 100644 docs/css/font/cabin-bold-webfont.svg create mode 100644 docs/css/font/cabin-bold-webfont.ttf create mode 100644 docs/css/font/cabin-bold-webfont.woff create mode 100644 docs/css/font/cabin-medium-webfont.eot create mode 100644 docs/css/font/cabin-medium-webfont.svg create mode 100644 docs/css/font/cabin-medium-webfont.ttf create mode 100644 docs/css/font/cabin-medium-webfont.woff create mode 100644 docs/css/font/cabin-regular-webfont.eot create mode 100644 docs/css/font/cabin-regular-webfont.svg create mode 100644 docs/css/font/cabin-regular-webfont.ttf create mode 100644 docs/css/font/cabin-regular-webfont.woff create mode 100644 docs/css/font/cabin-semibold-webfont.eot create mode 100644 docs/css/font/cabin-semibold-webfont.svg create mode 100644 docs/css/font/cabin-semibold-webfont.ttf create mode 100644 docs/css/font/cabin-semibold-webfont.woff rename docs/css/{ => font}/droidsansmono.eot (100%) rename docs/css/{ => font}/droidsansmono.ttf (100%) rename docs/css/{ => font}/droidsansmono.woff (100%) create mode 100644 docs/css/font/stylesheet.css create mode 100644 docs/css/omnibar.css create mode 100644 docs/images/close.png create mode 100644 docs/images/favicon.png create mode 100644 docs/images/search.png create mode 100644 docs/js/omnibar.js create mode 100644 docs/js/release.version.js diff --git a/docs/api/differ/Collision.html b/docs/api/differ/Collision.html new file mode 100644 index 0000000..c2fcb31 --- /dev/null +++ b/docs/api/differ/Collision.html @@ -0,0 +1,133 @@ + + + + + snow - + + + + + + + + + + + + + + + + + +
+

Logo

+


+
search API (or start typing anywhere)

+
+ + + + +
+ + + +

Collision

+differ.Collision

+
+ +

class
+meta: @:directlyUsed, @:keep

+
+ + +

  + 

+

Methods


+ pointInPolystatic
+ pointInPoly(point:differ.math.Vector, poly:differ.shapes.Polygon) : Bool
Test if a given point lands inside the given polygon. + Returns true if it does, false otherwise.

+

+ + rayWithRaystatic

+ rayWithRay(ray1:differ.shapes.Ray, ray2:differ.shapes.Ray) : differ.data.RayIntersection
Test a ray against another ray. + When no collision is found, this function returns null. + Returns a RayIntersection if a collision is found.

+

+ + rayWithRaysstatic

+ rayWithRays(ray:differ.shapes.Ray, rays:Array<differ.shapes.Ray>) : Array<differ.data.RayIntersection>
Test a ray against a list of other rays. + When no collision is found, this function returns an empty array, this function will never return null. + Returns a list of RayIntersection information for each collision found.

+

+ + rayWithShapestatic

+ rayWithShape(ray:differ.shapes.Ray, shape:differ.shapes.Shape) : differ.data.RayCollision
Test a line between two points against a list of shapes. + When no collision is found, this function returns null. + Returns a RayCollision if a collision is found.

+

+ + rayWithShapesstatic

+ rayWithShapes(ray:differ.shapes.Ray, shapes:Array<differ.shapes.Shape>) : Array<differ.data.RayCollision>
Test a ray between two points against a list of shapes. + When no collision is found, this function returns an empty array, this function will never return null. + Returns a list of RayCollision information for each collision found.

+

+ + shapeWithShapestatic

+ shapeWithShape(shape1:differ.shapes.Shape, shape2:differ.shapes.Shape) : differ.data.ShapeCollision
Test a single shape against another shape. + When no collision is found between them, this function returns null. + Returns a ShapeCollision if a collision is found.

+

+ + shapeWithShapesstatic

+ shapeWithShapes(shape1:differ.shapes.Shape, shapes:Array<differ.shapes.Shape>) : Array<differ.data.ShapeCollision>
Test a single shape against multiple other shapes. + When no collision is found, this function returns an empty array, this function will never return null. + Returns a list of ShapeCollision information for each collision found.

+

+
+ +

  +  +  + 

+ +
+ + + diff --git a/docs/api/differ/ShapeDrawer.html b/docs/api/differ/ShapeDrawer.html new file mode 100644 index 0000000..c2d63ef --- /dev/null +++ b/docs/api/differ/ShapeDrawer.html @@ -0,0 +1,126 @@ + + + + + snow - + + + + + + + + + + + + + + + + + +
+

Logo

+


+
search API (or start typing anywhere)

+
+ + + + +
+ + + +

ShapeDrawer

+differ.ShapeDrawer

+

To implement your own debug drawing class, you only need to override drawLine function and implement it + the rest is handled internally. You can override specifics if you want, but it’s not required

+
+ +

class
+meta: @:keep

+
+ + +

  + 

+

Methods


+ drawCircle
+ drawCircle(circle:differ.shapes.Circle) : Void
Draw a circle Shape

+

+ + drawLine

+ drawLine(p0:differ.math.Vector, p1:differ.math.Vector, startPoint:Bool) : Void
Draw a line between p0 and p1. Implement this function at minimum in custom drawing handlers

+

+ + drawPoint

+ drawPoint(point:differ.math.Vector, size:Float) : Void

+

+ + drawPolygon

+ drawPolygon(poly:differ.shapes.Polygon) : Void
Draw a Polygon

+

+ + drawShape

+ drawShape(shape:differ.shapes.Shape) : Void
Draw a Shape, it will determine the type and draw it for you.

+

+ + drawShapeCollision

+ drawShapeCollision(data:differ.data.ShapeCollision, length:Float) : Void

+

+ + drawVector

+ drawVector(v:differ.math.Vector, start:differ.math.Vector, startPoint:Bool) : Void
Draw a Vector (with magnitude)

+

+ + new

+ new() : Void

+

+
+ +

  +  +  + 

+ +
+ + + diff --git a/docs/api/differ/data/RayCollision.html b/docs/api/differ/data/RayCollision.html new file mode 100644 index 0000000..d879304 --- /dev/null +++ b/docs/api/differ/data/RayCollision.html @@ -0,0 +1,110 @@ + + + + + snow - + + + + + + + + + + + + + + + + + +
+

Logo

+


+
search API (or start typing anywhere)

+
+ + + + +
+ + + +

RayCollision

+differ.data.RayCollision

+

Ray collision intersection data, obtained by testing a shape and a ray.

+
+ +

class
+meta: @:directlyUsed, @:keep

+
+ + +

  + 

+

Members


+ end
+ end : Float
+ Distance along ray that the intersection ended at.
+ ray
+ ray : differ.shapes.Ray
+ The ray involved in the intersection.
+ shape
+ shape : differ.shapes.Shape
+ Shape the intersection was with.
+ start
+ start : Float
+ Distance along ray that the intersection start at.

+

Methods


+ new
+ new(_shape:differ.shapes.Shape, _ray:differ.shapes.Ray, _start:Float, _end:Float) : Void

+

+
+ +

  +  +  + 

+ +
+ + + diff --git a/docs/api/differ/data/RayCollisionHelper.html b/docs/api/differ/data/RayCollisionHelper.html new file mode 100644 index 0000000..e02bab5 --- /dev/null +++ b/docs/api/differ/data/RayCollisionHelper.html @@ -0,0 +1,109 @@ + + + + + snow - + + + + + + + + + + + + + + + + + +
+

Logo

+


+
search API (or start typing anywhere)

+
+ + + + +
+ + + +

RayCollisionHelper

+differ.data.RayCollisionHelper

+

A static extension class helper for RayCollision

+
+ +

class
+meta: @:directlyUsed, @:keep

+
+ + +

  + 

+

Methods


+ hitEndstatic
+ hitEnd(data:differ.data.RayCollision) : differ.math.Vector
Convenience: get the end point along the line as a vector. + Note that it is possible that this extends beyond the length of the ray, + when RayCollision end value is > 1, i.e the end of the ray is inside the shape area. + If you need that point, you would use ray.end as the point, + i.e if(data.end > 1) point = data.ray.end; else point = data.hitEnd();

+

+ + hitStartstatic

+ hitStart(data:differ.data.RayCollision) : differ.math.Vector
Convenience: get the start point along the line as a vector. + It is possible the start point is not along the ray itself, when + the start value is < 0, the ray start is inside the shape. + If you need that point, use the ray.start point, + i.e if(data.start < 0) point = data.ray.start; else point = data.hitStart();

+

+
+ +

  +  +  + 

+ +
+ + + diff --git a/docs/api/differ/data/RayIntersection.html b/docs/api/differ/data/RayIntersection.html new file mode 100644 index 0000000..54b65f5 --- /dev/null +++ b/docs/api/differ/data/RayIntersection.html @@ -0,0 +1,110 @@ + + + + + snow - + + + + + + + + + + + + + + + + + +
+

Logo

+


+
search API (or start typing anywhere)

+
+ + + + +
+ + + +

RayIntersection

+differ.data.RayIntersection

+

Ray intersection data obtained by testing two rays for intersection.

+
+ +

class
+meta: @:directlyUsed, @:keep

+
+ + +

  + 

+

Members


+ ray1
+ ray1 : differ.shapes.Ray
+ The first ray in the test
+ ray2
+ ray2 : differ.shapes.Ray
+ The second ray in the test
+ u1
+ u1 : Float
+ u value for ray1.
+ u2
+ u2 : Float
+ u value for ray2.

+

Methods


+ new
+ new(ray1:differ.shapes.Ray, u1:Float, ray2:differ.shapes.Ray, u2:Float) : Void

+

+
+ +

  +  +  + 

+ +
+ + + diff --git a/docs/api/differ/data/ShapeCollision.html b/docs/api/differ/data/ShapeCollision.html new file mode 100644 index 0000000..cd80b94 --- /dev/null +++ b/docs/api/differ/data/ShapeCollision.html @@ -0,0 +1,110 @@ + + + + + snow - + + + + + + + + + + + + + + + + + +
+

Logo

+


+
search API (or start typing anywhere)

+
+ + + + +
+ + + +

ShapeCollision

+differ.data.ShapeCollision

+

Collision data, obtained by testing two shapes for a collision.

+
+ +

class
+meta: @:directlyUsed, @:keep

+
+ + +

  + 

+

Members


+ overlap
+ overlap : Float
+ the overlap amount
+ separation
+ separation : differ.math.Vector
+ a vector that when subtracted to shape 1 will separate it from shape 2
+ shape1
+ shape1 : differ.shapes.Shape
+ the first shape
+ shape2
+ shape2 : differ.shapes.Shape
+ the second shape
+ unitVector
+ unitVector : differ.math.Vector
+ unit vector on the axis of the collision (the normal of the face that was collided with)

+

Methods


+
+ +

  +  +  + 

+ +
+ + + diff --git a/docs/api/differ/math/Matrix.html b/docs/api/differ/math/Matrix.html new file mode 100644 index 0000000..0a451d3 --- /dev/null +++ b/docs/api/differ/math/Matrix.html @@ -0,0 +1,143 @@ + + + + + snow - + + + + + + + + + + + + + + + + + +
+

Logo

+


+
search API (or start typing anywhere)

+
+ + + + +
+ + + +

Matrix

+differ.math.Matrix

+
+ +

class
+meta: @:directlyUsed, @:keep

+
+ + +

  + 

+

Members


+ a
+ a : Float
+
+ b
+ b : Float
+
+ c
+ c : Float
+
+ d
+ d : Float
+
+ tx
+ tx : Float
+
+ ty
+ ty : Float
+

+

Methods


+ compose
+ compose(_position:differ.math.Vector, _rotation:Float, _scale:differ.math.Vector) : Void

+

+ + identity

+ identity() : Void

+

+ + makeTranslation

+ makeTranslation(_x:Float, _y:Float) : differ.math.Matrix

+

+ + new

+ new(a:Float, b:Float, c:Float, d:Float, tx:Float, ty:Float) : Void

+

+ + rotate

+ rotate(angle:Float) : Void

+

+ + scale

+ scale(x:Float, y:Float) : Void

+

+ + toString

+ toString() : String

+

+ + translate

+ translate(x:Float, y:Float) : Void

+

+
+ +

  +  +  + 

+ +
+ + + diff --git a/docs/api/differ/math/Vector.html b/docs/api/differ/math/Vector.html new file mode 100644 index 0000000..7c15b3b --- /dev/null +++ b/docs/api/differ/math/Vector.html @@ -0,0 +1,153 @@ + + + + + snow - + + + + + + + + + + + + + + + + + +
+

Logo

+


+
search API (or start typing anywhere)

+
+ + + + +
+ + + +

Vector

+differ.math.Vector

+

2D vector class

+
+ +

class
+meta: @:directlyUsed, @:keep

+
+ + +

  + 

+

Members


+ x
+ x : Float
+ The x component
+ y
+ y : Float
+ The y component

+

Properties


+ length
+ length : Float
+ The length of the vector + lengthsq
+ lengthsq : Float
+ The length, squared, of the vector

+

Methods


+ add
+ add(other:differ.math.Vector) : differ.math.Vector
Add a vector to this vector. Returns this vector, modified.

+

+ + clone

+ clone() : differ.math.Vector
Copy, returns a new vector instance from this vector.

+

+ + cross

+ cross(other:differ.math.Vector) : Float
Return the cross product of this vector and another vector.

+

+ + dot

+ dot(other:differ.math.Vector) : Float
Return the dot product of this vector and another vector.

+

+ + invert

+ invert() : differ.math.Vector
Invert this vector. Returns this vector, modified.

+

+ + new

+ new(_x:Float, _y:Float) : Void

+

+ + normalize

+ normalize() : differ.math.Vector
Sets the vector’s length to 1. Returns this vector, modified.

+

+ + subtract

+ subtract(other:differ.math.Vector) : differ.math.Vector
Subtract a vector from this one. Returns this vector, modified.

+

+ + toString

+ toString() : String
Return a string representation of this vector.

+

+ + transform

+ transform(matrix:differ.math.Matrix) : differ.math.Vector
Transforms Vector based on the given Matrix. Returns this vector, modified.

+

+ + truncate

+ truncate(max:Float) : differ.math.Vector
Sets the length to fit under the given maximum value. + Nothing is done if the vector is already shorter. + Returns this vector, modified.

+

+
+ +

  +  +  + 

+ +
+ + + diff --git a/docs/api/differ/sat/Common.html b/docs/api/differ/sat/Common.html new file mode 100644 index 0000000..18294ef --- /dev/null +++ b/docs/api/differ/sat/Common.html @@ -0,0 +1,97 @@ + + + + + snow - + + + + + + + + + + + + + + + + + +
+

Logo

+


+
search API (or start typing anywhere)

+
+ + + + +
+ + + +

Common

+differ.sat.Common

+

Common math utilities used internally

+
+ +

class
+meta: @:directlyUsed, @:keep

+
+ + +

  + 

+

Methods


+ findNormalAxisstatic
+ findNormalAxis(vertices:Array<differ.math.Vector>, index:Int) : differ.math.Vector
Internal api - find the normal axis of a vert in the list at index

+

+
+ +

  +  +  + 

+ +
+ + + diff --git a/docs/api/differ/sat/SAT2D.html b/docs/api/differ/sat/SAT2D.html new file mode 100644 index 0000000..40fedef --- /dev/null +++ b/docs/api/differ/sat/SAT2D.html @@ -0,0 +1,122 @@ + + + + + snow - + + + + + + + + + + + + + + + + + +
+

Logo

+


+
search API (or start typing anywhere)

+
+ + + + +
+ + + +

SAT2D

+differ.sat.SAT2D

+

Implementation details for the 2D SAT collision queries. + Used by the various shapes, and Collision API, mostly internally.

+
+ +

class
+meta: @:directlyUsed, @:keep

+
+ + +

  + 

+

Methods


+ bresenhamLinestatic
+ bresenhamLine(start:differ.math.Vector, end:differ.math.Vector) : Array<differ.math.Vector>
Internal api - generate a bresenham line between given start and end points

+

+ + testCircleVsCirclestatic

+ testCircleVsCircle(circle1:differ.shapes.Circle, circle2:differ.shapes.Circle) : differ.data.ShapeCollision
Internal api - test a circle against a circle

+

+ + testCircleVsPolygonstatic

+ testCircleVsPolygon(circle:differ.shapes.Circle, polygon:differ.shapes.Polygon, flip:Bool) : differ.data.ShapeCollision
Internal api - test a circle against a polygon

+

+ + testPolygonVsPolygonstatic

+ testPolygonVsPolygon(polygon1:differ.shapes.Polygon, polygon2:differ.shapes.Polygon, flip:Bool) : differ.data.ShapeCollision
Internal api - test a polygon against another polygon

+

+ + testRayVsCirclestatic

+ testRayVsCircle(ray:differ.shapes.Ray, circle:differ.shapes.Circle) : differ.data.RayCollision
Internal api - test a ray against a circle

+

+ + testRayVsPolygonstatic

+ testRayVsPolygon(ray:differ.shapes.Ray, polygon:differ.shapes.Polygon) : differ.data.RayCollision
Internal api - test a ray against a polygon

+

+ + testRayVsRaystatic

+ testRayVsRay(ray1:differ.shapes.Ray, ray2:differ.shapes.Ray) : differ.data.RayIntersection
Internal api - test a ray against another ray

+

+
+ +

  +  +  + 

+ +
+ + + diff --git a/docs/api/differ/shapes/Circle.html b/docs/api/differ/shapes/Circle.html new file mode 100644 index 0000000..f3a5590 --- /dev/null +++ b/docs/api/differ/shapes/Circle.html @@ -0,0 +1,121 @@ + + + + + snow - + + + + + + + + + + + + + + + + + +
+

Logo

+


+
search API (or start typing anywhere)

+
+ + + + +
+ + + +

Circle

+differ.shapes.Circle

+

A circle collision shape

+
+ +

classextends differ.shapes.Shape
+meta: @:directlyUsed, @:keep

+
+ + +

  + 

+

Members


+

Properties


+ radius
+ radius : Float
+ The radius of this circle. Set on construction + transformedRadius
+ transformedRadius : Float
+ The transformed radius of this circle, based on the scale/rotation

+

Methods


+ new
+ new(x:Float, y:Float, radius:Float) : Void

+

+ + test

+ test(shape:differ.shapes.Shape) : differ.data.ShapeCollision
Test for collision against a shape.

+

+ + testCircle

+ testCircle(circle:differ.shapes.Circle, flip:Bool) : differ.data.ShapeCollision
Test for collision against a circle.

+

+ + testPolygon

+ testPolygon(polygon:differ.shapes.Polygon, flip:Bool) : differ.data.ShapeCollision
Test for collision against a polygon.

+

+ + testRay

+ testRay(ray:differ.shapes.Ray) : differ.data.RayCollision
Test for collision against a ray.

+

+
+ +

  +  +  + 

+ +
+ + + diff --git a/docs/api/differ/shapes/Polygon.html b/docs/api/differ/shapes/Polygon.html new file mode 100644 index 0000000..5f065dc --- /dev/null +++ b/docs/api/differ/shapes/Polygon.html @@ -0,0 +1,145 @@ + + + + + snow - + + + + + + + + + + + + + + + + + +
+

Logo

+


+
search API (or start typing anywhere)

+
+ + + + +
+ + + +

Polygon

+differ.shapes.Polygon

+

A polygon collision shape

+
+ +

classextends differ.shapes.Shape
+meta: @:directlyUsed, @:keep

+
+ + +

  + 

+

Members


+

Properties


+ transformedVertices
+ transformedVertices : Array<differ.math.Vector>
+ The transformed (rotated/scale) vertices cache + vertices
+ vertices : Array<differ.math.Vector>
+ The vertices of this shape

+

Methods


+ createstatic
+ create(x:Float, y:Float, sides:Int, radius:Float) : differ.shapes.Polygon
Helper to create an Ngon at x,y with given number of sides, and radius. + A default radius of 100 if unspecified. Returns a ready made Polygon collision Shape

+

+ + destroy

+ destroy() : Void
Destroy this polygon and clean up.

+

+ + new

+ new(x:Float, y:Float, vertices:Array<differ.math.Vector>) : Void
Create a new polygon with a given set of vertices at position x,y.

+

+ + rectanglestatic

+ rectangle(x:Float, y:Float, width:Float, height:Float, centered:Bool) : differ.shapes.Polygon
Helper generate a rectangle at x,y with a given width/height and centered state. + Centered by default. Returns a ready made Polygon collision Shape

+

+ + squarestatic

+ square(x:Float, y:Float, width:Float, centered:Bool) : differ.shapes.Polygon
Helper generate a square at x,y with a given width/height with given centered state. + Centered by default. Returns a ready made Polygon collision Shape

+

+ + test

+ test(shape:differ.shapes.Shape) : differ.data.ShapeCollision
Test for a collision with a shape.

+

+ + testCircle

+ testCircle(circle:differ.shapes.Circle, flip:Bool) : differ.data.ShapeCollision
Test for a collision with a circle.

+

+ + testPolygon

+ testPolygon(polygon:differ.shapes.Polygon, flip:Bool) : differ.data.ShapeCollision
Test for a collision with a polygon.

+

+ + testRay

+ testRay(ray:differ.shapes.Ray) : differ.data.RayCollision
Test for a collision with a ray.

+

+ + trianglestatic

+ triangle(x:Float, y:Float, radius:Float) : differ.shapes.Polygon
Helper generate a triangle at x,y with a given radius. + Returns a ready made Polygon collision Shape

+

+
+ +

  +  +  + 

+ +
+ + + diff --git a/docs/api/differ/shapes/Ray.html b/docs/api/differ/shapes/Ray.html new file mode 100644 index 0000000..e2c57da --- /dev/null +++ b/docs/api/differ/shapes/Ray.html @@ -0,0 +1,114 @@ + + + + + snow - + + + + + + + + + + + + + + + + + +
+

Logo

+


+
search API (or start typing anywhere)

+
+ + + + +
+ + + +

Ray

+differ.shapes.Ray

+
+ +

class
+meta: @:directlyUsed, @:keep

+
+ + +

  + 

+

Members


+ end
+ end : differ.math.Vector
+ The end point of the ray.
+ infinite
+ infinite : Bool
+ Whether or not the ray is infinite.
+ start
+ start : differ.math.Vector
+ The start point of the ray.

+

Properties


+ dir
+ dir : differ.math.Vector
+ The direction of the ray. + Returns a cached vector, so modifying it will affect this instance. + Updates only when the dir value is accessed.

+

Methods


+ new
+ new(_start:differ.math.Vector, _end:differ.math.Vector, _infinite:Bool) : Void
Create a new ray with the start and end point, + which determine the direction of the ray, and optionally specifying + that this ray is an infinite one.

+

+
+ +

  +  +  + 

+ +
+ + + diff --git a/docs/api/differ/shapes/Shape.html b/docs/api/differ/shapes/Shape.html new file mode 100644 index 0000000..c00acd6 --- /dev/null +++ b/docs/api/differ/shapes/Shape.html @@ -0,0 +1,149 @@ + + + + + snow - + + + + + + + + + + + + + + + + + +
+

Logo

+


+
search API (or start typing anywhere)

+
+ + + + +
+ + + +

Shape

+differ.shapes.Shape

+

A base collision shape

+
+ +

class
+meta: @:keep

+
+ + +

  + 

+

Members


+ active
+ active : Bool
+ The state of this shape, if inactive can be ignored in results
+ data
+ data : Dynamic
+ A generic data object where you can store anything you want, for later use
+ name
+ name : String
+ The name of this shape, to help in debugging
+ tags
+ tags : Map<String, String>
+ A list of tags to use for marking shapes with data for later use, by key/value

+

Properties


+ position
+ position : differ.math.Vector
+ The position of this shape + rotation
+ rotation : Float
+ The rotation of this shape, in degrees + scaleX
+ scaleX : Float
+ The scale in the x direction of this shape + scaleY
+ scaleY : Float
+ The scale in the y direction of this shape + x
+ x : Float
+ The x position of this shape + y
+ y : Float
+ The y position of this shape

+

Methods


+ destroy
+ destroy() : Void
clean up and destroy this shape

+

+ + new

+ new(_x:Float, _y:Float) : Void
Create a new shape at give position x,y

+

+ + test

+ test(shape:differ.shapes.Shape) : differ.data.ShapeCollision
Test this shape against another shape.

+

+ + testCircle

+ testCircle(circle:differ.shapes.Circle, flip:Bool) : differ.data.ShapeCollision
Test this shape against a circle.

+

+ + testPolygon

+ testPolygon(polygon:differ.shapes.Polygon, flip:Bool) : differ.data.ShapeCollision
Test this shape against a polygon.

+

+ + testRay

+ testRay(ray:differ.shapes.Ray) : differ.data.RayCollision
Test this shape against a ray.

+

+
+ +

  +  +  + 

+ +
+ + + diff --git a/docs/api/hxcollision/Collision.html b/docs/api/hxcollision/Collision.html deleted file mode 100644 index 10b9f42..0000000 --- a/docs/api/hxcollision/Collision.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - -
-

Logo

-
-

Collision

-
-

class -

-

-
-

  - 

-

Members


no public members

-

Methods


- pointInPolystaticpointInPoly(point:hxcollision.math.Vector, poly:hxcollision.shapes.Polygon) : Bool
Test if a given point lands inside the given polygon -
- - raystaticray(lineStart:hxcollision.math.Vector, lineEnd:hxcollision.math.Vector, shapes:Array<hxcollision.shapes.Shape>) : Bool
Test a line between two points against a list of shapes. - If a collision is found, returns true, otherwise false. -
- - teststatictest(shape1:hxcollision.shapes.Shape, shape2:hxcollision.shapes.Shape) : hxcollision.CollisionData
Test a single shape against another shape. - When no collision is found between them, this function returns null. - Returns a CollisionData if a collision is found. -
- - testCircleLinestatictestCircleLine(circle:hxcollision.shapes.Circle, lineStart:hxcollision.math.Vector, lineEnd:hxcollision.math.Vector) : Bool
Test a circle vs a line between two points -
- - testShapesstatictestShapes(shape1:hxcollision.shapes.Shape, shapes:Array<hxcollision.shapes.Shape>) : Array<hxcollision.CollisionData>
Test a single shape against multiple other shapes. - Will never return null, always length 0 array. - Returns a list of CollisionData information for each collision found. -

-

Properties


no public properties

-

  -  - 

- -
- - - \ No newline at end of file diff --git a/docs/api/hxcollision/CollisionData.html b/docs/api/hxcollision/CollisionData.html deleted file mode 100644 index d8fa531..0000000 --- a/docs/api/hxcollision/CollisionData.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - -
-

Logo

-
-

CollisionData

-
-

class -

-

-
-

  - 

-

Members


- overlapoverlap : Float
- the overlap amount - separationseparation : hxcollision.math.Vector
- a vector that when subtracted to shape 1 will separate it from shape 2 - shape1shape1 : hxcollision.shapes.Shape
- the first shape - shape2shape2 : hxcollision.shapes.Shape
- the second shape - unitVectorunitVector : hxcollision.math.Vector
- unit vector on the axis of the collision (the normal of the face that was collided with)

-

Methods


-

Properties


no public properties

-

  -  - 

- -
- - - \ No newline at end of file diff --git a/docs/api/hxcollision/OpenFLDrawer.html b/docs/api/hxcollision/OpenFLDrawer.html deleted file mode 100644 index 0ca5541..0000000 --- a/docs/api/hxcollision/OpenFLDrawer.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - -
-

Logo

-
-

OpenFLDrawer

-
-

classextends hxcollision.ShapeDrawer -

-

-
-

  - 

-

Members


- graphicsgraphics : flash.display.Graphics
- Access to the graphics object for manually manipulating it post construction

-

Methods


- drawCircle>drawCircle(circle:hxcollision.shapes.Circle) : Void
Implemented by choice, not required -
- - drawLine>drawLine(p0:hxcollision.math.Vector, p1:hxcollision.math.Vector, ?startPoint:Bool=true) : Void
Implementation required by ShapeDrawer -
- - drawVector>drawVector(p0:hxcollision.math.Vector, p1:hxcollision.math.Vector, ?startPoint:Bool=true) : Void
-
- - new>new(_graphics:flash.display.Graphics) : Void
Create a new drawing helper, which will draw into the provided Graphics object -
- - drawPolygon>drawPolygon(poly:hxcollision.shapes.Polygon) : Void
Draw a Polygon -
- - drawShape>drawShape(shape:hxcollision.shapes.Shape) : Void
Draw a Shape, it will determine the type and draw it for you. -

-

Properties


no public properties

-

  -  - 

- -
- - - \ No newline at end of file diff --git a/docs/api/hxcollision/ShapeDrawer.html b/docs/api/hxcollision/ShapeDrawer.html deleted file mode 100644 index 85a5501..0000000 --- a/docs/api/hxcollision/ShapeDrawer.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - -
-

Logo

-
-

ShapeDrawer

-

To implement your own debug drawing class, you only need to override drawLine function and implement it - the rest is handled internally. You can override specifics if you want, but it’s not required

-
-

class -

-

-
-

  - 

-

Members


no public members

-

Methods


- drawCircledrawCircle(circle:hxcollision.shapes.Circle) : Void
Draw a circle Shape -
- - drawLinedrawLine(p0:hxcollision.math.Vector, p1:hxcollision.math.Vector, ?startPoint:Bool=true) : Void
Draw a line between p0 and p1. Implement this function at minimum in custom drawing handlers -
- - drawPolygondrawPolygon(poly:hxcollision.shapes.Polygon) : Void
Draw a Polygon -
- - drawShapedrawShape(shape:hxcollision.shapes.Shape) : Void
Draw a Shape, it will determine the type and draw it for you. -
- - drawVectordrawVector(v:hxcollision.math.Vector, start:hxcollision.math.Vector, ?startPoint:Bool=true) : Void
Draw a Vector (with magnitude) -
- - newnew() : Void
empty constructor -

-

Properties


no public properties

-

  -  - 

- -
- - - \ No newline at end of file diff --git a/docs/api/hxcollision/math/Matrix.html b/docs/api/hxcollision/math/Matrix.html deleted file mode 100644 index 35c5786..0000000 --- a/docs/api/hxcollision/math/Matrix.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - -
-

Logo

-
-

Matrix

-
-

class
implements cpp.rtti.FieldNumericIntegerLookup -

-

-
-

  - 

-

Members


- aa : Float
- - bb : Float
- - cc : Float
- - dd : Float
- - txtx : Float
- - tyty : Float
-

-

Methods


- composecompose(_position:hxcollision.math.Vector, _rotation:Float, _scale:hxcollision.math.Vector) : Void
-
- - makeTranslationmakeTranslation(_x:Float, _y:Float) : hxcollision.math.Matrix
-
- - newnew(?a:Float=1, ?b:Float=0, ?c:Float=0, ?d:Float=1, ?tx:Float=0, ?ty:Float=0) : Void
-
- - rotaterotate(angle:Float) : Void
-
- - scalescale(x:Float, y:Float) : Void
-
- - toStringtoString() : String
-
- - translatetranslate(x:Float, y:Float) : Void
-

-

Properties


no public properties

-

  -  - 

- -
- - - \ No newline at end of file diff --git a/docs/api/hxcollision/math/Vector.html b/docs/api/hxcollision/math/Vector.html deleted file mode 100644 index e652cbc..0000000 --- a/docs/api/hxcollision/math/Vector.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - -
-

Logo

-
-

Vector

- -
-

class -

-

-
-

  - 

-

Members


no public members

-

Methods


- addadd(vector2:hxcollision.math.Vector) : hxcollision.math.Vector
* Add a vector to this vector.

-
 * @param vector2 The vector to add to this one.
- * @return Vector This vector.</span>
-    </span>
-<span class="method apipage">
-        <a name="clone"><a class="lift" href="#clone">clone</a></a><code class="signature apipage">clone() : [hxcollision.math.Vector](#hxcollision.math.Vector)</code><br/><span class="small_desc_flat">* Creates an exact copy of this Vector
- * @return Vector A copy of this Vector</span>
-    </span>
-<span class="method apipage">
-        <a name="dot"><a class="lift" href="#dot">dot</a></a><code class="signature apipage">dot(vector2:<span>[hxcollision.math.Vector](#hxcollision.math.Vector)</span>) : [Float](http://api.haxe.org/Float.html)</code><br/><span class="small_desc_flat">* Calculate the dot product of this vector and another.
- * @param vector2 Another Vector.
- * @return Float The dot product.</span>
-    </span>
-<span class="method apipage">
-        <a name="invert"><a class="lift" href="#invert">invert</a></a><code class="signature apipage">invert() : [hxcollision.math.Vector](#hxcollision.math.Vector)</code><br/><span class="small_desc_flat">* Makes the vector face the opposite way.
- * @return Vector This vector.</span>
-    </span>
-<span class="method apipage">
-        <a name="new"><a class="lift" href="#new">new</a></a><code class="signature apipage">new(?\_x:<span>[Float](http://api.haxe.org/Float.html)=0</span>, ?\_y:<span>[Float](http://api.haxe.org/Float.html)=0</span>) : [Void](http://api.haxe.org/Void.html)</code><br/><span class="small_desc_flat">* Constructor</span>
-    </span>
-<span class="method apipage">
-        <a name="normalize"><a class="lift" href="#normalize">normalize</a></a><code class="signature apipage">normalize() : [hxcollision.math.Vector](#hxcollision.math.Vector)</code><br/><span class="small_desc_flat">* Sets the vector's length to 1.
- * @return Vector This vector.</span>
-    </span>
-<span class="method apipage">
-        <a name="set_length"><a class="lift" href="#set_length">set\_length</a></a><code class="signature apipage">set\_length(value:<span>[Float](http://api.haxe.org/Float.html)</span>) : [Float](http://api.haxe.org/Float.html)</code><br/><span class="small_desc_flat">* Sets the length which will change x and y, but not the angle.</span>
-    </span>
-<span class="method apipage">
-        <a name="subtract"><a class="lift" href="#subtract">subtract</a></a><code class="signature apipage">subtract(vector2:<span>[hxcollision.math.Vector](#hxcollision.math.Vector)</span>) : [hxcollision.math.Vector](#hxcollision.math.Vector)</code><br/><span class="small_desc_flat">* Subtract a vector from this one.
- * @param vector2 The vector to subtract.
- * @return Vector This vector.</span>
-    </span>
-<span class="method apipage">
-        <a name="toString"><a class="lift" href="#toString">toString</a></a><code class="signature apipage">toString() : [String](http://api.haxe.org/String.html)</code><br/><span class="small_desc_flat">* Turn this vector into a string.
- * @return String This vector in string form.</span>
-    </span>
-<span class="method apipage">
-        <a name="transform"><a class="lift" href="#transform">transform</a></a><code class="signature apipage">transform(matrix:<span>[hxcollision.math.Matrix](#hxcollision.math.Matrix)</span>) : [hxcollision.math.Vector](#hxcollision.math.Vector)</code><br/><span class="small_desc_flat">*  Transforms Vector based on the given Matrix
- * @param matrix The matrix to use to transform this vector.
- * @return Vector returns a new, transformed Vector.</span>
-    </span>
-<span class="method apipage">
-        <a name="truncate"><a class="lift" href="#truncate">truncate</a></a><code class="signature apipage">truncate(max:<span>[Float](http://api.haxe.org/Float.html)</span>) : [hxcollision.math.Vector](#hxcollision.math.Vector)</code><br/><span class="small_desc_flat">* Sets the length under the given value. Nothing is done if the vector is already shorter.
- * @param max The max length this vector can be.
- * @return Vector This vector.</span>
-    </span>
-

Properties


- lengthlength :
-
- lengthsqlengthsq :
-
- xx :
-
- yy :
-

-

  -  - 

- -
- - - \ No newline at end of file diff --git a/docs/api/hxcollision/shapes/Circle.html b/docs/api/hxcollision/shapes/Circle.html deleted file mode 100644 index bbf5cda..0000000 --- a/docs/api/hxcollision/shapes/Circle.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - -
-

Logo

-
-

Circle

-

A circle collision shape

-
-

classextends hxcollision.shapes.Shape -

-

-
-

  - 

-

Members


- active>active : Bool
- The state of this shape, if inactive can be ignored in results - data>data : Dynamic
- A generic data object where you can store anything you want, for later use - name>name : String
- The name of this shape, to help in debugging - tags>tags : Map<String, String>
- A list of tags to use for marking shapes with data for later use, by key/value

-

Methods


- new>new(x:Float, y:Float, radius:Float) : Void
-
- - destroy>destroy() : Void
clean up and destroy this shape -

-

Properties


- radiusradius :
The radius of this circle. Set on construction -
- transformedRadiustransformedRadius :
The transformed radius of this circle, based on the scale/rotation -
- position>position :
The position of this shape -
- rotation>rotation :
The rotation of this shape, in degrees -
- scaleX>scaleX :
The scale in the x direction of this shape -
- scaleY>scaleY :
The scale in the y direction of this shape -
- transformedVertices>transformedVertices :
The transformed (rotated/scale) vertices cache -
- vertices>vertices :
The vertices of this shape -
- x>x :
The x position of this shape -
- y>y :
The y position of this shape -

-

  -  - 

- -
- - - \ No newline at end of file diff --git a/docs/api/hxcollision/shapes/Polygon.html b/docs/api/hxcollision/shapes/Polygon.html deleted file mode 100644 index 1d1b352..0000000 --- a/docs/api/hxcollision/shapes/Polygon.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - -
-

Logo

-
-

Polygon

-

A polygon collision shape

-
-

classextends hxcollision.shapes.Shape -

-

-
-

  - 

-

Members


- active>active : Bool
- The state of this shape, if inactive can be ignored in results - data>data : Dynamic
- A generic data object where you can store anything you want, for later use - name>name : String
- The name of this shape, to help in debugging - tags>tags : Map<String, String>
- A list of tags to use for marking shapes with data for later use, by key/value

-

Methods


- createstaticcreate(x:Float, y:Float, sides:Int, ?radius:Float=100) : hxcollision.shapes.Polygon
Helper to create an Ngon at x,y with given number of sides, and radius. - A default radius of 100 if unspecified. Returns a ready made Polygon collision Shape -
- - destroy>destroy() : Void
Destroy this polygon and clean up. -
- - new>new(x:Float, y:Float, vertices:Array<hxcollision.math.Vector>) : Void
Create a new polygon with a given set of vertices at position x,y. -
- - rectanglestaticrectangle(x:Float, y:Float, width:Float, height:Float, ?centered:Bool=true) : hxcollision.shapes.Polygon
Helper generate a rectangle at x,y with a given width/height and centered state. - Centered by default. Returns a ready made Polygon collision Shape -
- - squarestaticsquare(x:Float, y:Float, width:Float, ?centered:Bool=true) : hxcollision.shapes.Polygon
Helper generate a square at x,y with a given width/height with given centered state. - Centered by default. Returns a ready made Polygon collision Shape -
- - trianglestatictriangle(x:Float, y:Float, radius:Float) : hxcollision.shapes.Polygon
Helper generate a triangle at x,y with a given radius. - Returns a ready made Polygon collision Shape -

-

Properties


- position>position :
The position of this shape -
- rotation>rotation :
The rotation of this shape, in degrees -
- scaleX>scaleX :
The scale in the x direction of this shape -
- scaleY>scaleY :
The scale in the y direction of this shape -
- transformedVertices>transformedVertices :
The transformed (rotated/scale) vertices cache -
- vertices>vertices :
The vertices of this shape -
- x>x :
The x position of this shape -
- y>y :
The y position of this shape -

-

  -  - 

- -
- - - \ No newline at end of file diff --git a/docs/api/hxcollision/shapes/Shape.html b/docs/api/hxcollision/shapes/Shape.html deleted file mode 100644 index 1338905..0000000 --- a/docs/api/hxcollision/shapes/Shape.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - -
-

Logo

-
-

Shape

-

A base collision class shape

-
-

class -

-

-
-

  - 

-

Members


- activeactive : Bool
- The state of this shape, if inactive can be ignored in results - datadata : Dynamic
- A generic data object where you can store anything you want, for later use - namename : String
- The name of this shape, to help in debugging - tagstags : Map<String, String>
- A list of tags to use for marking shapes with data for later use, by key/value

-

Methods


- destroydestroy() : Void
clean up and destroy this shape -
- - newnew(_x:Float, _y:Float) : Void
Create a new shape at give position x,y -

-

Properties


- positionposition :
The position of this shape -
- rotationrotation :
The rotation of this shape, in degrees -
- scaleXscaleX :
The scale in the x direction of this shape -
- scaleYscaleY :
The scale in the y direction of this shape -
- transformedVerticestransformedVertices :
The transformed (rotated/scale) vertices cache -
- verticesvertices :
The vertices of this shape -
- xx :
The x position of this shape -
- yy :
The y position of this shape -

-

  -  - 

- -
- - - \ No newline at end of file diff --git a/docs/api/index.html b/docs/api/index.html index 6b75dc8..7742eae 100644 --- a/docs/api/index.html +++ b/docs/api/index.html @@ -1,17 +1,18 @@ - + + snow - - + - + @@ -39,8 +40,13 @@ $(this).html(' ') }); - $('.tooltip').tooltipster({ + $('.tooltip').each(function(e){ + var c = $(this).attr('data-tooltip'); + $(this).tooltipster({ + content:$('' + c + ''), + interactive:true, theme:'tooltipster-shadow' + }); }); }); //document.ready @@ -51,125 +57,41 @@

Logo

-

hxcollision

Collision

- view -

CollisionData

- view -
- Members - overlap : Float
separation : hxcollision.math.Vector
shape1 : hxcollision.shapes.Shape
shape2 : hxcollision.shapes.Shape
unitVector : hxcollision.math.Vector
-
- Methods - new() : Void -

OpenFLDrawer

- view -
- Members - graphics : flash.display.Graphics
-
- Methods - >drawCircle(circle:hxcollision.shapes.Circle) : Void>drawLine(p0:hxcollision.math.Vector, p1:hxcollision.math.Vector, ?startPoint:Bool=true) : Void>drawVector(p0:hxcollision.math.Vector, p1:hxcollision.math.Vector, ?startPoint:Bool=true) : Void>new(_graphics:flash.display.Graphics) : Void>drawPolygon(poly:hxcollision.shapes.Polygon) : Void>drawShape(shape:hxcollision.shapes.Shape) : Void -

ShapeDrawer

- view -
- Methods - drawCircle(circle:hxcollision.shapes.Circle) : VoiddrawLine(p0:hxcollision.math.Vector, p1:hxcollision.math.Vector, ?startPoint:Bool=true) : VoiddrawPolygon(poly:hxcollision.shapes.Polygon) : VoiddrawShape(shape:hxcollision.shapes.Shape) : VoiddrawVector(v:hxcollision.math.Vector, start:hxcollision.math.Vector, ?startPoint:Bool=true) : Voidnew() : Void -

-

hxcollision.math

Matrix

- view -
- Members - a : Float
b : Float
c : Float
d : Float
tx : Float
ty : Float
-
- Methods - compose(_position:hxcollision.math.Vector, _rotation:Float, _scale:hxcollision.math.Vector) : VoidmakeTranslation(_x:Float, _y:Float) : hxcollision.math.Matrixnew(?a:Float=1, ?b:Float=0, ?c:Float=0, ?d:Float=1, ?tx:Float=0, ?ty:Float=0) : Voidrotate(angle:Float) : Voidscale(x:Float, y:Float) : VoidtoString() : Stringtranslate(x:Float, y:Float) : Void -

Vector

- view -
- Methods - add(vector2:hxcollision.math.Vector) : hxcollision.math.Vectorclone() : hxcollision.math.Vectordot(vector2:hxcollision.math.Vector) : Floatinvert() : hxcollision.math.Vectornew(?_x:Float=0, ?_y:Float=0) : Voidnormalize() : hxcollision.math.Vectorset_length(value:Float) : Floatsubtract(vector2:hxcollision.math.Vector) : hxcollision.math.VectortoString() : Stringtransform(matrix:hxcollision.math.Matrix) : hxcollision.math.Vectortruncate(max:Float) : hxcollision.math.Vector -
- Properties - - length : Float - lengthsq : Float - x : Float - y : Float - -

-

hxcollision.shapes

Circle

- view -
- Members - >active : Bool
>data : Dynamic
>name : String
>tags : Map<String, String>
-
- Methods - >new(x:Float, y:Float, radius:Float) : Void>destroy() : Void -
- Properties - - radius : Float - transformedRadius : Float - >position : hxcollision.math.Vector - >rotation : Float - >scaleX : Float - >scaleY : Float - >transformedVertices : Array<hxcollision.math.Vector> - >vertices : Array<hxcollision.math.Vector> - >x : Float - >y : Float - -

Polygon

- view -
- Members - >active : Bool
>data : Dynamic
>name : String
>tags : Map<String, String>
-
- Methods - create(x:Float, y:Float, sides:Int, ?radius:Float=100) : hxcollision.shapes.Polygon>destroy() : Void>new(x:Float, y:Float, vertices:Array<hxcollision.math.Vector>) : Voidrectangle(x:Float, y:Float, width:Float, height:Float, ?centered:Bool=true) : hxcollision.shapes.Polygonsquare(x:Float, y:Float, width:Float, ?centered:Bool=true) : hxcollision.shapes.Polygontriangle(x:Float, y:Float, radius:Float) : hxcollision.shapes.Polygon -
- Properties - - >position : hxcollision.math.Vector - >rotation : Float - >scaleX : Float - >scaleY : Float - >transformedVertices : Array<hxcollision.math.Vector> - >vertices : Array<hxcollision.math.Vector> - >x : Float - >y : Float - -

Shape

- view -
- Members - active : Bool
data : Dynamic
name : String
tags : Map<String, String>
-
- Methods - destroy() : Voidnew(_x:Float, _y:Float) : Void -
- Properties - - position : hxcollision.math.Vector - rotation : Float - scaleX : Float - scaleY : Float - transformedVertices : Array<hxcollision.math.Vector> - vertices : Array<hxcollision.math.Vector> - x : Float - y : Float - -

+


+
search API (or start typing anywhere)

+
+ + + + +
+ + +

Packages

+

differ

+ +

   + data math sat shapes +


+

Types

+

no package

+

differ



+

+

math

Matrix

Vector

+

+

sat

Common

SAT2D

+

+

shapes

Circle

Polygon

Ray

Shape

+


+
+

  -   

-
-

 
 

- \ No newline at end of file + diff --git a/docs/css/code.css b/docs/css/code.css index 48c6a5e..ac47cc6 100644 --- a/docs/css/code.css +++ b/docs/css/code.css @@ -80,12 +80,12 @@ pre { } code { - display: inline-block; - font-size: 0.79em; + display: inline; + font-size: 0.8em; padding-bottom: 0.1em; padding-left: 0.4em; padding-right: 0.4em; border-radius: 0.2em; - background-color: transparent; + background-color: transparent; white-space: pre; } \ No newline at end of file diff --git a/docs/css/font.css b/docs/css/font.css index abd423a..3e879b2 100644 --- a/docs/css/font.css +++ b/docs/css/font.css @@ -2,20 +2,64 @@ @font-face { font-family: 'dsm'; - src: url('droidsansmono.eot'); - src: url('droidsansmono.eot?#iefix') format('embedded-opentype'), - url('droidsansmono.woff') format('woff'), - url('droidsansmono.ttf') format('truetype'); + src: url('./font/droidsansmono.eot'); + src: url('./font/droidsansmono.eot?#iefix') format('embedded-opentype'), + url('./font/droidsansmono.woff') format('woff'), + url('./font/droidsansmono.ttf') format('truetype'); font-weight: normal; font-style: normal; } + @font-face { - font-family: 'osp'; - src: url('font.eot'); - src: url('font.eot?#iefix') format('embedded-opentype'), - url('font.woff') format('woff'), - url('font.ttf') format('truetype'); + font-family: 'cabin'; + src: url('./font/cabin-regular-webfont.eot'); + src: url('./font/cabin-regular-webfont.eot?#iefix') format('embedded-opentype'), + url('./font/cabin-regular-webfont.woff') format('woff'), + url('./font/cabin-regular-webfont.ttf') format('truetype'), + url('./font/cabin-regular-webfont.svg#cabinregular') format('svg'); font-weight: normal; font-style: normal; + +} + + +@font-face { + font-family: 'cabin'; + src: url('./font/cabin-semibold-webfont.eot'); + src: url('./font/cabin-semibold-webfont.eot?#iefix') format('embedded-opentype'), + url('./font/cabin-semibold-webfont.woff') format('woff'), + url('./font/cabin-semibold-webfont.ttf') format('truetype'), + url('./font/cabin-semibold-webfont.svg#cabinsemibold') format('svg'); + font-weight: 600; + font-style: normal; + +} + + +@font-face { + font-family: 'cabin'; + src: url('./font/cabin-medium-webfont.eot'); + src: url('./font/cabin-medium-webfont.eot?#iefix') format('embedded-opentype'), + url('./font/cabin-medium-webfont.woff') format('woff'), + url('./font/cabin-medium-webfont.ttf') format('truetype'), + url('./font/cabin-medium-webfont.svg#cabinmedium') format('svg'); + font-weight: 500; + font-style: normal; + +} + + + + +@font-face { + font-family: 'cabin'; + src: url('./font/cabin-bold-webfont.eot'); + src: url('./font/cabin-bold-webfont.eot?#iefix') format('embedded-opentype'), + url('./font/cabin-bold-webfont.woff') format('woff'), + url('./font/cabin-bold-webfont.ttf') format('truetype'), + url('./font/cabin-bold-webfont.svg#cabinbold') format('svg'); + font-weight: bold; + font-style: normal; + } \ No newline at end of file diff --git a/docs/css/font.eot b/docs/css/font.eot deleted file mode 100644 index b90fc13007f38e511df6c2032a25e6ee0a8a1924..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14164 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≤Neshk_&^k|bJ-E;Kq!tPcY~zgrEyXt~k2VJE`@i%-^Mln8@hP=Bwc;VNaw#WasSt^_456sIZFb zlrk(f%|iOOT@TtUE55lbrPrzs_SiH~_ zC|wbfrwW=FXMqA)S^v%HI`1oO+tgN?99#m0Oq;auVoVr5<8+Z+G&~L6DbS zM|#*3n53AwX*lGG;|n^g$Kca@oQKU`G0y}jpt16y+Nf_g+*uekgu)k{BO^tXB_jkv zQs5CatbS(_ad3I-1hVjD()6&(5UJwf)R@yh x?*v!;@__9I*20|eL)UV?ggAj9>qx9S;lE0~Q?fQzVibidTimLBe7#g?{ueHCyIueQ diff --git a/docs/css/font.ttf b/docs/css/font.ttf deleted file mode 100644 index a72637494b7aa412a84c0336ed0364e68a0ec243..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35256 zcmd6Q3wTu5edjs%-g!zI&5UL==sjWt0tP*pLC7)>1IF0K1QU#jpiXQsjIaZk@Gy1~ zm#|IRgf`Enw!vxZCjQ#3o22&+a_Z0VcAYe76H8<4q@hhVn|Qn32ic^}CTTaZVYI*B zIrq+tUdB!L`?i2|-{<__uk*hbA%zf4_+^Q~&6{_=<(|f0{ecj24bHaTyy>RR;uTyG zaumnuo44P7$M=5vgHPc2A^g}k-*M;0Lmxl!Q6bDFyng!~1G%yP_Le~$--6>^_a5GR z^zPp-_v83UA&lI;51vRjZHjzL2;X1hdVk^Q*x@_I2mVM1KjttFjO{&s6z8Kt1P@^w z96R)I;gOqueKmGZ2(k0|g9rBRH$U~9ML`@D4~h?p-xHq|U%IEglz%Q7@RP=T24?>UHM$SuZ4&iUXE5d_T>GdR)jK<`&bDASKIO-~ z2XQawKPdFszfkw{3P(BU-ajr{F%n1fi|fQ9u~V!TcZv;Sm)IiSCi0+7Gho<-?I`H% z!}Tq=elyP8gXk9pZea^f0!Ddx-j*}Q-3t|)YNCDK0WmZ zQ@=m;ds9zLou4{4_1M&-Q=gpr?Wwh|e*D$ndiB_=H>Rl@|LQ*yI_V7~4GhPh+CR8x zS|FBR1cD(EuB&f|G)80brbMziwV?)3a!C?~B*Wvmg3R7^M$?q!t?N(-77EIW6vehdRD{pLqLzapI#N z`~4?tue~Awpeb9rrYeT+ehs!5AL=_=7t5fKRdd1w>tO8?(|>VvZ;ST zpDmZCzhl>D`)p(RZ97J9%Ixm$v(4rAElAtzw~uz)>v#9r)^a}Do#}q}=znf2?QX+; zqgUI0w7V_SZTqsL_T~q7s|&k#V?5vThP(Fk+5Y9uLis_=p8nunceU99!vvN)J?hl@ z%BkS;cq~0K&}WC1ryt=YU%~ik+gx;OCT&}bx7cF)=-C5j_olgXU0Zke?zXe)Xoo)H zgkcR`v@P0=N$QrTzoF2nU!ESY1KGPq)9ITtoA=(I9!>Axr-$Hu4V)QMr_ZKuKD&8u z=4|?GMopKo#g0*XJ?;d4oYr1{fCqRcqGnoqX+d{)Tl&&jkO2?f3fS&+VFP@)t#NrK zeaW3XlODb8j<#-F?jAi0gl^58&7{xXdN#9{kPsdICOlEHAr3aghyZuuGY|lvna!EK z_uo^C2_J1*4kXV02FbQ%f97n!PH!Jw)Aj*e~58|7`!M#a5C{pQVg0`m0P z9iy3jfIhRa4I7!+2+FVDF-vD5e3EeF~aq!=-|+{RhZ1;6?znec(I zGmX&7O;FAKzB^&b0;1oMVqi@%U?qQ)bNs&Vt|^)Zc7$j8eEeRsb0C!4Gi#y7-qOmYM4uPH*X;6~a&j_XD3vTB&zB2V^Mv0Jhpip5 zti}(BjRF9PtnJH>1B(VLi;>ltaZ4RaJIMLQ&8Qf}MKkJHGCLknM@|US4z6gzRQ!AR zGh3d*$hVZA9u_~nh+0l`Fz5Zi3eZwbl!#XS3(VqB3b7yCQvPxb@6|aXh zr(HH{9&46M+p6KQ%W8;|$K1o8(QM^-y;FI)2jeB-rHcV2kj;G9X$)R=QZnl_idftU zBt{f%R>s%K;lbg-d?I2d6Y=I$#^@c|*_Sj5iLS0hzRzDM8HGpX(*HWvYgvb%p7>w) zK3*QX+#(TsOq;6%fjXv%Uvf-$8Z(Y*WLQm;%Ex0XjeglX*gKd>bYdpM-&-ivPE?ZT z<+)iCVUBymnE9yrDN%>$$QH1ld8(T2%N2zTXD_T5;ZU|H1$U(xg8J1D*x^gIk#j`!lP}39UXuB8>80|dL=r$e zcY&rEcsdgioNW$}LtzV3fh*=E#{kCs(fk_Axkvuc7<%d{cYXk&=U-Z5ZE#JQ9alOOzJwARqyLxrj%xBlE$toTm226gyIT`Ij+fG3a@JQIlXwHJs3%LZZ@ zz)qln;ue5_N;^4VTS^D*rd-i#BercD zu#@?*G4ipLU0qs}og|8d0+F0NIXZfhY*xIDgSQWZw-Iqf6dOF=jz_EpqakYt^G*a7 zBMiDn6y5z~NaKLra0zC_sRw3(T(Mp;s~*g{VAeMTvs7u@7@$@a4U^9qv>Q=i-C%%6 z7VYQoP!nX1&NZ1yW`^R>xAUcZ9ve$s5ws#o1F3@^FS^8gMX|HOi_Qu!VlFSnQ}vy( zhOCnUtLjs{T;E855x#*pjfyu;B$3M%O=b1WCWw({l+y+Q?soZNcaGo~kamD0se0@r zYxv}i)~16W{)^5lwDpm3E7QfZShRw|XBi_2$Dmo)>b`raxQqfSt4 zA$FYrpYf2>U|t@N_q6zc613w&sKrM~>s1Dz4F;ewXSYS2G{h_fT~N$$mH>w~%9hmv z*=kN>&$ob*6>0$5shfS zk_d=!Gsw6wXE#TkHjuG5=fpt9x|}lrAeuqOq8Wt0M`YB7{ZOPyDe0mvP&HyIC5^2d zUOZgY$k~QA=IJm3rp<5JCLt9{L0y7+_E)x@9NqQcX;Sv|sXIqcmj9b)iDeu0Sf1+} z8Rxj4#9y_AVR9nSNrIq|B;ZcSu2H~-T zF}rTWZjL)~B|x2ZU`41#5!OmZg-{1Nm=ZhK1&5eEJmjU0q6ntV4Ku87Tm*t<9-+JlNKKVHX1Yp<* zqWpX4X$Cc=dquH_S_2Ky@kSa(NAy@UI!lz%$v|5&QKzRaYsYg=FDL~Q)C=9I(_zR` zpq+u%*d~IIUTk6N9kB?iQx{7?br=nJ&MP7V_@}JUFd}LE(^*A_B(XO_VzTl3BH;$3 zgl%KE-heFv@s$rdxBaf(Ph~T=r4nQ3vHL_evo)1a_NZ_LF$VA=i-&+$K-7zW=gN*5 z$mex#;76Gj8sWDfLk$YEKoqV_C4e+XPDDp@>t6in6O85%#@X_P2=1`!U+`V<2kM)$ z7lQn43cJ2vUXcD^y&Km#Rshz)VD#lkI*~BYW|)^T7n$&RgBeTaC-84=`TJ`N7YoQD zUn{_(-7dlXSPeNbKm_vT~@hw@;qmd8)6g ztMAm#i)Xs~`nu2P-@eCB?J95U>NEPf%3F7yn&|76qIa*|ZJP?eTd8Y;?FsOCF=YS-&!MJV%NHz-6Jan7%UMs?zLcg7HC zq<9SLHXigT9tUaYkeMM5tqUQpLUslsF*{Q+46`$48N6oZ+~iCrW(-fdllzRZGUTg_ zG|_jyR4$atW6Bm*=MRYl>{obz_Ra}}bjf9K#cCPrMv{l0eI@<;)pJGx!!UlY@)z;3 z;&0Tm8e!~&l{*guw(&%=)qS}rP6zoYSTPCHiLoviG3Cj`_A!Vp`ObrIW3LsA!c`>yk|kwH+r*q$ zoRJFRu4h8HXF%`+z&VFpLBzfEpht3#FT zdQEw4@sjXr;d-rSG`G6)RtIxiuk?)BBP}lKaEhm{_sYr^Io(@TZ7zLOVdtr<=gk$$ zKlPC|Q$IH|;6Y4uh_{Pk9VFdu%u}_sM`|N^I<-dydEic2_+uTq3tLrUFlmHPVz2}7 zLk)EEVF-1xA(2FcW4FbefZxpwbm65rpIq3>NVztn-LmUa6=7G>qhEagkXuZVTzi05v1(?F(P~=dg-# z!cn^pF-|CI2VW3&5Lz3ot5mA;F`o((0?^aUOp+fsFj2VA3k-}?JIjTWtFNA>xibd_ zx)2!*DE%FQ{67iWFBhi-GH}?KB_Mk%W11NJU3b`Qg_Z3l2l~hX#52w^Frgu5FN->h z0B%#x@!>>sj`eV788yP7lUM{Nftrc!gN86NaJrY^Qg%5Lw=j5T9uh`8Z&>Evi( zW@V)yRmBCN1y)jC1HShF-vA}u4}7(x3sh80a0khY|B~Yi!(987xke4P==Z7ojr9^8 z;F}2U=}P=?y^|Ky{q?+BN`XD`;)g~7pM_QiU87P<9w8X9sFGr&L|%!b4yJ?!LuPn( zWW=dsbc)Iu<0yCrRU4#-Sh#p!Y4zJym!7%$jLgGFoMWuSt%{bUXqzek1=A0Vn|}3;<{RerH?kEP{)6W zbuXTK{33ooe(vJ=$9$i9ZNE8s1z8l3x#h~U=&g}cSHSxT-~$7b;iDn-thD$bJ4pB_ ze1%=!Zj_9Rt#fJ=Pl#v6UG6I+XZ-j4daGH55`5ThtfG?YZ+lINe`nuvT`uAuZa5O(4u6w z>|&`!p1=Ajd9FM*VHp!f>GiVq$ET)N8d227L+HbRG>@Z6h-+THfpODa-_kzKUxx@q z1*?7rt8i*`XsCX(f|fx6u=|ueH!)EjEBFr-3cq-w0C*EqL-MEpg1Y+)-}{%;-MNyL zP<40zfuFw|7}WSgr&h|R6+R1VX*6!?oSrmNs)M=|fKPT05&nEE%Js*|LcxVzj|C+) z9`#M2X0FyQY%@PD1EQNLJqqSf7&D>@=58S5V`@B{Pi1-o`H9kmbLNayDwm&lLfOq% zd?jPZKY?%pV_^-&8%VE4pyE*Pu76;82f`~j7KVCd;@o5Y3B@b)`GEiDkra1gtrAsK zM(lPxuTuR+);rA5A)|3V!~ z<$c-JYntC2txiDg&aFl66 zsI(4PHFwDvmI{I9u9DH*yYu+Y-e#k+Qz`+iY`1mLTnct<*0?00fQ9Oj zG4}dL!_aMoVB3OnLG5AH5qh%&e0~;uPGR-0*i4_mye!&GuM&+j?Q?yE;Kwn$Q z%bIlZ&6OpcjR9?^iA$3f5vS8og}>VTD^KUK1EGyu?9++2JWuA(iIfZct=z~op5z&e zvG$GCbCxWNjR*>gA%Z%F*rI39XPVi%yk;c6a(iW&4{YJ#lSB}T%+7&qTw4#=yUZ9<-A-bl=ent zzd$f(wY^;FG;%9v;VOvGVu;X?7B5GzJHmeQ~4mBqk_or|IDZLf{n3n5CW zyxZmAD)Ufpjcg6&W66kQtAuCBs)B`ld+9n)q>QSV0bis5)3jfS*kP#3QbS%})%)o( zS9<-otw)OEMwe#?YNV}NpXm~Bar4`l&Tq9=VPV8w7E@Lo87Hhd3NlKkxC|D@5(gGw z>=^Cwrb+H<=HW`TaWxD#}L6$zM2<$hmB2P7fsch?l zMJ@GLnHFd}Aeob~&OhkpglheZoTP+R%izrL8Mf3E`T>yXR_D2L$Pif=Q{P0ri)+>) z^jzkU=P}7pNuC-m!tMhuAS1g*epxhC0B(jLn2ky>11yEAY6(O%35QY|KV2vl5C&t4 z)8l>?nenGe=X%b9Gh8!O%j0Tkp%Ter8iYNncHpC~TDk_yIo#R@I}Xs%H2Iz#C98C0 zQuQ>Qm+yMYoo5RsI}Lp5So;W3@=+I56M3~6Bt}@Ar`Y?5hu5Wn8Iqk;vBg_T25qlg zVOa-Wf5KY2x z&y3rr%lq;B1KHIhOXYc*D9R9Rb3xhW4n&%$_@m7pD?yM@k9_?QAu-^2@(zfJ!T72p zsun0bPu|->PmYx$*c~T?fI~Q$6eOvA#O`N4#-Jl#p=L6cbp3cQRv$YJ#$KM}K%FYF zRb?j_?^~BmgernkE}$Y_BOvAdHBlC7wqLJrS+t;eQCnC(S&^G*xUM9wYR#TOi^3Jf zB!nz*gkCIJ8?`KTqZY=J|FWnBo(0ZPg^zC3qLJ0McmAk_nh}ckb!GaZ{?a}2$r=P% zFdVC3uY(q9hWs?qZq25!NT%!j(1~{RKPjE4aI_g1H><9&W<)O1?oh^|T^omX6{R?h zaIc-fHQKJtL8JC2Tv+$KNtK(KxfFdKt=1uL#feC~4}jVd;OxPB7R3yuPlW*)FAONE zEC&r##iR;Cl8A-JLme4rIUxpFiw5j^)s4^sRgo#kW{XO>SujfjsThI(Scq`I~^}Jb}m#=Lx>#qpbWwC z3PxV*mOf$|s5WuGqie|{4))PWflxWS#u$IZi=ItmNqeV0R(3l)RhCcrRv;#OtJ}My z!ZDu?$IzJL_V!t1PbD%7!C-UsNJVC9^#~3ysu(#vGK1$}Oong=&SNMRMqD_CKB;kY zg<1~6>dDfzaEpe5MXd*c{++a)UUo@`YtVj1QI6_T@_{}v+ln&$V?RzD@`3gh$D%;A zj@V5xy9GKQ)=8s^+u?+n6H?l10(WS4#qL+)^wNIg;?;abQ;k=!7F>~U)MStf8~XvH zU!2tSIIQiU6_Ry1)5_-oqfX5kCnE7P2^aum8yD)NUt06i)2dF2wO~K$q%vw7FFd#I z&wsj?XB}w-QD?&`AMit=2@At$+bkMBzpgAH9yeJCGBZdX#wI7Rl+7g$)QJ@RKt;;{ zZ1v)_w&;u_2-^i|`U5?w%A$k|9E(9*b3#Zl6S(>+a9`0NM{GYq@^MWj2*@16$GVr{ zt1Mb$m7aAkE>$-XN(Cs2T?*DQbXk`Wk!y%G)aY>{+*6l9)9rw}POPnof5>wmKvv6^ zT(S&ebrNA4f)Xc4?=J(i?d*_nL!nHQrcM*8SSd`W<^-V((1`W2GX6^Jan5qNr1)4b z9>$!t{L^*A8T^|;q6ioB>tC3ce-X_;0oJibNEULdR#q~ ziMgSw<~OJEL(pwDgki_e=B3Q3?AqUYZ#27hZT8G#YqQ30V&&%6N1pM&ycUHJ^LMjr zU;eW*<&R|7VxEIjt5B#JL)@OiJgOR{0&@oEx|5d4_QBGNffYZ$I1R3T4VQUoJgI@W`+ zi;)d1QngCd&=#;57a33yzv|R@2Cp6k!ga9cpwDop9A4F&3iQi>fANRM6K`E~^e3yw z6WbRb{fYd`dlt1MR&P0~H=ud-y#^mR-CA2cL?btwB;ArH*3`L9m>IR;_Rs62@NsA^(Ms5GI(TevJ z-hvfp6Ez3bL+v)-X>J)HvF4NyX^7DZEk|ccS>+st7^(CR0iI#iLF7}vM|2yJ{Lu7v zqQ7;aB0VzQ%?0$gPn4)`jG9YbRbKe^I3dBJ(xPL^Ul&bi}Gv#A-p>hc^h>TjZZWwpxdGVL#yNbxn7XUdB}2MKR^| zW^@;^^8p@Zj_#tU>Mn|+yQn^Z-*6&P)m>B{g$be!Qr$%tj9|EduV^@uR+|;BYJ*WK zW6o$YGEfM5Mkrh#i83rS z;@Y{>EAwcrhOWIY8^nc3z9co_7dU`XJc8BKCUpLo*MEY z9YOYvKKdYfi1doOz&k?@(MLTIYl2AOokaBV1uGFl|28||*hO{?8P(ERlzs{)Wi!U+ zj)>~nF_>e{5>G4u=93C*Dq>9^+4o!)iHX+)#c?k>Gj`zE@(xO&UTz^)&$>taQ`8_Se~Wt1wosMwe_JzrN#ljp0A zU;dJMef{4MeC7Q4$;nD%nhy;$2=Z#-i;Ml&qF)n@EMf>Y!8t}FlI%BXkwbH#BBIj} zM-o>TgJ#YqVG~y3YN>b*G3hhEiVB?DL8k#dch2kA^myIGbr*PLOaX5U;U%_9P8e|3gDzn-+9JP%rQw(uk4$4L!~J;IX#Dh<){@7i*Ianbspm04 z#-%}>SYJa0z9EPAUHFDv2#nDkmu~ljrTd%NAsoam8!2>sm6d07!?e(@Z33Z5?$-nn zQYB(j*H8RkS9YLFY;)h}YGMw+@JF>9sn=7SC<30SuGX>Lh(-7)RJ~}1>w%!1j5!VL zgABxr7E7u`*`RsB0vd8x3wK;BbSBATt{0yhgNf3M@Z}wI(49Cu@x&aYhd!w~ zimLPf+w0x?w+ovTcgtThhpbWPnP?jB9Zn6W0;xc6;O_5y=M&%l&d0y~?T>%w+eX6M z!*SKeOsJUR*10;Ubdc!U0KVNw#b-HPy(1H0J902qj4@<@Bbld{ii%n3r^+A{pVd?4 zPqCKb`Mg(tNq87|0h(ycg+{qIWhAEecA?EAP=V*~p=Pt-@pYA1DpUPs6R_=#_(}^Z zjI%q;Qc9VkYB{c^$&77!)GJLTc1r|fP7F;0pi!|Q&iAS2hKubl70~=T7@iGXi*Ah3 z?@4I*noxlloed#d;1YQ!h5$GTldj&JjeHNyQF$=pwpeON;&bNYJGGmOj8%!fG$qYXu%oOEjWWLPUk(Vl>wk= z!NEH?eSo#ng0m6_89IwdYZqm)FE(zq;4>+-Vs0Z&h>3EdA1wl1%tpEq+i}}9@DGUx-ADbyGon>>9pZXNQ3jyrnWt)LYsNolSrG|_9Red zU@)gC<20^-EIOJt%Rrk!(q`aVw3*(fM1^`Ytx8Lgy1uD)C37A1&!f%5kefy5u&a@q z<)F=6U0ZoAGI@&3DvFF#--WPou@;)eQPryD2@PI*bcR8j#dLX**7PEhWH5HYYU%Fr zsDot=;Vk!BxbmRQifhrP;uNnfI=a!V?ac{~`4?3CE6+}oAACIvhUz@>Lake?#BWX4 zt~4abUYU2gU;^@JM?tZ8W~*DRo()%t22FG7y0HwTb*<=c%I82!G`!hEIp;c8;dIYi z-}Ih0YY>F$zZRhwI#$|5RKJ@tEOYj}q3d!wl_usDBr7>FaYZkW>E<`{0cD1eL66`w zZh6bX`u2dh34I}dA?&sR`$lvDf;ww+MJ#lpHn(U!663_cc$4ntTs~l5mv=05lyAms z2?O?)JikXkVpiJ)rM=BFP~9vk0fyEf#U+d;){ zh@TT_gV7p{6@wO92x+n|G%m<*q7>d7v)7K;!*OTjjg-YEyi16eu^kI9vd!C0m|7gr z3#F^DD4fp?;|+SY6QWg9HGI$A4>j`4>7{Ge?p#xPrd)igwLVpsMDy4Ey{WI(!?f*c zH1aF6t1ph1i=`J=??mTBdHfabe6w)6xNfKJX**qx*ZaF7=-FGkW_9x^cIWL1`%gvJ zEtQXR32*GhN?(=j_Ei~T2fi<%`}Nwmn$e70XS_vGzSyi@Q`Sznm>~)GUcc`@V zmCxwPv8lct^tA6`^trW&ZgKbxI^DY1>DF59bX%zOkDYF;aE)zTA|KGVe0&#@c2@sj~aisd@N@Hw>o4xpP+^bD3wkynEc0$3@~jb7PsJuRt3i5=Qt& zy+$`vK-IgpF4E3|Rv0zikLk261ituofaCAMPOppjo9xNt3(r^+Qa#ah0<-y9!jk*U z?o12oq*tF%SW0{?1ED5rCpKy)ImDXNYCQ0IsvdLA8qaprcov`@!y+L*)S_0WRZc2j zaK{|h)h$&wnxi*Q)sIx%&r*;3-7X8RkbQ%!`0Ofu9i=qYsCQmVp(zS{ z%(Lq~Sh`j^F}vE6M&F!fJ>HOU*VWCbr$Lk`;ses7PTbU66L>XeNFjzj75A$?EznJWBMcdo z>eOmRrF<82b}bfwSdQSEW-T$S-umJ(YK+s!Pwa3tft}?w z4P0&oXs#x%R#bpG=4|A${-J#3ccwLS!Pc?A3^ZeZSr;?EN{3ko1M+H{nTES@dYc*H zW}De~y|2Bai#{B$(sTmu4#M3&8*csCFt=#MV0w1*SsOy@hf33Kab|(QiF$D*J+)T1LluaU^|Touvx(6&z0Qr`*Im#!>((G(xare8(lsK z+tP@`7}P2`>QNF*Ia13zSjO=LssY%gx#W|<(hlCFbJ9&P!qJfW>>G_R! ztMuY?v$_JmIAN6#Z{9UeZ=hl6*wd?PF_&40cNFIC5K?U6m!xKN2(d874k3rht=$y6 z;HI{3rcsDWF=w+-3tayjHVj!`VyBC)dFdSN?s?$WPN6F|8+7Ja^aX^zh!l%XunDnP zcMtcFnP(tU*Y0+5g=D%!YN4h{u zy$*{t`0+?xJirAt7EYI`(5w~AX^rxogYm|Ces>K^XvM}Z<_(SL0z~JA?)F!2&2+Kk zkit7^c4O>9z#nhY<_oWoK$TE+#a4YFOj)rMIv4b68@59c^fh|#%evYWOYZxpK{zTgeVd0B|7PM*z zD*zu6cK3kYk#~CG_nULY-fm*k%RZFofV0Yf+0G5vtMiU8pce)|cRTfH`JUh&|0_7ec)W@~c*g%q`8u4s zfa}|Xdw6ErpQnr;icK8N_+#AuUi=irapQh**c=tRaC}(4AbR;@{*$;zJ|uP-zmISH zaJyLKjsGn+8?HZF^eoYx!?7QW=Z&-ewd zbNeIxW5#iu75n7xii7f{sc#xz*5|Evpo6CsWAM7belxb{G6Jnfj6GAY@fp()ZN8}J zHogXr^IwGD_yf^pq{S&CAQIR{jsGn2nD-U6#W>jR;CPsO6TUE%P-Ej*!F?Cz{yg>{ z7h9~)VlLkIzr`l+9^+*kzbsZrTZGlMeN$!Vp<#?nT{f_9d{$&I?g0U^JSL3VV_ryOL|62T?o8H~@Qer{kBS|Ycn*2udg68|1pG_rF+fq-Z zzPBL0VA+C$3m(Vc=N4RA@b@i7OSmF9OWTueKW<;&{%HFTIuaf0Iu3O_ z)lu%;)A@W?xNEfQSl4rDBfTU2hutf?zr1kg!XISDdpdhQ*z>bRg+|eZU@&3i1 zUR>_o)BD1bB}?AFG7Vf?-Y zXO7|TeaPsK<699&ASG$B6@Ab9aW0LkN7UULuswn6_hEYg=QrZ_n7SVp0B28NeLszF z>v4n=YI_XVd1nsq5f5U!1b3Xk-=pGsR22vC4MTk|xBA|GKv2NloZ$qbjx@f{$C-`+ z8bWtK9KvsXHit1+;P35t+h9BH+azuUNA&MEg5r8SKmD0B;31TKs1WyIJJ+~rcjR4w z;TT}J&&7OD-A(-Xcjm~`@qGZ#9R+sxs%MV_L(=vH{=bKJgM$4o6*OH=;>v!^^f2gj zBd#399(gpTXh>S#sOaNC>&=`-UOd;VC&BGQc>Xx9UJHVLj1k8FuW(S^U*%~UlzssG zIRR)XGvqBtOskRa#qkjwY1z{7lU8Zme^A|f2RO7<(dekUw|3;M7^yk}C2%ICR{(DQ z5Vkw;JZJYtK8krBz?b?DV2l$ue+qm101Ks(_h|{M-hVITi84=!dH)IQ6XJJb-;;N5 z><1ODp}u zIr z7HR;chgNQ{Yk4UDRXMsHdPy0YUy`Y*w}V<+m9~0XLpz#=G@XEi9tIr_VSFvAr*P#M zj`u5@x*wy5v3~$Ig0_!#;INvJQmbL1H94e4*r%T5NcXAxwcKk7pROUtm5ukHIEhh@ zs%Nz>XskW!oQ6($enVTmFd!(nI(0(ngob133s!OyyM?lAu*lMir1^k5k zu)_Zc&J*ebxJuox>LBT)VSfLufq9L#kD6B4P1(qVFPYG{m$_go(5xeYNlQ&K$@IFPOs`c}H`fQybG}LIVpS6&X?sG*fq`(7sinR7H+Y9)P z0;`8X1#KxkJa{i7h$<{q3+Z9c*h9;$r_Hr+YAMoJh}V1^(AHuTywPSA-QEg)xm9`I zI{?)}6=iGtJ~J{~=*m<9Skdl~;aJvloX4I_up+RnL_ zU=&8~Z;tMs1X9~6KlFXn2lDS2;xSE6ZEcQYOxkWwIy5J>?G7t?dp3i%m3qi1j~0|t z?_o&&r$yi~b@4dvpzI$7J+!Xrd}k(?wY8!B(_CR~db-ZmMgiLZKjmXSK6tWJtL4lN z7{N}r)P%{yoR)yLg>?3K8O9T{^8;FRLQGB2QLg5T2m9>`=P}Gh2o7Pi>GAe_aC=hV zMIAcg_Oc-z2W$pBb4#V?^BHZ>U-B+Z^W%```8?6J(uXy&CN1Vme_y?4w(OY|WFiK{|%ljGkPzSV@lHd9) zV;Ew~+4bEXteX0@9Ad;Wozk`Ugkec2`SVMG))nd_^^WuCdl>;}`%6lAF(6^oyz-*S zDn)cm`9_lA*;snM1MoTY(nsJ8X&;G$C&wOVHz>N17RRosW#j}c@|YT1`!SBLv0)sk z&uLFRh9hb(XVmAZN2CDbRQkU|;N&S>)A=Rw)_kq?aMWd5Uc#;;PugGV4W*vX)<#>? zt@HeJ(%3T#+ks5wR^(jF&6ta&@xMag|L;=!tb){fitP#(M&+!cc-pG%r;bdSk&(|D zcS7jJMP3}}d1@^Qx?V&1@c5>qpXpdXfKh3OC%S zk?zB8T%xTYuV~J(`oyDZw5P9m7J<*rANBEGO1$K%6O-*CEgi!muoWavFEnBohv?r7^U7ZM{ZbFZ|4V2(D&2i6v)OxL% zaOh}=@;%+ga1`2Y&dm9AZpM6`G$I@`Ee|QpyP5OMv^iRLu4SopWUswF?TqK+YqJau z7kR}hA}c02h50W(=X^Yys}?pLwwYPS{E|iq(~|bfbTZS za?;bly`by^DhH|FuldEQq8A!kbP?I>TAYmP+=^^k&TdTe(PdP7be!TpS7>6?j__L!7??YnhUOxg1!vq}R-{`5Nh zeIM@UTskHtB`L=T<{X`NhtP6HZgt#AdEBq`#mg48CR8!dQ0!A9)92GNRUfxbZXZ|jf^p7=Nq+HdpsiDs@$!O*Q$5aR#QFiKiePD z8#4aXKG@69wGYsk(0XVLwdT?jllQcalmKRP)OhNOhKpLtIus*p@`qQnmkVE0+V!Xp z!JZuet;qpBH!bZuF&k?pl+OK#r#Nn{ERiFWO&$Gd8JLS6*Oo5tDeXI|v&>Ct^1`z} z-o3i^a4qejJk8b~?O%tc$&JUs+1`;9n;ji#POwri^BV8hR`Oa|5F-oL(5YEoTtE%= zG_5wurX-Nt)I_auZ>CB?SUeh6XR4LL`E%FW@wIeO{mPcv(yB`r~vOX&&ns zlQxdliYq9GYPj?uXv}IWWr!B0O8HuQGc(rFmff?<9GRAuD=;3fwSU)eGsn6Ews0$; zz7-aO85yCz1$(vYV|O6p-Hh}6KkB){lvdBB)q2zIsJh&WmF1i8lSUT10VC?`3zg-1 z8?JK1+wq3-PF&Gr?7)3od)tjO96PO!d2}1@=NdS5;wCZbu4yqx?bI(VcG_p5nY*<72i-UJ=rrIA5K0I#jpf9zEY?K%wb!BXH0#Z@}1G zOXOI))%>h%?!>%&iqCOnk&te{&vyLYfva3$yc19Hh-dG_c02CVD~=qQP!ZZ~xOW@I z*rB#JV^l&wYO&fuS}{Z3j=6cq&46pCf`T&pY^+;u;1b)z|WEN8RAXpp?u%yQjq6( z53wOty?Zqcb)ACzdn>r9@6h9gXJA3R-lk|)rMjjwA*7seMz01^DQZaRHEZSn5&o~y2)&$bYH zEN^Z~ZWVXZleE+jlFOPJ*B-YYUZA%BW_snDy*JDe`c-^1hMoiBxfQf$ZHV;-9c!`& zV-Qyu!;oGlm9@{IcP5SVIrKveiBT~;Zv03FG#c;BEM-zn=v$9r0I!**uyPSPUOzm%o=IN9zY3?B^kTD-~qJ;yS$Dcs>3X_BHqp;X3?(DC>d6jY>{8D~oWe*aCgu z3a-8QE0^;e9QGNe24xW;%@Zb?Uk1JjQC^e6WDa-R(+uJLGOxx!YlPd!4%-akm@v zc7;3ciWT9)ePbt&9oWD3_(6Rsw^?t8)b=KT@T{ErfGs~PZnJ~iM;$3YvfJ70&yIH6 z(cQP%i5=K^-|i0EpS^1o|CdGjCfm$zvi<3so)f0|Lt)^52f?wA$9`kTJGOZ213ld9 z0d>Ez%ss}tP3}OU^i9QJz`$Gln;*nDVH}34hjn}`EN{VM?hW<0q3-$0VFM29BbCDl k4jZbEH}dg_#Fyy3$D_ERv2w$1JCTJF$Q`M`uL<#g0r^V|aR2}S diff --git a/docs/css/font.woff b/docs/css/font.woff deleted file mode 100644 index 351f0d69b30f3a19cbb74b16059d268f7f1c5c58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15988 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 QMM%E?bSPs%g#ZBm2k#WobpQYW diff --git a/docs/css/font/cabin-bold-webfont.eot b/docs/css/font/cabin-bold-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..4dc84b59c3c43d93b48ba7768b4e752693c4c5c9 GIT binary patch literal 23977 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