/*
* 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.
*
*/
/* Modifications
Copyright 2003-2004 Bytonic Software
Copyright 2010 Google Inc.
*/
package com.googlecode.gwtquake.shared.game;
import java.util.Arrays;
import com.googlecode.gwtquake.shared.common.Constants;
import com.googlecode.gwtquake.shared.util.Math3D;
public class PlayerMove {
public static class TraceAdapter {
// callbacks to test the world
public Trace trace(float[] start, float[] mins, float[] maxs,
float[] end) {
return null;
}
}
public static class PointContentsAdapter {
// callbacks to test the world
public int pointcontents(float[] point) {
return 0;
}
}
// state (in / out)
public PlayerMoveState s = new PlayerMoveState();
// command (in)
public UserCommand cmd = new UserCommand();
public boolean snapinitial; // if s has been changed outside pmove
// results (out)
public int numtouch;
public Entity touchents[] = new Entity[Constants.MAXTOUCH];
public float[] viewangles = { 0, 0, 0 }; // clamped
public float viewheight;
public float[] mins = { 0, 0, 0 }, maxs = { 0, 0, 0 }; // bounding box size
public Entity groundentity;
public int watertype;
public int waterlevel;
public TraceAdapter trace;
public PointContentsAdapter pointcontents;
// pmove->pm_flags
public final static int PMF_DUCKED = 1;
public final static int PMF_JUMP_HELD = 2;
public final static int PMF_ON_GROUND = 4;
public final static int PMF_TIME_WATERJUMP = 8; // pm_time is waterjump
public final static int PMF_TIME_LAND = 16; // pm_time is time before rejump
public final static int PMF_TIME_TELEPORT = 32; // pm_time is non-moving
// time
public final static int PMF_NO_PREDICTION = 64; // temporarily disables
// prediction (used for
// grappling hook)
public void clear() {
groundentity = null;
waterlevel = watertype = 0;
trace = null;
pointcontents = null;
Math3D.VectorClear(mins);
Math3D.VectorClear(maxs);
viewheight = 0;
Math3D.VectorClear(viewangles);
Arrays.fill(touchents, null);
numtouch = 0;
snapinitial = false;
cmd.clear();
s.clear();
}
}