﻿function MiComportamiento()
{
    var enabled = true;
    var viewer = null; //puntero al visor manipulado
    this.getEnabled=function()
    {
        return enabled;
    }
    this.setEnabled=function(enable)
    {
       enabled = enable;
    }
    this.init=function(v)
    {
        viewer = v;
        //suscripción a dobleclick del visor
        viewer.subscribeEvent(WVEventType.DOUBLE_CLICK, onDoubleClick);
    }

    var dX, dY, gVisor;
    var cont = 0;
    var numVeces = 15;
    function onDoubleClick(visor, utmX, utmY)
    {
        if (enabled)
        {
            gVisor = visor;

            //posición central del visor en UTM
            var vCenter = visor.getCenterUtm();
            //posición central en píxels
            var pxCenter = visor.transformWorldToLocal(vCenter.x, vCenter.y);
            //posición de destino en píxels
            var px = visor.transformWorldToLocal(utmX, utmY);
            //desplaza la vista desde el centro al destino
            
            dX = (pxCenter.x - px.x) / numVeces;
            dY = (pxCenter.y - px.y) / numVeces;
            //visor.move(pxCenter.x - px.x, pxCenter.y - px.y);
        }
    }

    this.onUpdate=function(deltaTime)
    {
        //status=deltaTime;
        //Do nothing ;-)
            
        if(gVisor)
        {
            gVisor.move(dX, dY);
            cont++;
            if(cont>=numVeces)
            {
                gVisor.ZoomIn();
                gVisor = null;
                cont = 0;
            }
        }
    }
    
    this.dispose=function()
    {
        //elimina suscripción a evento
        viewer.unsubscribeEvent(WVEventType.DOUBLE_CLICK, onDoubleClick);
    }
}
