コード例 #1
0
        public ParticleEmitter2D(string id, ParticleEmitterInfo info,
                                 int drawLayer, bool postDraw)
            : base(id)
        {
            this.drawLayer = drawLayer;

            if (postDraw)
            {
                PostRenderManager.Add(this);
            }
            else
            {
                DrawingManager.Add(this);
            }

            attachments = new AttachmentPool(info.Attachments);

            if (info.CycleType != null)
            {
                object obj = AssemblyManager.CreateInstance(info.CycleType);

                if (obj != null)
                {
                    spawnCycle              = obj as IntervalCycle;
                    spawnCycle.OnSpawn     += new OnSpawnEvent(GenerateParticles);
                    spawnCycle.OnCompleted += new OnSpawningCompleteEvent(OnCompletedSpawning);
                }
            }

            if (info.EmittionType != null)
            {
                object obj = AssemblyManager.CreateInstance(info.EmittionType);

                if (obj != null)
                {
                    emittionType = obj as IEmitter2D;
                }
            }

            if (info.RenderType != null)
            {
                object obj = AssemblyManager.CreateInstance(info.RenderType);

                if (obj != null)
                {
                    renderMethod = obj as IRenderer2D;
                }
            }

            lifeTime = new FloatRange(info.MinLifeTime, info.MaxLifeTime);
            mass     = new FloatRange(info.MinMass, info.MaxMass);
        }
コード例 #2
0
ファイル: Factory.cs プロジェクト: Albert-Bennett/EonEngine
        /// <summary>
        /// Creates a new Factory.
        /// </summary>
        /// <param name="id">The unique identifaction name to give the Factory.</param>
        public Factory(string id, ParameterCollection spawnType,
                       ParameterCollection spawnObject, ParameterCollection cycleInfo)
        {
            this.id = id;

            spawnObj = spawnObject;

            object emit = AssemblyManager.CreateInstance(spawnType);

            if (emit != null)
            {
                emitter = emit as IEmitter2D;
            }

            object cyc = AssemblyManager.CreateInstance(cycleInfo);

            if (cyc != null)
            {
                cycle = cyc as IntervalCycle;

                cycle.OnSpawn += new OnSpawnEvent(Spawn);
            }
        }