AllenCell / AllenCell/vole-core

Remove direct external access to `IDrawableObject`s

Aperta
#411 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Tech Debt
Lingua principale
TypeScript
Stelle
106
Fork
11
Merge medio
3g 51m
PR unite (30g)
12

Descrizione

## 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>)
```

Guida per i contributori

Apri la guida per i contributori

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.