configureEventParameters
Configure event parameters for 3D scenes by setting event types, trigger areas, key codes, collision groups, and custom properties to define interactive behaviors in Spline.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| sceneId | Yes | Scene ID | |
| eventId | Yes | Event ID | |
| eventType | Yes | Event type | |
| keyCode | No | Key code for keyboard events | |
| distance | No | Distance for spatial events | |
| targetObjectId | No | Target object for lookAt/follow events | |
| variableName | No | Variable name for variableChange events | |
| collisionGroup | No | Collision group for physics events | |
| triggerArea | No | Trigger area dimensions | |
| aiPrompt | No | Prompt for AI assistant events | |
| customParameters | No | Any additional custom parameters |
Implementation Reference
- The handler function that takes event configuration parameters, constructs event-specific parameters using a switch on eventType, and updates the event parameters via API.async ({ sceneId, eventId, eventType, keyCode, distance, targetObjectId, variableName, collisionGroup, triggerArea, aiPrompt, customParameters }) => { try { // Construct parameters based on event type let parameters = {}; switch (eventType) { case 'keyUp': case 'keyDown': case 'keyPress': parameters = { keyCode }; break; case 'distance': parameters = { distance, targetObjectId }; break; case 'lookAt': case 'follow': parameters = { targetObjectId }; break; case 'variableChange': parameters = { variableName }; break; case 'collision': parameters = { collisionGroup }; break; case 'triggerArea': parameters = { triggerArea }; break; case 'aiAssistantListener': case 'aiAssistantTrigger': parameters = { aiPrompt }; break; default: // For other events, use custom parameters parameters = customParameters || {}; } // Update the event with the configured parameters await apiClient.request('PUT', `/scenes/${sceneId}/events/${eventId}/parameters`, parameters); return { content: [ { type: 'text', text: `Parameters for event ${eventId} configured successfully` } ] }; } catch (error) { return { content: [ { type: 'text', text: `Error configuring event parameters: ${error.message}` } ], isError: true }; } } );
- Zod schema defining the input parameters for the configureEventParameters tool, including sceneId, eventId, eventType, and various optional type-specific parameters.sceneId: z.string().min(1).describe('Scene ID'), eventId: z.string().min(1).describe('Event ID'), eventType: z.string().min(1).describe('Event type'), // Dynamic parameters based on event type keyCode: z.string().optional().describe('Key code for keyboard events'), distance: z.number().optional().describe('Distance for spatial events'), targetObjectId: z.string().optional().describe('Target object for lookAt/follow events'), variableName: z.string().optional().describe('Variable name for variableChange events'), collisionGroup: z.string().optional().describe('Collision group for physics events'), triggerArea: z.object({ position: z.object({ x: z.number(), y: z.number(), z: z.number(), }), size: z.object({ x: z.number(), y: z.number(), z: z.number(), }), }).optional().describe('Trigger area dimensions'), aiPrompt: z.string().optional().describe('Prompt for AI assistant events'), customParameters: z.record(z.any()).optional().describe('Any additional custom parameters') },
- src/tools/complete-event-tools.js:79-177 (registration)The server.tool call that registers the 'configureEventParameters' tool with its schema and handler function.server.tool( 'configureEventParameters', { sceneId: z.string().min(1).describe('Scene ID'), eventId: z.string().min(1).describe('Event ID'), eventType: z.string().min(1).describe('Event type'), // Dynamic parameters based on event type keyCode: z.string().optional().describe('Key code for keyboard events'), distance: z.number().optional().describe('Distance for spatial events'), targetObjectId: z.string().optional().describe('Target object for lookAt/follow events'), variableName: z.string().optional().describe('Variable name for variableChange events'), collisionGroup: z.string().optional().describe('Collision group for physics events'), triggerArea: z.object({ position: z.object({ x: z.number(), y: z.number(), z: z.number(), }), size: z.object({ x: z.number(), y: z.number(), z: z.number(), }), }).optional().describe('Trigger area dimensions'), aiPrompt: z.string().optional().describe('Prompt for AI assistant events'), customParameters: z.record(z.any()).optional().describe('Any additional custom parameters') }, async ({ sceneId, eventId, eventType, keyCode, distance, targetObjectId, variableName, collisionGroup, triggerArea, aiPrompt, customParameters }) => { try { // Construct parameters based on event type let parameters = {}; switch (eventType) { case 'keyUp': case 'keyDown': case 'keyPress': parameters = { keyCode }; break; case 'distance': parameters = { distance, targetObjectId }; break; case 'lookAt': case 'follow': parameters = { targetObjectId }; break; case 'variableChange': parameters = { variableName }; break; case 'collision': parameters = { collisionGroup }; break; case 'triggerArea': parameters = { triggerArea }; break; case 'aiAssistantListener': case 'aiAssistantTrigger': parameters = { aiPrompt }; break; default: // For other events, use custom parameters parameters = customParameters || {}; } // Update the event with the configured parameters await apiClient.request('PUT', `/scenes/${sceneId}/events/${eventId}/parameters`, parameters); return { content: [ { type: 'text', text: `Parameters for event ${eventId} configured successfully` } ] }; } catch (error) { return { content: [ { type: 'text', text: `Error configuring event parameters: ${error.message}` } ], isError: true }; } } );
- src/index.js:96-96 (registration)Top-level call to registerCompleteEventTools(server) which includes the registration of configureEventParameters.registerCompleteEventTools(server);