void scene::update_hierarchy(bool forced) { if(!forced && !flag_get(FRAME_NEEDS_UPDATE_HIERARCHY)) return; SCENE_OBJECT *p_obj; // Update all positions of local objects OBJECT_HIERARCHY_ITERATOR it = render_hierarchy_next_new(); while((p_obj = render_hierarchy_next(&it))) { if(p_obj->object_is_geometry()) { ((SCENE_OBJECT_GEOMETRY *)p_obj)->object_world_hierarchy_update(forced); } } // Update complete hierarchy int changed = 0; it = render_hierarchy_next_new(); while((p_obj = render_hierarchy_next(&it))) { if(p_obj->object_is_geometry()) { changed += ((SCENE_OBJECT_GEOMETRY *)p_obj)->object_box_hierarchy_update(forced); } } flag_clear(FRAME_NEEDS_UPDATE_HIERARCHY); if(changed) { flag_set(SCENE_NEEDS_UPDATE_BOX); } }
void scene::update_box(bool forced) { if(!forced && !flag_get(SCENE_NEEDS_UPDATE_BOX)) return; scene_box_update(); flag_clear(SCENE_NEEDS_UPDATE_BOX); }
void scene::update_animations(bool forced) { if(!forced && !flag_get(FRAME_NEEDS_UPDATE_ANIMATIONS)) return; flag_clear(FRAME_NEEDS_UPDATE_ANIMATIONS); }
int flag_get(unsigned long flag, int clear) { if(g_flags && flag) { if(clear) flag_clear(flag); return 1; } return 0; }
// ******************************** // Mesh geometry // ******************************** void mesh_geometry::box_update(bool force) { if((force || flag_get(GEOMETRY_BOX_DIRTY)) && vertexnum_get() && facenum_get()) { if(!p_box) { p_box = box_create(box_type); } lock(); p_box->set(position_get(), vertexnum_get(), faces_get(), facenum_get()); unlock(); flag_clear(GEOMETRY_BOX_DIRTY); box_change_set(); } }
void scene::update_renderlist(bool forced) { if(!forced && !flag_get(FRAME_NEEDS_UPDATE_RENDERLIST)) return; int rendered = 0; render_list.render_list_head_init(); OBJECT_HIERARCHY_ITERATOR it = render_hierarchy_next_new(); SCENE_OBJECT *p_obj; while((p_obj = render_hierarchy_next(&it))) { if(p_obj->object_is_rendered()) { if(((SCENE_OBJECT_GEOMETRY *)p_obj)->visible()) { render_list.render_list_insert(p_obj); rendered++; } } } flag_clear(FRAME_NEEDS_UPDATE_RENDERLIST); }
// 08080450 void trainer_flag_clear(u16 trainer_id) { flag_clear(trainer_id+0x500); }
int add_common_opt(char *var, char *val,iface_t *ifp) { char *ptr; if (!strcasecmp(var,"direction")) { if (!strcasecmp(val,"in")) ifp->direction = IN; else if (!strcasecmp(val,"out")) ifp->direction = OUT; else if (!strcasecmp(val,"both")) ifp->direction = BOTH; else return(-2); } else if (!strcmp(var,"ifilter")) { if (ifp->ifilter) free_filter(ifp->ifilter); if ((ifp->ifilter=getfilter(val)) == NULL) return(-2); } else if (!strcmp(var,"ofilter")) { if (ifp->ofilter) free_filter(ifp->ofilter); if ((ifp->ofilter=getfilter(val)) == NULL) return(-2); } else if (!strcmp(var,"strict")) { if (!strcasecmp(val,"yes")) { ifp->strict=1; } else if (!strcasecmp(val,"no")) { ifp->strict=0; } else return(-2); } else if (!strcmp(var,"checksum")) { if (!strcasecmp(val,"yes")) { ifp->checksum=1; } else if (!strcasecmp(val,"no")) { ifp->checksum=0; } else return(-2); } else if (!strcmp(var,"timestamp")) { if (!strcasecmp(val,"s")) { ifp->tagflags |= TAG_TS; ifp->tagflags &= ~TAG_MS; } else if (!strcasecmp(val,"ms")) { ifp->tagflags |= (TAG_TS|TAG_MS); } else return(-2); } else if (!strcmp(var,"srctag")) { if (!strcasecmp(val,"yes")) { ifp->tagflags |= TAG_SRC; } else if (!strcasecmp(val,"no")) { ifp->tagflags &= ~TAG_SRC; } else if (!strcasecmp(val,"input")) { ifp->tagflags |= TAG_SRC; ifp->tagflags |= TAG_ISRC; } else return(-2); } else if (!strcmp(var,"persist")) { if (!strcasecmp(val,"yes")) { flag_set(ifp,F_PERSIST); flag_clear(ifp,F_IPERSIST); } else if (!strcasecmp(val,"fromstart")) { flag_set(ifp,F_PERSIST); flag_set(ifp,F_IPERSIST); } else if (!strcasecmp(val,"no")) { flag_clear(ifp,F_PERSIST); flag_clear(ifp,F_IPERSIST); } else return(-2); } else if (!strcmp(var,"loopback")) { if (!strcasecmp(val,"yes")) { flag_set(ifp,F_LOOPBACK); } else if (!strcasecmp(val,"no")) { flag_clear(ifp,F_LOOPBACK); } else return(-2); } else if (!strcmp(var,"optional")) { if (!strcasecmp(val,"yes")) { flag_set(ifp,F_OPTIONAL); } else if (!strcasecmp(val,"no")) { flag_clear(ifp,F_OPTIONAL); } else return(-2); } else if (!strcmp(var,"eol")) { if (!strcasecmp(val,"n")) { flag_set(ifp,F_NOCR); } else if (!strcasecmp(val,"rn")) { flag_clear(ifp,F_NOCR); } else return(-2); } else if (!strcasecmp(var,"name")) { if ((ifp->name=(char *)malloc(strlen(val)+1)) == NULL) return(-1); for (ptr=ifp->name;*val;) *ptr++= *val++; } else return(1); return(0); }
void trainerflag_clear_fix(u16 flag) { flag_clear(trainerflag_fix_difficulty(flag + TRAINER_FLAG_SPACE_START)); }