import { TDestroyable, TNoSpread, TSerializable, TWithId, TWithName } from '../../Mixins'; import { TReadonlyQuaternion, TReadonlyVector3 } from '../../ThreeLib'; import { TransformAgent } from '../Constants'; import { TTransformDriveSerializedData } from './TTransformDriveSerializedData'; import { BehaviorSubject, ReplaySubject } from 'rxjs'; import { TAbstractTransformAgent } from './TAbstractTransformAgent'; export type TTransformDriveCompatibleEntity = Partial>; export type TTransformDrive = TTransformDriveMandatoryFields & T & TSerializable & TNoSpread & TDestroyable & TWithName; export type TTransformDriveMandatoryFields = Readonly<{ agent$: BehaviorSubject; activeAgent$: ReplaySubject; getActiveAgent: () => TAbstractTransformAgent; position$: BehaviorSubject; rotation$: BehaviorSubject; scale$: BehaviorSubject; relatedEntityId: string; }> & TWithId;