载入中...
搜索中...
未找到
FollowPlayer.cpp
浏览该文件的文档.
2
3#include <cmath>
4
5namespace eve::scene {
6namespace {
7bool finite(float value) { return std::isfinite(value); }
8}
9
12 const FollowPlayerInput* input) {
13 if (!output || !settings || !input || !finite(settings->offsetX) ||
14 !finite(settings->offsetY) || !finite(settings->offsetZ) ||
15 !finite(settings->scaleX) || !finite(settings->scaleY) ||
16 !finite(settings->scaleZ) || !finite(input->playerX) ||
17 !finite(input->playerY) || !finite(input->playerZ))
20 "scene.followPlayer: objects and finite transform values required"));
21
22 FollowPlayerOutput candidate;
23 candidate.applyScale = settings->useScale;
24 candidate.scaleX = settings->scaleX;
25 candidate.scaleY = settings->scaleY;
26 candidate.scaleZ = settings->scaleZ;
27 candidate.applyPosition = settings->followPlayer && input->hasPlayer;
28 if (candidate.applyPosition) {
29 candidate.x = input->playerX;
30 candidate.y = input->playerY;
31 candidate.z = input->playerZ;
32 if (settings->useOffset) {
33 candidate.x += settings->offsetX;
34 candidate.z -= settings->offsetZ;
35 if (settings->waterObject)
36 candidate.y += (input->playerY < 1.f ? 70.f : 10.f) - settings->offsetY;
37 else
38 candidate.y -= settings->offsetY;
39 }
40 }
41 *output = candidate;
42 return Result<void>::success();
43}
44
45} // namespace eve::scene
double value
std::string output
EvpackChunkInput input
Definition Evpack.cpp:170
bool finite
TerrainThermalSettings settings
static Diagnostic error(DiagnosticCode code, std::string message, std::string path={}, DiagnosticDetails details={}, std::string source={})
Construct an error diagnostic with the standard error severity.
Definition Diagnostic.h:125
Move-only operation result carrying either a value or Status.
Definition Result.h:155
static Result success(T value)
Construct a successful result owning value.
Definition Result.h:164
static Result failure(Status status)
Construct a failed result from a structured status.
Definition Result.h:175
Result< void > evaluateFollowPlayer(FollowPlayerOutput *output, const FollowPlayerSettings *settings, const FollowPlayerInput *input)
Evaluate Pcg FollowPlayerSystem LateUpdate transform semantics.
Per-frame player observation supplied by the application.
Provider-neutral transform writes produced for every followed object.
Pcg FollowPlayerSystem configuration independent of render providers.