您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 

90 行
2.7 KiB

using Unity.Collections;
using Unity.Entities;
using UnityEngine;
[DisableAutoCreation]
public class ApplyPresentationStateToItems : BaseComponentSystem
{
struct ItemGroup
{
public EntityArray entities;
public ComponentArray<CharacterItem> items;
public ComponentArray<AnimStateController> animStateCtrls;
}
struct Item1PGroup
{
public EntityArray entities;
public ComponentArray<CharacterItem1P> item1Ps;
public ComponentArray<AnimStateController> animStateCtrls;
}
[Inject]
ItemGroup m_itemGroup;
[Inject]
Item1PGroup m_item1PGroup;
public ApplyPresentationStateToItems(GameWorld world) : base(world) {}
protected override void OnUpdate()
{
var deltaTime = m_world.frameDuration;
for (var i = 0; i < m_itemGroup.animStateCtrls.Length; i++)
{
var entity = m_itemGroup.entities[i];
var animStateCtrl = m_itemGroup.animStateCtrls[i];
var item = m_itemGroup.items[i];
var animState = EntityManager.GetComponentData<CharAnimState>(item.character);
EntityManager.SetComponentData(entity, animState);
animStateCtrl.ApplyPresentationState(m_world.worldTime, deltaTime);
}
for (var i = 0; i < m_item1PGroup.animStateCtrls.Length; i++)
{
var entity = m_item1PGroup.entities[i];
var animStateCtrl = m_item1PGroup.animStateCtrls[i];
var item1P = m_item1PGroup.item1Ps[i];
if (!EntityManager.Exists(item1P.item))
continue;
var item = EntityManager.GetComponentObject<CharacterItem>(item1P.item);
var animState = EntityManager.GetComponentData<CharAnimState>(item.character);
EntityManager.SetComponentData(entity, animState);
animStateCtrl.ApplyPresentationState( m_world.worldTime, deltaTime);
}
}
}
[DisableAutoCreation]
public class CharacterItemLateUpdate : BaseComponentSystem<CharacterItem>
{
public CharacterItemLateUpdate(GameWorld world) : base(world)
{
ExtraComponentRequirements = new[] {ComponentType.Subtractive<CharacterItem1P>()};
}
protected override void Update(Entity entity, CharacterItem item)
{
if (!EntityManager.Exists(item.character))
return;
var character = EntityManager.GetComponentObject<Character>(item.character);
item.SetVisible(character.isVisible);
if (!item.visible)
return;
item.transform.position = character.itemAttachBone.position;
item.transform.rotation = character.itemAttachBone.rotation;
}
}