public void Convert(GameObject gameObject, Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
 {
     dstManager.AddComponent <GhostOwnerComponent>(entity);
     dstManager.AddComponent <GhostPredictedOnly>(entity);
     dstManager.AddComponent <GhostInterpolatedOnly>(entity);
     dstManager.AddComponent <GhostGen_IntStruct>(entity);
     dstManager.AddComponent <GhostTypeIndex>(entity);
     dstManager.AddBuffer <GhostGenBuffer_ByteBuffer>(entity);
     dstManager.AddBuffer <GhostGenTest_Buffer>(entity);
 }
Exemple #2
0
 public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
 {
     dstManager.AddComponentData(entity, new Engine {
         ForwardThrust = ForwardThrust, TurningThrust = TurningThrust
     });
 }
 public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
 {
     dstManager.AddComponentData(entity, new EntityPrefab(dstManager, entity, new FixedString64(Name)));
 }
Exemple #4
0
 public void Convert(Unity.Entities.Entity entity, Unity.Entities.EntityManager dstManager, GameObjectConversionSystem conversionSystem)
 {
     dstManager.AddComponentData(entity, new PlayerReadyStateComponent {
         IsReady = IsReady
     });
 }
Exemple #5
0
    public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
    {
        //Create a separate entity to hold the waypoint buffer

        Entity holder = dstManager.CreateEntity();
        //dstManager.SetName(holder, "Waypoint Holder 1");
        DynamicBuffer <WayPoint> tempBuff = dstManager.AddBuffer <WayPoint>(holder);

        foreach (float3 location in positions1) //Add the waypoints
        {
            tempBuff.Add(new WayPoint {
                value = location
            });
        }
        dstManager.AddComponentData <FollowWayPointsStorage>(holder, new FollowWayPointsStorage {
            id          = 0,
            curPointNum = 0
        });    // add the FollowWayPointsAction to the crowd agent

        Entity holder2 = dstManager.CreateEntity();
        //dstManager.SetName(holder2, "Waypoint Holder 2");
        DynamicBuffer <WayPoint> tempBuff2 = dstManager.AddBuffer <WayPoint>(holder2);

        tempBuff2.Add(new WayPoint {
            value = new float3(0, 0, 0)
        });
        dstManager.AddComponentData <FollowWayPointsStorage>(holder2, new FollowWayPointsStorage {
            id          = 1,
            curPointNum = 0
        });    // add the FollowWayPointsAction to the crowd agent*/



        DynamicBuffer <Action> dynamicBuffer = dstManager.AddBuffer <Action>(entity); // add a buffer to the entity

        //wpBuffer.Add(new WayPoint {point = float3.zero} );
        for (int i = 0; i < priorites.Length; i++)
        {
            int curPriority = priorites[i];
            //int curMessage = messages[i];
            float curTime = times[i];


            //find out where the new element should be added
            int pos = 0;
            //Debug.Log(i + " try, Length is: " + dynamicBuffer.Length);

            while (pos < dynamicBuffer.Length && curPriority <= dynamicBuffer[pos].priority)
            {
                if (curPriority == dynamicBuffer[pos].priority) // if the current priorities are the same
                //compare the times
                {
                    if (curTime >= dynamicBuffer[pos].timeCreated) // if the current elements time is greater than the other element's time, this element should go later
                    {
                        pos++;
                    }
                    else
                    {
                        break;
                    }
                }
                else if (curPriority < dynamicBuffer[pos].priority) // if this elements priority is smaller than the other element's priority, this element should go later
                {
                    pos++;
                }
                else
                {
                    break;
                }
            }
            //add the element at that location
            if (i == 0)
            {
                dynamicBuffer.Insert(
                    pos,
                    new Action {
                    id          = i,
                    priority    = priorites[i],
                    type        = ActionType.Follow_WayPoints,
                    timeCreated = times[i],

                    dataHolder = holder,
                });     // the Values (in the buffer) are the values in the array
            }
            else if (i == 1)
            {
                dynamicBuffer.Insert(
                    pos,
                    new Action {
                    id          = i,
                    priority    = priorites[i],
                    type        = ActionType.Follow_WayPoints,
                    timeCreated = times[i],

                    dataHolder = holder2,
                }); // the Values (in the buffer) are the values in the array
            }
        }

        dstManager.AddComponentData <CurrentAction>(entity, new CurrentAction {
            id   = 22,
            type = ActionType.Follow_WayPoints
        });
        dstManager.AddComponentData <FollowWayPointsAction>(entity, new FollowWayPointsAction {
            id          = 22,
            curPointNum = 0
        });
        DynamicBuffer <WayPoint> wpBuffer = dstManager.AddBuffer <WayPoint>(entity); // add a buffer to the entity

        wpBuffer.Add(new WayPoint {
            value = new float3(1, 1, 1)
        });
    }
 public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
 {
     dstManager.AddComponentData(entity, new EntityUpdater {
         TimeToDie = TimeToDie, TimeToMove = TimeToMove
     });
 }
 public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
 {
     dstManager.AddComponentObject(entity, GetComponent <AnimationPlayer>());
     dstManager.AddComponent(entity, ComponentType.ReadOnly <CopyTransformToGameObject>());
 }
Exemple #8
0
 void IConvertGameObjectToEntity.Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
 {
     dstManager.AddComponentData(entity, new ModifyContactJacobians {
         type = ModificationType
     });
 }
        public static void Convert(
            Entity entity,
            EntityManager dstEntityManager,
            GameObjectConversionSystem conversionSystem,
            Renderer meshRenderer,
            Mesh mesh,
            List <Material> materials)
        {
            var materialCount = materials.Count;

            // Don't add RenderMesh (and other required components) unless both mesh and material assigned.
            if ((mesh != null) && (materialCount > 0))
            {
                var renderMesh = new RenderMesh
                {
                    mesh           = mesh,
                    castShadows    = meshRenderer.shadowCastingMode,
                    receiveShadows = meshRenderer.receiveShadows,
                    layer          = meshRenderer.gameObject.layer
                };

                renderMesh.needMotionVectorPass = (meshRenderer.motionVectorGenerationMode == MotionVectorGenerationMode.Object) ||
                                                  (meshRenderer.motionVectorGenerationMode == MotionVectorGenerationMode.ForceNoMotion);

                //@TODO: Transform system should handle RenderMeshFlippedWindingTag automatically. This should not be the responsibility of the conversion system.
                float4x4 localToWorld = meshRenderer.transform.localToWorldMatrix;
                var      flipWinding  = math.determinant(localToWorld) < 0.0;

                if (materialCount == 1 && AttachToPrimaryEntityForSingleMaterial)
                {
                    AddComponentsToEntity(
                        renderMesh,
                        entity,
                        dstEntityManager,
                        conversionSystem,
                        meshRenderer,
                        mesh,
                        materials,
                        flipWinding,
                        0);
                }
                else
                {
                    for (var m = 0; m != materialCount; m++)
                    {
                        var meshEntity = conversionSystem.CreateAdditionalEntity(meshRenderer);

                        dstEntityManager.AddComponentData(meshEntity, new LocalToWorld {
                            Value = localToWorld
                        });
                        if (!dstEntityManager.HasComponent <Static>(meshEntity))
                        {
                            dstEntityManager.AddComponentData(meshEntity, new Parent {
                                Value = entity
                            });
                            dstEntityManager.AddComponentData(meshEntity, new LocalToParent {
                                Value = float4x4.identity
                            });
                        }

                        AddComponentsToEntity(
                            renderMesh,
                            meshEntity,
                            dstEntityManager,
                            conversionSystem,
                            meshRenderer,
                            mesh,
                            materials,
                            flipWinding,
                            m);
                    }
                }
            }
        }
Exemple #10
0
 public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
 {
     dstManager.AddComponentData(entity, new State());
     dstManager.AddBuffer <AbilityUIElement>(entity);
     dstManager.AddBuffer <PresentationElement>(entity);
 }
 public void Convert(GameObject gameObject, Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
 {
     dstManager.AddComponentData(entity, new GhostValueSerializer {
     });
 }
 public void Convert(GameObject gameObject, Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
 {
     dstManager.AddComponentData(entity, new GhostTypeIndex {
         Value = gameObject.name == "GhostTypeIndex1Test" ? 1 : 0
     });
 }
 public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
 {
     dstManager.AddComponentData(entity, new RotationEulerXYZ());
 }
Exemple #14
0
 void IConvertGameObjectToEntity.Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
 {
     dstManager.AddComponentData(entity, new VerifyBodyPairsIteratorData());
 }
Exemple #15
0
    public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
    {
        var state = AnimConditionDead.State.Default;

        dstManager.AddComponentData(entity, state);
    }
        private static void AddComponentsToEntity(
            RenderMesh renderMesh,
            Entity entity,
            EntityManager dstEntityManager,
            GameObjectConversionSystem conversionSystem,
            Renderer meshRenderer,
            Mesh mesh,
            List <Material> materials,
            bool flipWinding,
            int id)
        {
            renderMesh.material = materials[id];
            renderMesh.subMesh  = id;

            dstEntityManager.AddSharedComponentData(entity, renderMesh);

            dstEntityManager.AddComponentData(entity, new PerInstanceCullingTag());
            dstEntityManager.AddComponentData(entity, new RenderBounds {
                Value = mesh.bounds.ToAABB()
            });

            if (flipWinding)
            {
                dstEntityManager.AddComponent(entity, ComponentType.ReadWrite <RenderMeshFlippedWindingTag>());
            }

            conversionSystem.ConfigureEditorRenderData(entity, meshRenderer.gameObject, true);

#if ENABLE_HYBRID_RENDERER_V2 && UNITY_2020_1_OR_NEWER && (HDRP_9_0_0_OR_NEWER || URP_9_0_0_OR_NEWER)
            // Hybrid V2 uploads WorldToLocal from C# to rendering. Need to refresh it.
            // TODO: Do this on GPU side in the copy compute shader. Would be free in BW bound shader!
            dstEntityManager.AddComponent(entity, ComponentType.ReadWrite <WorldToLocal>());

#if HDRP_9_0_0_OR_NEWER
            // HDRP previous frame matrices (for motion vectors)
            if (renderMesh.needMotionVectorPass)
            {
                dstEntityManager.AddComponent(entity, ComponentType.ReadWrite <BuiltinMaterialPropertyUnity_MatrixPreviousM>());
                dstEntityManager.AddComponent(entity, ComponentType.ReadWrite <BuiltinMaterialPropertyUnity_MatrixPreviousMI>());
            }
            dstEntityManager.AddComponentData(entity, CreateMotionVectorsParams(ref renderMesh, ref meshRenderer));
#endif

            dstEntityManager.AddComponentData(entity, new BuiltinMaterialPropertyUnity_RenderingLayer
            {
                Value = new uint4(meshRenderer.renderingLayerMask, 0, 0, 0)
            });

            dstEntityManager.AddComponentData(entity, new BuiltinMaterialPropertyUnity_WorldTransformParams
            {
                Value = flipWinding ? new float4(0, 0, 0, -1) : new float4(0, 0, 0, 1)
            });

#if URP_9_0_0_OR_NEWER
            // Default initialized light data for URP
            dstEntityManager.AddComponentData(entity, new BuiltinMaterialPropertyUnity_LightData
            {
                Value = new float4(0, 0, 1, 0)
            });
#endif
#endif
        }
Exemple #17
0
 public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
 {
     dstManager.AddComponentData(entity, new Shield {
         Health = Capacity, Radius = Radius
     });
 }
        public override CardLibraryData ConvertGameData(GameObject gameObject, Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem, CardLibraryDataSO dataSO)
        {
            var data = new CardLibraryData();

            data.Id   = dataSO.Id;
            data.Name = dataSO.Name;

            ushort[] dataIds = dataSO.Datas.Select((d) => d == null ? (ushort)0: d.DataId).ToArray();
            data.DataIdsAssetRef = EntityUtil.CreateArrayAssetRef(dataIds);

            //var len = dataSO.CardDatas.Length;
            //data.CardNum = (ushort)len;

            //var builder = new BlobBuilder(Allocator.Temp);
            //ref var root = ref builder.ConstructRoot<CardDataAsset>();

            //var array = builder.Allocate(ref root.CardDataIds, len);

            //for (int i = 0; i < len; i++)
            //{
            //    var cardData = dataSO.CardDatas[i];
            //    if (cardData != null)
            //    {
            //        array[i] = cardData.Id;
            //    }
            //}

            //data.DataAssetRef = builder.CreateBlobAssetReference<CardDataAsset>(Allocator.Persistent);
            //builder.Dispose();

            return(data);
        }
 public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
 {
     prefabEntity = conversionSystem.GetPrimaryEntity(prefab);
 }
 public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
 {
     dstManager.AddComponentData(entity, new ShipTagComponentData());
 }
Exemple #21
0
 public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem) =>
 dstManager.AddComponentData(entity, new LifeTime {
     Value = Value
 });
Exemple #22
0
 public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
 {
     dstManager.AddComponentData(entity, new VerifyCollisionEventsData());
 }
Exemple #23
0
 public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
 {
     dstManager.AddComponent <Projectile>(entity);
 }
 public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
 {
     dstManager.AddComponentData(entity, new PlayerControlled.State());
 }
Exemple #25
0
 // add empty copy to attached entity
 public void Convert(Entity entity, EntityManager dstManager,
                     GameObjectConversionSystem conversionSystem)
 {
     dstManager.AddComponentData(entity, new BoundMarkerEdge());
 }
 void IConvertGameObjectToEntity.Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
 {
     dstManager.AddComponentData(entity, new MousePick()
     {
         IgnoreTriggers = IgnoreTriggers ? 1 : 0,
     });
 }
Exemple #27
0
 public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
 {
     dstManager.AddComponentData(entity, new RuntimeUnmanaged {
         Value = Value
     });
 }
 void IConvertGameObjectToEntity.Convert(Entity entity, EntityManager dstManager,
                                         GameObjectConversionSystem conversionSystem)
 {
     dstManager.AddComponentData(entity, new Table());
 }
        public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
        {
            using (NativeArray <Entity> obstacleEntities = dstManager.CreateEntity(dstManager.CreateObstacleArchetype(), this.obstacleDTOs.Count, Allocator.Temp))
            {
                for (int i = 0; i < obstacleDTOs.Count; ++i)
                {
                    dstManager.SetComponentData(obstacleEntities[i], new Translation
                    {
                        Value = this.obstacleDTOs[i].Transform.position
                    });

                    dstManager.SetComponentData(obstacleEntities[i], new Rotation
                    {
                        Value = this.obstacleDTOs[i].Transform.rotation
                    });

                    dstManager.SetComponentData(obstacleEntities[i], new NonUniformScale
                    {
                        Value = this.obstacleDTOs[i].Transform.lossyScale
                    });

                    dstManager.SetComponentData(obstacleEntities[i], new RenderBounds
                    {
                        Value = new AABB
                        {
                            Center  = this.obstacleDTOs[i].Mesh.bounds.center,
                            Extents = this.obstacleDTOs[i].Mesh.bounds.extents
                        }
                    });

                    if (this.obstacleDTOs[i].OverrideBoxCollider == null)
                    {
                        dstManager.SetComponentData(obstacleEntities[i], new PhysicsCollider
                        {
                            Value = BoxCollider.Create
                                    (
                                CollisionGeomeotrySingleton.Instance.CreateOrGetBoxGeometry(this.obstacleDTOs[i].WorldSpaceBounds.size),
                                CollisionFilterSingleton.Instance.BelongsToNonTraversableFilter
                                    )
                        });
                    }
                    else
                    {
                        dstManager.SetComponentData(obstacleEntities[i], new PhysicsCollider
                        {
                            Value = BoxCollider.Create
                                    (
                                CollisionGeomeotrySingleton.Instance.CreateOrGetBoxGeometry(this.obstacleDTOs[i].OverrideBoxCollider.size, this.obstacleDTOs[i].OverrideBoxCollider.center),
                                CollisionFilterSingleton.Instance.BelongsToNonTraversableFilter
                                    )
                        });
                    }

                    dstManager.AddSharedComponentData(obstacleEntities[i], new RenderMesh
                    {
                        mesh = this.obstacleDTOs[i].Mesh,
                        //Currently just choose the first material, but later on it should be possible to have more than 1 material for meshes
                        material = this.obstacleDTOs[i].Materials[0]
                    });
                }
            }

            DestroyImmediate(obstacleHolder);
        }
 public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
 {
     this.entity        = entity;
     this.entityManager = dstManager;
 }