aboutsummaryrefslogtreecommitdiffstats
path: root/test/jake2/render/TestMap.java
diff options
context:
space:
mode:
Diffstat (limited to 'test/jake2/render/TestMap.java')
-rw-r--r--test/jake2/render/TestMap.java628
1 files changed, 0 insertions, 628 deletions
diff --git a/test/jake2/render/TestMap.java b/test/jake2/render/TestMap.java
deleted file mode 100644
index 711b159..0000000
--- a/test/jake2/render/TestMap.java
+++ /dev/null
@@ -1,628 +0,0 @@
-/*
- * TestMap.java
- * Copyright (C) 2003
- *
- * $Id: TestMap.java,v 1.2 2004-07-08 20:24:31 hzi 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.render;
-
-import jake2.Defines;
-import jake2.Globals;
-import jake2.client.*;
-import jake2.game.Cmd;
-import jake2.game.cvar_t;
-import jake2.qcommon.*;
-import jake2.sys.IN;
-import jake2.sys.KBD;
-import jake2.util.*;
-
-import java.awt.Dimension;
-import java.util.*;
-
-/**
- * TestMap
- *
- * @author cwei
- */
-public class TestMap
-{
-
- static final float INSTANT_PARTICLE = -10000.0f;
- static final float PARTICLE_GRAVITY = 40.0f;
-
- String[] args;
-
- refexport_t re;
- refimport_t ri;
- viddef_t viddef;
- int framecount = 0;
-
- public TestMap(String[] args)
- {
- this.args = args;
- }
-
- public static void main(String[] args)
- {
-
- TestMap test = new TestMap(args);
- test.init();
- test.run();
- }
-
- void init()
- {
-
- // only for testing
- // a simple refimport_t implementation
- ri = new refimport_t()
- {
- public void Sys_Error(int err_level, String str)
- {
- VID.Error(err_level, str, null);
- }
-
- public void Sys_Error(int err_level, String str, Vargs vargs)
- {
- VID.Error(err_level, str, vargs);
- }
-
- public void Cmd_AddCommand(String name, xcommand_t cmd)
- {
- Cmd.AddCommand(name, cmd);
- }
-
- public void Cmd_RemoveCommand(String name)
- {
- Cmd.RemoveCommand(name);
- }
-
- public int Cmd_Argc()
- {
- return Cmd.Argc();
- }
-
- public String Cmd_Argv(int i)
- {
- return Cmd.Argv(i);
- }
-
- public void Cmd_ExecuteText(int exec_when, String text)
- {
- Cbuf.ExecuteText(exec_when, text);
- }
-
- public void Con_Printf(int print_level, String str)
- {
- VID.Printf(print_level, str, null);
- }
-
- public void Con_Printf(int print_level, String str, Vargs vargs)
- {
- VID.Printf(print_level, str, vargs);
- }
-
- public byte[] FS_LoadFile(String name)
- {
- return FS.LoadFile(name);
- }
-
- public int FS_FileLength(String name)
- {
- return FS.FileLength(name);
- }
-
- public void FS_FreeFile(byte[] buf)
- {
- FS.FreeFile(buf);
- }
-
- public String FS_Gamedir()
- {
- return FS.Gamedir();
- }
-
- public cvar_t Cvar_Get(String name, String value, int flags)
- {
- return Cvar.Get(name, value, flags);
- }
-
- public cvar_t Cvar_Set(String name, String value)
- {
- return Cvar.Set(name, value);
- }
-
- public void Cvar_SetValue(String name, float value)
- {
- Cvar.SetValue(name, value);
- }
-
- public boolean Vid_GetModeInfo(Dimension dim, int mode)
- {
- return VID.GetModeInfo(dim, mode);
- }
-
- public void Vid_MenuInit()
- {
- VID.MenuInit();
- }
-
- public void Vid_NewWindow(int width, int height)
- {
- VID.NewWindow(width, height);
- }
-
- public void updateScreenCallback()
- {
- TestMap.this.updateScreen();
- }
- };
-
- Qcommon.InitForTestMap(new String[] { "TestMap $Id: TestMap.java,v 1.2 2004-07-08 20:24:31 hzi Exp $" });
- // sehr wichtig !!!
- VID.Shutdown();
-
- this.re = Renderer.getDriver("jogl", ri);
-
- re.Init(0, 0);
-
- // init keyboard
- Cmd.AddCommand("+tforward", forward_down);
- Cmd.AddCommand("-tforward", forward_up);
- Cbuf.AddText("bind UPARROW +tforward");
- Cbuf.Execute();
- Cmd.AddCommand("+tbackward", backward_down);
- Cmd.AddCommand("-tbackward", backward_up);
- Cbuf.AddText("bind DOWNARROW +tbackward");
- Cbuf.Execute();
- Cmd.AddCommand("+tleft", left_down);
- Cmd.AddCommand("-tleft", left_up);
- Cbuf.AddText("bind LEFTARROW +tleft");
- Cbuf.Execute();
- Cmd.AddCommand("+tright", right_down);
- Cmd.AddCommand("-tright", right_up);
- Cbuf.AddText("bind RIGHTARROW +tright");
- Cbuf.Execute();
- Cmd.AddCommand("togglemouse", togglemouse);
- Cbuf.AddText("bind t togglemouse");
- Cbuf.Execute();
- Globals.cls.key_dest = Defines.key_game;
- Globals.cls.state = Defines.ca_active;
-
- viddef = Globals.viddef;
- }
-
- float fps = 0.0f;
- long start = 0;
- long startTime;
-
- void run()
- {
- startTime = System.currentTimeMillis();
- xcommand_t callback = new xcommand_t() {
- public void execute() {
- updateScreen();
- }
- };
- while (true)
- {
- re.updateScreen(callback);
- KBD.Update();
- Cbuf.Execute();
- }
- }
-
- int currentState = 0;
-
- void updateScreen()
- {
- re.BeginFrame(0.0f);
-
- switch (currentState)
- {
- case 0 :
- re.DrawStretchPic(0, 0, viddef.width, viddef.height, "conback");
- re.DrawPic(viddef.width / 2 - 50, viddef.height / 2, "loading");
- currentState = 1;
- break;
- case 1 :
- // register the map
- re.SetSky("space1", 0, new float[]{ 0, 0, 0 });
- re.BeginRegistration("base1");
- re.EndRegistration();
- currentState = 2;
- //break;
- default :
- if (framecount % 500 == 0)
- {
- long time = System.currentTimeMillis();
- fps = 500000.0f / (time - start);
- start = time;
- }
- String text = fps + " fps";
-
- testMap();
-
- drawString(10, viddef.height - 16, text);
- }
-
- re.EndFrame();
- framecount++;
- }
-
- // ===================================================================
-
-
- static final int FORWARD = 2;
- static final int FORWARD_MASK = ~FORWARD;
- static final int BACKWARD = 4;
- static final int BACKWARD_MASK = ~BACKWARD;
- static final int LEFT = 8;
- static final int LEFT_MASK = ~LEFT;
- static final int RIGHT = 16;
- static final int RIGHT_MASK = ~RIGHT;
-
-
- int movePlayer = 0;
-
- // forward
- xcommand_t forward_down = new xcommand_t() {
- public void execute() {
- movePlayer |= FORWARD;
- movePlayer &= BACKWARD_MASK;
- }
- };
- xcommand_t forward_up = new xcommand_t() {
- public void execute() {
- movePlayer &= FORWARD_MASK;
- }
- };
- // backward
- xcommand_t backward_down = new xcommand_t() {
- public void execute() {
- movePlayer |= BACKWARD;
- movePlayer &= FORWARD_MASK;
- }
- };
- xcommand_t backward_up = new xcommand_t() {
- public void execute() {
- movePlayer &= BACKWARD_MASK;
- }
- };
- // left
- xcommand_t left_down = new xcommand_t() {
- public void execute() {
- movePlayer |= LEFT;
- movePlayer &= RIGHT_MASK;
- }
- };
- xcommand_t left_up = new xcommand_t() {
- public void execute() {
- movePlayer &= LEFT_MASK;
- }
- };
- // right
- xcommand_t right_down = new xcommand_t() {
- public void execute() {
- movePlayer |= RIGHT;
- movePlayer &= LEFT_MASK;
- }
- };
- xcommand_t right_up = new xcommand_t() {
- public void execute() {
- movePlayer &= RIGHT_MASK;
- }
- };
-
- private float yaw = 0;
-
- private float fov_x = 90;
-
- private refdef_t refdef;
-
- private entity_t ent;
-
- float[] vpn = {0, 0, 0};
- float[] vright = {0, 0, 0};
- float[] vup = {0, 0, 0};
-
- private void testMap()
- {
-
- if ( refdef == null ) {
- refdef = new refdef_t();
-
- refdef.x = 0;
- refdef.y = 0;
- refdef.width = viddef.width;
- refdef.height = viddef.height;
- refdef.fov_x = (Globals.fov == null) ? this.fov_x : Globals.fov.value;
- refdef.fov_x = this.fov_x;
- refdef.fov_y = Math3D.CalcFov(refdef.fov_x, refdef.width, refdef.height);
- refdef.vieworg = new float[] {140, -140, 50};
- refdef.viewangles = new float[] {0, 0, 0};
-
- refdef.blend = new float[] { 0.0f, 0.0f, 0.0f, 0.0f };
-
- refdef.areabits = null; // draw all
-// refdef.areabits = new byte[Defines.MAX_MAP_AREAS / 8];
-// Arrays.fill(refdef.areabits, (byte) 0xFF);
-
- // load a monster
- ent = new entity_t();
-
- model_t weapon = re.RegisterModel("models/monsters/soldier/tris.md2");
- image_t weaponSkin = re.RegisterSkin("models/monsters/soldier/skin.pcx");
-
- ent.model = weapon;
- ent.skin = weaponSkin;
- ent.origin = new float[] { -60, 80, 25 };
- Math3D.VectorCopy(ent.origin, ent.oldorigin);
- ent.angles = new float[] { 0, 300, 0 };
-
- refdef.num_entities = 1;
- refdef.entities = new entity_t[] {ent};
-
- lightstyle_t light = new lightstyle_t();
- light.rgb = new float[] {1.0f, 1.0f, 1.0f};
- light.white = 3.0f;
-
- refdef.lightstyles = new lightstyle_t[Defines.MAX_LIGHTSTYLES];
- for (int i = 0; i < Defines.MAX_LIGHTSTYLES; i++) {
- refdef.lightstyles[i] = new lightstyle_t();
- refdef.lightstyles[i].rgb = new float[] {1.0f, 1.0f, 1.0f};
- refdef.lightstyles[i].white = 3.0f; // r + g + b
- }
-
- refdef.viewangles[1] = 130;
- // set the start time
- refdef.time = time() * 0.001f;
- }
-
- refdef.viewangles[0] += KBD.my * 0.1f;
- refdef.viewangles[1] -= KBD.mx * 0.1f; // 90 + 180 * (float)Math.sin(time() * 0.0001f);
-
- float dt = time() * 0.001f - refdef.time;
-
- if (movePlayer != 0) {
-
- float velocity = 150f * dt;
- Math3D.AngleVectors(refdef.viewangles, vpn, vright, vup);
-
- // forward
- if ((movePlayer & FORWARD_MASK) != 0)
- Math3D.VectorMA(refdef.vieworg, -velocity, vpn, refdef.vieworg);
- // backward
- if ((movePlayer & BACKWARD_MASK) != 0)
- Math3D.VectorMA(refdef.vieworg, velocity, vpn, refdef.vieworg);
- // left
- if ((movePlayer & LEFT_MASK) != 0)
- Math3D.VectorMA(refdef.vieworg, velocity, vright, refdef.vieworg);
- // right
- if ((movePlayer & RIGHT_MASK) != 0)
- Math3D.VectorMA(refdef.vieworg, -velocity, vright, refdef.vieworg);
-
- // wichtig da aufloesung 1/8
- // --> ebenen schneiden nie genau die sicht
- refdef.vieworg[0] += 1.0f / 16;
- refdef.vieworg[1] += 1.0f / 16;
- refdef.vieworg[2] += 1.0f / 16;
- }
-
- refdef.time = time() * 0.001f;
-
- // particle init
- particles.clear();
-
- // check the enemy distance
- float[] diff = {0, 0, 0};
- Math3D.VectorSubtract( refdef.vieworg, ent.origin, diff);
-
- if (Math3D.VectorLength(diff) < 250 && active_particles.size() == 0) {
- RailTrail(ent.origin, refdef.vieworg);
- } else {
- // monster and partice animation
- if (active_particles.size() > 0) {
- // monster
- ent.frame = (int)((time() * 0.013f) % 15);
- // monster look at you :-)
- Math3D.VectorNormalize(diff);
- Math3D.vectoangles(diff, ent.angles);
-
- // particles
- animateParticles();
-
- particle_t[] tmp = new particle_t[particles.size()];
- particles.toArray(tmp);
-
- refdef.particles = tmp;
- refdef.num_particles = tmp.length;
- }
- else {
- ent.frame = 0;
- refdef.num_particles = 0;
- }
- }
-
- re.RenderFrame(refdef);
- }
-
- private Vector particles = new Vector(1024); // = new particle_t[20];
- private LinkedList active_particles = new LinkedList();
- private boolean explode = false;
- private float[] target;
-
- private boolean initParticles = true;
-
- private void animateParticles()
- {
- cparticle_t p;
- float alpha;
- float time, time2;
- float[] org = {0, 0, 0};
- int color;
- particle_t particle;
-
- time = 0.0f;
-
- for (Iterator it = active_particles.iterator(); it.hasNext();)
- {
- p = (cparticle_t) it.next();
-
- // PMM - added INSTANT_PARTICLE handling for heat beam
- if (p.alphavel != INSTANT_PARTICLE)
- {
- time = (time() - p.time) * 0.001f;
- alpha = p.alpha + time*p.alphavel;
- if (alpha <= 0)
- { // faded out
- it.remove();
- continue;
- }
- }
- else
- {
- alpha = p.alpha;
- }
-
- if (alpha > 1.0)
- alpha = 1;
- color = (int)p.color;
-
- time2 = time*time;
-
- org[0] = p.org[0] + p.vel[0]*time + p.accel[0]*time2;
- org[1] = p.org[1] + p.vel[1]*time + p.accel[1]*time2;
- org[2] = p.org[2] + p.vel[2]*time + p.accel[2]*time2;
-
- particle = new particle_t();
- particle.alpha = alpha;
- Math3D.VectorCopy(org, particle.origin);
- particle.color = color;
-
- particles.add(particle);
-
- // PMM
- if (p.alphavel == INSTANT_PARTICLE)
- {
- p.alphavel = 0.0f;
- p.alpha = 0.0f;
- }
- }
- }
-
- private void RailTrail(float[] start, float[] end)
- {
- float[] move = {0, 0, 0};
- float[] vec = {0, 0, 0};
- float len;
- int j;
- cparticle_t p;
- float dec;
- float[] right = {0, 0, 0};
- float[] up = {0, 0, 0};
- int i;
- float d, c, s;
- float[] dir = {0, 0, 0};
-
- Math3D.VectorCopy (start, move);
- Math3D.VectorSubtract (end, start, vec);
- len = Math3D.VectorNormalize(vec);
-
- Math3D.MakeNormalVectors(vec, right, up);
-
- for (i=0 ; i<len ; i++)
- {
-
- p = new cparticle_t();
- p.time = time();
- Math3D.VectorClear (p.accel);
-
- d = i * 0.1f;
- c = (float)Math.cos(d);
- s = (float)Math.sin(d);
-
- Math3D.VectorScale (right, c, dir);
- Math3D.VectorMA (dir, s, up, dir);
-
- p.alpha = 1.0f;
- p.alphavel = -1.0f / (1 + Lib.frand() * 0.2f);
- p.color = 0x74 + (Lib.rand() & 7);
- for (j=0 ; j<3 ; j++)
- {
- p.org[j] = move[j] + dir[j]*3;
- p.vel[j] = dir[j]*6;
- }
-
- Math3D.VectorAdd (move, vec, move);
-
- active_particles.add(p);
- }
-
- dec = 0.75f;
- Math3D.VectorScale (vec, dec, vec);
- Math3D.VectorCopy (start, move);
-
- while (len > 0)
- {
- len -= dec;
-
- p = new cparticle_t();
-
- p.time = time();
- Math3D.VectorClear (p.accel);
-
- p.alpha = 1.0f;
- p.alphavel = -1.0f / (0.6f + Lib.frand() * 0.2f);
- p.color = 0x0 + Lib.rand()&15;
-
- for (j=0 ; j<3 ; j++)
- {
- p.org[j] = move[j] + Lib.crand()*3;
- p.vel[j] = Lib.crand()*3;
- p.accel[j] = 0;
- }
-
- Math3D.VectorAdd (move, vec, move);
- active_particles.add(p);
- }
- }
-
- private void drawString(int x, int y, String text)
- {
- for (int i = 0; i < text.length(); i++)
- {
- re.DrawChar(x + 8 * i, y, (int) text.charAt(i));
- }
- }
-
- private final int time()
- {
- return (int) (System.currentTimeMillis() - startTime);
- }
-
- static xcommand_t togglemouse = new xcommand_t() {
- public void execute() {
- IN.toggleMouse();
- }
- };
-}