PocketMine-MP 5.18.1 git-9381fc4172e5dce4cada1cb356050c8a2ab57b94
CameraPreset.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
19
20final class CameraPreset{
21 public const AUDIO_LISTENER_TYPE_CAMERA = 0;
22 public const AUDIO_LISTENER_TYPE_PLAYER = 1;
23
24 public function __construct(
25 private string $name,
26 private string $parent,
27 private ?float $xPosition,
28 private ?float $yPosition,
29 private ?float $zPosition,
30 private ?float $pitch,
31 private ?float $yaw,
32 private ?Vector2 $viewOffset,
33 private ?float $radius,
34 private ?int $audioListenerType,
35 private ?bool $playerEffects
36 ){}
37
38 public function getName() : string{ return $this->name; }
39
40 public function getParent() : string{ return $this->parent; }
41
42 public function getXPosition() : ?float{ return $this->xPosition; }
43
44 public function getYPosition() : ?float{ return $this->yPosition; }
45
46 public function getZPosition() : ?float{ return $this->zPosition; }
47
48 public function getPitch() : ?float{ return $this->pitch; }
49
50 public function getYaw() : ?float{ return $this->yaw; }
51
52 public function getViewOffset() : ?Vector2{ return $this->viewOffset; }
53
54 public function getRadius() : ?float{ return $this->radius; }
55
56 public function getAudioListenerType() : ?int{ return $this->audioListenerType; }
57
58 public function getPlayerEffects() : ?bool{ return $this->playerEffects; }
59
60 public static function read(PacketSerializer $in) : self{
61 $name = $in->getString();
62 $parent = $in->getString();
63 $xPosition = $in->readOptional($in->getLFloat(...));
64 $yPosition = $in->readOptional($in->getLFloat(...));
65 $zPosition = $in->readOptional($in->getLFloat(...));
66 $pitch = $in->readOptional($in->getLFloat(...));
67 $yaw = $in->readOptional($in->getLFloat(...));
68 $viewOffset = $in->readOptional($in->getVector2(...));
69 $radius = $in->readOptional($in->getLFloat(...));
70 $audioListenerType = $in->readOptional($in->getByte(...));
71 $playerEffects = $in->readOptional($in->getBool(...));
72
73 return new self(
74 $name,
75 $parent,
76 $xPosition,
77 $yPosition,
78 $zPosition,
79 $pitch,
80 $yaw,
81 $viewOffset,
82 $radius,
83 $audioListenerType,
84 $playerEffects
85 );
86 }
87
88 public function write(PacketSerializer $out) : void{
89 $out->putString($this->name);
90 $out->putString($this->parent);
91 $out->writeOptional($this->xPosition, $out->putLFloat(...));
92 $out->writeOptional($this->yPosition, $out->putLFloat(...));
93 $out->writeOptional($this->zPosition, $out->putLFloat(...));
94 $out->writeOptional($this->pitch, $out->putLFloat(...));
95 $out->writeOptional($this->yaw, $out->putLFloat(...));
96 $out->writeOptional($this->viewOffset, $out->putVector2(...));
97 $out->writeOptional($this->radius, $out->putLFloat(...));
98 $out->writeOptional($this->audioListenerType, $out->putByte(...));
99 $out->writeOptional($this->playerEffects, $out->putBool(...));
100 }
101}