📄 x3d_nodes.c
字号:
info->NDTtype = NDT_SFMetadataNode; info->far_ptr = & ((X_AudioClip *)node)->metadata; return GF_OK; case 9: info->name = "pauseTime"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_SFTIME; info->far_ptr = & ((X_AudioClip *) node)->pauseTime; return GF_OK; case 10: info->name = "resumeTime"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_SFTIME; info->far_ptr = & ((X_AudioClip *) node)->resumeTime; return GF_OK; case 11: info->name = "elapsedTime"; info->eventType = GF_SG_EVENT_OUT; info->fieldType = GF_SG_VRML_SFTIME; info->far_ptr = & ((X_AudioClip *) node)->elapsedTime; return GF_OK; case 12: info->name = "isPaused"; info->eventType = GF_SG_EVENT_OUT; info->fieldType = GF_SG_VRML_SFBOOL; info->far_ptr = & ((X_AudioClip *) node)->isPaused; return GF_OK; default: return GF_BAD_PARAM; }}static s32 AudioClip_get_field_index_by_name(char *name){ if (!strcmp("description", name)) return 0; if (!strcmp("loop", name)) return 1; if (!strcmp("pitch", name)) return 2; if (!strcmp("startTime", name)) return 3; if (!strcmp("stopTime", name)) return 4; if (!strcmp("url", name)) return 5; if (!strcmp("duration_changed", name)) return 6; if (!strcmp("isActive", name)) return 7; if (!strcmp("metadata", name)) return 8; if (!strcmp("pauseTime", name)) return 9; if (!strcmp("resumeTime", name)) return 10; if (!strcmp("elapsedTime", name)) return 11; if (!strcmp("isPaused", name)) return 12; return -1; }static GF_Node *AudioClip_Create(){ X_AudioClip *p; GF_SAFEALLOC(p, X_AudioClip); if(!p) return NULL; gf_node_setup((GF_Node *)p, TAG_X3D_AudioClip);#ifdef GF_NODE_USE_POINTERS ((GF_Node *)p)->sgprivate->name = "AudioClip"; ((GF_Node *)p)->sgprivate->node_del = AudioClip_Del; ((GF_Node *)p)->sgprivate->get_field_count = AudioClip_get_field_count; ((GF_Node *)p)->sgprivate->get_field = AudioClip_get_field;#endif /*default field values*/ p->pitch = FLT2FIX(1.0); p->startTime = 0; p->stopTime = 0; p->pauseTime = 0; p->resumeTime = 0; return (GF_Node *)p;}/* Background Node deletion*/static void Background_Del(GF_Node *node){ X_Background *p = (X_Background *) node; gf_sg_mffloat_del(p->groundAngle); gf_sg_mfcolor_del(p->groundColor); gf_sg_mfurl_del(p->backUrl); gf_sg_mfurl_del(p->bottomUrl); gf_sg_mfurl_del(p->frontUrl); gf_sg_mfurl_del(p->leftUrl); gf_sg_mfurl_del(p->rightUrl); gf_sg_mfurl_del(p->topUrl); gf_sg_mffloat_del(p->skyAngle); gf_sg_mfcolor_del(p->skyColor); gf_node_unregister((GF_Node *) p->metadata, node); gf_node_free((GF_Node *)p);}static u32 Background_get_field_count(GF_Node *node, u8 dummy){ return 14;}static GF_Err Background_get_field(GF_Node *node, GF_FieldInfo *info){ switch (info->fieldIndex) { case 0: info->name = "set_bind"; info->eventType = GF_SG_EVENT_IN; info->on_event_in = ((X_Background *)node)->on_set_bind; info->fieldType = GF_SG_VRML_SFBOOL; info->far_ptr = & ((X_Background *) node)->set_bind; return GF_OK; case 1: info->name = "groundAngle"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_MFFLOAT; info->far_ptr = & ((X_Background *) node)->groundAngle; return GF_OK; case 2: info->name = "groundColor"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_MFCOLOR; info->far_ptr = & ((X_Background *) node)->groundColor; return GF_OK; case 3: info->name = "backUrl"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_MFURL; info->far_ptr = & ((X_Background *) node)->backUrl; return GF_OK; case 4: info->name = "bottomUrl"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_MFURL; info->far_ptr = & ((X_Background *) node)->bottomUrl; return GF_OK; case 5: info->name = "frontUrl"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_MFURL; info->far_ptr = & ((X_Background *) node)->frontUrl; return GF_OK; case 6: info->name = "leftUrl"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_MFURL; info->far_ptr = & ((X_Background *) node)->leftUrl; return GF_OK; case 7: info->name = "rightUrl"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_MFURL; info->far_ptr = & ((X_Background *) node)->rightUrl; return GF_OK; case 8: info->name = "topUrl"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_MFURL; info->far_ptr = & ((X_Background *) node)->topUrl; return GF_OK; case 9: info->name = "skyAngle"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_MFFLOAT; info->far_ptr = & ((X_Background *) node)->skyAngle; return GF_OK; case 10: info->name = "skyColor"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_MFCOLOR; info->far_ptr = & ((X_Background *) node)->skyColor; return GF_OK; case 11: info->name = "isBound"; info->eventType = GF_SG_EVENT_OUT; info->fieldType = GF_SG_VRML_SFBOOL; info->far_ptr = & ((X_Background *) node)->isBound; return GF_OK; case 12: info->name = "metadata"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_SFNODE; info->NDTtype = NDT_SFMetadataNode; info->far_ptr = & ((X_Background *)node)->metadata; return GF_OK; case 13: info->name = "bindTime"; info->eventType = GF_SG_EVENT_OUT; info->fieldType = GF_SG_VRML_SFTIME; info->far_ptr = & ((X_Background *) node)->bindTime; return GF_OK; default: return GF_BAD_PARAM; }}static s32 Background_get_field_index_by_name(char *name){ if (!strcmp("set_bind", name)) return 0; if (!strcmp("groundAngle", name)) return 1; if (!strcmp("groundColor", name)) return 2; if (!strcmp("backUrl", name)) return 3; if (!strcmp("bottomUrl", name)) return 4; if (!strcmp("frontUrl", name)) return 5; if (!strcmp("leftUrl", name)) return 6; if (!strcmp("rightUrl", name)) return 7; if (!strcmp("topUrl", name)) return 8; if (!strcmp("skyAngle", name)) return 9; if (!strcmp("skyColor", name)) return 10; if (!strcmp("isBound", name)) return 11; if (!strcmp("metadata", name)) return 12; if (!strcmp("bindTime", name)) return 13; return -1; }static GF_Node *Background_Create(){ X_Background *p; GF_SAFEALLOC(p, X_Background); if(!p) return NULL; gf_node_setup((GF_Node *)p, TAG_X3D_Background);#ifdef GF_NODE_USE_POINTERS ((GF_Node *)p)->sgprivate->name = "Background"; ((GF_Node *)p)->sgprivate->node_del = Background_Del; ((GF_Node *)p)->sgprivate->get_field_count = Background_get_field_count; ((GF_Node *)p)->sgprivate->get_field = Background_get_field;#endif /*default field values*/ p->skyColor.vals = (SFColor*)malloc(sizeof(SFColor)*1); p->skyColor.count = 1; p->skyColor.vals[0].red = FLT2FIX(0); p->skyColor.vals[0].green = FLT2FIX(0); p->skyColor.vals[0].blue = FLT2FIX(0); return (GF_Node *)p;}/* Billboard Node deletion*/static void Billboard_Del(GF_Node *node){ X_Billboard *p = (X_Billboard *) node; gf_sg_vrml_parent_destroy(node); gf_node_unregister((GF_Node *) p->metadata, node); gf_node_free((GF_Node *)p);}static u32 Billboard_get_field_count(GF_Node *node, u8 dummy){ return 5;}static GF_Err Billboard_get_field(GF_Node *node, GF_FieldInfo *info){ switch (info->fieldIndex) { case 0: info->name = "addChildren"; info->eventType = GF_SG_EVENT_IN; info->on_event_in = ((X_Billboard *)node)->on_addChildren; info->fieldType = GF_SG_VRML_MFNODE; info->NDTtype = NDT_SF3DNode; info->far_ptr = & ((X_Billboard *)node)->addChildren; return GF_OK; case 1: info->name = "removeChildren"; info->eventType = GF_SG_EVENT_IN; info->on_event_in = ((X_Billboard *)node)->on_removeChildren; info->fieldType = GF_SG_VRML_MFNODE; info->NDTtype = NDT_SF3DNode; info->far_ptr = & ((X_Billboard *)node)->removeChildren; return GF_OK; case 2: info->name = "children"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_MFNODE; info->NDTtype = NDT_SF3DNode; info->far_ptr = & ((X_Billboard *)node)->children; return GF_OK; case 3: info->name = "axisOfRotation"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_SFVEC3F; info->far_ptr = & ((X_Billboard *) node)->axisOfRotation; return GF_OK; case 4: info->name = "metadata"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_SFNODE; info->NDTtype = NDT_SFMetadataNode; info->far_ptr = & ((X_Billboard *)node)->metadata; return GF_OK; default: return GF_BAD_PARAM; }}static s32 Billboard_get_field_index_by_name(char *name){ if (!strcmp("addChildren", name)) return 0; if (!strcmp("removeChildren", name)) return 1; if (!strcmp("children", name)) return 2; if (!strcmp("axisOfRotation", name)) return 3; if (!strcmp("metadata", name)) return 4; return -1; }static GF_Node *Billboard_Create(){ X_Billboard *p; GF_SAFEALLOC(p, X_Billboard); if(!p) return NULL; gf_node_setup((GF_Node *)p, TAG_X3D_Billboard); gf_sg_vrml_parent_setup((GF_Node *) p);#ifdef GF_NODE_USE_POINTERS ((GF_Node *)p)->sgprivate->name = "Billboard"; ((GF_Node *)p)->sgprivate->node_del = Billboard_Del; ((GF_Node *)p)->sgprivate->get_field_count = Billboard_get_field_count; ((GF_Node *)p)->sgprivate->get_field = Billboard_get_field;#endif /*default field values*/ p->axisOfRotation.x = FLT2FIX(0); p->axisOfRotation.y = FLT2FIX(1); p->axisOfRotation.z = FLT2FIX(0); return (GF_Node *)p;}/* BooleanFilter Node deletion*/static void BooleanFilter_Del(GF_Node *node){ X_BooleanFilter *p = (X_BooleanFilter *) node; gf_node_unregister((GF_Node *) p->metadata, node); gf_node_free((GF_Node *)p);}static u32 BooleanFilter_get_field_count(GF_Node *node, u8 dummy){ return 5;}static GF_Err BooleanFilter_get_field(GF_Node *node, GF_FieldInfo *info){ switch (info->fieldIndex) { case 0: info->name = "set_boolean"; info->eventType = GF_SG_EVENT_IN; info->on_event_in = ((X_BooleanFilter *)node)->on_set_boolean; info->fieldType = GF_SG_VRML_SFBOOL; info->far_ptr = & ((X_BooleanFilter *) node)->set_boolean; return GF_OK; case 1: info->name = "inputFalse"; info->eventType = GF_SG_EVENT_OUT; info->fieldType = GF_SG_VRML_SFBOOL; info->far_ptr = & ((X_BooleanFilter *) node)->inputFalse; return GF_OK; case 2: info->name = "inputNegate"; info->eventType = GF_SG_EVENT_OUT; info->fieldType = GF_SG_VRML_SFBOOL; info->far_ptr = & ((X_BooleanFilter *) node)->inputNegate; return GF_OK; case 3: info->name = "inputTrue"; info->eventType = GF_SG_EVENT_OUT; info->fieldType = GF_SG_VRML_SFBOOL; info->far_ptr = & ((X_BooleanFilter *) node)->inputTrue; return GF_OK; case 4: info->name = "metadata"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_SFNODE; info->NDTtype = NDT_SFMetadataNode; info->far_ptr = & ((X_BooleanFilter *)node)->metadata; return GF_OK; default: return GF_BAD_PARAM; }}static s32 BooleanFilter_get_field_index_by_name(char *name){ if (!strcmp("set_boolean", name)) return 0; if (!strcmp("inputFalse", name)) return 1; if (!strcmp("inputNegate", name)) return 2; if (!strcmp("inputTrue", name)) return 3; if (!strcmp("metadata", name)) return 4; return -1; }static GF_Node *BooleanFilter_Create(){ X_BooleanFilter *p; GF_SAFEALLOC(p, X_BooleanFilter); if(!p) return NULL; gf_node_setup((GF_Node *)p, TAG_X3D_BooleanFilter);#ifdef GF_NODE_USE_POINTERS ((GF_Node *)p)->sgprivate->name = "BooleanFilter"; ((GF_Node *)p)->sgprivate->node_del = BooleanFilter_Del; ((GF_Node *)p)->sgprivate->get_field_count = BooleanFilter_get_field_count; ((GF_Node *)p)->sgprivate->get_field = BooleanFilter_get_field;#endif /*default field values*/ return (GF_Node *)p;}/* BooleanSequencer Node deletion*/static void BooleanSequencer_Del(GF_Node *node){ X_BooleanSequencer *p = (X_BooleanSequencer *) node; gf_sg_mffloat_del(p->key); gf_sg_mfbool_del(p->keyValue); gf_node_unregister((GF_Node *) p->metadata, node); gf_node_free((GF_Node *)p);}static u32 BooleanSequencer_get_field_count(GF_Node *node, u8 dummy){ return 7;}static GF_Err BooleanSequencer_get_field(GF_Node *node, GF_FieldInfo *info){ switch (info->fieldIndex) { case 0: info->name = "next"; info->eventType = GF_SG_EVENT_IN; info->on_event_in = ((X_BooleanSequencer *)node)->on_next; info->fieldType = GF_SG_VRML_SFBOOL; info->far_ptr = & ((X_BooleanSequencer *) node)->next; return GF_OK; case 1: info->name = "previous"; info->eventType = GF_SG_EVENT_IN; info->on_event_in = ((X_BooleanSequencer *)node)->on_previous; info->fieldType = GF_SG_VRML_SFBOOL; info->far_ptr = & ((X_BooleanSequencer *) node)->previous; return GF_OK; case 2: info->name = "set_fraction"; info->eventType = GF_SG_EVENT_IN; info->on_event_in = ((X_BooleanSequencer *)node)->on_set_fraction; info->fieldType = GF_SG_VRML_SFFLOAT; info->far_ptr = & ((X_BooleanSequencer *) node)->set_fraction; return GF_OK; case 3: info->name = "key"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_MFFLOAT; info->far_ptr = & ((X_BooleanSequencer *) node)->key; return GF_OK; case 4: info->name = "keyValue"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_MFBOOL; info->far_ptr = & ((X_BooleanSequencer *) node)->keyValue; return GF_OK; case 5: info->name = "value_changed"; info->eventType = GF_SG_EVENT_OUT; info->fieldType = GF_SG_VRML_SFBOOL; info->far_ptr = & ((X_BooleanSequencer *) node)->value_changed; return GF_OK; case 6: info->name = "metadata"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_SFNODE; info->NDTtype = NDT_SFMetadataNode; info->far_ptr = & ((X_BooleanSequencer *)node)->metadata; return GF_OK; default: return GF_BAD_PARAM; }}static s32 BooleanSequencer_get_field_index_by_name(char *name){ if (!strcmp("next", name)) return 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -