Initial commit.
32
.gitignore
vendored
Normal file
@ -0,0 +1,32 @@
|
||||
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
@ -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": "d7f833ee75780bec0d10ca792ca3f7ebbfa36faf"}}
|
22
LICENSE
Normal file
@ -0,0 +1,22 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2022 Péter Magyar
|
||||
Copyright (c) 2018-2019 Mathieu Fehr and Nathanaël Courant
|
||||
|
||||
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.
|
20
Makefile
Normal file
@ -0,0 +1,20 @@
|
||||
all:
|
||||
scons bels -j5
|
||||
|
||||
e:
|
||||
scons belsE -j5
|
||||
|
||||
t:
|
||||
scons belsT -j5
|
||||
|
||||
v:
|
||||
scons belsV -j5
|
||||
|
||||
W:
|
||||
scons belsW -j5
|
||||
|
||||
p:
|
||||
scons belsP -j5
|
||||
|
||||
m:
|
||||
scons belsM -j5
|
49
README.md
Normal file
@ -0,0 +1,49 @@
|
||||
# fast-wfc
|
||||
|
||||
https://github.com/math-fehr/fast-wfc
|
||||
|
||||
An implementation of [Wave Function Collapse](https://github.com/mxgmn/WaveFunctionCollapse) with a focus on performance.
|
||||
It was called fast-wfc because at the time it introduced optimizations improving the execution time by an order of magnitude.
|
||||
|
||||
[Rust bindings](https://github.com/rickyhan/fastwfc-rs)
|
||||
|
||||
# Requirements
|
||||
|
||||
You need a C++-17 compatible compiler, and CMake installed.
|
||||
|
||||
# Install the library
|
||||
|
||||
```
|
||||
git clone https://github.com/math-fehr/fast-wfc && cd fast-wfc/
|
||||
cmake .
|
||||
make install
|
||||
```
|
||||
|
||||
will install the library `fastwfc` and `fastwfc_static` using CMake:
|
||||
|
||||
# Run the examples
|
||||
|
||||
```
|
||||
cd example/
|
||||
cmake .
|
||||
make
|
||||
./wfc_demo
|
||||
```
|
||||
|
||||
will execute WFC on the examples defined in `example/samples.xml`, and will put the results in `example/results`.
|
||||
|
||||
# Third-parties library
|
||||
|
||||
The files in `example/src/include/external/` come from:
|
||||
* RapidXML [https://github.com/dwd/rapidxml](https://github.com/dwd/rapidxml)
|
||||
* stb Library [https://github.com/nothings/stb](https://github.com/nothings/stb)
|
||||
|
||||
# Image samples
|
||||
|
||||
The image samples come from [https://github.com/mxgmn/WaveFunctionCollapse](https://github.com/mxgmn/WaveFunctionCollapse)
|
||||
|
||||
# Licence
|
||||
|
||||
Copyright (c) 2018-2019 Mathieu Fehr and Nathanaël Courant.
|
||||
|
||||
MIT License, see `LICENSE` for further details.
|
652
SConstruct
Normal file
@ -0,0 +1,652 @@
|
||||
#!/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.
|
||||
|
||||
EnsureSConsVersion(0, 98, 1)
|
||||
|
||||
import sys
|
||||
import os
|
||||
import subprocess
|
||||
import json
|
||||
import shutil
|
||||
import traceback
|
||||
|
||||
import module_config
|
||||
|
||||
repository_index = 0
|
||||
module_clone_path = '/modules/'
|
||||
clone_command = 'git clone {0} {1}'
|
||||
|
||||
visual_studio_call_vcvarsall = False
|
||||
visual_studio_vcvarsall_path = 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Auxiliary\\Build\\vcvarsall.bat'
|
||||
visual_studio_arch = 'amd64'
|
||||
|
||||
exports = {
|
||||
'global': [],
|
||||
'linux': [],
|
||||
'windows': [],
|
||||
'android': [],
|
||||
'javascript': [],
|
||||
'osx': [],
|
||||
'ios': [],
|
||||
'server': [],
|
||||
}
|
||||
|
||||
additional_commands = {
|
||||
'global': [],
|
||||
'linux': [],
|
||||
'windows': [],
|
||||
'android': [],
|
||||
'javascript': [],
|
||||
'osx': [],
|
||||
'ios': [],
|
||||
'server': [],
|
||||
}
|
||||
|
||||
target_commits = {}
|
||||
|
||||
def onerror(func, path, exc_info):
|
||||
"""
|
||||
https://stackoverflow.com/questions/2656322/shutil-rmtree-fails-on-windows-with-access-is-denied
|
||||
|
||||
Because Windows.
|
||||
|
||||
Error handler for ``shutil.rmtree``.
|
||||
|
||||
If the error is due to an access error (read only file)
|
||||
it attempts to add write permission and then retries.
|
||||
|
||||
If the error is for another reason it re-raises the error.
|
||||
|
||||
Usage : ``shutil.rmtree(path, onerror=onerror)``
|
||||
"""
|
||||
import stat
|
||||
if not os.access(path, os.W_OK):
|
||||
# Is the error an access error ?
|
||||
os.chmod(path, stat.S_IWUSR)
|
||||
func(path)
|
||||
else:
|
||||
raise
|
||||
|
||||
def load_target_commits_array():
|
||||
global target_commits
|
||||
|
||||
if os.path.isfile('./HEADS'):
|
||||
with open('./HEADS', 'r') as infile:
|
||||
target_commits = json.load(infile)
|
||||
else:
|
||||
target_commits = {}
|
||||
|
||||
def save_target_commits_array():
|
||||
with open('./HEADS', 'w') as outfile:
|
||||
json.dump(target_commits, outfile)
|
||||
|
||||
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 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)
|
||||
|
||||
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 copy_repository(data, target_folder, clone_path):
|
||||
copytree(os.path.abspath(clone_path + data[1] + '/' + data[2]), os.path.abspath(target_folder + data[1]))
|
||||
|
||||
def copytree(src, dst):
|
||||
for item in os.listdir(src):
|
||||
sp = os.path.join(src, item)
|
||||
dp = os.path.join(dst, item)
|
||||
|
||||
if os.path.isdir(sp):
|
||||
if os.path.isdir(dp):
|
||||
shutil.rmtree(dp, onerror=onerror)
|
||||
|
||||
shutil.copytree(sp, dp)
|
||||
else:
|
||||
if not os.path.isdir(dst):
|
||||
os.makedirs(dst)
|
||||
|
||||
shutil.copy2(sp, dp)
|
||||
|
||||
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 remove_repository(data, target_folder):
|
||||
folder = os.path.abspath(target_folder + data[1])
|
||||
|
||||
if os.path.isdir(folder):
|
||||
shutil.rmtree(folder)
|
||||
|
||||
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)
|
||||
|
||||
def update_modules():
|
||||
for rep in module_config.module_repositories:
|
||||
update_repository(rep, module_clone_path)
|
||||
copy_repository(rep, './pandemonium_engine/modules/', '.' + module_clone_path)
|
||||
|
||||
def update_addons():
|
||||
for rep in module_config.addon_repositories:
|
||||
update_repository(rep, module_clone_path)
|
||||
copy_repository(rep, './game/addons/', '.' + module_clone_path)
|
||||
|
||||
def update_addons_third_party_addons():
|
||||
for rep in module_config.third_party_addon_repositories:
|
||||
update_repository(rep, module_clone_path)
|
||||
copy_repository(rep, './game/addons/', '.' + module_clone_path)
|
||||
|
||||
def update_all():
|
||||
update_engine()
|
||||
update_modules()
|
||||
update_addons()
|
||||
update_addons_third_party_addons()
|
||||
|
||||
save_target_commits_array()
|
||||
|
||||
|
||||
def setup_engine():
|
||||
validate_repository_origin(module_config.engine_repository, './pandemonium_engine/', module_config.pandemonium_branch)
|
||||
setup_repository(module_config.engine_repository, '/', module_config.pandemonium_branch)
|
||||
|
||||
def setup_modules():
|
||||
for rep in module_config.module_repositories:
|
||||
setup_repository(rep, module_clone_path)
|
||||
copy_repository(rep, './pandemonium_engine/modules/', '.' + module_clone_path)
|
||||
|
||||
for rep in module_config.removed_modules:
|
||||
remove_repository(rep, './pandemonium_engine/modules/')
|
||||
|
||||
|
||||
def setup_addons():
|
||||
for rep in module_config.addon_repositories:
|
||||
setup_repository(rep, module_clone_path)
|
||||
copy_repository(rep, './game/addons/', '.' + module_clone_path)
|
||||
|
||||
def setup_addons_third_party_addons():
|
||||
for rep in module_config.third_party_addon_repositories:
|
||||
setup_repository(rep, module_clone_path)
|
||||
copy_repository(rep, './game/addons/', '.' + module_clone_path)
|
||||
|
||||
def setup_all():
|
||||
setup_engine()
|
||||
setup_modules()
|
||||
setup_addons()
|
||||
setup_addons_third_party_addons()
|
||||
|
||||
def format_path(path):
|
||||
if 'win' in sys.platform:
|
||||
path = path.replace('/', '\\')
|
||||
path = path.replace('~', '%userprofile%')
|
||||
|
||||
return path
|
||||
|
||||
def get_exports_for(platform):
|
||||
export_command = 'export '
|
||||
command_separator = ';'
|
||||
|
||||
if 'win' in sys.platform:
|
||||
command_separator = '&'
|
||||
export_command = 'set '
|
||||
|
||||
command = ''
|
||||
|
||||
for p in exports[platform]:
|
||||
command += export_command + p + command_separator
|
||||
|
||||
return command
|
||||
|
||||
def get_additional_commands_for(platform):
|
||||
command_separator = ';'
|
||||
|
||||
if 'win' in sys.platform:
|
||||
command_separator = '&'
|
||||
|
||||
command = ''
|
||||
|
||||
for p in additional_commands[platform]:
|
||||
command += p + command_separator
|
||||
|
||||
return command
|
||||
|
||||
|
||||
|
||||
def parse_config():
|
||||
global visual_studio_vcvarsall_path
|
||||
global visual_studio_arch
|
||||
global visual_studio_call_vcvarsall
|
||||
global exports
|
||||
|
||||
if not os.path.isfile('build.config'):
|
||||
return
|
||||
|
||||
with open('build.config', 'r') as f:
|
||||
|
||||
for line in f:
|
||||
ls = line.strip()
|
||||
if ls == '' or ls.startswith('#'):
|
||||
continue
|
||||
|
||||
words = line.split()
|
||||
|
||||
if (len(words) < 2):
|
||||
print('This build.config line is malformed, and got ignored: ' + ls)
|
||||
continue
|
||||
|
||||
if words[0] == 'visual_studio_vcvarsall_path':
|
||||
visual_studio_vcvarsall_path = format_path(ls[29:])
|
||||
elif words[0] == 'visual_studio_arch':
|
||||
visual_studio_arch = format_path(ls[19:])
|
||||
elif words[0] == 'visual_studio_call_vcvarsall':
|
||||
visual_studio_call_vcvarsall = words[1].lower() in [ 'true', '1', 't', 'y', 'yes' ]
|
||||
elif words[0] == 'export':
|
||||
if (len(words) < 3) or not words[1] in exports:
|
||||
print('This build.config line is malformed, and got ignored: ' + ls)
|
||||
continue
|
||||
|
||||
export_path = format_path(ls[8 + len(words[1]):])
|
||||
|
||||
exports[words[1]].append(export_path)
|
||||
elif words[0] == 'run':
|
||||
if (len(words) < 3) or not words[1] in additional_commands:
|
||||
print('This build.config line is malformed, and got ignored: ' + ls)
|
||||
continue
|
||||
|
||||
final_cmd = format_path(ls[5 + len(words[1]):])
|
||||
|
||||
additional_commands[words[1]].append(final_cmd)
|
||||
|
||||
parse_config()
|
||||
|
||||
env = Environment()
|
||||
|
||||
if len(sys.argv) > 1:
|
||||
|
||||
arg = sys.argv[1]
|
||||
|
||||
arg_split = arg.split('_')
|
||||
arg = arg_split[0]
|
||||
arg_split = arg_split[1:]
|
||||
|
||||
if arg[0] == 'b':
|
||||
build_string = get_exports_for('global') + get_additional_commands_for('global') + 'scons '
|
||||
|
||||
build_string += 'tools='
|
||||
if 'e' in arg:
|
||||
build_string += 'yes'
|
||||
else:
|
||||
build_string += 'no'
|
||||
build_string += ' '
|
||||
|
||||
build_string += 'target='
|
||||
if 'r' in arg:
|
||||
build_string += 'release'
|
||||
elif 'd' in arg:
|
||||
build_string += 'debug'
|
||||
else:
|
||||
build_string += 'release_debug'
|
||||
build_string += ' '
|
||||
|
||||
build_string += 'custom_modules_shared='
|
||||
if 's' in arg:
|
||||
build_string += 'yes'
|
||||
else:
|
||||
build_string += 'no'
|
||||
build_string += ' '
|
||||
|
||||
if 'm' in arg:
|
||||
build_string += 'use_mingw=yes'
|
||||
else:
|
||||
if 'win' in sys.platform and visual_studio_call_vcvarsall:
|
||||
build_string = 'call "{0}" {1}&'.format(visual_studio_vcvarsall_path, visual_studio_arch) + build_string
|
||||
|
||||
if 'o' in arg:
|
||||
build_string += 'use_llvm=yes'
|
||||
|
||||
if 'v' in arg:
|
||||
build_string += 'vsproj=yes'
|
||||
|
||||
for i in range(2, len(sys.argv)):
|
||||
build_string += ' ' + sys.argv[i] + ' '
|
||||
|
||||
if 'slim' in arg_split:
|
||||
build_string += module_config.slim_args
|
||||
build_string += ' '
|
||||
|
||||
if 'latomic' in arg_split:
|
||||
build_string += 'LINKFLAGS="-latomic"'
|
||||
build_string += ' '
|
||||
|
||||
if 'strip' in arg_split:
|
||||
build_string += 'debug_symbols=no'
|
||||
build_string += ' '
|
||||
|
||||
if 'threads' in arg_split:
|
||||
build_string += 'threads_enabled=yes'
|
||||
build_string += ' '
|
||||
|
||||
if 'c' in arg:
|
||||
build_string += 'compiledb=yes'
|
||||
build_string += ' '
|
||||
|
||||
target = ' '
|
||||
|
||||
if 'E' in arg:
|
||||
target += 'bin/libess.x11.opt.tools.64.so'
|
||||
elif 'T' in arg:
|
||||
target += 'bin/libtexture_packer.x11.opt.tools.64.so'
|
||||
elif 'V' in arg:
|
||||
target += 'bin/libvoxelman.x11.opt.tools.64.so'
|
||||
elif 'W' in arg:
|
||||
target += 'bin/libworld_generator.x11.opt.tools.64.so'
|
||||
elif 'P' in arg:
|
||||
target += 'bin/libprocedural_animations.x11.opt.tools.64.so'
|
||||
|
||||
cwd = os.getcwd()
|
||||
full_path = cwd + '/pandemonium_engine/'
|
||||
|
||||
if not os.path.isdir(full_path):
|
||||
print('engine (pandemonium_engine) directory doesnt exists.')
|
||||
exit()
|
||||
|
||||
os.chdir(full_path)
|
||||
|
||||
if 'l' in arg:
|
||||
build_string += 'platform=x11'
|
||||
|
||||
build_string = get_exports_for('linux') + get_additional_commands_for('linux') + build_string + target
|
||||
|
||||
print('Running command: ' + build_string)
|
||||
|
||||
subprocess.call(build_string, shell=True)
|
||||
elif 'w' in arg:
|
||||
build_string += 'platform=windows'
|
||||
|
||||
build_string = get_exports_for('windows') + get_additional_commands_for('windows') + build_string
|
||||
|
||||
print('Running command: ' + build_string)
|
||||
|
||||
subprocess.call(build_string, shell=True)
|
||||
elif 'a' in arg:
|
||||
build_string += 'platform=android'
|
||||
|
||||
build_string = get_exports_for('android') + get_additional_commands_for('android') + build_string
|
||||
|
||||
print('Running command: ' + build_string + ' android_arch=armv7')
|
||||
subprocess.call(build_string + ' android_arch=armv7', shell=True)
|
||||
print('Running command: ' + build_string + ' android_arch=arm64v8')
|
||||
subprocess.call(build_string + ' android_arch=arm64v8', shell=True)
|
||||
print('Running command: ' + build_string + ' android_arch=x86')
|
||||
subprocess.call(build_string + ' android_arch=x86', shell=True)
|
||||
|
||||
os.chdir(full_path + 'platform/android/java/')
|
||||
|
||||
if 'e' in arg: #editor
|
||||
print('Running command: ' + get_exports_for('global') + get_additional_commands_for('global') + get_exports_for('android') + get_additional_commands_for('android') + './gradlew generatePandemoniumEditor')
|
||||
subprocess.call(get_exports_for('global') + get_additional_commands_for('global') + get_exports_for('android') + get_additional_commands_for('android') + './gradlew generatePandemoniumEditor', shell=True)
|
||||
else: #normal templates
|
||||
print('Running command: ' + get_exports_for('global') + get_additional_commands_for('global') + get_exports_for('android') + get_additional_commands_for('android') + './gradlew generatePandemoniumTemplates')
|
||||
subprocess.call(get_exports_for('global') + get_additional_commands_for('global') + get_exports_for('android') + get_additional_commands_for('android') + './gradlew generatePandemoniumTemplates', shell=True)
|
||||
elif 'j' in arg:
|
||||
build_string += 'platform=javascript'
|
||||
|
||||
build_string = get_exports_for('javascript') + get_additional_commands_for('javascript') + build_string
|
||||
|
||||
print('Running command: ' + build_string)
|
||||
subprocess.call(build_string, shell=True)
|
||||
elif 'i' in arg:
|
||||
build_string += 'platform=iphone'
|
||||
|
||||
print('Running command: ' + build_string)
|
||||
subprocess.call(build_string, shell=True)
|
||||
|
||||
#print('Running command: ' + build_string + " arch=arm")
|
||||
#subprocess.call(build_string + ' arch=arm', shell=True)
|
||||
#print('Running command: ' + build_string + " arch=arm64")
|
||||
#subprocess.call(build_string + ' arch=arm64', shell=True)
|
||||
#print('Running command: ' + build_string + " arch=x86_64")
|
||||
#subprocess.call(build_string + ' arch=x86_64', shell=True)
|
||||
elif 'x' in arg:
|
||||
build_string += 'platform=osx'
|
||||
|
||||
build_string = get_exports_for('osx') + get_additional_commands_for('osx') + build_string + target
|
||||
|
||||
print('Running command: ' + build_string)
|
||||
subprocess.call(build_string, shell=True)
|
||||
elif 'h' in arg:
|
||||
#headless
|
||||
build_string += 'platform=server'
|
||||
|
||||
build_string = get_exports_for('server') + get_additional_commands_for('server') + build_string
|
||||
|
||||
print('Running command: ' + build_string)
|
||||
|
||||
subprocess.call(build_string, shell=True)
|
||||
|
||||
else:
|
||||
print('No platform specified')
|
||||
exit()
|
||||
|
||||
exit()
|
||||
# elif arg[0] == 'p':
|
||||
# if arg == 'p':
|
||||
# print("Applies a patch. No Patches right now.Append s for the skeleton editor patch. For example: ps ")
|
||||
# exit()
|
||||
#
|
||||
# cwd = os.getcwd()
|
||||
# full_path = cwd + '/pandemonium_engine/'
|
||||
#
|
||||
# if not os.path.isdir(full_path):
|
||||
# print('engine (pandemonium_engine) directory does not exists.')
|
||||
# exit()
|
||||
#
|
||||
# os.chdir(full_path)
|
||||
#
|
||||
# #apply the patch to just the working directory, without creating a commit
|
||||
#
|
||||
# if 's' in arg:
|
||||
# subprocess.call('git apply --index ../patches/custom_skeleton_3d_editor_plugin.patch', shell=True)
|
||||
#
|
||||
# #unstage all files
|
||||
# subprocess.call('git reset', shell=True)
|
||||
#
|
||||
# vman_full_path = cwd + '/pandemonium_engine/modules/voxelman/'
|
||||
#
|
||||
# #also patch voxelman as the plugin changes forward_spatial_gui_input's definition
|
||||
# if os.path.isdir(vman_full_path):
|
||||
# os.chdir(vman_full_path)
|
||||
#
|
||||
# subprocess.call('git apply --index ../../../patches/fix-voxel-editor-after-the-skeleton-editor-patch.patch', shell=True)
|
||||
#
|
||||
# #unstage all files
|
||||
# subprocess.call('git reset', shell=True)
|
||||
# else:
|
||||
# print('Voxelman directory does not exists, skipping patch.')
|
||||
#
|
||||
# exit()
|
||||
|
||||
opts = Variables(args=ARGUMENTS)
|
||||
|
||||
opts.Add('a', 'What to do', '')
|
||||
opts.Add(EnumVariable('action', 'What to do', 'setup', ('setup', 'update')))
|
||||
opts.Add('t', 'Action target', '')
|
||||
opts.Add(EnumVariable('target', 'Action target', 'all', ('all', 'engine', 'modules', 'all_addons', 'addons', 'third_party_addons')))
|
||||
opts.Add(EnumVariable('repository_type', 'Type of repositories to clone from first', 'http', ('http', 'ssh')))
|
||||
|
||||
opts.Update(env)
|
||||
Help(opts.GenerateHelpText(env))
|
||||
|
||||
load_target_commits_array()
|
||||
|
||||
rt = env['repository_type']
|
||||
|
||||
if rt == 'ssh':
|
||||
repository_index = 1
|
||||
|
||||
action = env['action']
|
||||
target = env['target']
|
||||
|
||||
if env['a']:
|
||||
action = env['a']
|
||||
|
||||
if env['t']:
|
||||
target = env['t']
|
||||
|
||||
if not os.path.isdir('./modules'):
|
||||
os.mkdir('./modules')
|
||||
|
||||
if 'm' in action:
|
||||
pandemonium_branch = 'master'
|
||||
|
||||
if 'setup' in action or action[0] == 's':
|
||||
if target == 'all':
|
||||
setup_all()
|
||||
elif target == 'engine':
|
||||
setup_engine()
|
||||
elif target == 'modules':
|
||||
setup_modules()
|
||||
elif target == 'all_addons':
|
||||
setup_addons()
|
||||
setup_addons_third_party_addons()
|
||||
elif target == 'addons':
|
||||
setup_addons()
|
||||
elif target == 'third_party_addons':
|
||||
setup_addons_third_party_addons()
|
||||
elif 'update' in action or action[0] == 'u':
|
||||
if target == 'all':
|
||||
update_all()
|
||||
elif target == 'engine':
|
||||
update_engine()
|
||||
save_target_commits_array()
|
||||
elif target == 'modules':
|
||||
update_modules()
|
||||
save_target_commits_array()
|
||||
elif target == 'all_addons':
|
||||
update_addons()
|
||||
update_addons_third_party_addons()
|
||||
save_target_commits_array()
|
||||
elif target == 'addons':
|
||||
update_addons()
|
||||
save_target_commits_array()
|
||||
elif target == 'third_party_addons':
|
||||
update_addons_third_party_addons()
|
||||
save_target_commits_array()
|
||||
|
45
build.config.example
Normal file
@ -0,0 +1,45 @@
|
||||
# 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
|
||||
|
||||
run javascript source ~/SDKs/emsdk/emsdk_env.sh
|
6
editor.bat
Normal file
@ -0,0 +1,6 @@
|
||||
|
||||
copy "pandemonium_engine\bin\pandemonium.windows.opt.tools.64.exe" "pandemonium_engine\bin\run_pandemonium.windows.opt.tools.64.exe" /y
|
||||
copy "pandemonium_engine\bin\pandemonium.windows.opt.tools.64.pdb" "pandemonium_engine\bin\run_pandemonium.windows.opt.tools.64.pdb" /y
|
||||
copy "pandemonium_engine\bin\pandemonium.windows.opt.tools.64.exp" "pandemonium_engine\bin\run_pandemonium.windows.opt.tools.64.exp" /y
|
||||
|
||||
cmd /c pandemonium_engine\bin\run_pandemonium.windows.opt.tools.64.exe
|
6
editor.sh
Executable 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
@ -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/
|
6
lged.sh
Executable file
@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
cp -u ./pandemonium_engine/bin/pandemonium.x11.opt.tools.64.llvm ./pandemonium_engine/bin/run.pandemonium.x11.opt.tools.64.llvm
|
||||
|
||||
export LD_LIBRARY_PATH=`pwd`/pandemonium_engine/bin/
|
||||
./pandemonium_engine/bin/run.pandemonium.x11.opt.tools.64.llvm -e --path ./game/
|
18
module_config.py
Normal file
@ -0,0 +1,18 @@
|
||||
|
||||
pandemonium_branch = 'master'
|
||||
|
||||
engine_repository = [ ['https://github.com/Relintai/pandemonium_engine.git', 'git@github.com:Relintai/pandemonium_engine.git'], 'pandemonium_engine', '' ]
|
||||
|
||||
module_repositories = [
|
||||
]
|
||||
|
||||
removed_modules = [
|
||||
]
|
||||
|
||||
addon_repositories = [
|
||||
]
|
||||
|
||||
third_party_addon_repositories = [
|
||||
]
|
||||
|
||||
slim_args = 'module_webm_enabled=no module_arkit_enabled=no module_visual_script_enabled=no module_gdnative_enabled=no module_mobile_vr_enabled=no module_theora_enabled=no module_xatlas_unwrap_enabled=no'
|
5
original_examples/.vscode/settings.json
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"files.associations": {
|
||||
"ostream": "cpp"
|
||||
}
|
||||
}
|
23
original_examples/CMakeLists.txt
Normal file
@ -0,0 +1,23 @@
|
||||
cmake_minimum_required(VERSION 3.9)
|
||||
project(wfc_demo LANGUAGES CXX)
|
||||
|
||||
make_directory(results)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(DEFAULT_BUILD_TYPE "Release")
|
||||
|
||||
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
||||
message(STATUS "Setting build type to '${DEFAULT_BUILD_TYPE}' as none was specified.")
|
||||
set(CMAKE_BUILD_TYPE "${DEFAULT_BUILD_TYPE}" CACHE STRING "Choose the type of build." FORCE)
|
||||
endif()
|
||||
|
||||
find_library( FASTWFC_LIB
|
||||
NAMES
|
||||
fastwfc_static
|
||||
)
|
||||
|
||||
add_executable(${PROJECT_NAME} src/lib/main.cpp)
|
||||
target_link_libraries(wfc_demo ${FASTWFC_LIB})
|
||||
|
||||
target_include_directories(${PROJECT_NAME} PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/include>)
|
77
original_examples/samples.xml
Normal file
@ -0,0 +1,77 @@
|
||||
<samples>
|
||||
<overlapping name="Chess" N="2" periodic="True"/>
|
||||
<overlapping name="Chess" N="2" width="47" height="47" periodic="True" screenshots="1"/>
|
||||
<overlapping name="Skyline" N="3" symmetry="2" ground="-1" periodic="True"/>
|
||||
<overlapping name="Flowers" N="3" symmetry="2" ground="-4" periodic="True"/>
|
||||
<overlapping name="Hogs" N="3" periodic="True"/>
|
||||
<overlapping name="Hogs" N="2" periodic="True"/>
|
||||
<overlapping name="Knot" N="3" periodic="True"/>
|
||||
<overlapping name="Less Rooms" N="3" periodic="True"/>
|
||||
<overlapping name="Mountains" N="3" symmetry="2" periodic="True"/>
|
||||
<overlapping name="Office" N="3" periodic="True"/>
|
||||
<overlapping name="Paths" N="3" periodic="True"/>
|
||||
<overlapping name="Platformer" N="2" symmetry="2" ground="-1" periodic="True"/>
|
||||
<overlapping name="Platformer" N="3" symmetry="2" ground="-1" periodic="True"/>
|
||||
<overlapping name="Red Maze" N="2"/>
|
||||
<overlapping name="Rooms" N="3" screenshots="3" periodic="True"/>
|
||||
<overlapping name="Rule 126" N="3" symmetry="2" periodicInput="False" periodic="False"/>
|
||||
<overlapping name="Simple Knot" N="3" periodic="True"/>
|
||||
<overlapping name="Simple Maze" N="2"/>
|
||||
<overlapping name="Simple Wall" N="3" symmetry="2" periodic="True"/>
|
||||
<overlapping name="Simple Wall" N="3" periodic="True"/>
|
||||
<overlapping name="Simple Wall" N="2" symmetry="2" periodic="True"/>
|
||||
<overlapping name="Simple Wall" N="2" periodic="True"/>
|
||||
<overlapping name="Trick Knot" N="3" periodic="True"/>
|
||||
<overlapping name="Village" N="3" symmetry="2" periodic="True"/>
|
||||
<overlapping name="Water" N="3" symmetry="1" periodic="True"/>
|
||||
<simpletiled name="Summer" width="15" height="15"/>
|
||||
<simpletiled name="Castle" width="20" height="20"/>
|
||||
<simpletiled name="Circuit" subset="Turnless" width="34" height="34" periodic="True" screenshots="3"/>
|
||||
<simpletiled name="Knots" subset="Standard" width="24" height="24" periodic="True"/>
|
||||
<simpletiled name="Knots" subset="Dense" width="24" height="24" periodic="True"/>
|
||||
<simpletiled name="Knots" subset="Crossless" width="24" height="24"/>
|
||||
<simpletiled name="Knots" subset="TE" width="24" height="24"/>
|
||||
<simpletiled name="Knots" subset="T" width="24" height="24"/>
|
||||
<simpletiled name="Knots" subset="CL" width="24" height="24"/>
|
||||
<simpletiled name="Knots" subset="CE" width="24" height="24" periodic="True"/>
|
||||
<simpletiled name="Knots" subset="C" width="24" height="24" periodic="True"/>
|
||||
<simpletiled name="Knots" subset="Fabric" width="24" height="24" periodic="True"/>
|
||||
<simpletiled name="Knots" subset="Dense Fabric" width="24" height="24" periodic="True"/>
|
||||
<simpletiled name="Rooms" width="30" height="30"/>
|
||||
<simpletiled name="Circles" width="24" height="24"/>
|
||||
<simpletiled name="Circles" subset="Large Circles" width="24" height="24"/>
|
||||
<simpletiled name="Circles" subset="Large Circles and Solid" width="24" height="24"/>
|
||||
<simpletiled name="Circles" subset="No Solid" width="24" height="24"/>
|
||||
|
||||
<overlapping name="Cat" N="3" symmetry="2" periodic="True" width="80" height="80"/>
|
||||
<overlapping name="Cats" N="3" symmetry="2" periodic="True"/>
|
||||
<overlapping name="Skyline 2" N="3" symmetry="2" periodic="True" ground="-1"/>
|
||||
<overlapping name="Angular" N="3" periodic="True"/>
|
||||
<overlapping name="City" N="3" periodic="True" width="80" height="80"/>
|
||||
<overlapping name="Colored City" N="3" periodic="True"/>
|
||||
<overlapping name="Dungeon" N="3" periodic="True"/>
|
||||
<overlapping name="Lake" N="3" periodic="True" width="60" height="60"/>
|
||||
<overlapping name="Link" N="3" periodic="True"/>
|
||||
<overlapping name="Link 2" N="3" periodic="True"/>
|
||||
<overlapping name="Mazelike" N="3" periodic="True"/>
|
||||
<overlapping name="Nested" N="3" periodic="True"/>
|
||||
<overlapping name="Magic Office" N="3" periodic="True"/>
|
||||
<overlapping name="Office 2" N="3" periodic="True"/>
|
||||
<overlapping name="Qud" N="3" periodic="True" width="80" height="80"/>
|
||||
<overlapping name="Red Dot" N="3" periodic="True"/>
|
||||
<overlapping name="Scaled Maze" N="2" periodic="True"/>
|
||||
<overlapping name="Sewers" N="3" periodic="True"/>
|
||||
<overlapping name="Skew 1" N="3" periodic="True"/>
|
||||
<overlapping name="Skew 2" N="3" periodic="True"/>
|
||||
<overlapping name="Smile City" N="3" periodic="True"/>
|
||||
<overlapping name="Spirals" N="3" periodic="True"/>
|
||||
<overlapping name="Town" N="3" periodic="True"/>
|
||||
|
||||
<overlapping name="3Bricks" N="3" symmetry="1" periodic="True"/>
|
||||
<overlapping name="Village" N="3" symmetry="2" limit="50" periodic="True"/>
|
||||
<simpletiled name="Summer" width="15" height="15" periodic="False" limit="15"/>
|
||||
|
||||
<simpletiled name="Knots" subset="Standard" width="5" height="5" periodic="True" textOutput="True"/>
|
||||
<simpletiled name="Summer" width="6" height="6" periodic="False" textOutput="True"/>
|
||||
<simpletiled name="Circuit" subset="Turnless" width="7" height="7" periodic="True" textOutput="True"/>
|
||||
</samples>
|
BIN
original_examples/samples/3Bricks.png
Normal file
After Width: | Height: | Size: 351 B |
BIN
original_examples/samples/Angular.png
Normal file
After Width: | Height: | Size: 179 B |
BIN
original_examples/samples/Castle/bridge.png
Normal file
After Width: | Height: | Size: 129 B |
74
original_examples/samples/Castle/data.xml
Normal file
@ -0,0 +1,74 @@
|
||||
<set size="7">
|
||||
<tiles>
|
||||
<tile name="bridge" symmetry="I"/>
|
||||
<tile name="ground" symmetry="X"/>
|
||||
<tile name="river" symmetry="I"/>
|
||||
<tile name="riverturn" symmetry="L"/>
|
||||
<tile name="road" symmetry="I"/>
|
||||
<tile name="roadturn" symmetry="L"/>
|
||||
<tile name="t" symmetry="T"/>
|
||||
<tile name="tower" symmetry="L"/>
|
||||
<tile name="wall" symmetry="I"/>
|
||||
<tile name="wallriver" symmetry="I"/>
|
||||
<tile name="wallroad" symmetry="I"/>
|
||||
</tiles>
|
||||
<neighbors>
|
||||
<neighbor left="bridge 1" right="river 1"/>
|
||||
<neighbor left="bridge 1" right="riverturn 1"/>
|
||||
<neighbor left="bridge" right="road 1"/>
|
||||
<neighbor left="bridge" right="roadturn 1"/>
|
||||
<neighbor left="bridge" right="t"/>
|
||||
<neighbor left="bridge" right="t 3"/>
|
||||
<neighbor left="bridge" right="wallroad"/>
|
||||
<neighbor left="ground" right="ground"/>
|
||||
<neighbor left="ground" right="river"/>
|
||||
<neighbor left="ground" right="riverturn"/>
|
||||
<neighbor left="ground" right="road"/>
|
||||
<neighbor left="ground" right="roadturn"/>
|
||||
<neighbor left="ground" right="t 1"/>
|
||||
<neighbor left="ground" right="tower"/>
|
||||
<neighbor left="ground" right="wall"/>
|
||||
<neighbor left="river 1" right="river 1"/>
|
||||
<neighbor left="river 1" right="riverturn 1"/>
|
||||
<neighbor left="river" right="road"/>
|
||||
<neighbor left="river" right="roadturn"/>
|
||||
<neighbor left="river" right="t 1"/>
|
||||
<neighbor left="river" right="tower"/>
|
||||
<neighbor left="river" right="wall"/>
|
||||
<neighbor left="river 1" right="wallriver"/>
|
||||
<neighbor left="riverturn" right="riverturn 2"/>
|
||||
<neighbor left="road" right="riverturn"/>
|
||||
<neighbor left="roadturn 1" right="riverturn"/>
|
||||
<neighbor left="roadturn 2" right="riverturn"/>
|
||||
<neighbor left="t 3" right="riverturn"/>
|
||||
<neighbor left="tower 1" right="riverturn"/>
|
||||
<neighbor left="tower 2" right="riverturn"/>
|
||||
<neighbor left="wall" right="riverturn"/>
|
||||
<neighbor left="riverturn" right="wallriver"/>
|
||||
<neighbor left="road 1" right="road 1"/>
|
||||
<neighbor left="roadturn" right="road 1"/>
|
||||
<neighbor left="road 1" right="t"/>
|
||||
<neighbor left="road 1" right="t 3"/>
|
||||
<neighbor left="road" right="tower"/>
|
||||
<neighbor left="road" right="wall"/>
|
||||
<neighbor left="road 1" right="wallroad"/>
|
||||
<neighbor left="roadturn" right="roadturn 2"/>
|
||||
<neighbor left="roadturn" right="t"/>
|
||||
<neighbor left="roadturn 1" right="tower"/>
|
||||
<neighbor left="roadturn 2" right="tower"/>
|
||||
<neighbor left="roadturn 1" right="wall"/>
|
||||
<neighbor left="roadturn" right="wallroad"/>
|
||||
<neighbor left="t" right="t 2"/>
|
||||
<neighbor left="t 3" right="tower"/>
|
||||
<neighbor left="t 3" right="wall"/>
|
||||
<neighbor left="t" right="wallroad"/>
|
||||
<neighbor left="t 1" right="wallroad"/>
|
||||
<neighbor left="tower" right="wall 1"/>
|
||||
<neighbor left="tower" right="wallriver 1"/>
|
||||
<neighbor left="tower" right="wallroad 1"/>
|
||||
<neighbor left="wall 1" right="wall 1"/>
|
||||
<neighbor left="wall 1" right="wallriver 1"/>
|
||||
<neighbor left="wall 1" right="wallroad 1"/>
|
||||
<neighbor left="wallriver 1" right="wallroad 1"/>
|
||||
</neighbors>
|
||||
</set>
|
BIN
original_examples/samples/Castle/ground.png
Normal file
After Width: | Height: | Size: 98 B |
BIN
original_examples/samples/Castle/river.png
Normal file
After Width: | Height: | Size: 105 B |
BIN
original_examples/samples/Castle/riverturn.png
Normal file
After Width: | Height: | Size: 125 B |
BIN
original_examples/samples/Castle/road.png
Normal file
After Width: | Height: | Size: 114 B |
BIN
original_examples/samples/Castle/roadturn.png
Normal file
After Width: | Height: | Size: 129 B |
BIN
original_examples/samples/Castle/t.png
Normal file
After Width: | Height: | Size: 124 B |
BIN
original_examples/samples/Castle/tower.png
Normal file
After Width: | Height: | Size: 117 B |
BIN
original_examples/samples/Castle/wall.png
Normal file
After Width: | Height: | Size: 131 B |
BIN
original_examples/samples/Castle/wallriver.png
Normal file
After Width: | Height: | Size: 148 B |
BIN
original_examples/samples/Castle/wallroad.png
Normal file
After Width: | Height: | Size: 149 B |
BIN
original_examples/samples/Cat.png
Normal file
After Width: | Height: | Size: 262 B |
BIN
original_examples/samples/Cats.png
Normal file
After Width: | Height: | Size: 260 B |
BIN
original_examples/samples/Cave.png
Normal file
After Width: | Height: | Size: 168 B |
BIN
original_examples/samples/Chess.png
Normal file
After Width: | Height: | Size: 106 B |
BIN
original_examples/samples/Circles/b.png
Normal file
After Width: | Height: | Size: 103 B |
BIN
original_examples/samples/Circles/b_half.png
Normal file
After Width: | Height: | Size: 474 B |
BIN
original_examples/samples/Circles/b_i.png
Normal file
After Width: | Height: | Size: 559 B |
BIN
original_examples/samples/Circles/b_quarter.png
Normal file
After Width: | Height: | Size: 509 B |
118
original_examples/samples/Circles/data.xml
Normal file
@ -0,0 +1,118 @@
|
||||
<set size="32">
|
||||
<tiles>
|
||||
<tile name="b_half" symmetry="T"/>
|
||||
<tile name="b_i" symmetry="I"/>
|
||||
<tile name="b_quarter" symmetry="L"/>
|
||||
<tile name="w_half" symmetry="T"/>
|
||||
<tile name="w_i" symmetry="I"/>
|
||||
<tile name="w_quarter" symmetry="L"/>
|
||||
<tile name="b" symmetry="X"/>
|
||||
<tile name="w" symmetry="X"/>
|
||||
</tiles>
|
||||
<neighbors>
|
||||
<neighbor left="b_half" right="b_half"/>
|
||||
<neighbor left="b_half 1" right="b_half 3"/>
|
||||
<neighbor left="b_half 3" right="b_half 1"/>
|
||||
<neighbor left="b_half" right="b_half 3"/>
|
||||
<neighbor left="b_half" right="b_half 2"/>
|
||||
<neighbor left="b_half" right="b_i"/>
|
||||
<neighbor left="b_half 3" right="b_i 1"/>
|
||||
<neighbor left="b_half 1" right="b_i"/>
|
||||
<neighbor left="b_half" right="b_quarter"/>
|
||||
<neighbor left="b_half 1" right="b_quarter"/>
|
||||
<neighbor left="b_half 2" right="b_quarter"/>
|
||||
<neighbor left="b_half 3" right="b_quarter 1"/>
|
||||
<neighbor left="b_i" right="b_i"/>
|
||||
<neighbor left="b_i 1" right="b_i 1"/>
|
||||
<neighbor left="b_i" right="b_quarter"/>
|
||||
<neighbor left="b_i 1" right="b_quarter 1"/>
|
||||
<neighbor left="b_quarter" right="b_quarter 1"/>
|
||||
<neighbor left="b_quarter 1" right="b_quarter"/>
|
||||
<neighbor left="b_quarter 2" right="b_quarter"/>
|
||||
<neighbor left="b_quarter" right="b_quarter 2"/>
|
||||
<neighbor left="b_half 1" right="w_half 1"/>
|
||||
<neighbor left="b_half" right="w_half 1"/>
|
||||
<neighbor left="b_half 3" right="w_half"/>
|
||||
<neighbor left="b_half 3" right="w_half 3"/>
|
||||
<neighbor left="b_half" right="w_i 1"/>
|
||||
<neighbor left="b_half 1" right="w_i 1"/>
|
||||
<neighbor left="b_half 3" right="w_i"/>
|
||||
<neighbor left="b_half" right="w_quarter 1"/>
|
||||
<neighbor left="b_half" right="w_quarter 2"/>
|
||||
<neighbor left="b_half 1" right="w_quarter 1"/>
|
||||
<neighbor left="b_half 3" right="w_quarter"/>
|
||||
<neighbor left="b_i" right="w_half 1"/>
|
||||
<neighbor left="b_i 1" right="w_half"/>
|
||||
<neighbor left="b_i 1" right="w_half 3"/>
|
||||
<neighbor left="b_i" right="w_i 1"/>
|
||||
<neighbor left="b_i 1" right="w_i"/>
|
||||
<neighbor left="b_i" right="w_quarter 1"/>
|
||||
<neighbor left="b_i 1" right="w_quarter"/>
|
||||
<neighbor left="b_quarter" right="w_half"/>
|
||||
<neighbor left="b_quarter" right="w_half 3"/>
|
||||
<neighbor left="b_quarter" right="w_half 2"/>
|
||||
<neighbor left="b_quarter 1" right="w_half 1"/>
|
||||
<neighbor left="b_quarter" right="w_i"/>
|
||||
<neighbor left="b_quarter 1" right="w_i 1"/>
|
||||
<neighbor left="b_quarter" right="w_quarter"/>
|
||||
<neighbor left="b_quarter" right="w_quarter 3"/>
|
||||
<neighbor left="b_quarter 1" right="w_quarter 1"/>
|
||||
<neighbor left="b_quarter 1" right="w_quarter 2"/>
|
||||
<neighbor left="w_half" right="w_half"/>
|
||||
<neighbor left="w_half 1" right="w_half 3"/>
|
||||
<neighbor left="w_half 3" right="w_half 1"/>
|
||||
<neighbor left="w_half" right="w_half 3"/>
|
||||
<neighbor left="w_half" right="w_half 2"/>
|
||||
<neighbor left="w_half" right="w_i"/>
|
||||
<neighbor left="w_half 3" right="w_i 1"/>
|
||||
<neighbor left="w_half 1" right="w_i"/>
|
||||
<neighbor left="w_half" right="w_quarter"/>
|
||||
<neighbor left="w_half 1" right="w_quarter"/>
|
||||
<neighbor left="w_half 2" right="w_quarter"/>
|
||||
<neighbor left="w_half 3" right="w_quarter 1"/>
|
||||
<neighbor left="w_i" right="w_i"/>
|
||||
<neighbor left="w_i 1" right="w_i 1"/>
|
||||
<neighbor left="w_i" right="w_quarter"/>
|
||||
<neighbor left="w_i 1" right="w_quarter 1"/>
|
||||
<neighbor left="w_quarter" right="w_quarter 1"/>
|
||||
<neighbor left="w_quarter 1" right="w_quarter"/>
|
||||
<neighbor left="w_quarter 2" right="w_quarter"/>
|
||||
<neighbor left="w_quarter" right="w_quarter 2"/>
|
||||
<neighbor left="b" right="b"/>
|
||||
<neighbor left="b" right="b_half 1"/>
|
||||
<neighbor left="b" right="b_i 1"/>
|
||||
<neighbor left="b" right="b_quarter 1"/>
|
||||
<neighbor left="b" right="w_half"/>
|
||||
<neighbor left="b" right="w_half 3"/>
|
||||
<neighbor left="b" right="w_i"/>
|
||||
<neighbor left="b" right="w_quarter"/>
|
||||
<neighbor left="w" right="w"/>
|
||||
<neighbor left="w" right="w_half 1"/>
|
||||
<neighbor left="w" right="w_i 1"/>
|
||||
<neighbor left="w" right="w_quarter 1"/>
|
||||
<neighbor left="w" right="b_half"/>
|
||||
<neighbor left="w" right="b_half 3"/>
|
||||
<neighbor left="w" right="b_i"/>
|
||||
<neighbor left="w" right="b_quarter"/>
|
||||
</neighbors>
|
||||
<subsets>
|
||||
<subset name="Large Circles">
|
||||
<tile name="b_quarter"/>
|
||||
<tile name="w_quarter"/>
|
||||
</subset>
|
||||
<subset name="Large Circles and Solid">
|
||||
<tile name="b_quarter"/>
|
||||
<tile name="w_quarter"/>
|
||||
<tile name="b"/>
|
||||
<tile name="w"/>
|
||||
</subset>
|
||||
<subset name="No Solid">
|
||||
<tile name="b_half" symmetry="T"/>
|
||||
<tile name="b_i" symmetry="I"/>
|
||||
<tile name="b_quarter" symmetry="L"/>
|
||||
<tile name="w_half" symmetry="T"/>
|
||||
<tile name="w_i" symmetry="I"/>
|
||||
<tile name="w_quarter" symmetry="L"/>
|
||||
</subset>
|
||||
</subsets>
|
||||
</set>
|
BIN
original_examples/samples/Circles/w.png
Normal file
After Width: | Height: | Size: 119 B |
BIN
original_examples/samples/Circles/w_half.png
Normal file
After Width: | Height: | Size: 464 B |
BIN
original_examples/samples/Circles/w_i.png
Normal file
After Width: | Height: | Size: 566 B |
BIN
original_examples/samples/Circles/w_quarter.png
Normal file
After Width: | Height: | Size: 554 B |
BIN
original_examples/samples/Circuit/bridge.png
Normal file
After Width: | Height: | Size: 134 B |
BIN
original_examples/samples/Circuit/component.png
Normal file
After Width: | Height: | Size: 103 B |
BIN
original_examples/samples/Circuit/connection.png
Normal file
After Width: | Height: | Size: 168 B |
BIN
original_examples/samples/Circuit/corner.png
Normal file
After Width: | Height: | Size: 116 B |
182
original_examples/samples/Circuit/data.xml
Normal file
@ -0,0 +1,182 @@
|
||||
<set size="14">
|
||||
<tiles>
|
||||
<tile name="bridge" symmetry="I" weight="1.0"/>
|
||||
<tile name="component" symmetry="X" weight="20.0"/>
|
||||
<tile name="connection" symmetry="T" weight="10.0"/>
|
||||
<tile name="corner" symmetry="L" weight="10.0"/>
|
||||
<tile name="substrate" symmetry="X" weight="2.0"/>
|
||||
<tile name="t" symmetry="T" weight="0.1"/>
|
||||
<tile name="track" symmetry="I" weight="2.0"/>
|
||||
<tile name="transition" symmetry="T" weight="0.4"/>
|
||||
<tile name="turn" symmetry="L" weight="1.0"/>
|
||||
<tile name="viad" symmetry="I" weight="0.1"/>
|
||||
<tile name="vias" symmetry="T" weight="0.3"/>
|
||||
<tile name="wire" symmetry="I" weight="0.5"/>
|
||||
<tile name="skew" symmetry="L" weight="2.0"/>
|
||||
<tile name="dskew" symmetry="\" weight="2.0"/>
|
||||
</tiles>
|
||||
<neighbors>
|
||||
<neighbor left="bridge" right="bridge"/>
|
||||
<neighbor left="bridge 1" right="bridge 1"/>
|
||||
<neighbor left="bridge 1" right="connection 1"/>
|
||||
<neighbor left="bridge 1" right="t 2"/>
|
||||
<neighbor left="bridge 1" right="t 3"/>
|
||||
<neighbor left="bridge 1" right="track 1"/>
|
||||
<neighbor left="bridge" right="transition 1"/>
|
||||
<neighbor left="bridge 1" right="turn 1"/>
|
||||
<neighbor left="bridge 1" right="viad"/>
|
||||
<neighbor left="bridge 1" right="vias 1"/>
|
||||
<neighbor left="bridge" right="wire"/>
|
||||
<neighbor left="component" right="component"/>
|
||||
<neighbor left="connection 1" right="component"/>
|
||||
<neighbor left="connection" right="connection"/>
|
||||
<neighbor left="connection" right="corner"/>
|
||||
<neighbor left="t 1" right="connection 1"/>
|
||||
<neighbor left="t 2" right="connection 1"/>
|
||||
<neighbor left="track 1" right="connection 1"/>
|
||||
<neighbor left="turn" right="connection 1"/>
|
||||
<neighbor left="substrate" right="corner 1"/>
|
||||
<neighbor left="t 3" right="corner 1"/>
|
||||
<neighbor left="track" right="corner 1"/>
|
||||
<neighbor left="transition 2" right="corner 1"/>
|
||||
<neighbor left="transition" right="corner 1"/>
|
||||
<neighbor left="turn 1" right="corner 1"/>
|
||||
<neighbor left="turn 2" right="corner 1"/>
|
||||
<neighbor left="viad 1" right="corner 1"/>
|
||||
<neighbor left="vias 1" right="corner 1"/>
|
||||
<neighbor left="vias 2" right="corner 1"/>
|
||||
<neighbor left="vias" right="corner 1"/>
|
||||
<neighbor left="wire 1" right="corner 1"/>
|
||||
<neighbor left="substrate" right="substrate"/>
|
||||
<neighbor left="substrate" right="t 1"/>
|
||||
<neighbor left="substrate" right="track"/>
|
||||
<neighbor left="substrate" right="transition 2"/>
|
||||
<neighbor left="substrate" right="turn"/>
|
||||
<neighbor left="substrate" right="viad 1"/>
|
||||
<neighbor left="substrate" right="vias 2"/>
|
||||
<neighbor left="substrate" right="vias 3"/>
|
||||
<neighbor left="substrate" right="wire 1"/>
|
||||
<neighbor left="t 1" right="t 3"/>
|
||||
<neighbor left="t 3" right="t 1"/>
|
||||
<neighbor left="t 1" right="t 2"/>
|
||||
<neighbor left="t 2" right="t 2"/>
|
||||
<neighbor left="t 2" right="t"/>
|
||||
<neighbor left="t 3" right="track"/>
|
||||
<neighbor left="t 1" right="track 1"/>
|
||||
<neighbor left="t 2" right="track 1"/>
|
||||
<neighbor left="t 1" right="transition 3"/>
|
||||
<neighbor left="t 3" right="transition 2"/>
|
||||
<neighbor left="t 2" right="transition 3"/>
|
||||
<neighbor left="t 3" right="turn"/>
|
||||
<neighbor left="t 1" right="turn 1"/>
|
||||
<neighbor left="t 2" right="turn 1"/>
|
||||
<neighbor left="t 2" right="turn 2"/>
|
||||
<neighbor left="t 3" right="viad 1"/>
|
||||
<neighbor left="t 1" right="viad"/>
|
||||
<neighbor left="t 2" right="viad"/>
|
||||
<neighbor left="t 2" right="vias 1"/>
|
||||
<neighbor left="t 1" right="vias 1"/>
|
||||
<neighbor left="vias 1" right="t 1"/>
|
||||
<neighbor left="vias 2" right="t 1"/>
|
||||
<neighbor left="wire 1" right="t 1"/>
|
||||
<neighbor left="track" right="track"/>
|
||||
<neighbor left="track 1" right="track 1"/>
|
||||
<neighbor left="track 1" right="transition 3"/>
|
||||
<neighbor left="track" right="transition 2"/>
|
||||
<neighbor left="track" right="turn"/>
|
||||
<neighbor left="track 1" right="turn 1"/>
|
||||
<neighbor left="track" right="viad 1"/>
|
||||
<neighbor left="track 1" right="viad"/>
|
||||
<neighbor left="track" right="vias 2"/>
|
||||
<neighbor left="track" right="vias 3"/>
|
||||
<neighbor left="track 1" right="vias 1"/>
|
||||
<neighbor left="track" right="wire 1"/>
|
||||
<neighbor left="transition 2" right="turn"/>
|
||||
<neighbor left="transition" right="turn"/>
|
||||
<neighbor left="transition 1" right="turn 1"/>
|
||||
<neighbor left="transition 2" right="viad 1"/>
|
||||
<neighbor left="transition 2" right="vias 2"/>
|
||||
<neighbor left="transition 2" right="vias 3"/>
|
||||
<neighbor left="transition 2" right="vias"/>
|
||||
<neighbor left="wire" right="transition 1"/>
|
||||
<neighbor left="transition 2" right="wire 1"/>
|
||||
<neighbor left="turn 1" right="turn"/>
|
||||
<neighbor left="turn 2" right="turn"/>
|
||||
<neighbor left="turn" right="turn 1"/>
|
||||
<neighbor left="turn" right="turn 2"/>
|
||||
<neighbor left="turn 1" right="viad 1"/>
|
||||
<neighbor left="turn" right="viad"/>
|
||||
<neighbor left="turn 1" right="vias 2"/>
|
||||
<neighbor left="turn 1" right="vias 3"/>
|
||||
<neighbor left="turn 1" right="vias"/>
|
||||
<neighbor left="turn" right="vias 1"/>
|
||||
<neighbor left="turn 1" right="wire 1"/>
|
||||
<neighbor left="viad 1" right="viad 1"/>
|
||||
<neighbor left="viad 1" right="vias 2"/>
|
||||
<neighbor left="viad 1" right="vias 3"/>
|
||||
<neighbor left="viad 1" right="wire 1"/>
|
||||
<neighbor left="vias 1" right="wire 1"/>
|
||||
<neighbor left="vias 2" right="wire 1"/>
|
||||
<neighbor left="vias 1" right="vias 3"/>
|
||||
<neighbor left="vias 2" right="vias 2"/>
|
||||
<neighbor left="vias 2" right="vias"/>
|
||||
<neighbor left="wire" right="wire"/>
|
||||
<neighbor left="wire 1" right="wire 1"/>
|
||||
<neighbor left="bridge 1" right="dskew"/>
|
||||
<neighbor left="connection 3" right="dskew"/>
|
||||
<neighbor left="dskew" right="dskew"/>
|
||||
<neighbor left="skew" right="dskew"/>
|
||||
<neighbor left="t" right="dskew"/>
|
||||
<neighbor left="t 2" right="dskew"/>
|
||||
<neighbor left="t 1" right="dskew"/>
|
||||
<neighbor left="track 1" right="dskew"/>
|
||||
<neighbor left="transition 1" right="dskew"/>
|
||||
<neighbor left="turn 3" right="dskew"/>
|
||||
<neighbor left="viad" right="dskew"/>
|
||||
<neighbor left="vias 3" right="dskew"/>
|
||||
<neighbor left="skew" right="bridge 1"/>
|
||||
<neighbor left="skew" right="connection 1"/>
|
||||
<neighbor left="corner" right="skew"/>
|
||||
<neighbor left="corner 3" right="skew"/>
|
||||
<neighbor left="skew" right="dskew"/>
|
||||
<neighbor left="skew" right="skew 2"/>
|
||||
<neighbor left="skew 1" right="skew"/>
|
||||
<neighbor left="skew 1" right="skew 3"/>
|
||||
<neighbor left="substrate" right="skew"/>
|
||||
<neighbor left="t 3" right="skew"/>
|
||||
<neighbor left="t" right="skew 2"/>
|
||||
<neighbor left="t 2" right="skew 2"/>
|
||||
<neighbor left="t 1" right="skew 2"/>
|
||||
<neighbor left="track" right="skew"/>
|
||||
<neighbor left="track 1" right="skew 2"/>
|
||||
<neighbor left="transition" right="skew"/>
|
||||
<neighbor left="transition 1" right="skew 2"/>
|
||||
<neighbor left="turn 1" right="skew"/>
|
||||
<neighbor left="turn 2" right="skew"/>
|
||||
<neighbor left="turn 3" right="skew 2"/>
|
||||
<neighbor left="viad 1" right="skew"/>
|
||||
<neighbor left="viad" right="skew 2"/>
|
||||
<neighbor left="vias" right="skew"/>
|
||||
<neighbor left="vias 1" right="skew"/>
|
||||
<neighbor left="vias 2" right="skew"/>
|
||||
<neighbor left="vias 3" right="skew 2"/>
|
||||
<neighbor left="wire 1" right="skew"/>
|
||||
</neighbors>
|
||||
<subsets>
|
||||
<subset name="Turnless">
|
||||
<tile name="bridge"/>
|
||||
<tile name="component"/>
|
||||
<tile name="connection"/>
|
||||
<tile name="corner"/>
|
||||
<tile name="substrate"/>
|
||||
<tile name="t"/>
|
||||
<tile name="track"/>
|
||||
<tile name="transition"/>
|
||||
<tile name="viad"/>
|
||||
<tile name="vias"/>
|
||||
<tile name="wire"/>
|
||||
<tile name="skew"/>
|
||||
<tile name="dskew"/>
|
||||
</subset>
|
||||
</subsets>
|
||||
</set>
|
BIN
original_examples/samples/Circuit/dskew.png
Normal file
After Width: | Height: | Size: 190 B |
BIN
original_examples/samples/Circuit/skew.png
Normal file
After Width: | Height: | Size: 180 B |
BIN
original_examples/samples/Circuit/substrate.png
Normal file
After Width: | Height: | Size: 103 B |
BIN
original_examples/samples/Circuit/t.png
Normal file
After Width: | Height: | Size: 133 B |
BIN
original_examples/samples/Circuit/track.png
Normal file
After Width: | Height: | Size: 118 B |
BIN
original_examples/samples/Circuit/transition.png
Normal file
After Width: | Height: | Size: 185 B |
BIN
original_examples/samples/Circuit/turn.png
Normal file
After Width: | Height: | Size: 148 B |
BIN
original_examples/samples/Circuit/viad.png
Normal file
After Width: | Height: | Size: 159 B |
BIN
original_examples/samples/Circuit/vias.png
Normal file
After Width: | Height: | Size: 185 B |
BIN
original_examples/samples/Circuit/wire.png
Normal file
After Width: | Height: | Size: 116 B |
BIN
original_examples/samples/City.png
Normal file
After Width: | Height: | Size: 160 B |
BIN
original_examples/samples/Colored City.png
Normal file
After Width: | Height: | Size: 211 B |
BIN
original_examples/samples/Dungeon.png
Normal file
After Width: | Height: | Size: 205 B |
BIN
original_examples/samples/Fabric.png
Normal file
After Width: | Height: | Size: 120 B |
BIN
original_examples/samples/Flowers.png
Normal file
After Width: | Height: | Size: 271 B |
BIN
original_examples/samples/Forest.png
Normal file
After Width: | Height: | Size: 169 B |
BIN
original_examples/samples/Hogs.png
Normal file
After Width: | Height: | Size: 186 B |
BIN
original_examples/samples/Knot.png
Normal file
After Width: | Height: | Size: 177 B |
BIN
original_examples/samples/Knots/corner.png
Normal file
After Width: | Height: | Size: 155 B |
BIN
original_examples/samples/Knots/cross.png
Normal file
After Width: | Height: | Size: 181 B |
89
original_examples/samples/Knots/data.xml
Normal file
@ -0,0 +1,89 @@
|
||||
<set size="10">
|
||||
<tiles>
|
||||
<tile name="corner" symmetry="L"/>
|
||||
<tile name="cross" symmetry="I"/>
|
||||
<tile name="empty" symmetry="X"/>
|
||||
<tile name="line" symmetry="I"/>
|
||||
<tile name="t" symmetry="T"/>
|
||||
</tiles>
|
||||
<neighbors>
|
||||
<neighbor left="corner 1" right="empty"/>
|
||||
<neighbor left="corner" right="cross"/>
|
||||
<neighbor left="corner" right="cross 1"/>
|
||||
<neighbor left="corner" right="line"/>
|
||||
<neighbor left="corner 1" right="line 1"/>
|
||||
<neighbor left="corner" right="t 2"/>
|
||||
<neighbor left="corner" right="t 3"/>
|
||||
<neighbor left="corner" right="t"/>
|
||||
<neighbor left="corner 1" right="t 1"/>
|
||||
<neighbor left="corner 1" right="corner 3"/>
|
||||
<neighbor left="corner 1" right="corner"/>
|
||||
<neighbor left="corner" right="corner 1"/>
|
||||
<neighbor left="corner" right="corner 2"/>
|
||||
<neighbor left="cross" right="cross"/>
|
||||
<neighbor left="cross" right="cross 1"/>
|
||||
<neighbor left="cross 1" right="cross 1"/>
|
||||
<neighbor left="cross" right="line"/>
|
||||
<neighbor left="cross 1" right="line"/>
|
||||
<neighbor left="cross" right="t"/>
|
||||
<neighbor left="cross" right="t 3"/>
|
||||
<neighbor left="cross 1" right="t"/>
|
||||
<neighbor left="cross 1" right="t 3"/>
|
||||
<neighbor left="empty" right="empty"/>
|
||||
<neighbor left="empty" right="line 1"/>
|
||||
<neighbor left="empty" right="t 1"/>
|
||||
<neighbor left="line" right="line"/>
|
||||
<neighbor left="line 1" right="line 1"/>
|
||||
<neighbor left="line" right="t"/>
|
||||
<neighbor left="line 1" right="t 1"/>
|
||||
<neighbor left="line" right="t 3"/>
|
||||
<neighbor left="t 1" right="t 3"/>
|
||||
<neighbor left="t" right="t"/>
|
||||
<neighbor left="t 2" right="t"/>
|
||||
<neighbor left="t 1" right="t"/>
|
||||
<neighbor left="t 3" right="t 1"/>
|
||||
</neighbors>
|
||||
<subsets>
|
||||
<subset name="Standard">
|
||||
<tile name="corner"/>
|
||||
<tile name="cross"/>
|
||||
<tile name="empty"/>
|
||||
<tile name="line"/>
|
||||
</subset>
|
||||
<subset name="Dense">
|
||||
<tile name="corner"/>
|
||||
<tile name="cross"/>
|
||||
<tile name="line"/>
|
||||
</subset>
|
||||
<subset name="Crossless">
|
||||
<tile name="corner"/>
|
||||
<tile name="empty"/>
|
||||
<tile name="line"/>
|
||||
</subset>
|
||||
<subset name="TE">
|
||||
<tile name="t"/>
|
||||
<tile name="empty"/>
|
||||
</subset>
|
||||
<subset name="T">
|
||||
<tile name="t"/>
|
||||
</subset>
|
||||
<subset name="CL">
|
||||
<tile name="corner"/>
|
||||
<tile name="line"/>
|
||||
</subset>
|
||||
<subset name="CE">
|
||||
<tile name="corner"/>
|
||||
<tile name="empty"/>
|
||||
</subset>
|
||||
<subset name="C">
|
||||
<tile name="corner"/>
|
||||
</subset>
|
||||
<subset name="Fabric">
|
||||
<tile name="cross"/>
|
||||
<tile name="line"/>
|
||||
</subset>
|
||||
<subset name="Dense Fabric">
|
||||
<tile name="cross"/>
|
||||
</subset>
|
||||
</subsets>
|
||||
</set>
|
BIN
original_examples/samples/Knots/empty.png
Normal file
After Width: | Height: | Size: 99 B |
BIN
original_examples/samples/Knots/line.png
Normal file
After Width: | Height: | Size: 117 B |
BIN
original_examples/samples/Knots/t.png
Normal file
After Width: | Height: | Size: 146 B |
BIN
original_examples/samples/Lake.png
Normal file
After Width: | Height: | Size: 326 B |
BIN
original_examples/samples/Less Rooms.png
Normal file
After Width: | Height: | Size: 172 B |
BIN
original_examples/samples/Link 2.png
Normal file
After Width: | Height: | Size: 198 B |
BIN
original_examples/samples/Link.png
Normal file
After Width: | Height: | Size: 213 B |
BIN
original_examples/samples/Magic Office.png
Normal file
After Width: | Height: | Size: 216 B |
BIN
original_examples/samples/Maze.png
Normal file
After Width: | Height: | Size: 200 B |
BIN
original_examples/samples/Mazelike.png
Normal file
After Width: | Height: | Size: 250 B |
BIN
original_examples/samples/More Flowers.png
Normal file
After Width: | Height: | Size: 318 B |
BIN
original_examples/samples/Mountains.png
Normal file
After Width: | Height: | Size: 160 B |
BIN
original_examples/samples/Nested.png
Normal file
After Width: | Height: | Size: 195 B |
BIN
original_examples/samples/Office 2.png
Normal file
After Width: | Height: | Size: 332 B |
BIN
original_examples/samples/Office.png
Normal file
After Width: | Height: | Size: 171 B |
BIN
original_examples/samples/Paths.png
Normal file
After Width: | Height: | Size: 173 B |
BIN
original_examples/samples/Platformer.png
Normal file
After Width: | Height: | Size: 451 B |
BIN
original_examples/samples/Qud.png
Normal file
After Width: | Height: | Size: 203 B |
BIN
original_examples/samples/Red Dot.png
Normal file
After Width: | Height: | Size: 167 B |
BIN
original_examples/samples/Red Maze.png
Normal file
After Width: | Height: | Size: 105 B |
BIN
original_examples/samples/Rooms.png
Normal file
After Width: | Height: | Size: 181 B |
BIN
original_examples/samples/Rooms/bend.png
Normal file
After Width: | Height: | Size: 102 B |
BIN
original_examples/samples/Rooms/corner.png
Normal file
After Width: | Height: | Size: 99 B |
BIN
original_examples/samples/Rooms/corridor.png
Normal file
After Width: | Height: | Size: 101 B |
55
original_examples/samples/Rooms/data.xml
Normal file
@ -0,0 +1,55 @@
|
||||
<set size="3">
|
||||
<tiles>
|
||||
<tile name="bend" symmetry="L" weight="0.5"/>
|
||||
<tile name="corner" symmetry="L" weight="0.5"/>
|
||||
<tile name="corridor" symmetry="I" weight="1.0"/>
|
||||
<tile name="door" symmetry="T" weight="0.5"/>
|
||||
<tile name="empty" symmetry="X"/>
|
||||
<tile name="side" symmetry="T" weight="2.0"/>
|
||||
<tile name="t" symmetry="T" weight="0.5"/>
|
||||
<tile name="turn" symmetry="L" weight="0.25"/>
|
||||
<tile name="wall" symmetry="X"/>
|
||||
</tiles>
|
||||
<neighbors>
|
||||
<neighbor left="corner 1" right="corner"/>
|
||||
<neighbor left="corner 2" right="corner"/>
|
||||
<neighbor left="corner" right="door"/>
|
||||
<neighbor left="corner" right="side 2"/>
|
||||
<neighbor left="corner 1" right="side 1"/>
|
||||
<neighbor left="corner 1" right="t 1"/>
|
||||
<neighbor left="corner 1" right="turn"/>
|
||||
<neighbor left="corner 2" right="turn"/>
|
||||
<neighbor left="wall" right="corner"/>
|
||||
<neighbor left="corridor 1" right="corridor 1"/>
|
||||
<neighbor left="corridor 1" right="door 3"/>
|
||||
<neighbor left="corridor" right="side 1"/>
|
||||
<neighbor left="corridor 1" right="t"/>
|
||||
<neighbor left="corridor 1" right="t 3"/>
|
||||
<neighbor left="corridor 1" right="turn 1"/>
|
||||
<neighbor left="corridor" right="wall"/>
|
||||
<neighbor left="door 1" right="door 3"/>
|
||||
<neighbor left="door 3" right="empty"/>
|
||||
<neighbor left="door" right="side 2"/>
|
||||
<neighbor left="door 1" right="t"/>
|
||||
<neighbor left="door 1" right="t 3"/>
|
||||
<neighbor left="door 1" right="turn 1"/>
|
||||
<neighbor left="empty" right="empty"/>
|
||||
<neighbor left="empty" right="side 3"/>
|
||||
<neighbor left="side" right="side"/>
|
||||
<neighbor left="side 3" right="side 1"/>
|
||||
<neighbor left="side 3" right="t 1"/>
|
||||
<neighbor left="side 3" right="turn"/>
|
||||
<neighbor left="side 3" right="wall"/>
|
||||
<neighbor left="t" right="t 2"/>
|
||||
<neighbor left="t" right="turn 1"/>
|
||||
<neighbor left="t 3" right="wall"/>
|
||||
<neighbor left="turn" right="turn 2"/>
|
||||
<neighbor left="turn 1" right="wall"/>
|
||||
<neighbor left="wall" right="wall"/>
|
||||
<neighbor left="bend" right="bend 1"/>
|
||||
<neighbor left="corner" right="bend 2"/>
|
||||
<neighbor left="door" right="bend 2"/>
|
||||
<neighbor left="empty" right="bend"/>
|
||||
<neighbor left="side" right="bend 1"/>
|
||||
</neighbors>
|
||||
</set>
|
BIN
original_examples/samples/Rooms/door.png
Normal file
After Width: | Height: | Size: 97 B |
BIN
original_examples/samples/Rooms/empty.png
Normal file
After Width: | Height: | Size: 101 B |
BIN
original_examples/samples/Rooms/side.png
Normal file
After Width: | Height: | Size: 95 B |
BIN
original_examples/samples/Rooms/t.png
Normal file
After Width: | Height: | Size: 98 B |
BIN
original_examples/samples/Rooms/turn.png
Normal file
After Width: | Height: | Size: 100 B |
BIN
original_examples/samples/Rooms/wall.png
Normal file
After Width: | Height: | Size: 89 B |
BIN
original_examples/samples/Rule 126.png
Normal file
After Width: | Height: | Size: 516 B |