// 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(); } } }