Звичайна людина на Землі
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,085
|
Код:
package com.maddox.il2.objects.air;
import com.maddox.JGP.Point3d;
import com.maddox.JGP.Vector3d;
import com.maddox.il2.ai.*;
import com.maddox.il2.engine.*;
import com.maddox.il2.engine.Actor;
import com.maddox.il2.engine.HierMesh;
import com.maddox.il2.fm.*;
import com.maddox.il2.game.Main3D;
import com.maddox.rts.Property;
public abstract class KI_94X extends Scheme1
implements TypeFighter, TypeBNZFighter
{
public KI_94X()
{
flapps = 0.0F;
}
public float getEyeLevelCorrection()
{
return 0.05F;
}
public void doMurderPilot(int i)
{
switch(i)
{
case 0: // '\0'
hierMesh().chunkVisible("Pilot1_D0", false);
hierMesh().chunkVisible("Head1_D0", false);
hierMesh().chunkVisible("HMask1_D0", false);
hierMesh().chunkVisible("Pilot1_D1", true);
break;
}
}
protected boolean cutFM(int i, int j, Actor actor)
{
if(i == 19)
FM.Gears.hitCentreGear();
return super.cutFM(i, j, actor);
}
public void moveCockpitDoor(float f)
{
resetYPRmodifier();
Aircraft.xyz[2] = Aircraft.cvt(f, 0.01F, 0.99F, 0.0F, 0.005F);
Aircraft.xyz[1] = Aircraft.cvt(f, 0.01F, 0.99F, 0.0F, 0.635F);
Aircraft.ypr[2] = Aircraft.cvt(f, 0.01F, 0.99F, 0.0F, 1.0F);
hierMesh().chunkSetLocate("Blister1_D0", Aircraft.xyz, Aircraft.ypr);
if(Config.isUSE_RENDER())
{
if(Main3D.cur3D().cockpits != null && Main3D.cur3D().cockpits[0] != null)
Main3D.cur3D().cockpits[0].onDoorMoved(f);
setDoorSnd(f);
}
}
public void update(float f)
{
float f1 = FM.EI.engines[0].getControlRadiator();
if(Math.abs(flapps - f1) > 0.01F)
{
flapps = f1;
for(int i = 1; i < 13; i++)
{
String s = "Water" + i + "_D0";
hierMesh().chunkSetAngles(s, 0.0F, -32F * f1, 0.0F);
}
}
super.update(f);
}
public void rareAction(float f, boolean flag)
{
super.rareAction(f, flag);
if(FM.getAltitude() < 3000F)
hierMesh().chunkVisible("hmask1_D0", false);
else
hierMesh().chunkVisible("hmask1_D0", hierMesh().isChunkVisible("Pilot1_D0"));
if(flag)
{
if(FM.AS.astateEngineStates[0] > 3 && World.Rnd().nextFloat() < 0.39F)
FM.AS.hitTank(this, 0, 1);
if(FM.AS.astateTankStates[0] > 4 && World.Rnd().nextFloat() < 0.1F)
nextDMGLevel(FM.AS.astateEffectChunks[0] + "0", 0, this);
if(FM.AS.astateTankStates[1] > 4 && World.Rnd().nextFloat() < 0.1F)
nextDMGLevel(FM.AS.astateEffectChunks[1] + "0", 0, this);
if(FM.AS.astateTankStates[2] > 4 && World.Rnd().nextFloat() < 0.1F)
nextDMGLevel(FM.AS.astateEffectChunks[2] + "0", 0, this);
if(FM.AS.astateTankStates[3] > 4 && World.Rnd().nextFloat() < 0.1F)
nextDMGLevel(FM.AS.astateEffectChunks[3] + "0", 0, this);
}
}
public static void moveGear_old(HierMesh hiermesh, float f, float f1, float f2)
{
hiermesh.chunkSetAngles("GearL2_D0", 0.0F, Aircraft.cvt(f, 0.18F, 0.99F, 0.0F, 90F), 0.0F);
hiermesh.chunkSetAngles("GearL4_D0", 0.0F, Aircraft.cvt(f, 0.02F, 0.2F, 0.0F, 90F), 0.0F);
hiermesh.chunkSetAngles("Gearl6_D0", 0.0F, Aircraft.cvt(f, 0.18F, 0.99F, 0.0F, -30F), 0.0F);
Aircraft.xyz[0] = Aircraft.xyz[1] = Aircraft.xyz[2] = Aircraft.ypr[0] = Aircraft.ypr[1] = Aircraft.ypr[2] = 0.0F;
Aircraft.xyz[1] = Aircraft.cvt(f, 0.3F, 0.99F, 0.0F, 0.45F);
hiermesh.chunkSetLocate("Gearl9_D0", Aircraft.xyz, Aircraft.ypr);
hiermesh.chunkSetAngles("GearR2_D0", 0.0F, Aircraft.cvt(f1, 0.18F, 0.99F, 0.0F, 90F), 0.0F);
hiermesh.chunkSetAngles("GearR4_D0", 0.0F, Aircraft.cvt(f1, 0.02F, 0.2F, 0.0F, 90F), 0.0F);
hiermesh.chunkSetAngles("GearR6_D0", 0.0F, Aircraft.cvt(f1, 0.18F, 0.99F, 0.0F, 30F), 0.0F);
Aircraft.xyz[0] = Aircraft.xyz[1] = Aircraft.xyz[2] = Aircraft.ypr[0] = Aircraft.ypr[1] = Aircraft.ypr[2] = 0.0F;
Aircraft.xyz[1] = Aircraft.cvt(f1, 0.3F, 0.99F, 0.0F, 0.45F);
hiermesh.chunkSetLocate("GearR9_D0", Aircraft.xyz, Aircraft.ypr);
hiermesh.chunkSetAngles("GearC2_D0", 0.0F, Aircraft.cvt(f2, 0.11F, 0.67F, 0.0F, -70F), 0.0F);
hiermesh.chunkSetAngles("GearC3L_D0", 0.0F, Aircraft.cvt(f2, 0.0F, 0.15F, 0.0F, 80F), 0.0F);
hiermesh.chunkSetAngles("GearC3R_D0", 0.0F, Aircraft.cvt(f2, 0.0F, 0.15F, 0.0F, -80F), 0.0F);
}
protected void moveGear_old(float f, float f1, float f2)
{
moveGear(hierMesh(), f, f1, f2);
}
public static void moveGear(HierMesh hiermesh, float f, float f1, float f2, boolean flag)
{
hiermesh.chunkSetAngles("GearL2_D0", 0.0F, Aircraft.cvt(f, 0.18F, 0.89F, 0.0F, 90F), 0.0F);
hiermesh.chunkSetAngles("GearL4_D0", 0.0F, Aircraft.cvt(f, 0.02F, 0.2F, 0.0F, 90F) + Aircraft.cvt(f, 0.6F, 0.79F, 0.0F, -90F), 0.0F);
hiermesh.chunkSetAngles("Gearl6_D0", 0.0F, Aircraft.cvt(f, 0.18F, 0.89F, 0.0F, -30F), 0.0F);
Aircraft.xyz[0] = Aircraft.xyz[1] = Aircraft.xyz[2] = Aircraft.ypr[0] = Aircraft.ypr[1] = Aircraft.ypr[2] = 0.0F;
Aircraft.xyz[1] = Aircraft.cvt(f, 0.3F, 0.99F, 0.0F, 0.45F);
hiermesh.chunkSetLocate("Gearl9_D0", Aircraft.xyz, Aircraft.ypr);
hiermesh.chunkSetAngles("GearR2_D0", 0.0F, Aircraft.cvt(f1, 0.28F, 0.99F, 0.0F, 90F), 0.0F);
hiermesh.chunkSetAngles("GearR4_D0", 0.0F, Aircraft.cvt(f1, 0.12F, 0.3F, 0.0F, 90F) + Aircraft.cvt(f, 0.7F, 0.89F, 0.0F, -90F), 0.0F);
hiermesh.chunkSetAngles("GearR6_D0", 0.0F, Aircraft.cvt(f1, 0.28F, 0.99F, 0.0F, 30F), 0.0F);
Aircraft.xyz[0] = Aircraft.xyz[1] = Aircraft.xyz[2] = Aircraft.ypr[0] = Aircraft.ypr[1] = Aircraft.ypr[2] = 0.0F;
Aircraft.xyz[1] = Aircraft.cvt(f1, 0.3F, 0.99F, 0.0F, 0.45F);
hiermesh.chunkSetLocate("GearR9_D0", Aircraft.xyz, Aircraft.ypr);
Aircraft.xyz[0] = Aircraft.xyz[2] = Aircraft.ypr[0] = Aircraft.ypr[1] = Aircraft.ypr[2] = 0.0F;
float f3 = -0.1F;
Aircraft.xyz[1] = Aircraft.cvt(f, 0.18F, 0.35F, 0.0F, f3) - Aircraft.cvt(f, 0.38F, 0.5F, 0.0F, f3);
hiermesh.chunkSetLocate("GearL8_D0", Aircraft.xyz, Aircraft.ypr);
Aircraft.xyz[1] = Aircraft.cvt(f1, 0.28F, 0.45F, 0.0F, f3) - Aircraft.cvt(f1, 0.48F, 0.6F, 0.0F, f3);
hiermesh.chunkSetLocate("GearR8_D0", Aircraft.xyz, Aircraft.ypr);
if(flag)
{
hiermesh.chunkSetAngles("GearC2_D0", 0.0F, Aircraft.cvt(f2, 0.63F, 0.99F, 0.0F, -70F), 0.0F);
hiermesh.chunkSetAngles("GearC3L_D0", 0.0F, Aircraft.cvt(f2, 0.52F, 0.67F, 0.0F, 80F), 0.0F);
hiermesh.chunkSetAngles("GearC3R_D0", 0.0F, Aircraft.cvt(f2, 0.52F, 0.67F, 0.0F, -80F), 0.0F);
} else
{
hiermesh.chunkSetAngles("GearC2_D0", 0.0F, Aircraft.cvt(f2, 0.11F, 0.47F, 0.0F, -70F), 0.0F);
hiermesh.chunkSetAngles("GearC3L_D0", 0.0F, Aircraft.cvt(f2, 0.0F, 0.15F, 0.0F, 80F), 0.0F);
hiermesh.chunkSetAngles("GearC3R_D0", 0.0F, Aircraft.cvt(f2, 0.0F, 0.15F, 0.0F, -80F), 0.0F);
}
}
public static void moveGear(HierMesh hiermesh, float f, float f1, float f2)
{
moveGear(hiermesh, f, f1, f2, true);
}
protected void moveGear(float f, float f1, float f2)
{
moveGear(hierMesh(), f, f1, f2, FM.CT.GearControl > 0.5F);
}
public static void moveGear(HierMesh hiermesh, float f, boolean flag)
{
moveGear(hiermesh, f, f, f, flag);
}
public static void moveGear(HierMesh hiermesh, float f)
{
moveGear(hiermesh, f, f, f, true);
}
protected void moveGear(float f)
{
moveGear(hierMesh(), f, FM.CT.GearControl > 0.5F);
}
public void moveWheelSink()
{
resetYPRmodifier();
Aircraft.xyz[1] = Aircraft.cvt(FM.Gears.gWheelSinking[0], 0.0F, 0.2085F, 0.0F, -0.2085F);
hierMesh().chunkSetLocate("GearL8_D0", Aircraft.xyz, Aircraft.ypr);
Aircraft.xyz[1] = Aircraft.cvt(FM.Gears.gWheelSinking[1], 0.0F, 0.2085F, 0.0F, -0.2085F);
hierMesh().chunkSetLocate("GearR8_D0", Aircraft.xyz, Aircraft.ypr);
}
protected void moveFlap(float f)
{
if(thisWeaponsName.equalsIgnoreCase("2x250kg") && FM.CT.Weapons[3] != null && FM.CT.Weapons[3][0] != null && FM.CT.Weapons[3][FM.CT.Weapons[3].length - 1].haveBullets() && f > 0.33F)
{
FM.CT.forceFlaps(0.33F);
FM.CT.FlapsControl = 0.33F;
f = 0.33F;
}
resetYPRmodifier();
Aircraft.xyz[0] = Aircraft.cvt(f, 0.0F, 0.2F, 0.0F, 0.45F);
Aircraft.xyz[2] = Aircraft.cvt(f, 0.1F, 0.15F, 0.0F, -0.014F) + Aircraft.cvt(f, 0.2F, 1.0F, 0.0F, 0.014F);
Aircraft.ypr[1] = Aircraft.cvt(f, 0.0F, 0.2F, 0.0F, -5F) + Aircraft.cvt(f, 0.2F, 0.33F, 0.0F, -15F) + Aircraft.cvt(f, 0.33F, 1.0F, 0.0F, -35F);
hierMesh().chunkSetLocate("FlapInL_D0", Aircraft.xyz, Aircraft.ypr);
hierMesh().chunkSetLocate("FlapInR_D0", Aircraft.xyz, Aircraft.ypr);
hierMesh().chunkSetLocate("FlapOutL_D0", Aircraft.xyz, Aircraft.ypr);
hierMesh().chunkSetLocate("FlapOutR_D0", Aircraft.xyz, Aircraft.ypr);
}
protected void setControlDamage(Shot shot, int i)
{
if(World.Rnd().nextFloat() < 0.01F && getEnergyPastArmor(4F, shot) > 0.01F)
FM.AS.setControlsDamage(shot.initiator, i);
}
|