载入中...
搜索中...
未找到
DomainGizmoPreview.cpp
浏览该文件的文档.
48EditorGizmoSnapshot EditorGizmoPreviewBuilder::collider(const PhysicsColliderTarget& target) const {
70 if (!number) return failure(result.target, result.targetRevision, "editor.gizmo.invalid-radius", "Collider radius is invalid");
74 const auto* radiusValue = property(snapshot, "shape.radius"); const auto* heightValue = property(snapshot, "shape.capsule-height");
75 const auto* radius = radiusValue ? radiusValue->getIf<double>() : nullptr; const auto* height = heightValue ? heightValue->getIf<double>() : nullptr;
76 if (!radius || !height) return failure(result.target, result.targetRevision, "editor.gizmo.invalid-capsule", "Capsule dimensions are invalid");
92 EditorGizmoSnapshot result; result.target = target.targetId().value(); result.targetRevision = target.revision();
94 const auto* bodyAValue = property(snapshot, "body.a"); const auto* bodyBValue = property(snapshot, "body.b");
116 result.primitives.push_back({"anchor-a", "wire-sphere", anchorA, {}, {}, {1.0, 0.3, 0.2, 1.0}, 0.12, 0.0, false});
117 result.primitives.push_back({"anchor-b", "wire-sphere", anchorB, {}, {}, {0.2, 0.6, 1.0, 1.0}, 0.12, 0.0, false});
118 result.primitives.push_back({"joint-line", "line", anchorA, {}, line, {1.0, 0.85, 0.2, 1.0}, 0.0, length, false});
119 result.primitives.push_back({"joint-axis", "arrow", anchorA, {}, axis, {0.4, 1.0, 0.4, 1.0}, 0.0, 1.0, false});
120 const auto* enabledValue = property(snapshot, "limit.enabled"); const auto* enabled = enabledValue ? enabledValue->getIf<bool>() : nullptr;
122 const auto* minimumValue = property(snapshot, "limit.minimum"); const auto* maximumValue = property(snapshot, "limit.maximum");
130EditorGizmoSnapshot EditorGizmoPreviewBuilder::audioSource(const AudioSourceTarget& target) const {
131 EditorGizmoSnapshot result; result.target = target.targetId().value(); result.targetRevision = target.revision();
150EditorGizmoSnapshot EditorGizmoPreviewBuilder::light(const Light3DDocumentTarget& target) const {
151 EditorGizmoSnapshot result; result.target = target.targetId().value(); result.targetRevision = target.revision();
153 const auto* typeValue = property(snapshot, "light.type"); const auto* type = typeValue ? typeValue->getIf<std::string>() : nullptr;
154 const auto* colorValue = property(snapshot, "light.color"); const auto* color = colorValue ? colorValue->getIf<EditorValue::Array>() : nullptr;
155 if (!type || !color || color->size() != 4 || !vector3(property(snapshot, "transform.position"), position) ||
157 return failure(result.target, result.targetRevision, "editor.gizmo.invalid-light", "Light type, color or transform is invalid");
159 for (std::size_t i = 0; i < 4; ++i) { const auto* number = (*color)[i].getIf<double>(); if (!number) return failure(result.target, result.targetRevision, "editor.gizmo.invalid-light-color", "Light color is invalid"); rgba[i] = *number; }
161 const auto* radiusValue = property(snapshot, "light.radius"); const auto* radius = radiusValue ? radiusValue->getIf<double>() : nullptr;
162 if (!radius) return failure(result.target, result.targetRevision, "editor.gizmo.invalid-light-radius", "Point light radius is invalid");
163 result.primitives.push_back({"light-volume", "wire-sphere", position, {}, {}, rgba, *radius, 0.0, false});
165 result.primitives.push_back({"light-direction", "arrow", position, {}, direction, rgba, 0.0, 4.0, false});
Serializable audio-source authoring target independent of OpenAL handles.
Definition AudioTarget.h:19
std::function< Result< std::array< double, 3 > >(const std::string &)> ObjectPositionResolver
Definition DomainGizmoPreview.h:31
EditorGizmoSnapshot audioSource(const AudioSourceTarget &target) const
Build reference/max-distance spheres and source direction arrow.
Definition DomainGizmoPreview.cpp:130
EditorGizmoSnapshot light(const Light3DDocumentTarget &target) const
Build point-light radius or directional-light arrow overlay.
Definition DomainGizmoPreview.cpp:150
EditorGizmoSnapshot joint(const PhysicsJointTarget &target, const ObjectPositionResolver &bodies) const
Build body-anchor, connecting-line, axis and limit overlays for a joint.
Definition DomainGizmoPreview.cpp:90
EditorGizmoSnapshot collider(const PhysicsColliderTarget &target) const
Build a collider wire shape and sensor/body-state coloring.
Definition DomainGizmoPreview.cpp:48
Deterministic owning value tree shared by authoring hosts.
Definition EditingValue.h:19
Serializable property target matching graphics::Light3D.
Definition LightingTarget.h:101
Serializable, backend-neutral 2D/3D collider authoring target.
Definition PhysicsTarget.h:52
Serializable joint authoring target using stable body references.
Definition PhysicsTarget.h:150
Diagnostic ruleDiagnostic(eve::DiagnosticCode code, RuleId rule, DiagnosticSeverity severity, std::string message)
Build a common diagnostic carrying an open editing rule identity.
Definition EditingResult.h:25
@ InvalidArgument
@ Unsupported
Renderer-neutral wire primitive for authoring viewport overlays.
Definition EditingGizmo.h:12
Immutable revision-tagged overlay snapshot consumed by any viewport renderer.
Definition EditingGizmo.h:27
std::vector< GizmoPrimitive > primitives
Definition EditingGizmo.h:31
std::vector< Diagnostic > diagnostics
Definition EditingGizmo.h:32