Esempio n. 1
0
        public void SpawnPopup(float damage, float3 position)
        {
            int    damageInt    = (int)math.round(damage);
            string damageString = damageInt.ToString();

            if (damageInt >= 0)
            {
                quaternion cameraRotation = cameraSystem.GetMainCamera().transform.rotation;
                float      delay          = UnityEngine.Random.Range(0.1f, 0.2f);
                float      halfWidth      = (damageString.Length * uiDatam.fontSize * 0.6f) / 2f;
                for (int i = 0; i < damageString.Length; i++)
                {
                    float lifetime    = UnityEngine.Random.Range(uiDatam.popupLifetime.x, uiDatam.popupLifetime.y);
                    int   singleDigit = int.Parse(damageString[i].ToString());
                    // for each digit spawn one, add a offset so they centre in the middle
                    float3 offset = new float3(i * uiDatam.fontSize * 0.6f - halfWidth, 0, 0);
                    offset = math.rotate(cameraRotation, offset);
                    float3 positionBegin = position + new float3(0, 0.1f + uiDatam.fontSize / 2f, 0) + offset;
                    float3 positionEnd   = positionBegin + new float3(
                        UnityEngine.Random.Range(uiDatam.popupVariationX.x, uiDatam.popupVariationX.y),
                        UnityEngine.Random.Range(uiDatam.popupVariationY.x, uiDatam.popupVariationY.y),
                        UnityEngine.Random.Range(uiDatam.popupVariationZ.x, uiDatam.popupVariationZ.y));
                    Entity textEntity = SpawnNumber(singleDigit, positionBegin);
                    RenderTextSystem.SetLetterColor(World.EntityManager, textEntity, Color.red);
                    World.EntityManager.AddComponentData(textEntity, new PositionLerper
                    {
                        createdTime   = UnityEngine.Time.time,
                        lifeTime      = lifetime,
                        positionBegin = positionBegin,
                        positionEnd   = positionEnd
                    });
                    World.EntityManager.AddComponentData(textEntity, new ScaleLerper
                    {
                        createdTime = UnityEngine.Time.time,
                        lifeTime    = lifetime - delay,
                        delay       = delay,
                        scaleBegin  = new float3(1, 1, 1),
                        scaleEnd    = new float3(0, 0, 0)
                    });
                    World.EntityManager.AddComponentData(textEntity, new DamagePopup
                    {
                        createdTime = UnityEngine.Time.time,
                        lifeTime    = lifetime,
                    });
                    popups.Add(textEntity);
                }
            }
        }
Esempio n. 2
0
        protected override JobHandle OnUpdate(JobHandle inputDeps)
        {
            if (cameraSystem.cameraObjects.Values.Count == 0)
            {
                return(new JobHandle());
            }
            float3        cameraPosition = cameraSystem.GetMainCameraPosition();
            quaternion    cameraRotation = cameraSystem.GetMainCamera().transform.rotation;
            FaceCameraJob job            = new FaceCameraJob
            {
                cameraPosition = cameraPosition,
                cameraRotation = cameraRotation,
                delta          = UnityEngine.Time.deltaTime
            };
            JobHandle handle = job.Schedule(this, inputDeps);

            return(handle);
        }