mirror of
https://github.com/MapMakersAndProgrammers/TankiOnline2.0DemoClient.git
synced 2025-10-26 01:49:11 -07:00
119 lines
3.2 KiB
ActionScript
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;
|
|
}
|
|
}
|
|
}
|