2016-11-27 14:47:09 +11:00

46 lines
1.4 KiB
C#

// ClassicalSharp copyright 2014-2016 UnknownShadow200 | Licensed under MIT
using System;
using OpenTK;
namespace ClassicalSharp.Entities {
public sealed class NetPlayer : Player {
InterpolatedComponent interp;
public NetPlayer(string displayName, string skinName, Game game, byte id) : base(game) {
DisplayName = displayName;
SkinName = skinName;
SkinIdentifier = "skin_" + id;
interp = new InterpolatedComponent(game, this);
}
public override void SetLocation(LocationUpdate update, bool interpolate) {
interp.SetLocation(update, interpolate);
}
public override void Tick(double delta) {
CheckSkin();
tickCount++;
interp.UpdateCurrentState();
anim.UpdateAnimState(interp.oldState.pos, interp.newState.pos, delta);
}
bool shouldRender = false;
public override void RenderModel(double deltaTime, float t) {
Position = Vector3.Lerp(interp.oldState.pos, interp.newState.pos, t);
HeadYawDegrees = Utils.LerpAngle(interp.oldState.headYaw, interp.newState.headYaw, t);
YawDegrees = Utils.LerpAngle(interp.oldYaw, interp.newYaw, t);
PitchDegrees = Utils.LerpAngle(interp.oldState.pitch, interp.newState.pitch, t);
anim.GetCurrentAnimState(t);
shouldRender = Model.ShouldRender(this, game.Culling);
if (shouldRender) Model.Render(this);
}
public override void RenderName() {
if (!shouldRender) return;
float dist = Model.RenderDistance(this);
if (dist <= 32 * 32) DrawName();
}
}
}