ID:2017585
 
Resolved
Gliding did not work correctly in some cases when client.eye was not matched to the player's mob.
BYOND Version:509.1318
Operating System:Windows 10 Pro 64-bit
Web Browser:Chrome 47.0.2526.106
Applies to:Webclient
Status: Resolved (510.1327)

This issue has been resolved.
Descriptive Problem Summary:

When setting the player's client.eye value to something other than its own mob (at least, I THINK this is the issue), movement appears to trigger some kind of weird jittering... wow, this is extremely hard to put into words. This is a problem exclusively in the webclient though; I've tested it in DS and it works as intended.

Webclient:
http://i.imgur.com/49W61O1.gifv

DreamSeeker:
http://i.imgur.com/xUtgeJy.gifv



Notice that when the player moves in the webclient demonstration the perspective seems to jump (perhaps the client is trying to glide when it shouldn't?) in the direction the player is moving. I can provide code if necessary, I won't for now because it's quite a lot of code.
// Panning.dm
// This contains the script that allows the user to pan across the map
// to a desired location.

mob
attackable
player
var
obj/object

proc
PanTo(var/obj/dest, var/speed = src.step_size / 2)
if(!dest)
if(src.object)
walk(src.object, 0)
del(src.object)
src.object = null
if(!isnum(curSquadMember))
src.client.eye = curSquadMember
else
src.client.eye = src.client.mob
src.frozen = 0
return

if(!src.object)
src.object = new
src.object.loc = src.loc
src.client.eye = src.object
src.frozen = 1

walk_towards(src.object, dest, 0, speed)


I use this code in my project and I haven't seen any problems in the webclient. It is called like so:

spawn()
while(!loaded)
spawn()
src.PanTo(locate(rand(30,70), rand(30,70), 1))
sleep(25)


Perhaps it has something to do with how you're smoothing the transition from one location to the next?
Bump!
I'm trying to look into this, but I think I need a reliable way to reproduce it. Can you describe how the eye is set and what it's doing?
Apologies for the late response. I'm not really setting the eye any special way. It looks something like this:

camera/proc/seteye(atom/target)
// The following are set beforehand:
client.eye.perspective = EYE_PERSPECTIVE | EDGE_PERSPECTIVE

// use client.pixel_x and client.pixel_y to ease transitions to and from other atoms.
...
...

// once the easing is done:
client.eye = target
client.pixel_y = 16
client.pixel_x = 16


I don't think the actual easing has anything to do with it, but I'll paste the code (it's a lot!) if necessary.
Any info on this?
Not really. I'm gonna need a real demo to figure this out.
In response to Lummox JR
I'll try to whip up something tomorrow, then!
Okay, cool. I've been working on webclient stuff to support PLANE_MASTER, and it's mostly there at the moment. Hoping there are no performance regressions but that'd be good to know once 1326 is ready.
Okay, should have something at least by tonight, no later than tomorrow.
Okay, I think this should demonstrate the issue pretty clearly. Make sure to run it on both DS and the webclient!

http://www.pixel-realms.net/sadboys/ClientEye.rar

Click on the black circles to trigger a camera transition.
Thanks. 1326 is out already, so you might want to just take a quick look at performance on that. I don't expect any serious changes either way, just want to confirm it's still good.
Lummox JR resolved issue with message:
Gliding did not work correctly in some cases when client.eye was not matched to the player's mob.
Man this one was a nasty fix, but I finally figured it out.