start_controls_section( 'section_content', [ 'label' => esc_html__( '3D Model', 'elementor-addon' ), ] ); $this->add_control( 'model_url', [ 'label' => esc_html__( 'Model URL', 'elementor-addon' ), 'type' => Controls_Manager::TEXT, 'label_block' => true, 'default' => ELEMENTOR_ADDON_URL . 'assets/models/Logo_Hashtalk_Model.gltf', 'placeholder' => 'https://example.com/model.gltf', ] ); $this->add_responsive_control( 'height', [ 'label' => esc_html__( 'Height', 'elementor-addon' ), 'type' => Controls_Manager::SLIDER, 'size_units' => [ 'px', 'vh' ], 'range' => [ 'px' => [ 'min' => 160, 'max' => 900, ], 'vh' => [ 'min' => 20, 'max' => 100, ], ], 'default' => [ 'size' => 520, 'unit' => 'px', ], 'selectors' => [ '{{WRAPPER}} .hashtalk-3d-element' => 'height: {{SIZE}}{{UNIT}};', ], ] ); $this->add_control( 'auto_rotate_speed', [ 'label' => esc_html__( 'Auto Rotate Speed', 'elementor-addon' ), 'type' => Controls_Manager::NUMBER, 'min' => 0, 'max' => 0.08, 'step' => 0.001, 'default' => 0.008, ] ); $this->add_control( 'cursor_strength', [ 'label' => esc_html__( 'Cursor Tracking Strength', 'elementor-addon' ), 'type' => Controls_Manager::NUMBER, 'min' => 0, 'max' => 1.5, 'step' => 0.05, 'default' => 0.45, ] ); $this->add_control( 'floating_strength', [ 'label' => esc_html__( 'Floating Strength', 'elementor-addon' ), 'type' => Controls_Manager::NUMBER, 'min' => 0, 'max' => 0.5, 'step' => 0.01, 'default' => 0.06, ] ); $this->add_control( 'model_scale', [ 'label' => esc_html__( 'Model Scale', 'elementor-addon' ), 'type' => Controls_Manager::NUMBER, 'min' => 0.1, 'max' => 10, 'step' => 0.1, 'default' => 2.6, ] ); $this->add_control( 'camera_z', [ 'label' => esc_html__( 'Camera Distance', 'elementor-addon' ), 'type' => Controls_Manager::NUMBER, 'min' => 1, 'max' => 20, 'step' => 0.1, 'default' => 5, ] ); $this->end_controls_section(); } protected function render() { $settings = $this->get_settings_for_display(); $model_url = ! empty( $settings['model_url'] ) ? $settings['model_url'] : $this->get_default_model_url(); $model_url = $this->normalize_model_url( $model_url ); $config = [ 'modelUrl' => esc_url_raw( $model_url ), 'autoRotateSpeed' => isset( $settings['auto_rotate_speed'] ) ? (float) $settings['auto_rotate_speed'] : 0.008, 'cursorStrength' => isset( $settings['cursor_strength'] ) ? (float) $settings['cursor_strength'] : 0.45, 'floatingStrength' => isset( $settings['floating_strength'] ) ? (float) $settings['floating_strength'] : 0.06, 'modelScale' => isset( $settings['model_scale'] ) ? (float) $settings['model_scale'] : 2.6, 'cameraZ' => isset( $settings['camera_z'] ) ? (float) $settings['camera_z'] : 5, ]; ?>
get_default_model_url(); } // Fix: http://wp-content/plugins/... $url = preg_replace( '#^https?://wp-content/#i', '/wp-content/', $url ); // Fix: wp-content/plugins/... if ( 0 === strpos( $url, 'wp-content/' ) ) { $url = '/' . $url; } // Fix: /wp-content/plugins/... if ( 0 === strpos( $url, '/wp-content/' ) ) { $url = home_url( $url ); } if ( is_ssl() ) { $url = set_url_scheme( $url, 'https' ); } return $url; } }