PocketMine-MP 5.19.1 git-5cc1068cd43264d3363295eb8d6901e02f467897
CameraSetInstruction.php
1<?php
2
3/*
4 * This file is part of BedrockProtocol.
5 * Copyright (C) 2014-2022 PocketMine Team <https://github.com/pmmp/BedrockProtocol>
6 *
7 * BedrockProtocol is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU Lesser General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 */
12
13declare(strict_types=1);
14
15namespace pocketmine\network\mcpe\protocol\types\camera;
16
20
22
23 public function __construct(
24 private int $preset,
25 private ?CameraSetInstructionEase $ease,
26 private ?Vector3 $cameraPosition,
27 private ?CameraSetInstructionRotation $rotation,
28 private ?Vector3 $facingPosition,
29 private ?Vector2 $viewOffset,
30 private ?bool $default
31 ){}
32
33 public function getPreset() : int{ return $this->preset; }
34
35 public function getEase() : ?CameraSetInstructionEase{ return $this->ease; }
36
37 public function getCameraPosition() : ?Vector3{ return $this->cameraPosition; }
38
39 public function getRotation() : ?CameraSetInstructionRotation{ return $this->rotation; }
40
41 public function getFacingPosition() : ?Vector3{ return $this->facingPosition; }
42
43 public function getViewOffset() : ?Vector2{ return $this->viewOffset; }
44
45 public function getDefault() : ?bool{ return $this->default; }
46
47 public static function read(PacketSerializer $in) : self{
48 $preset = $in->getLInt();
49 $ease = $in->readOptional(fn() => CameraSetInstructionEase::read($in));
50 $cameraPosition = $in->readOptional($in->getVector3(...));
51 $rotation = $in->readOptional(fn() => CameraSetInstructionRotation::read($in));
52 $facingPosition = $in->readOptional($in->getVector3(...));
53 $viewOffset = $in->readOptional($in->getVector2(...));
54 $default = $in->readOptional($in->getBool(...));
55
56 return new self(
57 $preset,
58 $ease,
59 $cameraPosition,
60 $rotation,
61 $facingPosition,
62 $viewOffset,
63 $default
64 );
65 }
66
67 public function write(PacketSerializer $out) : void{
68 $out->putLInt($this->preset);
69 $out->writeOptional($this->ease, fn(CameraSetInstructionEase $v) => $v->write($out));
70 $out->writeOptional($this->cameraPosition, $out->putVector3(...));
71 $out->writeOptional($this->rotation, fn(CameraSetInstructionRotation $v) => $v->write($out));
72 $out->writeOptional($this->facingPosition, $out->putVector3(...));
73 $out->writeOptional($this->viewOffset, $out->putVector2(...));
74 $out->writeOptional($this->default, $out->putBool(...));
75 }
76}