private static IEnumerable <IWorldObject> ClientGetObjectsAtCurrentMousePosition() { var currentCharacter = Api.Client.Characters.CurrentPlayerCharacter; return(ClientComponentObjectInteractionHelper // find by click area .FindObjectsAtCurrentMousePosition( currentCharacter, CollisionGroups.ClickArea) // find by default collider .Concat( ClientComponentObjectInteractionHelper .FindObjectsAtCurrentMousePosition( currentCharacter, CollisionGroups.Default))); }
public static IStaticWorldObject ClientFindWorldObjectAtCurrentMousePosition() { var currentCharacter = Api.Client.Characters.CurrentPlayerCharacter; return(ClientComponentObjectInteractionHelper.FindStaticObjectAtCurrentMousePosition( currentCharacter, CollisionGroups.ClickArea) // second try to find by default collider ?? ClientComponentObjectInteractionHelper.FindStaticObjectAtCurrentMousePosition( currentCharacter, CollisionGroups.Default) // try to find object in the pointed tile ?? Api.Client.World.GetTile(Api.Client.Input.MouseWorldPosition.ToVector2Ushort()) .StaticObjects.OrderByDescending(o => o.ProtoStaticWorldObject.Kind) .FirstOrDefault()); }
private static IEnumerable <IWorldObject> ClientGetObjectsAtCurrentMousePosition() { var currentCharacter = Api.Client.Characters.CurrentPlayerCharacter; return(ClientComponentObjectInteractionHelper // find by click area .FindObjectsAtCurrentMousePosition( currentCharacter, CollisionGroups.ClickArea) // find by default collider .Concat( ClientComponentObjectInteractionHelper .FindObjectsAtCurrentMousePosition( currentCharacter, CollisionGroups.Default)) //find object in the pointed tile .Concat( Api.Client.World.GetTile(Api.Client.Input.MouseWorldPosition.ToVector2Ushort()) .StaticObjects.OrderByDescending(o => o.ProtoStaticWorldObject.Kind))); }
public static IStaticWorldObject ClientFindWorldObjectAtCurrentMousePosition() { var currentCharacter = Api.Client.Characters.CurrentPlayerCharacter; var objects = ClientComponentObjectInteractionHelper // find by click area .FindStaticObjectsAtCurrentMousePosition( currentCharacter, CollisionGroups.ClickArea) // find by default collider .Concat( ClientComponentObjectInteractionHelper .FindStaticObjectsAtCurrentMousePosition( currentCharacter, CollisionGroups.Default)) //find object in the pointed tile .Concat( Api.Client.World.GetTile(Api.Client.Input.MouseWorldPosition.ToVector2Ushort()) .StaticObjects.OrderByDescending(o => o.ProtoStaticWorldObject.Kind)); // find first damaged or incomplete structure there foreach (var worldObject in objects) { if (!(worldObject.ProtoStaticWorldObject is IProtoObjectStructure protoObjectStructure)) { continue; } var maxStructurePointsMax = protoObjectStructure.SharedGetStructurePointsMax(worldObject); var structurePointsCurrent = worldObject.GetPublicState <StaticObjectPublicState>().StructurePointsCurrent; if (structurePointsCurrent < maxStructurePointsMax) { return(worldObject); } } return(null); }