MCPcopy Create free account
hub / github.com/BohemiaInteractive/CWR / AdjustComplexity

Method AdjustComplexity

engine/Poseidon/World/Scene/SceneDraw.cpp:550–621  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

548
549INIT_MODULE(GameStateObj, 3)
550{
551 GGameState.NewOperators(ObjBinary, sizeof(ObjBinary) / sizeof(*ObjBinary));
552 GGameState.NewFunctions(ObjUnary, sizeof(ObjUnary) / sizeof(*ObjUnary));
553};
554
555#endif
556
557int Scene::AdjustComplexity(SortObjectList& objs)
558{
559 int totalComplexity = 0;
560 for (int i = 0; i < objs.Size(); i++)
561 {
562 SortObject* oi = objs[i];
563 Object* obj = oi->object;
564 if (!obj)
565 {
566 Fail("No obj in SortObject info");
567 continue;
568 }
569 LODShape* shape = oi->shape;
570 if (oi->forceDrawLOD >= 0)
571 {
572 oi->drawLOD = oi->forceDrawLOD;
573 }
574 else
575 {
576 int drawLevel =
577 LevelFromDistance2(shape, oi->distance2, obj->Scale(), obj->Direction(), _camera->Direction());
578 if (drawLevel != LOD_INVISIBLE)
579 {
580#if _ENABLE_CHEATS
581 if (DiagDrawModeState != DDMNormal)
582 {
583 int geom = -1;
584 switch (DiagDrawModeState)
585 {
586 case DDMGeometry:
587 geom = shape->FindGeometryLevel();
588 break;
589 case DDMViewGeometry:
590 geom = shape->FindViewGeometryLevel();
591 break;
592 case DDMFireGeometry:
593 geom = shape->FindFireGeometryLevel();
594 break;
595 case DDMRoadway:
596 geom = shape->FindRoadwayLevel();
597 break;
598 case DDMPaths:
599 geom = shape->FindPaths();
600 break;
601 }
602 if (geom >= 0)
603 drawLevel = geom;
604 }
605#endif
606 }
607 oi->drawLOD = drawLevel;

Callers

nothing calls this directly

Calls 15

InvSqrtFunction · 0.85
toLargeIntFunction · 0.85
saturateMinFunction · 0.85
saturateFunction · 0.85
ShadowFactorFunction · 0.85
CoveredAreaFunction · 0.85
floatMaxFunction · 0.85
FindLevelWithComplexityFunction · 0.85
ComplexityFunction · 0.85
absFunction · 0.85
GlobalShowMessageFunction · 0.85

Tested by

no test coverage detected