mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-05 09:48:44 +00:00
54 lines
1.2 KiB
TypeScript
54 lines
1.2 KiB
TypeScript
import { useCallback, useState } from "react";
|
|
import { ObjectGroup, ObjectTrack } from "~/pages/PageEnigma/models/track";
|
|
|
|
export default function useUpdateObject() {
|
|
const [objects, setObjects] = useState<ObjectGroup>({
|
|
id: "OB1",
|
|
objects: [
|
|
// {
|
|
// id: "OB1-O1",
|
|
// keyFrames: [
|
|
// {
|
|
// id: "OB1-O1-1",
|
|
// offset: 0,
|
|
// name: "obj 1",
|
|
// },
|
|
// ],
|
|
// },
|
|
],
|
|
});
|
|
|
|
const updateObject = useCallback(
|
|
({ id, offset }: { id: string; offset: number }) => {
|
|
setObjects((oldObject) => {
|
|
return {
|
|
id: oldObject.id,
|
|
objects: oldObject.objects.map((object) => ({
|
|
id: object.id,
|
|
keyFrames: object.keyFrames.map((keyFrame) => ({
|
|
...keyFrame,
|
|
offset: keyFrame.id === id ? offset : keyFrame.offset,
|
|
})),
|
|
})),
|
|
};
|
|
});
|
|
},
|
|
[],
|
|
);
|
|
|
|
const addObject = useCallback((obj: ObjectTrack) => {
|
|
setObjects((oldObjectGroup) => {
|
|
return {
|
|
...oldObjectGroup,
|
|
objects: [...oldObjectGroup.objects, obj],
|
|
};
|
|
});
|
|
}, []);
|
|
|
|
return {
|
|
objects,
|
|
updateObject,
|
|
addObject,
|
|
};
|
|
}
|