private void Awake()
    {
        decalRoot                      = transform;
        particleSystem                 = gameObject.AddComponent <ParticleSystem>();
        particleSystem.loop            = false;
        particleSystem.playOnAwake     = false;
        particleSystem.enableEmission  = false;
        particleSystem.simulationSpace = ParticleSystemSimulationSpace.World;
        ParticleSystem.ShapeModule shape = particleSystem.shape;
        shape.enabled = false;
        ParticleSystemRenderer renderer = decalRoot.GetComponent <ParticleSystemRenderer>();

        renderer.renderMode = ParticleSystemRenderMode.Mesh;
        renderer.alignment  = ParticleSystemRenderSpace.World;
        // renderer.sortMode = ParticleSystemSortMode.YoungestInFront;
        renderer.enableGPUInstancing = true;
        renderer.castShadows         = false;
        renderer.receiveShadows      = false;
        renderer.material            = Resources.Load <Material>("Materials/ParticleDecalMaterial");
        renderer.mesh = PrimitiveHelper.GetPrimitiveMesh(PrimitiveType.Quad);

        for (int i = 0; i < CAPACITY; i++)
        {
            data[i] = new ParticleDecalData();
        }
    }
 void Start()
 {
     decalParticleSystem = GetComponent <ParticleSystem>();
     particles           = new ParticleSystem.Particle[maxDecals];
     particleData        = new ParticleDecalData[maxDecals];
     for (long i = 0; i < maxDecals; i++)
     {
         particleData[i] = new ParticleDecalData();
     }
 }
Beispiel #3
0
    void Start()
    {
        minMaxCurve         = new ParticleSystem.MinMaxCurve(10.0f, 0f);
        decalParticleSystem = GetComponent <ParticleSystem> ();

        particles    = new ParticleSystem.Particle[maxDecals];
        particleData = new ParticleDecalData[maxDecals];
        for (int i = 0; i < maxDecals; i++)
        {
            particleData [i] = new ParticleDecalData();
        }
    }
    // Start is called before the first frame update
    void Start()
    {
        particles = new ParticleSystem.Particle[maxDecals];

        particleData = new ParticleDecalData[maxDecals];
        for (int i = 0; i < maxDecals; ++i)
        {
            particleData[i] = new ParticleDecalData();
        }

        collisionEvents = new List <ParticleCollisionEvent>();
    }
    public static void DisplayParticles()
    {
        for (int i = 0, l = data.Length; i < l; i++)
        {
            ParticleDecalData data = ParticleDecalManager.data[i];
            particles[i].position   = data.position;
            particles[i].rotation3D = data.rotation;
            particles[i].startSize  = data.size;
            particles[i].startColor = data.color;
        }

        particleSystem.SetParticles(particles, CAPACITY);
    }
Beispiel #6
0
 // Use this for initialization
 void Start()
 {
     decalParticleSystem = GetComponent <ParticleSystem>();
     // Initialise the array of decal objects
     particleData = new ParticleDecalData[maxDecals];
     // Initialise the array of decal particles
     particles = new ParticleSystem.Particle[maxDecals];
     for (int i = 0; i < maxDecals; i++)
     {
         // Populate the array of decal objects
         particleData[i] = new ParticleDecalData();
     }
 }
Beispiel #7
0
 private void Start()
 {
     if (ECSManager.Instance.ShouldDisplayGraphics)
     {
         _particleSystem = GetComponent <ParticleSystem>();
         particles       = new ParticleSystem.Particle[maxParticle];
         particleData    = new ParticleDecalData[maxParticle];
         for (int i = 0; i < maxParticle; i++)
         {
             particleData[i] = new ParticleDecalData();
         }
     }
 }
Beispiel #8
0
    //Reinitialize fields
    private void UpdateData()
    {
        _particles     = new ParticleSystem.Particle[_countOfDecals];
        _particleData  = new ParticleDecalData[_countOfDecals];
        _spawnedDecals = new List <GameObject>();

        for (int i = 0; i < _countOfDecals; i++)
        {
            _particleData[i] = new ParticleDecalData();
        }

        _particleDataList = new List <ParticleDecalData>();
    }
    private void Start()
    {
        invisibilePosition = new Vector3(0, 50, 0);
        spawner            = FindObjectOfType <Spawner>();
        spawner.OnNewWave += OnNewWave;

        decalParticleSystem = GetComponent <ParticleSystem>();
        particleData        = new ParticleDecalData[maxDecals];
        particles           = new ParticleSystem.Particle[maxDecals];
        for (int i = 0; i < particleData.Length; i++)
        {
            particleData[i] = new ParticleDecalData();
        }
    }
    private void DisplayParticles()
    {
        for (int i = 0; i < maxDecals; ++i)
        {
            ParticleDecalData       data     = particleData[i];
            ParticleSystem.Particle particle = particles[i];
            particle.position   = data.position;
            particle.rotation3D = data.rotation;
            particle.startSize  = data.size;
            particle.startColor = data.color;

            particles[i] = particle;
        }

        decalSystem.SetParticles(particles, maxDecals);
    }
Beispiel #11
0
    private static void SetParticleData(ParticleCollisionEvent @event, float size, Color color)
    {
        if (index >= CAPACITY)
        {
            index = 0;
        }
        ParticleDecalData data  = ParticleDecalManager.data[index];
        Vector3           euler = Quaternion.LookRotation(@event.normal).eulerAngles;

        euler.z       = Random.Range(0, 360);
        data.position = @event.intersection;
        data.rotation = euler;
        data.size     = size;
        data.color    = color;

        index++;
    }
    public void SetParticleData(Vector3 position, Vector3 normal, float scale, float fudge)
    {
        if (particleDecalDataIndex >= maxDecals)
        {
            particleDecalDataIndex = 0;
        }

        ParticleDecalData data = particleData[particleDecalDataIndex];

        data.position = position - (normal * fudge);
        Vector3 particleEulers = Quaternion.LookRotation(normal).eulerAngles;

        particleEulers.z = Random.Range(0, 360);
        data.rotation    = particleEulers;
        data.size        = Random.Range(decalSizeMin, decalSizeMax) * scale;
        data.color       = decalColorGradient.Evaluate(Random.Range(0f, 1f));
        particleData[particleDecalDataIndex] = data;

        particleDecalDataIndex++;
    }