AllenCell / AllenCell/vole-core

Remove direct external access to `IDrawableObject`s

Offen
#411 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Tech Debt
Vorherrschende Sprache
TypeScript
Sterne
106
Forks
11
Ø Merge
3 T. 51 Min.
Gemergte PRs (30 T.)
12

Beschreibung

## Use Case

Currently, clients create their own `IDrawableObject` objects and pass them into `vole-core`. This causes us to depend on `three`'s API externally.

Ideally, we should instead have vole-core manage its own objects, and users would just pass in settings objects to update them.

## Solution

- Remove `view3d.addObject` and related methods.
- Clients should call `view3d.addObject(type, data)` and receive a typed handle back.
- [ ] Clients can update via `view3d.updateObjectData(handle, data)`.
- [ ] Clients can remove objects via `view3d.removeObject(handle)`.
- [ ] Change `IDrawableObjects` to have single `updateSettings()`, which has no `three` types.

## Alternatives

Consider typing the handles and the settings objects?

```ts
type LineHandle: `L${number}`
type ArrowsHandle: `A${number}`
type SpheresHandle: `S${number}`

type HandleToSettings = {
[LineHandle]: LineData,
[ArrowsHandle]: ArrowData
}

view3d.updateObjectSettings(objectHandle: T, settingsToUpdate: Partial>)
```

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.