exists() && 'bricks' === get_template()) { require_once WPVR_PLUGIN_LEGACY_DIR_PATH . 'bricks/bricks.php'; } /** * Currently plugin version. * Start at version 1.0.0 and use SemVer - https://semver.org * Rename this for your plugin and update it as you release new versions. */ define( 'WPVR_WEBHOOK_URL', sanitize_url( 'https://rextheme.com/?mailmint=1&route=webhook&topic=contact&hash=bbd19901-6d42-4ae5-a7a8-01eb1013c553' ) ); if ( ! defined( 'WPVR_TELEMETRY_API_KEY' ) ) { define( 'WPVR_TELEMETRY_API_KEY', 'phc_amk3VQz1P5ZqZOMRRoWM1B41QMFpf3hu8pg7yRfzSXW' ); } if ( ! defined( 'WPVR_TELEMETRY_API_SECRET' ) ) { define( 'WPVR_TELEMETRY_API_SECRET', 'sec_dfb2ab8e84391ae7a0f9' ); } if ( ! defined( 'WPVR_TELEMETRY_HOST' ) ) { define( 'WPVR_TELEMETRY_HOST', 'https://eu.i.posthog.com' ); } if ( ! function_exists( 'activate_wpvr' ) ) { /** * The code that runs during plugin activation. * This action is documented in includes/class-wpvr-activator.php */ function activate_wpvr() { require_once WPVR_PLUGIN_LEGACY_DIR_PATH . 'includes/class-wpvr-activator.php'; Wpvr_Activator::activate(); // Trigger plugin activation tracking do_action( 'wpvr_plugin_activated' ); } } if ( ! function_exists( 'deactivate_wpvr' ) ) { /** * The code that runs during plugin deactivation. * This action is documented in includes/class-wpvr-deactivator.php */ function deactivate_wpvr() { require_once WPVR_PLUGIN_LEGACY_DIR_PATH . 'includes/class-wpvr-deactivator.php'; Wpvr_Deactivator::deactivate(); // Trigger plugin deactivation tracking do_action( 'wpvr_plugin_deactivated' ); } } register_activation_hook( WPVR_FILE, 'activate_wpvr' ); register_deactivation_hook( WPVR_FILE, 'deactivate_wpvr' ); /** * The core plugin class that is used to define internationalization, * admin-specific hooks, and public-facing site hooks. */ require WPVR_PLUGIN_LEGACY_DIR_PATH . 'includes/class-wpvr.php'; // Include banner classes require_once WPVR_PLUGIN_LEGACY_DIR_PATH . 'admin/classes/class-wpvr-occasion-banner.php'; require_once WPVR_PLUGIN_LEGACY_DIR_PATH . 'admin/classes/class-wpvr-sells-notification-bar.php'; require_once WPVR_PLUGIN_LEGACY_DIR_PATH . 'admin/classes/class-wpvr-first-tour-banner.php'; require_once WPVR_PLUGIN_LEGACY_DIR_PATH . 'admin/classes/class-wpvr-onboarding-notice.php'; require_once WPVR_PLUGIN_LEGACY_DIR_PATH . 'admin/classes/class-wpvr-new-user-tour.php'; if ( defined( 'WPB_VC_VERSION' ) ) { require_once WPVR_PLUGIN_LEGACY_DIR_PATH . 'builders/wpbakery/wpvr-loader.php'; if ( class_exists( 'Vc_Manager' ) ) { require_once WPVR_PLUGIN_LEGACY_DIR_PATH . 'builders/wpbakery/wpvr-element.php'; } } /** * Begins execution of the plugin. * * Since everything within the plugin is registered via hooks, * then kicking off the plugin from this point in the file does * not affect the page life cycle. * * @since 7.3.6 */ function run_wpvr() { $plugin = new Wpvr(); $plugin->run(); // new Tracker(); // black friday banner class initialization // new WPVR_Special_Occasion_Banner( // 'halloween_deal_2025', // '2025-10-01 00:00:01', // '2025-11-05 23:59:59' // ); if (!defined('WPVR_PRO_VERSION') && 'no' === get_option('wpvr_sell_eid_ul_fitr_2026_notification_bar', 'no')) { new WPVR_Notification_Bar( 'Eid_Ul_Fitr_2026', '2026-03-16 00:00:00', '2026-03-24 23:59:59' ); } // Initialize first tour banner new WPVR_First_Tour_Banner(); // Initialize listing-page onboarding notice ("Remind me later" flow) new WPVR_Onboarding_Notice(); // Auto-launch guided tour for truly-new users on the Add New Tour page. new WPVR_New_User_Tour(); // Pro preview banner (shown via JS when free user toggles Advanced Controls) if (!defined('WPVR_PRO_VERSION')) { add_action('admin_notices', 'wpvr_render_pro_preview_banner', 11); } } run_wpvr(); /** * Render Pro preview banner as admin notice. * Hidden by default; shown via JS when free user toggles Advanced Controls. * * @since 8.5.44 */ function wpvr_render_pro_preview_banner() { $screen = get_current_screen(); if (!$screen || $screen->id !== 'wpvr_item') { return; } ?>
'off', 'panDownSwitch' => 'off', 'panLeftSwitch' => 'off', 'panRightSwitch' => 'off', 'panZoomInSwitch' => 'off', 'panZoomOutSwitch' => 'off', 'panFullscreenSwitch' => 'off', 'gyroscopeSwitch' => 'off', 'backToHomeSwitch' => 'off', ) ); $gyro_enabled = isset( $postdata['gyro'] ) && in_array( $postdata['gyro'], array( true, 1, '1', 'on' ), true ); $gyro_button_enabled = function_exists( 'wpvr_isMobileDevice' ) && wpvr_isMobileDevice() && $gyro_enabled && 'on' === $custom_control['gyroscopeSwitch']; $custom_navigation_enabled = $gyro_button_enabled; foreach ( array( 'panupSwitch', 'panDownSwitch', 'panLeftSwitch', 'panRightSwitch', 'panZoomInSwitch', 'panZoomOutSwitch', 'panFullscreenSwitch', 'backToHomeSwitch', ) as $switch ) { if ( 'on' === $custom_control[ $switch ] ) { $custom_navigation_enabled = true; break; } } if ( $custom_navigation_enabled ) { return $html; } $pano_id = 'pano' . absint( $id ); $sprites_url = esc_url( WPVR_PLUGIN_PUBLIC_DIR_URL . 'lib/pannellum/src/css/img/sprites.svg' ); $html .= ''; return $html; } } add_filter( 'wpvr_generate_tour_layout_html', 'wpvr_restore_modern_layout_default_controls', 20, 3 ); if ( ! function_exists( 'wpvr_render_scene_info_row' ) ) { /** * Keep scene title and author metadata aligned for every tour layout. * * WP VR Pro can replace the Pannellum asset registered by the Free plugin and * adds Modern layout CSS at priority 10. This late, tour-scoped layer keeps * both Pannellum copies and both layouts consistent without modifying Pro. * * @param string $html Generated tour HTML. * @param array $postdata Saved tour settings. * @param int $id Tour post ID. * * @return string * @since 9.0.0 */ function wpvr_render_scene_info_row( $html, $postdata, $id ) { $pano_id = 'pano' . absint( $id ); $pano_id_json = wp_json_encode( $pano_id ); $by_label = wp_json_encode( __( 'By', 'wpvr' ) ); $tour_layout = is_array( $postdata['tourLayout'] ?? null ) ? ( $postdata['tourLayout']['layout'] ?? 'default' ) : ( $postdata['tourLayout'] ?? 'default' ); $is_classic_layout = wp_json_encode( 'layout1' !== $tour_layout ); $html .= ' '; return $html; } } add_filter( 'wpvr_generate_tour_layout_html', 'wpvr_render_scene_info_row', 30, 3 ); if ( ! function_exists( 'wpvr_render_explainer_button' ) ) { /** * Render the WPVR explainer button independently. * * @param array|null $custom_control * @param array $postdata * @param bool $is_pro * @param bool $autoload * @param string $explainer_right * @param int|string $id * * @return string * @since 8.5.63 */ function wpvr_render_explainer_button( $custom_control, $postdata, $is_pro, $autoload, $explainer_right, $id ) { $html = ''; $explainer_enabled = isset( $postdata['explainerSwitch'] ) && in_array( $postdata['explainerSwitch'], array( true, 1, '1', 'on' ), true ); $explainer_icon = 'fa fa-video'; $explainer_color = '#f7fffb'; if ( isset( $custom_control ) ) { $explainer_icon = isset( $custom_control['explainerIcon'] ) ? $custom_control['explainerIcon'] : $explainer_icon; $explainer_color = isset( $custom_control['explainerColor'] ) ? $custom_control['explainerColor'] : $explainer_color; } elseif ( isset( $postdata['customcontrol'] ) ) { $raw_control = wpvr_parse_custom_control( $postdata['customcontrol'] ); $explainer_icon = isset( $raw_control['explainerIcon'] ) ? $raw_control['explainerIcon'] : $explainer_icon; $explainer_color = isset( $raw_control['explainerColor'] ) ? $raw_control['explainerColor'] : $explainer_color; } $pro_license_status = get_option( 'wpvr_edd_license_status' ); if ( $explainer_enabled && $pro_license_status === 'valid' && $is_pro ) { $explainer_style = empty( $postdata['explainerContent'] ) ? 'pointer-events: none; opacity: 0.5;' : ''; // Initial display:none to prevent flash for non-autoload tours. $initial_display = ! $autoload ? 'display:none; ' : ''; $html .= ''; } return $html; } } // Linno telemetry integration function wpvr_block() { wp_register_script( 'wpvr-block', plugins_url('build/index.build.js', __FILE__), array('wp-blocks', 'wp-element', 'wp-components', 'wp-editor') ); if (is_admin()) { wp_enqueue_style( 'gutyblocks/guty-block', plugins_url('src/view.css', __FILE__), array() ); } if (function_exists('register_block_type')) { register_block_type('wpvr/wpvr-block', array( 'attributes' => array( 'id' => array( 'type' => 'string', 'default' => '0', ), 'width' => array( 'type' => 'string', 'default' => '600', ), 'width_unit' => array( 'type' => 'string', 'default' => 'px', ), 'height' => array( 'type' => 'string', 'default' => '400', ), 'height_unit' => array( 'type' => 'string', 'default' => 'px', ), 'mobile_height' => array( 'type' => 'string', 'default' => '300', ), 'mobile_height_unit' => array( 'type' => 'string', 'default' => 'px', ), 'radius' => array( 'type' => 'string', 'default' => '0', ), 'border_width' => array( 'type' => 'string', 'default' => '0px', ), 'border_style' => array( 'type' => 'string', 'default' => 'none', ), 'border_color' => array( 'type' => 'string', 'default' => 'none', ), 'radius_unit' => array( 'type' => 'string', 'default' => 'px', ), 'content' => array( 'type' => 'string', 'source' => 'html', 'default' => '' ), ), 'editor_script' => 'wpvr-block', 'render_callback' => 'wpvr_block_render', )); } } add_action('init', 'wpvr_block'); function wpvr_block_render($attributes) { if ( function_exists( 'wpvr_enqueue_frontend_scripts' ) ) { wpvr_enqueue_frontend_scripts( 'scene' ); } if (isset($attributes['id'])) { $id = $attributes['id']; } else { $id = 0; } do_action('rex_wpvr_embadded_tour', $id); $memberpress_active = defined('MEPR_VERSION'); $rcp_active = is_plugin_active( 'restrict-content-pro/restrict-content-pro.php' ); if (($memberpress_active || $rcp_active ) && apply_filters('is_wpvr_pro_active', false)) { if (!is_user_logged_in()) { return esc_html__('You need to log in to access this content.', 'wpvr'); } $user_id = get_current_user_id(); $allowed_access = false; // Get saved membership levels from post meta $allowed_membership_levels = get_post_meta($id, '_wpvr_allowed_roles_levels', true); if ( isset($allowed_membership_levels) && 'none' !== $allowed_membership_levels ) { if (!is_array($allowed_membership_levels)) { $allowed_membership_levels = array($allowed_membership_levels); } // Check MemberPress Access if ($memberpress_active) { $user = new MeprUser($user_id); $active_memberships = $user->active_product_subscriptions(); if (array_intersect($allowed_membership_levels, $active_memberships) ) { $allowed_access = true; } } // Check Restrict Content Pro Access if ($rcp_active) { $user_rcp_memberships = rcp_get_customer_memberships($user_id); foreach ($user_rcp_memberships as $membership) { $rcp_access_level = array( $membership->get_object_id() ); if (array_intersect($allowed_membership_levels, $rcp_access_level) ) { $allowed_access = true; break; } } } } else { // If no membership restriction is set, allow access by default $allowed_access = true; } if (!$allowed_access) { return esc_html__('You do not have access to this content.', 'wpvr'); } } if (isset($attributes['width'])) { $width = $attributes['width']; } if (isset($attributes['width_unit'])) { $width_unit = $attributes['width_unit']; } if (isset($attributes['height'])) { $height = $attributes['height']; } if (isset($attributes['height_unit'])) { $height_unit = $attributes['height_unit']; } if (isset($attributes['mobile_height'])) { $mobile_height = $attributes['mobile_height']; } if (isset($attributes['mobile_height_unit'])) { $mobile_height_unit = $attributes['mobile_height_unit']; } if (isset($attributes['radius']) && isset($attributes['radius_unit'])) { $radius = $attributes['radius'] . $attributes['radius_unit']; } $border_style = ''; if (isset($attributes['border_width'], $attributes['border_style'], $attributes['border_color'])) { $border_style = $attributes['border_width'] . 'px ' . $attributes['border_style'] . ' ' . $attributes['border_color']; } if (isset($attributes['className'])) { $className = $attributes['className']; } else { $className = ''; } $get_post = get_post_status($id); if ($get_post !== 'publish') { return esc_html__('Oops! It seems like this post isn\'t published yet. Stay tuned for updates!', 'wpvr'); } if (post_password_required($id)) { return get_the_password_form(); } $postdata = get_post_meta($id, 'panodata', true); $postdata = is_array( $postdata ) ? wpvr_get_effective_panodata( $postdata ) : []; $panoid = 'pano' . $id; $panoid2 = 'pano2' . $id; if (!isset($postdata) || empty($postdata)) { return wp_kses( __('Oops! It seems that you have not selected any tour yet. Please select a tour from the dropdown of WPVR block.\s*(]*>)\s*
\s*<\/p>/i',
function ($matches) {
return $matches[1];
},
$hotspot_data['hotspot-hover'] ?? ''
);
$is_fluent_form = isset($hotspot_data["hotspot-type"]) && 'fluent_form' === $hotspot_data["hotspot-type"];
$on_hover_content = sanitize_content_preserve_styles($on_hover_content ?? '', false);
$on_click_content = preg_replace_callback('/]*>/', "replace_callback", $hotspot_content ?? '');
$on_click_content = sanitize_content_preserve_styles($on_click_content ?? '', $is_fluent_form);
// Shape is independent of the optional custom icon in the
// new editor, so it must always be included in the public
// hotspot configuration.
$hotspot_shape = isset( $hotspot_data['hotspot-shape'] )
&& in_array( $hotspot_data['hotspot-shape'], [ 'round', 'square', 'hexagon' ], true )
? $hotspot_data['hotspot-shape']
: 'round';
$hotspot_data_for_on_click=[];
if( ('info' === $hotspot_type || 'fluent_form' === $hotspot_data["hotspot-type"] ) && !empty($on_click_content)){
$hotspot_data_for_on_click = [
'on_click_content' => $on_click_content,
'tour_id' => $id,
'scene_id' => $panoscenes['scene-id'],
'hotspot_id' => sanitize_html_class($hotspot_data['hotspot-title']),
];
} elseif('info' === $hotspot_type && !empty($hotspot_data["hotspot-url"])){
$hotspot_data_for_on_click = [
'on_click_content' => '',
'tour_id' => $id,
'scene_id' => $panoscenes['scene-id'],
'hotspot_id' => sanitize_html_class($hotspot_data['hotspot-title']),
];
}
$hotspot_info = array(
'text' => esc_html(sanitize_text_field($hotspot_data['hotspot-title'])),
'pitch' => $hotspot_data['hotspot-pitch'],
'yaw' => $hotspot_data['hotspot-yaw'],
'type' => $hotspot_type,
'cssClass' => $hotspot_data['hotspot-customclass'],
'URL' => $hotspot_data['hotspot-url'],
"wpvr_url_open" => $wpvr_url_open,
"clickHandlerArgs" => $hotspot_data_for_on_click,
'createTooltipArgs' => !empty(trim($on_hover_content)) ? trim($on_hover_content) : '',
"sceneId" => $hotspot_data["hotspot-scene"],
"targetPitch" => (float)$hotspot_scene_pitch,
"targetYaw" => (float)$hotspot_scene_yaw,
'hotspot_type' => $hotspot_data['hotspot-type'],
'hotspot_shape' => $hotspot_shape,
);
$hotspot_info['URL'] = ($hotspot_data['hotspot-type'] === 'fluent_form' || $hotspot_data['hotspot-type'] === 'wc_product') ? '' : $hotspot_info['URL'];
if ($hotspot_data["hotspot-customclass"] == 'none' || $hotspot_data["hotspot-customclass"] == '') {
unset($hotspot_info["cssClass"]);
}
if (empty($hotspot_data["hotspot-scene"])) {
unset($hotspot_info['targetPitch']);
unset($hotspot_info['targetYaw']);
}
array_push($hotspots, $hotspot_info);
}
$device_scene = $panoscenes['scene-attachment-url'];
$mobile_media_resize = get_option('mobile_media_resize');
$file_accessible = ini_get('allow_url_fopen');
if ($mobile_media_resize == "true" && $device_scene) {
if ($file_accessible == "1") {
$image_info = getimagesize($device_scene);
if ($image_info && $image_info[0] > 4096) {
$src_to_id_for_mobile = '';
$src_to_id_for_desktop = '';
if (wpvr_isMobileDevice()) {
$src_to_id_for_mobile = attachment_url_to_postid($panoscenes['scene-attachment-url']);
if ($src_to_id_for_mobile) {
$mobile_scene = wp_get_attachment_image_src($src_to_id_for_mobile, 'wpvr_mobile');
if ($mobile_scene[3]) {
$device_scene = $mobile_scene[0];
}
}
} else {
$src_to_id_for_desktop = attachment_url_to_postid($panoscenes['scene-attachment-url']);
if ($src_to_id_for_desktop) {
$desktop_scene = wp_get_attachment_image_src($src_to_id_for_mobile, 'full');
if ($desktop_scene && $desktop_scene[0]) {
$device_scene = $desktop_scene[0];
}
}
}
}
}
}
$scene_info = array();
if ($panoscenes["scene-type"] == 'cubemap') {
$pano_type = 'cubemap';
$pano_attachment = array(
$panoscenes["scene-attachment-url-face0"],
$panoscenes["scene-attachment-url-face1"],
$panoscenes["scene-attachment-url-face2"],
$panoscenes["scene-attachment-url-face3"],
$panoscenes["scene-attachment-url-face4"],
$panoscenes["scene-attachment-url-face5"]
);
$scene_info = array('type' => $panoscenes['scene-type'], 'cubeMap' => $pano_attachment, "pitch" => $default_scene_pitch, "maxPitch" => $scene_max_pitch, "minPitch" => $scene_min_pitch, "maxYaw" => $scene_max_yaw, "minYaw" => $scene_min_yaw, "yaw" => $default_scene_yaw, "hfov" => $default_zoom, "maxHfov" => $max_zoom, "minHfov" => $min_zoom, "title" => $scene_ititle, "author" => $scene_author, "authorURL" => $scene_author_url, "vaov" => $scene_vaov, "haov" => $scene_haov, "vOffset" => $scene_vertical_offset, 'hotSpots' => $hotspots);
} else {
$scene_info = array('type' => $panoscenes['scene-type'], 'panorama' => $device_scene, "pitch" => $default_scene_pitch, "maxPitch" => $scene_max_pitch, "minPitch" => $scene_min_pitch, "maxYaw" => $scene_max_yaw, "minYaw" => $scene_min_yaw, "yaw" => $default_scene_yaw, "hfov" => $default_zoom, "maxHfov" => $max_zoom, "minHfov" => $min_zoom, "title" => $scene_ititle, "author" => $scene_author, "authorURL" => $scene_author_url, "vaov" => $scene_vaov, "haov" => $scene_haov, "vOffset" => $scene_vertical_offset, 'hotSpots' => $hotspots);
}
if (isset($panoscenes["ptyscene"])) {
if ($panoscenes["ptyscene"] == "off") {
unset($scene_info['pitch']);
unset($scene_info['yaw']);
}
}
if (!$show_scene_info || empty($panoscenes["scene-ititle"])) {
unset($scene_info['title']);
}
if (!$show_scene_info || empty($panoscenes["scene-author"])) {
unset($scene_info['author']);
}
if (!$show_scene_info || empty($panoscenes["scene-author-url"])) {
unset($scene_info['authorURL']);
}
if (empty($scene_vaov)) {
unset($scene_info['vaov']);
}
if (empty($scene_haov)) {
unset($scene_info['haov']);
}
if (empty($scene_vertical_offset)) {
unset($scene_info['vOffset']);
}
if (isset($panoscenes["cvgscene"])) {
if ($panoscenes["cvgscene"] == "off") {
unset($scene_info['maxPitch']);
unset($scene_info['minPitch']);
}
}
if (empty($panoscenes["scene-maxpitch"])) {
unset($scene_info['maxPitch']);
}
if (empty($panoscenes["scene-minpitch"])) {
unset($scene_info['minPitch']);
}
if (isset($panoscenes["chgscene"])) {
if ($panoscenes["chgscene"] == "off") {
unset($scene_info['maxYaw']);
unset($scene_info['minYaw']);
}
}
if (empty($panoscenes["scene-maxyaw"])) {
unset($scene_info['maxYaw']);
}
if (empty($panoscenes["scene-minyaw"])) {
unset($scene_info['minYaw']);
}
// if (isset($panoscenes["czscene"])) {
// if ($panoscenes["czscene"] == "off") {
// unset($scene_info['hfov']);
// unset($scene_info['maxHfov']);
// unset($scene_info['minHfov']);
// }
// }
$scene_array = array();
$scene_array = array(
$panoscenes['scene-id'] => $scene_info
);
$scene_data[$panoscenes['scene-id']] = $scene_info;
}
}
}
$pano_id_array = array();
$pano_id_array = array('panoid' => $panoid);
$pano_response = array();
$pano_response = array('autoLoad' => $autoload, 'showControls' => $control, 'compass' => $compass, 'orientationOnByDefault' => $gyro_orientation, 'mouseZoom' => $mouseZoom, 'draggable' => $draggable, 'disableKeyboardCtrl' => $diskeyboard, 'keyboardZoom' => $keyboardzoom, "preview" => $preview, "autoRotate" => $autorotation, "autoRotateInactivityDelay" => $autorotationinactivedelay, "autoRotateStopDelay" => $autorotationstopdelay, 'default' => $default_data, 'scenes' => $scene_data);
if (empty($autorotation)) {
unset($pano_response['autoRotate']);
unset($pano_response['autoRotateInactivityDelay']);
unset($pano_response['autoRotateStopDelay']);
}
if (empty($autorotationinactivedelay)) {
unset($pano_response['autoRotateInactivityDelay']);
}
if (empty($autorotationstopdelay)) {
unset($pano_response['autoRotateStopDelay']);
}
$response = array();
$response = array($pano_id_array, $pano_response);
if (!empty($response)) {
$response = json_encode($response);
}
if (empty($width)) {
$width = '600';
}
if (empty($height)) {
$height = '400';
}
if ('fullwidth' == $width) {
$width = "100%";
}
$foreground_color = '#fff';
$pulse_color = wpvr_hex2rgb($hotspoticoncolor);
$rgb = wpvr_HTMLToRGB($hotspoticoncolor);
$hsl = wpvr_RGBToHSL($rgb);
if ($hsl->lightness > 200) {
$foreground_color = '#000000';
} else {
$foreground_color = '#fff';
}
$class = 'myclass';
$html = 'test';
$html = '';
$html .= '';
$scene_animation = isset($postdata['sceneAnimation']) ? $postdata['sceneAnimation'] : 'off';
$scene_animation_enabled = in_array( $scene_animation, array( 'on', '1', 1, true ), true );
if( $scene_animation_enabled && is_plugin_active( 'wpvr-pro/wpvr-pro.php' ) ) {
$animation_type = isset($postdata['sceneAnimationName']) ? $postdata['sceneAnimationName'] : 'none';
$animation_type = $animation_type === 'fade' ? 'fade_in' : $animation_type;
$animationDuration = isset($postdata['sceneAnimationTransitionDuration']) ? $postdata['sceneAnimationTransitionDuration'] : '500ms';
$animationDelay = isset($postdata['sceneAnimationTransitionDelay']) ? $postdata['sceneAnimationTransitionDelay'] : '0ms';
$animation_css = apply_filters('wpvr_tour_scene_animation',$animation_type,$animationDuration, $animationDelay, $postdata,$id);
$html .= $animation_css;
}
if (wpvr_isMobileDevice()) {
$html .= '