up3
Build and deploy / Build (push) Has been cancelled
Build and deploy / Update Contributors (push) Has been cancelled
Build and deploy / Deploy (push) Has been cancelled
Build and deploy / Build (push) Has been cancelled
Build and deploy / Update Contributors (push) Has been cancelled
Build and deploy / Deploy (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
package dialogue
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"github.com/go-gl/mathgl/mgl64"
|
||||
)
|
||||
|
||||
// DisplaySettings holds optional fields that change the way the dialogue,
|
||||
// particularly the entity shown in it, is displayed.
|
||||
type DisplaySettings struct {
|
||||
// EntityScale specifies the scale of the entity displayed in the dialogue.
|
||||
EntityScale mgl64.Vec3
|
||||
// EntityOffset specifies the offset of the entity shown in the dialogue.
|
||||
EntityOffset mgl64.Vec3
|
||||
// EntityRotation is the rotation of the entity shown in the dialogue. This
|
||||
// rotation functions a bit differently to the normal entity rotation in
|
||||
// Minecraft: The values are still degrees, but pitch (rot[1]) values are
|
||||
// whole-body pitch instead of head-specific, and rot[2] is whole-body roll.
|
||||
EntityRotation mgl64.Vec3
|
||||
}
|
||||
|
||||
// MarshalJSON encodes the DisplaySettings to JSON.
|
||||
func (d DisplaySettings) MarshalJSON() ([]byte, error) {
|
||||
// Yaw and pitch are swapped in this display.
|
||||
d.EntityRotation[0], d.EntityRotation[1] = d.EntityRotation[1], d.EntityRotation[0]-32
|
||||
m := map[string]any{
|
||||
// Translate needs to be multiplied by -32 to get a rough block
|
||||
// equivalent.
|
||||
"translate": d.EntityOffset.Mul(-32),
|
||||
// Entity is rotated by 32 degrees by default.
|
||||
"rotate": d.EntityRotation,
|
||||
"scale": [3]float64{1, 1, 1},
|
||||
}
|
||||
if (d.EntityScale != mgl64.Vec3{}) {
|
||||
m["scale"] = d.EntityScale
|
||||
}
|
||||
return json.Marshal(m)
|
||||
}
|
||||
Reference in New Issue
Block a user