本文整理汇总了C++中call_deferred函数的典型用法代码示例。如果您正苦于以下问题:C++ call_deferred函数的具体用法?C++ call_deferred怎么用?C++ call_deferred使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了call_deferred函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: call_deferred
void EditorFileDialog::_item_dc_selected(int p_item) {
int current = p_item;
if (current<0 || current>=item_list->get_item_count())
return;
Dictionary d=item_list->get_item_metadata(current);
if (d["dir"]) {
//print_line("change dir: "+String(d["name"]));
dir_access->change_dir(d["name"]);
if (mode==MODE_OPEN_FILE || mode==MODE_OPEN_FILES || mode==MODE_OPEN_DIR || MODE_OPEN_ANY)
file->set_text("");
call_deferred("_update_file_list");
call_deferred("_update_dir");
_push_history();
} else {
_action_pressed();
}
}
示例2: memdelete
void EditorFileSystem::update_file(const String& p_file) {
EditorFileSystemDirectory *fs=NULL;
int cpos=-1;
if (!_find_file(p_file,&fs,cpos)) {
if (!fs)
return;
}
if (!FileAccess::exists(p_file)) {
//was removed
memdelete( fs->files[cpos] );
fs->files.remove(cpos);
call_deferred("emit_signal","filesystem_changed"); //update later
return;
}
String type = ResourceLoader::get_resource_type(p_file);
if (cpos==-1) {
int idx=0;
for(int i=0;i<fs->files.size();i++) {
if (p_file<fs->files[i]->file)
break;
idx++;
}
EditorFileSystemDirectory::FileInfo *fi = memnew( EditorFileSystemDirectory::FileInfo );
fi->file=p_file.get_file();
if (idx==fs->files.size()) {
fs->files.push_back(fi);
} else {
fs->files.insert(idx,fi);
}
cpos=idx;
}
//print_line("UPDATING: "+p_file);
fs->files[cpos]->type=type;
fs->files[cpos]->modified_time=FileAccess::get_modified_time(p_file);
fs->files[cpos]->meta=_get_meta(p_file);
EditorResourcePreview::get_singleton()->call_deferred("check_for_invalidation",p_file);
call_deferred("emit_signal","filesystem_changed"); //update later
}
示例3: call_deferred
void StreamPlayer::sp_update() {
//_THREAD_SAFE_METHOD_
if (!paused && resampler.is_ready() && playback.is_valid()) {
if (!playback->is_playing()) {
//stream depleted data, but there's still audio in the ringbuffer
//check that all this audio has been flushed before stopping the stream
int to_mix = resampler.get_total() - resampler.get_todo();
if (to_mix==0) {
if (!stop_request) {
stop_request=true;
call_deferred("stop");
}
return;
}
return;
}
int todo =resampler.get_todo();
int wrote = playback->mix(resampler.get_write_buffer(),todo);
resampler.write(wrote);
}
}
示例4: Variant
Variant Object::_call_deferred_bind(const Variant** p_args, int p_argcount, Variant::CallError& r_error) {
if (p_argcount<1) {
r_error.error=Variant::CallError::CALL_ERROR_TOO_FEW_ARGUMENTS;
r_error.argument=0;
return Variant();
}
if (p_args[0]->get_type()!=Variant::STRING) {
r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT;
r_error.argument=0;
r_error.expected=Variant::STRING;
return Variant();
}
r_error.error=Variant::CallError::CALL_OK;
StringName signal = *p_args[0];
Variant v[VARIANT_ARG_MAX];
for(int i=0;i<MIN(5,p_argcount-1);i++) {
v[i]=*p_args[i+1];
}
call_deferred(signal,v[0],v[1],v[2],v[3],v[4]);
return Variant();
}
示例5: ERR_FAIL_COND_V
Error HTTPRequest::request(const String &p_url, const Vector<String> &p_custom_headers, bool p_ssl_validate_domain, HTTPClient::Method p_method, const String &p_request_data) {
ERR_FAIL_COND_V(!is_inside_tree(), ERR_UNCONFIGURED);
if (requesting) {
ERR_EXPLAIN("HTTPRequest is processing a request. Wait for completion or cancel it before attempting a new one.");
ERR_FAIL_V(ERR_BUSY);
}
method = p_method;
Error err = _parse_url(p_url);
if (err)
return err;
validate_ssl = p_ssl_validate_domain;
bool has_user_agent = false;
bool has_accept = false;
headers = p_custom_headers;
request_data = p_request_data;
for (int i = 0; i < headers.size(); i++) {
if (headers[i].findn("user-agent:") == 0)
has_user_agent = true;
if (headers[i].findn("Accept:") == 0)
has_accept = true;
}
if (!has_user_agent) {
headers.push_back("User-Agent: GodotEngine/" + String(VERSION_MKSTRING) + " (" + OS::get_singleton()->get_name() + ")");
}
if (!has_accept) {
headers.push_back("Accept: */*");
}
requesting = true;
if (use_threads) {
thread_done = false;
thread_request_quit = false;
client->set_blocking_mode(true);
thread = Thread::create(_thread_func, this);
} else {
client->set_blocking_mode(false);
err = _request();
if (err != OK) {
call_deferred("_request_done", RESULT_CANT_CONNECT, 0, PoolStringArray(), PoolByteArray());
return ERR_CANT_CONNECT;
}
set_process_internal(true);
}
return OK;
}
示例6: call_deferred
void AnimationTree::_tree_changed() {
if (properties_dirty) {
return;
}
call_deferred("_update_properties");
properties_dirty = true;
}
示例7: if
void SpriteBase3D::_queue_update(){
if (pending_update)
return;
pending_update=true;
call_deferred(SceneStringNames::get_singleton()->_im_update);
}
示例8: call_deferred
void ProceduralSky::_queue_update() {
if (update_queued)
return;
update_queued = true;
call_deferred("_update_sky");
}
示例9: call_deferred
void SpatialIndexer::_request_update() {
if (pending_update)
return;
pending_update=true;
call_deferred(SceneStringNames::get_singleton()->_update_pairs);
}
示例10: call_deferred
void ProjectSettings::_translation_res_select() {
if (updating_translations)
return;
call_deferred("_update_translations");
}
示例11: call_deferred
void NoiseTexture::_queue_update() {
if (update_queued)
return;
update_queued = true;
call_deferred("_update_texture");
}
示例12: ERR_FAIL_COND
void ResourcesDock::_delete(Object* p_item, int p_column, int p_id) {
TreeItem *ti = p_item->cast_to<TreeItem>();
ERR_FAIL_COND(!ti);
call_deferred("remove_resource",ti->get_metadata(0));
}
示例13: call_deferred
void FileDialog::_tree_item_activated() {
TreeItem *ti = tree->get_selected();
if (!ti)
return;
Dictionary d = ti->get_metadata(0);
if (d["dir"]) {
dir_access->change_dir(d["name"]);
if (mode == MODE_OPEN_FILE || mode == MODE_OPEN_FILES || mode == MODE_OPEN_DIR || mode == MODE_OPEN_ANY)
file->set_text("");
call_deferred("_update_file_list");
call_deferred("_update_dir");
} else {
_action_pressed();
}
}
示例14: update_gizmo
void SpriteBase3D::_queue_update() {
if (pending_update)
return;
triangle_mesh.unref();
update_gizmo();
pending_update = true;
call_deferred(SceneStringNames::get_singleton()->_im_update);
}
示例15: call_deferred
void SoftBody::_draw_soft_mesh() {
if (get_mesh().is_null())
return;
if (!visual_server_handler.is_ready()) {
visual_server_handler.prepare(get_mesh()->get_rid(), 0);
/// Necessary in order to render the mesh correctly (Soft body nodes are in global space)
simulation_started = true;
call_deferred("set_as_toplevel", true);
call_deferred("set_transform", Transform());
}
visual_server_handler.open();
PhysicsServer::get_singleton()->soft_body_update_visual_server(physics_rid, &visual_server_handler);
visual_server_handler.close();
visual_server_handler.commit_changes();
}