Files
TankiOnline2.0DemoClient/src/?_-fj?/?_-1t?.as

119 lines
3.2 KiB
ActionScript

package §_-fj§
{
import §_-Fc§.§_-8a§;
import §_-az§.§_-AG§;
import §_-fT§.§_-HM§;
import §default§.native;
public class §_-1t§ extends §_-Cv§
{
private var §_-Cn§:ContactFilter;
public function §_-1t§(component:§_-cx§)
{
super(component);
this.§_-Cn§ = new ContactFilter();
}
override public function start(data:*) : void
{
var gameKernel:§_-AG§ = null;
var physicsSystem:§_-8a§ = null;
component.addToScene();
component.setDetailedCollisionGroup(§_-HM§.TANK);
component.setSuspensionCollisionMask(§_-HM§.STATIC);
component.body.postCollisionFilter = this.§_-Cn§;
var callback:native = native(data);
if(callback != null)
{
gameKernel = component.gameKernel;
this.§_-Cn§.initCallback(callback);
gameKernel.getLogicSystem1().addLogicUnit(this.§_-Cn§);
physicsSystem = gameKernel.§_-m8§();
physicsSystem.addControllerAfter(this.§_-Cn§);
physicsSystem.addControllerBefore(this.§_-Cn§);
}
}
override public function stop() : void
{
var gameKernel:§_-AG§ = null;
var physicsSystem:§_-8a§ = null;
component.body.postCollisionFilter = null;
if(this.§_-Cn§.callback != null)
{
gameKernel = component.gameKernel;
gameKernel.getLogicSystem1().removeLogicUnit(this.§_-Cn§);
physicsSystem = gameKernel.§_-m8§();
physicsSystem.removeControllerAfter(this.§_-Cn§);
physicsSystem.removeControllerBefore(this.§_-Cn§);
this.§_-Cn§.callback = null;
}
}
}
}
import §_-1e§.§_-p9§;
import §_-Fc§.§catch§;
import §_-US§.§_-BV§;
import §_-lS§.§_-h2§;
import §_-nO§.§_-KI§;
import §default§.native;
import flash.utils.getTimer;
class ContactFilter implements §_-p9§, §catch§, §_-KI§
{
private static const MIN_TRANSPARENCY_DURATION:int = 3000;
public var callback:native;
private var numContacts:int;
private var canActivate:Boolean;
private var startTime:int;
public function ContactFilter()
{
super();
}
public function initCallback(callback:native) : void
{
this.canActivate = false;
this.startTime = getTimer();
this.callback = callback;
}
public function acceptBodiesCollision(body1:§_-BV§, body2:§_-BV§) : Boolean
{
++this.numContacts;
return false;
}
public function updateBeforeSimulation(physicsStep:int) : void
{
this.numContacts = 0;
}
public function updateAfterSimulation(physicsStep:int) : void
{
if(Boolean(this.canActivate) && this.numContacts == 0)
{
this.callback.§_-PH§();
}
}
public function interpolate(interpolationCoeff:Number) : void
{
}
public function runLogic() : void
{
if(§_-h2§.time - this.startTime > MIN_TRANSPARENCY_DURATION)
{
this.canActivate = true;
}
}
}