mirror of
https://github.com/genxium/DelayNoMore
synced 2024-12-26 03:39:00 +00:00
52 lines
1.4 KiB
Go
52 lines
1.4 KiB
Go
package dnmshared
|
|
|
|
import (
|
|
"math"
|
|
)
|
|
|
|
// Use type `float64` for json unmarshalling of numbers.
|
|
type Direction struct {
|
|
Dx int32 `json:"dx,omitempty"`
|
|
Dy int32 `json:"dy,omitempty"`
|
|
}
|
|
|
|
type Vec2D struct {
|
|
X float64 `json:"x,omitempty"`
|
|
Y float64 `json:"y,omitempty"`
|
|
}
|
|
|
|
func NormVec2D(dx, dy float64) Vec2D {
|
|
return Vec2D{dy, -dx}
|
|
}
|
|
|
|
type Polygon2D struct {
|
|
Anchor *Vec2D `json:"-"` // This "Polygon2D.Anchor" is used to be assigned to "B2BodyDef.Position", which in turn is used as the position of the FIRST POINT of the polygon.
|
|
Points []*Vec2D `json:"-"`
|
|
|
|
/*
|
|
When used to represent a "polyline directly drawn in a `Tmx file`", we can initialize both "Anchor" and "Points" simultaneously.
|
|
|
|
Yet when used to represent a "polyline drawn in a `Tsx file`", we have to first initialize "Points w.r.t. center of the tile-rectangle", and then "Anchor(initially nil) of the tile positioned in the `Tmx file`".
|
|
|
|
Refer to https://shimo.im/docs/SmLJJhXm2C8XMzZT for more information.
|
|
*/
|
|
|
|
/*
|
|
[WARNING] Used to cache "`TileWidth & TileHeight` of a Tsx file" only.
|
|
*/
|
|
TileWidth int
|
|
TileHeight int
|
|
|
|
/*
|
|
[WARNING] Used to cache "`Width & TileHeight` of an object in Tmx file" only.
|
|
*/
|
|
TmxObjectWidth float64
|
|
TmxObjectHeight float64
|
|
}
|
|
|
|
func Distance(pt1 *Vec2D, pt2 *Vec2D) float64 {
|
|
dx := pt1.X - pt2.X
|
|
dy := pt1.Y - pt2.Y
|
|
return math.Sqrt(dx*dx + dy*dy)
|
|
}
|