Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
342 changes: 342 additions & 0 deletions extensions/community/Skew2D.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,342 @@
{
"author": "Game Developer",
"category": "Visual Effect",
"extensionNamespace": "",
"fullName": "Skew2D",
"gdevelopVersion": "",
"helpPath": "https://pixijs.download/dev/docs/utils.Transform.html",
"iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLXNrZXctbW9yZSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xMi41LDExTDEwLjQxLDIwSDUuNUw3LjU5LDExSDEyLjVNMTUsOUg2TDMsMjJIMTJMMTUsOU0yMSw2TDE3LDJWNUg5VjdIMTdWMTBMMjEsNloiIC8+PC9zdmc+",
"name": "Skew2D",
"previewIconUrl": "https://asset-resources.gdevelop.io/public-resources/Icons/d1d36fa9263f970531afbd53ea4703353188bc871551780fd7d87768ad2e50cf_skew-more.svg",
"shortDescription": "Actions and conditions for modifying the skew (shear) of 2D objects.\n",
"version": "0.0.1",
"description": [
"add skew"
],
"origin": {
"identifier": "Skew2D",
"name": "gdevelop-extension-store"
},
"tags": [
"2D",
"Visual Effects",
"Graphics"
],
"authorIds": [
"sXdoMxxHF7hAXkEPRO8oZcfnBgC2",
"ZAQ6cbLJW6ZcBQERMymnsWO25WF3"
],
"dependencies": [],
"globalVariables": [],
"sceneVariables": [],
"eventsFunctions": [
{
"description": "Get the horizontal X skew value.",
"fullName": "Skew X value",
"functionType": "Expression",
"getterName": "SkewX",
"name": "SkewX",
"sentence": "",
"events": [
{
"type": "BuiltinCommonInstructions::JsCode",
"inlineCode": [
"const object = objects[0];",
"",
"if (!object) {",
" eventsFunctionContext.returnValue = 0;",
" return;",
"}",
"",
"try {",
" const rendererObject = object.getRendererObject();",
" ",
" if (rendererObject && rendererObject.skew) {",
" // PixiJS uses radians, convert to degrees for GDevelop user",
" eventsFunctionContext.returnValue = gdjs.toDegrees(rendererObject.skew.x);",
" } else {",
" eventsFunctionContext.returnValue = 0;",
" }",
"} catch (error) {",
" eventsFunctionContext.returnValue = 0;",
"}"
],
"parameterObjects": "Object",
"useStrict": true,
"eventsSheetExpanded": true
}
],
"expressionType": {
"type": "expression"
},
"parameters": [
{
"description": "Object",
"name": "Object",
"type": "objectList"
}
],
"objectGroups": []
},
{
"description": "Get the vertical Y skew value.",
"fullName": "Skew Y value",
"functionType": "Expression",
"getterName": "SkewY",
"name": "SkewY",
"sentence": "",
"events": [
{
"type": "BuiltinCommonInstructions::JsCode",
"inlineCode": [
"const object = objects[0];",
"",
"if (!object) {",
" eventsFunctionContext.returnValue = 0;",
" return;",
"}",
"",
"try {",
" const rendererObject = object.getRendererObject();",
" ",
" if (rendererObject && rendererObject.skew) {",
" // PixiJS uses radians, convert to degrees for GDevelop user",
" eventsFunctionContext.returnValue = gdjs.toDegrees(rendererObject.skew.y);",
" } else {",
" eventsFunctionContext.returnValue = 0;",
" }",
"} catch (error) {",
" eventsFunctionContext.returnValue = 0;",
"}"
],
"parameterObjects": "Object",
"useStrict": true,
"eventsSheetExpanded": true
}
],
"expressionType": {
"type": "expression"
},
"parameters": [
{
"description": "Object",
"name": "Object",
"type": "objectList"
}
],
"objectGroups": []
},
{
"description": "Sets the X skew value for the object (in degrees).",
"fullName": "Set Skew X",
"functionType": "Action",
"name": "SetSkewX",
"sentence": "Set the X skew of _Object_ to _Value_",
"events": [
{
"type": "BuiltinCommonInstructions::JsCode",
"inlineCode": [
"const object = objects[0];",
"const value = eventsFunctionContext.getArgument('Value');",
"",
"if (!object) {",
" return;",
"}",
"",
"try {",
" const rendererObject = object.getRendererObject();",
" ",
" if (rendererObject && rendererObject.skew) {",
" // GDevelop events use degrees, PixiJS uses radians. Convert.",
" rendererObject.skew.x = gdjs.toRad(value);",
" }",
"} catch (error) {",
" console.error('2D Skew X Action Error:', error);",
"}"
],
"parameterObjects": "Object",
"useStrict": true,
"eventsSheetExpanded": true
}
],
"parameters": [
{
"description": "Object",
"name": "Object",
"type": "objectList"
},
{
"description": "New X skew value (in degrees)",
"name": "Value",
"type": "expression"
}
],
"objectGroups": []
},
{
"description": "Sets the Y skew value for the object (in degrees).",
"fullName": "Set Skew Y",
"functionType": "Action",
"name": "SetSkewY",
"sentence": "Set the Y skew of _Object_ to _Value_",
"events": [
{
"type": "BuiltinCommonInstructions::JsCode",
"inlineCode": [
"const object = objects[0];",
"const value = eventsFunctionContext.getArgument('Value');",
"",
"if (!object) {",
" return;",
"}",
"",
"try {",
" const rendererObject = object.getRendererObject();",
" ",
" if (rendererObject && rendererObject.skew) {",
" // GDevelop events use degrees, PixiJS uses radians. Convert.",
" rendererObject.skew.y = gdjs.toRad(value);",
" }",
"} catch (error) {",
" console.error('2D Skew Y Action Error:', error);",
"}"
],
"parameterObjects": "Object",
"useStrict": true,
"eventsSheetExpanded": true
}
],
"parameters": [
{
"description": "Object",
"name": "Object",
"type": "objectList"
},
{
"description": "New Y skew value (in degrees)",
"name": "Value",
"type": "expression"
}
],
"objectGroups": []
},
{
"description": "Compare the object's X skew (in degrees).",
"fullName": "Skew X",
"functionType": "Condition",
"name": "SkewXCondition",
"sentence": "The X skew of _Object_ is _Operator_ _Value_",
"events": [
{
"type": "BuiltinCommonInstructions::JsCode",
"inlineCode": [
"const object = objects[0];",
"const operator = eventsFunctionContext.getArgument('Operator');",
"const value = eventsFunctionContext.getArgument('Value');",
"",
"if (!object) {",
" eventsFunctionContext.returnValue = false;",
" return;",
"}",
"",
"try {",
" const rendererObject = object.getRendererObject();",
" ",
" if (rendererObject && rendererObject.skew) {",
" // Get skew in degrees to compare with the user-provided value (in degrees)",
" const currentSkew = gdjs.toDegrees(rendererObject.skew.x);",
" eventsFunctionContext.returnValue = gdjs.evtTools.common.compare(currentSkew, operator, value);",
" } else {",
" // If skew property is missing, assume 0 for comparison",
" eventsFunctionContext.returnValue = gdjs.evtTools.common.compare(0, operator, value);",
" }",
"} catch (error) {",
" eventsFunctionContext.returnValue = false;",
"}"
],
"parameterObjects": "Object",
"useStrict": true,
"eventsSheetExpanded": true
}
],
"parameters": [
{
"description": "Object",
"name": "Object",
"type": "objectList"
},
{
"description": "Comparison operator",
"name": "Operator",
"type": "operator"
},
{
"description": "Value to compare (in degrees)",
"name": "Value",
"type": "expression"
}
],
"objectGroups": []
},
{
"description": "Compare the object's Y skew (in degrees).",
"fullName": "Skew Y",
"functionType": "Condition",
"name": "SkewYCondition",
"sentence": "The Y skew of _Object_ is _Operator_ _Value_",
"events": [
{
"type": "BuiltinCommonInstructions::JsCode",
"inlineCode": [
"const object = objects[0];",
"const operator = eventsFunctionContext.getArgument('Operator');",
"const value = eventsFunctionContext.getArgument('Value');",
"",
"if (!object) {",
" eventsFunctionContext.returnValue = false;",
" return;",
"}",
"",
"try {",
" const rendererObject = object.getRendererObject();",
" ",
" if (rendererObject && rendererObject.skew) {",
" // Get skew in degrees to compare with the user-provided value (in degrees)",
" const currentSkew = gdjs.toDegrees(rendererObject.skew.y);",
" eventsFunctionContext.returnValue = gdjs.evtTools.common.compare(currentSkew, operator, value);",
" } else {",
" // If skew property is missing, assume 0 for comparison",
" eventsFunctionContext.returnValue = gdjs.evtTools.common.compare(0, operator, value);",
" }",
"} catch (error) {",
" eventsFunctionContext.returnValue = false;",
"}"
],
"parameterObjects": "Object",
"useStrict": true,
"eventsSheetExpanded": true
}
],
"parameters": [
{
"description": "Object",
"name": "Object",
"type": "objectList"
},
{
"description": "Comparison operator",
"name": "Operator",
"type": "operator"
},
{
"description": "Value to compare (in degrees)",
"name": "Value",
"type": "expression"
}
],
"objectGroups": []
}
],
"eventsBasedBehaviors": [],
"eventsBasedObjects": []
}