コード例 #1
0
ファイル: graph_edit.cpp プロジェクト: Scrik/godot
Array GraphEdit::_get_connection_list() const {

	List<Connection> conns;
	get_connection_list(&conns);
	Array arr;
	for(List<Connection>::Element *E=conns.front();E;E=E->next()) {
		Dictionary d;
		d["from"]=E->get().from;
		d["from_port"]=E->get().from_port;
		d["to"]=E->get().to;
		d["to_port"]=E->get().to_port;
		arr.push_back(d);
	}
	return arr;
}
コード例 #2
0
ファイル: iscsid_main.c プロジェクト: ajinkya93/netbsd-src
static void
process_message(iscsid_request_t *req, iscsid_response_t **prsp, int *prsp_temp)
{
	iscsid_response_t *rsp;
	void *p = req->parameter;

	*prsp_temp = FALSE;
	*prsp = rsp = (iscsid_response_t *)(void *)rsp_buf;
	rsp->parameter_length = 0;
	rsp->status = ISCSID_STATUS_SUCCESS;

	switch (req->request) {
	case ISCSID_ADD_TARGET:
		if (req->parameter_length < sizeof(iscsid_add_target_req_t)) {
			rsp->status = ISCSID_STATUS_INVALID_PARAMETER;
			break;
		}
		add_target((iscsid_add_target_req_t *)p, prsp, prsp_temp);
		break;

	case ISCSID_ADD_PORTAL:
		if (req->parameter_length != sizeof(iscsid_add_portal_req_t)) {
			rsp->status = ISCSID_STATUS_INVALID_PARAMETER;
			break;
		}
		add_portal((iscsid_add_portal_req_t *)p, prsp, prsp_temp);
		break;

	case ISCSID_SET_TARGET_OPTIONS:
		if (req->parameter_length != sizeof(iscsid_get_set_target_options_t)) {
			rsp->status = ISCSID_STATUS_INVALID_PARAMETER;
			break;
		}
		rsp->status = set_target_options((iscsid_get_set_target_options_t *)p);
		break;

	case ISCSID_GET_TARGET_OPTIONS:
		if (req->parameter_length != sizeof(iscsid_sym_id_t)) {
			rsp->status = ISCSID_STATUS_INVALID_PARAMETER;
			break;
		}
		rsp->status = ISCSID_STATUS_NOTIMPL;
		break;

	case ISCSID_SET_TARGET_AUTHENTICATION:
		if (req->parameter_length !=
			sizeof(iscsid_set_target_authentication_req_t)) {
			rsp->status = ISCSID_STATUS_INVALID_PARAMETER;
			break;
		}
		rsp->status = set_target_auth((iscsid_set_target_authentication_req_t *)p);
		break;

	case ISCSID_SLP_FIND_TARGETS:
		rsp->status = ISCSID_STATUS_NOTIMPL;
		break;

	case ISCSID_REFRESH_TARGETS:
		if (req->parameter_length < sizeof(iscsid_refresh_req_t)) {
			rsp->status = ISCSID_STATUS_INVALID_PARAMETER;
			break;
		}
		rsp->status = refresh_targets((iscsid_refresh_req_t *)p);
		break;

	case ISCSID_REMOVE_TARGET:
		if (req->parameter_length != sizeof(iscsid_list_id_t)) {
			rsp->status = ISCSID_STATUS_INVALID_PARAMETER;
			break;
		}
		rsp->status = remove_target((iscsid_list_id_t *)p);
		break;

	case ISCSID_SEARCH_LIST:
		if (req->parameter_length != sizeof(iscsid_search_list_req_t)) {
			rsp->status = ISCSID_STATUS_INVALID_PARAMETER;
			break;
		}
		search_list((iscsid_search_list_req_t *)p, prsp, prsp_temp);
		break;

	case ISCSID_GET_LIST:
		if (req->parameter_length != sizeof(iscsid_get_list_req_t)) {
			rsp->status = ISCSID_STATUS_INVALID_PARAMETER;
			break;
		}
		get_list((iscsid_get_list_req_t *)p, prsp, prsp_temp);
		break;

	case ISCSID_GET_TARGET_INFO:
		if (req->parameter_length != sizeof(iscsid_list_id_t)) {
			rsp->status = ISCSID_STATUS_INVALID_PARAMETER;
			break;
		}
		get_target_info((iscsid_list_id_t *)p, prsp, prsp_temp);
		break;

	case ISCSID_GET_PORTAL_INFO:
		if (req->parameter_length != sizeof(iscsid_list_id_t)) {
			rsp->status = ISCSID_STATUS_INVALID_PARAMETER;
			break;
		}
		get_portal_info((iscsid_list_id_t *)p, prsp, prsp_temp);
		break;

#ifndef ISCSI_MINIMAL
	case ISCSID_ADD_ISNS_SERVER:
		if (req->parameter_length != sizeof(iscsid_add_isns_server_req_t)) {
			rsp->status = ISCSID_STATUS_INVALID_PARAMETER;
			break;
		}
		add_isns_server((iscsid_add_isns_server_req_t *)p,
						prsp, prsp_temp);
		break;

	case ISCSID_GET_ISNS_SERVER:
		if (req->parameter_length != sizeof(iscsid_sym_id_t)) {
			rsp->status = ISCSID_STATUS_INVALID_PARAMETER;
			break;
		}
		get_isns_server((iscsid_sym_id_t *)p, prsp, prsp_temp);
		break;

	case ISCSID_SLP_FIND_ISNS_SERVERS:
		rsp->status = ISCSID_STATUS_NOTIMPL;
		break;

	case ISCSID_REMOVE_ISNS_SERVER:
		if (req->parameter_length != sizeof(iscsid_sym_id_t)) {
			rsp->status = ISCSID_STATUS_INVALID_PARAMETER;
			break;
		}
		rsp->status = remove_isns_server((iscsid_sym_id_t *)p);
		break;
#endif

	case ISCSID_ADD_INITIATOR_PORTAL:
		if (req->parameter_length != sizeof(iscsid_add_initiator_req_t)) {
			rsp->status = ISCSID_STATUS_INVALID_PARAMETER;
			break;
		}
		add_initiator_portal((iscsid_add_initiator_req_t *)p,
							prsp, prsp_temp);
		break;

	case ISCSID_GET_INITIATOR_PORTAL:
		if (req->parameter_length != sizeof(iscsid_sym_id_t)) {
			rsp->status = ISCSID_STATUS_INVALID_PARAMETER;
			break;
		}
		get_initiator_portal((iscsid_sym_id_t *)p, prsp, prsp_temp);
		break;

	case ISCSID_REMOVE_INITIATOR_PORTAL:
		if (req->parameter_length != sizeof(iscsid_sym_id_t)) {
			rsp->status = ISCSID_STATUS_INVALID_PARAMETER;
			break;
		}
		rsp->status = remove_initiator_portal((iscsid_sym_id_t *)p);
		break;

	case ISCSID_LOGIN:
		if (req->parameter_length != sizeof(iscsid_login_req_t)) {
			rsp->status = ISCSID_STATUS_INVALID_PARAMETER;
			break;
		}
		login((iscsid_login_req_t *)p, rsp);
		break;

	case ISCSID_ADD_CONNECTION:
		if (req->parameter_length != sizeof(iscsid_login_req_t)) {
			rsp->status = ISCSID_STATUS_INVALID_PARAMETER;
			break;
		}
		add_connection((iscsid_login_req_t *)p, rsp);
		break;

	case ISCSID_LOGOUT:
		if (req->parameter_length != sizeof(iscsid_sym_id_t)) {
			rsp->status = ISCSID_STATUS_INVALID_PARAMETER;
			break;
		}
		rsp->status = logout((iscsid_sym_id_t *)p);
		break;

	case ISCSID_REMOVE_CONNECTION:
		if (req->parameter_length != sizeof(iscsid_remove_connection_req_t)) {
			rsp->status = ISCSID_STATUS_INVALID_PARAMETER;
			break;
		}
		rsp->status = remove_connection((iscsid_remove_connection_req_t *)p);
		break;

	case ISCSID_GET_SESSION_LIST:
		get_session_list(prsp, prsp_temp);
		break;

	case ISCSID_GET_CONNECTION_LIST:
		if (req->parameter_length != sizeof(iscsid_sym_id_t)) {
			rsp->status = ISCSID_STATUS_INVALID_PARAMETER;
			break;
		}
		get_connection_list((iscsid_sym_id_t *)p, prsp, prsp_temp);
		break;

	case ISCSID_GET_CONNECTION_INFO:
		if (req->parameter_length != sizeof(iscsid_get_connection_info_req_t)) {
			rsp->status = ISCSID_STATUS_INVALID_PARAMETER;
			break;
		}
		get_connection_info((iscsid_get_connection_info_req_t *)p,
							prsp, prsp_temp);
		break;

	case ISCSID_SET_NODE_NAME:
		if (req->parameter_length != sizeof(iscsid_set_node_name_req_t)) {
			rsp->status = ISCSID_STATUS_INVALID_PARAMETER;
			break;
		}
		rsp->status = set_node_name((iscsid_set_node_name_req_t *)p);
		break;

	case ISCSID_GET_VERSION:
		get_version(prsp, prsp_temp);
		break;

	default:
		rsp->status = ISCSID_STATUS_INVALID_REQUEST;
		break;
	}
}
コード例 #3
0
ファイル: animation_tree_player.cpp プロジェクト: RYG81/godot
bool AnimationTreePlayer::_get(const StringName& p_name,Variant &r_ret) const {

	if (String(p_name)=="base_path") {
		r_ret=base_path;
		return true;
	}

	if (String(p_name)=="master_player") {
		r_ret=master;
		return true;
	}

	if (String(p_name) == "playback/active") {
		r_ret=is_active();
		return true;
	}

	if (String(p_name)!="data")
		return false;

	Dictionary data;

	Array nodes;

	for(Map<StringName,NodeBase*>::Element *E=node_map.front();E;E=E->next()) {

		NodeBase *n = node_map[E->key()];

		Dictionary node;
		node["id"]=E->key();
		node["pos"]=n->pos;

		switch(n->type) {
			case NODE_OUTPUT: node["type"]= "output"; break;
			case NODE_ANIMATION: node["type"]= "animation"; break;
			case NODE_ONESHOT: node["type"]= "oneshot"; break;
			case NODE_MIX: node["type"]= "mix"; break;
			case NODE_BLEND2: node["type"]= "blend2"; break;
			case NODE_BLEND3: node["type"]= "blend3"; break;
			case NODE_BLEND4: node["type"]= "blend4"; break;
			case NODE_TIMESCALE: node["type"]= "timescale"; break;
			case NODE_TIMESEEK: node["type"]= "timeseek"; break;
			case NODE_TRANSITION: node["type"]= "transition"; break;
			default: node["type"]= ""; break;
		}

		switch(n->type) {
			case NODE_OUTPUT: {

			} break;
			case NODE_ANIMATION: {
				AnimationNode *an = static_cast<AnimationNode*>(n);
				if (master!=NodePath() && an->from!="") {
					node["from"]=an->from;
				} else {
					node["animation"]=an->animation;
				}
			   } break;
			case NODE_ONESHOT: {
				OneShotNode *osn = static_cast<OneShotNode*>(n);
				node["fade_in"]=osn->fade_in;
				node["fade_out"]=osn->fade_out;
				node["mix"]=osn->mix;
				node["autorestart"]=osn->autorestart;
				node["autorestart_delay"]=osn->autorestart_delay;
				node["autorestart_random_delay"]=osn->autorestart_random_delay;

				Array k;
				List<NodePath> keys;
				osn->filter.get_key_list(&keys);
				k.resize(keys.size());
				int i=0;
				for(List<NodePath>::Element *E=keys.front();E;E=E->next()) {
					k[i++]=E->get();
				}
				node["filter"]=k;

			} break;
			case NODE_MIX: {
				MixNode *mn = static_cast<MixNode*>(n);
				node["mix"]=mn->amount;
			} break;
			case NODE_BLEND2: {
				Blend2Node *bn = static_cast<Blend2Node*>(n);
				node["blend"]=bn->value;
				Array k;
				List<NodePath> keys;
				bn->filter.get_key_list(&keys);
				k.resize(keys.size());
				int i=0;
				for(List<NodePath>::Element *E=keys.front();E;E=E->next()) {
					k[i++]=E->get();
				}
				node["filter"]=k;

			} break;
			case NODE_BLEND3: {
				Blend3Node *bn = static_cast<Blend3Node*>(n);
				node["blend"]=bn->value;
			} break;
			case NODE_BLEND4: {
				Blend4Node *bn = static_cast<Blend4Node*>(n);
				node["blend"]=bn->value;

			} break;
			case NODE_TIMESCALE: {
				TimeScaleNode *tsn = static_cast<TimeScaleNode*>(n);
				node["scale"]=tsn->scale;
			} break;
			case NODE_TIMESEEK: {
			} break;
			case NODE_TRANSITION: {

				TransitionNode *tn = static_cast<TransitionNode*>(n);
				node["xfade"]=tn->xfade;
				Array transitions;

				for(int i=0;i<tn->input_data.size();i++) {

					Dictionary d;
					d["auto_advance"]=tn->input_data[i].auto_advance;
					transitions.push_back(d);

				}

				node["transitions"]=transitions;

			} break;
			default: {};
		}

		nodes.push_back(node);
	}

	data["nodes"]=nodes;
	//connectiosn

	List<Connection> connections;
	get_connection_list(&connections);
	Array connections_arr;
	connections_arr.resize(connections.size()*3);

	int idx=0;
	for (List<Connection>::Element *E=connections.front();E;E=E->next()) {

		connections_arr.set(idx+0,E->get().src_node);
		connections_arr.set(idx+1,E->get().dst_node);
		connections_arr.set(idx+2,E->get().dst_input);

		idx+=3;
	}

	data["connections"]=connections_arr;
	data["active"]=active;
	data["master"]=master;

	r_ret=data;

	return true;

}