Properties Update

This commit is contained in:
Josef 2024-07-26 07:45:02 +02:00
parent ae960523cf
commit 378ff808ec
9 changed files with 96 additions and 9 deletions

View File

@ -1,6 +1,6 @@
const fs = require( "node:fs/promises" );
const path = require( "path" );
const { loadJSON, getFiles, saveUTF8, getMatches, loadUTF8, insertText } = require( "./library.js" );
const { loadJSON, getFiles, saveUTF8, getMatches, loadUTF8, insertText, isDirectory } = require( "./library.js" );
const { CppClassMember } = require( "./cpp-class-member.js" );
function createCppHeader( className, extendingClassName, headerDefine, protectedMembers,
@ -121,7 +121,7 @@ async function main()
for ( let file of files )
{
await createCppFiles( file, types, missingTypes );
await createCppFiles( path.join( definitionsPath, file ), types, missingTypes );
}
if ( missingTypes.length === 0 )
@ -175,9 +175,29 @@ function grabMembers( membersData )
let nameDefinition = it;
let memberData = membersData[ it ];
let classMember = new CppClassMember( nameDefinition, memberData );
let actionRegex = /^\s*action\s+(\w+)\s*$/;
if ( actionRegex.test( nameDefinition ) )
{
let name = actionRegex.exec( nameDefinition )[ 1 ];
let upperCaseName = name[ 0 ].toUpperCase() + name.substring( 1 );
let actionName = `on${upperCaseName}`;
let signal = `signal ${name}()`;
let actionGetter = `virtual get_${actionName}():Ref<RJAction>`;
let actionSetter = `virtual set_${actionName}()`;
members.push( new CppClassMember( signal, {} ) );
members.push( new CppClassMember( actionGetter, {} ) );
members.push( new CppClassMember( actionSetter, { "action":"Ref<RJAction>"} ) );
}
else
{
let classMember = new CppClassMember( nameDefinition, memberData );
members.push( classMember );
}
members.push( classMember );
}
return members;
@ -230,7 +250,22 @@ async function createCppFiles( definitionPath, types, missingTypes )
{
console.log( "Creating: ", definitionPath );
let jsonPath = path.join( definitionsPath, definitionPath );
let jsonPath = definitionPath;
// path.join( definitionsPath, definitionPath );
let isDir = await isDirectory( jsonPath );
if ( isDir )
{
let files = await getFiles( jsonPath );
for ( let file of files )
{
await createCppFiles( path.join( jsonPath, file ), types, missingTypes );
}
return Promise.resolve();
}
let data = await loadJSON( jsonPath );
@ -297,6 +332,8 @@ async function createCppFiles( definitionPath, types, missingTypes )
let rawFilePath = path.join( outputPath, className );
await saveUTF8( rawFilePath + ".h", header );
await saveUTF8( rawFilePath + ".cpp", implementation );
return Promise.resolve();
}

2
godot

@ -1 +1 @@
Subproject commit 11d3768132582d192b8464769f26b493ae822321
Subproject commit f0e20efb33adbf9d6d9c111d646685a30bdd8f4f

View File

@ -6,6 +6,13 @@ async function getFiles( filePath )
return await fs.readdir( filePath );
}
async function isDirectory( filePath )
{
let stats = await fs.stat( filePath );
return stats.isDirectory();
}
async function exists( filePath )
{
try
@ -154,6 +161,7 @@ function insertText( sourceText, insertText, insertPosition )
module.exports =
{
exists,
isDirectory,
loadUTF8,
saveUTF8,
loadJSON,

@ -1 +1 @@
Subproject commit c19d8b71d88206e99fa2c987d369ac713c275d41
Subproject commit 650c34164ae6a39bdce2d748888092c660a1ebd6

View File

@ -38,8 +38,8 @@
"isPersistent": "bool"
},
"signal onEvent()" : { "callbackID": "int" },
"signal onEvent()" : { "callbackID": "int" },
"signal onSpan()" : { "callbackID": "int", "spanType": "int" }
"signal onSpan()" : { "callbackID": "int", "spanType": "int" }
}
}

View File

@ -0,0 +1,10 @@
{
"class":"RJBoolProperty:RJNetworkNode",
"public":
{
"virtual set()" : { "value":"bool" },
"virtual get():bool": {},
"signal onChange()" : {}
}
}

View File

@ -0,0 +1,10 @@
{
"class":"RJNodeProperty:RJNetworkNode",
"public":
{
"virtual set()" : { "value":"Ref<Node>" },
"virtual get():Ref<Node>": {},
"signal onChange()" : {}
}
}

View File

@ -0,0 +1,12 @@
{
"class":"RJNumberProperty:RJNetworkNode",
"includes":[ "./RJAction.h" ],
"public":
{
"virtual set()" : { "value":"double" },
"virtual get():double": {},
"action changed" : {}
}
}

View File

@ -0,0 +1,10 @@
{
"class":"RJStringProperty:RJNetworkNode",
"public":
{
"virtual set()" : { "value":"String" },
"virtual get():String": {},
"signal onChange()" : {}
}
}