void SkyBackgroundPluginForm::setLightSettings( LightPtr light, LightSettingsHandler &handler ) { beginEditCP(light); light->setAmbient(handler.ambient); light->setDiffuse(handler.diffuse); light->setSpecular(handler.specular); endEditCP(light); NodePtr beacon = light->getBeacon(); if (beacon == NullFC) { TransformPtr beaconTransform = Transform::create(); beacon = Node::create(); beginEditCP(beacon); beacon->setCore(beaconTransform); endEditCP(beacon); } TransformPtr transform = TransformPtr::dcast(beacon->getCore()); if (transform == NullFC) { TransformPtr beaconTransform = Transform::create(); beginEditCP(beacon); beacon->setCore(beaconTransform); endEditCP(beacon); transform = beaconTransform; } Matrix m; float transFactor = LightDistanceExSlider->value(); Vec3f translate = Vec3f(handler.direction.x() * transFactor, handler.direction.y() * transFactor, handler.direction.z() * transFactor); if (zUpCheckBox->isChecked()) m.setTranslate(translate.x(), translate.y(), translate.z()); else m.setTranslate(translate.x(), translate.z(), -translate.y()); beginEditCP(transform); transform->setMatrix(m); endEditCP(transform); }