MCPcopy Create free account
hub / github.com/carbonengine/trinity / SetupSpriteLineSets

Method SetupSpriteLineSets

trinity/Eve/SpaceObjectFactory/EveSOF.cpp:1121–1234  ·  view source on GitHub ↗

-------------------------------------------------------------------------------- Description: This is where it is all going to happen --------------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

1119// This is where it is all going to happen
1120// --------------------------------------------------------------------------------
1121void EveSOF::SetupSpriteLineSets( IEveSpaceObjectAttachmentOwnerPtr obj, const EveSOFDNAPtr dna, const std::vector<Matrix>& offsets, uint32_t buildFlags ) const
1122{
1123 CCP_STATS_ZONE( __FUNCTION__ );
1124
1125 // cycle over all hulls in the multi-hull list
1126 Vector3 hullOffset( 0.f, 0.f, 0.f );
1127
1128 for( size_t hullIdx = 0; hullIdx < dna->GetMultiHullCount(); ++hullIdx )
1129 {
1130 // cycle over all spritelinesets of this hull
1131 const std::vector<EveSOFDataMgr::HullSpriteLineSetData>& hullSpriteLineSets = dna->GetHullSpriteLineSets( hullIdx );
1132 for( auto slsit = hullSpriteLineSets.begin(); slsit != hullSpriteLineSets.end(); ++slsit )
1133 {
1134 const EveSOFDataMgr::HullSpriteLineSetData* spriteLineSetData = &( *slsit );
1135
1136 // visible?
1137 if( dna->IsInVisibilityData( spriteLineSetData->visibilityGroup ) )
1138 {
1139 // create a spriteset for this ship
1140 EveSpriteLineSetPtr spriteLineSet;
1141 spriteLineSet.CreateInstance();
1142 // set shader
1143 spriteLineSet->Setup( m_spriteSetEffect, spriteLineSetData->skinned && buildFlags != EveSOFDataHullBuildFilter::INSTANCED_PLACEMENT );
1144 uint32_t index = 0;
1145
1146 for( auto& offset : offsets )
1147 {
1148 // add all the individual items
1149 for( auto slsiit = spriteLineSetData->items.begin(); slsiit != spriteLineSetData->items.end(); ++slsiit )
1150 {
1151 const EveSOFDataMgr::HullSpriteLineSetItemData* itemData = &( *slsiit );
1152
1153 // color data?
1154 const Color* colorSet = dna->GetColorSet();
1155
1156 // create spritelineset items
1157 EveSpriteLineSetItemPtr spriteLineSetItem;
1158 spriteLineSetItem.CreateInstance();
1159
1160 // set it up the colorset data
1161 spriteLineSetItem->m_color = itemData->intensity * colorSet[itemData->colorType];
1162
1163 // set up the position data
1164 Vector3 tmp;
1165 Matrix m = TransformationMatrix( Vector3( 1.0f, 1.0f, 1.0f ), itemData->rotation, itemData->position + hullOffset ) * offset;
1166 Decompose( tmp, spriteLineSetItem->m_rotation, spriteLineSetItem->m_position, m );
1167
1168 // set it up the per-hull data
1169 spriteLineSetItem->m_blinkPhaseShift = itemData->blinkPhaseShift;
1170 spriteLineSetItem->m_blinkPhase = itemData->blinkPhase;
1171 spriteLineSetItem->m_blinkRate = itemData->blinkRate;
1172 spriteLineSetItem->m_boneIndex = itemData->boneIndex;
1173 spriteLineSetItem->m_falloff = itemData->falloff;
1174 spriteLineSetItem->m_maxScale = itemData->maxScale;
1175 spriteLineSetItem->m_minScale = itemData->minScale;
1176 spriteLineSetItem->m_scaling = itemData->scaling;
1177 spriteLineSetItem->m_spacing = itemData->spacing;
1178 spriteLineSetItem->m_isCircle = itemData->isCircle;

Callers

nothing calls this directly

Calls 15

EveSpriteLightClass · 0.85
GetMultiHullCountMethod · 0.80
IsInVisibilityDataMethod · 0.80
CreateInstanceMethod · 0.80
GetColorSetMethod · 0.80
UsingSof6Method · 0.80
AsLightDataMethod · 0.80
emptyMethod · 0.80
GetPositionsMethod · 0.80
Vector3Class · 0.50
beginMethod · 0.45

Tested by

no test coverage detected