Example #1
0
    // Use this for initialization
    void Start()
    {
        buffer_ = new ComputeBuffer(number_of_buffer_, Marshal.SizeOf(typeof(ParticleStruct)));

        foreach (var buffer in cs_buffer_soa_.Keys.ToList())
        {
            cs_buffer_soa_[buffer] = new ComputeBuffer(number_of_buffer_, buffer.size);
        }

        foreach (var k in cs_kernal_name_index_map_)
        {
            k.Value.kernal_id = cs.FindKernel(k.Key);
        }

        var pData = new ParticleStruct[number_of_buffer_];

        for (int i = 0; i < pData.Length; i++)
        {
            pData[i].pos      = Random.insideUnitSphere;
            pData[i].velocity = new Vector3();
        }

        buffer_.SetData(pData);
        pData = null;

        mat_ = new Material(rs);
    }
Example #2
0
    public void Click(ParticleStruct item)
    {
        if (ListObjAvail.Count == 0)
        {
            GameObject go = Instantiate(item.ParticlePrefab, CanvasPar.transform, false);

            go.transform.position = item.StartPos.position;
            item.ParObj           = go;
            item.speed            = SetUpSpeedParticle(item);
            item.RunBool          = true;
            if (go.TryGetComponent(out ParticleSystem par))
            {
                var particleMain = par.main;
                particleMain.startLifetime = item.time;
                particleMain.duration      = item.time;
                var radialOverTime = par.velocityOverLifetime;
                radialOverTime.speedModifier = ParticleStruct.radialMul - item.time;
                par.Play();
            }

            ParticleStruct addItem = item;
            ListObjPar.Add(addItem);
        }
        else
        {
            ParticleStruct itemAvail = ListObjAvail[0];
            Destroy(itemAvail.ParObj);

            GameObject go = Instantiate(item.ParticlePrefab, CanvasPar.transform, false);

            go.transform.position = item.StartPos.position;
            item.ParObj           = go;
            item.speed            = SetUpSpeedParticle(item);
            item.RunBool          = true;

            if (go.TryGetComponent(out ParticleSystem par))
            {
                var particleMain = par.main;
                particleMain.startLifetime = item.time;
                particleMain.duration      = item.time;
                var radialOverTime = par.velocityOverLifetime;
                radialOverTime.speedModifier = ParticleStruct.radialMul - item.time;
                par.Play();
            }
            ParticleStruct addItem = item;
            ListObjPar.Add(addItem);

            ListObjAvail.Remove(ListObjAvail[0]);
        }
    }
Example #3
0
 //movement and rendering
 public void step()
 {
     for (int i = 0; i <= particles.Count - 1; i++)
     {
         if (particles[i].GetType() == typeof(ParticleStruct))
         {
             ParticleStruct placeholder = (ParticleStruct)particles[i];
             if (placeholder.age < maxage)
             {
                 placeholder.age++;
                 //move everything (based on max speed and strength)
                 if (this.left != 0)
                 {
                     int offset = fluctCalc.Next(left - movementFluctuation, left + movementFluctuation);
                     placeholder.x -= offset;
                 }
                 if (this.right != 0)
                 {
                     int offset = fluctCalc.Next(right - movementFluctuation, right + movementFluctuation);
                     placeholder.x += offset;
                 }
                 if (this.up != 0)
                 {
                     int offset = fluctCalc.Next(up - movementFluctuation, up + movementFluctuation);
                     placeholder.y -= offset;
                 }
                 if (this.down != 0)
                 {
                     int offset = fluctCalc.Next(down - movementFluctuation, down + movementFluctuation);
                     placeholder.y += offset;
                 }
                 //save back changes
                 particles[i] = placeholder;
             }
             else
             {
                 killParticle(placeholder);
             }
         }
     }
 }
Example #4
0
        //-------------------------------------------------------------------------
        public override void load(EbPropSet prop_set)
        {
            Name = prop_set.getPropString("T_Name").get();
            var prop_state = prop_set.getPropInt("I_State");

            State   = prop_state == null ? DataState.Default : (DataState)prop_state.get();
            MapName = prop_set.getPropString("T_MapName").get();

            Sprites = new List <BackgroundSpriteDataKeyStruct>();
            for (int i = 1; i <= 20; ++i)
            {
                string   strSprites   = prop_set.getPropString("T_Sprites" + i.ToString()).get();
                string[] arraySprites = strSprites.Split(';');

                BackgroundSpriteDataKeyStruct backgroundSpriteDataKeyStruct = new BackgroundSpriteDataKeyStruct();
                backgroundSpriteDataKeyStruct.SpriteData = EbDataMgr.Instance.getData <TbDataBackgroundSprite>(int.Parse(arraySprites[0]));
                backgroundSpriteDataKeyStruct.PositionX  = int.Parse(arraySprites[1]);
                backgroundSpriteDataKeyStruct.PositionY  = int.Parse(arraySprites[2]);
                Sprites.Add(backgroundSpriteDataKeyStruct);
            }

            AudioName = prop_set.getPropString("T_AudioName").get();

            SeaStarParticle = new List <ParticleStruct>();
            for (int i = 1; i <= 10; ++i)
            {
                string         strSeaStarParticles   = prop_set.getPropString("T_SeaStarParticle" + i.ToString()).get();
                string[]       arraySeaStarParticles = strSeaStarParticles.Split(';');
                ParticleStruct particleStruct        = new ParticleStruct();
                particleStruct.TbDataParticle = EbDataMgr.Instance.getData <TbDataParticle>(int.Parse(arraySeaStarParticles[0]));
                particleStruct.PositionX      = int.Parse(arraySeaStarParticles[1]);
                particleStruct.PositionY      = int.Parse(arraySeaStarParticles[2]);
                SeaStarParticle.Add(particleStruct);
            }

            LevelRippleParticle  = EbDataMgr.Instance.getData <TbDataParticle>(prop_set.getPropInt("I_LevelRippleParticle").get());
            SwitchLevelAudioName = prop_set.getPropString("T_SwitchLevelAudioName").get();
        }
Example #5
0
 void killParticle(ParticleStruct particle)
 {
     particles.Remove(particle);
     particleCt--;
 }
Example #6
0
 public float SetUpSpeedParticle(ParticleStruct par)
 {
     return(Vector3.Distance(par.StartPos.position, par.EndPos.position) / (par.time + Time.deltaTime));
 }
Example #7
0
        //-------------------------------------------------------------------------
        public override void load(EbPropSet prop_set)
        {
            Name = prop_set.getPropString("T_Name").get();
            var prop_state = prop_set.getPropInt("I_State");
            State = prop_state == null ? DataState.Default : (DataState)prop_state.get();
            MapName = prop_set.getPropString("T_MapName").get();

            Sprites = new List<BackgroundSpriteDataKeyStruct>();
            for (int i = 1; i <= 20; ++i)
            {
                string strSprites = prop_set.getPropString("T_Sprites" + i.ToString()).get();
                string[] arraySprites = strSprites.Split(';');

                BackgroundSpriteDataKeyStruct backgroundSpriteDataKeyStruct = new BackgroundSpriteDataKeyStruct();
                backgroundSpriteDataKeyStruct.SpriteData = EbDataMgr.Instance.getData<TbDataBackgroundSprite>(int.Parse(arraySprites[0]));
                backgroundSpriteDataKeyStruct.PositionX = int.Parse(arraySprites[1]);
                backgroundSpriteDataKeyStruct.PositionY = int.Parse(arraySprites[2]);
                Sprites.Add(backgroundSpriteDataKeyStruct);
            }

            AudioName = prop_set.getPropString("T_AudioName").get();

            SeaStarParticle = new List<ParticleStruct>();
            for (int i = 1; i <= 10; ++i)
            {
                string strSeaStarParticles = prop_set.getPropString("T_SeaStarParticle" + i.ToString()).get();
                string[] arraySeaStarParticles = strSeaStarParticles.Split(';');
                ParticleStruct particleStruct = new ParticleStruct();
                particleStruct.TbDataParticle = EbDataMgr.Instance.getData<TbDataParticle>(int.Parse(arraySeaStarParticles[0]));
                particleStruct.PositionX = int.Parse(arraySeaStarParticles[1]);
                particleStruct.PositionY = int.Parse(arraySeaStarParticles[2]);
                SeaStarParticle.Add(particleStruct);
            }

            LevelRippleParticle = EbDataMgr.Instance.getData<TbDataParticle>(prop_set.getPropInt("I_LevelRippleParticle").get());
            SwitchLevelAudioName = prop_set.getPropString("T_SwitchLevelAudioName").get();
        }