Beispiel #1
0
    void Initialize()
    {
        if (!Initialized)
        {
            // Grab a list of Projectile Types founds in assets folder "ProjectileTypes"
            GameObject[] projectileTypes = Resources.LoadAll <GameObject>("ProjectileTypes");
            ProjectileTypes        = new List <ProjectileType>();
            IndirectRenderers      = new Dictionary <int, IndirectRenderer>();
            ProjectileTypeCounters = new Dictionary <int, ProjectileTypeCounters>();

            // Process projectile types
            for (int n = 0; n < projectileTypes.Length; n++)
            {
                ProjectileType type = projectileTypes[n].GetComponent <ProjectileType>();
                type.SetIndex(n);
                ProjectileTypes.Add(type);

                // If material is set to be a static color ensure we do not send color data to shader
                float isStaticFloat = type.Material.GetFloat("_StaticColor");
                bool  isStatic      = false;
                if (isStaticFloat == 1)
                {
                    isStatic = true;
                }

                IndirectRenderers.Add(n, new IndirectRenderer(type.MaxProjectileCount, type.Material, type.Mesh, isStatic));
                ProjectileTypeCounters.Add(n, new ProjectileTypeCounters());
            }


            EmittersArray = new ProjectileEmitterBase[MaxEmitters];

            // Get a list of all emitters in the scene
            RegisterEmitters();

            Initialized = true;
        }
    }