MCPcopy Create free account
hub / github.com/TorqueGameEngines/Torque3D / generateNodes

Method generateNodes

Engine/source/T3D/fx/lightning.cpp:1064–1101  ·  view source on GitHub ↗

-------------------------------------------------------------------------- Generate nodes --------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

1062// Generate nodes
1063//--------------------------------------------------------------------------
1064void LightningBolt::NodeManager::generateNodes()
1065{
1066 F32 overallDist = VectorF( endPoint - startPoint ).magnitudeSafe();
1067 F32 minDistBetweenNodes = overallDist / (numNodes-1);
1068 F32 maxDistBetweenNodes = minDistBetweenNodes / mCos( maxAngle * M_PI_F / 180.0f );
1069
1070 VectorF mainLineDir = endPoint - startPoint;
1071 mainLineDir.normalizeSafe();
1072
1073 for( U32 i=0; i<numNodes; i++ )
1074 {
1075 Node node;
1076
1077 if( i == 0 )
1078 {
1079 node.point = startPoint;
1080 node.dirToMainLine = mainLineDir;
1081 nodeList[i] = node;
1082 continue;
1083 }
1084 if( i == numNodes - 1 )
1085 {
1086 node.point = endPoint;
1087 nodeList[i] = node;
1088 break;
1089 }
1090
1091 Node lastNode = nodeList[i-1];
1092
1093 F32 segmentLength = gRandGen.randF( minDistBetweenNodes, maxDistBetweenNodes );
1094 VectorF segmentDir = MathUtils::randomDir( lastNode.dirToMainLine, 0, maxAngle );
1095 node.point = lastNode.point + segmentDir * segmentLength;
1096
1097 node.dirToMainLine = endPoint - node.point;
1098 node.dirToMainLine.normalizeSafe();
1099 nodeList[i] = node;
1100 }
1101}
1102
1103
1104//--------------------------------------------------------------------------

Callers 2

generateMethod · 0.80
generateMinorNodesMethod · 0.80

Calls 5

mCosFunction · 0.85
randomDirFunction · 0.85
randFMethod · 0.80
magnitudeSafeMethod · 0.45
normalizeSafeMethod · 0.45

Tested by

no test coverage detected