public void CustomUpdate() { foreach (int door in DoorGroup) { DoorCloseAutomaticallyCmp doorComponent = EntityBase.GetEntity(door).GetComponent <DoorCloseAutomaticallyCmp>(); DoorAnimCmp doorAnim = EntityBase.GetEntity(door).GetComponent <DoorAnimCmp>(); foreach (int player in PlayerGroup) { Vector3 door_pos = doorComponent.transform.position; Vector3 player_pos = EntityBase.GetEntity(player).transform.position; if (!InZone(doorComponent, player_pos) && doorAnim.is_open) { if (!Storage.ContainsComponent <StairDoorDownCmp>(door)) { EntityBase.GetEntity(door).GetComponent <DoorAnimCmp>().anim.Play("DoorCloseAnim"); } else { EntityBase.GetEntity(door).GetComponent <DoorAnimCmp>().anim.Play("DoorCloseReverseAnim"); } } } } }
bool InZone(DoorCloseAutomaticallyCmp door, Vector3 player_pos) { bool in_gorizontal; Vector2 door_pos = new Vector2(door.transform.position.x, door.transform.position.z); in_gorizontal = Vector2.Distance(door_pos, new Vector2(player_pos.x, player_pos.z)) <= door.switching_distances_gorizontal; return(in_gorizontal); }