载入中...
搜索中...
未找到
VoxelCatalogEditor.cpp
浏览该文件的文档.
13voxel_editing::Result<T> editorError(voxel_editing::EditorStatus status, std::string rule, std::string message) {
14 return eve::editing::failed<T>(status, voxel_editing::RuleId(std::move(rule)), std::move(message));
28 auto applySeed = [this](voxel_editing::Result<voxel_editing::DomainOperation> operation, const char* why) {
127std::string VoxelCatalogEditor::toolName() const { return tool_ == VoxelSculptTool::Erase ? "erase" : "attach"; }
139 return editorError(begun.code(), "editor.voxel.begin", "Could not begin the voxel transaction");
151void VoxelCatalogEditor::cameraAxes(float& fx, float& fy, float& fz, float& rx, float& ry, float& rz, float& ux,
178 std::max(1.0f, static_cast<float>(std::max(model->sizeX, std::max(model->sizeY, model->sizeZ))));
192 std::sort(screen_.begin(), screen_.end(), [](const ScreenVoxel& a, const ScreenVoxel& b) { return a.depth > b.depth; });
243voxel_editing::Result<void> VoxelCatalogEditor::applyPick(const voxel_editing::VoxelPick& pick) {
252 return commit(target_.makeSetVoxel(model->id, pick.hitX, pick.hitY, pick.hitZ, false), "Erase voxel");
257 return commit(target_.makeSetVoxel(model->id, pick.prevX, pick.prevY, pick.prevZ, true), "Attach voxel");
260voxel_editing::Result<void> VoxelCatalogEditor::pointerWorldRay(float ox, float oy, float oz, float dx, float dy,
266 if (!std::isfinite(ox) || !std::isfinite(oy) || !std::isfinite(oz) || !std::isfinite(dx) || !std::isfinite(dy) ||
286 std::max(1.0f, static_cast<float>(std::max(model->sizeX, std::max(model->sizeY, model->sizeZ))));
293 const auto pick = voxel_editing::pickVoxelModel(*model, ox, oy, oz, fx, fy, fz, distance_ * 4.0f);
305voxel_editing::Result<void> VoxelCatalogEditor::setSelectedSocket(std::string tag, std::string kind) {
326voxel_editing::Result<void> VoxelCatalogEditor::createModel(std::string id, std::string name, int sizeX,
356 if (!previewed.ok()) return voxel_editing::Result<editor::TransactionReceipt>::failure(previewed.status());
364 if (!previewed.ok()) return voxel_editing::Result<editor::TransactionReceipt>::failure(previewed.status());
380 return fillName(voxel_editing::voxelClassifyModelFill(target_.models()[static_cast<std::size_t>(index)]));
454 return voxel_editing::voxelSocketKindName(model->sockets[static_cast<std::size_t>(selectedFace_)].kind);
MagicaVoxel-style miniature sculpt editor: orbit view, attach/erase, undo.
void ignore(std::string_view reason={}) const noexcept
Explicitly discard this result after documenting the reason.
Definition Result.h:537
static Result failure(Status status)
Construct a failed result from a structured status.
Definition Result.h:175
UUID-backed identifier adapter for legacy textual boundaries.
Definition Identity.h:314
Dotted property path (layout.size) compared and persisted as text.
Definition EditingIds.h:78
Deterministic owning value tree shared by authoring hosts.
Definition EditingValue.h:19
Composition model shared by project-specific developer and runtime editors.
Definition EditorWorkspace.h:43
bool setPanelContext(const std::string &id, const std::string &context)
Attach a semantic input context such as scene, graph, or timeline.
Definition EditorWorkspace.cpp:137
Result< WorkspacePanelDescriptor > registerPanel(WorkspacePanelDescriptor descriptor)
Register a checked owning panel descriptor.
Definition EditorWorkspace.cpp:48
Result< WorkspacePanelDescriptor > activatePanel(const StableId &id)
Activate a visible panel with structured not-found/rejected results.
Definition EditorWorkspace.cpp:169
bool setPanelCapability(const std::string &id, const std::string &capability)
Attach a capability requirement used by the host when filtering panels.
Definition EditorWorkspace.cpp:128
Result< TransactionReceipt > commit() override
Preflight and commit all active operations through the authority.
Definition EditorTransactionService.cpp:74
Result< TransactionId > begin(TransactionSpec specification) override
Begin a transaction with a stable id and base revision.
Definition EditorTransactionService.cpp:60
Result< TransactionReceipt > undo() override
Compensate the most recent committed transaction.
Definition EditorTransactionService.cpp:82
Result< void > discard() override
Discard the active, not-yet-committed operation list.
Definition EditorTransactionService.cpp:76
Result< TransactionReceipt > redo() override
Reapply the most recently compensated transaction.
Definition EditorTransactionService.cpp:84
Result< void > append(DomainOperation operation) override
Append an operation to the active transaction without applying it.
Definition EditorTransactionService.cpp:68
Result< DomainOperation > makeSet(const SelectionSnapshot &, const PropertyPath &, const EditorValue &, PropertySetMode) const override
Make set.
Definition VoxelCatalog.cpp:406
std::vector< ObjectId > hullJoinPartners(const ObjectId &model, int face) const
Hull join partners.
Definition VoxelCatalog.cpp:600
Result< void > applyDomainOperation(const DomainOperation &) override
Applies domain operation.
Definition VoxelCatalog.cpp:542
Result< DomainOperation > makeCreateModel(const VoxelModelValue &) const
Make create model.
Definition VoxelCatalog.cpp:461
Result< DomainOperation > makeSetVoxel(const ObjectId &model, int x, int y, int z, bool occupied) const
Make set voxel.
Definition VoxelCatalog.cpp:483
const VoxelModelValue * findModel(const ObjectId &) const
Look up a sculpted model by stable id.
Definition VoxelCatalog.cpp:325
Result< DomainOperation > makeDeleteModel(const ObjectId &) const
Make delete model.
Definition VoxelCatalog.cpp:474
voxel_editing::Result< void > pointerWorldRay(float ox, float oy, float oz, float dx, float dy, float dz)
MagicaVoxel attach/erase using a world-space camera ray.
Definition VoxelCatalogEditor.cpp:260
voxel_editing::Result< void > setVoxel(int x, int y, int z, bool occupied)
Sets the voxel.
Definition VoxelCatalogEditor.cpp:297
voxel_editing::Result< void > configureWorkspace(editor::EditorWorkspace &workspace) const
Install Models / Viewport / Tools / Inspector panels.
Definition VoxelCatalogEditor.cpp:69
voxel_editing::Result< void > pointerDown(float x, float y)
Definition VoxelCatalogEditor.cpp:272
voxel_editing::Result< void > createModel(std::string id, std::string name, int sizeX, int sizeY, int sizeZ)
Creates model.
Definition VoxelCatalogEditor.cpp:326
voxel_editing::Result< void > setTool(std::string tool)
Definition VoxelCatalogEditor.cpp:212
voxel_editing::Result< void > orbit(float yawDelta, float pitchDelta)
Definition VoxelCatalogEditor.cpp:233
voxel_editing::Result< void > deleteSelectedModel()
Delete selected model.
Definition VoxelCatalogEditor.cpp:339
voxel_editing::Result< void > selectModel(std::string id)
Definition VoxelCatalogEditor.cpp:205
voxel_editing::Result< editor::TransactionReceipt > redo()
Redo.
Definition VoxelCatalogEditor.cpp:360
voxel_editing::Result< void > setSelectedSocket(std::string tag, std::string kind)
Sets the selected socket.
Definition VoxelCatalogEditor.cpp:305
voxel_editing::Result< editor::TransactionReceipt > undo()
Undo.
Definition VoxelCatalogEditor.cpp:352
voxel_editing::Result< void > setViewport(float width, float height)
Definition VoxelCatalogEditor.cpp:223
VoxelCatalogEditor(std::string targetId)
Construct a seeded solid cube and a sculpted bed.
Definition VoxelCatalogEditor.cpp:19
VoxelCellFill voxelClassifyModelFill(const VoxelModelValue &model)
Classify a sculpted model as empty, partial, or a solid cube.
Definition VoxelCatalog.cpp:215
const char * voxelSocketKindName(VoxelSocketKind kind)
Stable serialized name for a socket kind. @ownership Observed static string; callers must not free it...
Definition VoxelCatalog.cpp:182
VoxelPick pickVoxelModel(const VoxelModelValue &model, float ox, float oy, float oz, float dx, float dy, float dz, float maxDistance)
Raycast occupied cells with MagicaVoxel-style previous-cell attach.
Definition VoxelCatalog.cpp:222
Definition voxel_editor.cpp:19
Definition Container.h:602
std::vector< SelectionItem > items
Definition EditingSelection.h:22
std::optional< SelectionItem > primary
Definition EditingSelection.h:23
One MagicaVoxel-style object: a bounded occupancy grid.
Definition VoxelCatalog.h:75