protected override void OnHide(bool isShutdown, object userData)
 {
     base.OnHide(isShutdown, userData);
     entityDataRadiusVisualiser  = null;
     transform.localPosition     = Vector3.zero;
     radiusVisualizer.localScale = Vector3.zero;
 }
        public static EntityDataRadiusVisualiser Create(float radius, object userData = null)
        {
            EntityDataRadiusVisualiser entityData = ReferencePool.Acquire <EntityDataRadiusVisualiser>();

            entityData.Radius = radius;
            return(entityData);
        }
        public void ShowPreviewTower(TowerData towerData)
        {
            if (towerData == null)
            {
                return;
            }

            previewTowerData   = towerData;
            uiMaskFormSerialId = GameEntry.UI.OpenUIForm(EnumUIForm.UIMask);


            entityLoader.ShowEntity <EntityTowerPreview>(towerData.PreviewEntityId, (entity) =>
            {
                previewTowerEntity      = entity;
                previewTowerEntityLogic = entity.Logic as EntityTowerPreview;
                if (previewTowerEntityLogic == null)
                {
                    Log.Error("Entity '{0}' logic type invaild, need EntityTowerPreview", previewTowerEntity.Id);
                    return;
                }

                TowerLevelData towerLevelData = towerData.GetTowerLevelData(0);
                if (towerLevelData == null)
                {
                    Log.Error("Tower '{0}' Level '{1}' data is null.", towerData.Name, 0);
                }

                EntityDataRadiusVisualiser entityDataRadiusVisualiser = EntityDataRadiusVisualiser.Create(towerLevelData.Range);

                entityLoader.ShowEntity <EntityRadiusVisualizer>(EnumEntity.RadiusVisualiser, (entityRadiusVisualizer) =>
                {
                    GameEntry.Entity.AttachEntity(entityRadiusVisualizer, previewTowerEntity);
                },
                                                                 entityDataRadiusVisualiser);

                isBuilding = true;
            },
                                                         EntityDataTowerPreview.Create(towerData));
        }
        protected override void OnShow(object userData)
        {
            base.OnShow(userData);

            radiusVisualizer.localEulerAngles = localEuler;

            entityDataRadiusVisualiser = userData as EntityDataRadiusVisualiser;
            if (entityDataRadiusVisualiser == null)
            {
                Log.Error("EntityDataRadiusVisualiser data is invalid.");
                return;
            }

            radiusVisualizer.localScale = Vector3.one * entityDataRadiusVisualiser.Radius * 2.0f;

            var visualizerRenderer = radiusVisualizer.GetComponent <Renderer>();

            if (visualizerRenderer != null)
            {
                visualizerRenderer.material.color = color;
            }
        }