⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cl_fx.java

📁 Jake2是一个Java 3D游戏引擎.
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
		case Defines.MZ2_INFANTRY_MACHINEGUN_6:		case Defines.MZ2_INFANTRY_MACHINEGUN_7:		case Defines.MZ2_INFANTRY_MACHINEGUN_8:		case Defines.MZ2_INFANTRY_MACHINEGUN_9:		case Defines.MZ2_INFANTRY_MACHINEGUN_10:		case Defines.MZ2_INFANTRY_MACHINEGUN_11:		case Defines.MZ2_INFANTRY_MACHINEGUN_12:		case Defines.MZ2_INFANTRY_MACHINEGUN_13:			dl.color[0] = 1;			dl.color[1] = 1;			dl.color[2] = 0;			ParticleEffect(origin, Globals.vec3_origin, 0, 40);			CL_tent.SmokeAndFlash(origin);			S.StartSound(null, ent, Defines.CHAN_WEAPON, S.RegisterSound("infantry/infatck1.wav"), 1, Defines.ATTN_NORM, 0);			break;		case Defines.MZ2_SOLDIER_MACHINEGUN_1:		case Defines.MZ2_SOLDIER_MACHINEGUN_2:		case Defines.MZ2_SOLDIER_MACHINEGUN_3:		case Defines.MZ2_SOLDIER_MACHINEGUN_4:		case Defines.MZ2_SOLDIER_MACHINEGUN_5:		case Defines.MZ2_SOLDIER_MACHINEGUN_6:		case Defines.MZ2_SOLDIER_MACHINEGUN_7:		case Defines.MZ2_SOLDIER_MACHINEGUN_8:			dl.color[0] = 1;			dl.color[1] = 1;			dl.color[2] = 0;			ParticleEffect(origin, Globals.vec3_origin, 0, 40);			CL_tent.SmokeAndFlash(origin);			S.StartSound(null, ent, Defines.CHAN_WEAPON, S.RegisterSound("soldier/solatck3.wav"), 1, Defines.ATTN_NORM, 0);			break;		case Defines.MZ2_GUNNER_MACHINEGUN_1:		case Defines.MZ2_GUNNER_MACHINEGUN_2:		case Defines.MZ2_GUNNER_MACHINEGUN_3:		case Defines.MZ2_GUNNER_MACHINEGUN_4:		case Defines.MZ2_GUNNER_MACHINEGUN_5:		case Defines.MZ2_GUNNER_MACHINEGUN_6:		case Defines.MZ2_GUNNER_MACHINEGUN_7:		case Defines.MZ2_GUNNER_MACHINEGUN_8:			dl.color[0] = 1;			dl.color[1] = 1;			dl.color[2] = 0;			ParticleEffect(origin, Globals.vec3_origin, 0, 40);			CL_tent.SmokeAndFlash(origin);			S.StartSound(null, ent, Defines.CHAN_WEAPON, S.RegisterSound("gunner/gunatck2.wav"), 1, Defines.ATTN_NORM, 0);			break;		case Defines.MZ2_ACTOR_MACHINEGUN_1:		case Defines.MZ2_SUPERTANK_MACHINEGUN_1:		case Defines.MZ2_SUPERTANK_MACHINEGUN_2:		case Defines.MZ2_SUPERTANK_MACHINEGUN_3:		case Defines.MZ2_SUPERTANK_MACHINEGUN_4:		case Defines.MZ2_SUPERTANK_MACHINEGUN_5:		case Defines.MZ2_SUPERTANK_MACHINEGUN_6:		case Defines.MZ2_TURRET_MACHINEGUN: // PGM			dl.color[0] = 1;			dl.color[1] = 1;			dl.color[2] = 0;			ParticleEffect(origin, Globals.vec3_origin, 0, 40);			CL_tent.SmokeAndFlash(origin);			S.StartSound(null, ent, Defines.CHAN_WEAPON, S.RegisterSound("infantry/infatck1.wav"), 1, Defines.ATTN_NORM, 0);			break;		case Defines.MZ2_BOSS2_MACHINEGUN_L1:		case Defines.MZ2_BOSS2_MACHINEGUN_L2:		case Defines.MZ2_BOSS2_MACHINEGUN_L3:		case Defines.MZ2_BOSS2_MACHINEGUN_L4:		case Defines.MZ2_BOSS2_MACHINEGUN_L5:		case Defines.MZ2_CARRIER_MACHINEGUN_L1: // PMM		case Defines.MZ2_CARRIER_MACHINEGUN_L2: // PMM			dl.color[0] = 1;			dl.color[1] = 1;			dl.color[2] = 0;			ParticleEffect(origin, Globals.vec3_origin, 0, 40);			CL_tent.SmokeAndFlash(origin);			S.StartSound(null, ent, Defines.CHAN_WEAPON, S.RegisterSound("infantry/infatck1.wav"), 1, Defines.ATTN_NONE, 0);			break;		case Defines.MZ2_SOLDIER_BLASTER_1:		case Defines.MZ2_SOLDIER_BLASTER_2:		case Defines.MZ2_SOLDIER_BLASTER_3:		case Defines.MZ2_SOLDIER_BLASTER_4:		case Defines.MZ2_SOLDIER_BLASTER_5:		case Defines.MZ2_SOLDIER_BLASTER_6:		case Defines.MZ2_SOLDIER_BLASTER_7:		case Defines.MZ2_SOLDIER_BLASTER_8:		case Defines.MZ2_TURRET_BLASTER: // PGM			dl.color[0] = 1;			dl.color[1] = 1;			dl.color[2] = 0;			S.StartSound(null, ent, Defines.CHAN_WEAPON, S.RegisterSound("soldier/solatck2.wav"), 1, Defines.ATTN_NORM, 0);			break;		case Defines.MZ2_FLYER_BLASTER_1:		case Defines.MZ2_FLYER_BLASTER_2:			dl.color[0] = 1;			dl.color[1] = 1;			dl.color[2] = 0;			S.StartSound(null, ent, Defines.CHAN_WEAPON, S.RegisterSound("flyer/flyatck3.wav"), 1, Defines.ATTN_NORM, 0);			break;		case Defines.MZ2_MEDIC_BLASTER_1:			dl.color[0] = 1;			dl.color[1] = 1;			dl.color[2] = 0;			S.StartSound(null, ent, Defines.CHAN_WEAPON, S.RegisterSound("medic/medatck1.wav"), 1, Defines.ATTN_NORM, 0);			break;		case Defines.MZ2_HOVER_BLASTER_1:			dl.color[0] = 1;			dl.color[1] = 1;			dl.color[2] = 0;			S.StartSound(null, ent, Defines.CHAN_WEAPON, S.RegisterSound("hover/hovatck1.wav"), 1, Defines.ATTN_NORM, 0);			break;		case Defines.MZ2_FLOAT_BLASTER_1:			dl.color[0] = 1;			dl.color[1] = 1;			dl.color[2] = 0;			S.StartSound(null, ent, Defines.CHAN_WEAPON, S.RegisterSound("floater/fltatck1.wav"), 1, Defines.ATTN_NORM, 0);			break;		case Defines.MZ2_SOLDIER_SHOTGUN_1:		case Defines.MZ2_SOLDIER_SHOTGUN_2:		case Defines.MZ2_SOLDIER_SHOTGUN_3:		case Defines.MZ2_SOLDIER_SHOTGUN_4:		case Defines.MZ2_SOLDIER_SHOTGUN_5:		case Defines.MZ2_SOLDIER_SHOTGUN_6:		case Defines.MZ2_SOLDIER_SHOTGUN_7:		case Defines.MZ2_SOLDIER_SHOTGUN_8:			dl.color[0] = 1;			dl.color[1] = 1;			dl.color[2] = 0;			CL_tent.SmokeAndFlash(origin);			S.StartSound(null, ent, Defines.CHAN_WEAPON, S.RegisterSound("soldier/solatck1.wav"), 1, Defines.ATTN_NORM, 0);			break;		case Defines.MZ2_TANK_BLASTER_1:		case Defines.MZ2_TANK_BLASTER_2:		case Defines.MZ2_TANK_BLASTER_3:			dl.color[0] = 1;			dl.color[1] = 1;			dl.color[2] = 0;			S.StartSound(null, ent, Defines.CHAN_WEAPON, S.RegisterSound("tank/tnkatck3.wav"), 1, Defines.ATTN_NORM, 0);			break;		case Defines.MZ2_TANK_MACHINEGUN_1:		case Defines.MZ2_TANK_MACHINEGUN_2:		case Defines.MZ2_TANK_MACHINEGUN_3:		case Defines.MZ2_TANK_MACHINEGUN_4:		case Defines.MZ2_TANK_MACHINEGUN_5:		case Defines.MZ2_TANK_MACHINEGUN_6:		case Defines.MZ2_TANK_MACHINEGUN_7:		case Defines.MZ2_TANK_MACHINEGUN_8:		case Defines.MZ2_TANK_MACHINEGUN_9:		case Defines.MZ2_TANK_MACHINEGUN_10:		case Defines.MZ2_TANK_MACHINEGUN_11:		case Defines.MZ2_TANK_MACHINEGUN_12:		case Defines.MZ2_TANK_MACHINEGUN_13:		case Defines.MZ2_TANK_MACHINEGUN_14:		case Defines.MZ2_TANK_MACHINEGUN_15:		case Defines.MZ2_TANK_MACHINEGUN_16:		case Defines.MZ2_TANK_MACHINEGUN_17:		case Defines.MZ2_TANK_MACHINEGUN_18:		case Defines.MZ2_TANK_MACHINEGUN_19:			dl.color[0] = 1;			dl.color[1] = 1;			dl.color[2] = 0;			ParticleEffect(origin, Globals.vec3_origin, 0, 40);			CL_tent.SmokeAndFlash(origin);			//Com_sprintf(soundname, sizeof(soundname), "tank/tnkatk2%c.wav",			// 'a' + rand() % 5);			soundname = "tank/tnkatk2" + (char) ('a' + Globals.rnd.nextInt(5)) + ".wav";			S.StartSound(null, ent, Defines.CHAN_WEAPON, S.RegisterSound(soundname), 1, Defines.ATTN_NORM, 0);			break;		case Defines.MZ2_CHICK_ROCKET_1:		case Defines.MZ2_TURRET_ROCKET: // PGM			dl.color[0] = 1;			dl.color[1] = 0.5f;			dl.color[2] = 0.2f;			S.StartSound(null, ent, Defines.CHAN_WEAPON, S.RegisterSound("chick/chkatck2.wav"), 1, Defines.ATTN_NORM, 0);			break;		case Defines.MZ2_TANK_ROCKET_1:		case Defines.MZ2_TANK_ROCKET_2:		case Defines.MZ2_TANK_ROCKET_3:			dl.color[0] = 1;			dl.color[1] = 0.5f;			dl.color[2] = 0.2f;			S.StartSound(null, ent, Defines.CHAN_WEAPON, S.RegisterSound("tank/tnkatck1.wav"), 1, Defines.ATTN_NORM, 0);			break;		case Defines.MZ2_SUPERTANK_ROCKET_1:		case Defines.MZ2_SUPERTANK_ROCKET_2:		case Defines.MZ2_SUPERTANK_ROCKET_3:		case Defines.MZ2_BOSS2_ROCKET_1:		case Defines.MZ2_BOSS2_ROCKET_2:		case Defines.MZ2_BOSS2_ROCKET_3:		case Defines.MZ2_BOSS2_ROCKET_4:		case Defines.MZ2_CARRIER_ROCKET_1:			//		case MZ2_CARRIER_ROCKET_2:			//		case MZ2_CARRIER_ROCKET_3:			//		case MZ2_CARRIER_ROCKET_4:			dl.color[0] = 1;			dl.color[1] = 0.5f;			dl.color[2] = 0.2f;			S.StartSound(null, ent, Defines.CHAN_WEAPON, S.RegisterSound("tank/rocket.wav"), 1, Defines.ATTN_NORM, 0);			break;		case Defines.MZ2_GUNNER_GRENADE_1:		case Defines.MZ2_GUNNER_GRENADE_2:		case Defines.MZ2_GUNNER_GRENADE_3:		case Defines.MZ2_GUNNER_GRENADE_4:			dl.color[0] = 1;			dl.color[1] = 0.5f;			dl.color[2] = 0;			S.StartSound(null, ent, Defines.CHAN_WEAPON, S.RegisterSound("gunner/gunatck3.wav"), 1, Defines.ATTN_NORM, 0);			break;		case Defines.MZ2_GLADIATOR_RAILGUN_1:		// PMM		case Defines.MZ2_CARRIER_RAILGUN:		case Defines.MZ2_WIDOW_RAIL:			// pmm			dl.color[0] = 0.5f;			dl.color[1] = 0.5f;			dl.color[2] = 1.0f;			break;		//	   --- Xian's shit starts ---		case Defines.MZ2_MAKRON_BFG:			dl.color[0] = 0.5f;			dl.color[1] = 1;			dl.color[2] = 0.5f;			//S.StartSound (null, ent, CHAN_WEAPON,			// S.RegisterSound("makron/bfg_fire.wav"), 1, ATTN_NORM, 0);			break;		case Defines.MZ2_MAKRON_BLASTER_1:		case Defines.MZ2_MAKRON_BLASTER_2:		case Defines.MZ2_MAKRON_BLASTER_3:		case Defines.MZ2_MAKRON_BLASTER_4:		case Defines.MZ2_MAKRON_BLASTER_5:		case Defines.MZ2_MAKRON_BLASTER_6:		case Defines.MZ2_MAKRON_BLASTER_7:		case Defines.MZ2_MAKRON_BLASTER_8:		case Defines.MZ2_MAKRON_BLASTER_9:		case Defines.MZ2_MAKRON_BLASTER_10:		case Defines.MZ2_MAKRON_BLASTER_11:		case Defines.MZ2_MAKRON_BLASTER_12:		case Defines.MZ2_MAKRON_BLASTER_13:		case Defines.MZ2_MAKRON_BLASTER_14:		case Defines.MZ2_MAKRON_BLASTER_15:		case Defines.MZ2_MAKRON_BLASTER_16:		case Defines.MZ2_MAKRON_BLASTER_17:			dl.color[0] = 1;			dl.color[1] = 1;			dl.color[2] = 0;			S.StartSound(null, ent, Defines.CHAN_WEAPON, S.RegisterSound("makron/blaster.wav"), 1, Defines.ATTN_NORM, 0);			break;		case Defines.MZ2_JORG_MACHINEGUN_L1:		case Defines.MZ2_JORG_MACHINEGUN_L2:		case Defines.MZ2_JORG_MACHINEGUN_L3:		case Defines.MZ2_JORG_MACHINEGUN_L4:		case Defines.MZ2_JORG_MACHINEGUN_L5:		case Defines.MZ2_JORG_MACHINEGUN_L6:			dl.color[0] = 1;			dl.color[1] = 1;			dl.color[2] = 0;			ParticleEffect(origin, Globals.vec3_origin, 0, 40);			CL_tent.SmokeAndFlash(origin);			S.StartSound(null, ent, Defines.CHAN_WEAPON, S.RegisterSound("boss3/xfire.wav"), 1, Defines.ATTN_NORM, 0);			break;		case Defines.MZ2_JORG_MACHINEGUN_R1:		case Defines.MZ2_JORG_MACHINEGUN_R2:		case Defines.MZ2_JORG_MACHINEGUN_R3:		case Defines.MZ2_JORG_MACHINEGUN_R4:		case Defines.MZ2_JORG_MACHINEGUN_R5:		case Defines.MZ2_JORG_MACHINEGUN_R6:			dl.color[0] = 1;			dl.color[1] = 1;			dl.color[2] = 0;			ParticleEffect(origin, Globals.vec3_origin, 0, 40);			CL_tent.SmokeAndFlash(origin);			break;		case Defines.MZ2_JORG_BFG_1:			dl.color[0] = 0.5f;			dl.color[1] = 1;			dl.color[2] = 0.5f;			break;		case Defines.MZ2_BOSS2_MACHINEGUN_R1:		case Defines.MZ2_BOSS2_MACHINEGUN_R2:		case Defines.MZ2_BOSS2_MACHINEGUN_R3:		case Defines.MZ2_BOSS2_MACHINEGUN_R4:		case Defines.MZ2_BOSS2_MACHINEGUN_R5:		case Defines.MZ2_CARRIER_MACHINEGUN_R1: // PMM		case Defines.MZ2_CARRIER_MACHINEGUN_R2: // PMM			dl.color[0] = 1;			dl.color[1] = 1;			dl.color[2] = 0;			ParticleEffect(origin, Globals.vec3_origin, 0, 40);			CL_tent.SmokeAndFlash(origin);			break;		//	   ======		//	   ROGUE		case Defines.MZ2_STALKER_BLASTER:		case Defines.MZ2_DAEDALUS_BLASTER:		case Defines.MZ2_MEDIC_BLASTER_2:		case Defines.MZ2_WIDOW_BLASTER:		case Defines.MZ2_WIDOW_BLASTER_SWEEP1:		case Defines.MZ2_WIDOW_BLASTER_SWEEP2:		case Defines.MZ2_WIDOW_BLASTER_SWEEP3:		case Defines.MZ2_WIDOW_BLASTER_SWEEP4:		case Defines.MZ2_WIDOW_BLASTER_SWEEP5:		case Defines.MZ2_WIDOW_BLASTER_SWEEP6:		case Defines.MZ2_WIDOW_BLASTER_SWEEP7:		case Defines.MZ2_WIDOW_BLASTER_SWEEP8:		case Defines.MZ2_WIDOW_BLASTER_SWEEP9:		case Defines.MZ2_WIDOW_BLASTER_100:		case Defines.MZ2_WIDOW_BLASTER_90:		case Defines.MZ2_WIDOW_BLASTER_80:		case Defines.MZ2_WIDOW_BLASTER_70:		case Defines.MZ2_WIDOW_BLASTER_60:		case Defines.MZ2_WIDOW_BLASTER_50:		case Defines.MZ2_WIDOW_BLASTER_40:		case Defines.MZ2_WIDOW_BLASTER_30:		case Defines.MZ2_WIDOW_BLASTER_20:		case Defines.MZ2_WIDOW_BLASTER_10:		case Defines.MZ2_WIDOW_BLASTER_0:		case Defines.MZ2_WIDOW_BLASTER_10L:		case Defines.MZ2_WIDOW_BLASTER_20L:		case Defines.MZ2_WIDOW_BLASTER_30L:		case Defines.MZ2_WIDOW_BLASTER_40L:		case Defines.MZ2_WIDOW_BLASTER_50L:		case Defines.MZ2_WIDOW_BLASTER_60L:		case Defines.MZ2_WIDOW_BLASTER_70L:		case Defines.MZ2_WIDOW_RUN_1:		case Defines.MZ2_WIDOW_RUN_2:		case Defines.MZ2_WIDOW_RUN_3:		case Defines.MZ2_WIDOW_RUN_4:		case Defines.MZ2_WIDOW_RUN_5:		case Defines.MZ2_WIDOW_RUN_6:		case Defines.MZ2_WIDOW_RUN_7:		case Defines.MZ2_WIDOW_RUN_8:			dl.color[0] = 0;			dl.color[1] = 1;			dl.color[2] = 0;			S.StartSound(null, ent, Defines.CHAN_WEAPON, S.RegisterSound("tank/tnkatck3.wav"), 1, Defines.ATTN_NORM, 0);			break;		case Defines.MZ2_WIDOW_DISRUPTOR:			dl.color[0] = -1;			dl.color[1] = -1;			dl.color[2] = -1;			S.StartSound(null, ent, Defines.CHAN_WEAPON, S.RegisterSound("weapons/disint2.wav"), 1, Defines.ATTN_NORM, 0);			break;		case Defines.MZ2_WIDOW_PLASMABEAM:		case Defines.MZ2_WIDOW2_BEAMER_1:		case Defines.MZ2_WIDOW2_BEAMER_2:		case Defines.MZ2_WIDOW2_BEAMER_3:		case Defines.MZ2_WIDOW2_BEAMER_4:		case Defines.MZ2_WIDOW2_BEAMER_5:		case Defines.MZ2_WIDOW2_BEAM_SWEEP_1:		case Defines.MZ2_WIDOW2_BEAM_SWEEP_2:		case Defines.MZ2_WIDOW2_BEAM_SWEEP_3:		case Defines.MZ2_WIDOW2_BEAM_SWEEP_4:		case Defines.MZ2_WIDOW2_BEAM_SWEEP_5:		case Defines.MZ2_WIDOW2_BEAM_SWEEP_6:		case Defines.MZ2_WIDOW2_BEAM_SWEEP_7:		case Defines.MZ2_WIDOW2_BEAM_SWEEP_8:		case Defines.MZ2_WIDOW2_BEAM_SWEEP_9:		case Defines.MZ2_WIDOW2_BEAM_SWEEP_10:		case Defines.MZ2_WIDOW2_BEAM_SWEEP_11:			dl.radius = 300 + (Globals.rnd.nextInt() & 100);			dl.color[0] = 1;			dl.color[1] = 1;			dl.color[2] = 0;			dl.die = Globals.cl.time + 200;			break;		//	   ROGUE		//	   ======		//	   --- Xian's shit ends ---		}	}	/*	 * =============== CL_AddDLights	 * 	 * ===============	 */	static void AddDLights() {		cdlight_t dl;		//	  =====		//	  PGM		if (Globals.vidref_val == Defines.VIDREF_GL) {			for (int i = 0; i < Defines.MAX_DLIGHTS; i++) {				dl = cl_dlights[i];				if (dl.radius == 0.0f)					continue;				V.AddLight(dl.origin, dl.radius, dl.color[0], dl.color[1], dl.color[2]);			}		} else {			for (int i = 0; i < Defines.MAX_DLIGHTS; i++) {				dl = cl_dlights[i];				if (dl.radius == 0.0f)					continue;				// negative light in software. only black allowed				if ((dl.color[0] < 0) || (dl.color[1] < 0) || (dl.color[2] < 0)) {					dl.radius = -(dl.radius);					dl.color[0] = 1;					dl.color[1] = 1;					dl.color[2] = 1;				}				V.AddLight(dl.origin, dl.radius, dl.color[0], dl.color[1], dl.color[2]);			}		}		//	  PGM		//	  =====	}	/*	 * =============== CL_ClearParticles ===============	 */	static void ClearParticles() {		free_particles = particles[0];		active_particles = null;		for (int i = 0; i < particles.length - 1; i++)			particles[i].next = particles[i + 1];		particles[particles.length - 1].next = null;	}	/*	 * =============== CL_ParticleEffect	 * 	 * Wall impact puffs ===============	 */	static void ParticleEffect(float[] org, float[] dir, int color, int count) {		int j;		cparticle_t p;		float d;				for (int i = 0; i < count; i++) {			if (free_particles == null)				return;			p = free_particles;			free_particles = p.next;			p.next = active_particles;			active_particles = p;			p.time = Globals.cl.time;			p.color = color + (Lib.rand() & 7);			d = Lib.rand() & 31;			for (j = 0; j < 3; j++) {				p.org[j] = org[j] + ((Lib.rand() & 7) - 4) + d * dir[j];				p.vel[j] = Lib.crand() * 20;			}			p.accel[0] = p.accel[1] = 0;			p.accel[2] = -PARTICLE_GRAVITY;			p.alpha = 1.0f;			p.alphavel = -1.0f / (0.5f + Globals.rnd.nextFloat() * 0.3f);		}	}	/*	 * =============== CL_ParticleEffect2 ===============	 */	static void ParticleEffect2(float[] org, float[] dir, int color, int count) {		int j;		cparticle_t p;		float d;		for (int i = 0; i < count; i++) {			if (free_particles == null)				return;			p = free_particles;			free_particles = p.next;			p.next = active_particles;			active_particles = p;			p.time = Globals.cl.time;			p.color = color;			d = Lib.rand() & 7;			for (j = 0; j < 3; j++) {				p.org[j] = org[j] + ((Lib.rand() & 7) - 4) + d * dir[j];				p.vel[j] = Lib.crand() * 20;			}			p.accel[0] = p.accel[1] = 0;			p.accel[2] = -PARTICLE_GRAVITY;			p.alpha = 1.0f;			p.alphavel = -1.0f / (0.5f + Globals.rnd.nextFloat() * 0.3f);		}	}	//	   RAFAEL	/*	 * =============== CL_ParticleEffect3 ===============	 */	static void ParticleEffect3(float[] org, float[] dir, int color, int count) {		int j;		cparticle_t p;		float d;		for (int i = 0; i < count; i++) {			if (free_particles == null)				return;			p = free_particles;			free_particles = p.next;			p.next = active_particles;			active_particles = p;			p.time = Globals.cl.time;			p.color = color;			d = Lib.rand() & 7;			for (j = 0; j < 3; j++) {				p.org[j] = org[j] + ((Lib.rand() & 7) - 4) + d * dir[j];				p.vel[j] = Lib.crand() * 20;			}			p.accel[0] = p.accel[1] = 0;			p.accel[2] = PARTICLE_GRAVITY;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -