Fix broken scripts since update to Emscripten 1.39.6

This commit is contained in:
Florian Rival
2020-02-10 23:28:54 +00:00
parent 746b2f5480
commit 0fa5988995
4 changed files with 369 additions and 360 deletions

View File

@@ -1,7 +1,7 @@
/**
* Launch this script to generate a reference of all expressions supported by GDevelop.
*/
const gd = require('../public/libGD.js')();
const initializeGDevelopJs = require('../public/libGD.js');
const { mapVector } = require('./lib/MapFor');
const makeExtensionsLoader = require('./lib/LocalJsExtensionsLoader');
const fs = require('fs');
@@ -9,7 +9,6 @@ const _ = require('lodash');
const shell = require('shelljs');
shell.exec('node import-GDJS-Runtime.js');
gd.initializePlatforms();
const gdevelopWikiUrlRoot = 'http://wiki.compilgames.net/doku.php/gdevelop5';
const outputFile = 'expressions-reference.dokuwiki.md';
@@ -247,7 +246,7 @@ const sortExpressionReferenceTexts = (expressionText1, expressionText2) => {
};
/** @returns {Array<DocumentationText>} */
const generateAllDocumentationTexts = () => {
const generateAllDocumentationTexts = (gd) => {
const platformExtensions = gd.JsPlatform.get().getAllPlatformExtensions();
const platformExtensionsCount = platformExtensions.size();
@@ -377,23 +376,25 @@ const writeFile = content => {
};
const noopTranslationFunction = str => str;
const extensionsLoader = makeExtensionsLoader({ gd, filterExamples: true });
extensionsLoader
.loadAllExtensions(noopTranslationFunction)
.then(loadingResults => {
console.info('Loaded extensions', loadingResults);
return generateAllDocumentationTexts();
})
.then(allDocumentationTexts => {
const texts = allDocumentationTexts
.map(({ text }) => {
return text;
})
.join('\n');
return writeFile(texts);
})
.then(
() => console.info(`✅ Done. File generated: ${outputFile}`),
err => console.error('❌ Error while writing output', err)
);
initializeGDevelopJs().then(gd => {
makeExtensionsLoader({ gd, filterExamples: true })
.loadAllExtensions(noopTranslationFunction)
.then(loadingResults => {
console.info('Loaded extensions', loadingResults);
return generateAllDocumentationTexts(gd);
})
.then(allDocumentationTexts => {
const texts = allDocumentationTexts
.map(({ text }) => {
return text;
})
.join('\n');
return writeFile(texts);
})
.then(
() => console.info(`✅ Done. File generated: ${outputFile}`),
err => console.error('❌ Error while writing output', err)
);
});

View File

@@ -2,7 +2,7 @@
* Launch this script to re-generate the files containing the list of extensions
* being used by each example.
*/
const gd = require('../public/libGD.js')();
const initializeGDevelopJs = require('../public/libGD.js');
const { mapFor, mapVector } = require('./lib/MapFor');
const makeExtensionsLoader = require('./lib/LocalJsExtensionsLoader');
const { getExampleNames } = require('./lib/ExamplesLoader');
@@ -15,127 +15,9 @@ const _ = require('lodash');
var shell = require('shelljs');
shell.exec('node import-GDJS-Runtime.js');
gd.initializePlatforms(); //TODO: Useless or not?
const outputFile = '../src/ProjectCreation/ExamplesInformation.js';
const getObjectTypes = projectOrLayout => {
return _.uniq(
mapFor(0, projectOrLayout.getObjectsCount(), i =>
projectOrLayout.getObjectAt(i).getType()
)
);
};
const getBehaviorTypes = projectOrLayout => {
return _.uniq(
_.flatten(
mapFor(0, projectOrLayout.getObjectsCount(), i => {
const object = projectOrLayout.getObjectAt(i);
const allBehaviorNames = object.getAllBehaviorNames();
return mapVector(allBehaviorNames, behaviorName => {
return object.getBehavior(behaviorName).getTypeName();
});
})
)
);
};
const getEventsAndInstructionsTypes = (project, events) => {
const eventsTypesLister = new gd.EventsTypesLister(project);
eventsTypesLister.launch(events);
const types = {
events: _.uniq(eventsTypesLister.getAllEventsTypes().toJSArray()),
conditions: _.uniq(eventsTypesLister.getAllConditionsTypes().toJSArray()),
actions: _.uniq(eventsTypesLister.getAllActionsTypes().toJSArray()),
};
eventsTypesLister.delete();
return types;
};
const computeUsedExtensions = project => {
// TODO: gd.WholeProjectRefactorer.exposeProjectEvents should be used to browse events
// so that events functions are also browsed.
const layoutExtensions = _.flatten(
mapFor(0, project.getLayoutsCount(), i => {
const layout = project.getLayoutAt(i);
const extensionsFromObjects = getObjectTypes(layout).map(objectType => {
return gd.MetadataProvider.getExtensionAndObjectMetadata(
project.getCurrentPlatform(),
objectType
).getExtension();
});
const extensionsFromBehaviors = getBehaviorTypes(layout).map(
behaviorType => {
return gd.MetadataProvider.getExtensionAndBehaviorMetadata(
project.getCurrentPlatform(),
behaviorType
).getExtension();
}
);
const events = layout.getEvents();
const eventsAndInstructionsTypes = getEventsAndInstructionsTypes(
project,
events
);
const extensionsFromConditions = eventsAndInstructionsTypes.conditions.map(
conditionType => {
return gd.MetadataProvider.getExtensionAndConditionMetadata(
project.getCurrentPlatform(),
conditionType
).getExtension();
}
);
const extensionsFromActions = eventsAndInstructionsTypes.actions.map(
actionType => {
return gd.MetadataProvider.getExtensionAndActionMetadata(
project.getCurrentPlatform(),
actionType
).getExtension();
}
);
return _.uniq([
...extensionsFromObjects,
...extensionsFromBehaviors,
...extensionsFromConditions,
...extensionsFromActions,
]);
})
);
const externalEventsExtensions = _.flatten(
mapFor(0, project.getExternalEventsCount(), i => {
const externalEvents = project.getExternalEventsAt(i);
const events = externalEvents.getEvents();
const eventsAndInstructionsTypes = getEventsAndInstructionsTypes(
project,
events
);
const extensionsFromConditions = eventsAndInstructionsTypes.conditions.map(
conditionType => {
return gd.MetadataProvider.getExtensionAndConditionMetadata(
project.getCurrentPlatform(),
conditionType
).getExtension();
}
);
const extensionsFromActions = eventsAndInstructionsTypes.actions.map(
actionType => {
return gd.MetadataProvider.getExtensionAndActionMetadata(
project.getCurrentPlatform(),
actionType
).getExtension();
}
);
return _.uniq([...extensionsFromConditions, ...extensionsFromActions]);
})
);
return _.uniq([...layoutExtensions, ...externalEventsExtensions]);
};
const writeFile = object => {
return new Promise((resolve, reject) => {
const content = [
@@ -162,67 +44,187 @@ const readFileContent = filename => {
});
};
const noopTranslationFunction = str => str;
const examplesInformation = {};
const extensionsLoader = makeExtensionsLoader({ gd, filterExamples: false });
extensionsLoader
.loadAllExtensions(noopTranslationFunction)
.then(loadingResults => {
console.info('Loaded extensions', loadingResults);
initializeGDevelopJs().then(gd => {
const getObjectTypes = projectOrLayout => {
return _.uniq(
mapFor(0, projectOrLayout.getObjectsCount(), i =>
projectOrLayout.getObjectAt(i).getType()
)
);
};
return getExampleNames();
})
.then(
exampleNames => {
return Promise.all(
exampleNames.map(exampleName => {
const exampleInformation = (examplesInformation[exampleName] = {
description: '',
usedExtensions: [],
const getBehaviorTypes = projectOrLayout => {
return _.uniq(
_.flatten(
mapFor(0, projectOrLayout.getObjectsCount(), i => {
const object = projectOrLayout.getObjectAt(i);
const allBehaviorNames = object.getAllBehaviorNames();
return mapVector(allBehaviorNames, behaviorName => {
return object.getBehavior(behaviorName).getTypeName();
});
return Promise.all([
readProjectFile(
`../resources/examples/${exampleName}/${exampleName}.json`
)
.then(projectObject => {
console.log(`Example "${exampleName}" loaded.`);
const project = loadSerializedProject(gd, projectObject);
const usedExtensions = computeUsedExtensions(project);
exampleInformation.usedExtensions = usedExtensions.map(
extension => ({
fullName: extension.getFullName(),
name: extension.getName(),
})
);
})
.catch(error => {
console.error('Error caught while analyzing game:', error);
}),
readFileContent(
`../resources/examples/${exampleName}/README.md`
).then(
readmeContent => {
exampleInformation.description = readmeContent;
},
error => {
console.error(
`⚠️ No/invalid README found for ${exampleName}:`,
error
);
}
),
]);
})
);
},
err => console.error('Error while loading extensions', err)
)
.then(() => {
return writeFile(examplesInformation);
})
.then(
() => console.info('Done.'),
err => console.error('Error while writing output', err)
);
)
);
};
const getEventsAndInstructionsTypes = (project, events) => {
const eventsTypesLister = new gd.EventsTypesLister(project);
eventsTypesLister.launch(events);
const types = {
events: _.uniq(eventsTypesLister.getAllEventsTypes().toJSArray()),
conditions: _.uniq(eventsTypesLister.getAllConditionsTypes().toJSArray()),
actions: _.uniq(eventsTypesLister.getAllActionsTypes().toJSArray()),
};
eventsTypesLister.delete();
return types;
};
const computeUsedExtensions = project => {
// TODO: gd.WholeProjectRefactorer.exposeProjectEvents should be used to browse events
// so that events functions are also browsed.
const layoutExtensions = _.flatten(
mapFor(0, project.getLayoutsCount(), i => {
const layout = project.getLayoutAt(i);
const extensionsFromObjects = getObjectTypes(layout).map(objectType => {
return gd.MetadataProvider.getExtensionAndObjectMetadata(
project.getCurrentPlatform(),
objectType
).getExtension();
});
const extensionsFromBehaviors = getBehaviorTypes(layout).map(
behaviorType => {
return gd.MetadataProvider.getExtensionAndBehaviorMetadata(
project.getCurrentPlatform(),
behaviorType
).getExtension();
}
);
const events = layout.getEvents();
const eventsAndInstructionsTypes = getEventsAndInstructionsTypes(
project,
events
);
const extensionsFromConditions = eventsAndInstructionsTypes.conditions.map(
conditionType => {
return gd.MetadataProvider.getExtensionAndConditionMetadata(
project.getCurrentPlatform(),
conditionType
).getExtension();
}
);
const extensionsFromActions = eventsAndInstructionsTypes.actions.map(
actionType => {
return gd.MetadataProvider.getExtensionAndActionMetadata(
project.getCurrentPlatform(),
actionType
).getExtension();
}
);
return _.uniq([
...extensionsFromObjects,
...extensionsFromBehaviors,
...extensionsFromConditions,
...extensionsFromActions,
]);
})
);
const externalEventsExtensions = _.flatten(
mapFor(0, project.getExternalEventsCount(), i => {
const externalEvents = project.getExternalEventsAt(i);
const events = externalEvents.getEvents();
const eventsAndInstructionsTypes = getEventsAndInstructionsTypes(
project,
events
);
const extensionsFromConditions = eventsAndInstructionsTypes.conditions.map(
conditionType => {
return gd.MetadataProvider.getExtensionAndConditionMetadata(
project.getCurrentPlatform(),
conditionType
).getExtension();
}
);
const extensionsFromActions = eventsAndInstructionsTypes.actions.map(
actionType => {
return gd.MetadataProvider.getExtensionAndActionMetadata(
project.getCurrentPlatform(),
actionType
).getExtension();
}
);
return _.uniq([...extensionsFromConditions, ...extensionsFromActions]);
})
);
return _.uniq([...layoutExtensions, ...externalEventsExtensions]);
};
const noopTranslationFunction = str => str;
const examplesInformation = {};
makeExtensionsLoader({ gd, filterExamples: false })
.loadAllExtensions(noopTranslationFunction)
.then(loadingResults => {
console.info('Loaded extensions', loadingResults);
return getExampleNames();
})
.then(
exampleNames => {
return Promise.all(
exampleNames.map(exampleName => {
const exampleInformation = (examplesInformation[exampleName] = {
description: '',
usedExtensions: [],
});
return Promise.all([
readProjectFile(
`../resources/examples/${exampleName}/${exampleName}.json`
)
.then(projectObject => {
console.log(`Example "${exampleName}" loaded.`);
const project = loadSerializedProject(gd, projectObject);
const usedExtensions = computeUsedExtensions(project);
exampleInformation.usedExtensions = usedExtensions.map(
extension => ({
fullName: extension.getFullName(),
name: extension.getName(),
})
);
})
.catch(error => {
console.error('Error caught while analyzing game:', error);
}),
readFileContent(
`../resources/examples/${exampleName}/README.md`
).then(
readmeContent => {
exampleInformation.description = readmeContent;
},
error => {
console.error(
`⚠️ No/invalid README found for ${exampleName}:`,
error
);
}
),
]);
})
);
},
err => console.error('Error while loading extensions', err)
)
.then(() => {
return writeFile(examplesInformation);
})
.then(
() => console.info('Done.'),
err => console.error('Error while writing output', err)
);
});

View File

@@ -3,7 +3,7 @@
* from the examples in resources/examples. All resource paths are updated to be URLs,
* using the same base URL (specified below in the script).
*/
const gd = require('../public/libGD.js')();
const initializeGDevelopJs = require('../public/libGD.js');
const {
readProjectFile,
loadSerializedProject,
@@ -16,32 +16,16 @@ const fs = require('fs');
// The base URL where all resources of web-app examples are stored.
const baseUrl = 'https://resources.gdevelop-app.com/examples';
const updateResources = (project, baseUrl) => {
const worker = new gd.ArbitraryResourceWorkerJS();
worker.exposeImage = file => {
// Don't do anything
return file;
};
worker.exposeShader = shader => {
// Don't do anything
return shader;
};
worker.exposeFile = file => {
if (file.length === 0) return '';
console.log('Updating resource: ', file);
return baseUrl + '/' + file;
};
project.exposeResources(worker);
};
const writeInternalExampleFilesJsFile = exampleNames => {
let importsCode = [];
let internalFilesObjectCode = [];
exampleNames.forEach((exampleName, index) => {
importsCode.push(`import exampleFile${index} from '../../fixtures/${exampleName}/${exampleName}.json';`);
internalFilesObjectCode.push(` 'example://${exampleName}': exampleFile${index},`);
importsCode.push(
`import exampleFile${index} from '../../fixtures/${exampleName}/${exampleName}.json';`
);
internalFilesObjectCode.push(
` 'example://${exampleName}': exampleFile${index},`
);
});
const content = [
@@ -73,54 +57,76 @@ const writeInternalExampleFilesJsFile = exampleNames => {
});
};
const noopTranslationFunction = str => str;
const extensionsLoader = makeExtensionsLoader({ gd, filterExamples: false });
extensionsLoader
.loadAllExtensions(noopTranslationFunction)
.then(loadingResults => {
console.info('Loaded extensions', loadingResults);
initializeGDevelopJs().then(gd => {
const updateResources = (project, baseUrl) => {
const worker = new gd.ArbitraryResourceWorkerJS();
worker.exposeImage = file => {
// Don't do anything
return file;
};
worker.exposeShader = shader => {
// Don't do anything
return shader;
};
worker.exposeFile = file => {
if (file.length === 0) return '';
return getExampleNames();
})
.then(exampleNames =>
Promise.all(
exampleNames.map(exampleName => {
return readProjectFile(
`../resources/examples/${exampleName}/${exampleName}.json`
)
.then(projectObject => {
console.log(`Example "${exampleName}" loaded.`);
const project = loadSerializedProject(gd, projectObject);
updateResources(project, baseUrl + '/' + exampleName);
console.log('Updating resource: ', file);
return baseUrl + '/' + file;
};
return new Promise(resolve => {
fs.mkdir(`../src/fixtures/${exampleName}`, () => {
writeProjectJSONFile(
gd,
project,
`../src/fixtures/${exampleName}/${exampleName}.json`
);
project.exposeResources(worker);
};
console.log(`Update of "${exampleName}" done.`);
resolve();
const noopTranslationFunction = str => str;
makeExtensionsLoader({ gd, filterExamples: false })
.loadAllExtensions(noopTranslationFunction)
.then(loadingResults => {
console.info('Loaded extensions', loadingResults);
return getExampleNames();
})
.then(exampleNames =>
Promise.all(
exampleNames.map(exampleName => {
return readProjectFile(
`../resources/examples/${exampleName}/${exampleName}.json`
)
.then(projectObject => {
console.log(`Example "${exampleName}" loaded.`);
const project = loadSerializedProject(gd, projectObject);
updateResources(project, baseUrl + '/' + exampleName);
return new Promise(resolve => {
fs.mkdir(`../src/fixtures/${exampleName}`, () => {
writeProjectJSONFile(
gd,
project,
`../src/fixtures/${exampleName}/${exampleName}.json`
);
console.log(`Update of "${exampleName}" done.`);
resolve();
});
});
})
.catch(error => {
console.error(`❌ Error caught for ${exampleName}:`, error);
});
})
.catch(error => {
console.error(`❌ Error caught for ${exampleName}:`, error);
});
})
)
.then(() => writeInternalExampleFilesJsFile(exampleNames))
.then(
() => {
console.error(`✅ InternalExampleFiles.js written.`);
},
error => {
console.error(
`❌ Error caught while writing InternalExampleFiles.js:`,
error
);
}
})
)
);
.then(() => writeInternalExampleFilesJsFile(exampleNames))
.then(
() => {
console.error(`✅ InternalExampleFiles.js written.`);
},
error => {
console.error(
`❌ Error caught while writing InternalExampleFiles.js:`,
error
);
}
)
);
});

View File

@@ -17,7 +17,7 @@ module.exports = {
"name": "BuiltinScene"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -70,7 +70,7 @@ module.exports = {
"name": "BuiltinVariables"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -103,7 +103,7 @@ module.exports = {
"name": "SystemInfo"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -164,7 +164,7 @@ module.exports = {
"name": "SystemInfo"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -213,7 +213,7 @@ module.exports = {
"name": "BuiltinMouse"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -246,7 +246,7 @@ module.exports = {
"name": "BuiltinMouse"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -283,7 +283,7 @@ module.exports = {
"name": "BuiltinCommonInstructions"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -340,7 +340,7 @@ module.exports = {
"name": "BuiltinVariables"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -397,7 +397,7 @@ module.exports = {
"name": "BuiltinCamera"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -442,7 +442,7 @@ module.exports = {
"name": "BuiltinCommonInstructions"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -495,7 +495,7 @@ module.exports = {
"name": "BuiltinVariables"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -532,7 +532,7 @@ module.exports = {
"name": "BuiltinKeyboard"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -602,7 +602,7 @@ module.exports = {
"name": "BuiltinMouse"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -631,7 +631,7 @@ module.exports = {
"name": "BuiltinCommonInstructions"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -660,7 +660,7 @@ module.exports = {
"name": "BuiltinCommonInstructions"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -685,7 +685,7 @@ module.exports = {
"name": "BuiltinCommonInstructions"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -731,7 +731,7 @@ module.exports = {
"name": "DestroyOutsideBehavior"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -784,7 +784,7 @@ module.exports = {
"name": "BuiltinCommonInstructions"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -838,7 +838,7 @@ module.exports = {
"name": "BuiltinCommonInstructions"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -867,7 +867,7 @@ module.exports = {
"name": "BuiltinVariables"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -905,7 +905,7 @@ module.exports = {
"name": "BuiltinMouse"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -938,7 +938,7 @@ module.exports = {
"name": "BuiltinVariables"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -963,7 +963,7 @@ module.exports = {
"name": "DeviceSensors"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -992,7 +992,7 @@ module.exports = {
"name": "DeviceSensors"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -1050,7 +1050,7 @@ module.exports = {
"name": "AnchorBehavior"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -1151,7 +1151,7 @@ module.exports = {
"name": "BuiltinMouse"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -1221,7 +1221,7 @@ module.exports = {
"name": "BuiltinCommonInstructions"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -1266,7 +1266,7 @@ module.exports = {
"name": "BuiltinMouse"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -1345,7 +1345,7 @@ module.exports = {
"name": "BuiltinMouse"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -1390,7 +1390,7 @@ module.exports = {
"name": "BuiltinCommonInstructions"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -1459,7 +1459,7 @@ module.exports = {
"name": "BuiltinCommonInstructions"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -1500,7 +1500,7 @@ module.exports = {
"name": "BuiltinKeyboard"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -1553,7 +1553,7 @@ module.exports = {
"name": "BuiltinCommonInstructions"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -1590,7 +1590,7 @@ module.exports = {
"name": "BuiltinScene"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -1619,7 +1619,7 @@ module.exports = {
"name": "BuiltinMouse"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -1672,7 +1672,7 @@ module.exports = {
"name": "BuiltinMouse"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -1721,7 +1721,7 @@ module.exports = {
"name": "BuiltinCommonInstructions"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -1766,7 +1766,7 @@ module.exports = {
"name": "BuiltinVariables"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -1843,7 +1843,7 @@ module.exports = {
"name": "BuiltinFile"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -1880,7 +1880,7 @@ module.exports = {
"name": "BuiltinCommonInstructions"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -1930,7 +1930,7 @@ module.exports = {
"name": "BuiltinScene"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -1967,7 +1967,7 @@ module.exports = {
"name": "BuiltinCommonInstructions"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -2042,7 +2042,7 @@ module.exports = {
"name": "BuiltinVariables"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -2067,7 +2067,7 @@ module.exports = {
"name": "BuiltinVariables"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -2096,7 +2096,7 @@ module.exports = {
"name": "BuiltinCommonInstructions"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -2150,7 +2150,7 @@ module.exports = {
"name": "BuiltinCommonInstructions"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -2179,7 +2179,7 @@ module.exports = {
"name": "BuiltinVariables"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -2224,7 +2224,7 @@ module.exports = {
"name": "BuiltinCommonInstructions"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -2269,7 +2269,7 @@ module.exports = {
"name": "BuiltinMouse"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -2294,7 +2294,7 @@ module.exports = {
"name": "BuiltinCommonInstructions"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -2348,7 +2348,7 @@ module.exports = {
"name": "BuiltinScene"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -2406,7 +2406,7 @@ module.exports = {
"name": "BuiltinScene"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -2447,7 +2447,7 @@ module.exports = {
"name": "BuiltinKeyboard"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -2480,7 +2480,7 @@ module.exports = {
"name": "BuiltinKeyboard"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -2555,7 +2555,7 @@ module.exports = {
"name": "BuiltinTime"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -2572,7 +2572,7 @@ module.exports = {
"name": "BuiltinTime"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -2605,7 +2605,7 @@ module.exports = {
"name": "BuiltinVariables"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -2638,7 +2638,7 @@ module.exports = {
"name": "BuiltinCommonInstructions"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -2671,7 +2671,7 @@ module.exports = {
"name": "BuiltinCommonInstructions"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -2708,7 +2708,7 @@ module.exports = {
"name": "BuiltinMouse"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -2725,7 +2725,7 @@ module.exports = {
"name": "BuiltinScene"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -2786,7 +2786,7 @@ module.exports = {
"name": "BuiltinKeyboard"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -2811,7 +2811,7 @@ module.exports = {
"name": "BuiltinScene"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -2865,7 +2865,7 @@ module.exports = {
"name": "BuiltinScene"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -2918,7 +2918,7 @@ module.exports = {
"name": "BuiltinCommonInstructions"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -2979,7 +2979,7 @@ module.exports = {
"name": "BuiltinCommonInstructions"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -3049,7 +3049,7 @@ module.exports = {
"name": "BuiltinVariables"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -3074,7 +3074,7 @@ module.exports = {
"name": "BuiltinScene"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -3147,7 +3147,7 @@ module.exports = {
"name": "BuiltinCamera"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -3180,7 +3180,7 @@ module.exports = {
"name": "BuiltinVariables"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -3209,7 +3209,7 @@ module.exports = {
"name": "BuiltinMouse"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -3222,7 +3222,7 @@ module.exports = {
"name": "Sprite"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -3247,7 +3247,7 @@ module.exports = {
"name": "BuiltinCommonInstructions"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -3268,7 +3268,7 @@ module.exports = {
"name": "BuiltinKeyboard"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -3305,7 +3305,7 @@ module.exports = {
"name": "BuiltinFile"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -3342,7 +3342,7 @@ module.exports = {
"name": "BuiltinKeyboard"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -3375,7 +3375,7 @@ module.exports = {
"name": "BuiltinMouse"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -3428,7 +3428,7 @@ module.exports = {
"name": "BuiltinTime"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -3453,7 +3453,7 @@ module.exports = {
"name": "BuiltinTime"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -3490,7 +3490,7 @@ module.exports = {
"name": "BuiltinScene"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -3547,7 +3547,7 @@ module.exports = {
"name": "BuiltinWindow"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -3588,7 +3588,7 @@ module.exports = {
"name": "BuiltinCommonInstructions"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -3649,7 +3649,7 @@ module.exports = {
"name": "BuiltinVariables"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -3686,7 +3686,7 @@ module.exports = {
"name": "BuiltinAudio"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -3732,7 +3732,7 @@ module.exports = {
"name": "BuiltinMouse"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -3820,7 +3820,7 @@ module.exports = {
"name": "BuiltinMouse"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -3902,7 +3902,7 @@ module.exports = {
"name": "BuiltinVariables"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -3951,7 +3951,7 @@ module.exports = {
"name": "BuiltinAdvanced"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{
@@ -3996,7 +3996,7 @@ module.exports = {
"name": "BuiltinKeyboard"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
}
]
@@ -4033,7 +4033,7 @@ module.exports = {
"name": "BuiltinMouse"
},
{
"fullName": "Base object",
"fullName": "Features for all objects",
"name": "BuiltinObject"
},
{