Core and the app · crate

kinogaki-project

Core

Studio's project files: a document as a Prism document.

Repository
Core and the app (kinogaki/studio-core)
Folder
studio/core/project
Source
28 files, 6,038 lines
Tests
21 files, 5,470 lines
depends onused by tests alonedependencies for tests alone are listed below, not drawn

What it is

Studio's project files: a document as a Prism document.

A project is its scene (kinogaki_document::Scene), its time, the view it saves and what it keeps of what no installed package reads. .kino files hold a binary Prism crate by default; saving to a .prisma path writes the diffable text form; loading recognizes the content by its magic, never by the extension.

What is saved. Each value is written by its own codec: a body by its kind's ObjectCodec, a network by core's one node codec, a held delta and a kept output by their data type's DataCodec (the standard types' among them), all through the SDK's element traits over Prism (element). Only what no cook makes again is saved: held edits' deltas, bases and results, and frozen nodes' kept outputs. Cooked results are cooked again on load.

What is kept. A node of a type no installed package provides, an object of a kind none declares and a stored value of a package that isn't installed load as placeholders or Kept parts and are written back unchanged; the load's LoadReport says what, once per package. Anything else a file holds that no reader takes refuses it. Reads report how far they are through a Progress.

Depends on

CrateRepositoryAsWhat it is
kinogaki-animCore and the appnormalStudio's animation channels.
kinogaki-brep-meshCore and the appnormalB-reps as polygons, below the viewport, renders and file exchange alike: each body's mesh by the installed mesher, cached on its geometry (meshed), and a value's bodies joined into one polygons value (joined): each body's mesh, the faces' polygons ...
kinogaki-cookCore and the appnormalStudio's core cooking engine, the same for every network kind (the owner's rule: the cooking DAG for nodes is core's).
kinogaki-core-packageCore and the appnormalCore's own SDK package (kinogaki.core): what Studio holds whatever plugins are installed.
kinogaki-documentCore and the appnormalStudio's document: the scene, a tree of objects under one root, and the core network each object of a kind naming a context holds.
kinogaki-mathlib-mathnormalKinogaki's vectors, points, matrices, quaternions and deterministic elementary functions.
kinogaki-networkCore and the appnormalStudio's core networks (design: core-owned networks; "Cooking DAG for nodes is studio core").
kinogaki-prismlib-prismnormalPrism documents for Kinogaki.
kinogaki-render-apiSDKnormalKinogaki's render interface: what a host (Studio) sends a render engine and what comes back, with no GPU or OS API.
kinogaki-studio-apiSDKnormalKinogaki Studio's headless plugin API.

For its tests alone

CrateRepositoryAsWhat it is
kinogaki-parallellib-paralleltestsScoped parallel work over disjoint output slices, sized by cost.
kinogaki-studio-api-testingSDKtestsThe SDK's test support (a dev-dependency only): assert_refused for admission tests, read_hostile for a format's tests of hostile files, format for its scratch folders and round trips, workers as a host installs them, with wgpu an ...
kinogaki-testkitCore and the apptestsKinogaki Studio's core testkit: toy packages written against the SDK alone, so core is tested with no real plugin.

Third-party

None.

Used by

CrateRepositoryAsWhat it is
kinogaki-editorCore and the appnormalKinogaki Studio's editor: the document and everything the window shows of it, as parts one frame borrows one by one.
kinogaki-testkitCore and the appnormalKinogaki Studio's core testkit: toy packages written against the SDK alone, so core is tested with no real plugin.

Modules

Public types and traits

At the crate root

Structs KeptLoadedLoadReportOrbitPanesPaneViewProgressProjectProjectTaskViewWhat

Enums DoneProjectOperation

Type aliases ProgressHookProjectResult

Re-exported from other crates

From kinogaki_prism Format

By module: 17 public types and traits in 7 modules

element LoadingSaving

exchange ReadsStandardForm

kept Kept

progress Progress

report LoadReportWhat

task DoneProgressHookProjectOperationProjectResultProjectTask

view OrbitPanesPaneViewView

Besides these, 10 public functions at module level.