void AddSFColor(float color[3]) { switch (GetCurrentNodeType()) { case VRML_NODETYPE_COLOR: { ((ColorNode *)GetCurrentNodeObject())->addColor(color); } break; case VRML_NODETYPE_BACKGROUND_GROUNDCOLOR: { BackgroundNode *bg = (BackgroundNode *)GetCurrentNodeObject(); bg->addGroundColor(color); } break; case VRML_NODETYPE_BACKGROUND_SKYCOLOR: { BackgroundNode *bg = (BackgroundNode *)GetCurrentNodeObject(); bg->addSkyColor(color); } break; case VRML_NODETYPE_INTERPOLATOR_KEYVALUE: switch (GetPrevNodeType()) { case VRML_NODETYPE_COLORINTERPOLATOR: { ColorInterpolatorNode *colorInterp = (ColorInterpolatorNode *)GetCurrentNodeObject(); colorInterp->addKeyValue(color); } break; } break; } }
void CyberX3D::AddSFColor(float color[3]) { switch (ParserGetCurrentNodeType()) { case VRML97_COLOR: { ((ColorNode *)ParserGetCurrentNode())->addColor(color); } break; case VRML97_BACKGROUND_GROUNDCOLOR: { BackgroundNode *bg = (BackgroundNode *)ParserGetCurrentNode(); bg->addGroundColor(color); } break; case VRML97_BACKGROUND_SKYCOLOR: { BackgroundNode *bg = (BackgroundNode *)ParserGetCurrentNode(); bg->addSkyColor(color); } break; case VRML97_INTERPOLATOR_KEYVALUE: switch (ParserGetParentNodeType()) { case VRML97_COLORINTERPOLATOR: { ColorInterpolatorNode *colorInterp = (ColorInterpolatorNode *)ParserGetCurrentNode(); colorInterp->addKeyValue(color); } break; } break; } }
BackgroundNode *SceneGraph::findBackgroundNode(char *name) { if (!name || strlen(name) <= 0) return NULL; for (BackgroundNode *node = findBackgroundNode(); node; node = node->nextTraversal()) { const char *nodeName = node->getName(); if (nodeName && strlen(nodeName)) { if (!strcmp(name, nodeName)) return node; } } return NULL; }
void Background::Init() { SetObjectType(Object::eTYPE_BACKGROUND); m_pGameCamera = 0; m_bRecalculate = false; m_fScrollSpeed = 5.75f; //setup background node BackgroundNode *pNode = new BackgroundNode(); pNode->SetVisual("data\\visuals\\test_background.3ds"); SetNode(pNode); pNode->Release(); }
void AddSFString(char *string) { switch (GetCurrentNodeType()) { case VRML_NODETYPE_ANCHOR_PARAMETER: { ((AnchorNode *)GetCurrentNodeObject())->addParameter(string); } break; case VRML_NODETYPE_ANCHOR_URL: { ((AnchorNode *)GetCurrentNodeObject())->addUrl(string); } break; case VRML_NODETYPE_INLINE_URL: { ((InlineNode *)GetCurrentNodeObject())->addUrl(string); } break; case VRML_NODETYPE_AUDIOCLIP_URL: { AudioClipNode *aclip = (AudioClipNode *)GetCurrentNodeObject(); aclip->addUrl(string); } break; case VRML_NODETYPE_BACKGROUND_BACKURL: { BackgroundNode *bg = (BackgroundNode *)GetCurrentNodeObject(); bg->addBackUrl(string); } break; case VRML_NODETYPE_BACKGROUND_BOTTOMURL: { BackgroundNode *bg = (BackgroundNode *)GetCurrentNodeObject(); bg->addBottomUrl(string); } break; case VRML_NODETYPE_BACKGROUND_FRONTURL: { BackgroundNode *bg = (BackgroundNode *)GetCurrentNodeObject(); bg->addFrontUrl(string); } break; case VRML_NODETYPE_BACKGROUND_LEFTURL: { BackgroundNode *bg = (BackgroundNode *)GetCurrentNodeObject(); bg->addLeftUrl(string); } break; case VRML_NODETYPE_BACKGROUND_RIGHTURL: { BackgroundNode *bg = (BackgroundNode *)GetCurrentNodeObject(); bg->addRightUrl(string); } break; case VRML_NODETYPE_BACKGROUND_TOPURL: { BackgroundNode *bg = (BackgroundNode *)GetCurrentNodeObject(); bg->addTopUrl(string); } break; case VRML_NODETYPE_FONTSTYLE_JUSTIFY: { FontStyleNode *fs = (FontStyleNode *)GetCurrentNodeObject(); fs->addJustify(string); } break; case VRML_NODETYPE_IMAGETEXTURE_URL: { ImageTextureNode *image = (ImageTextureNode *)GetCurrentNodeObject(); image->addUrl(string); } break; case VRML_NODETYPE_MOVIETEXTURE_URL: { MovieTextureNode *image = (MovieTextureNode *)GetCurrentNodeObject(); image->addUrl(string); } break; case VRML_NODETYPE_NAVIGATIONINFO_TYPE: { NavigationInfoNode *navInfo = (NavigationInfoNode *)GetCurrentNodeObject(); navInfo->addType(string); } break; case VRML_NODETYPE_SCRIPT_URL: { ScriptNode *script = (ScriptNode *)GetCurrentNodeObject(); script->addUrl(string); } break; case VRML_NODETYPE_TEXT_STRING: { TextNode *text = (TextNode *)GetCurrentNodeObject(); text->addString(string); } break; case VRML_NODETYPE_WORLDINFO_INFO: { WorldInfoNode *worldInfo = (WorldInfoNode *)GetCurrentNodeObject(); worldInfo->addInfo(string); } break; } }
void AddSFFloat(float value) { switch (GetCurrentNodeType()) { case VRML_NODETYPE_ELEVATIONGRID_HEIGHT: { ElevationGridNode *elev = (ElevationGridNode *)GetCurrentNodeObject(); elev->addHeight(value); } break; case VRML_NODETYPE_BACKGROUND_GROUNDANGLE: { BackgroundNode *bg = (BackgroundNode *)GetCurrentNodeObject(); bg->addGroundAngle(value); } break; case VRML_NODETYPE_BACKGROUND_SKYANGLE: { BackgroundNode *bg = (BackgroundNode *)GetCurrentNodeObject(); bg->addSkyAngle(value); } break; case VRML_NODETYPE_INTERPOLATOR_KEY: switch (GetPrevNodeType()) { case VRML_NODETYPE_COLORINTERPOLATOR: { ColorInterpolatorNode *colorInterp = (ColorInterpolatorNode *)GetCurrentNodeObject(); colorInterp->addKey(value); } break; case VRML_NODETYPE_COORDINATEINTERPOLATOR: { CoordinateInterpolatorNode *coordInterp = (CoordinateInterpolatorNode *)GetCurrentNodeObject(); coordInterp->addKey(value); } break; case VRML_NODETYPE_NORMALINTERPOLATOR: { NormalInterpolatorNode *normInterp = (NormalInterpolatorNode *)GetCurrentNodeObject(); normInterp->addKey(value); } break; case VRML_NODETYPE_ORIENTATIONINTERPOLATOR: { OrientationInterpolatorNode *oriInterp = (OrientationInterpolatorNode *)GetCurrentNodeObject(); oriInterp->addKey(value); } break; case VRML_NODETYPE_POSITIONINTERPOLATOR: { PositionInterpolatorNode *posInterp = (PositionInterpolatorNode *)GetCurrentNodeObject(); posInterp->addKey(value); } break; case VRML_NODETYPE_SCALARINTERPOLATOR: { ScalarInterpolatorNode *scalarInterp = (ScalarInterpolatorNode *)GetCurrentNodeObject(); scalarInterp->addKey(value); } break; } break; case VRML_NODETYPE_INTERPOLATOR_KEYVALUE: switch (GetPrevNodeType()) { case VRML_NODETYPE_SCALARINTERPOLATOR: { ScalarInterpolatorNode *scalarInterp = (ScalarInterpolatorNode *)GetCurrentNodeObject(); scalarInterp->addKeyValue(value); } break; } break; case VRML_NODETYPE_LOD_RANGE: { ((LodNode *)GetCurrentNodeObject())->addRange(value); } break; case VRML_NODETYPE_NAVIGATIONINFO_AVATARSIZE: { NavigationInfoNode *navInfo = (NavigationInfoNode *)GetCurrentNodeObject(); navInfo->addAvatarSize(value); } break; case VRML_NODETYPE_TEXT_LENGTH: { TextNode *text = (TextNode *)GetCurrentNodeObject(); text->addLength(value); } break; } }
void BlenderSync::sync_world(bool update_all) { Background *background = scene->background; Background prevbackground = *background; BL::World b_world = b_scene.world(); if(world_recalc || update_all || b_world.ptr.data != world_map) { Shader *shader = scene->default_background; ShaderGraph *graph = new ShaderGraph(); /* create nodes */ if(b_world && b_world.use_nodes() && b_world.node_tree()) { BL::ShaderNodeTree b_ntree(b_world.node_tree()); add_nodes(scene, b_engine, b_data, b_scene, !preview, graph, b_ntree); /* volume */ PointerRNA cworld = RNA_pointer_get(&b_world.ptr, "cycles"); shader->heterogeneous_volume = !get_boolean(cworld, "homogeneous_volume"); shader->volume_sampling_method = get_volume_sampling(cworld); shader->volume_interpolation_method = get_volume_interpolation(cworld); } else if(b_world) { BackgroundNode *background = new BackgroundNode(); background->color = get_float3(b_world.horizon_color()); graph->add(background); ShaderNode *out = graph->output(); graph->connect(background->output("Background"), out->input("Surface")); } if(b_world) { /* AO */ BL::WorldLighting b_light = b_world.light_settings(); if(b_light.use_ambient_occlusion()) background->ao_factor = b_light.ao_factor(); else background->ao_factor = 0.0f; background->ao_distance = b_light.distance(); /* visibility */ PointerRNA cvisibility = RNA_pointer_get(&b_world.ptr, "cycles_visibility"); uint visibility = 0; visibility |= get_boolean(cvisibility, "camera")? PATH_RAY_CAMERA: 0; visibility |= get_boolean(cvisibility, "diffuse")? PATH_RAY_DIFFUSE: 0; visibility |= get_boolean(cvisibility, "glossy")? PATH_RAY_GLOSSY: 0; visibility |= get_boolean(cvisibility, "transmission")? PATH_RAY_TRANSMIT: 0; visibility |= get_boolean(cvisibility, "scatter")? PATH_RAY_VOLUME_SCATTER: 0; background->visibility = visibility; } else { background->ao_factor = 0.0f; background->ao_distance = FLT_MAX; } shader->set_graph(graph); shader->tag_update(scene); background->tag_update(scene); } PointerRNA cscene = RNA_pointer_get(&b_scene.ptr, "cycles"); /* when doing preview render check for BI's transparency settings, * this is so because Blender's preview render routines are not able * to tweak all cycles's settings depending on different circumstances */ if(b_engine.is_preview() == false) background->transparent = get_boolean(cscene, "film_transparent"); else background->transparent = b_scene.render().alpha_mode() == BL::RenderSettings::alpha_mode_TRANSPARENT; background->use_shader = render_layer.use_background_shader; background->use_ao = render_layer.use_background_ao; if(background->modified(prevbackground)) background->tag_update(scene); }