Exemple #1
0
bool BoneAttachment::_get(const StringName &p_name, Variant &r_ret) const {

	if (String(p_name) == "bone_name") {

		r_ret = get_bone_name();
		return true;
	}

	return false;
}
Exemple #2
0
bool Skeleton::_get(const StringName& p_name,Variant &r_ret) const {

	String path=p_name;

	if (!path.begins_with("bones/"))
		return false;

	int which=path.get_slicec('/',1).to_int();
	String what=path.get_slicec('/',2);

	ERR_FAIL_INDEX_V( which, bones.size(), false );

	if (what=="name")
		r_ret=get_bone_name(which);
	else if (what=="parent")
		r_ret=get_bone_parent(which);
	else if (what=="rest")
		r_ret=get_bone_rest(which);
	else if (what=="enabled")
		r_ret=is_bone_enabled(which);
	else if (what=="pose")
		r_ret=get_bone_pose(which);
	else if (what=="bound_childs") {
		Array children;

		for (const List<uint32_t>::Element *E=bones[which].nodes_bound.front();E;E=E->next()) {

			Object *obj=ObjectDB::get_instance(E->get());
			ERR_CONTINUE(!obj);
			Node *node=obj->cast_to<Node>();
			ERR_CONTINUE(!node);
			NodePath path=get_path_to(node);
			children.push_back(path);

		}

		r_ret=children;
	} else
		return false;

	return true;

}