MCPcopy Create free account
hub / github.com/WolfireGames/overgrowth / CreateLeaf

Method CreateLeaf

Source/Objects/envobject.cpp:1897–1915  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1895}
1896
1897void EnvObject::CreateLeaf(vec3 pos, vec3 vel, int iterations) {
1898 if (!plant_component_.get()) {
1899 return;
1900 }
1901 const mat4& transform = transform_;
1902 HullCache* hc = plant_component_->GetHullCache();
1903 float closest_dist;
1904 vec3 closest_point;
1905 for (int i = 0; i < iterations; ++i) {
1906 vec3 point = transform * hc->point_cloud[rand() % (hc->point_cloud.size())];
1907 float dist = distance_squared(point, pos);
1908 if (i == 0 || dist < closest_dist) {
1909 closest_point = point;
1910 closest_dist = dist;
1911 }
1912 }
1913 scenegraph_->particle_system->MakeParticle(
1914 scenegraph_, "Data/Particles/leaf.xml", closest_point, vel, vec3(1.0f));
1915}
1916
1917bool EnvObject::SetFromDesc(const EntityDescription& desc) {
1918 bool ret = Object::SetFromDesc(desc);

Callers

nothing calls this directly

Calls 6

GetHullCacheMethod · 0.80
MakeParticleMethod · 0.80
distance_squaredFunction · 0.50
vec3Class · 0.50
getMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected