createState
Create animation states in Spline 3D scenes by defining object properties, transition durations, and easing functions for smooth animations.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| sceneId | Yes | Scene ID | |
| name | Yes | State name | |
| properties | Yes | State properties | |
| transitionDuration | No | Transition duration in ms | |
| transitionEasing | No | Easing function for transitions |
Implementation Reference
- src/tools/state-event-tools.js:88-117 (handler)The handler function for the 'createState' tool. It constructs state data from inputs and sends a POST request to the API to create a new state in the specified scene, returning success or error message.async ({ sceneId, name, properties, transitionDuration, transitionEasing }) => { try { const stateData = { name, properties, ...(transitionDuration !== undefined && { transitionDuration }), ...(transitionEasing && { transitionEasing }), }; const result = await apiClient.request('POST', `/scenes/${sceneId}/states`, stateData); return { content: [ { type: 'text', text: `State created successfully with ID: ${result.id}` } ] }; } catch (error) { return { content: [ { type: 'text', text: `Error creating state: ${error.message}` } ], isError: true }; }
- src/tools/state-event-tools.js:76-87 (schema)Zod schema defining the input parameters for the createState tool, including sceneId, name, properties array, and optional transition settings.{ sceneId: z.string().min(1).describe('Scene ID'), name: z.string().min(1).describe('State name'), properties: z.array(z.object({ objectId: z.string().min(1).describe('Object ID'), property: z.string().min(1).describe('Property to change'), value: z.any().describe('Value to set'), })).min(1).describe('State properties'), transitionDuration: z.number().min(0).optional().describe('Transition duration in ms'), transitionEasing: z.enum(['linear', 'easeIn', 'easeOut', 'easeInOut']).optional() .describe('Easing function for transitions'), },
- src/tools/state-event-tools.js:74-119 (registration)The server.tool call that registers the 'createState' tool with its schema and handler function.server.tool( 'createState', { sceneId: z.string().min(1).describe('Scene ID'), name: z.string().min(1).describe('State name'), properties: z.array(z.object({ objectId: z.string().min(1).describe('Object ID'), property: z.string().min(1).describe('Property to change'), value: z.any().describe('Value to set'), })).min(1).describe('State properties'), transitionDuration: z.number().min(0).optional().describe('Transition duration in ms'), transitionEasing: z.enum(['linear', 'easeIn', 'easeOut', 'easeInOut']).optional() .describe('Easing function for transitions'), }, async ({ sceneId, name, properties, transitionDuration, transitionEasing }) => { try { const stateData = { name, properties, ...(transitionDuration !== undefined && { transitionDuration }), ...(transitionEasing && { transitionEasing }), }; const result = await apiClient.request('POST', `/scenes/${sceneId}/states`, stateData); return { content: [ { type: 'text', text: `State created successfully with ID: ${result.id}` } ] }; } catch (error) { return { content: [ { type: 'text', text: `Error creating state: ${error.message}` } ], isError: true }; } } );
- src/index.js:90-90 (registration)Invocation of registerStateEventTools in the main server setup, which includes registration of the createState tool.registerStateEventTools(server);