1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/supersuraccoon-ssrlos-doc

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
api.md 17 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 01.12.2024 05:27 c767ca0

SSRLoS API

Ранний функционал был разработан в соответствии со стилем cocos2d-x, позже стал популярным Creator. При портировании учитывался компонентный подход к проектированию.

Внимание

Представленные здесь API и демонстрационные программы основаны на cocos2d-x. Однако, поскольку основные алгоритмы реализации Creator и cocos2d-x полностью совпадают, эти API в основном также можно использовать непосредственно в проекте Creator.

Документация jsdoc немного отстаёт от фактического открытого исходного кода.

В документации jsdoc не содержится информация о компоненте shadow, так как он находится в экспериментальной версии.

API-документация всё ещё дорабатывается. Для получения подробной информации об интерфейсах и методах использования рекомендуется обратиться к соответствующему Demo.

Core

Основной компонент LoS основан на алгоритме трассировки лучей для вычисления видимой области и других связанных данных.

Load — установка компонента

Любой объект cc.Node может быть оснащён компонентом для получения функции видимости:

var robot = new cc.Sprite("...");
scene.addChild(robot);
var losCoreComponent = robot.addComponent(ssr.LoS.Component.Core, this);

Setup — настройка компонента

После добавления компонента LoS можно настроить его с помощью различных интерфейсов. Здесь представлены некоторые основные интерфейсы.

Owner — владелец

Устанавливает владельца компонента. По умолчанию привязывается при добавлении компонента, а затем изменяется через этот интерфейс:

losCoreComponent.setOwner(node);

Mode — режим

Компонент поддерживает четыре основных режима видимости:

  • Unlimited Range — неограниченная дальность видимости, неограниченный угол обзора: 360°.
  • Limited Range Full Angle — ограниченная дальность видимости, неограниченный угол обзора: 360°.
  • Limited Range Non Reflex Angle — ограниченная дальность видимости, ограниченный угол обзора: (0°, 180].
  • Limited Range Reflex Angle — ограниченная дальность видимости, ограниченный угол обзора: (180°, 360).

Обратите внимание: хотя модуль предоставляет интерфейс setMode для переключения режимов, обычно он используется только для перехода в режим Unlimited Range.

Остальные режимы включаются автоматически при установке соответствующих параметров:

// Установка диапазона видимости вызывает автоматический переход в режим LIMITED_RANGE_WITH_FULL_ANGLE
losCoreComponent.setRadius(value);
// Установка центрального угла обзора (в градусах) вызывает автоматический переход в режимы LIMITED_RANGE_WITH_REFLEX_ANGLE / NON_REFLEX_ANGLE
losCoreComponent.setCentralAngle(value);
// Настройка размера видимой зоны применима только к режиму UNLIMITED_RANGE
losCoreComponent.setSightSize(value);
// Настройка видимого прямоугольника применима только к режиму UNLIMITED_RANGE
losCoreComponent.setSightRect(value);
<iframe src="https://codesandbox.io/embed/ssrlos-demo-modes-yxbgj?fontsize=14&hidenavigation=1&theme=dark&view=preview" style="width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;" title="ssrlos-demo-modes" allow="accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking" sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts" ></iframe>

Obstacle — препятствие

После настройки режима и параметров необходимо добавить препятствия.

// Добавление препятствий для расчёта видимости
losCoreComponent.addObstacle(node);
// Удаление ранее добавленных препятствий
losCoreComponent.removeObstacle(node);
// Удаление всех добавленных препятствий
losCoreComponent.removeAllObstacles();
// Получение всех добавленных препятствий
losCoreComponent.getObstacles();

Update — обновление

После завершения настройки можно получить данные о видимости через компонент.

// Вызов по мере необходимости для обновления данных о диапазоне видимости. Обычно требуется вызывать каждый кадр
losCoreComponent.update();

Output — вывод

Данные о видимости можно получить после вызова интерфейса обновления.

// Получение фактической видимой области
losCoreComponent.getSightArea();
// Получение информации о реальных препятствиях на границе
losCoreComponent.getBlockingEdgeArray();
// Получение всей информации о лучах
losCoreComponent.getRayArray();
// Получение всей потенциальной информации о препятствиях на границах
losCoreComponent.getPotentialBlockingEdgeArray();
// Получение всей реальной информации о видимых границах
losCoreComponent.getVisibleEdgeArray();
// Получение всей информации о точках пересечения
losCoreComponent.getHitPointArray();
// Получение информации о вершинах видимости
losCoreComponent.getSightVertArray();

Obstacle

Препятствия являются важной информацией для вычислений основного компонента.

Load — установка компонента

Благодаря дизайну компонентов любой объект можно легко преобразовать в препятствие.

Все объекты engine cc.Node могут стать препятствиями.

var wall = new cc.Sprite("...");
scene.addChild(wall);
var losObstacleComponent = wall.addComponent(ssr.LoS.Component.Obstacle);

Setup — настройка компонента

Создав препятствие, необходимо его настроить.

Информация о вершинах

TBD

Свойства управления

TBD

<iframe src="https://codesandbox.io/embed/ssrlos-demo-dirty-detection-eft0n?fontsize=14&hidenavigation=1&theme=dark&view=preview" style="width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;" title="ssrlos-demo-dirty-detection" allow="accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking" sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts" ></iframe>

Render

Визуализация компонентов позволяет создавать различные эффекты визуализации с использованием разных компонентов.

Create — создание

// Создание компонента для визуализации лучей, затем настройка некоторых свойств эффекта визуализации
var losComponentRenderRay = new ssr.LoS.Component.RenderRay(loSComponentCore);
losComponentRenderRay.setup(TRANSPARENT, 1, YELLOW);
this.addChild(losComponentRenderRay);
// Доступно множество компонентов визуализации, которые в основном соответствуют выходным данным алгоритма один к одному. ССР. ЛоС. Компонент. Рендер Рэй.
ССР. ЛоС. Компонент. Рендер Потеншиал БлокИн Эдж.
ССР. ЛоС. Компонент. Рендер БлокИн Эдж.
ССР. ЛоС. Компонент. Рендер Визибл Эдж.
ССР. ЛоС. Компонент. Рендер Сайт Арэа.
ССР. ЛоС. Компонент. Рендер Хит Пойнт.
ССР. ЛоС. Компонент. Рендер Сайт Верт.

### Update  обновление

После создания рендер-объекта необходимо согласовать его с компонентом Core для управления им:

```javascript
// Все рендер компоненты имеют plot, метод, который используется для рендеринга путём вызова.
if (losCoreComponent.update()) {
    // Если Core обновлён, то рендер также обновляется.
    losComponentRenderXXX.plot();
}
// Все рендер компоненты также имеют enable / disable, методы, которые по умолчанию отключены.
losComponentRenderXXX.disable();
losComponentRenderXXX.enable();
<iframe src="https://codesandbox.io/embed/ssrlos-demo-output-render-nwij2?fontsize=14&hidenavigation=1&theme=dark&view=preview" style="width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;" title="ssrlos-demo-output-render" allow="accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking" sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"> </iframe>

Mask

Компоненты Render в основном используются для непосредственного рендеринга выходных данных алгоритма и часто используются для отладки. Конечно, пользователи также могут свободно настраивать их.

В отличие от этого, Mask — это настройка способа рендеринга SightArea в компонентах Render, которая достигает эффекта отображения только видимой области источника света.

Create — создание

var losMaskComponent = new ssr.LoS.Component.Mask(BLACK);
this.addChild(losMaskComponent);
<iframe src="https://codesandbox.io/embed/ssrlos-demo-mask-gihmn?fontsize=14&hidenavigation=1&theme=dark&view=preview" style="width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;" title="ssrlos-demo-mask" allow="accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking" sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"> </iframe>

Target — цель

После создания компонента Mask необходимо добавить цели, которые нужно рендерить. Поддерживается одновременный рендеринг нескольких целей.

losMaskComponent.addTarget(loSComponentCoreA);
losMaskComponent.addTarget(loSComponentCoreB);
losMaskComponent.addTarget(loSComponentCoreC);
<iframe src="https://codesandbox.io/embed/ssrlos-demo-multi-masks-f68bq?fontsize=14&hidenavigation=1&theme=dark&view=preview" style="width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;" title="ssrlos-demo-multi-masks" allow="accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking" sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"> </iframe>

Update — обновление

После добавления целей рендеринга, как и в случае с компонентами Render, при необходимости можно выполнить рендеринг в сочетании с Core.

if (losCoreComponent.update()) {
    // Если Core обновлен, то рендерится.
    // Можно выбрать обновление на основе собственной логики.
    losMaskComponent.updateTarget(loSComponentCoreA);
    losMaskComponent.updateTarget(loSComponentCoreC);
}

Light

Реализует простой эффект освещения путём настройки рендеринга SightArea, рассчитанного компонентом Core.

TBD

<iframe src="https://codesandbox.io/embed/ssrlos-demo-light-0h9gj?fontsize=14&hidenavigation=1&theme=dark&view=preview" style="width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;" title="ssrlos-demo-light" allow="accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking" sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"> </iframe>

Поддержка нескольких источников света

TBD

<iframe src="https://codesandbox.io/embed/ssrlos-demo-multi-lights-m2ryx?fontsize=14&hidenavigation=1&theme=dark&view=preview" style="width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;" title="ssrlos-demo-multi-lights" allow="accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking" sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"> </iframe>

Shadow [экспериментальная версия]

На основе расчёта SightArea компонентом Core. Провести кастомизированный рендеринг, реализовать простой эффект тени.

TBD

<iframe src="https://codesandbox.io/embed/ssrlos-demo-shadow-q44qo?fontsize=14&hidenavigation=1&theme=dark&view=preview" style="width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;" title="ssrlos-demo-shadow" allow="accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking" sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts" ></iframe>

Tool

Visibility — целевая видимость

TBD

<iframe src="https://codesandbox.io/embed/ssrlos-demo-visibility-744mo?fontsize=14&hidenavigation=1&theme=dark&view=preview" style="width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;" title="ssrlos-demo-visibility" allow="accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking" sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts" ></iframe>

Helper

Некоторые функции, связанные с алгоритмами, также доступны для внешнего вызова. Подробнее см. jsdoc.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/supersuraccoon-ssrlos-doc.git
git@api.gitlife.ru:oschina-mirror/supersuraccoon-ssrlos-doc.git
oschina-mirror
supersuraccoon-ssrlos-doc
supersuraccoon-ssrlos-doc
master