| 120 | } |
| 121 | |
| 122 | void SpriteRender::Draw(RenderContext& renderContext) |
| 123 | { |
| 124 | if (renderContext.View.Pass == DrawPass::GlobalSDF || renderContext.View.Pass == DrawPass::GlobalSurfaceAtlas) |
| 125 | return; |
| 126 | if (!Material || !Material->IsLoaded() || !_quadModel || !_quadModel->IsLoaded()) |
| 127 | return; |
| 128 | auto model = _quadModel.As<Model>(); |
| 129 | if (model->GetLoadedLODs() == 0) |
| 130 | return; |
| 131 | const auto& view = (renderContext.LodProxyView ? *renderContext.LodProxyView : renderContext.View); |
| 132 | Matrix m1, m2, m3, world; |
| 133 | Matrix::Scaling(_size.X, _size.Y, 1.0f, m2); |
| 134 | Matrix::RotationY(PI, m3); |
| 135 | Matrix::Multiply(m2, m3, m1); |
| 136 | if (FaceCamera) |
| 137 | { |
| 138 | Matrix::Billboard(_transform.Translation - view.Origin, view.Position, Vector3::Up, view.Direction, m2); |
| 139 | Matrix::Multiply(m1, m2, m3); |
| 140 | Matrix::Scaling(_transform.Scale, m1); |
| 141 | Matrix::Multiply(m1, m3, world); |
| 142 | } |
| 143 | else |
| 144 | { |
| 145 | view.GetWorldMatrix(_transform, m2); |
| 146 | Matrix::Multiply(m1, m2, world); |
| 147 | } |
| 148 | model->LODs[0].Draw(renderContext, _materialInstance, world, GetStaticFlags(), false, DrawModes, GetPerInstanceRandom(), SortOrder); |
| 149 | } |
| 150 | |
| 151 | void SpriteRender::Serialize(SerializeStream& stream, const void* otherObj) |
| 152 | { |
nothing calls this directly
no test coverage detected