Skip to content

Commit cf9caee

Browse files
authored
feat(model-3d-viewer): show single item model (#167)
1 parent 5030e63 commit cf9caee

File tree

2 files changed

+50
-17
lines changed

2 files changed

+50
-17
lines changed

src/acore-wp-plugin/src/Hooks/WooCommerce/FieldElements.php

Lines changed: 39 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -117,17 +117,18 @@ public static function destAccount(): void {
117117
public static function get3dViewer(int $itemId = 0): void {
118118

119119
global $post;
120-
$custom_3d_checkbox = get_post_meta($post->ID, '_custom_3d_checkbox', true);
120+
$is_3d_enabled = get_post_meta($post->ID, '_custom_3d_checkbox', true) === 'yes';
121121
$race = get_post_meta($post->ID, '_3d_race', true);
122122
$gender = get_post_meta($post->ID, '_3d_gender', true);
123123
$gender = $gender === '2' ? rand(0, 1) : $gender;
124124
$creatureDisplayId = get_post_meta($post->ID, '_3d_displayid', true);
125+
$isSingleItem = get_post_meta($post->ID, '_3d_single_item', true) === 'yes';
125126

126127
if ($itemId === 0 && $creatureDisplayId === '') {
127128
return;
128129
}
129130

130-
if ($custom_3d_checkbox !== 'yes') {
131+
if (!$is_3d_enabled) {
131132
return;
132133
}
133134

@@ -140,19 +141,41 @@ public static function get3dViewer(int $itemId = 0): void {
140141
function show3dModel(displayId, entity, inventoryType=0, race=1, gender=0) {
141142
let model;
142143
if (entity === 'item') {
143-
const character = {
144-
race,
145-
gender,
146-
skin: 0,
147-
face: 0,
148-
hairStyle: 0,
149-
hairColor: 0,
150-
facialStyle: 0,
151-
items: [
152-
[inventoryType, displayId],
153-
],
144+
<?php if ($isSingleItem) { ?>
145+
146+
const HEAD_INVENTORY_TYPE = 1;
147+
const SHOULDER_INVENTORY_TYPE = 3;
148+
const WEAPONS_INVENTORY_TYPE =[13,14,15,17,21,22,23,25,26];
149+
let type;
150+
151+
if (WEAPONS_INVENTORY_TYPE.includes(inventoryType)) {
152+
type = 1; // WEAPON
153+
} else if (inventoryType === HEAD_INVENTORY_TYPE) {
154+
type = 2; // HEAD
155+
} else if (inventoryType === SHOULDER_INVENTORY_TYPE) {
156+
type = 4; // SHOULDER
157+
}
158+
159+
model = {
160+
type,
161+
id: displayId,
154162
};
155-
model = character;
163+
<?php } else { ?>
164+
const character = {
165+
race,
166+
gender,
167+
skin: 0,
168+
face: 0,
169+
hairStyle: 0,
170+
hairColor: 0,
171+
facialStyle: 0,
172+
items: [
173+
[inventoryType, displayId],
174+
],
175+
};
176+
model = character;
177+
<?php } ?>
178+
156179
}
157180
else if (entity === 'npc') {
158181
model = {
@@ -175,7 +198,8 @@ function show3dModel(displayId, entity, inventoryType=0, race=1, gender=0) {
175198
fetch('https://wowgaming.altervista.org/modelviewer/data/get-displayid.php?type=item&id=<?= $itemId ?>')
176199
.then(response => response.text())
177200
.then(data => {
178-
const [displayId, entity, inventoryType] = data.split(',');
201+
let [displayId, entity, inventoryType] = data.split(',');
202+
inventoryType = Number(inventoryType);
179203
<?php if ($race !== '' && $gender !== '') { ?>
180204
show3dModel(displayId, entity, inventoryType, <?= $race ?>, <?= $gender ?>);
181205
<?php } else { ?>

src/acore-wp-plugin/src/Hooks/WooCommerce/Products.php

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,22 @@ function add_custom_3d_checkbox_fields() {
6161
),
6262
));
6363

64+
woocommerce_wp_checkbox( array(
65+
'id' => '_3d_single_item',
66+
'label' => __('Show single item', 'woocommerce'),
67+
'description' => __('Show 3D model of the single item (valid only for Head, Shoulder and Weapons).', 'woocommerce'),
68+
));
69+
6470
echo '</div>';
6571
}
6672

6773
add_action('woocommerce_process_product_meta', 'save_3d_checkbox_field');
6874
function save_3d_checkbox_field($post_id) {
69-
$custom_checkbox = isset($_POST['_custom_3d_checkbox']) ? 'yes' : 'no';
70-
update_post_meta($post_id, '_custom_3d_checkbox', $custom_checkbox);
75+
$enable_3d = isset($_POST['_custom_3d_checkbox']) ? 'yes' : 'no';
76+
update_post_meta($post_id, '_custom_3d_checkbox', $enable_3d);
77+
78+
$isSingleItem = isset($_POST['_3d_single_item']) ? 'yes' : 'no';
79+
update_post_meta($post_id, '_3d_single_item', $isSingleItem);
7180

7281
$custom_text_input = isset($_POST['_3d_displayid']) ? sanitize_text_field($_POST['_3d_displayid']) : '';
7382
update_post_meta($post_id, '_3d_displayid', $custom_text_input);

0 commit comments

Comments
 (0)