diff --git a/src/mol-state/context/event.ts b/src/mol-state/event/dispatcher.ts similarity index 100% rename from src/mol-state/context/event.ts rename to src/mol-state/event/dispatcher.ts diff --git a/src/mol-state/event/event.ts b/src/mol-state/event/event.ts new file mode 100644 index 0000000000000000000000000000000000000000..32dcb9a0516c288ed83911bba462598e0372cb0d --- /dev/null +++ b/src/mol-state/event/event.ts @@ -0,0 +1,9 @@ +/** + * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info. + * + * @author David Sehnal <david.sehnal@gmail.com> + */ + +export interface EventDispatcher { + // TODO +} \ No newline at end of file diff --git a/src/mol-state/state.ts b/src/mol-state/state.ts index 0dc9aa8e4beb3b2ec994479187eb10135f3c51ed..fb65ca6dc04016c58c050c3c159531732256aaa6 100644 --- a/src/mol-state/state.ts +++ b/src/mol-state/state.ts @@ -7,9 +7,24 @@ import { StateObject } from './object'; import { TransformTree } from './tree/tree'; import { Transform } from './tree/transform'; +import { Map as ImmutableMap } from 'immutable'; +import { StateContext } from './context/context'; -export interface State { - tree: TransformTree, - objects: Map<Transform.InstanceId, StateObject>, - history: TransformTree[] -} \ No newline at end of file +export interface State<ObjectProps = unknown> { + definition: State.Definition<ObjectProps>, + objects: Map<Transform.InstanceId, StateObject> +} + +export namespace State { + export type ObjectProps<P> = ImmutableMap<Transform.InstanceId, P> + + export interface Definition<P = unknown> { + tree: TransformTree, + // things like object visibility + props: ObjectProps<P> + } + + export async function update<P>(context: StateContext, old: State<P>, tree: Definition<P>, props?: ObjectProps<P>): Promise<State<P>> { + throw 'nyi'; + } +} diff --git a/src/mol-state/transformer/controller.ts b/src/mol-state/transformer/controller.ts new file mode 100644 index 0000000000000000000000000000000000000000..4d970bf1e035ee3c5a6d75f8a86a7c1f495e2691 --- /dev/null +++ b/src/mol-state/transformer/controller.ts @@ -0,0 +1,7 @@ +/** + * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info. + * + * @author David Sehnal <david.sehnal@gmail.com> + */ + +// TODO: relactive transformer params controller \ No newline at end of file diff --git a/src/mol-state/tree/context.ts b/src/mol-state/tree/context.ts index 8c4bb7c09e470c7eb175ee24c9277b94e4b15348..1c274d8cc9b04844ecf2c6dbeae524a15a7bcc82 100644 --- a/src/mol-state/tree/context.ts +++ b/src/mol-state/tree/context.ts @@ -4,7 +4,7 @@ * @author David Sehnal <david.sehnal@gmail.com> */ -import { EventDispatcher } from '../context/event'; +import { EventDispatcher } from '../event/event'; export interface TransformContext { /** An event dispatcher for executing child tasks. */ diff --git a/src/mol-state/tree/transation.ts b/src/mol-state/tree/transation.ts index 7c7fe83382a744be37fe5118239b71702aebc60d..e05c32a208b6852f79418070f2052173adc4c847 100644 --- a/src/mol-state/tree/transation.ts +++ b/src/mol-state/tree/transation.ts @@ -4,4 +4,6 @@ * @author David Sehnal <david.sehnal@gmail.com> */ -// TODO \ No newline at end of file +export interface TreeTransaction { + +} \ No newline at end of file