public void OnEntityCreated(Context f, Lockstep.UnsafeECS.Entity *pEntity)
        {
            if (pEntity == null)
            {
                Debug.LogError("OnEntityCreated null");
                return;
            }

            var pPrefab = EntityUtil.GetPrefab(pEntity);

            if (pPrefab == null)
            {
                return;
            }

            var assetId = pPrefab->AssetId;

            if (assetId == 0)
            {
                return;
            }
            Debug.Assert(_assetId2EntityPrefas.ContainsKey(assetId), "assetId" + assetId);
            var uEntity = _entityManager.Instantiate(_assetId2EntityPrefas[assetId]);

            _entityManager.AddComponentData(uEntity, pEntity->_ref);
            _id2UnityEntity[pEntity->LocalId] = uEntity;
            Transform3D *transform3D = EntityUtil.GetTransform3D(pEntity);

            if (transform3D != null)
            {
                _entityManager.SetComponentData(uEntity, new Unity.Transforms.LocalToWorld {
                    Value = float4x4.TRS(
                        transform3D->Position.ToVector3(),
                        quaternion.LookRotationSafe(transform3D->Forward.ToVector3(), Unity.Mathematics.math.up()),
                        new float3(1))
                });
            }

            if (!EntityViewUtil.HasView(pEntity))
            {
                return;
            }

            //bind view
            Debug.Assert(!_id2EntityView.ContainsKey(pEntity->_localId));
            var view = EntityViewUtil.BindEntityView(pEntity);

            view.BindEntity(pEntity);
            view.OnBindEntity();
            _id2EntityView[pEntity->_localId] = view;
        }
Exemplo n.º 2
0
 private int _GetOffsetOfTransform3D_Scale()
 {
     var tempObj = new Transform3D(); Transform3D *ptr = &tempObj; var filedPtr = &(ptr->Scale); return((int)((long)filedPtr - (long)ptr));
 }