CParticleEngine
作者:anotherbug 日期:2009-05-05 16:59:24
1 | class CParticleEngine
{
var hit_mc, prevTime;
function CParticleEngine () {
}
function clear() {
var _local1 = this;
while (_local1.p_array.pop() != undefined) {
}
while (_local1.w_array.pop() != undefined) {
}
while (_local1.c_array.pop() != undefined) {
}
}
function setHitMovie(hit_mc_) {
hit_mc = hit_mc_;
}
function addParticle(p) {
p_array.push(p);
}
function addWheel(wheel, p, maxSpeed, radius) {
wheel.init(p, maxSpeed, radius);
w_array.push(wheel);
}
function addSpringConstraint(p1, p2, koeffStiff1, koeffStiff2) {
var _local1 = new CSpringConstraint(p1, p2, koeffStiff1, koeffStiff2);
c_array.push(_local1);
}
function start() {
prevTime = getTimer();
}
function computeForces() {
var _local2 = this;
var _local1;
var _local3 = _local2.p_array.length;
_local1 = 0;
while (_local1 < _local3) {
_local2.p_array[_local1].acc.x = 0;
_local2.p_array[_local1].acc.y = _local2.gravity * _local2.p_array[_local1].mass;
_local1++;
}
}
function clearForces() {
var _local3 = w_array.length;
var _local1;
var _local2;
_local1 = 0;
while (_local1 < _local3) {
_local2 = w_array[_local1];
_local2.addedAcc.x = (_local2.addedAcc.y = 0);
_local1++;
}
}
function applyManFrictions() {
var _local3 = this;
var _local2 = _local3.w_array.length;
var _local1;
_local1 = 0;
while (_local1 < _local2) {
_local3.w_array[_local1].applyAddedAcc();
_local1++;
}
}
function verlet(dTime) {
var _local2 = this;
var koeffDamp = 0.995;
var _local1;
var _local3 = _local2.p_array.length;
_local1 = 0;
while (_local1 < _local3) {
_local2.p_array[_local1].verlet(dTime, koeffDamp);
_local1++;
}
_local3 = _local2.w_array.length;
var acc = 0;
if (Key.isDown(40)) {
acc = -0.6;
} else if (Key.isDown(38)) {
acc = 1;
}
_local1 = 0;
while (_local1 < _local3) {
_local2.w_array[_local1].process(dTime, (_local2.w_array[_local1].maxAccSpeed * acc) / 3.2, 0.99);
_local1++;
}
}
function checkCollisions() {
var _local2 = this;
var _local1;
var _local3 = _local2.w_array.length;
_local1 = 0;
while (_local1 < _local3) {
_local2.w_array[_local1].checkCollision(_local2.hit_mc);
_local1++;
}
}
function checkConstraints(dTime) {
var _local3 = this;
var _local1;
var _local2 = _local3.c_array.length;
_local1 = 0;
while (_local1 < _local2) {
_local3.c_array[_local1].resolve(dTime);
_local1++;
}
}
function process() {
var _local1 = this;
var curTime = getTimer();
var dTime = ((curTime - _local1.prevTime) / 1000);
_local1.prevTime = curTime;
var _local2;
var _local3 = Math.min(Math.round(dTime / _local1.t), _local1.maxSteps);
_local2 = 0;
while (_local2 < _local3) {
_local1.computeForces();
_local1.applyManFrictions();
_local1.verlet(_local1.t);
_local1.checkConstraints(_local1.t);
_local1.checkCollisions();
_local2++;
}
_local1.clearForces();
}
var p_array = new Array();
var w_array = new Array();
var c_array = new Array();
var t = 0.02;
var maxSteps = 2;
var gravity = 3.15;
}
|
平均得分
(0 次评分)
评论: 6 | 查看次数: 1103
- 共有 6 条评论
- 共有 6 条评论
发表评论
订阅
上一篇
|

文章来自:
标签: 





干洗连锁
干洗
干洗店
干洗机
干洗设备
水洗设备
洗鞋设备
洗涤价格
干洗机价格
变易
TCM
Diabeat