Expanded source path resolution
This commit is contained in:
@@ -23,6 +23,7 @@
|
|||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>
|
* along with this program. If not, see <https://www.gnu.org/licenses/>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import QtCore
|
||||||
import QtQuick
|
import QtQuick
|
||||||
|
|
||||||
import com.github.digitalartifex.komplex 1.0 as Komplex
|
import com.github.digitalartifex.komplex 1.0 as Komplex
|
||||||
@@ -154,16 +155,14 @@ Item
|
|||||||
if (pack.channel3)
|
if (pack.channel3)
|
||||||
channelOutput.iChannel3 = parseChannel(pack.channel3);
|
channelOutput.iChannel3 = parseChannel(pack.channel3);
|
||||||
|
|
||||||
var source
|
channelOutput.source = getFilePath(pack.source); // Set the shader source file
|
||||||
|
|
||||||
// Ensure the source path is correctly resolved for relative paths
|
|
||||||
if(!pack.source.startsWith("/") && !pack.source.startsWith("file://"))
|
|
||||||
source = Qt.resolvedUrl(shaderPackModel.shaderPackPath + "/" + pack.source);
|
|
||||||
else if(!pack.source.startsWith("file://"))
|
|
||||||
source = Qt.resolvedUrl("file://" + pack.source);
|
|
||||||
|
|
||||||
channelOutput.source = "file://" + (source || ""); // Set the shader source file
|
|
||||||
channelOutput.type = ShaderChannel.Type.ShaderChannel; // Set the shader
|
channelOutput.type = ShaderChannel.Type.ShaderChannel; // Set the shader
|
||||||
|
|
||||||
|
if(pack.mouse_scale)
|
||||||
|
channelOutput.mouseBias = pack.mouse_scale
|
||||||
|
|
||||||
|
if(pack.speed)
|
||||||
|
channelOutput.iTimeScale = pack.speed
|
||||||
}
|
}
|
||||||
|
|
||||||
// Recursive helper function to parse channels
|
// Recursive helper function to parse channels
|
||||||
@@ -171,13 +170,7 @@ Item
|
|||||||
{
|
{
|
||||||
if (!channel) return;
|
if (!channel) return;
|
||||||
|
|
||||||
var source
|
var source = getFilePath(channel.source)
|
||||||
|
|
||||||
// Ensure the source path is correctly resolved for relative paths
|
|
||||||
if(!channel.source.startsWith("/") && !channel.source.startsWith("file://"))
|
|
||||||
source = Qt.resolvedUrl(shaderPackModel.shaderPackPath + "/" + channel.source);
|
|
||||||
else if(!channel.source.startsWith("file://"))
|
|
||||||
source = Qt.resolvedUrl("file://" + channel.source);
|
|
||||||
|
|
||||||
var result = Qt.createQmlObject(`ShaderChannel
|
var result = Qt.createQmlObject(`ShaderChannel
|
||||||
{
|
{
|
||||||
@@ -190,6 +183,7 @@ Item
|
|||||||
type: ${channel.type || 0}
|
type: ${channel.type || 0}
|
||||||
iTime: mainItem.iTime * ${channel.time_scale || 1.0}
|
iTime: mainItem.iTime * ${channel.time_scale || 1.0}
|
||||||
iMouse: mainItem.iMouse
|
iMouse: mainItem.iMouse
|
||||||
|
mouseBias: ${channel.mouse_scale || 1.0}
|
||||||
iResolution: Qt.vector3d(${(channel.resolution_x || mainItem.width) * (channel.resolution_scale || 1.0)}, ${(channel.resolution_y || mainItem.width) * (channel.resolution_scale || 1.0)}, pixelRatio)
|
iResolution: Qt.vector3d(${(channel.resolution_x || mainItem.width) * (channel.resolution_scale || 1.0)}, ${(channel.resolution_y || mainItem.width) * (channel.resolution_scale || 1.0)}, pixelRatio)
|
||||||
}`, mainItem);
|
}`, mainItem);
|
||||||
|
|
||||||
@@ -204,4 +198,24 @@ Item
|
|||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getFilePath(source)
|
||||||
|
{
|
||||||
|
if(source === "")
|
||||||
|
return "";
|
||||||
|
|
||||||
|
// Ensure the source path is correctly resolved for relative paths
|
||||||
|
if(source.startsWith("./"))
|
||||||
|
{
|
||||||
|
var temp = source.replace("./", "file://" + shaderPackModel.shaderPackPath + "/")
|
||||||
|
return Qt.resolvedUrl(temp);
|
||||||
|
}
|
||||||
|
else if(source.startsWith("$/"))
|
||||||
|
{
|
||||||
|
var temp = source.replace("$/", "file://" + StandardPaths.writableLocation(StandardPaths.HomeLocation) + "/.local/share/komplex/")
|
||||||
|
return Qt.resolvedUrl(temp);
|
||||||
|
}
|
||||||
|
else if(!source.startsWith("file://"))
|
||||||
|
return Qt.resolvedUrl("file://" + source);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user