Update render data for the emitter at the specified index
| 2079 | |
| 2080 | // Update render data for the emitter at the specified index |
| 2081 | void UpdateEmitterRenderData(HInstance instance, uint32_t emitter_index, Instance* inst, Emitter* emitter, dmParticleDDF::Emitter* ddf, float dt) |
| 2082 | { |
| 2083 | EmitterRenderData& render_data = emitter->m_RenderData; |
| 2084 | |
| 2085 | dmTransform::TransformS1 transform(Vector3(ddf->m_Position), ddf->m_Rotation, 1.0f); |
| 2086 | transform = dmTransform::Mul(inst->m_WorldTransform, transform); |
| 2087 | dmVMath::Matrix4 world = dmTransform::ToMatrix4(transform); |
| 2088 | dmParticle::EmitterPrototype* emitter_proto = &inst->m_Prototype->m_Emitters[emitter_index]; |
| 2089 | |
| 2090 | render_data.m_Transform = world; |
| 2091 | render_data.m_Material = emitter->m_Material ? emitter->m_Material : emitter_proto->m_Material; |
| 2092 | render_data.m_BlendMode = emitter_proto->m_BlendMode; |
| 2093 | render_data.m_Texture = emitter->m_AnimationData.m_Texture; |
| 2094 | render_data.m_RenderConstants = emitter->m_RenderConstants.Begin(); |
| 2095 | render_data.m_RenderConstantsSize = emitter->m_RenderConstants.Size(); |
| 2096 | render_data.m_Instance = instance; |
| 2097 | render_data.m_EmitterIndex = emitter_index; |
| 2098 | render_data.m_Attributes = ddf->m_Attributes.m_Data; |
| 2099 | render_data.m_AttributeCount = ddf->m_Attributes.m_Count; |
| 2100 | |
| 2101 | UpdateEmitterRenderState(inst, emitter, ddf, dt); |
| 2102 | CalculateEmitterCullingSphere(inst, emitter, render_data.m_FrustumCullingCenter, render_data.m_FrustumCullingRadiusSq); |
| 2103 | } |
| 2104 | |
| 2105 | // Update render data for the specified emitter on an instance. |
| 2106 | void UpdateRenderData(HParticleContext context, HInstance instance, uint32_t emitter_index, float dt) |
no test coverage detected