Add adds an entity to the RenderSystem. The entity needs a basic, render, and space component to be added to the system.
(basic *ecs.BasicEntity, render *RenderComponent, space *SpaceComponent)
| 259 | |
| 260 | // Add adds an entity to the RenderSystem. The entity needs a basic, render, and space component to be added to the system. |
| 261 | func (rs *RenderSystem) Add(basic *ecs.BasicEntity, render *RenderComponent, space *SpaceComponent) { |
| 262 | // Do nothing if entity already exists |
| 263 | if _, ok := rs.ids[basic.ID()]; ok { |
| 264 | return |
| 265 | } |
| 266 | |
| 267 | rs.ids[basic.ID()] = struct{}{} |
| 268 | |
| 269 | render.ensureShader() |
| 270 | |
| 271 | // This is to prevent users from using the wrong one |
| 272 | if render.shader == HUDShader { |
| 273 | switch render.Drawable.(type) { |
| 274 | case Triangle: |
| 275 | render.shader = LegacyHUDShader |
| 276 | case Circle: |
| 277 | render.shader = LegacyHUDShader |
| 278 | case Rectangle: |
| 279 | render.shader = LegacyHUDShader |
| 280 | case ComplexTriangles: |
| 281 | render.shader = LegacyHUDShader |
| 282 | case Text: |
| 283 | render.shader = TextHUDShader |
| 284 | default: |
| 285 | render.shader = HUDShader |
| 286 | } |
| 287 | } |
| 288 | |
| 289 | // If the scale is zero, set it to one. |
| 290 | if render.Scale.X == 0 { |
| 291 | render.Scale.X = 1 |
| 292 | } |
| 293 | if render.Scale.Y == 0 { |
| 294 | render.Scale.Y = 1 |
| 295 | } |
| 296 | |
| 297 | if render.zIndex == 0 { |
| 298 | render.zIndex = render.StartZIndex |
| 299 | } |
| 300 | |
| 301 | rs.entities = append(rs.entities, renderEntity{basic, render, space}) |
| 302 | rs.sortingNeeded = true |
| 303 | } |
| 304 | |
| 305 | // EntityExists looks if the entity is already into the System's entities. It will return the index >= 0 of the object into de rs.entities or -1 if it could not be found. |
| 306 | func (rs *RenderSystem) EntityExists(basic *ecs.BasicEntity) int { |
no test coverage detected