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