PackedVector3Array

Пакетний масив Vector3s.

Опис

Масив, спеціально розроблений для зберігання Vector3. Щільно упаковує дані, що економить пам'ять для масивів великого розміру.

Відмінності між упакованими масивами, типізованими масивами та нетипізованими масивами: Упаковані масиви, як правило, швидше перебираються та модифікуються порівняно з типізованим масивом того ж типу (наприклад, PackedVector3Array проти Array[Vector3]). Крім того, упаковані масиви споживають менше пам'яті. Недоліком є те, що упаковані масиви менш гнучкі, оскільки вони не пропонують стільки зручних методів, як Array.map(). Типізовані масиви, у свою чергу, швидше перебираються та модифікуються, ніж нетипізовані масиви.

Примітка: Упаковані масиви завжди передаються за посиланням. Щоб отримати копію масиву, яку можна модифікувати незалежно від оригінального масиву, використовуйте duplicate(). Це не стосується вбудованих властивостей та методів. У цих випадках повернутий упакований масив є копією, і його зміна не вплине на початкове значення. Щоб оновити вбудовану властивість цього типу, змініть повернутий масив, а потім знову призначте його властивості.

Примітка

Існують значні відмінності при використанні цього API із С#. Більше інформації: ref:doc_c_sharp_differences.

Конструктори

PackedVector3Array

PackedVector3Array()

PackedVector3Array

PackedVector3Array(from: PackedVector3Array)

PackedVector3Array

PackedVector3Array(from: Array)

Методи

bool

append(value: Vector3)

void

append_array(array: PackedVector3Array)

int

bsearch(value: Vector3, before: bool = true)

void

clear()

int

count(value: Vector3) const

PackedVector3Array

duplicate()

bool

erase(value: Vector3)

void

fill(value: Vector3)

int

find(value: Vector3, from: int = 0) const

Vector3

get(index: int) const

bool

has(value: Vector3) const

int

insert(at_index: int, value: Vector3)

bool

is_empty() const

bool

push_back(value: Vector3)

void

remove_at(index: int)

int

resize(new_size: int)

void

reverse()

int

rfind(value: Vector3, from: int = -1) const

void

set(index: int, value: Vector3)

int

size() const

PackedVector3Array

slice(begin: int, end: int = 2147483647) const

void

sort()

PackedByteArray

to_byte_array() const

Оператори

bool

operator !=(right: PackedVector3Array)

PackedVector3Array

operator *(right: Transform3D)

PackedVector3Array

operator +(right: PackedVector3Array)

bool

operator ==(right: PackedVector3Array)

Vector3

operator [](index: int)


Описи конструкторів

PackedVector3Array PackedVector3Array() 🔗

Будуємо порожній PackedVector3Array.


PackedVector3Array PackedVector3Array(from: PackedVector3Array)

Constructs a PackedVector3Array як копія даної PackedVector3Array.


PackedVector3Array PackedVector3Array(from: Array)

Створює новий PackedVector3Array. За бажанням ви можете передати загальний Array, який буде перетворено.

Примітка. Під час ініціалізації PackedVector3Array з елементами, він повинен бути ініціалізований Array значень Vector3:

var array = PackedVector3Array([Vector3(12, 34, 56), Vector3(78, 90, 12)])

Описи методів

bool append(value: Vector3) 🔗

Додає елемент у кінець масиву (псевдонім push_back()).


void append_array(array: PackedVector3Array) 🔗

Додаток PackedVector3Array в кінці цього масиву.


int bsearch(value: Vector3, before: bool = true) 🔗

Знаходить індекс існуючого значення (або індекс вставки, який підтримує порядок сортування, якщо значення ще не присутнє в масиві) за допомогою бінарного пошуку. За бажанням можна передати специфікатор before. Якщо false, індекс, що повертається, йде після всіх існуючих записів значення в масиві.

Примітка: Виклик bsearch() на невідсортованому масиві призводить до неочікуваної поведінки.

Примітка: Поведінка векторів з @GDScript.NAN відрізняється від інших. Через це результати цього методу можуть бути неточними за наявності NaN-ів.


void clear() 🔗

Очищає масив. Еквівалентно використанню resize() з розміром 0.


int count(value: Vector3) const 🔗

Повертає кількість разів елемент знаходиться в масиві.

Примітка: Поведінка векторів з @GDScript.NAN відрізняється від інших. Через це результати цього методу можуть бути неточними за наявності NaN-ів.


PackedVector3Array duplicate() 🔗

Створює копію масиву і повертає його.


bool erase(value: Vector3) 🔗

Видаляє перше входження значення з масиву та повертає true. Якщо значення не існує в масиві, нічого не відбувається, і повертається false. Щоб видалити елемент за індексом, використовуйте метод remove_at.

Примітка: Вектори з елементами @GDScript.NAN поводяться інакше, ніж інші вектори. Тому результати цього методу можуть бути неточними, якщо включені NaN.


void fill(value: Vector3) 🔗

Присвоює задане значення всім елементам масиву. Зазвичай це можна використовувати разом з resize() для створення масиву заданого розміру та ініціалізованих елементів.


int find(value: Vector3, from: int = 0) const 🔗

Шукаж значення в масиві та повертає індекс або -1, якщо не знайдено. Додатково може бути переданий початковий індекс пошуку.

Примітка: Поведінка векторів з @GDScript.NAN відрізняється від інших. Через це результати цього методу можуть бути неточними за наявності NaN-ів.


Vector3 get(index: int) const 🔗

Повертає Vector3 за заданим index у масиві. Якщо index виходить за межі або є від'ємним, цей метод завершується невдачею та повертає Vector3(0, 0, 0).

Цей метод схожий (але не ідентичний) на оператор []. Найголовніше, що коли цей метод завершується невдачею, він не призупиняє виконання проекту, якщо його запускати з редактора.


bool has(value: Vector3) const 🔗

Повертає true, якщо масив містить value.

Примітка: Вектори з елементами @GDScript.NAN не поводять себе так, як інші вектори. Через це результати цього методу можуть бути неточними за наявності NaN-ів.


int insert(at_index: int, value: Vector3) 🔗

Вставте новий елемент на даній позиції в масиві. Посада повинна бути дійсна, або в кінці масиву (idx == розмір()).


bool is_empty() const 🔗

Повертає true, якщо масив порожній.


bool push_back(value: Vector3) 🔗

Вставте Vector3 в кінці.


void remove_at(index: int) 🔗

Видаляє елемент з масиву за індексом.


int resize(new_size: int) 🔗

Встановлює розмір масиву. Якщо масив збільшується, резервує елементи в кінці масиву. Якщо масив скорочується, обрізає масив до нового розміру. Виклик методу resize() один раз і призначення нових значень відбувається швидше, ніж додавання нових елементів по одному.

Повертає @GlobalScope.OK у разі успіху або одну з наступних констант Error, якщо цей метод не працює: @GlobalScope.ERR_INVALID_PARAMETER, якщо розмір від'ємний, або @GlobalScope.ERR_OUT_OF_MEMORY, якщо розподіл пам'яті не вдається. Використовуйте метод size(), щоб знайти фактичний розмір масиву після зміни розміру.


void reverse() 🔗

Змінює порядок елементів у масиві на протилежний.


int rfind(value: Vector3, from: int = -1) const 🔗

Шукає значення в масиві у зворотному порядку. Додатково може бути переданий початковий індекс пошуку. Якщо негативний, початковий індекс вважається відносно кінця масиву.

Примітка: Поведінка векторів з @GDScript.NAN відрізняється від інших. Через це результати цього методу можуть бути неточними за наявності NaN-ів.


void set(index: int, value: Vector3) 🔗

Змінює Vector3 в даній позиції.


int size() const 🔗

Повертає кількість елементів у масиві.


PackedVector3Array slice(begin: int, end: int = 2147483647) const 🔗

Повертає розріз PackedVector3Array, з start (включно) до end (виключно), як новий PackedVector3Array.

Абсолютне значення start і end буде зафіксовано до розміру масиву, тому значення за замовчуванням для end робить кінець розрізу кінцем масиву за замовчуванням (тобто arr.slice(1) є скороченим записом для arr.slice(1, arr.size())).

Якщо ж start або end є негативними, вони будуть відносно кінця масиву (тобто arr.slice(0, -2) є скороченим записом для arr.slice(0, arr.size() - 2)).


void sort() 🔗

Сортує елементи масиву в порядку зростання.

Примітка: Поведінка векторів з @GDScript.NAN відрізняється від інших. Через це результати цього методу можуть бути неточними за наявності NaN-ів.


PackedByteArray to_byte_array() const 🔗

Повернення PackedByteArray з кожним вектором закодовано як байти.


Описи операторів

bool operator !=(right: PackedVector3Array) 🔗

Повертає true, якщо вміст масивів відрізняється.


PackedVector3Array operator *(right: Transform3D) 🔗

Повертає нову PackedVector3Array з усіма векторами в цьому масиві, навпаки, трансформується (multiplied) за допомогою даної Transform3D матриці перетворення, під припущенням, що основа трансформації є ортонормальним (тобто обертання / рефлекція є дрібним, масштабування / шавлія не).

array * трансформатор еквівалент transform.inverse() * array. Transform3D.inverse().

Для перетворення інверсом афінової трансформації (наприклад, з масштабуванням) transform.affine_inverse() * array може використовуватися замість. Transform3D.affine_inverse().


PackedVector3Array operator +(right: PackedVector3Array) 🔗

Повертає новий PackedVector3Array з вмістом right додано в кінці цього масиву. Для кращої роботи розглянемо використання append_array() замість.


bool operator ==(right: PackedVector3Array) 🔗

Повертає true, якщо вміст обох масивів однаково, тобто вони мають всі рівні Vector3 на відповідних показниках.


Vector3 operator [](index: int) 🔗

Повернення Vector3 в індексі index. Негативні індекси можуть використовуватися для доступу до елементів з кінця. Використання індексу з меж масиву призведе до помилки.