AllenCell / AllenCell/vole-core

Remove direct external access to `IDrawableObject`s

Ouverte
#411 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Tech Debt
Langage dominant
TypeScript
Étoiles
106
Forks
11
Merge moyen
3 j 51 min
PR mergées (30 j)
12

Description

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

Guide de contribution

Ouvrir le guide de contribution

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.