📄 node.cpp
字号:
} } break; case LIB3DS_SCL_TRACK_TAG: { if (node->type==LIB3DS_OBJECT_NODE) { if (!lib3ds_lin3_track_read(&node->data.object.scl_track, f)) { return(LIB3DS_FALSE); } } else { lib3ds_chunk_unknown(chunk); } } break; case LIB3DS_FOV_TRACK_TAG: { if (node->type==LIB3DS_CAMERA_NODE) { if (!lib3ds_lin1_track_read(&node->data.camera.fov_track, f)) { return(LIB3DS_FALSE); } } else { lib3ds_chunk_unknown(chunk); } } break; case LIB3DS_HOT_TRACK_TAG: { if (node->type==LIB3DS_LIGHT_NODE) { if (!lib3ds_lin1_track_read(&node->data.light.hotspot_track, f)) { return(LIB3DS_FALSE); } } else { lib3ds_chunk_unknown(chunk); } } break; case LIB3DS_FALL_TRACK_TAG: { if (node->type==LIB3DS_LIGHT_NODE) { if (!lib3ds_lin1_track_read(&node->data.light.falloff_track, f)) { return(LIB3DS_FALSE); } } else { lib3ds_chunk_unknown(chunk); } } break; case LIB3DS_ROLL_TRACK_TAG: { Lib3dsBool result=LIB3DS_TRUE; switch (node->type) { case LIB3DS_CAMERA_NODE: result=lib3ds_lin1_track_read(&node->data.camera.roll_track, f); break; case LIB3DS_LIGHT_NODE: result=lib3ds_lin1_track_read(&node->data.light.roll_track, f); break; default: lib3ds_chunk_unknown(chunk); } if (!result) { return(LIB3DS_FALSE); } } break; case LIB3DS_HIDE_TRACK_TAG: { if (node->type==LIB3DS_OBJECT_NODE) { if (!lib3ds_bool_track_read(&node->data.object.hide_track, f)) { return(LIB3DS_FALSE); } } else { lib3ds_chunk_unknown(chunk); } } break; case LIB3DS_MORPH_SMOOTH: { if (node->type==LIB3DS_OBJECT_NODE) { node->data.object.morph_smooth=lib3ds_float_read(f); } else { lib3ds_chunk_unknown(chunk); } } break; case LIB3DS_MORPH_TRACK_TAG: { if (node->type==LIB3DS_OBJECT_NODE) { if (!lib3ds_morph_track_read(&node->data.object.morph_track, f)) { return(LIB3DS_FALSE); } } else { lib3ds_chunk_unknown(chunk); } } break; default: lib3ds_chunk_unknown(chunk); } } lib3ds_chunk_read_end(&c, f); return(LIB3DS_TRUE);}/*! * \ingroup node */Lib3dsBoollib3ds_node_write(Lib3dsNode *node, Lib3dsFile *file, FILE *f){ Lib3dsChunk c; switch (node->type) { case LIB3DS_AMBIENT_NODE: c.chunk=LIB3DS_AMBIENT_NODE_TAG; break; case LIB3DS_OBJECT_NODE: c.chunk=LIB3DS_OBJECT_NODE_TAG; break; case LIB3DS_CAMERA_NODE: c.chunk=LIB3DS_CAMERA_NODE_TAG; break; case LIB3DS_TARGET_NODE: c.chunk=LIB3DS_TARGET_NODE_TAG; break; case LIB3DS_LIGHT_NODE: if (lib3ds_file_node_by_name(file, node->name, LIB3DS_SPOT_NODE)) { c.chunk=LIB3DS_SPOTLIGHT_NODE_TAG; } else { c.chunk=LIB3DS_LIGHT_NODE_TAG; } break; case LIB3DS_SPOT_NODE: c.chunk=LIB3DS_L_TARGET_NODE_TAG; break; default: return(LIB3DS_FALSE); } if (!lib3ds_chunk_write_start(&c,f)) { return(LIB3DS_FALSE); } { /*---- LIB3DS_NODE_ID ----*/ Lib3dsChunk c; c.chunk=LIB3DS_NODE_ID; c.size=8; lib3ds_chunk_write(&c,f); lib3ds_intw_write(node->node_id,f); } { /*---- LIB3DS_NODE_HDR ----*/ Lib3dsChunk c; c.chunk=LIB3DS_NODE_HDR; c.size=6+ 1+strlen(node->name) +2+2+2; lib3ds_chunk_write(&c,f); lib3ds_string_write(node->name,f); lib3ds_word_write(node->flags1,f); lib3ds_word_write(node->flags2,f); lib3ds_word_write(node->parent_id,f); } switch (c.chunk) { case LIB3DS_AMBIENT_NODE_TAG: { /*---- LIB3DS_COL_TRACK_TAG ----*/ Lib3dsChunk c; c.chunk=LIB3DS_COL_TRACK_TAG; if (!lib3ds_chunk_write_start(&c,f)) { return(LIB3DS_FALSE); } if (!lib3ds_lin3_track_write(&node->data.ambient.col_track,f)) { return(LIB3DS_FALSE); } if (!lib3ds_chunk_write_end(&c,f)) { return(LIB3DS_FALSE); } } break; case LIB3DS_OBJECT_NODE_TAG: { /*---- LIB3DS_PIVOT ----*/ Lib3dsChunk c; c.chunk=LIB3DS_PIVOT; c.size=18; lib3ds_chunk_write(&c,f); lib3ds_vector_write(node->data.object.pivot,f); } { /*---- LIB3DS_INSTANCE_NAME ----*/ Lib3dsChunk c; const char *name; if (strlen(node->data.object.instance)) { name=node->data.object.instance; c.chunk=LIB3DS_INSTANCE_NAME; c.size=6+1+strlen(name); lib3ds_chunk_write(&c,f); lib3ds_string_write(name,f); } } { int i; for (i=0; i<3; ++i) { if ((fabs(node->data.object.bbox_min[i])>LIB3DS_EPSILON) || (fabs(node->data.object.bbox_max[i])>LIB3DS_EPSILON)) { break; } } if (i<3) { /*---- LIB3DS_BOUNDBOX ----*/ Lib3dsChunk c; c.chunk=LIB3DS_BOUNDBOX; c.size=30; lib3ds_chunk_write(&c,f); lib3ds_vector_write(node->data.object.bbox_min, f); lib3ds_vector_write(node->data.object.bbox_max, f); } } { /*---- LIB3DS_POS_TRACK_TAG ----*/ Lib3dsChunk c; c.chunk=LIB3DS_POS_TRACK_TAG; if (!lib3ds_chunk_write_start(&c,f)) { return(LIB3DS_FALSE); } if (!lib3ds_lin3_track_write(&node->data.object.pos_track,f)) { return(LIB3DS_FALSE); } if (!lib3ds_chunk_write_end(&c,f)) { return(LIB3DS_FALSE); } } { /*---- LIB3DS_ROT_TRACK_TAG ----*/ Lib3dsChunk c; c.chunk=LIB3DS_ROT_TRACK_TAG; if (!lib3ds_chunk_write_start(&c,f)) { return(LIB3DS_FALSE); } if (!lib3ds_quat_track_write(&node->data.object.rot_track,f)) { return(LIB3DS_FALSE); } if (!lib3ds_chunk_write_end(&c,f)) { return(LIB3DS_FALSE); } } { /*---- LIB3DS_SCL_TRACK_TAG ----*/ Lib3dsChunk c; c.chunk=LIB3DS_SCL_TRACK_TAG; if (!lib3ds_chunk_write_start(&c,f)) { return(LIB3DS_FALSE); } if (!lib3ds_lin3_track_write(&node->data.object.scl_track,f)) { return(LIB3DS_FALSE); } if (!lib3ds_chunk_write_end(&c,f)) { return(LIB3DS_FALSE); } } if (node->data.object.hide_track.keyL) { /*---- LIB3DS_HIDE_TRACK_TAG ----*/ Lib3dsChunk c; c.chunk=LIB3DS_HIDE_TRACK_TAG; if (!lib3ds_chunk_write_start(&c,f)) { return(LIB3DS_FALSE); } if (!lib3ds_bool_track_write(&node->data.object.hide_track,f)) { return(LIB3DS_FALSE); } if (!lib3ds_chunk_write_end(&c,f)) { return(LIB3DS_FALSE); } } if (fabs(node->data.object.morph_smooth)>LIB3DS_EPSILON){ /*---- LIB3DS_MORPH_SMOOTH ----*/ Lib3dsChunk c; c.chunk=LIB3DS_MORPH_SMOOTH; c.size=10; lib3ds_chunk_write(&c,f); lib3ds_float_write(node->data.object.morph_smooth,f); } break; case LIB3DS_CAMERA_NODE_TAG: { /*---- LIB3DS_POS_TRACK_TAG ----*/ Lib3dsChunk c; c.chunk=LIB3DS_POS_TRACK_TAG; if (!lib3ds_chunk_write_start(&c,f)) { return(LIB3DS_FALSE); } if (!lib3ds_lin3_track_write(&node->data.camera.pos_track,f)) { return(LIB3DS_FALSE); } if (!lib3ds_chunk_write_end(&c,f)) { return(LIB3DS_FALSE); } } { /*---- LIB3DS_FOV_TRACK_TAG ----*/ Lib3dsChunk c; c.chunk=LIB3DS_FOV_TRACK_TAG; if (!lib3ds_chunk_write_start(&c,f)) { return(LIB3DS_FALSE); } if (!lib3ds_lin1_track_write(&node->data.camera.fov_track,f)) { return(LIB3DS_FALSE); } if (!lib3ds_chunk_write_end(&c,f)) { return(LIB3DS_FALSE); } } { /*---- LIB3DS_ROLL_TRACK_TAG ----*/ Lib3dsChunk c; c.chunk=LIB3DS_ROLL_TRACK_TAG; if (!lib3ds_chunk_write_start(&c,f)) { return(LIB3DS_FALSE); } if (!lib3ds_lin1_track_write(&node->data.camera.roll_track,f)) { return(LIB3DS_FALSE); } if (!lib3ds_chunk_write_end(&c,f)) { return(LIB3DS_FALSE); } } break; case LIB3DS_TARGET_NODE_TAG: { /*---- LIB3DS_POS_TRACK_TAG ----*/ Lib3dsChunk c; c.chunk=LIB3DS_POS_TRACK_TAG; if (!lib3ds_chunk_write_start(&c,f)) { return(LIB3DS_FALSE); } if (!lib3ds_lin3_track_write(&node->data.target.pos_track,f)) { return(LIB3DS_FALSE); } if (!lib3ds_chunk_write_end(&c,f)) { return(LIB3DS_FALSE); } } break; case LIB3DS_LIGHT_NODE_TAG: { /*---- LIB3DS_POS_TRACK_TAG ----*/ Lib3dsChunk c; c.chunk=LIB3DS_POS_TRACK_TAG; if (!lib3ds_chunk_write_start(&c,f)) { return(LIB3DS_FALSE); } if (!lib3ds_lin3_track_write(&node->data.light.pos_track,f)) { return(LIB3DS_FALSE); } if (!lib3ds_chunk_write_end(&c,f)) { return(LIB3DS_FALSE); } } { /*---- LIB3DS_COL_TRACK_TAG ----*/ Lib3dsChunk c; c.chunk=LIB3DS_COL_TRACK_TAG; if (!lib3ds_chunk_write_start(&c,f)) { return(LIB3DS_FALSE); } if (!lib3ds_lin3_track_write(&node->data.light.col_track,f)) { return(LIB3DS_FALSE); } if (!lib3ds_chunk_write_end(&c,f)) { return(LIB3DS_FALSE); } } break; case LIB3DS_SPOTLIGHT_NODE_TAG: { /*---- LIB3DS_POS_TRACK_TAG ----*/ Lib3dsChunk c; c.chunk=LIB3DS_POS_TRACK_TAG; if (!lib3ds_chunk_write_start(&c,f)) { return(LIB3DS_FALSE); } if (!lib3ds_lin3_track_write(&node->data.light.pos_track,f)) { return(LIB3DS_FALSE); } if (!lib3ds_chunk_write_end(&c,f)) { return(LIB3DS_FALSE); } } { /*---- LIB3DS_COL_TRACK_TAG ----*/ Lib3dsChunk c; c.chunk=LIB3DS_COL_TRACK_TAG; if (!lib3ds_chunk_write_start(&c,f)) { return(LIB3DS_FALSE); } if (!lib3ds_lin3_track_write(&node->data.light.col_track,f)) { return(LIB3DS_FALSE); } if (!lib3ds_chunk_write_end(&c,f)) { return(LIB3DS_FALSE); } } { /*---- LIB3DS_HOT_TRACK_TAG ----*/ Lib3dsChunk c; c.chunk=LIB3DS_HOT_TRACK_TAG; if (!lib3ds_chunk_write_start(&c,f)) { return(LIB3DS_FALSE); } if (!lib3ds_lin1_track_write(&node->data.light.hotspot_track,f)) { return(LIB3DS_FALSE); } if (!lib3ds_chunk_write_end(&c,f)) { return(LIB3DS_FALSE); } } { /*---- LIB3DS_FALL_TRACK_TAG ----*/ Lib3dsChunk c; c.chunk=LIB3DS_FALL_TRACK_TAG; if (!lib3ds_chunk_write_start(&c,f)) { return(LIB3DS_FALSE); } if (!lib3ds_lin1_track_write(&node->data.light.falloff_track,f)) { return(LIB3DS_FALSE); } if (!lib3ds_chunk_write_end(&c,f)) { return(LIB3DS_FALSE); } } { /*---- LIB3DS_ROLL_TRACK_TAG ----*/ Lib3dsChunk c; c.chunk=LIB3DS_ROLL_TRACK_TAG; if (!lib3ds_chunk_write_start(&c,f)) { return(LIB3DS_FALSE); } if (!lib3ds_lin1_track_write(&node->data.light.roll_track,f)) { return(LIB3DS_FALSE); } if (!lib3ds_chunk_write_end(&c,f)) { return(LIB3DS_FALSE); } } break; case LIB3DS_L_TARGET_NODE_TAG: { /*---- LIB3DS_POS_TRACK_TAG ----*/ Lib3dsChunk c; c.chunk=LIB3DS_POS_TRACK_TAG; if (!lib3ds_chunk_write_start(&c,f)) { return(LIB3DS_FALSE); } if (!lib3ds_lin3_track_write(&node->data.spot.pos_track,f)) { return(LIB3DS_FALSE); } if (!lib3ds_chunk_write_end(&c,f)) { return(LIB3DS_FALSE); } } break; default: return(LIB3DS_FALSE); } if (!lib3ds_chunk_write_end(&c,f)) { return(LIB3DS_FALSE); } return(LIB3DS_TRUE);}/*!\typedef Lib3dsNodeTypes \ingroup node*//*!\enum _Lib3dsNodeTypes \ingroup node*//*!\typedef Lib3dsBoolKey \ingroup node \sa _Lib3dsBoolKey*//*!\typedef Lib3dsBoolTrack \ingroup node \sa _Lib3dsBoolTrack*//*!\typedef Lib3dsLin1Key \ingroup node \sa _Lib3dsLin1Key*//*!\typedef Lib3dsLin1Track \ingroup node \sa _Lib3dsLin1Track*//*!\typedef Lib3dsLin3Key \ingroup node \sa _Lib3dsLin3Key*//*!\typedef Lib3dsLin3Track \ingroup node \sa _Lib3dsLin3Track*//*!\typedef Lib3dsQuatKey \ingroup node \sa _Lib3dsQuatKey*//*!\typedef Lib3dsQuatTrack \ingroup node \sa _Lib3dsLin3Key*//*!\typedef Lib3dsMorphKey \ingroup node \sa _Lib3dsMorphKey*//*!\typedef Lib3dsMorphTrack \ingroup node \sa _Lib3dsMorphTrack*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -