Skip to content

Commit

Permalink
Lots of stuff
Browse files Browse the repository at this point in the history
  • Loading branch information
kennyvv committed Dec 30, 2021
1 parent 1e14a3a commit 2aea1e2
Show file tree
Hide file tree
Showing 52 changed files with 1,216 additions and 815 deletions.
15 changes: 13 additions & 2 deletions src/Alex.Common/Utils/ConnectionInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,19 @@ public class ConnectionInfo

public long PacketsIn;
public long PacketsOut;

public long PacketLoss => (100 / (PacketsOut + PacketsIn)) * (Nak + NakSent);

public long PacketLoss
{
get
{
var packets = PacketsIn + PacketsOut;

if (packets == 0)
return 0;

return (100 / packets) * (Nak + NakSent);
}
}

public NetworkState State { get; }
public ConnectionInfo(DateTime connectionOpenedTime, long latency, long nack, long ack, long acksSent, long fails, long resends, long bytesIn, long bytesOut, long packetsIn, long packetsOut, NetworkState state = NetworkState.Ok)
Expand Down
16 changes: 16 additions & 0 deletions src/Alex.Common/Utils/TextureUtils.cs
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,9 @@ private static uint[] GetPixelData<TImageFormat>(this Image<TImageFormat> image)

public static void BitmapToTexture2DAsync<TImageFormat>(object owner, GraphicsDevice device, Image<TImageFormat> image, TextureCreated onTextureCreated) where TImageFormat : unmanaged, IPixel<TImageFormat>
{
if (image == null)
return;

Texture2D Execute()
{
var r = new Texture2D(
Expand Down Expand Up @@ -136,6 +139,19 @@ public static Texture2D ImageToTexture2D(object owner, GraphicsDevice device, by
return BitmapToTexture2D(owner, device, image);
}
}

public static void ImageToTexture2DAsync(object owner, GraphicsDevice device, byte[] bmp, TextureCreated textureCreated)
{
//using (MemoryStream s = new MemoryStream(bmp))
{
var image = Image.Load(bmp);
BitmapToTexture2DAsync(owner, device, image, (t) =>
{
image.Dispose();
textureCreated?.Invoke(t);
});
}
}

public static Texture2D Slice<TImageFormat>(this Image<TImageFormat> bmp, GraphicsDevice graphics, Rectangle region) where TImageFormat : unmanaged, IPixel<TImageFormat>
{
Expand Down
4 changes: 2 additions & 2 deletions src/Alex.Common/World/TickManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,14 @@ public class TickManager : IDisposable
private long _tick = 0;
public long CurrentTick => _tick;

private Timer TickTimer { get; set; }
private HighPrecisionTimer TickTimer { get; set; }
public double TicksPerSecond { get; set; }

public TickManager()
{
ScheduledTicks = new ConcurrentDictionary<TickedItem, long>();
TickedItems = new LinkedList<TickedEntry>();
TickTimer = new Timer(DoTick, null, 0, 50);
TickTimer = new HighPrecisionTimer(50, DoTick, false);
}

private Stopwatch _sw = Stopwatch.StartNew();
Expand Down
2 changes: 1 addition & 1 deletion src/Alex.Networking.Java/NetConnection.cs
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ public bool Initialize(CancellationToken cancellationToken)
_readThread.Start();

var blockOptions =
new ExecutionDataflowBlockOptions { CancellationToken = CancellationToken.Token, EnsureOrdered = true };
new ExecutionDataflowBlockOptions { CancellationToken = CancellationToken.Token, EnsureOrdered = true, MaxDegreeOfParallelism = 1};
_packetQueue = new BufferBlock<Packet>(blockOptions);

var sendPacketBlock = new ActionBlock<Packet>(WriteNetwork, blockOptions);
Expand Down
2 changes: 2 additions & 0 deletions src/Alex/Alex.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,8 @@
<Compile Remove="Graphics\Models\ModelExtra.cs" />
<Compile Remove="Graphics\Models\AnimatedModel.cs" />
<Compile Remove="Graphics\Models\Bone.cs" />
<None Remove="Items\Resources\r16_to_current_item_map.json" />
<EmbeddedResource Include="Items\Resources\r16_to_current_item_map.json" />
</ItemGroup>

<ItemGroup>
Expand Down
7 changes: 7 additions & 0 deletions src/Alex/Entities/BlockEntities/BlockEntity.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,13 @@ public BlockEntity(World level) : base(level)
//base.Movement.InterpolatedMovement = false;
}

/// <inheritdoc />
public override void Update(IUpdateArgs args)
{
return;
base.Update(args);
}

public virtual bool SetBlock(Block block)
{
var oldValue = _block;
Expand Down
39 changes: 31 additions & 8 deletions src/Alex/Entities/Entity.cs
Original file line number Diff line number Diff line change
Expand Up @@ -485,14 +485,11 @@ private void CheckHeldItem()

if (renderer == null)
{
//Log.Warn($"No renderer for item: {inHand.Name}");
return;
}

if (renderer != ItemRenderer)
{
// renderer = renderer.CloneItemRenderer();

var newRenderer = renderer.CloneItemRenderer();
ItemRenderer = newRenderer;
}
Expand Down Expand Up @@ -527,12 +524,15 @@ protected virtual ModelBone GetPrimaryArm()

protected virtual void UpdateItemPosition(IItemRenderer oldValue, IItemRenderer renderer)
{
ModelBone arm = GetPrimaryArm();
//ModelBone arm = GetPrimaryArm();

// if (oldValue != renderer)
if (oldValue != renderer)
{
if (oldValue != null)
arm?.Remove(oldValue);
{
//oldValue.Dispose();
//arm?.Remove(oldValue);
}
}

if (renderer?.Model == null)
Expand All @@ -542,7 +542,7 @@ protected virtual void UpdateItemPosition(IItemRenderer oldValue, IItemRenderer

// if (oldValue != renderer)
{
arm?.AddChild(renderer);
// arm?.AddChild(renderer);
}
}

Expand Down Expand Up @@ -1238,8 +1238,31 @@ public virtual int Render(IRenderArgs renderArgs, bool useCulling)
int renderCount = 0;
var renderer = ModelRenderer;

var worldMatrix = Matrix.CreateScale((1f / 16f) * (Scale * ModelScale))
* RenderLocation.CalculateWorldMatrix();

if (renderer != null)
renderCount += renderer.Render(renderArgs, Matrix.CreateScale((1f / 16f) * (Scale * ModelScale)) * RenderLocation.CalculateWorldMatrix());
{
renderCount += renderer.Render(renderArgs, worldMatrix);

//Hack to render held items
if (_itemRenderer != null)
{
var primaryArm = GetPrimaryArm();

if (primaryArm != null)
{
var bones = renderer.Model.Bones.ImmutableArray;
Matrix[] matrices = new Matrix[bones.Length];
Graphics.Models.Model.CopyAbsoluteBoneTransformsTo(bones, matrices);

if (primaryArm.Index >= 0 && primaryArm.Index < matrices.Length)
{
_itemRenderer?.Render(renderArgs, matrices[primaryArm.Index] * worldMatrix);
}
}
}
}

return renderCount;
}
Expand Down
20 changes: 8 additions & 12 deletions src/Alex/Entities/EntityFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -663,12 +663,11 @@ public static Entity Create(ResourceLocation entityType, World world, bool initR
entity = new Entity(world);
}

ThreadPool.QueueUserWorkItem(
(o) =>
{
if (!(o is Entity e))
return;

//World.BackgroundWorker.Enqueue(
// () =>
// {
var e = entity;

if (initRenderController)
{
e.AnimationController.UpdateEntityDefinition(resourcePack, resourcePack, description);
Expand All @@ -689,14 +688,12 @@ public static Entity Create(ResourceLocation entityType, World world, bool initR
//Texture2D texture2D = null;
//if (renderer == null || texture2D == null)
{
if (description.Geometry.TryGetValue("default", out var defaultGeometry)
&& ModelFactory.TryGetModel(defaultGeometry, out var model) && model != null)
{

var textures = description.Textures;
string texture;

if (!(textures.TryGetValue("default", out texture) || textures.TryGetValue(
description.Identifier, out texture)))
description.Identifier, out texture)))
{
texture = textures.FirstOrDefault().Value;
}
Expand All @@ -716,9 +713,8 @@ public static Entity Create(ResourceLocation entityType, World world, bool initR
//{
// entity.Texture = texture2D;
//}
}
}
}, entity);
// });
}

return entity;
Expand Down
9 changes: 8 additions & 1 deletion src/Alex/Entities/ItemBaseEntity.cs
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public virtual void SetItem(Item item)
if (item.Renderer != null)
{
CanRender = true;
ItemRenderer = item.Renderer;
ItemRenderer = item.Renderer.CloneItemRenderer();
ItemRenderer.DisplayPosition = DisplayPosition.Ground;

//Scale = (float) (item is ItemBlock ? (1f / (1f / Width)) : (1f / 32f));
Expand Down Expand Up @@ -76,5 +76,12 @@ public override int Render(IRenderArgs renderArgs, bool useCulling)
* Matrix.CreateRotationY(MathHelper.ToRadians(KnownPosition.Yaw))
* Matrix.CreateTranslation(KnownPosition.ToVector3()));
}

/// <inheritdoc />
protected override void OnDispose()
{
base.OnDispose();
ItemRenderer?.Dispose();
}
}
}
18 changes: 15 additions & 3 deletions src/Alex/Entities/Player.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,9 @@
using NLog;
using NLog.Fluent;
using RocketUI.Input;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Formats.Png;
using SixLabors.ImageSharp.PixelFormats;
using Biome = Alex.Worlds.Biome;
using BlockCoordinates = Alex.Common.Utils.Vectors.BlockCoordinates;
using BoundingBox = Microsoft.Xna.Framework.BoundingBox;
Expand Down Expand Up @@ -500,16 +503,25 @@ private void StealSkin(Entity sourceEntity)

if (skin.Data == null || skin.Data.Length == 0)
{
skin = skin.UpdateTexture(texture);
Image<Rgba32> skinTexture;
using (MemoryStream ms = new MemoryStream())
{
texture.SaveAsPng(ms, texture.Width, texture.Height);
ms.Position = 0;

skinTexture = Image.Load(ms, new PngDecoder()).CloneAs<Rgba32>();
}

skin = skin.UpdateTexture(skinTexture);
}

var packet = McpePlayerSkin.CreateObject();
packet.skin = skin;

packet.uuid = UUID;
packet.isVerified = true;
packet.isVerified = skin.IsVerified;
packet.skinName = skin.SkinId;
packet.oldSkinName = "";
packet.oldSkinName = Skin?.SkinId ?? "";

bc.SendPacket(packet);

Expand Down
Loading

0 comments on commit 2aea1e2

Please sign in to comment.