/**
* @Author - Ivasik
* @link - http://forum.mcmodding.ru/Пользователь-Ivasik
*/
GlStateManager.pushMatrix();
GlStateManager.disableTexture2D();
GlStateManager.color(0, 0, 0, 0.4F);
GlStateManager.translate(this.width / 2 + 0.5, this.height / 2, 0);
double a = Math.toDegrees(Math.atan2(mouseY - (height / 2), mouseX - (width / 2)));
double d = Math.sqrt(Math.pow(mouseX - (width / 2), 2) + Math.pow(mouseY - (height / 2), 2));
float s0 = ((-0.5F / 4.0F) + 0.5f) * 360;
if (a < s0) a += 360;
for(int i = 1; i < 5; i++)
{
GlStateManager.rotate(90, 0, 0, 1);
...
Ivasik написал(а):Немного доделать осталось, подредачу код и выложу на всеобщее обозрение.
Ivasik написал(а):Ага, добавлю! (нет)
Ivasik написал(а):Такие вещи нужно знать и уметь делать самому.
/**
* @Author - Ivasik
* @link - http://forum.mcmodding.ru/Пользователь-Ivasik
*/
GlStateManager.pushMatrix();
GlStateManager.disableTexture2D();
GlStateManager.color(0, 0, 0, 0.4F);
GlStateManager.translate(this.width / 2 + 0.5, this.height / 2, 0);
double a = Math.toDegrees(Math.atan2(mouseY - (height / 2), mouseX - (width / 2)));
double d = Math.sqrt(Math.pow(mouseX - (width / 2), 2) + Math.pow(mouseY - (height / 2), 2));
float s0 = ((-0.5F / 4.0F) + 0.5f) * 360;
if (a < s0) a += 360;
for(int i = 1; i < 5; i++)
{
GlStateManager.rotate(90, 0, 0, 1);
double angleSegment = (Math.PI * 2 / 4), angle = angleSegment * 2, radiusMin = 58, radiusMax = 92, angleAb, angleCircle;
float s = (((i - 0.5F) / 4.0F) + 0.25F) * 360;
float e = (((i + 0.5F) / 4.0F) + 0.25F) * 360;
angle += Math.toRadians(180D);
if (a >= s && a < e && d >= 10 && d < 92)
{
radiusMax = 92;//def: 100
radiusMin = 10;//def: 64
GlStateManager.color(0, 0, 0, 0.6f);
}
else
{
GlStateManager.color(0, 0, 0, 0.4f);
}
final VertexBuffer vertexBuffer = Tessellator.getInstance().getBuffer();
vertexBuffer.begin(7, DefaultVertexFormats.POSITION);
for (int i1 = 0; i1 < 32; i1++)
{
angleAb = ((angleSegment) / 32D);
angleCircle = i1 * angleAb + angle - angleSegment / 2;
vertexBuffer.pos(Math.sin(angleCircle) * radiusMax, Math.cos(angleCircle) * radiusMax, -1).endVertex();
vertexBuffer.pos(Math.sin(angleCircle + angleAb) * radiusMax, Math.cos(angleCircle + angleAb) * radiusMax, -1).endVertex();
vertexBuffer.pos(Math.sin(angleCircle + angleAb) * radiusMin, Math.cos(angleCircle + angleAb) * radiusMin, -1).endVertex();
vertexBuffer.pos(Math.sin(angleCircle) * radiusMin, Math.cos(angleCircle) * radiusMin, -1).endVertex();
}
Tessellator.getInstance().draw();
}
GlStateManager.enableTexture2D();
GlStateManager.popMatrix();
Ты на какую версию делал?Ivasik написал(а):Лойсы в студию!
[video=youtube]https://youtu.be/hLiAT9gN3GQ[/video]
Код:/** * @Author - Ivasik * @link - http://forum.mcmodding.ru/Пользователь-Ivasik */ GlStateManager.pushMatrix(); GlStateManager.disableTexture2D(); GlStateManager.color(0, 0, 0, 0.4F); GlStateManager.translate(this.width / 2 + 0.5, this.height / 2, 0); double a = Math.toDegrees(Math.atan2(mouseY - (height / 2), mouseX - (width / 2))); double d = Math.sqrt(Math.pow(mouseX - (width / 2), 2) + Math.pow(mouseY - (height / 2), 2)); float s0 = ((-0.5F / 4.0F) + 0.5f) * 360; if (a < s0) a += 360; for(int i = 1; i < 5; i++) { GlStateManager.rotate(90, 0, 0, 1); double angleSegment = (Math.PI * 2 / 4), angle = angleSegment * 2, radiusMin = 58, radiusMax = 92, angleAb, angleCircle; float s = (((i - 0.5F) / 4.0F) + 0.25F) * 360; float e = (((i + 0.5F) / 4.0F) + 0.25F) * 360; angle += Math.toRadians(180D); if (a >= s && a < e && d >= 10 && d < 92) { radiusMax = 92;//def: 100 radiusMin = 10;//def: 64 GlStateManager.color(0, 0, 0, 0.6f); } else { GlStateManager.color(0, 0, 0, 0.4f); } final VertexBuffer vertexBuffer = Tessellator.getInstance().getBuffer(); vertexBuffer.begin(7, DefaultVertexFormats.POSITION); for (int i1 = 0; i1 < 32; i1++) { angleAb = ((angleSegment) / 32D); angleCircle = i1 * angleAb + angle - angleSegment / 2; vertexBuffer.pos(Math.sin(angleCircle) * radiusMax, Math.cos(angleCircle) * radiusMax, -1).endVertex(); vertexBuffer.pos(Math.sin(angleCircle + angleAb) * radiusMax, Math.cos(angleCircle + angleAb) * radiusMax, -1).endVertex(); vertexBuffer.pos(Math.sin(angleCircle + angleAb) * radiusMin, Math.cos(angleCircle + angleAb) * radiusMin, -1).endVertex(); vertexBuffer.pos(Math.sin(angleCircle) * radiusMin, Math.cos(angleCircle) * radiusMin, -1).endVertex(); } Tessellator.getInstance().draw(); } GlStateManager.enableTexture2D(); GlStateManager.popMatrix();
P.s. жду предложения по улучшению кода и огребания тапками.
1.11.2, данный код должен для всего подойти, вертекс буффер для 1.7 только изменить нужно.Biter7789 написал(а):Ты на какую версию делал?
Ivasik написал(а):1.11.2, данный код должен для всего подойти, вертекс буффер для 1.7 только изменить нужно.Biter7789 написал(а):Ты на какую версию делал?
Переделал твой код на 1.7.10.Ivasik написал(а):Я для 1.7.10 ничего не делаю. Только на заказ.
Ivasik написал(а):Лойсы в студию!
[video=youtube]https://youtu.be/hLiAT9gN3GQ[/video]
Код:/** * @Author - Ivasik * @link - http://forum.mcmodding.ru/Пользователь-Ivasik */ GlStateManager.pushMatrix(); GlStateManager.disableTexture2D(); GlStateManager.color(0, 0, 0, 0.4F); GlStateManager.translate(this.width / 2 + 0.5, this.height / 2, 0); double a = Math.toDegrees(Math.atan2(mouseY - (height / 2), mouseX - (width / 2))); double d = Math.sqrt(Math.pow(mouseX - (width / 2), 2) + Math.pow(mouseY - (height / 2), 2)); float s0 = ((-0.5F / 4.0F) + 0.5f) * 360; if (a < s0) a += 360; for(int i = 1; i < 5; i++) { GlStateManager.rotate(90, 0, 0, 1); double angleSegment = (Math.PI * 2 / 4), angle = angleSegment * 2, radiusMin = 58, radiusMax = 92, angleAb, angleCircle; float s = (((i - 0.5F) / 4.0F) + 0.25F) * 360; float e = (((i + 0.5F) / 4.0F) + 0.25F) * 360; angle += Math.toRadians(180D); if (a >= s && a < e && d >= 10 && d < 92) { radiusMax = 92;//def: 100 radiusMin = 10;//def: 64 GlStateManager.color(0, 0, 0, 0.6f); } else { GlStateManager.color(0, 0, 0, 0.4f); } final VertexBuffer vertexBuffer = Tessellator.getInstance().getBuffer(); vertexBuffer.begin(7, DefaultVertexFormats.POSITION); for (int i1 = 0; i1 < 32; i1++) { angleAb = ((angleSegment) / 32D); angleCircle = i1 * angleAb + angle - angleSegment / 2; vertexBuffer.pos(Math.sin(angleCircle) * radiusMax, Math.cos(angleCircle) * radiusMax, -1).endVertex(); vertexBuffer.pos(Math.sin(angleCircle + angleAb) * radiusMax, Math.cos(angleCircle + angleAb) * radiusMax, -1).endVertex(); vertexBuffer.pos(Math.sin(angleCircle + angleAb) * radiusMin, Math.cos(angleCircle + angleAb) * radiusMin, -1).endVertex(); vertexBuffer.pos(Math.sin(angleCircle) * radiusMin, Math.cos(angleCircle) * radiusMin, -1).endVertex(); } Tessellator.getInstance().draw(); } GlStateManager.enableTexture2D(); GlStateManager.popMatrix();
P.s. жду предложения по улучшению кода и огребания тапками.
Как то можно,но они у меня накладываются один на другой.Liahim написал(а):Ну а самому подумать!
...
Ivasik, посмотрел таки видео... Оценил музон )))
Знаешь... Заменить полупрозрачный диск изображением пластинки, завязать проигрывание на вращение мышкой и можно выпускать свой мод )))
[img=600x413]http://4damki.ru/wp-content/uploads/2015/01/dj-101783_640.jpg[/img]
Стрелять колотить! Идея! Сделаю такой диск и в зависимости от того куда будешь поворачивать звук будет увеличиваться или уменьшаться по скорости воспроизведения. Добавлю кнопки и переключатели, и каждая будет допустим изменять тон и т.п. Но так как я ленивый, мод не появится :С Хотя я подумаю, итак 4 мода пилю...Liahim написал(а):Ну а самому подумать!
...
Ivasik, посмотрел таки видео... Оценил музон )))
Знаешь... Заменить полупрозрачный диск изображением пластинки, завязать проигрывание на вращение мышкой и можно выпускать свой мод )))
[img=600x413]http://4damki.ru/wp-content/uploads/2015/01/dj-101783_640.jpg[/img]
Какие моды? Давай сюда, -_- эксперт оценить качествоIvasik написал(а):Стрелять колотить! Идея! Сделаю такой диск и в зависимости от того куда будешь поворачивать звук будет увеличиваться или уменьшаться по скорости воспроизведения. Добавлю кнопки и переключатели, и каждая будет допустим изменять тон и т.п. Но так как я ленивый, мод не появится :С Хотя я подумаю, итак 4 мода пилю...Liahim написал(а):Ну а самому подумать!
...
Ivasik, посмотрел таки видео... Оценил музон )))
Знаешь... Заменить полупрозрачный диск изображением пластинки, завязать проигрывание на вращение мышкой и можно выпускать свой мод )))
[img=600x413]http://4damki.ru/wp-content/uploads/2015/01/dj-101783_640.jpg[/img]
Ага, ага, вот так сразу, наивный) Раскрою лишь то что один мод это либа, второй рпг, третий фермерство, четвертый на военную тематику.Maxik001 написал(а):Какие моды? Давай сюда, -_- эксперт оценить качествоIvasik написал(а):Стрелять колотить! Идея! Сделаю такой диск и в зависимости от того куда будешь поворачивать звук будет увеличиваться или уменьшаться по скорости воспроизведения. Добавлю кнопки и переключатели, и каждая будет допустим изменять тон и т.п. Но так как я ленивый, мод не появится :С Хотя я подумаю, итак 4 мода пилю...Liahim написал(а):Ну а самому подумать!
...
Ivasik, посмотрел таки видео... Оценил музон )))
Знаешь... Заменить полупрозрачный диск изображением пластинки, завязать проигрывание на вращение мышкой и можно выпускать свой мод )))
[img=600x413]http://4damki.ru/wp-content/uploads/2015/01/dj-101783_640.jpg[/img]
Так как увеличить или уменьшить количество секторов?Ivasik написал(а):Стрелять колотить! Идея! Сделаю такой диск и в зависимости от того куда будешь поворачивать звук будет увеличиваться или уменьшаться по скорости воспроизведения. Добавлю кнопки и переключатели, и каждая будет допустим изменять тон и т.п. Но так как я ленивый, мод не появится :С Хотя я подумаю, итак 4 мода пилю...Liahim написал(а):Ну а самому подумать!
...
Ivasik, посмотрел таки видео... Оценил музон )))
Знаешь... Заменить полупрозрачный диск изображением пластинки, завязать проигрывание на вращение мышкой и можно выпускать свой мод )))
[img=600x413]http://4damki.ru/wp-content/uploads/2015/01/dj-101783_640.jpg[/img]