载入中...
搜索中...
未找到
PcgCarCameraSetup.cpp
浏览该文件的文档.
33 return Result<void>::failure(Diagnostic::error(DiagnosticCode::InvalidArgument, "invalid Pcg vehicle camera profile", "camera.pcgCar.configure"));
41 if (!c || !camera || !focus) return Result<void>::failure(Diagnostic::error(DiagnosticCode::InvalidArgument, "controller, camera and focus are required", "camera.pcgCar.apply"));
42 if (!finite(initialYaw) || !finite(initialPitch)) return Result<void>::failure(Diagnostic::error(DiagnosticCode::InvalidArgument, "initial angles must be finite", "camera.pcgCar.apply"));
69 if (!c) return Result<void>::failure(Diagnostic::error(DiagnosticCode::InvalidArgument, "controller is required", "camera.pcgCar.update"));
70 if (!finite(mouseX) || !finite(mouseY) || !finite(scroll) || !finite(dt) || !finite(targetYaw) || dt < 0.f)
71 return Result<void>::failure(Diagnostic::error(DiagnosticCode::InvalidArgument, "camera input and dt must be finite", "camera.pcgCar.update"));
72 if (!configured_) return Result<void>::failure(Diagnostic::error(DiagnosticCode::InvalidArgument, "camera setup has not been configured", "camera.pcgCar.update"));
90 p.addVar("targetHeight", &PcgCarCameraProfile::targetHeight); p.addVar("distance", &PcgCarCameraProfile::distance);
91 p.addVar("offsetFromWall", &PcgCarCameraProfile::offsetFromWall); p.addVar("maximumDistance", &PcgCarCameraProfile::maximumDistance);
92 p.addVar("minimumDistance", &PcgCarCameraProfile::minimumDistance); p.addVar("horizontalSpeed", &PcgCarCameraProfile::horizontalSpeed);
93 p.addVar("verticalSpeed", &PcgCarCameraProfile::verticalSpeed); p.addVar("minimumPitch", &PcgCarCameraProfile::minimumPitch);
94 p.addVar("maximumPitch", &PcgCarCameraProfile::maximumPitch); p.addVar("zoomRate", &PcgCarCameraProfile::zoomRate);
95 p.addVar("rotationDamping", &PcgCarCameraProfile::rotationDamping); p.addVar("zoomDamping", &PcgCarCameraProfile::zoomDamping);
96 p.addVar("collisionLayers", &PcgCarCameraProfile::collisionLayers); p.addVar("lockToRearOfTarget", &PcgCarCameraProfile::lockToRearOfTarget);
97 p.addVar("allowMouseHorizontal", &PcgCarCameraProfile::allowMouseHorizontal); p.addVar("allowMouseVertical", &PcgCarCameraProfile::allowMouseVertical);
98 auto s = t.addClass("PcgCarCameraSetup", ssq::Class::Ctor<PcgCarCameraSetup()>()); auto vm = t.getHandle();
99 s.addFunc("configure", [vm](PcgCarCameraSetup* self, const PcgCarCameraProfile* profile) { return eve::script::projectResult(vm, profile ? self->configure(*profile) : Result<void>::failure(Diagnostic::error(DiagnosticCode::InvalidArgument, "profile is required", "camera.pcgCar.configure"))); });
100 s.addFunc("apply", [vm](PcgCarCameraSetup* self, CameraController* c, graphics::Camera3D* camera, scene::SceneNodeRef* focus, float yaw, float pitch) { return eve::script::projectResult(vm, self->apply(c, camera, focus, yaw, pitch)); });
101 s.addFunc("update", [vm](PcgCarCameraSetup* self, CameraController* c, float mx, float my, float scroll, float dt, bool moving, float targetYaw) { return eve::script::projectResult(vm, self->update(c, mx, my, scroll, dt, moving, targetYaw)); });
The single Squirrel projection for common Result, Status and Value.
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
static Result failure(Status status)
Construct a failed result from a structured status.
Definition Result.h:175
3D 摄像机控制器(eve.Camera / eve.CameraController)。
Definition CameraController.h:67
Caller-owned Pcg vehicle orbit-camera setup and input adapter.
Definition PcgCarCameraSetup.h:35
Result< void > apply(CameraController *controller, graphics::Camera3D *camera, scene::SceneNodeRef *focus, float initialYaw, float initialPitch)
Apply the profile to a live native controller and its stable target.
Definition PcgCarCameraSetup.cpp:39
Result< void > update(CameraController *controller, float mouseX, float mouseY, float scroll, float dt, bool targetIsMoving, float targetYaw)
Apply one device-independent mouse/scroll frame.
Definition PcgCarCameraSetup.cpp:67
Result< void > configure(const PcgCarCameraProfile &profile)
Validate and copy a complete profile without partial mutation.
Definition PcgCarCameraSetup.cpp:23
Script handle to a scene node (hostName + nodeId). Deliberately holds strings rather than arena point...
Definition SceneNodeRef.h:20
Definition CameraController.cpp:20
void exposePcgCarCameraSetupBindings(ssq::Table &t)
Register Pcg vehicle camera bindings.
Definition PcgCarCameraSetup.cpp:88
ssq::Table projectResult(HSQUIRRELVM vm, Result< void > &&result)
Consume and project a void native Result using the common schema.
Definition SquirrelBinding.cpp:470
@ InvalidArgument
Serializable values matching Pcg CarControllerSetup camera defaults.
Definition PcgCarCameraSetup.h:15
float horizontalSpeed
Definition PcgCarCameraSetup.h:21
float offsetFromWall
Definition PcgCarCameraSetup.h:18
float minimumDistance
Definition PcgCarCameraSetup.h:20
bool allowMouseHorizontal
Definition PcgCarCameraSetup.h:30
bool lockToRearOfTarget
Definition PcgCarCameraSetup.h:29
uint64_t collisionLayers
Definition PcgCarCameraSetup.h:28
float rotationDamping
Definition PcgCarCameraSetup.h:26
float maximumDistance
Definition PcgCarCameraSetup.h:19
bool allowMouseVertical
Definition PcgCarCameraSetup.h:31