fobe-web/globals/Dependencies/Assets/Render.php

424 lines
17 KiB
PHP

<?php
/*
Fobe 2021
*/
namespace Fobe\Assets {
use Fobe\Common\HashingUtiltity;
use Fobe\Grid\RccServiceHelper;
use Fobe\UI\ImageHelper;
use PDO;
class Render
{
public static function RenderHat(int $assetid, bool $fork=false)
{
if ($fork) {
$job = popen("cd C:/Alphaland/WebserviceTools/RenderTools && start /B php backgroundRenderJob.php ".$assetid." hat", "r"); //throwaway background process
if ($job !== FALSE); {
pclose($job);
return true;
}
return false;
} else {
$thumbnailScript = file_get_contents($GLOBALS['hatthumbnailscript']);
$soap = new RccServiceHelper($GLOBALS['thumbnailArbiter']);
$soap = $soap->BatchJobEx(
$soap->ConstructGenericJob(gen_uuid(), 60, 0, 3, "Render Hat ".$assetid, $thumbnailScript, array(
$assetid,
"https://www.idk16.xyz/asset/?id=".$assetid,
"https://www.idk16.xyz/",
"png",
"1500",
"1500"
))
);
if (!is_soap_fault($soap)) {
Render::Update($assetid, $soap);
return true;
}
return false;
}
}
public static function RenderTShirt(int $assetid, bool $fork=false)
{
if ($fork) {
$job = popen("cd C:/Alphaland/WebserviceTools/RenderTools && start /B php backgroundRenderJob.php ".$assetid." tshirt", "r"); //throwaway background process
if ($job !== FALSE); {
pclose($job);
return true;
}
return false;
} else {
$thumbnailScript = file_get_contents($GLOBALS['tshirtthumbnailscript']);
$soap = new RccServiceHelper($GLOBALS['thumbnailArbiter']);
$soap = $soap->BatchJobEx(
$soap->ConstructGenericJob(gen_uuid(), 60, 0, 3, "Render TShirt ".$assetid, $thumbnailScript, array(
$assetid,
"https://www.idk16.xyz/asset/?id=".$assetid,
"https://www.idk16.xyz/asset/?id=41",
"https://www.idk16.xyz/",
"png",
"1500",
"1500"
))
);
if (!is_soap_fault($soap)) {
Render::Update($assetid, $soap);
return true;
}
return false;
}
}
public static function RenderShirt(int $assetid, bool $fork=false)
{
if ($fork) {
$job = popen("cd C:/Alphaland/WebserviceTools/RenderTools && start /B php backgroundRenderJob.php ".$assetid." shirt", "r"); //throwaway background process
if ($job !== FALSE); {
pclose($job);
return true;
}
return false;
} else {
$thumbnailScript = file_get_contents($GLOBALS['shirtthumbnailscript']);
$soap = new RccServiceHelper($GLOBALS['thumbnailArbiter']);
$soap = $soap->BatchJobEx(
$soap->ConstructGenericJob(gen_uuid(), 60, 0, 3, "Render Shirt ".$assetid, $thumbnailScript, array(
$assetid,
"https://www.idk16.xyz/asset/?id=".$assetid,
"https://www.idk16.xyz/asset/?id=41",
"https://www.idk16.xyz/",
"png",
"1500",
"1500"
))
);
if (!is_soap_fault($soap)) {
Render::Update($assetid, $soap);
return true;
}
return false;
}
}
public static function RenderPants(int $assetid, bool $fork=false)
{
if ($fork) {
$job = popen("cd C:/Alphaland/WebserviceTools/RenderTools && start /B php backgroundRenderJob.php ".$assetid." pants", "r"); //throwaway background process
if ($job !== FALSE); {
pclose($job);
return true;
}
return false;
} else {
$thumbnailScript = file_get_contents($GLOBALS['pantsthumbnailscript']);
$soap = new RccServiceHelper($GLOBALS['thumbnailArbiter']);
$soap = $soap->BatchJobEx(
$soap->ConstructGenericJob(gen_uuid(), 60, 0, 3, "Render Pants ".$assetid, $thumbnailScript, array(
$assetid,
"https://www.idk16.xyz/asset/?id=".$assetid,
"https://www.idk16.xyz/asset/?id=41",
"https://www.idk16.xyz/",
"png",
"1500",
"1500"
))
);
if (!is_soap_fault($soap)) {
Render::Update($assetid, $soap);
return true;
}
return false;
}
}
public static function RenderFace(int $assetid, bool $fork=false)
{
if ($fork) {
$job = popen("cd C:/Alphaland/WebserviceTools/RenderTools && start /B php backgroundRenderJob.php ".$assetid." face", "r"); //throwaway background process
if ($job !== FALSE); {
pclose($job);
return true;
}
return false;
} else {
$thumbnailScript = file_get_contents($GLOBALS['facethumbnailscript']);
$soap = new RccServiceHelper($GLOBALS['thumbnailArbiter']);
$soap = $soap->BatchJobEx(
$soap->ConstructGenericJob(gen_uuid(), 60, 0, 3, "Render Face ".$assetid, $thumbnailScript, array(
$assetid,
"https://www.idk16.xyz/asset/?id=".$assetid,
"https://www.idk16.xyz/",
"png",
"1500",
"1500"
))
);
if (!is_soap_fault($soap)) {
Render::Update($assetid, $soap);
return true;
}
return false;
}
}
public static function RenderHead(int $assetid, bool $fork=false)
{
if ($fork) {
$job = popen("cd C:/Alphaland/WebserviceTools/RenderTools && start /B php backgroundRenderJob.php ".$assetid." head", "r"); //throwaway background process
if ($job !== FALSE); {
pclose($job);
return true;
}
return false;
} else {
$thumbnailScript = file_get_contents($GLOBALS['headthumbnailscript']);
$soap = new RccServiceHelper($GLOBALS['thumbnailArbiter']);
$soap = $soap->BatchJobEx(
$soap->ConstructGenericJob(gen_uuid(), 60, 0, 3, "Render Head ".$assetid, $thumbnailScript, array(
$assetid,
"https://www.idk16.xyz/asset/?id=".$assetid,
"https://www.idk16.xyz/asset/?id=41",
"https://www.idk16.xyz/",
"png",
"1500",
"1500"
))
);
if (!is_soap_fault($soap)) {
Render::Update($assetid, $soap);
return true;
}
return false;
}
}
public static function RenderGear(int $assetid, bool $fork=false)
{
if ($fork) {
$job = popen("cd C:/Alphaland/WebserviceTools/RenderTools && start /B php backgroundRenderJob.php ".$assetid." gear", "r"); //throwaway background process
if ($job !== FALSE); {
pclose($job);
return true;
}
return false;
} else {
$thumbnailScript = file_get_contents($GLOBALS['gearthumbnailscript']);
$soap = new RccServiceHelper($GLOBALS['thumbnailArbiter']);
$soap = $soap->BatchJobEx(
$soap->ConstructGenericJob(gen_uuid(), 60, 0, 3, "Render Gear ".$assetid, $thumbnailScript, array(
$assetid,
"https://www.idk16.xyz/asset/?id=".$assetid,
"png",
"1500",
"1500",
"https://www.idk16.xyz/"
))
);
if (!is_soap_fault($soap)) {
Render::Update($assetid, $soap);
return true;
}
return false;
}
}
public static function RenderPackage(int $assetid, bool $fork=false)
{
if ($fork) {
$job = popen("cd C:/Alphaland/WebserviceTools/RenderTools && start /B php backgroundRenderJob.php ".$assetid." package", "r"); //throwaway background process
if ($job !== FALSE); {
pclose($job);
return true;
}
return false;
} else {
$thumbnailScript = file_get_contents($GLOBALS['packagescript']);
$soap = new RccServiceHelper($GLOBALS['thumbnailArbiter']);
$soap = $soap->BatchJobEx(
$soap->ConstructGenericJob(gen_uuid(), 60, 0, 3, "Render Package ".$assetid, $thumbnailScript, array(
$assetid,
"https://www.idk16.xyz/asset/?id=27112025;https://www.idk16.xyz/asset/?id=27112039;https://www.idk16.xyz/asset/?id=27112052",
"https://www.idk16.xyz/",
"https://www.idk16.xyz/asset/?id=41",
"https://www.idk16.xyz/",
"png",
"1500",
"1500"
))
);
if (!is_soap_fault($soap)) {
Render::Update($assetid, $soap);
return true;
}
return false;
}
}
public static function RenderModel(int $assetid, bool $fork=false)
{
if ($fork) {
$job = popen("cd C:/Alphaland/WebserviceTools/RenderTools && start /B php backgroundRenderJob.php ".$assetid." model", "r"); //throwaway background process
if ($job !== FALSE); {
pclose($job);
return true;
}
return false;
} else {
$thumbnailScript = file_get_contents($GLOBALS['modelthumbnailscript']);
$soap = new RccServiceHelper($GLOBALS['thumbnailArbiter']);
$soap = $soap->BatchJobEx(
$soap->ConstructGenericJob(gen_uuid(), 60, 0, 3, "Render Model ".$assetid, $thumbnailScript, array(
$assetid,
"https://www.idk16.xyz/asset/?id=".$assetid,
"https://www.idk16.xyz/",
"png",
"1500",
"1500"
))
);
if (!is_soap_fault($soap)) {
Render::Update($assetid, $soap);
return true;
}
return false;
}
}
public static function RenderMesh(int $assetid, bool $fork=false)
{
if ($fork) {
$job = popen("cd C:/Alphaland/WebserviceTools/RenderTools && start /B php backgroundRenderJob.php ".$assetid." mesh", "r"); //throwaway background process
if ($job !== FALSE); {
pclose($job);
return true;
}
return false;
} else {
$thumbnailScript = file_get_contents($GLOBALS['meshthumbnailscript']);
$soap = new RccServiceHelper($GLOBALS['thumbnailArbiter']);
$soap = $soap->BatchJobEx(
$soap->ConstructGenericJob(gen_uuid(), 60, 0, 3, "Render Mesh ".$assetid, $thumbnailScript, array(
$assetid,
"https://www.idk16.xyz/asset/?id=".$assetid,
"https://www.idk16.xyz/",
"png",
"1500",
"1500"
))
);
if (!is_soap_fault($soap)) {
Render::Update($assetid, $soap);
return true;
}
return false;
}
}
public static function RenderPlace(int $assetid, bool $fork=false)
{
if ($fork) {
$job = popen("cd C:/Alphaland/WebserviceTools/RenderTools && start /B php backgroundRenderJob.php ".$assetid." place", "r"); //throwaway background process
if ($job !== FALSE); {
pclose($job);
return true;
}
return false;
} else {
$thumbnailScript = file_get_contents($GLOBALS['placethumbnailscript']);
$soap = new RccServiceHelper($GLOBALS['thumbnailArbiter']);
$soap = $soap->BatchJobEx(
$soap->ConstructGenericJob(gen_uuid(), 60, 0, 3, "Render Place ".$assetid, $thumbnailScript, array(
$assetid,
"https://www.idk16.xyz/asset/?id=".$assetid,
"https://www.idk16.xyz/",
"png",
"1536",
"864"
))
);
if (!is_soap_fault($soap)) {
Render::Update($assetid, $soap, true);
return true;
}
return false;
}
}
private static function Update(int $assetid, $soapobject, $placerender=false)
{
$rendersPath = $GLOBALS['renderCDNPath'];
$render = base64_decode($soapobject->BatchJobExResult->LuaValue[0]->value);
if (ImageHelper::IsBase64PNGImage($render)) //PNG
{
$newhash = HashingUtiltity::VerifyMD5(md5($render));
if(file_get_contents($rendersPath . $newhash)) {
return false;
}
if ($placerender) {
if(!ImageHelper::ResizeImageFromString(768 , 432 , $rendersPath . $newhash, $render)) { //scale down for a SLIGHT AA effect
return false;
}
if (getAssetInfo($assetid)->isPersonalServer == 1) {
$render = imagecreatefrompng($rendersPath . $newhash);
$overlay = imagecreatefrompng($GLOBALS['pbsOverlayPath']);
ImageHelper::CopyMergeImageAlpha($render, $overlay, 0, 0, 0, 0, imagesx($render), imagesy($render), 100);
if (!imagepng($render, $rendersPath . $newhash)) {
return false;
}
}
}
else
{
if(!ImageHelper::ResizeImageFromString(750 , 750 , $rendersPath . $newhash, $render)) { //scale down for a SLIGHT AA effect
return false;
}
}
//delete old hash
$prevhash = $GLOBALS['pdo']->prepare("SELECT * FROM assets WHERE id = :i");
$prevhash->bindParam(":i", $assetid, PDO::PARAM_INT);
$prevhash->execute();
$prevhash = $prevhash->fetch(PDO::FETCH_OBJ);
$oldhash = $prevhash->ThumbHash;
unlink($rendersPath . $oldhash);
if ($placerender) {
//update place thumbhash n details
$c = $GLOBALS['pdo']->prepare("UPDATE assets SET isPlaceRendered = 1, IconImageAssetId = 0, ThumbHash = :n WHERE id = :i");
$c->bindParam(":n", $newhash, PDO::PARAM_INT); //item price
$c->bindParam(":i", $assetid, PDO::PARAM_INT); //catalog id
$c->execute();
} else {
//set new hash
$newthumbhash = $GLOBALS['pdo']->prepare("UPDATE assets SET ThumbHash = :h WHERE id = :i");
$newthumbhash->bindParam(":h", $newhash, PDO::PARAM_STR);
$newthumbhash->bindParam(":i", $assetid, PDO::PARAM_INT);
$newthumbhash->execute();
}
return true;
}
return false;
}
}
}