/**************************************************************************/ /* xr_face_modifier_3d.cpp */ /**************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ /* https://godotengine.org */ /**************************************************************************/ /* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ /* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ /* "Software"), to deal in the Software without restriction, including */ /* without limitation the rights to use, copy, modify, merge, publish, */ /* distribute, sublicense, and/or sell copies of the Software, and to */ /* permit persons to whom the Software is furnished to do so, subject to */ /* the following conditions: */ /* */ /* The above copyright notice and this permission notice shall be */ /* included in all copies or substantial portions of the Software. */ /* */ /* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ /* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ /* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ /* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ /* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /**************************************************************************/ #include "xr_face_modifier_3d.h" #include "servers/xr/xr_face_tracker.h" #include "servers/xr_server.h" // This method takes the name of a mesh blend shape and returns the // corresponding XRFaceTracker blend shape. If no match is // found then the function returns -1. static int find_face_blend_shape(const StringName &p_name) { … } // This method adds all the identified XRFaceTracker blend shapes of // the mesh to the p_blend_mapping map. The map is indexed by the // XRFaceTracker blend shape, and the value is the index of the mesh // blend shape. static void identify_face_blend_shapes(RBMap<int, int> &p_blend_mapping, const Ref<Mesh> &mesh) { … } // This method removes any unified blend shapes from the p_blend_mapping map // if all the individual blend shapes are found and going to be driven. static void remove_driven_unified_blend_shapes(RBMap<int, int> &p_blend_mapping) { … } void XRFaceModifier3D::_bind_methods() { … } void XRFaceModifier3D::set_face_tracker(const StringName &p_tracker_name) { … } StringName XRFaceModifier3D::get_face_tracker() const { … } void XRFaceModifier3D::set_target(const NodePath &p_target) { … } NodePath XRFaceModifier3D::get_target() const { … } MeshInstance3D *XRFaceModifier3D::get_mesh_instance() const { … } void XRFaceModifier3D::_get_blend_data() { … } void XRFaceModifier3D::_update_face_blends() const { … } void XRFaceModifier3D::_notification(int p_what) { … }