MCPcopy Create free account
hub / github.com/TombEngine/TombEngine / SpawnDustParticles

Method SpawnDustParticles

TombEngine/Game/effects/weather.cpp:528–561  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

526 }
527
528 void EnvironmentController::SpawnDustParticles(const ScriptInterfaceLevel& level)
529 {
530 for (int i = 0; i < DUST_SPAWN_DENSITY; i++)
531 {
532 // TODO: Use functions in Math::Random namespace.
533 auto pos = Camera.pos.ToVector3i() + Vector3i(
534 (rand() % DUST_SPAWN_RADIUS) - (DUST_SPAWN_RADIUS / 2),
535 (rand() % DUST_SPAWN_RADIUS) - (DUST_SPAWN_RADIUS / 2),
536 (rand() % DUST_SPAWN_RADIUS) - (DUST_SPAWN_RADIUS / 2));
537
538 int roomNumber = Camera.pos.RoomNumber;
539 if (!IsPointInRoom(pos, roomNumber))
540 roomNumber = FindRoomNumber(pos, Camera.pos.RoomNumber, true);
541
542 if (!IsPointInRoom(pos, roomNumber) || roomNumber == NO_VALUE)
543 continue;
544
545 // Check if water room.
546 if (!TestEnvironment(RoomEnvFlags::ENV_FLAG_WATER, roomNumber))
547 continue;
548
549 auto part = WeatherParticle();
550 part.Velocity = Random::GenerateDirection() * DUST_VELOCITY_MAX;
551 part.Size = Random::GenerateFloat(DUST_SIZE_MAX / 2, DUST_SIZE_MAX);
552 part.Type = WeatherType::None;
553 part.Life = DUST_LIFE + Random::GenerateInt(-10, 10);
554 part.RoomNumber = roomNumber;
555 part.Position = pos.ToVector3();
556 part.Stopped = false;
557 part.Enabled = true;
558 part.StartLife = part.Life;
559 Particles.push_back(part);
560 }
561 }
562
563 void EnvironmentController::SpawnWeatherParticles(const ScriptInterfaceLevel& level)
564 {

Callers

nothing calls this directly

Calls 11

IsPointInRoomFunction · 0.85
FindRoomNumberFunction · 0.85
TestEnvironmentFunction · 0.85
WeatherParticleClass · 0.85
GenerateDirectionFunction · 0.85
GenerateFloatFunction · 0.85
GenerateIntFunction · 0.85
Vector3iClass · 0.70
ToVector3iMethod · 0.45
ToVector3Method · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected