亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? m.java

?? JAKE2用JAVA寫的queck2的3D游戲開發引擎
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/* * M.java * Copyright (C) 2003 *  * $Id: M.java,v 1.9 2006/01/21 21:53:32 salomo Exp $ *//* Copyright (C) 1997-2001 Id Software, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. */package jake2.client;import jake2.Defines;import jake2.Globals;import jake2.game.*;import jake2.server.SV;import jake2.util.Lib;import jake2.util.Math3D;/** * M */public final class M {    public static void M_CheckGround(edict_t ent) {        float[] point = { 0, 0, 0 };        trace_t trace;        if ((ent.flags & (Defines.FL_SWIM | Defines.FL_FLY)) != 0)            return;        if (ent.velocity[2] > 100) {            ent.groundentity = null;            return;        }        // if the hull point one-quarter unit down is solid the entity is on        // ground        point[0] = ent.s.origin[0];        point[1] = ent.s.origin[1];        point[2] = ent.s.origin[2] - 0.25f;        trace = GameBase.gi.trace(ent.s.origin, ent.mins, ent.maxs, point, ent,                Defines.MASK_MONSTERSOLID);        // check steepness        if (trace.plane.normal[2] < 0.7 && !trace.startsolid) {            ent.groundentity = null;            return;        }        // ent.groundentity = trace.ent;        // ent.groundentity_linkcount = trace.ent.linkcount;        // if (!trace.startsolid && !trace.allsolid)        //   VectorCopy (trace.endpos, ent.s.origin);        if (!trace.startsolid && !trace.allsolid) {            Math3D.VectorCopy(trace.endpos, ent.s.origin);            ent.groundentity = trace.ent;            ent.groundentity_linkcount = trace.ent.linkcount;            ent.velocity[2] = 0;        }    }        /**     * Returns false if any part of the bottom of the entity is off an edge that     * is not a staircase.     */    public static boolean M_CheckBottom(edict_t ent) {        float[] mins = { 0, 0, 0 };        float[] maxs = { 0, 0, 0 };        float[] start = { 0, 0, 0 };        float[] stop = { 0, 0, 0 };        trace_t trace;        int x, y;        float mid, bottom;        Math3D.VectorAdd(ent.s.origin, ent.mins, mins);        Math3D.VectorAdd(ent.s.origin, ent.maxs, maxs);        //	   if all of the points under the corners are solid world, don't bother        //	   with the tougher checks        //	   the corners must be within 16 of the midpoint        start[2] = mins[2] - 1;        for (x = 0; x <= 1; x++)            for (y = 0; y <= 1; y++) {                start[0] = x != 0 ? maxs[0] : mins[0];                start[1] = y != 0 ? maxs[1] : mins[1];                if (GameBase.gi.pointcontents.pointcontents(start) != Defines.CONTENTS_SOLID) {                    GameBase.c_no++;                    //                    //	   check it for real...                    //                    start[2] = mins[2];                    //	   the midpoint must be within 16 of the bottom                    start[0] = stop[0] = (mins[0] + maxs[0]) * 0.5f;                    start[1] = stop[1] = (mins[1] + maxs[1]) * 0.5f;                    stop[2] = start[2] - 2 * GameBase.STEPSIZE;                    trace = GameBase.gi.trace(start, Globals.vec3_origin,                            Globals.vec3_origin, stop, ent,                            Defines.MASK_MONSTERSOLID);                    if (trace.fraction == 1.0)                        return false;                    mid = bottom = trace.endpos[2];                    //	   the corners must be within 16 of the midpoint                    for (x = 0; x <= 1; x++)                        for (y = 0; y <= 1; y++) {                            start[0] = stop[0] = x != 0 ? maxs[0] : mins[0];                            start[1] = stop[1] = y != 0 ? maxs[1] : mins[1];                            trace = GameBase.gi.trace(start,                                    Globals.vec3_origin, Globals.vec3_origin,                                    stop, ent, Defines.MASK_MONSTERSOLID);                            if (trace.fraction != 1.0                                    && trace.endpos[2] > bottom)                                bottom = trace.endpos[2];                            if (trace.fraction == 1.0                                    || mid - trace.endpos[2] > GameBase.STEPSIZE)                                return false;                        }                    GameBase.c_yes++;                    return true;                }            }        GameBase.c_yes++;        return true; // we got out easy    }    /**      * M_ChangeYaw.     */    public static void M_ChangeYaw(edict_t ent) {        float ideal;        float current;        float move;        float speed;        current = Math3D.anglemod(ent.s.angles[Defines.YAW]);        ideal = ent.ideal_yaw;        if (current == ideal)            return;        move = ideal - current;        speed = ent.yaw_speed;        if (ideal > current) {            if (move >= 180)                move = move - 360;        } else {            if (move <= -180)                move = move + 360;        }        if (move > 0) {            if (move > speed)                move = speed;        } else {            if (move < -speed)                move = -speed;        }        ent.s.angles[Defines.YAW] = Math3D.anglemod(current + move);    }    /**     * M_MoveToGoal.     */    public static void M_MoveToGoal(edict_t ent, float dist) {        edict_t goal = ent.goalentity;        if (ent.groundentity == null                && (ent.flags & (Defines.FL_FLY | Defines.FL_SWIM)) == 0)            return;        //	   if the next step hits the enemy, return immediately        if (ent.enemy != null && SV.SV_CloseEnough(ent, ent.enemy, dist))            return;        //	   bump around...        if ((Lib.rand() & 3) == 1                || !SV.SV_StepDirection(ent, ent.ideal_yaw, dist)) {            if (ent.inuse)                SV.SV_NewChaseDir(ent, goal, dist);        }    }    /**      * M_walkmove.     */    public static boolean M_walkmove(edict_t ent, float yaw, float dist) {        float[] move = { 0, 0, 0 };        if ((ent.groundentity == null)                && (ent.flags & (Defines.FL_FLY | Defines.FL_SWIM)) == 0)            return false;        yaw = (float) (yaw * Math.PI * 2 / 360);        move[0] = (float) Math.cos(yaw) * dist;        move[1] = (float) Math.sin(yaw) * dist;        move[2] = 0;        return SV.SV_movestep(ent, move, true);    }    public static void M_CatagorizePosition(edict_t ent) {        float[] point = { 0, 0, 0 };        int cont;        //        //	get waterlevel        //        point[0] = ent.s.origin[0];        point[1] = ent.s.origin[1];        point[2] = ent.s.origin[2] + ent.mins[2] + 1;        cont = GameBase.gi.pointcontents.pointcontents(point);        if (0 == (cont & Defines.MASK_WATER)) {            ent.waterlevel = 0;            ent.watertype = 0;            return;        }        ent.watertype = cont;        ent.waterlevel = 1;        point[2] += 26;        cont = GameBase.gi.pointcontents.pointcontents(point);        if (0 == (cont & Defines.MASK_WATER))

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品不卡在线视频| 色婷婷久久久久swag精品 | 欧美喷潮久久久xxxxx| 亚洲三级免费电影| 欧美福利电影网| 天堂蜜桃一区二区三区 | 日韩欧美国产三级| 国产成人精品亚洲777人妖| 久久一区二区三区四区| 国产精品1区二区.| 亚洲精品成人精品456| 日韩免费福利电影在线观看| 国产成人免费9x9x人网站视频| 亚洲免费在线视频| 国产视频一区不卡| 777色狠狠一区二区三区| 99久久久国产精品| 极品销魂美女一区二区三区| 亚洲一区二区高清| 中文字幕中文在线不卡住| 91精品欧美一区二区三区综合在| 国产成人自拍网| 美女精品一区二区| 日日摸夜夜添夜夜添精品视频| 国产精品成人一区二区三区夜夜夜| 色婷婷亚洲一区二区三区| 午夜av电影一区| 自拍偷拍亚洲综合| 亚洲欧美综合色| 亚洲色大成网站www久久九九| 欧美不卡在线视频| 欧美网站大全在线观看| 在线观看免费亚洲| 日韩一区二区三区免费看| 欧美日韩亚洲综合| 日韩欧美国产1| 精品久久久久香蕉网| 久久亚洲精品国产精品紫薇| 欧美tickling网站挠脚心| 久久综合狠狠综合久久激情 | 久久国产精品99久久久久久老狼| 日本欧美肥老太交大片| 久国产精品韩国三级视频| 日韩电影在线一区二区三区| 激情综合色综合久久| 91丨porny丨蝌蚪视频| 7777精品伊人久久久大香线蕉超级流畅| 欧美在线一二三| 久久精品视频在线免费观看| 一区二区三区精品久久久| 老司机免费视频一区二区| 国产成人免费9x9x人网站视频| 日本久久精品电影| 欧美精品一区二区三| 欧美国产丝袜视频| 日韩av一区二| 欧美系列日韩一区| 中文字幕亚洲视频| 九色|91porny| 精品国一区二区三区| 一区二区三区四区精品在线视频| 狠狠狠色丁香婷婷综合激情| 欧洲亚洲国产日韩| 亚洲精品乱码久久久久久久久| 精品一区二区综合| 日韩三级电影网址| 青娱乐精品视频| 欧美日韩一级视频| 亚洲最大的成人av| 欧洲一区二区av| 亚洲免费三区一区二区| 成人一区二区视频| 中文字幕第一页久久| 久久精品国产第一区二区三区| 精品视频在线免费| 五月开心婷婷久久| 欧美一区二区三区播放老司机| 五月激情综合网| 26uuu色噜噜精品一区| 岛国精品在线播放| 亚洲视频每日更新| 色丁香久综合在线久综合在线观看| 中文字幕佐山爱一区二区免费| 99re这里都是精品| 五月激情综合色| 国产区在线观看成人精品| 99国产精品视频免费观看| 亚洲电影一级黄| 国产视频一区在线播放| 91免费视频网| 秋霞av亚洲一区二区三| 国产精品无遮挡| 91精品国产综合久久蜜臀| 成人黄色软件下载| 精品一区二区三区在线观看国产 | 亚洲美女电影在线| 精品国产一区二区三区av性色| 成人动漫一区二区在线| 日精品一区二区| 最新不卡av在线| 欧美激情一区二区三区不卡| 欧美日韩精品高清| 色综合一区二区| 国产精品888| 国产精品小仙女| 日韩精品久久久久久| 亚洲欧美日韩国产综合在线| 国产嫩草影院久久久久| 欧美大片在线观看| 精品国产一区二区三区久久久蜜月 | 中文字幕日本乱码精品影院| 亚洲精品在线三区| 精品国产成人系列| 国产亚洲短视频| 中文在线资源观看网站视频免费不卡| 欧美大肚乱孕交hd孕妇| 久久婷婷国产综合精品青草| 欧美成人性福生活免费看| 亚洲精品在线一区二区| 国产欧美久久久精品影院| 国产拍欧美日韩视频二区| 国产精品嫩草影院av蜜臀| 亚洲一区二区三区四区不卡| 日本亚洲最大的色成网站www| 婷婷综合在线观看| 国产精品亚洲一区二区三区在线 | 五月天久久比比资源色| 精品一区二区三区在线播放| 国产成人啪午夜精品网站男同| 丁香啪啪综合成人亚洲小说| 欧美调教femdomvk| 久久久电影一区二区三区| 一区二区三区资源| 国产乱码精品一区二区三| 欧美日韩一区二区三区在线| 久久免费的精品国产v∧| 午夜a成v人精品| av网站免费线看精品| 精品久久久久久久久久久久久久久 | 在线观看91视频| 精品福利在线导航| 六月丁香婷婷久久| 欧美日产国产精品| 亚洲一区影音先锋| 99精品视频免费在线观看| 精品成a人在线观看| 国产一区二区三区综合| 欧美日韩国产在线观看| 久久综合狠狠综合| 日本欧美在线看| 91麻豆精品国产自产在线观看一区 | 久久久国产精华| 国产欧美一区二区精品性色超碰| 蜜桃视频一区二区三区| 日韩欧美一级特黄在线播放| 一个色综合网站| 色嗨嗨av一区二区三区| 综合久久国产九一剧情麻豆| www.欧美.com| 亚洲国产精品人人做人人爽| 欧美日韩国产精选| 免费观看日韩av| 久久久久久久久久久电影| 美女任你摸久久| 日韩欧美久久一区| 粉嫩在线一区二区三区视频| 一区二区在线观看免费视频播放| 色综合久久综合网| 午夜精品久久久久久不卡8050| 欧美一区二区三区喷汁尤物| 国产二区国产一区在线观看| 亚洲毛片av在线| 精品国产欧美一区二区| 成人一区二区三区| 国产亚洲综合av| 一道本成人在线| 亚洲国产精品av| 一本久久精品一区二区| 亚洲欧美怡红院| 7777精品伊人久久久大香线蕉 | 精品一区二区日韩| 欧美久久久久久蜜桃| 日韩三级视频在线看| 精品久久久久久久人人人人传媒| 26uuu国产电影一区二区| 国产天堂亚洲国产碰碰| 亚洲精品一二三| 亚洲成av人片在www色猫咪| 麻豆精品在线看| 国产经典欧美精品| 91视频免费播放| 欧美r级电影在线观看| 亚洲视频中文字幕| 蜜臀99久久精品久久久久久软件| 国产在线看一区| 欧美制服丝袜第一页| 久久无码av三级| 亚洲大片免费看| 成a人片国产精品| 日韩精品中午字幕|