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

📄 cl_tent.java

📁 Jake2是一个Java 3D游戏引擎.
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
            break;        // RAFAEL        case Defines.TE_TUNNEL_SPARKS:            cnt = MSG.ReadByte(Globals.net_message);            MSG.ReadPos(Globals.net_message, pos);            MSG.ReadDir(Globals.net_message, dir);            color = MSG.ReadByte(Globals.net_message);            CL_fx.ParticleEffect3(pos, dir, color, cnt);            break;        //	  =============        //	  PGM        // PMM -following code integrated for flechette (different color)        case Defines.TE_BLASTER2: // green blaster hitting wall        case Defines.TE_FLECHETTE: // flechette            MSG.ReadPos(Globals.net_message, pos);            MSG.ReadDir(Globals.net_message, dir);            // PMM            if (type == Defines.TE_BLASTER2)                CL_newfx.BlasterParticles2(pos, dir, 0xd0);            else                CL_newfx.BlasterParticles2(pos, dir, 0x6f); // 75            ex = AllocExplosion();            Math3D.VectorCopy(pos, ex.ent.origin);            ex.ent.angles[0] = (float) (Math.acos(dir[2]) / Math.PI * 180);            // PMM - fixed to correct for pitch of 0            if (dir[0] != 0.0f)                ex.ent.angles[1] = (float) (Math.atan2(dir[1], dir[0])                        / Math.PI * 180);            else if (dir[1] > 0)                ex.ent.angles[1] = 90;            else if (dir[1] < 0)                ex.ent.angles[1] = 270;            else                ex.ent.angles[1] = 0;            ex.type = ex_misc;            ex.ent.flags = Defines.RF_FULLBRIGHT | Defines.RF_TRANSLUCENT;            // PMM            if (type == Defines.TE_BLASTER2)                ex.ent.skinnum = 1;            else                // flechette                ex.ent.skinnum = 2;            ex.start = Globals.cl.frame.servertime - 100;            ex.light = 150;            // PMM            if (type == Defines.TE_BLASTER2)                ex.lightcolor[1] = 1;            else // flechette            {                ex.lightcolor[0] = 0.19f;                ex.lightcolor[1] = 0.41f;                ex.lightcolor[2] = 0.75f;            }            ex.ent.model = cl_mod_explode;            ex.frames = 4;            S.StartSound(pos, 0, 0, cl_sfx_lashit, 1, Defines.ATTN_NORM, 0);            break;        case Defines.TE_LIGHTNING:            ent = ParseLightning(cl_mod_lightning);            S.StartSound(null, ent, Defines.CHAN_WEAPON, cl_sfx_lightning, 1,                    Defines.ATTN_NORM, 0);            break;        case Defines.TE_DEBUGTRAIL:            MSG.ReadPos(Globals.net_message, pos);            MSG.ReadPos(Globals.net_message, pos2);            CL_newfx.DebugTrail(pos, pos2);            break;        case Defines.TE_PLAIN_EXPLOSION:            MSG.ReadPos(Globals.net_message, pos);            ex = AllocExplosion();            Math3D.VectorCopy(pos, ex.ent.origin);            ex.type = ex_poly;            ex.ent.flags = Defines.RF_FULLBRIGHT;            ex.start = Globals.cl.frame.servertime - 100;            ex.light = 350;            ex.lightcolor[0] = 1.0f;            ex.lightcolor[1] = 0.5f;            ex.lightcolor[2] = 0.5f;            ex.ent.angles[1] = Lib.rand() % 360;            ex.ent.model = cl_mod_explo4;            if (Globals.rnd.nextFloat() < 0.5)                ex.baseframe = 15;            ex.frames = 15;            if (type == Defines.TE_ROCKET_EXPLOSION_WATER)                S                        .StartSound(pos, 0, 0, cl_sfx_watrexp, 1,                                Defines.ATTN_NORM, 0);            else                S                        .StartSound(pos, 0, 0, cl_sfx_rockexp, 1,                                Defines.ATTN_NORM, 0);            break;        case Defines.TE_FLASHLIGHT:            MSG.ReadPos(Globals.net_message, pos);            ent = MSG.ReadShort(Globals.net_message);            CL_newfx.Flashlight(ent, pos);            break;        case Defines.TE_FORCEWALL:            MSG.ReadPos(Globals.net_message, pos);            MSG.ReadPos(Globals.net_message, pos2);            color = MSG.ReadByte(Globals.net_message);            CL_newfx.ForceWall(pos, pos2, color);            break;        case Defines.TE_HEATBEAM:            ent = ParsePlayerBeam(cl_mod_heatbeam);            break;        case Defines.TE_MONSTER_HEATBEAM:            ent = ParsePlayerBeam(cl_mod_monster_heatbeam);            break;        case Defines.TE_HEATBEAM_SPARKS:            //			cnt = MSG.ReadByte (net_message);            cnt = 50;            MSG.ReadPos(Globals.net_message, pos);            MSG.ReadDir(Globals.net_message, dir);            //			r = MSG.ReadByte (net_message);            //			magnitude = MSG.ReadShort (net_message);            r = 8;            magnitude = 60;            color = r & 0xff;            CL_newfx.ParticleSteamEffect(pos, dir, color, cnt, magnitude);            S.StartSound(pos, 0, 0, cl_sfx_lashit, 1, Defines.ATTN_NORM, 0);            break;        case Defines.TE_HEATBEAM_STEAM:            //			cnt = MSG.ReadByte (net_message);            cnt = 20;            MSG.ReadPos(Globals.net_message, pos);            MSG.ReadDir(Globals.net_message, dir);            //			r = MSG.ReadByte (net_message);            //			magnitude = MSG.ReadShort (net_message);            //			color = r & 0xff;            color = 0xe0;            magnitude = 60;            CL_newfx.ParticleSteamEffect(pos, dir, color, cnt, magnitude);            S.StartSound(pos, 0, 0, cl_sfx_lashit, 1, Defines.ATTN_NORM, 0);            break;        case Defines.TE_STEAM:            ParseSteam();            break;        case Defines.TE_BUBBLETRAIL2:            //			cnt = MSG.ReadByte (net_message);            cnt = 8;            MSG.ReadPos(Globals.net_message, pos);            MSG.ReadPos(Globals.net_message, pos2);            CL_newfx.BubbleTrail2(pos, pos2, cnt);            S.StartSound(pos, 0, 0, cl_sfx_lashit, 1, Defines.ATTN_NORM, 0);            break;        case Defines.TE_MOREBLOOD:            MSG.ReadPos(Globals.net_message, pos);            MSG.ReadDir(Globals.net_message, dir);            CL_fx.ParticleEffect(pos, dir, 0xe8, 250);            break;        case Defines.TE_CHAINFIST_SMOKE:            dir[0] = 0;            dir[1] = 0;            dir[2] = 1;            MSG.ReadPos(Globals.net_message, pos);            CL_newfx.ParticleSmokeEffect(pos, dir, 0, 20, 20);            break;        case Defines.TE_ELECTRIC_SPARKS:            MSG.ReadPos(Globals.net_message, pos);            MSG.ReadDir(Globals.net_message, dir);            //			CL_ParticleEffect (pos, dir, 109, 40);            CL_fx.ParticleEffect(pos, dir, 0x75, 40);            //FIXME : replace or remove this sound            S.StartSound(pos, 0, 0, cl_sfx_lashit, 1, Defines.ATTN_NORM, 0);            break;        case Defines.TE_TRACKER_EXPLOSION:            MSG.ReadPos(Globals.net_message, pos);            CL_newfx.ColorFlash(pos, 0, 150, -1, -1, -1);            CL_newfx.ColorExplosionParticles(pos, 0, 1);            S.StartSound(pos, 0, 0, cl_sfx_disrexp, 1, Defines.ATTN_NORM, 0);            break;        case Defines.TE_TELEPORT_EFFECT:        case Defines.TE_DBALL_GOAL:            MSG.ReadPos(Globals.net_message, pos);            CL_fx.TeleportParticles(pos);            break;        case Defines.TE_WIDOWBEAMOUT:            ParseWidow();            break;        case Defines.TE_NUKEBLAST:            ParseNuke();            break;        case Defines.TE_WIDOWSPLASH:            MSG.ReadPos(Globals.net_message, pos);            CL_newfx.WidowSplash(pos);            break;        //	  PGM        //	  ==============        default:            Com.Error(Defines.ERR_DROP, "CL_ParseTEnt: bad type");        }    }    // stack variable    // dist, org    private static final entity_t ent = new entity_t();    /*     * ================= CL_AddBeams =================     */    static void AddBeams() {        int i, j;        beam_t[] b;        float d;        float yaw, pitch;        float forward;        float len, steps;        float model_length;        //	   update beams        b = cl_beams;        for (i = 0; i < MAX_BEAMS; i++) {            if (b[i].model == null || b[i].endtime < Globals.cl.time)                continue;            // if coming from the player, update the start position            if (b[i].entity == Globals.cl.playernum + 1) // entity 0 is the                                                         // world            {                Math3D.VectorCopy(Globals.cl.refdef.vieworg, b[i].start);                b[i].start[2] -= 22; // adjust for view height            }            Math3D.VectorAdd(b[i].start, b[i].offset, org);            // calculate pitch and yaw            Math3D.VectorSubtract(b[i].end, org, dist);            if (dist[1] == 0 && dist[0] == 0) {                yaw = 0;                if (dist[2] > 0)                    pitch = 90;                else                    pitch = 270;            } else {                // PMM - fixed to correct for pitch of 0                if (dist[0] != 0.0f)                    yaw = (float) (Math.atan2(dist[1], dist[0]) * 180 / Math.PI);                else if (dist[1] > 0)                    yaw = 90;                else                    yaw = 270;                if (yaw < 0)                    yaw += 360;                forward = (float) Math.sqrt(dist[0] * dist[0] + dist[1]                        * dist[1]);                pitch = (float) (Math.atan2(dist[2], forward) * -180.0 / Math.PI);                if (pitch < 0)                    pitch += 360.0;            }            // add new entities for the beams            d = Math3D.VectorNormalize(dist);            //memset (&ent, 0, sizeof(ent));            ent.clear();            if (b[i].model == cl_mod_lightning) {                model_length = 35.0f;                d -= 20.0; // correction so it doesn't end in middle of tesla            } else {                model_length = 30.0f;            }            steps = (float) Math.ceil(d / model_length);            len = (d - model_length) / (steps - 1);            // PMM - special case for lightning model .. if the real length is            // shorter than the model,            // flip it around & draw it from the end to the start. This prevents            // the model from going            // through the tesla mine (instead it goes through the target)            if ((b[i].model == cl_mod_lightning) && (d <= model_length)) {                //				Com_Printf ("special case\n");                Math3D.VectorCopy(b[i].end, ent.origin);                // offset to push beam outside of tesla model (negative because                // dist is from end to start                // for this beam)                //				for (j=0 ; j<3 ; j++)                //					ent.origin[j] -= dist[j]*10.0;                ent.model = b[i].model;                ent.flags = Defines.RF_FULLBRIGHT;                ent.angles[0] = pitch;                ent.angles[1] = yaw;                ent.angles[2] = Lib.rand() % 360;                V.AddEntity(ent);                return;            }            while (d > 0) {                Math3D.VectorCopy(org, ent.origin);                ent.model = b[i].model;                if (b[i].model == cl_mod_lightning) {                    ent.flags = Defines.RF_FULLBRIGHT;                    ent.angles[0] = -pitch;                    ent.angles[1] = yaw + 180.0f;                    ent.angles[2] = Lib.rand() % 360;                } else {                    ent.angles[0] = pitch;                    ent.angles[1] = yaw;                    ent.angles[2] = Lib.rand() % 360;                }                //				Com_Printf("B: %d . %d\n", b[i].entity, b[i].dest_entity);                V.AddEntity(ent);                for (j = 0; j < 3; j++)                    org[j] += dist[j] * len;                d -= model_length;            }        }    }    //extern cvar_t *hand;    // stack variable    private static final float[] dist = new float[3];    private static final float[] org = new float[3];    private static final float[] f = new float[3];    private static final float[] u = new float[3];    private static final float[] r = new float[3];    /*     * ================= ROGUE - draw player locked beams CL_AddPlayerBeams     * =================     */    static void AddPlayerBeams() {        float d;        //entity_t ent = new entity_t();        float yaw, pitch;        float forward;        float len, steps;        int framenum = 0;        float model_length;

⌨️ 快捷键说明

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