예제 #1
0
        // TODO: Finding visible entities should be done somewhere else, like gravity entity or something?
        void Update()
        {
            // Right now, just looks at currently visible entities and adds new ones
            var contactFilter = new ContactFilter2D {
                useLayerMask = true, layerMask = layerMask
            };
            var visibleColliders = new Collider2D[maxVisible];

            if (lineOfSight != null && Physics2D.OverlapCollider(lineOfSight, contactFilter, visibleColliders) > 0)
            {
                for (int i = 0; i < visibleColliders.Length; i++)
                {
                    var col = visibleColliders[i];
                    if (col != null)
                    {
                        var relationship = col?.GetComponent <RelationshipEntity>();
                        if (relationship != null &&
                            relationship?.gameObject != this.gameObject &&
                            !Relationships.Contains(relationship)
                            )
                        {
                            Relationships.Add(relationship);
                            var relationshipEvent = new RelationshipEvent {
                                Target = relationship,
                                Rating = Vector2.zero,
                                Text   = $"Met {relationship.Name}",
                            };
                            Events.Add(relationshipEvent);
                            RelationshipRatings[relationship] = relationshipEvent.Rating;
                        }
                    }
                }
            }
        }
예제 #2
0
        public bool InsertRelationship(Relationship relationship)
        {
            if (relationship != null && !Relationships.Contains(relationship) &&
                Entities.Contains(relationship.First) && Entities.Contains(relationship.Second))
            {
                AddRelationship(relationship);
                return(true);
            }

            return(false);
        }
예제 #3
0
        public bool AddRelationship(Relationship relationship)
        {
            if (!Relationships.Contains(relationship))
            {
                if (Nodes.Contains(relationship.From) && Nodes.Contains(relationship.To))
                {
                    Relationships.Add(relationship);
                }
            }

            return(false);
        }
예제 #4
0
        public void AddRelationship(Relationship relationship)
        {
            if (Relationships.Contains(relationship))
            {
                return;
            }
            _relationships.Add(relationship);
            relationship.Database = Database;

            Database.AddRelationship(relationship);
            RaisePropertyChanged("Relationships");
            RelationshipsChanged.RaiseAdditionEventEx(this, relationship);
        }
예제 #5
0
 public bool Has(Relationship relationship)
 {
     return(Relationships.Contains(relationship));
 }