void Update() { bool mousePressed = Input.GetMouseButtonDown(0); PlanPathToLocForAvatar(WorldManager.g.MouseLocOnPlaneXY(), _avatarXY, mousePressed); PlanPathToLocForAvatar(WorldManager.g.MouseLocOnPlaneZY(), _avatarZY, mousePressed); var avatar = _avatars[_selectedAvatarIndex]; if (Input.GetKeyDown(KeyCode.Space)) { avatar.Deactivate(); _selectedAvatarIndex++; _selectedAvatarIndex %= _avatars.Length; avatar = _avatars[_selectedAvatarIndex]; avatar.Activate(); } else { bool moveKeyPressed = false; IntVector2D delta = new IntVector2D(); if (Input.GetKey(KeyCode.RightArrow)) { delta += new IntVector2D(1, 0); moveKeyPressed = true; } if (Input.GetKey(KeyCode.LeftArrow)) { delta += new IntVector2D(-1, 0); moveKeyPressed = true; } if (avatar.Orientation == PlaneOrientation.XY) { delta *= -1; } if (!WorldManager.g.CanMoveByDelta(avatar.Entity, delta)) { delta += new IntVector2D(0, 1); } if (moveKeyPressed) { List <IntVector2D> list = PlanPathToLocForAvatar(avatar.Location + delta, avatar, false); if (list != null && list.Count > 0 && list[0] != avatar.Location) { avatar.DesiredPath = list; } } } Rotatable r = _avatar3d.ObjectToRotate; if (r != null) { r.AnimateAtAnchor(_avatar3d.Anchor); if (Input.GetKey(KeyCode.Z)) { r.RotateCounterClockwise(_avatar3d.Anchor); } else if (Input.GetKey(KeyCode.X)) { r.RotateClockwise(_avatar3d.Anchor); } } }