public FreeBaseEffect()
 {
     obj3D    = new UnityObject3D(new GameObject("Obj3d"));
     oriObj3D = new UnityObject3D(new GameObject("OriObj3d"));
     model3D  = new UnityEffectModel3D(obj3D, 0);
     _fixInfo = new EffectFixInfo();
 }
 public static IEnumerator LoadEffectTexture(IEffectModel3D effect, string imageUrl)
 {
     //            while (effect.meshRender == null)
     //            {
     //                yield return null;
     //            }
     //
     //            imageUrl = imageUrl.Replace(".atf", ".png");
     //            var assetPath = GetEffectAssetPath(imageUrl);
     //
     //            var loadOperation = AssetPool.Instance.LoadAndAdd<Texture2D>(assetPath);
     //            yield return loadOperation.Operation;
     //            var texture = loadOperation.Result;
     //            if (texture == null)
     //            {
     //                _logger.ErrorFormat("Failed to load free effect texture {0} ", assetPath);
     //                yield break;
     //            }
     //
     //            if (effect.meshRender is SpriteRenderer)
     //            {
     //                var width = texture.width;
     //                var height = texture.height;
     //                (effect.meshRender as SpriteRenderer).sprite = Sprite.Create(texture, new Rect(0, 0, width, height),
     //                    new Vector2(0.5f, 0.5f), 100f, 0, SpriteMeshType.FullRect);
     //                if (width > height)
     //                {
     //                    var scale = effect.meshRender.transform.localScale;
     //                    scale.x = ((float)(height) / width);
     //                    effect.meshRender.transform.localScale = scale;
     //                }
     //                else
     //                {
     //                    var scale = effect.meshRender.transform.localScale;
     //                    scale.y = -((float)(width) / height);
     //                    effect.meshRender.transform.localScale = scale;
     //                }
     //            }
     //            else
     //            {
     //                var mat = effect.material;
     //
     //                mat.mainTexture = texture;
     //            }
     yield break;
 }
 public static IEnumerator LoadParticle(IEffectModel3D effect, string url)
 {
     //            var assetPath = GetParticleAssetPath(url);
     //
     //            var loadOperation = AssetPool.Instance.LoadAndAdd<GameObject>(assetPath);
     //            yield return loadOperation.Operation;
     //
     //            if (loadOperation.Result == null)
     //            {
     //                _logger.ErrorFormat("failed to load particle {0}", assetPath);
     //                yield break;
     //            }
     //
     //            var go = GameObject.Instantiate(loadOperation.Result);
     //            go.transform.parent = effect.gameObject.transform;
     //
     //            go.transform.localPosition = Vector3.zero;
     //            go.transform.localScale = new Vector3(-1, 1, 1);
     //            go.transform.localEulerAngles = new Vector3(0, 90, 0);
     yield break;
 }
 public static IEnumerator LoadEffectModel(IEffectModel3D effect, string modelUrl)
 {
     //            if (!string.IsNullOrEmpty(modelUrl))
     //            {
     //                modelUrl = modelUrl.Replace(".wmdl", ".prefab");
     //                var assetPath = GetEffectAssetPath(modelUrl);
     //                var loadOperation = AssetPool.Instance.LoadAndAdd<GameObject>(assetPath);
     //                yield return loadOperation.Operation;
     //
     //                if (loadOperation.Result == null)
     //                {
     //                    _logger.ErrorFormat("failed to load effect model {0}", assetPath);
     //                    yield break;
     //                }
     //
     //                var meshObj = GameObject.Instantiate(loadOperation.Result);
     //                meshObj.transform.parent = effect.gameObject.transform;
     //
     //                meshObj.transform.localPosition = Vector3.zero;
     //                meshObj.transform.localScale = new Vector3(1, 1, 1);
     //                meshObj.transform.localEulerAngles = new Vector3(0, 0, 0);
     //
     //                var meshRender = meshObj.GetComponentInChildren<MeshRenderer>();
     //                meshRender.shadowCastingMode = ShadowCastingMode.Off;
     //                effect.meshRender = meshRender;
     //            }
     //            else
     //            {
     //                var go = effect.gameObject;
     //                var spriteObj = new GameObject("Sprite");
     //                spriteObj.transform.parent = go.transform;
     //
     //                spriteObj.transform.localPosition = Vector3.zero;
     //                spriteObj.transform.localScale = new Vector3(1, -1, 1);
     //                spriteObj.transform.localEulerAngles = new Vector3(90, 270, 0);
     //
     //                var spriteRender = spriteObj.AddComponent<SpriteRenderer>();
     //                effect.meshRender = spriteRender;
     //            }
     //
     //            var mat = new Material(Shader.Find("SSJJ/Diffuse"));
     //            if (effect.depthMode == 0 || effect.depthMode == 1)
     //            {
     //                mat.SetInt("_ZTest", (int)CompareFunction.LessEqual);
     //            }
     //            else
     //            {
     //                mat.SetInt("_ZTest", (int)CompareFunction.Always);
     //            }
     //            if (effect.depthMode == 0 || effect.depthMode == 2)
     //            {
     //                mat.SetInt("_ZWrite", 1);
     //            }
     //            else
     //            {
     //                mat.SetInt("_ZWrite", 0);
     //            }
     //            mat.mainTexture = GetTransparentTexture();
     //            mat.renderQueue = RenderQueueConstant.SceneObjectTransparnt;
     //            effect.material = mat;
     yield break;
 }