You are basically correct. As long as you ask for GetLocalOrigin/GetAbsOrigin for the non-local players after the SimulateServerEntities does interpolation, then you'll get back the interpolated positions. The player will have been interpolated already at that point. And you are also correct that everything on the client is in the past wrt the server, and interpolation pushes it a slight bit further in the past to deal with smoothing stuff out.
-----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Janek Sent: Wednesday, November 14, 2007 11:40 AM To: [email protected] Subject: [hlcoders] Client side players's positions Shame on me. I forgot to put a topic in my previous mail. Please do not answer to it. Yahn, What I want is the exact position of players from a local client point of view : taking care of interpolation. I mean : - server tickcount = 100 --> player1 is in (0, 0, 0) --> player2 is in (100,0, 0) - while server tickcount is 100, maybe it is only 95 for player1. If I go to player1 client side and ask for GetLocalOrigin of all players. Maybe I will see: --> player1 is in (0,0,0) coz it is local player and is using prediction --> player2 is in (50,0,0) assuming player is moving only in x axis with 10 units/tick velocity But in reality, player1 is not seeing player2 in (50,0,0) coz I assume he has a cl_interp equal to 2 ticks interval. If so he is seeing player2 in (30, 0, 0). Am I right or not ? If not, where am I wrong ? If I'm right, which function can I use to have (30,0,0) as a return value for player2 ? and when ? Do you mean I must call GetLocalOrigin() in RenderStart to have interpolated position ? [EMAIL PROTECTED] --- Message from Yahn Bernier hereafter ---- Interpolate gets called with gpGlobals->curtime, but the IInterpolatedVars = each define their "interpolation amount" (see the GetInterpolationAmount co= de) since sometimes interp is just 1 tick in single player vs. cl_interp in= multiplayer. If you always want the last networked position, you can ask for GetNetworkO= rigin, otherwise, you'll get either the last networked if you ask during Po= stDataUpdate/networking, or you'll get the interpolated position if you ask= during rendering. Yahn -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] vesoftware.com] On Behalf Of [EMAIL PROTECTED] Sent: Wednesday, November 14, 2007 10:49 AM To: [email protected] Subject: Re: [hlcoders] Client side players's positions For my purposes I've used pPlayer->EyePosition() when they're walking, and I use the vehicles' GetNetworkOrigin() when they're driving or being driven. Not sure if this is sufficient for your purposes. > -- > [ Picked text/plain from multipart/alternative ] > Hi, > > I would like to know how to get where players are located client side --> > I mean from a player point of view. > Using pPlayer->GetLocalOrigin() for non-local players will return the las= t > position sent by server. > As there is interpolation (cl_interp), locations of non-local players tha= t > a local player is seeing is not the one returned by > pPlayer->GetLocalOrigin(). > I went into OnRenderStart, then in InterpolateServerentities, > ProcessInterpolatedList, Interpolate... but I really don't understand how > it works. For example Interpolate is called with gpGlobals->curtime which > is surprising. I was thinking it will be gpGlobals->curtime - > cl_interp.GetFloat(). > > I spent few hours on that and the question remains the same : how can I > get locations of non-local players client side ? I'm sure Yahn or Mike ca= n > answer this question. > > Thank you in advance for your help. _______________________________________________ To unsubscribe, edit your list preferences, or view the list archives, please visit: http://list.valvesoftware.com/mailman/listinfo/hlcoders _______________________________________________ To unsubscribe, edit your list preferences, or view the list archives, please visit: http://list.valvesoftware.com/mailman/listinfo/hlcoders

