Blob Blame Raw
<html>
<head>
<meta charset="UTF-8" />
<link rel="stylesheet" type="text/css" href="style.css" />
<title>Группы спрайтов - Helianthus</title>
</head>
<body>
<div class="navigation">
  <p><a href="https://coolbug.org/users/bw/helianthus/ru.html">Helianthus</a></p>
  <hr />
  <p><a href="index.html">Helianthus: Документация</a></p>
  <p><a href="install.html">Установка</a></p>
  <p><a href="common.html">Запуск и общие функции</a></p>
  <p><a href="input.html">Клавиатура и мышь</a></p>
  <p><a href="drawing.html">Рисование</a></p>
  <p><a href="font.html">Шрифты и текст</a></p>
  <p><a href="animation.html">Текстуры и анимация</a></p>
  <p><a href="framebuffer.html">Буфер кадра</a></p>
  <p><a href="sprites.html">Спрайты</a></p>
  <p><a href="groups.html">Группы спрайтов</a></p>
  <p><a href="sound.html">Звук</a></p>
  <p><a href="ui.html">Пользовательский интерфейс</a></p>
  <hr />
  <p><a href="functions.html">Все функции</a></p>
</div>
<div class="content">

<h1>Группы спрайтов</h1>

<p>Вы можете объединять спрайты в группы. Группы помогут вам если вам нужно выполнять одинаковые действия со множеством спрайтов. Вы можете одной командой задать одинаковую скорость сразу всем спрайтам в группе, либо включить/выключить видимость спрайтов в группу и прочее.</p>

<p>Создать группу можно функцией <a href="groups.html#createGroup">createGroup</a>, которая возвращает значение типа <i>Group</i>, которое по сути является адресом в памяти — указателем на описание группы внутри библиотеки Helianthus.</p>

<p>Для добавления спрайта в группу используйте функцию <a href="groups.html#groupAdd">groupAdd</a>, для удаления из группы -  <a href="groups.html#groupRemove">groupRemove</a>.</p>

<p>Все функции для групп повторяют функции работы с одиночными спрайтами, только применяются они одновременно ко всем спрайтам в группе. Поэтому заглядывайте ещё и в раздел <a href="sprites.html" />«Спрайты»</a>.</p>

<h2>Функции:</h2>

<h3 id="createGroup">Group createGroup();</h3>

<p>Создать пустую группу. В дальнейшем вы можете добавить в неё спрайты функцией <a href="groups.html#groupAdd">groupAdd</a>.</p>

<h3 id="createEdgesGroup">Group createEdgesGroup();</h3>

<p>Создать группу спрайтов ограничивающих края экрана. Уровень массы для спрайтов рамки равен 100 (см. <a href="sprites.html#spriteSetMassLevel">spriteSetMassLevel</a>). Используйте эту группу если вам нужно сделать так чтобы спрайт отталкивался от краёв экрана. Смотрите описание физической модели в разделе <a href="sprites.html" />«Спрайты»</a><i>.</i></p>

<h3 id="createEdgesGroupEx">Group createEdgesGroupEx(double x1, double y1, double x2, double y2, double borderWidth, int massLevel);</h3>

<p>Создать группу спрайтов ограничивающих прямоугольник. Функция аналогична функции  <a href="groups.html#createEdgesGroup">createEdgesGroup</a>, только рамка создаётся не вокруг краёв экрана, а вокруг заданного вами прямоугольника.</p>

<h4>Параметры:</h4>

<p><i>x1</i>, <i>y1</i> — координаты верхнего левого угла прямоугольника;<br />
<i>x2</i>, <i>y2</i> — координаты нижнего правого угла прямоугольника;<br />
<i>borderWidth</i> — толщина рамки;<br />
<i>massLevel</i> — уровень массы для рамки, см. <a href="sprites.html#spriteSetMassLevel">spriteSetMassLevel</a>.</p>

<h3 id="groupDestroy">void groupDestroy(Group group);</h3>

<p>Удалить группу. Спрайты, которые содержались в группе продолжат существовать, просто они больше не будут состоять в данной группе.</p>

<p><b>Важно:</b> Скорее всего у вас в программе останется переменная в которой хранился указатель на группу. Этот указатель станет недействителен — будет указывать на неопределённую область памяти — не на группу, группа удалена. Вы можете занести в эту переменную другую группу, но использовать старое значение переменной больше нельзя это приведёт к ошибкам и непредсказуемому поведению программы.</p>

<h3 id="groupDestroyEx">void groupDestroyEx(Group group, int destroySprites);</h3>

<p>Удалить группу, с возможностью удаления и спрайтов тоже. См. также <a href="groups.html#groupDestroy">groupDestroy</a>.</p>

<h4>Параметры:</h4>

<p><i>destroySprites</i> — если <i>TRUE</i>, то перед удалением группы будут удалены и все содержащиеся в ней спрайты (см. <a href="sprites.html#spriteDestroy">spriteDestroy</a>).</p>

<h3 id="groupAdd">void groupAdd(Group group, Sprite sprite);</h3>

<p>Добавить спрайт в группу.</p>

<h4>Параметры:</h4>

<p><i>sprite</i> — спрайт для добавления.</p>

<h3 id="groupRemove">void groupRemove(Group group, Sprite sprite);</h3>

<p>Исключить спрайт из группы.</p>

<h4>Параметры:</h4>

<p><i>sprite</i> — спрайт для исключения.</p>

<h3 id="groupClear">void groupClear(Group group);</h3>

<p>Исключить из группы все спрайты. Группа станет пустой. См. также <a href="groups.html#groupRemove">groupRemove</a>.</p>

<h3 id="groupClearEx">void groupClearEx(Group group, int destroySprites);</h3>

<p>Очистить группу с возможностью удаления всех спрайтов. См. также <a href="groups.html#groupClear">groupClear</a>, <a href="groups.html#groupDestroyEx">groupDestroyEx</a>, <a href="sprites.html#spriteDestroy">spriteDestroy</a>.</p>

<h4>Параметры:</h4>

<p><i>destroySprites</i> — если <i>TRUE</i>, то спрайты вместо исключения из группы будут полностью удалены.</p>

<h3 id="groupContains">int groupContains(Group group, Sprite sprite);</h3>

<p>Возвращает <i>TRUE</i>, если спрайт содержится в группе, иначе  возвращает <i>FALSE</i>.</p>

<h4>Параметры:</h4>

<p><i>sprite</i> — спрайт для проверки.</p>

<h3 id="groupGetCount">int groupGetCount(Group group);</h3>

<p>Возвращает количество спрайтов в группе.</p>

<h3 id="groupGet">Sprite groupGet(Group group, int i);</h3>

<p>Возвращает содержащийся в группе спрайт по указанному номеру.</p>

<h4>Параметры:</h4>

<p><i>i</i> — номер спрайта в группе.</p>

<h3 id="groupSpriteByPoint">Sprite groupSpriteByPoint(Group group, double x, double y, int onlyVisible);</h3>

<p>Найти в группе спрайт физическое тело которого содержит указанную точку. Если таких спрайтов несколько то возвращается самый верхний из них. См. также <a href="sprites.html#spriteIsPointInside">spriteIsPointInside</a>, <a href="sprites.html#spriteSetDepth">spriteSetDepth</a>.</p>

<h4>Параметры:</h4>

<p><i>x</i>, <i>y</i> — координаты точки;<br />
<i>onlyVisible</i> — если <i>TRUE</i>, то поиск будет производиться только среди видимых спрайтов; если <i>FALSE</i>, то все спрайты группы будут включены в поиск.</p>

<h3 id="groupOverlap">int groupOverlap(Group group, Sprite sprite);</h3>
<h3 id="groupCollide">int groupCollide(Group group, Sprite sprite);</h3>

<p>Функции обнаружения и решения столкновений между группой и спрайтом. Смотрите аналогичные функции из раздела <a href="sprites.html" />«Спрайты»</a> — <a href="sprites.html#spriteOverlap">spriteOverlap</a> и <a href="sprites.html#spriteCollide">spriteCollide</a>. Каждый спрайт из группы будет взаимодействовать с указанным в параметрах функции спрайтом.</p>

<h3 id="groupOverlapGroup">int groupOverlapGroup(Group a, Group b);</h3>
<h3 id="groupCollideGroup">int groupCollideGroup(Group a, Group b);</h3>

<p>Функции обнаружения и решения столкновений между группой и группой. Смотрите аналогичные функции из раздела <a href="sprites.html" />«Спрайты»</a> — <a href="sprites.html#spriteOverlap">spriteOverlap</a> и <a href="sprites.html#spriteCollide">spriteCollide</a>. Каждый спрайт из первой группы будет взаимодействовать с каждым спрайтом из второй группы.</p>

<h3 id="groupOverlapBetween">int groupOverlapBetween(Group group);</h3>
<h3 id="groupCollideBetween">int groupCollideBetween(Group group);</h3>

<p>Функции обнаружения и решения столкновений между спрайтами в группе. Смотрите аналогичные функции из раздела <a href="sprites.html" />«Спрайты»</a> — <a href="sprites.html#spriteOverlap">spriteOverlap</a> и <a href="sprites.html#spriteCollide">spriteCollide</a>. Каждый спрайт в группе взаимодействует со всеми остальными спрайтами в группе.</p>

<h3 id="groupGetMinDepth">double groupGetMinDepth(Group group);</h3>

<p>Возвращает минимальную глубину среди всех спрайтов в группе.</p>

<h3 id="groupGetMaxDepth">double groupGetMaxDepth(Group group);</h3>

<p>Возвращает максимальную глубину среди всех спрайтов в группе.</p>

<h3 id="groupDestroyEach">void groupDestroyEach(Group group);</h3>

<p>Полностью удалить каждый спрайт в данной группе. Группа станет пустой. См. также <a href="groups.html#groupClearEx">groupClearEx</a>, <a href="sprites.html#spriteDestroy">spriteDestroy</a>.</p>

<h3 id="groupDestroyTimerEach">void groupDestroyTimerEach(Group group, double lifetime);</h3>

<p>Задать таймер на удаление для каждого спрайта в группе. См. также <a href="sprites.html#spriteDestroyTimer">spriteDestroyTimer</a>.</p>

<h3 id="groupSetVisibleEach">void groupSetVisibleEach(Group group, int visible);</h3>
<h3 id="groupSetFrozenEach">void groupSetFrozenEach(Group group, int frozen);</h3>
<h3 id="groupSetDebugEach">void groupSetDebugEach(Group group, int debug);</h3>
<h3 id="groupSetWidthEach">void groupSetWidthEach(Group group, double width);</h3>
<h3 id="groupSetHeightEach">void groupSetHeightEach(Group group, double height);</h3>
<h3 id="groupSetDepthEach">void groupSetDepthEach(Group group, double depth);</h3>
<h3 id="groupSetXEach">void groupSetXEach(Group group, double x);</h3>
<h3 id="groupSetYEach">void groupSetYEach(Group group, double y);</h3>
<h3 id="groupSetXYEach">void groupSetXYEach(Group group, double x, double y);</h3>
<h3 id="groupSetVelocityXEach">void groupSetVelocityXEach(Group group, double x);</h3>
<h3 id="groupSetVelocityYEach">void groupSetVelocityYEach(Group group, double y);</h3>
<h3 id="groupSetVelocityEach">void groupSetVelocityEach(Group group, double x, double y);</h3>
<h3 id="groupSetAccelerationXEach">void groupSetAccelerationXEach(Group group, double x);</h3>
<h3 id="groupSetAccelerationYEach">void groupSetAccelerationYEach(Group group, double y);</h3>
<h3 id="groupSetAccelerationEach">void groupSetAccelerationEach(Group group, double x, double y);</h3>
<h3 id="groupSetRotateToDirectionEach">void groupSetRotateToDirectionEach(Group group, int rotateToDirection);</h3>
<h3 id="groupSetRotationEach">void groupSetRotationEach(Group group, double rotation);</h3>
<h3 id="groupSetRotationSpeedEach">void groupSetRotationSpeedEach(Group group, double rotationSpeed);</h3>
<h3 id="groupSetScaleEach">void groupSetScaleEach(Group group, double scale);</h3>
<h3 id="groupSetMirrorXEach">void groupSetMirrorXEach(Group group, int mirrorX);</h3>
<h3 id="groupSetMirrorYEach">void groupSetMirrorYEach(Group group, int mirrorY);</h3>
<h3 id="groupPointToEach">void groupPointToEach(Group group, double x, double y);</h3>
<h3 id="groupSetSpeedAndDirectionEach">void groupSetSpeedAndDirectionEach(Group group, double speed, double angle);</h3>
<h3 id="groupSetAnimationEach">void groupSetAnimationEach(Group group, Animation animation);</h3>
<h3 id="groupSetNoAnimationEach">void groupSetNoAnimationEach(Group group);</h3>
<h3 id="groupSetShapeColorEach">void groupSetShapeColorEach(Group group, unsigned int colorCode);</h3>
<h3 id="groupSetTintColorEach">void groupSetTintColorEach(Group group, unsigned int colorCode);</h3>
<h3 id="groupSetBouncinessEach">void groupSetBouncinessEach(Group group, double bounciness);</h3>
<h3 id="groupSetBouncinessThresholdEach">void groupSetBouncinessThresholdEach(Group group, double bouncinessThreshold);</h3>
<h3 id="groupSetFrictionEach">void groupSetFrictionEach(Group group, double friction);</h3>
<h3 id="groupSetAirFrictionEach">void groupSetAirFrictionEach(Group group, double friction);</h3>
<h3 id="groupSetMassLevelEach">void groupSetMassLevelEach(Group group, int massLevel);</h3>
<h3 id="groupSetUserTagEach">void groupSetUserTagEach(Group group, int tag);</h3>
<h3 id="groupSetUserTextEach">void groupSetUserTextEach(Group group, const char *text);</h3>
<h3 id="groupSetUserDataEach">void groupSetUserDataEach(Group group, void *data);</h3>
<h3 id="groupSetDestroyEach">void groupSetDestroyEach(Group group, SpriteCallback destroy);</h3>

<p>Установить параметры для каждого спрайта в группе. Смотрите аналогичные функции из раздела <a href="sprites.html" />«Спрайты»</a>.</p>

<h3 id="groupSetColliderSensitiveDistance">void groupSetColliderSensitiveDistance(Group group, double distance);</h3>
<h3 id="groupSetColliderEach">void groupSetColliderEach(Group group, Collider type, double xOffset, double yOffset, double rotationOffset);</h3>
<h3 id="groupSetColliderCircleEach">void groupSetColliderCircleEach(Group group, double xOffset, double yOffset, double radius);</h3>
<h3 id="groupSetColliderRectangleEach">void groupSetColliderRectangleEach(Group group, double xOffset, double yOffset, double rotationOffset, double width, double height, double cornersRadius);</h3>
<h3 id="groupSetColliderEachEx">void groupSetColliderEachEx(Group group, Collider type, double xOffset, double yOffset, double rotationOffset, double width, double height, double radius);</h3>

<p>Установить параметры физического тела для каждого спрайта в группе. Смотрите аналогичные функции из раздела <a href="sprites.html" />«Спрайты»</a>.</p>

<h3 id="groupDraw">void groupDraw(Group group);</h3>

<p>Нарисовать все спрайты в группе. См. также <a href="sprites.html#spriteDraw">spriteDraw</a>, <a href="sprites.html#drawSprites">drawSprites</a>.</p>

</div>
</body>
</html>