diff --git a/web/app/Http/Controllers/Api/ThumbnailController.php b/web/app/Http/Controllers/Api/ThumbnailController.php
index 2177861..84f97eb 100644
--- a/web/app/Http/Controllers/Api/ThumbnailController.php
+++ b/web/app/Http/Controllers/Api/ThumbnailController.php
@@ -52,19 +52,25 @@ class ThumbnailController extends Controller
$valid = $validator->valid();
$model = ('App\\Models\\' . $renderType)::where('id', $valid['id'])->first();
+ $valid['type'] = strtolower($valid['type']);
+
if($renderType == 'User') {
if($valid['position'] == null)
$valid['position'] = 'Full';
$valid['position'] = strtolower($valid['position']);
} elseif($renderType == 'Asset') {
+ if(!$model->{$valid['type'] == '3d' ? 'canRender3D' : 'isRenderable'}()) {
+ $validator->errors()->add('id', 'This asset cannot be rendered.');
+ return ValidationHelper::generateValidatorError($validator);
+ }
+
// TODO: XlXi: Turn this into a switch case and fill in the rest of the unrenderables.
// Things like HTML assets should just have a generic "default" image.
if($model->assetTypeId == 1)
$model = Asset::where('id', $model->parentAsset)->first();
}
- $valid['type'] = strtolower($valid['type']);
if($model->thumbnail2DHash && $valid['type'] == '2d')
return response(['status' => 'success', 'data' => route('content', $model->thumbnail2DHash)]);
diff --git a/web/app/Models/asset.php b/web/app/Models/asset.php
index 855a7e5..a906df8 100644
--- a/web/app/Models/asset.php
+++ b/web/app/Models/asset.php
@@ -151,6 +151,74 @@ class Asset extends Model
return $this->belongsTo(AssetVersion::class, 'assetVersionId');
}
+ public function isWearable()
+ {
+ switch($this->assetTypeId)
+ {
+ case 2: // T-Shirt
+ case 8: // Hat
+ case 11: // Shirt
+ case 12: // Pants
+ case 17: // Head
+ case 18: // Face
+ case 19: // Gear
+ case 25: // Arms
+ case 26: // Legs
+ case 27: // Torso
+ case 28: // Right Arm
+ case 29: // Left Arm
+ case 30: // Left Leg
+ case 31: // Right Leg
+ case 32: // Package
+ return true;
+ }
+
+ return false;
+ }
+
+ public function isRenderable()
+ {
+ switch($this->assetTypeId)
+ {
+ case 2: // T-Shirt
+ case 4: // Mesh
+ case 8: // Hat
+ case 9: // Place
+ case 10: // Model
+ case 11: // Shirt
+ case 12: // Pants
+ case 13: // Decal
+ case 17: // Head
+ case 18: // Face
+ case 19: // Gear
+ case 25: // Arms
+ case 26: // Legs
+ case 27: // Torso
+ case 28: // Right Arm
+ case 29: // Left Arm
+ case 30: // Left Leg
+ case 31: // Right Leg
+ case 32: // Package
+ return true;
+ }
+
+ return false;
+ }
+
+ public function canRender3D()
+ {
+ switch($this->assetTypeId)
+ {
+ case 9: // Place
+ case 10: // Model
+ case 13: // Decal
+ case 18: // Face
+ return false;
+ }
+
+ return $this->isRenderable();
+ }
+
public function getThumbnail()
{
$renderId = $this->id;
diff --git a/web/resources/js/components/ThumbnailTool.js b/web/resources/js/components/ThumbnailTool.js
index 1dbe14c..65b86d7 100644
--- a/web/resources/js/components/ThumbnailTool.js
+++ b/web/resources/js/components/ThumbnailTool.js
@@ -88,7 +88,7 @@ const Scene = ({json}) => {
/>
*/}
-