📄 precisecollisiongroup.java
字号:
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi
package com.golden.gamedev.object.collision;
import com.golden.gamedev.object.CollisionManager;
import com.golden.gamedev.object.Sprite;
// Referenced classes of package com.golden.gamedev.object.collision:
// CollisionGroup, CollisionRect, CollisionShape
public abstract class PreciseCollisionGroup extends CollisionGroup
{
private final TrackRect a = new TrackRect();
private final TrackRect b = new TrackRect();
public PreciseCollisionGroup()
{
}
public boolean isCollide(Sprite sprite, Sprite sprite1, CollisionShape collisionshape, CollisionShape collisionshape1)
{
if(collisionshape.intersects(collisionshape1))
{
this.sprite1 = sprite;
sprite2 = sprite1;
collisionSide = 0;
double d = sprite.getOldX();
double d1 = sprite.getOldY();
double d2 = sprite1.getOldX();
double d3 = sprite1.getOldY();
double d4 = sprite.getX() - d;
double d5 = sprite.getY() - d1;
double d6 = sprite1.getX() - d2;
double d7 = sprite1.getY() - d3;
a.setBounds(collisionshape.getX(), collisionshape.getY(), collisionshape.getWidth(), collisionshape.getHeight());
b.setBounds(collisionshape1.getX(), collisionshape1.getY(), collisionshape1.getWidth(), collisionshape1.getHeight());
a.move(-d4, -d5);
b.move(-d6, -d7);
double d8 = Math.max(Math.max(Math.abs(d4), Math.abs(d5)), Math.max(Math.abs(d6), Math.abs(d7)));
a.setCollisionStep(d4 / d8, d5 / d8);
b.setCollisionStep(d6 / d8, d7 / d8);
d8++;
for(int i = 0; (double)i <= d8; i++)
{
if(a.intersects(b))
{
boolean flag = true;
if(pixelPerfectCollision && !CollisionManager.isPixelCollide(a.getX(), a.getY(), sprite.getImage(), b.getX(), b.getY(), sprite1.getImage()))
flag = false;
if(flag)
{
a.prevTrack();
b.prevTrack();
collisionX1 = d + a.dx;
collisionY1 = d1 + a.dy;
collisionX2 = d2 + b.dx;
collisionY2 = d3 + b.dy;
CollisionRect collisionrect;
if(collisionY1 + (double)a.height <= collisionY2)
collisionSide = 8;
else
if(collisionY2 + (double)b.height <= collisionY1)
collisionSide = 4;
else
if(collisionX1 + (double)a.width <= collisionX2)
collisionSide = 2;
else
if(collisionX2 + (double)b.width <= collisionX1)
collisionSide = 1;
else
if((collisionrect = CollisionManager.getIntersectionRect(a.getX(), a.getY(), a.getWidth(), a.getHeight(), b.getX(), b.getY(), b.getWidth(), b.getHeight())).width <= collisionrect.height)
{
if(Math.abs(d4) >= Math.abs(d6))
collisionX1 += d4 <= 0.0D ? collisionrect.width : -collisionrect.width;
else
collisionX2 += d6 <= 0.0D ? collisionrect.width : -collisionrect.width;
collisionSide = collisionX1 >= collisionX2 ? 1 : 2;
} else
{
if(Math.abs(d5) >= Math.abs(d7))
collisionY1 += d5 <= 0.0D ? collisionrect.height : -collisionrect.height;
else
collisionY2 += d7 <= 0.0D ? collisionrect.height : -collisionrect.height;
collisionSide = collisionY1 >= collisionY2 ? 4 : 8;
}
return true;
}
}
a.nextTrack();
b.nextTrack();
}
return false;
} else
{
return false;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -