<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="index.html">Helianthus</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="sprites.html">Спрайты</a></p>
<p><a href="groups.html">Группы спрайтов</a></p>
<p><a href="camera.html">Камера</a></p>
<p><a href="sound.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>Создать группу спрайтов ограничивающих края экрана. Используйте эту группу если вам нужно сделать так чтобы спрайт отталкивался от краёв экрана. Смотрите описание физической модели в разделе <i>«Спрайты».</i></p>
<h3 id="createEdgesGroupEx">Group createEdgesGroupEx(double x1, double y1, double x2, double y2, double borderWidth);</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> — толщина рамки.</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>
<h3 id="">Параметры:</h3>
<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="groupOverlap">int groupOverlap(Group group, Sprite sprite);</h3>
<h3 id="groupCollide">int groupCollide(Group group, Sprite sprite, double bounciness);</h3>
<h3 id="groupBounceOff">int groupBounceOff(Group group, Sprite sprite, double bounciness);</h3>
<h3 id="groupPush">int groupPush(Group group, Sprite sprite, double bounciness);</h3>
<h3 id="groupCollideEx">int groupCollideEx(Group group, Sprite sprite, int keepVelocityGroup, int keepVelocitySprite, double bounciness);</h3>
<p>Функции обнаружения и решения столкновений между группой и спрайтом. Смотрите аналогичные функции из раздела <a href="sprites.html">«Спрайты»</a>. Каждый спрайт из группы будет взаимодействовать с указанным в параметрах функции спрайтом.</p>
<h3 id="groupOverlapGroup">int groupOverlapGroup(Group a, Group b);</h3>
<h3 id="groupCollideGroup">int groupCollideGroup(Group a, Group b, double bounciness);</h3>
<h3 id="groupBounceOffGroup">int groupBounceOffGroup(Group group, Group other, double bounciness);</h3>
<h3 id="groupPushGroup">int groupPushGroup(Group group, Group other, double bounciness);</h3>
<h3 id="groupCollideGroupEx">int groupCollideGroupEx(Group a, Group b, int keepVelocityA, int keepVelocityB, double bounciness);</h3>
<p>Функции обнаружения и решения столкновений между группой и группой. Смотрите аналогичные функции из раздела <a href="sprites.html">«Спрайты»</a>. Каждый спрайт из первой группы будет взаимодействовать с каждым спрайтом из второй группы.</p>
<h3 id="groupOverlapBetween">int groupOverlapBetween(Group group);</h3>
<h3 id="groupCollideBetween">int groupCollideBetween(Group group, double bounciness);</h3>
<h3 id="groupCollideBetweenEx">int groupCollideBetweenEx(Group group, int keepVelocity, double bounciness);</h3>
<p>Функции обнаружения и решения столкновений между спрайтами в группе. Смотрите аналогичные функции из раздела <a href="sprites.html">«Спрайты»</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="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="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="groupSetLifetimeEach">void groupSetLifetimeEach(Group group, double lifetime);</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="groupSetTagEach">void groupSetTagEach(Group group, int tag);</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, const char *path);</h3>
<h3 id="groupSetNoAnimationEach">void groupSetNoAnimationEach(Group group);</h3>
<h3 id="groupSetShapeColorEach">void groupSetShapeColorEach(Group group, const char *color);</h3>
<h3 id="groupSetTintColorEach">void groupSetTintColorEach(Group group, const char *color);</h3>
<p>Установить параметры для каждого спрайта в группе. Смотрите аналогичные функции из раздела <a href="sprites.html">«Спрайты»</a>.</p>
<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>
</div>
</body>
</html>