Bring in my tooling.

This commit is contained in:
Relintai 2023-01-13 10:46:36 +01:00
parent 4da6f683ba
commit bb844f1311
7 changed files with 359 additions and 1 deletions

34
.gitignore vendored
View File

@ -1 +1,33 @@
.import/ .import/
engine
pandemonium_engine
modules/*
logs/*
*.d
*.o
*.meta
game/.import/**
game/.prop_tool_temp/**
.sconsign.dblite
.DS_Store
export/**
release/**
.vs/*
.kdev4/*
.vscode/*
TestRWTextures
_build/*
_binaries/*
game/android/build/*
*.blend1
.dir-locals.el
build.config
__pycache__/*

1
HEADS Normal file
View File

@ -0,0 +1 @@
{"engine": {"3.2": "94a0fc47f7b4e90f8973f9adbfd3312579ed2825", "master": "8c73e813134001e575b6f59e3b0100471c007410", "3.x": "c4864a0e5f73a375259503ea1485794a6aad6df7"}, "world_generator": {"master": "260c430f11b0b591eaf4714516419aa327d2842c"}, "entity_spell_system": {"master": "3536f01bacf5f54cefb32b768cd020a1f94d0ade"}, "ui_extensions": {"master": "80a3b96fc56991a0f88a1d441ed1e3cebaf3307a"}, "voxelman": {"master": "65485930a20f65844d496b4ba47dec5b6ed70b91"}, "texture_packer": {"master": "ae4d222fbaade063ed6f0bc9f3aaa53df68a7fed"}, "fastnoise": {"master": "46bb1f610bfb7171613b5c708d312bcf94e89356"}, "mesh_data_resource": {"master": "a062d871d49d954c5466b9de54b4075cb61cbef4"}, "procedural_animations": {"master": "f8aae42bf06b3936cc6bd24cb18e1c3ec9f78f4f"}, "ess_data": {"master": "3bd637fdd3304b64a18287a49a6b7387acf2f5de"}, "props": {"master": "983090d21a08ebed30a5ce06681269819ab12e48"}, "mesh_utils": {"master": "b52a261c31f04fad624e5cfbcdcc4a45d61136da"}, "broken_seals_module": {"master": "52c5a81350db1c29d375c63d95010260911ec034"}, "thread_pool": {"master": "0917511d04bb1aa308385b63ec88d3c182990628"}, "terraman": {"master": "c72d8fc03295588fc18c5168ce351bd0c321ec5f"}, "pandemonium_engine": {"master": "4b09cb47ab00a2fa63dbab46bc932e3c19309e53"}}

173
SConstruct Normal file
View File

@ -0,0 +1,173 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Copyright (c) 2019-2021 Péter Magyar
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
import os
import subprocess
import json
import sys
import module_config
repository_index = 0
clone_command = 'git clone {0} {1}'
target_commits = {}
def setup_repository(data, clone_path, branch = 'master'):
cwd = os.getcwd()
full_path = cwd + clone_path + data[1] + '/'
if not os.path.isdir(full_path):
os.chdir(cwd + clone_path)
subprocess.call(clone_command.format(data[0][repository_index], data[1]), shell=True)
os.chdir(full_path)
subprocess.call('git reset', shell=True)
subprocess.call('git reset --hard', shell=True)
subprocess.call('git clean -f -d', shell=True)
subprocess.call('git checkout -B ' + branch + ' origin/' + branch, shell=True)
subprocess.call('git pull origin ' + branch, shell=True)
subprocess.call('git reset', shell=True)
subprocess.call('git reset --hard', shell=True)
target = ""
if data[1] in target_commits:
target = target_commits[data[1]][branch]
subprocess.call('git checkout -B ' + branch + ' ' + target, shell=True)
subprocess.call('git clean -f -d', shell=True)
subprocess.call('git reset', shell=True)
subprocess.call('git reset --hard', shell=True)
os.chdir(cwd)
def update_repository(data, clone_path, branch = 'master'):
cwd = os.getcwd()
full_path = cwd + clone_path + data[1] + '/'
if not os.path.isdir(full_path):
os.chdir(cwd + clone_path)
subprocess.call(clone_command.format(data[0][repository_index], data[1]), shell=True)
os.chdir(full_path)
subprocess.call('git reset', shell=True)
subprocess.call('git reset --hard', shell=True)
subprocess.call('git clean -f -d', shell=True)
subprocess.call('git checkout -B ' + branch + ' origin/' + branch, shell=True)
subprocess.call('git reset', shell=True)
subprocess.call('git reset --hard', shell=True)
subprocess.call('git clean -f -d', shell=True)
subprocess.call('git pull origin ' + branch, shell=True)
process = subprocess.Popen('git rev-parse HEAD', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
output = process.communicate()[0].decode().strip()
if data[1] not in target_commits:
target_commits[data[1]] = {}
target_commits[data[1]][branch] = output
os.chdir(cwd)
def validate_repository_origin(data, clone_path, branch = 'master'):
full_path = os.path.abspath(clone_path)
if not os.path.isdir(full_path):
return
cwd = os.getcwd()
os.chdir(full_path)
res = subprocess.run('git remote -v', shell=True, capture_output=True)
resstr = res.stdout.decode('ascii')
resarr = resstr.split("\n")
res_orig = []
for l in resarr:
if "origin" in l:
res_orig.append(l)
if len(res_orig) == 0:
print("The repository " + clone_path + " does not seem to have an origin remote. Adding it.")
subprocess.call('git remote add origin ' + data[0][repository_index], shell=True)
os.chdir(cwd)
return
for l in data[0]:
for ll in res_orig:
if l in ll:
os.chdir(cwd)
return
rind = 0
if 'git@' in res_orig[0]:
rind = 1
subprocess.call('git remote remove origin', shell=True)
subprocess.call('git remote add origin ' + data[0][rind], shell=True)
subprocess.call('git pull origin', shell=True)
subprocess.call('git checkout origin/' + branch, shell=True)
print('Updated git remote origin in ' + clone_path)
os.chdir(cwd)
def update_engine():
validate_repository_origin(module_config.engine_repository, './pandemonium_engine/', module_config.pandemonium_branch)
update_repository(module_config.engine_repository, '/', module_config.pandemonium_branch)
engine_abspath = os.path.abspath(module_config.engine_repository[1])
if not os.path.isdir(engine_abspath):
if not os.path.isfile('./HEADS'):
print("Error! HEADS file doesn't exists! Exiting.")
exit()
with open('./HEADS', 'r') as infile:
target_commits = json.load(infile)
if 'repository_type=ssh' in sys.argv:
repository_index = 1
setup_repository(module_config.engine_repository, '/', module_config.pandemonium_branch)
else:
if not os.path.isfile('pandemonium_engine/misc/scripts_app/SConstruct'):
update_engine()
SConscript("pandemonium_engine/misc/scripts_app/SConstruct")

46
build.config.example Normal file
View File

@ -0,0 +1,46 @@
# Copyright (c) 2019-2021 Péter Magyar
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
# Rename this file to build.config to use it
# Lines starting with # are comments. (Only works at the start of the line!)
# Note:
# ~ will be converted to %userprofile% on windows
# / will be converted to \ on windows
# so you don't have to worry about it
# Visual studio related setup:
visual_studio_call_vcvarsall True
visual_studio_vcvarsall_path C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Auxiliary/Build/vcvarsall.bat
visual_studio_arch amd64
# You can export variables with the export keyword
# You can run commands with the run keywords
# <export/run> <target platform> <exported variable/command>
# available export/run targets: global, linux, windows, android, javascript
export global SCONS_CACHE=~/.scons_cache
export global SCONS_CACHE_LIMIT=5000
export android ANDROID_HOME=~/SDKs/Android/SDK
export android ANDROID_SDK_ROOT=~/SDKs/Android/SDK
run javascript source ~/SDKs/emsdk/emsdk_env.sh

6
editor.sh Executable file
View File

@ -0,0 +1,6 @@
#!/bin/bash
cp -u ./pandemonium_engine/bin/pandemonium.x11.opt.tools.64 ./pandemonium_engine/bin/run.pandemonium.x11.opt.tools.64
export LD_LIBRARY_PATH=`pwd`/pandemonium_engine/bin/
./pandemonium_engine/bin/run.pandemonium.x11.opt.tools.64 -v

6
ged.sh Executable file
View File

@ -0,0 +1,6 @@
#!/bin/bash
cp -u ./pandemonium_engine/bin/pandemonium.x11.opt.tools.64 ./pandemonium_engine/bin/run.pandemonium.x11.opt.tools.64
export LD_LIBRARY_PATH=`pwd`/pandemonium_engine/bin/
./pandemonium_engine/bin/run.pandemonium.x11.opt.tools.64 -e --path ./game/

94
module_config.py Normal file
View File

@ -0,0 +1,94 @@
pandemonium_branch = 'master'
engine_repository = [ ['https://github.com/Relintai/pandemonium_engine.git', 'git@github.com:Relintai/pandemonium_engine.git'], 'pandemonium_engine', '' ]
# Relative to this script's directory
module_install_folder = './custom_modules/'
module_repositories = [
#[ ['https://github.com/Relintai/entity_spell_system.git', 'git@github.com:Relintai/entity_spell_system.git'], 'entity_spell_system', '' ],
#[ ['https://github.com/Relintai/ui_extensions.git', 'git@github.com:Relintai/ui_extensions.git'], 'ui_extensions', '' ],
#[ ['https://github.com/Relintai/texture_packer.git', 'git@github.com:Relintai/texture_packer.git'], 'texture_packer', '' ],
#[ ['https://github.com/Relintai/godot_fastnoise.git', 'git@github.com:Relintai/godot_fastnoise.git'], 'fastnoise', '' ],
#[ ['https://github.com/Relintai/mesh_data_resource.git', 'git@github.com:Relintai/mesh_data_resource.git'], 'mesh_data_resource', '' ],
#[ ['https://github.com/Relintai/props.git', 'git@github.com:Relintai/props.git'], 'props', '' ],
#[ ['https://github.com/Relintai/mesh_utils.git', 'git@github.com:Relintai/mesh_utils.git'], 'mesh_utils', '' ],
#[ ['https://github.com/Relintai/broken_seals_module.git', 'git@github.com:Relintai/broken_seals_module.git'], 'broken_seals_module', '' ],
#[ ['https://github.com/Relintai/thread_pool.git', 'git@github.com:Relintai/thread_pool.git'], 'thread_pool', '' ],
#[ ['https://github.com/Relintai/terraman.git', 'git@github.com:Relintai/terraman.git'], 'terraman', '' ],
]
removed_modules = [
#[ ['https://github.com/Relintai/voxelman.git', 'git@github.com:Relintai/voxelman.git'], 'voxelman', '' ],
#[ ['https://github.com/Relintai/procedural_animations.git', 'git@github.com:Relintai/procedural_animations.git'], 'procedural_animations', '' ],
#[ ['https://github.com/Relintai/world_generator.git', 'git@github.com:Relintai/world_generator.git'], 'world_generator', '' ],
]
addon_repositories = [
]
third_party_addon_repositories = [
]
# Relative to the engine directory
custom_module_folders = ''
slim_args = ''
#slim_args += 'module_bmp_enabled=no '
#slim_args += 'module_broken_seals_module_enabled=no '
slim_args += 'module_cscript_enabled=no '
#slim_args += 'module_cvtt_enabled=no '
slim_args += 'module_database_enabled=no '
slim_args += 'module_database_sqlite_enabled=no '
#slim_args += 'module_dds_enabled=no '
#slim_args += 'module_enet_enabled=no '
#slim_args += 'module_entity_spell_system_enabled=no '
#slim_args += 'module_fastnoise_enabled=no '
#slim_args += 'module_freetype_enabled=no '
#slim_args += 'module_gdscript_enabled=no '
slim_args += 'module_gridmap_enabled=no '
#slim_args += 'module_hdr_enabled=no '
slim_args += 'module_http_server_simple_enabled=no '
#slim_args += 'module_jpg_enabled=no '
#slim_args += 'module_material_maker_enabled=no '
#slim_args += 'module_mbedtls_enabled=no '
#slim_args += 'module_mesh_data_resource_enabled=no '
#slim_args += 'module_mesh_utils_enabled=no '
#slim_args += 'module_minimp3_enabled=no '
#slim_args += 'module_navigation_enabled=no '
slim_args += 'module_network_synchronizer_enabled=no '
#slim_args += 'module_ogg_enabled=no '
#slim_args += 'module_opensimplex_enabled=no '
#slim_args += 'module_opus_enabled=no '
#slim_args += 'module_paint_enabled=no '
#slim_args += 'module_props_enabled=no '
slim_args += 'module_props_2d_enabled=no '
#slim_args += 'module_pvr_enabled=no '
#slim_args += 'module_regex_enabled=no '
slim_args += 'module_skeleton_2d_enabled=no '
#slim_args += 'module_skeleton_3d_enabled=no '
#slim_args += 'module_squish_enabled=no '
#slim_args += 'module_stb_vorbis_enabled=no '
#slim_args += 'module_svg_enabled=no '
#slim_args += 'module_terraman_enabled=no '
slim_args += 'module_terraman_2d_enabled=no '
#slim_args += 'module_texture_packer_enabled=no '
#slim_args += 'module_tga_enabled=no '
#slim_args += 'module_theora_enabled=no '
slim_args += 'module_tile_map_enabled=no '
#slim_args += 'module_ui_extensions_enabled=no '
#slim_args += 'module_upnp_enabled=no '
slim_args += 'module_users_enabled=no '
#slim_args += 'module_vhacd_enabled=no '
#slim_args += 'module_vorbis_enabled=no '
slim_args += 'module_voxelman_enabled=no '
slim_args += 'module_web_enabled=no '
#slim_args += 'module_websocket_enabled=no '
slim_args += 'module_wfc_enabled=no '
#slim_args += 'module_etc_enabled=no '
#slim_args += 'module_gltf_enabled=no '
#slim_args += 'module_plugin_refresher_enabled=no '
#slim_args += 'module_text_editor_enabled=no '
#slim_args += 'module_tinyexr_enabled=no '