Skip to main content
Glama
scene_tools.cpython-312.pyc15.2 kB
� ���g@4��L�ddlmZmZddlmZmZmZmZddlZddl m Z defd�Z y)�)�FastMCP�Context)�List�Dict�Any�OptionalN)�get_unity_connection�mcpc��|j�dtdtfd��}|j�dtdtdtfd��}|j�dtdtfd��}|j�ddtdtdtdtfd��}|j�ddtdtd tdtfd ��}|j�dtd tdtfd ��}|j� ddtdtdtdtt dtt dtt dtdtfd��}|j� ddtdtdt tt dt tt dt tt dt tdt tdt tdt tdt tttfdtfd��}|j�ddtdtdtdtfd��} y ) z5Register all scene-related tools with the MCP server.�ctx�returnc�� t�}|jd�}tj|d��S#t$r}dt |���cYd}~Sd}~wwxYw)z5Retrieve detailed info about the current Unity scene.�GET_SCENE_INFO���indentzError getting scene info: N�r � send_command�json�dumps� Exception�str�r �unity�result�es ��C:\1_Sagyo\VRchat\Project\IshouJidouChouseiToul\Library\PackageCache\com.zundamonnovrchat.unity-mcp-ollama@994ecdcda9\Python\tools\scene_tools.py�get_scene_infoz,register_scene_tools.<locals>.get_scene_info sR�� 9�(�*�E��'�'�(8�9�F��:�:�f�Q�/� /��� 9�/��A��x�8� 8�� 9�s�14� A� A� A�A� scene_pathc ��� t�}|jdd�jd�ddj�jd�dd�xsdd��j dg�}t �fd �|D��}|sd ��d �S|jd d �i�}|j dd�S#t $r}dt|���cYd}~Sd}~wwxYw)z�Open a specified scene in the Unity editor. Args: scene_path: Full path to the scene file (e.g., "Assets/Scenes/MyScene.unity") Returns: str: Success message or error details �GET_ASSET_LIST�Scene�/�����N�Assets��type�search_pattern�folder�assetsc3�F�K�|]}|jd��k(���y�w��pathN��get��.0�sceners �r� <genexpr>z;register_scene_tools.<locals>.open_scene.<locals>.<genexpr>(� �����S�F�5�u�y�y��0�J�>�F���!� Scene at 'z' not found in the project.� OPEN_SCENEr�messagezScene opened successfullyzError opening scene: �r r�split�joinr/�anyrr)r rr�scenes� scene_existsrrs ` r� open_scenez(register_scene_tools.<locals>.open_scenes���� 4�(�*�E��'�'�(8��",�"2�"2�3�"7��";��(�(�:�#3�#3�C�#8��"�#=�>�J�(�;���s�8�R� � ��S�F�S�S�L��#�J�<�/J�K�K��'�'� �|�Z�6P�Q�F��:�:�i�)D�E� E��� 4�*�3�q�6�(�3� 3�� 4�s$�BB,�%B,�, C �5 C�C �C c�� t�}|jd�}|jdd�S#t$r}dt |���cYd}~Sd}~wwxYw)zxSave the current scene to its file. Returns: str: Success message or error details � SAVE_SCENEr8zScene saved successfullyzError saving scene: N�r rr/rrrs r� save_scenez(register_scene_tools.<locals>.save_scene1sR�� 3�(�*�E��'�'� �5�F��:�:�i�)C�D� D��� 3�)�#�a�&��2� 2�� 3�s�,/� A� A �A� A� overwritec ���� t�}|jdd�jd�ddj�jd�dd�xsdd��j dg�}t �fd �|D��}|r|sd ��d �S|jd �|d ��}|jd�|jd�}|j dd�S#t $r}dt|���cYd}~Sd}~wwxYw)a_Create a new empty scene in the Unity editor. Args: scene_path: Full path where the new scene should be saved (e.g., "Assets/Scenes/NewScene.unity") overwrite: Whether to overwrite if scene already exists (default: False) Returns: str: Success message or error details r!r"r#r$Nr%r&r*c3�F�K�|]}|jd��k(���y�wr,r.r0s �rr3z:register_scene_tools.<locals>.new_scene.<locals>.<genexpr>Ur4r5r6z3' already exists. Use overwrite=True to replace it.� NEW_SCENE)rrDrArr8zNew scene created successfullyzError creating new scene: r9) r rrDrr=r>r� scene_infors ` r� new_scenez'register_scene_tools.<locals>.new_scene?s��� 9�(�*�E��'�'�(8��",�"2�"2�3�"7��";��(�(�:�#3�#3�C�#8��"�#=�>�J�(�;���s�8�R� � ��S�F�S�S�L��I�#�J�<�/b�c�c��'�'� �(�&�6��F� � � �|� ,��+�+�,<�=�J��:�:�i�)I�J� J��� 9�/��A��x�8� 8�� 9�s%�BC�AC� C2� C-�'C2�-C2� save_currentc�� t�}|jd||d��}|jdd�S#t$r}dt |���cYd}~Sd}~wwxYw)aqChange to a different scene, optionally saving the current one. Args: scene_path: Full path to the target scene file (e.g., "Assets/Scenes/TargetScene.unity") save_current: Whether to save the current scene before changing (default: False) Returns: str: Success message or error details � CHANGE_SCENE)rrJr8zScene changed successfullyzError changing scene: NrB)r rrJrrrs r� change_scenez*register_scene_tools.<locals>.change_sceneisa�� 5�(�*�E��'�'��(� ,�9��F��:�:�i�)E�F� F��� 5�+�C��F�8�4� 4�� 5�s�03� A� A� A�A� object_namec�� t�}|jdd|i�}tj|d��S#t$r}dt |���cYd}~Sd}~wwxYw)z� Get info about a specific game object. Args: object_name: Name of the game object. �GET_OBJECT_INFO�namerrzError getting object info: Nr)r rNrrrs r�get_object_infoz-register_scene_tools.<locals>.get_object_info~sY�� :�(�*�E��'�'�(9�F�K�;P�Q�F��:�:�f�Q�/� /��� :�0��Q���9� 9�� :�s�47� A� A� A�ANr'rQ�location�rotation�scale�replace_if_existsc�� t�}|rF|jdd|i�jdg�}|r|sd|�d�S|r|r|jdd|i�|j�|xsgd�|xsgd�|xsgd�d �} |r|| d<|jd | �} d |�d | d��S#t$r} d t | ���cYd} ~ Sd} ~ wwxYw)a| Create a game object in the Unity scene. Args: type: Object type (CUBE, SPHERE, CYLINDER, CAPSULE, PLANE, EMPTY, CAMERA, LIGHT). name: Optional name for the game object. location: [x, y, z] position (defaults to [0, 0, 0]). rotation: [x, y, z] rotation in degrees (defaults to [0, 0, 0]). scale: [x, y, z] scale factors (defaults to [1, 1, 1]). replace_if_exists: Whether to replace if an object with the same name exists (default: False) Returns: Confirmation message with the created object's name. �FIND_OBJECTS_BY_NAMErQ�objects�Object with name 'z;' already exists. Use replace_if_exists=True to replace it.� DELETE_OBJECT)rrr)�r\r\)r'rSrTrU� CREATE_OBJECTzCreated z game object: zError creating game object: N)r rr/�upperrr) r r'rQrSrTrUrVr� found_objects�paramsrrs r� create_objectz+register_scene_tools.<locals>.create_object�s���0 ;�(�*�E�� %� 2� 2�3I��D�L�!��3�y�"�%��!�):�/��v�5p�q�q�"�'8��&�&�����G�� � � �$�1� �$�1� ��+�)� �F� �!%��v���'�'���@�F��d�V�>�&��.�1A�B� B��� ;�1�#�a�&��:� :�� ;�s#�9B�A"B� C�( B;�5C�;C�visible� set_parent� add_component�remove_component� set_propertyc ����� t�} | jdd|i�jdg�} | sd|�d�S|�,| jdd|i�jdg�} | sd|�d�S��E| jdd|i�} | jd g�}t�fd �|D��}|r d ��d |�d �S��E| jdd|i�} | jd g�}t�fd�|D��}|s d ��d|�d �Sd|i}|�||d<|�||d<|�||d<|�||d<|�||d<���|d<���|d<| �| |d<| jd|�}d|d��S#t$r}dt |���cYd}~Sd}~wwxYw)a� Modify a game object's properties and components. Args: name: Name of the game object to modify. location: Optional [x, y, z] position. rotation: Optional [x, y, z] rotation in degrees. scale: Optional [x, y, z] scale factors. visible: Optional visibility toggle. set_parent: Optional name of the parent object to set. add_component: Optional name of the component type to add (e.g., "Rigidbody", "BoxCollider"). remove_component: Optional name of the component type to remove. set_property: Optional dict with keys: - component: Name of the component type - property: Name of the property to set - value: Value to set the property to Returns: str: Success message or error details rXrQrYrZ�' not found in the scene.NzParent object '�GET_OBJECT_PROPERTIES� componentsc3�F�K�|]}|jd��k(���y�w�r'Nr.)r1�comprds �rr3z>register_scene_tools.<locals>.modify_object.<locals>.<genexpr>�s"�����&`�U_�T�t�x�x��'7�=�'H�U_�r5z Component 'z' is already attached to 'z'.c3�F�K�|]}|jd��k(���y�wrlr.)r1rmres �rr3z>register_scene_tools.<locals>.modify_object.<locals>.<genexpr> s$�����&c�Xb�PT�t�x�x��'7�;K�'K�Xb�r5z' is not attached to 'rSrTrUrbrcrdrerf� MODIFY_OBJECTzModified game object: zError modifying game object: )r rr/r<rr)r rQrSrTrUrbrcrdrerfrr_�parent_objects� object_propsrj�component_existsr`rrs `` r� modify_objectz+register_scene_tools.<locals>.modify_object�sH���BI <�(�*�E�"�.�.�/E���H���s�9�b�!� �!�+�D�6�1J�K�K��%�!&�!3�!3�4J��J�M�"��3�y�"�%��&�,�Z�L�8Q�R�R��(�$�1�1�2I��D�L� � �*�-�-�l�B�?� �#&�&`�U_�&`�#`� �#�(���7Q�RV�QW�WY�Z�Z� �+�$�1�1�2I��D�L� � �*�-�-�l�B�?� �#&�&c�Xb�&c�#c� �'�(�)9�(:�:P�QU�PV�VX�Y�Y��d�^�F��#�%-��z�"��#�%-��z�"�� �"'��w���"�$+��y�!��%�'1��|�$��(�*7���'��+�-=��)�*��'�)5��~�&��'�'���@�F�+�F�6�N�+;�<� <��� <�2�3�q�6�(�;� ;�� <�s7�5E �-E �(AE �/AE �6AE � E-� E(�"E-�(E-�ignore_missingc��� t�}|jdd|i�jdg�}|s|rd|�d�Sd|�d�S|jdd|i�}d |��S#t$r}d t |���cYd }~Sd }~wwxYw) a2 Remove a game object from the scene. Args: name: Name of the game object to delete. ignore_missing: Whether to silently ignore if the object doesn't exist (default: False) Returns: str: Success message or error details rXrQrYzNo object named 'z' found to delete. Ignoring.zError: Object 'rhr[zDeleted game object: zError deleting game object: NrB)r rQrtrr_rrs r� delete_objectz+register_scene_tools.<locals>.delete_object/s��� ;�(�*�E�"�.�.�/E���H���s�9�b�!� �!�!�.�t�f�4P�Q�Q�,�T�F�2K�L�L��'�'��&�$��H�F�*�4�&�1� 1��� ;�1�#�a�&��:� :�� ;�s(�7A�A�A� A:�" A5�/A:�5A:)F)�CUBENNNNF)NNNNNNNN) �toolrr�boolr�floatrrr) r rr?rCrIrMrRrarsrvs r�register_scene_toolsr{s��� �X�X�Z�9�G�9��9��9� �X�X�Z�4��4�S�4�S�4��4�: �X�X�Z� 3�� 3�C� 3�� 3� �X�X�Z�'9�w�'9�C�'9�D�'9�S�'9��'9�R �X�X�Z�5�'�5�s�5�$�5�SV�5��5�( �X�X�Z� :�W� :�3� :�3� :�� :� �X�X�Z��� $� $�!�"'�3;� �3;��3;��3;��u�+� 3;� �u�+� 3;� �E�{� 3;� �3;� �3;��3;�j �X�X�Z�+/�*.�'+�"&�$(�'+�*.�15�i<� �i<��i<��4��;�'�i<��4��;�'� i<� ��U� �$� i<� �$�� i<��S�M�i<� ��}�i<�#�3�-�i<��t�C��H�~�.�i<� �i<��i<�V �X�X�Z�;�7�;�#�;�t�;�PS�;��;�) �mcp.server.fastmcprr�typingrrrrr�unity_connectionr r{�r|r�<module>r�s"��/�,�,� �1�F;�g�F;r|

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ZundamonnoVRChatkaisetu/unity-mcp-ollama'

If you have feedback or need assistance with the MCP directory API, please join our Discord server