diff --git a/trinity/Eve/SpaceObjectFactory/EveSOF.cpp b/trinity/Eve/SpaceObjectFactory/EveSOF.cpp index 8502a7362..9ac21cabb 100644 --- a/trinity/Eve/SpaceObjectFactory/EveSOF.cpp +++ b/trinity/Eve/SpaceObjectFactory/EveSOF.cpp @@ -2232,6 +2232,11 @@ void EveSOF::SetupControllers( ITr2ControllerOwnerPtr owner, const EveSOFDNAPtr continue; } + if( !dna->IsInVisibilityData( cit->visibilityGroup ) ) + { + continue; + } + if( auto controller = BeResMan->LoadObject( cit->path.c_str() ) ) { owner->AddController( controller ); diff --git a/trinity/Eve/SpaceObjectFactory/EveSOFData.cpp b/trinity/Eve/SpaceObjectFactory/EveSOFData.cpp index a5db8bd82..34ce01072 100644 --- a/trinity/Eve/SpaceObjectFactory/EveSOFData.cpp +++ b/trinity/Eve/SpaceObjectFactory/EveSOFData.cpp @@ -297,6 +297,11 @@ EveSOFDataRaceDamage::EveSOFDataRaceDamage( IRoot* lockobj ) : { } +EveSOFDataHullController::EveSOFDataHullController( IRoot* lockobj ) : + m_visibilityGroup( PRIMARY_VISIBILITY_GROUP ) +{ +} + std::string EveSOFDataHullController::GetName() const { diff --git a/trinity/Eve/SpaceObjectFactory/EveSOFData.h b/trinity/Eve/SpaceObjectFactory/EveSOFData.h index 279a4aa31..4f7d1134f 100644 --- a/trinity/Eve/SpaceObjectFactory/EveSOFData.h +++ b/trinity/Eve/SpaceObjectFactory/EveSOFData.h @@ -1493,8 +1493,14 @@ BLUE_CLASS( EveSOFDataHullController ) : public: EXPOSE_TO_BLUE(); + EveSOFDataHullController( IRoot* lockobj = NULL ); + ~EveSOFDataHullController() + { + } + std::string GetName() const; + BlueSharedString m_visibilityGroup; std::string m_path; uint32_t m_buildFilter = EveSOFDataHullBuildFilter::DEFAULT_FILTER; }; diff --git a/trinity/Eve/SpaceObjectFactory/EveSOFDataMgr.cpp b/trinity/Eve/SpaceObjectFactory/EveSOFDataMgr.cpp index a59788bcd..c84a6af1e 100644 --- a/trinity/Eve/SpaceObjectFactory/EveSOFDataMgr.cpp +++ b/trinity/Eve/SpaceObjectFactory/EveSOFDataMgr.cpp @@ -1191,7 +1191,9 @@ void EveSOFDataMgr::GenerateHullData( HullData& hd, EveSOFDataHullPtr srcData ) hd.controllers.clear(); for( auto cit = begin( srcData->m_controllers ); cit != end( srcData->m_controllers ); ++cit ) { - hd.controllers.push_back( { BlueSharedString( ( *cit )->m_path ), ( *cit )->m_buildFilter } ); + std::string visGroupName( ( *cit )->m_visibilityGroup.c_str() ); + uint32_t visibilityGroup = CcpHashFNV1( visGroupName.c_str(), visGroupName.size() ); + hd.controllers.push_back( { BlueSharedString( ( *cit )->m_path ), ( *cit )->m_buildFilter, visibilityGroup } ); } // model curves diff --git a/trinity/Eve/SpaceObjectFactory/EveSOFDataMgr.h b/trinity/Eve/SpaceObjectFactory/EveSOFDataMgr.h index 1fc58063b..39842cc09 100644 --- a/trinity/Eve/SpaceObjectFactory/EveSOFDataMgr.h +++ b/trinity/Eve/SpaceObjectFactory/EveSOFDataMgr.h @@ -526,6 +526,7 @@ BLUE_CLASS( EveSOFDataMgr ) : { BlueSharedString path; uint32_t buildFilter; + uint32_t visibilityGroup; }; struct HullData diff --git a/trinity/Eve/SpaceObjectFactory/EveSOFData_Blue.cpp b/trinity/Eve/SpaceObjectFactory/EveSOFData_Blue.cpp index c39490f72..2247faf8b 100644 --- a/trinity/Eve/SpaceObjectFactory/EveSOFData_Blue.cpp +++ b/trinity/Eve/SpaceObjectFactory/EveSOFData_Blue.cpp @@ -908,7 +908,8 @@ const Be::ClassInfo* EveSOFDataHullController::ExposeToBlue(){ ":jessica-file-filter: redfile", Be::READWRITE | Be::PERSIST ) MAP_ATTRIBUTE_WITH_CHOOSER( "buildFilter", m_buildFilter, "", Be::READWRITE | Be::PERSIST, EveSOFDataHullBuildFilterChooser ) - EXPOSURE_END() + MAP_ATTRIBUTE( "visibilityGroup", m_visibilityGroup, ":jessica-widget: visibilitygroup", Be::READWRITE | Be::PERSIST ) + EXPOSURE_END() }