PocketMine-MP 5.25.1 git-694aa17cc916a954b10fe12721c81b1dc73eecd5
Loading...
Searching...
No Matches
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 $horizontalRotationLimit,
36 private ?Vector2 $verticalRotationLimit,
37 private ?bool $continueTargeting,
38 private ?float $blockListeningRadius,
39 private ?Vector2 $viewOffset,
40 private ?Vector3 $entityOffset,
41 private ?float $radius,
42 private ?float $yawLimitMin,
43 private ?float $yawLimitMax,
44 private ?int $audioListenerType,
45 private ?bool $playerEffects,
46 private ?bool $alignTargetAndCameraForward,
47 private ?CameraPresetAimAssist $aimAssist,
48 ){}
49
50 public function getName() : string{ return $this->name; }
51
52 public function getParent() : string{ return $this->parent; }
53
54 public function getXPosition() : ?float{ return $this->xPosition; }
55
56 public function getYPosition() : ?float{ return $this->yPosition; }
57
58 public function getZPosition() : ?float{ return $this->zPosition; }
59
60 public function getPitch() : ?float{ return $this->pitch; }
61
62 public function getYaw() : ?float{ return $this->yaw; }
63
64 public function getRotationSpeed() : ?float { return $this->rotationSpeed; }
65
66 public function getSnapToTarget() : ?bool { return $this->snapToTarget; }
67
68 public function getHorizontalRotationLimit() : ?Vector2{ return $this->horizontalRotationLimit; }
69
70 public function getVerticalRotationLimit() : ?Vector2{ return $this->verticalRotationLimit; }
71
72 public function getContinueTargeting() : ?bool{ return $this->continueTargeting; }
73
74 public function getBlockListeningRadius() : ?float{ return $this->blockListeningRadius; }
75
76 public function getViewOffset() : ?Vector2{ return $this->viewOffset; }
77
78 public function getEntityOffset() : ?Vector3{ return $this->entityOffset; }
79
80 public function getRadius() : ?float{ return $this->radius; }
81
82 public function getYawLimitMin() : ?float{ return $this->yawLimitMin; }
83
84 public function getYawLimitMax() : ?float{ return $this->yawLimitMax; }
85
86 public function getAudioListenerType() : ?int{ return $this->audioListenerType; }
87
88 public function getPlayerEffects() : ?bool{ return $this->playerEffects; }
89
90 public function getAlignTargetAndCameraForward() : ?bool{ return $this->alignTargetAndCameraForward; }
91
92 public function getAimAssist() : ?CameraPresetAimAssist{ return $this->aimAssist; }
93
94 public static function read(PacketSerializer $in) : self{
95 $name = $in->getString();
96 $parent = $in->getString();
97 $xPosition = $in->readOptional($in->getLFloat(...));
98 $yPosition = $in->readOptional($in->getLFloat(...));
99 $zPosition = $in->readOptional($in->getLFloat(...));
100 $pitch = $in->readOptional($in->getLFloat(...));
101 $yaw = $in->readOptional($in->getLFloat(...));
102 $rotationSpeed = $in->readOptional($in->getLFloat(...));
103 $snapToTarget = $in->readOptional($in->getBool(...));
104 $horizontalRotationLimit = $in->readOptional($in->getVector2(...));
105 $verticalRotationLimit = $in->readOptional($in->getVector2(...));
106 $continueTargeting = $in->readOptional($in->getBool(...));
107 $blockListeningRadius = $in->readOptional($in->getLFloat(...));
108 $viewOffset = $in->readOptional($in->getVector2(...));
109 $entityOffset = $in->readOptional($in->getVector3(...));
110 $radius = $in->readOptional($in->getLFloat(...));
111 $yawLimitMin = $in->readOptional($in->getLFloat(...));
112 $yawLimitMax = $in->readOptional($in->getLFloat(...));
113 $audioListenerType = $in->readOptional($in->getByte(...));
114 $playerEffects = $in->readOptional($in->getBool(...));
115 $alignTargetAndCameraForward = $in->readOptional($in->getBool(...));
116 $aimAssist = $in->readOptional(fn() => CameraPresetAimAssist::read($in));
117
118 return new self(
119 $name,
120 $parent,
121 $xPosition,
122 $yPosition,
123 $zPosition,
124 $pitch,
125 $yaw,
126 $rotationSpeed,
127 $snapToTarget,
128 $horizontalRotationLimit,
129 $verticalRotationLimit,
130 $continueTargeting,
131 $blockListeningRadius,
132 $viewOffset,
133 $entityOffset,
134 $radius,
135 $yawLimitMin,
136 $yawLimitMax,
137 $audioListenerType,
138 $playerEffects,
139 $alignTargetAndCameraForward,
140 $aimAssist
141 );
142 }
143
144 public function write(PacketSerializer $out) : void{
145 $out->putString($this->name);
146 $out->putString($this->parent);
147 $out->writeOptional($this->xPosition, $out->putLFloat(...));
148 $out->writeOptional($this->yPosition, $out->putLFloat(...));
149 $out->writeOptional($this->zPosition, $out->putLFloat(...));
150 $out->writeOptional($this->pitch, $out->putLFloat(...));
151 $out->writeOptional($this->yaw, $out->putLFloat(...));
152 $out->writeOptional($this->rotationSpeed, $out->putLFloat(...));
153 $out->writeOptional($this->snapToTarget, $out->putBool(...));
154 $out->writeOptional($this->horizontalRotationLimit, $out->putVector2(...));
155 $out->writeOptional($this->verticalRotationLimit, $out->putVector2(...));
156 $out->writeOptional($this->continueTargeting, $out->putBool(...));
157 $out->writeOptional($this->blockListeningRadius, $out->putLFloat(...));
158 $out->writeOptional($this->viewOffset, $out->putVector2(...));
159 $out->writeOptional($this->entityOffset, $out->putVector3(...));
160 $out->writeOptional($this->radius, $out->putLFloat(...));
161 $out->writeOptional($this->yawLimitMin, $out->putLFloat(...));
162 $out->writeOptional($this->yawLimitMax, $out->putLFloat(...));
163 $out->writeOptional($this->audioListenerType, $out->putByte(...));
164 $out->writeOptional($this->playerEffects, $out->putBool(...));
165 $out->writeOptional($this->alignTargetAndCameraForward, $out->putBool(...));
166 $out->writeOptional($this->aimAssist, fn(CameraPresetAimAssist $v) => $v->write($out));
167 }
168}