ByteArena / ecs

Go implementation of the Entity/Component/System paradigm

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Inaccessible error condition

inhies opened this issue · comments

I believe the if !ok check in the bottom of this snippet is inaccessible and therfore not required, due to the check for entity.tag.matches(tag) prior to it. I cannot come up with a situation in which the first tag check would pass but the attempt to get component data would fail. Is this correct? Code inserted below for your reference:

func (manager *Manager) fetchComponentsForEntity(entity *Entity, tag Tag) map[*Component]interface{} {

	if !entity.tag.matches(tag) {
		return nil
	}

	componentMap := make(map[*Component]interface{})

	for _, component := range manager.components {
		if tag.matches(component.tag) {
			data, ok := entity.GetComponentData(component)
			if !ok {
				return nil // if one of the required components is not set, return nothing !
			}```