| 1895 | } |
| 1896 | |
| 1897 | void 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 | |
| 1917 | bool EnvObject::SetFromDesc(const EntityDescription& desc) { |
| 1918 | bool ret = Object::SetFromDesc(desc); |
nothing calls this directly
no test coverage detected