diff --git a/doc/en/scripting/builtins/libworld.md b/doc/en/scripting/builtins/libworld.md index b2453b34b..54b44fe15 100644 --- a/doc/en/scripting/builtins/libworld.md +++ b/doc/en/scripting/builtins/libworld.md @@ -70,4 +70,45 @@ world.save_chunk_data( -- compressed chunk data data: Bytearray ) + +-- Casts a ray from the start point in the dir direction. +world.raycast( + params: table { + [==[ required parameters ]==] + -- starting point + start: vec3, + -- ray direction vector + dir: vec3, + -- maximum distance + distance: number, + + [==[ additional parameters (entities) ]==] + -- consider entities + entities: bool = true, + -- uid of the ignored entity + ignore_uid: number = 0 (ENTITY_NONE), + -- id of the entity types used for filtering + filter_entities: table = nil, + -- exclusion filtering mode: + -- if true, filter_entities defines the list of ignored entity types + entities_exclusion: bool = false, + + [==[ additional parameters (blocks) ]==] + -- id of the block types used for filtering + filter_blocks: table = nil, + -- exclusion filtering mode: + -- if true, filter_blocks defines the list Ignored + blocks_exclusion: bool = true, + -- include blocks with selectable=false + nonselect_blocks: bool = false; + } +) -> { + block: int or nil, -- block id + entity: int or nil, -- entity uid + endpoint: vec3, -- ray touchpoint + iendpoint: vec3, -- position of the block touched by the ray + length: number, -- ray length + normal: vec3, -- normal vector of the surface touched by the ray +} or nil if the ray did not touch a block or entity +``` ``` diff --git a/doc/ru/scripting/builtins/libworld.md b/doc/ru/scripting/builtins/libworld.md index 215329df3..6b945aa76 100644 --- a/doc/ru/scripting/builtins/libworld.md +++ b/doc/ru/scripting/builtins/libworld.md @@ -69,4 +69,44 @@ world.save_chunk_data( -- сжатые данные чанка data: Bytearray ) -``` \ No newline at end of file + +-- Бросает луч из точки start в направлении dir. +world.raycast( + params: table { + [==[ обязательные параметры ]==] + -- стартовая точка + start: vec3, + -- вектор направления луча + dir: vec3, + -- максимальное расстояние + distance: number, + + [==[ дополнительные параметры (сущности) ]==] + -- учитывать сущности + entities: bool = true, + -- uid игнорируемой сущности + ignore_uid: number = 0 (ENTITY_NONE), + -- id типов сущностей используемых для фильтрации + filter_entities: table = nil, + -- исключающий режим фильтрации: + -- при значении (true) filter_entities определяет список игнорируемых + entities_exclusion: bool = false, + + [==[ дополнительные параметры (блоки) ]==] + -- id типов блоков используемых для фильтрации + filter_blocks: table = nil, + -- исключающий режим фильтрации: + -- при значении (true) filter_blocks определяет список игнорируемых + blocks_exclusion: bool = true, + -- учитывать блоки с selectable=false + nonselect_blocks: bool = false; + } +) -> { + block: int или nil, -- id блока + entity: int или nil, -- uid сущности + endpoint: vec3, -- точка касания луча + iendpoint: vec3, -- позиция блока, которого касается луч + length: number, -- длина луча + normal: vec3, -- вектор нормали поверхности, которой касается луч +} или nil если луч не коснулся блока или сущности +```