MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / doSplash

Method doSplash

source/game/StarEntitySplash.cpp:22–48  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

20}
21
22List<Particle> EntitySplashConfig::doSplash(Vec2F position, Vec2F velocity, World* world) const {
23 List<Particle> particles;
24 if (std::fabs(velocity[1]) >= splashSpeedMin) {
25 auto liquidDb = Root::singleton().liquidsDatabase();
26 Vec2I bottom = Vec2I::floor(position + splashBottomSensor);
27 Vec2I top = Vec2I::floor(position + splashTopSensor);
28 if (world->liquidLevel(bottom).level - world->liquidLevel(top).level >= splashMinWaterLevel) {
29 LiquidId liquidType;
30 auto bottomLiquid = world->liquidLevel(bottom);
31 auto topLiquid = world->liquidLevel(top);
32 if (bottomLiquid.level > 0 && (int)bottomLiquid.liquid)
33 liquidType = bottomLiquid.liquid;
34 else
35 liquidType = topLiquid.liquid;
36 Color particleColor = Color::rgba(liquidDb->liquidSettings(liquidType)->liquidColor);
37 for (int i = 0; i < numSplashParticles; ++i) {
38 Particle newSplashParticle = splashParticle;
39 newSplashParticle.position = position;
40 newSplashParticle.velocity[1] = std::fabs(velocity[1]) * splashYVelocityFactor;
41 newSplashParticle.color = particleColor;
42 newSplashParticle.applyVariance(splashParticleVariance);
43 particles.append(newSplashParticle);
44 }
45 }
46 }
47 return particles;
48}
49
50}

Callers 2

particlesMethod · 0.80
renderMethod · 0.80

Calls 6

singletonClass · 0.85
liquidsDatabaseMethod · 0.80
liquidSettingsMethod · 0.80
applyVarianceMethod · 0.80
liquidLevelMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected