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; }
private int _GetOffsetOfTransform3D_Scale() { var tempObj = new Transform3D(); Transform3D *ptr = &tempObj; var filedPtr = &(ptr->Scale); return((int)((long)filedPtr - (long)ptr)); }