public static EntityTemplate CreateBaseUnitEntityTemplate(UnitSide side, UnitType type, Coordinates coords, CompressedQuaternion?rotation = null, FixedPointVector3?scale = null, OrderType?order = null, uint?rank = null) { var template = new EntityTemplate(); template.AddComponent(new Position.Snapshot(coords), WorkerUtils.UnityGameLogic); template.AddComponent(new Metadata.Snapshot(metaDic[type]), WorkerUtils.UnityGameLogic); template.AddComponent(new Persistence.Snapshot(), WorkerUtils.UnityGameLogic); template.AddComponent(new PostureRoot.Snapshot() { RootTrans = PostureUtils.ConvertTransform(coords, rotation, scale) }, WorkerUtils.UnityGameLogic); template.AddComponent(new BaseUnitSight.Snapshot(), WorkerUtils.UnityGameLogic); //template.AddComponent(new BaseUnitAction.Snapshot { EnemyPositions = new List<FixedPointVector3>() }, WorkerUtils.UnityGameLogic); template.AddComponent(new BaseUnitStatus.Snapshot(side, type, UnitState.Alive, order == null ? orderDic[type] : order.Value, GetRank(rank, type)), WorkerUtils.UnityGameLogic); template.AddComponent(new BaseUnitTarget.Snapshot().DefaultSnapshot(), WorkerUtils.UnityGameLogic); template.AddComponent(new Launchable.Snapshot(), WorkerUtils.UnityGameLogic); template.AddComponent(new BaseUnitHealth.Snapshot(), WorkerUtils.UnityGameLogic); template.AddComponent(new GunComponent.Snapshot { GunsDic = new Dictionary <int, GunInfo>() }, WorkerUtils.UnityGameLogic); template.AddComponent(new FuelComponent.Snapshot(), WorkerUtils.UnityGameLogic); if (type.BaseType() == UnitBaseType.Moving) { template.AddComponent(new BaseUnitMovement.Snapshot(), WorkerUtils.UnityGameLogic); template.AddComponent(new BaseUnitReviveTimer.Snapshot { IsStart = false, RestTime = 0.0f }, WorkerUtils.UnityGameLogic); } SwitchType(template, type, WorkerUtils.UnityGameLogic); TransformSynchronizationHelper.AddTransformSynchronizationComponents(template, WorkerUtils.UnityGameLogic); template.SetReadAccess(GetReadAttributes(type)); template.SetComponentWriteAccess(EntityAcl.ComponentId, WorkerUtils.UnityGameLogic); return(template); }
public static EntityTemplate CreateBaseUnitEntityTemplate(UnitSide side, Coordinates coords, UnitType type, OrderType?order = null) { var template = new EntityTemplate(); template.AddComponent(new Position.Snapshot(coords), WorkerUtils.UnityGameLogic); template.AddComponent(new Metadata.Snapshot(metaDic[type]), WorkerUtils.UnityGameLogic); template.AddComponent(new Persistence.Snapshot(), WorkerUtils.UnityGameLogic); template.AddComponent(new BaseUnitMovement.Snapshot(), WorkerUtils.UnityGameLogic); template.AddComponent(new BaseUnitAction.Snapshot { EnemyPositions = new List <FixedPointVector3>() }, WorkerUtils.UnityGameLogic); template.AddComponent(new BaseUnitStatus.Snapshot(side, type, UnitState.Alive, order == null ? orderDic[type]: order.Value), WorkerUtils.UnityGameLogic); template.AddComponent(new BaseUnitSight.Snapshot(), WorkerUtils.UnityGameLogic); template.AddComponent(new BaseUnitTarget.Snapshot(), WorkerUtils.UnityGameLogic); template.AddComponent(new Launchable.Snapshot(), WorkerUtils.UnityGameLogic); template.AddComponent(new BaseUnitHealth.Snapshot(), WorkerUtils.UnityGameLogic); template.AddComponent(new GunComponent.Snapshot { GunsDic = new Dictionary <PosturePoint, GunInfo>() }, WorkerUtils.UnityGameLogic); template.AddComponent(new FuelComponent.Snapshot(), WorkerUtils.UnityGameLogic); if (type.BaseType() == UnitBaseType.Moving) { template.AddComponent(new BaseUnitReviveTimer.Snapshot { IsStart = false, RestTime = 0.0f }, WorkerUtils.UnityGameLogic); } SwitchType(template, type, WorkerUtils.UnityGameLogic); TransformSynchronizationHelper.AddTransformSynchronizationComponents(template, WorkerUtils.UnityGameLogic); template.SetReadAccess(WorkerUtils.AllWorkerAttributes.ToArray()); template.SetComponentWriteAccess(EntityAcl.ComponentId, WorkerUtils.UnityGameLogic); return(template); }