天天看點

TE二次開發:粒子效果的制作

skyline響應号召,也在地圖裡加入了粒子效果,api中也加入了CreateEffect的方法,此方法的關鍵參數中,粒子的效果通過設定xml進行生成,具體的xml配置,api文檔提示去看te的使用手冊,不過參數都比較專業,鑒于此,可以先用TE手動建立一個粒子效果對象,再用代碼去找到這個對象,擷取對象中的xml檔案資訊。

//查找對象
 string _itemid = _sgworld.ProjectTree.FindItem(@"粒子效果\效果");
            if (!string.IsNullOrEmpty(_itemid))
            {
            //找到轉換對象
                var _teObj = _sgworld.ProjectTree.GetObject(_itemid);
                ITerrainEffect70 _teffect = _teObj as ITerrainEffect70;
                 //擷取對象中的xml資訊
                ITerrainLabel70 _label = _teObj as ITerrainLabel70;
                 string _effectXml = _teffect.EffectXML;
                //根據文本資訊,設定xml中的屬性
                 string _effnew = "$$PARTICLE$$UserDefine: <?xml version='1.0' encoding='UTF-8'?><Particle ID='Custom'><ParticleEmitter ID='ring' NumParticles='355' Texture='smoke.png'><Emitter Rate='157' Shape='One' SpeedShape='One' Scale='0,0,0' Speed='0.04,-0.01,-0.04' /><Cycle Value='1' /><Sort Value='1' /><Render Value='Horizontal' /><Gravity Value='2, 0, 0' /><Force Value='0' OverrideRotation='0' /><Position Value='0, 0, 0' /><Life Value='3.75' /><Speed Value='0.31' /><Color Value='20,255,255,255' /><Size Value='1.2,1.2' /><Drag Value='0' /><Blend Type='' /><Fade FadeIn='0.69' FadeOut='0.78' MaxFade='0.2' /></ParticleEmitter></Particle>";
                //建立動态效果
                 var _pos = _sgworld.Window.CenterPixelToWorld(WorldPointType.WPT_TERRAIN).Position;
                 var _teff1 = _sgworld.Creator.CreateEffect(_sgworld.Creator.CreatePosition(_pos.X, _pos.Y, 100, AltitudeTypeCode.ATC_TERRAIN_RELATIVE), _effnew);
                  
            }