Exemplo n.º 1
0
        /// <summary>
        /// Adds a new particle to the storage
        /// </summary>
        /// <param name="entryName">particle name in the game</param>
        /// <param name="particleFile">particle file (.Particle)</param>
        /// <param name="maxCount">instance count</param>
        /// <param name="sceneParent">parent scene node</param>
        /// <returns>an index of new particle</returns>
        public int AddParticle(string entryName, string particleFile, int maxCount,
                               NodeBase sceneParent)
        {
            if (particleOn == false)
            {
                return(-1);
            }

            ParticleStorage      storage      = null;
            ParticleSequenceInfo particleInfo = null;

            // checks a registerd particle.
            int index = FindParticleIndexByName(entryName);

            if (index != -1)
            {
                storage = particleSequencesList[index];
            }
            else
            {
                storage           = new ParticleStorage();
                storage.entryName = entryName;
                particleSequencesList.Add(storage);
            }

            //  makes a resource path.
            string resourcePath = Path.GetDirectoryName(particleFile);

            particleInfo = FindParticleInfo(particleFile);
            if (particleInfo == null)
            {
                particleInfo = LoadParticleSequenceInfo(particleFile);
            }

            if (particleInfo == null)
            {
                throw new ArgumentException(
                          "failed to load particle : " + particleFile);
            }

            ParticleSequence source =
                new ParticleSequence(ref particleInfo, resourcePath);

            //  makes and stores a particle instance.
            for (int i = 0; i < maxCount; i++)
            {
                ParticleSequence instance =
                    ParticleSequence.CreateInstance(ref source);

                instance.Name = entryName;

                storage.list.Add(instance);

                //  adds particle to render scene.
                sceneParent.AddChild(instance);
            }

            return(particleSequencesList.IndexOf(storage));
        }
Exemplo n.º 2
0
        /// <summary>
        /// reads information from a particle file and registers to the list.
        /// </summary>
        /// <param name="fileName">particle file (.Particle)</param>
        /// <returns>particle information</returns>
        public ParticleSequenceInfo LoadParticleSequenceInfo(string fileName)
        {
            ParticleSequenceInfo newData = (ParticleSequenceInfo)
                                           FrameworkCore.ContentManager.Load <ParticleSequenceInfo>(
                fileName);

            particleInfoList.Add(newData);

            return(newData);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Creates using particle information.
        /// </summary>
        /// <param name="info">the particle information</param>
        /// <param name="resourcePath">the particle file</param>
        public void Create(ref ParticleSequenceInfo info, string resourcePath)
        {
            this.sequenceInfo = info;
            this.resourcePath = resourcePath;

            //  Add TimeSequence to child
            timeSequence = new TimeSequence();
            AddChild(timeSequence);

            for (int i = 0; i < info.TimeSequencesInfo.Count; i++)
            {
                TimeSequenceInfo timeSequenceInfo = info.TimeSequencesInfo[i];

                //  Create a TimeSequenceData using TimeSequenceInfo
                TimeSequenceData timeSequenceData =
                    new TimeSequenceData(timeSequenceInfo);

                //  Create a particle using ParticleInfo and TextureSequence
                //  in the TimeSequenceInfo
                Particle particle = new Particle(resourcePath,
                                                 timeSequenceInfo.ParticleInfo,
                                                 timeSequenceInfo.TextureSequence);

                //  Set owner particle to the TimeSequenceData
                timeSequenceData.Owner = particle;

                //  Add the particle to the TimeSequence's child
                timeSequence.AddChild(particle);

                //  Add TimeSequenceData to the TimeSequence
                timeSequence.AddSequence(timeSequenceData);
            }

            Name = info.Name;

            //  Particle off
            Stop();
        }
Exemplo n.º 4
0
        /// <summary>
        /// creates instance particle by using the source particle.
        /// </summary>
        /// <param name="source">source particle</param>
        /// <returns>new instance particle</returns>
        public static ParticleSequence CreateInstance(ref ParticleSequence source)
        {
            ParticleSequenceInfo info = source.SequenceInfo;

            return(new ParticleSequence(ref info, source.ResourcePath));
        }
Exemplo n.º 5
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="info">particle sequence information structure</param>
 /// <param name="resourceFolder">resource path</param>
 public ParticleSequence(ref ParticleSequenceInfo info, string resourceFolder)
     : base()
 {
     Create(ref info, resourceFolder);
 }