Итак, как импортировать 3D-модель радар в мой мод.
Для начала несколько слов о требовании к самой модели. Модель должна состоять как минимум из двух частей: вращающейся части антенны и остального. Антенна должна состоять из одного меша, его мы потом пропишем в специальный класс, остальная часть радара может состоять из любого числа мешей. На примере П-12 (см. скриншоты), модель состоит из 4-х мешей, меш вращающаяся части антенны выделен синим.
Теперь создаем специальный class файл, у каждой модели радара он свой, в нем хранятся параметры: скорость вращения антенны, интервал показа команд наведения и название меша вращающейся части антенны
Код:
package com.maddox.il2.objects.vehicles.radars;
import com.maddox.il2.engine.Interpolate;
import com.maddox.rts.Message;
import com.maddox.rts.Time;
import com.maddox.il2.ai.World;
public class RadarP_12 extends RotatingRadarGeneric {
public RadarP_12() {
this.startRotate();
}
public void startRotate() {
this.interpPut(new RadarP_12.Move(), "move", Time.current(), (Message)null);
}
public void interpolateTick() {
super.interpolateTick();
if (World.getPlayerAircraft() != null && this.dying == 0 && (float)Time.current() > (float)this.RefreshInterval + 30000.0F) {
this.PlayerAircraftSearch();
}
}
class Move extends Interpolate {
public boolean tick() {
if (RadarP_12.this.isAlive()) {
float var1 = RotatingRadarGeneric.cvt((float)Time.current() % 15000.0F, 0.0F, 15000.0F, 0.0F, 360.0F);
RadarP_12.this.hierMesh().chunkSetAngles("DipoleArray", -var1 - RadarP_12.this.pos.getAbsOrient().getYaw(), 0.0F, 0.0F);
}
return true;
}
}
}
Обращаем внимание на следующее:
RadarP_12 - название класса, оно может быть любым, какое вам будет удобно.
30000.0F - это интервал показа команд наведение в миллисекундах, в нашем случае это 30 секунд
15000.0F - это период обращения антенны в миллисекундах, в нашем случае это 15 секунд или 4 оборота в минуту. Обратите внимание, что это число должно быть прописано дважды в указанных выше местах.
DipoleArray - название меша вращающейся части антенны. Именно она будет анимирована.
Далее стандартно создаем слот под свой радар в классе
RotatingRadar. Единственное, обращаем свое внимание на выделенное место, там мы прописываем название своего класса, что мы создали ранее.
Код:
package com.maddox.il2.objects.vehicles.radars;
import com.maddox.il2.ai.ground.TgtFlak;
import com.maddox.il2.objects.vehicles.artillery.AAA;
public abstract class RotatingRadar {
static Class class$com$maddox$il2$objects$vehicles$radars$RotatingRadar$Freya;
static Class class$com$maddox$il2$objects$vehicles$radars$RotatingRadar$P_12;
static Class class$(String var0) {
try {
return Class.forName(var0);
} catch (ClassNotFoundException var2) {
throw new NoClassDefFoundError(var2.getMessage());
}
}
static {
new RotatingRadarGeneric.SPAWN(class$com$maddox$il2$objects$vehicles$radars$RotatingRadar$Freya == null ? (class$com$maddox$il2$objects$vehicles$radars$RotatingRadar$Freya = class$("com.maddox.il2.objects.vehicles.radars.RotatingRadar$Freya")) : class$com$maddox$il2$objects$vehicles$radars$RotatingRadar$Freya);
new RotatingRadarGeneric.SPAWN(class$com$maddox$il2$objects$vehicles$radars$RotatingRadar$P_12 == null ? (class$com$maddox$il2$objects$vehicles$radars$RotatingRadar$P_12 = class$("com.maddox.il2.objects.vehicles.radars.RotatingRadar$P_12")) : class$com$maddox$il2$objects$vehicles$radars$RotatingRadar$P_12);
}
public static class P_12 extends RadarP_12 implements TgtFlak, AAA {
}
public static class Freya extends RadarFreya implements TgtFlak, AAA {
}
}
А дальше осталось только прописать нужные нам параметры своего радара в ini файлах:
stationary.ini
Код:
[Radars]
P-12 vehicles.radars.RotatingRadar$P_12 1
technics.ini
Код:
[P_12]
Description Early Warning Radar P-12
Icon rotating_radar
MeshSummer 3do/Radars/P-12/Dipole.him
PanzerType Car
PanzerSubtype 3
PanzerBodyFront 0.040
MaxRange 200
MaxAltitude 25000
AntennaHeight 10
// Display
RadarID P-12
RangeUnit 1
RangeAccuracy 1
AltitudeUnit 1
AltitudeAccuracy 1000
AzimuthAccuracy 2
Подробнее о них рассказано здесь
http://forum.aviaskins.com/showpost....&postcount=140