<krpano>
<STYLE name="default-shadow" fillcolor="0x000000" fillalpha="0.6" bordercolor="0x000000" borderalpha="0.6" borderwidth="2.0" zorder="0" keep="false" handcursor="false"/>
<STYLE name="default-arrow" fillcolor="0xd7d7d7" fillalpha="1.0" bordercolor="0xd7d7d7" borderalpha="1.0" borderwidth="2.0" onover="set(fillcolor,0xffffff);set(bordercolor,0xffffff);" onout="set(fillcolor,0xd7d7d7);set(bordercolor,0xd7d7d7);" zorder="50" keep="false"/>
<LAYER name="default-arrow-shape" keep="true">
<ARROW>
<POINT name="p0" x="0" y="40"/>
<POINT name="p1" x="-9" y="35"/>
<POINT name="p2" x="0" y="57"/>
<POINT name="p3" x="9" y="35"/>
<CENTER dist="180" shadowdrop="0.35">
<FUNCTIONV>
<POINT name="p0" vlookat="0" posv="16"/>
<POINT name="p1" vlookat="90" posv="90"/>
</FUNCTIONV>
</CENTER>
</ARROW>
</LAYER>
<ACTION name="addHotSpotWithStyle">addhotspot(%1);hotspot[%1].loadstyle(%2);</ACTION>
<ACTION name="addHotSpotIfMissing">txtadd(sh,%1,'shadow');if(hotspot[%1].style===null,set(shadow,true);if(layer[connections].connection[%1].shadow===false,set(shadow,false));if(layer[connections].connection[%1].arrowstyle===null,if(style[default-arrow].shadow===false,set(shadow,false));,if(style[get(layer[connections].connection[%1].arrowstyle)].shadow===false,set(shadow,false)););if(shadow,if(layer[connections].connection[%1].shadowstyle===null,addHotSpotWithStyle(get(sh),'default-shadow');,addHotSpotWithStyle(get(sh),get(layer[connections].connection[%1].shadowstyle));););if(layer[connections].connection[%1].arrowstyle===null,addHotSpotWithStyle(%1,'default-arrow');,addHotSpotWithStyle(%1,get(layer[connections].connection[%1].arrowstyle)););if(layer[connections].connection[%1].onclick===null,txtadd(hotspot[%1].onclick,'loadscene(',%1,',null,KEEPVIEW,BLEND(0.2));');,copy(hotspot[%1].onclick,layer[connections].connection[%1].onclick););if(layer[connections].connection[%1].onover!==null,copy(hotspot[%1].onover,layer[connections].connection[%1].onover););if(layer[connections].connection[%1].onhover!==null,copy(hotspot[%1].onhover,layer[connections].connection[%1].onhover););if(layer[connections].connection[%1].onout!==null,copy(hotspot[%1].onout,layer[connections].connection[%1].onout););if(layer[connections].connection[%1].ondown!==null,copy(hotspot[%1].ondown,layer[connections].connection[%1].ondown););if(layer[connections].connection[%1].onup!==null,copy(hotspot[%1].onup,layer[connections].connection[%1].onup);););copy(hotspot[get(sh)].visible,hotspot[%1].visible);</ACTION>
<ACTION name="drawArrow">txtadd(sh,%1,'shadow');addHotSpotIfMissing(%1);div(deg2rad,Math.PI,180.0);sub(fr,view.hlookat,%2);mul(fr,deg2rad);Math.sin(sfr,fr);Math.cos(cfr,fr);set(ltv,null);set(gtv,null);set(ltposv,null);set(gtposv,null);if(layer[%3].arrow.center.functionv===null,copy(fptcnt,layer[default-arrow-shape].arrow.center.functionv.point.count);,copy(fptcnt,layer[%3].arrow.center.functionv.point.count););for(set(fpt,0),fpt LT fptcnt,inc(fpt),if(layer[%3].arrow.center.functionv===null,copy(vn,layer[default-arrow-shape].arrow.center.functionv.point[get(fpt)].vlookat);copy(posvn,layer[default-arrow-shape].arrow.center.functionv.point[get(fpt)].posv);,copy(vn,layer[%3].arrow.center.functionv.point[get(fpt)].vlookat);copy(posvn,layer[%3].arrow.center.functionv.point[get(fpt)].posv););if(vn LT view.vlookat,if(ltv===null,copy(ltv,vn);copy(ltposv,posvn);,if(vn GT ltv,copy(ltv,vn);copy(ltposv,posvn);););,if(gtv===null,copy(gtv,vn);copy(gtposv,posvn);,if(vn LT gtv,copy(gtv,vn);copy(gtposv,posvn);););););if(gtv==null,copy(posv,ltposv);,if(ltv==null,copy(posv,gtposv);,sub(diff,gtv,ltv);sub(posv,gtposv,ltposv);div(posv,diff);sub(diff,view.vlookat,ltv);mul(posv,diff);add(posv,ltposv);););add(posvs,posv,layer[%3].arrow.center.shadowdrop);mul(basev,posv,deg2rad);Math.sin(basev);mul(basev,layer[%3].arrow.center.dist);mul(basevs,posvs,deg2rad);Math.sin(basevs);mul(basevs,layer[%3].arrow.center.dist);for(set(num,0),num LT layer[%3].arrow.point.count,inc(num),mul(crx,layer[%3].arrow.point[get(num)].x,cfr);mul(crx1,layer[%3].arrow.point[get(num)].y,sfr);sub(crx,crx1);mul(cry,layer[%3].arrow.point[get(num)].y,cfr);mul(cry1,layer[%3].arrow.point[get(num)].x,sfr);add(cry,cry1);mul(cry1,posv,deg2rad);Math.cos(cry1);mul(cry1,layer[%3].arrow.center.dist);add(cry,cry1);Math.atan2(ph,crx,cry);div(ph,deg2rad);ifnot(hotspot[get(sh)].style===null,add(hotspot[get(sh)].point[get(num)].ath,ph,view.hlookat););add(hotspot[%1].point[get(num)].ath,ph,view.hlookat);mul(crx1,crx,crx);mul(distc,cry,cry);add(distc,crx1);Math.sqrt(distc);Math.atan2(pv,basevs,distc);ifnot(hotspot[get(sh)].style===null,div(hotspot[get(sh)].point[get(num)].atv,pv,deg2rad););Math.atan2(pv,basev,distc);div(hotspot[%1].point[get(num)].atv,pv,deg2rad););</ACTION>
<ACTION name="updateConnections">for(set(i,0),i LT layer[connections].connection.count,inc(i),if(layer[connections].connection[get(i)].shape===null,set(shape,'default-arrow-shape');,copy(shape,layer[connections].connection[get(i)].shape););drawArrow(get(layer[connections].connection[get(i)].name),get(layer[connections].connection[get(i)].hdir),get(shape)););</ACTION>
<EVENTS name="arrows-update" onloadcomplete="set(allowarrows, 1);updateConnections();" onviewchange="if(allowarrows == 1, updateConnections(););" keep="true"/>
</krpano>