123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- //------------------------------------------------------------
- // Game Framework
- // Copyright © 2013-2021 Jiang Yin. All rights reserved.
- // Homepage: https://gameframework.cn/
- // Feedback: mailto:ellan@gameframework.cn
- //------------------------------------------------------------
- using GameFramework.DataTable;
- using System;
- using UnityGameFramework.Runtime;
- namespace MetaClient
- {
- public static class EntityExtension
- {
- // 关于 EntityId 的约定:
- // 0 为无效
- // 正值用于和服务器通信的实体(如玩家角色、NPC、怪等,服务器只产生正值)
- // 负值用于本地生成的临时实体(如特效、FakeObject等)
- private static int s_SerialId = 0;
- public static Entity GetGameEntity(this EntityComponent entityComponent, int entityId)
- {
- UnityGameFramework.Runtime.Entity entity = entityComponent.GetEntity(entityId);
- if (entity == null)
- {
- return null;
- }
- return (Entity)entity.Logic;
- }
- public static void HideEntity(this EntityComponent entityComponent, Entity entity)
- {
- entityComponent.HideEntity(entity.Entity);
- }
- public static void AttachEntity(this EntityComponent entityComponent, Entity entity, int ownerId, string parentTransformPath = null, object userData = null)
- {
- entityComponent.AttachEntity(entity.Entity, ownerId, parentTransformPath, userData);
- }
- public static void ShowMyAircraft(this EntityComponent entityComponent, MyAircraftData data)
- {
- entityComponent.ShowEntity(typeof(MyAircraft), "Aircraft", Constant.AssetPriority.MyAircraftAsset, data);
- }
- public static void ShowAircraft(this EntityComponent entityComponent, AircraftData data)
- {
- entityComponent.ShowEntity(typeof(Aircraft), "Aircraft", Constant.AssetPriority.AircraftAsset, data);
- }
- public static void ShowThruster(this EntityComponent entityComponent, ThrusterData data)
- {
- entityComponent.ShowEntity(typeof(Thruster), "Thruster", Constant.AssetPriority.ThrusterAsset, data);
- }
- public static void ShowWeapon(this EntityComponent entityComponent, WeaponData data)
- {
- entityComponent.ShowEntity(typeof(Weapon), "Weapon", Constant.AssetPriority.WeaponAsset, data);
- }
- public static void ShowArmor(this EntityComponent entityComponent, ArmorData data)
- {
- entityComponent.ShowEntity(typeof(Armor), "Armor", Constant.AssetPriority.ArmorAsset, data);
- }
- public static void ShowBullet(this EntityComponent entityCompoennt, BulletData data)
- {
- entityCompoennt.ShowEntity(typeof(Bullet), "Bullet", Constant.AssetPriority.BulletAsset, data);
- }
- public static void ShowAsteroid(this EntityComponent entityCompoennt, AsteroidData data)
- {
- entityCompoennt.ShowEntity(typeof(Asteroid), "Asteroid", Constant.AssetPriority.AsteroiAsset, data);
- }
- public static void ShowEffect(this EntityComponent entityComponent, EffectData data)
- {
- entityComponent.ShowEntity(typeof(Effect), "Effect", Constant.AssetPriority.EffectAsset, data);
- }
- private static void ShowEntity(this EntityComponent entityComponent, Type logicType, string entityGroup, int priority, EntityData data)
- {
- if (data == null)
- {
- Log.Warning("Data is invalid.");
- return;
- }
- IDataTable<DREntity> dtEntity = GameEntry.DataTable.GetDataTable<DREntity>();
- DREntity drEntity = dtEntity.GetDataRow(data.TypeId);
- if (drEntity == null)
- {
- Log.Warning("Can not load entity id '{0}' from data table.", data.TypeId.ToString());
- return;
- }
- entityComponent.ShowEntity(data.Id, logicType, AssetUtility.GetEntityAsset(drEntity.AssetName), entityGroup, priority, data);
- }
- public static int GenerateSerialId(this EntityComponent entityComponent)
- {
- return --s_SerialId;
- }
- }
- }
|