您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
39 行
1.7 KiB
39 行
1.7 KiB
using Unity.Entities;
|
|
using Unity.Transforms;
|
|
using UnityEngine;
|
|
|
|
[UpdateInGroup(typeof(GameObjectBeforeConversionGroup))]
|
|
class TransformConversion : GameObjectConversionSystem
|
|
{
|
|
protected override void OnUpdate()
|
|
{
|
|
Entities.ForEach((Transform transform) =>
|
|
{
|
|
var entity = GetPrimaryEntity(transform);
|
|
|
|
DstEntityManager.AddComponentData(entity, new LocalToWorld { Value = transform.localToWorldMatrix});
|
|
if (DstEntityManager.HasComponent<Static>(entity))
|
|
return;
|
|
|
|
var hasParent = HasPrimaryEntity(transform.parent);
|
|
if (hasParent)
|
|
{
|
|
DstEntityManager.AddComponentData(entity, new Translation { Value = transform.localPosition });
|
|
DstEntityManager.AddComponentData(entity, new Rotation { Value = transform.localRotation });
|
|
|
|
if (transform.localScale != Vector3.one)
|
|
DstEntityManager.AddComponentData(entity, new NonUniformScale{ Value = transform.localScale });
|
|
|
|
DstEntityManager.AddComponentData(entity, new Parent { Value = GetPrimaryEntity(transform.parent) });
|
|
DstEntityManager.AddComponentData(entity, new LocalToParent());
|
|
}
|
|
else
|
|
{
|
|
DstEntityManager.AddComponentData(entity, new Translation { Value = transform.position });
|
|
DstEntityManager.AddComponentData(entity, new Rotation { Value = transform.rotation });
|
|
if (transform.lossyScale != Vector3.one)
|
|
DstEntityManager.AddComponentData(entity, new NonUniformScale{ Value = transform.lossyScale });
|
|
}
|
|
});
|
|
}
|
|
}
|