void FbxUtil::LoadLight(const SceneNode::Ptr &ntNode, FbxNode *fbxNode) { FbxLight *fbxLight = static_cast<FbxLight*>(fbxNode->GetNodeAttribute()); LightType type; switch (fbxLight->LightType.Get()) { case FbxLight::EType::eDirectional: type = LightType::DIRECTIONAL; break; case FbxLight::EType::ePoint: type = LightType::POINT; break; case FbxLight::EType::eSpot: type = LightType::SPOT; break; default: LOGW << "Unsupported light type!"; return; } Light::Ptr light = Light::Create(); FbxDouble3 color = fbxLight->Color.Get(); light->SetType(type); light->SetColor(Color((float)color.mData[0], (float)color.mData[1], (float)color.mData[2])); light->SetIntensity((float)fbxLight->Intensity.Get() * m_ScaleFactor); light->SetInnerAngle(Angle::DegToRad * (float)fbxLight->InnerAngle.Get()); light->SetOutterAngle(Angle::DegToRad * (float)fbxLight->OuterAngle.Get()); light->SetFalloff((float)fbxLight->FarAttenuationEnd.Get() * m_ScaleFactor); light->SetRadius((float)fbxLight->DecayStart.Get() * m_ScaleFactor); light->CalculateAABB(); LOGD << fbxLight->GetName(); ntNode->AddComponent(light); }