Beispiel #1
0
        private void LoadParticleEffect()
        {
            if (particleEffect == null)
            {
                particleEffect = this.axRenderControl1.ObjectManager.CreateParticleEffect(rootId);
                string fileName = (strMediaPath + @"\png\water.png");
                particleEffect.ImageName                = fileName;
                particleEffect.EmissionMaxMoveSpeed     = 200;
                particleEffect.EmissionMinMoveSpeed     = 0;
                particleEffect.EmissionMinRate          = 600;
                particleEffect.EmissionMaxRate          = 7300;
                particleEffect.ParticleMaxLifeTime      = 5.5;
                particleEffect.ParticleMinLifeTime      = 1.5;
                particleEffect.ParticleBillboardType    = gviParticleBillboardType.gviParticleBillboardOrientedCamera;
                particleEffect.WindDirection            = 0;
                particleEffect.WindAcceleration         = 0.2;
                particleEffect.ParticleBirthColor       = System.Drawing.Color.White;
                particleEffect.ParticleDeathColor       = System.Drawing.Color.Blue;
                particleEffect.EmissionMinScaleSpeed    = 1;
                particleEffect.EmissionMaxScaleSpeed    = 2;
                particleEffect.VerticalAcceleration     = 0;
                particleEffect.EmissionMaxAngle         = 0.078536816339744828;
                particleEffect.EmissionMinAngle         = 0;
                particleEffect.EmissionMinParticleSize  = 0.2;
                particleEffect.EmissionMaxParticleSize  = 0.6;
                particleEffect.EmissionMinRotationSpeed = 0;
                particleEffect.EmissionMaxRotationSpeed = 0;
                particleEffect.Damping             = 0.5;
                particleEffect.MaxVisibleDistance  = 10000;
                particleEffect.ParticleAspectRatio = 1;
                angle.Set(0, 90, 0);
                particleEffect.EmissionDirectionEulerAngle = angle;
                particleEffect.SetTextureTileRange(0, 0, 0, 0);
                particleEffect.Start(-1);
                particleEffect.MaxVisibleDistance = 10000;

                IPoint pTemp = new GeometryFactory().CreatePoint(gviVertexAttribute.gviVertexAttributeZ);
                pTemp.SpatialCRS = new CRSFactory().CreateFromWKT(this.axRenderControl1.GetCurrentCrsWKT()) as ISpatialCRS;
                IPoint p = line.GetPoint(0).Clone() as IPoint;
                p.Project(pTemp.SpatialCRS);
                pTemp.SetCoords(p.X, p.Y, p.Z, 0, 0);
                particleEffect.SetPointEmitter(pTemp);

                // 绑定到运动路径
                IMotionable m = particleEffect as IMotionable;
                //position.Set(4.3, -7, 0);
                position.Set(0, 0, 0);
                m.Bind(motionPath, position, 0, 90, 0);
            }
        }
Beispiel #2
0
        /// <summary>
        /// 设置粒子特效的位置
        /// </summary>
        /// <param name="v3"></param>
        public void SetPosition(IPoint v3)
        {
            switch (EmitterType)
            {
            case EmitterTypeCategory.Point:
                particleEffect.SetPointEmitter(v3);
                break;

            case EmitterTypeCategory.Circle:
                particleEffect.SetCircleEmitter(v3, EmitterRadius);
                break;

            case EmitterTypeCategory.Box:
                particleEffect.SetBoxEmitter(v3, EmitterWidth, EmitterHeight, EmitterDepth);
                break;

            default:
                particleEffect.SetCircleEmitter(v3, 1.4);
                break;
            }
        }