This commit is contained in:
CortexCore
2023-06-05 19:57:17 +08:00
parent f05e28ec58
commit 7f2fea821c
6195 changed files with 489001 additions and 636 deletions

View File

@@ -0,0 +1,42 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using UnityEngine.AddressableAssets;
namespace BITKit.Entities
{
/// <summary>Entity接口用于复杂实体</summary>
public interface IEntity : IGenericEvent<string>, IDatabase, IProcessor, ICallback
{
public static IEntity LocalPlayer;
public static Action<IEntity> OnSpawnLocalPlayer;
IEntityComponent[] entityComponents { get; set; }
int Id { get; set; }
string AddressablePath => nameof(IEntity);
}
public class IEntityReader : NetMessageReader<IEntity>
{
public override IEntity ReadBinary(BinaryReader reader)
{
var id = reader.ReadInt32();
var path = reader.ReadString();
var entity = EntitiesManager.GetOrAdd(id, _id => Create(id, path));
return entity;
}
public override void WriteBinary(BinaryWriter writer, IEntity value)
{
writer.Write(value.Id);
writer.Write(value.AddressablePath);
}
IEntity Create(int id, string path)
{
var entity = Addressables
.LoadAssetAsync<GameObject>(path)
.WaitForCompletion()
.GetComponent<IEntity>();
entity.Id = id;
return entity;
}
}
}