Handle creation of new collision quads

Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
This commit is contained in:
sigonasr2, Sig, Sigo 2024-03-13 18:41:46 +00:00
parent 687cb667dc
commit dbf34258da
17 changed files with 1025 additions and 19 deletions

View File

@ -6,28 +6,28 @@ if [[ -z $output ]]
then then
sudo apt install libx11-dev libpulse-dev mesa-common-dev libpng-dev libstdc++-12-dev sudo apt install libx11-dev libpulse-dev mesa-common-dev libpng-dev libstdc++-12-dev
fi fi
if [ ! -f "pixelGameEngine.o" ] if [ ! -f "${PROJECT_NAME}/pixelGameEngine.o" ]
then then
printf "Pixel Game Engine compile object missing. Compiling for the first time..." printf "Pixel Game Engine compile object missing. Compiling for the first time..."
g++ ${CUSTOM_PARAMS} -c pixelGameEngine.cpp g++ ${CUSTOM_PARAMS} -c ${PROJECT_NAME}/pixelGameEngine.cpp
fi fi
if [ "$1" = "test" ] if [ "$1" = "test" ]
then then
printf "Running tests...\n" printf "Running tests...\n"
echo "#define TEST_SUITE" > ./test/test.h echo "#define TEST_SUITE" > ./test/test.h
if g++ $(find . -type f -name "*.cpp" -not -name "pixelGameEngine.cpp") pixelGameEngine.o ${CUSTOM_PARAMS} -o ${PROJECT_NAME}; then if g++ $(find . -type f -name "*.cpp" -not -name "${PROJECT_NAME}/pixelGameEngine.cpp") pixelGameEngine.o ${CUSTOM_PARAMS} -o ${PROJECT_NAME}; then
./${PROJECT_NAME} "$@" ./${PROJECT_NAME} "$@"
fi fi
elif [ "$1" = "full" ] elif [ "$1" = "full" ]
then then
echo "" > ./test/test.h echo "" > ./test/test.h
g++ ${CUSTOM_PARAMS} -c pixelGameEngine.cpp g++ ${CUSTOM_PARAMS} -c ${PROJECT_NAME}/pixelGameEngine.cpp
if g++ $(find . -type f -name "*.cpp" -not -path "./test/*" -not -name "pixelGameEngine.cpp") pixelGameEngine.o ${CUSTOM_PARAMS} -o ${PROJECT_NAME}; then if g++ $(find . -type f -name "*.cpp" -not -path "./test/*" -not -name "${PROJECT_NAME}/pixelGameEngine.cpp") ${PROJECT_NAME}/pixelGameEngine.o ${CUSTOM_PARAMS} -o ${PROJECT_NAME}; then
./${PROJECT_NAME} "$@" ./${PROJECT_NAME} "$@"
fi fi
else else
echo "" > ./test/test.h echo "" > ./test/test.h
if g++ $(find . -type f -name "*.cpp" -not -path "./test/*" -not -name "pixelGameEngine.cpp") pixelGameEngine.o ${CUSTOM_PARAMS} -o ${PROJECT_NAME}; then if g++ $(find . -type f -name "*.cpp" -not -path "./test/*" -not -name "${PROJECT_NAME}/pixelGameEngine.cpp") ${PROJECT_NAME}/pixelGameEngine.o ${CUSTOM_PARAMS} -o ${PROJECT_NAME}; then
./${PROJECT_NAME} "$@" ./${PROJECT_NAME} "$@"
fi fi
fi fi

View File

@ -6,18 +6,18 @@ then
sudo apt install libx11-dev libpulse-dev mesa-common-dev libpng-dev libstdc++-12-dev sudo apt install libx11-dev libpulse-dev mesa-common-dev libpng-dev libstdc++-12-dev
fi fi
if [[ "$1" == "full" || "$2" == "full" ]]; then if [[ "$1" == "full" || "$2" == "full" ]]; then
rm "pixelGameEngine_wasm.o" rm "${PROJECT_NAME}/pixelGameEngine_wasm.o"
fi fi
source ../emsdk/emsdk_env.sh source ../emsdk/emsdk_env.sh
if [ ! -f "pixelGameEngine_wasm.o" ] if [ ! -f "${PROJECT_NAME}/pixelGameEngine_wasm.o" ]
then then
printf "Pixel Game Engine compile object missing. Compiling for the first time..." printf "Pixel Game Engine compile object missing. Compiling for the first time..."
em++ -std=c++20 -O2 ${EMSCRIPTEN_CUSTOM_PARAMS} -s ALLOW_MEMORY_GROWTH=1 -s MAXIMUM_MEMORY=4GB -s MAX_WEBGL_VERSION=2 -s MIN_WEBGL_VERSION=2 -s USE_SDL_MIXER=2 -s USE_LIBPNG=1 -s USE_FREETYPE=1 -c pixelGameEngine.cpp -o pixelGameEngine_wasm.o em++ -std=c++20 -O2 ${EMSCRIPTEN_CUSTOM_PARAMS} -s ALLOW_MEMORY_GROWTH=1 -s MAXIMUM_MEMORY=4GB -s MAX_WEBGL_VERSION=2 -s MIN_WEBGL_VERSION=2 -s USE_SDL_MIXER=2 -s USE_LIBPNG=1 -s USE_FREETYPE=1 -c ${PROJECT_NAME}/pixelGameEngine.cpp -o ${PROJECT_NAME}/pixelGameEngine_wasm.o
fi fi
if [ -d "assets" ]; then if [ -d "assets" ]; then
em++ -std=c++20 -O2 ${EMSCRIPTEN_CUSTOM_PARAMS} -s ALLOW_MEMORY_GROWTH=1 -s MAXIMUM_MEMORY=4GB -s MAX_WEBGL_VERSION=2 -s MIN_WEBGL_VERSION=2 -s USE_SDL_MIXER=2 -s USE_LIBPNG=1 -s USE_FREETYPE=1 $(find . -type f -name "*.cpp" -not -path "./test/*" -not -name "pixelGameEngine.cpp") pixelGameEngine_wasm.o -o ${PROJECT_NAME}.html --preload-file ./assets em++ -std=c++20 -O2 ${EMSCRIPTEN_CUSTOM_PARAMS} -s ALLOW_MEMORY_GROWTH=1 -s MAXIMUM_MEMORY=4GB -s MAX_WEBGL_VERSION=2 -s MIN_WEBGL_VERSION=2 -s USE_SDL_MIXER=2 -s USE_LIBPNG=1 -s USE_FREETYPE=1 $(find . -type f -name "*.cpp" -not -path "./test/*" -not -name "pixelGameEngine.cpp") ${PROJECT_NAME}/pixelGameEngine_wasm.o -o ${PROJECT_NAME}.html --preload-file ./assets
else else
em++ -std=c++20 -O2 ${EMSCRIPTEN_CUSTOM_PARAMS} -s ALLOW_MEMORY_GROWTH=1 -s MAXIMUM_MEMORY=4GB -s MAX_WEBGL_VERSION=2 -s MIN_WEBGL_VERSION=2 -s USE_SDL_MIXER=2 -s USE_LIBPNG=1 -s USE_FREETYPE=1 $(find . -type f -name "*.cpp" -not -path "./test/*" -not -name "pixelGameEngine.cpp") pixelGameEngine_wasm.o -o ${PROJECT_NAME}.html em++ -std=c++20 -O2 ${EMSCRIPTEN_CUSTOM_PARAMS} -s ALLOW_MEMORY_GROWTH=1 -s MAXIMUM_MEMORY=4GB -s MAX_WEBGL_VERSION=2 -s MIN_WEBGL_VERSION=2 -s USE_SDL_MIXER=2 -s USE_LIBPNG=1 -s USE_FREETYPE=1 $(find . -type f -name "*.cpp" -not -path "./test/*" -not -name "pixelGameEngine.cpp") ${PROJECT_NAME}/pixelGameEngine_wasm.o -o ${PROJECT_NAME}.html
fi fi
cp buildtemplate.html ${PROJECT_NAME}.html cp buildtemplate.html ${PROJECT_NAME}.html

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

959
TiledCollisionEditor.data Normal file
View File

@ -0,0 +1,959 @@
<?xml version="1.0" encoding="UTF-8"?>
<tileset version="1.10" tiledversion="1.10.2" name="Basic Tileset" tilewidth="16" tileheight="16" tilecount="864" columns="32">
<transformations hflip="1" vflip="1" rotate="0" preferuntransformed="0"/>
<image source="tilemap-3-normal.png" width="512" height="432"/>
<tile id="3" type="Object">
<properties>
<property name="Name" value="Stop Sign"/>
</properties>
</tile>
<tile id="4" type="Object">
<properties>
<property name="Name" value="Stop Sign"/>
</properties>
</tile>
<tile id="8" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="9" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="10" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="11" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="12" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="13" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="14" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="15" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="16" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="17" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="18" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="19" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="20" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="21" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="22" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="23" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="24" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="35" type="Object">
<properties>
<property name="Name" value="Stop Sign"/>
</properties>
</tile>
<tile id="36" type="Object">
<properties>
<property name="Name" value="Stop Sign"/>
</properties>
</tile>
<tile id="40" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="41" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="42" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="43" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="44" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="45" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="46" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="47" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="48" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="49" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="50" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="51" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="52" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="53" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="54" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="55" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="56" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="67" type="Object">
<properties>
<property name="Name" value="Stop Sign"/>
</properties>
</tile>
<tile id="68" type="Object">
<properties>
<property name="Name" value="Stop Sign"/>
</properties>
</tile>
<tile id="72" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="73" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="74" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="75" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="76" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="77" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="78" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="79" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="80" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="81" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="82" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="83" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="84" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="85" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="86" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="87" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="88" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="99" type="Object">
<properties>
<property name="Name" value="Stop Sign"/>
</properties>
</tile>
<tile id="100" type="Object">
<properties>
<property name="Name" value="Stop Sign"/>
</properties>
</tile>
<tile id="104" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="105" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="106" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="107" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="108" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="109" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="110" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="111" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="112" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="113" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="114" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="115" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="116" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="117" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="118" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="119" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="120" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="136" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="137" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="138" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="139" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="140" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="141" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="142" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="143" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="144" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="145" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="146" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="147" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="148" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="149" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="150" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="151" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="152" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="168" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="169" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="170" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="171" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="172" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="173" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="174" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="175" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="176" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="177" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="178" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="179" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="180" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="181" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="182" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="183" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="184" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="200" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="201" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="202" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="203" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="204" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="205" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="206" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="207" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="208" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="209" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="210" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="211" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="212" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="213" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="214" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="215" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="216" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="232" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="233" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="234" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="235" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="236" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="237" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="238" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="239" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="240" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="241" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="242" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="243" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="244" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="245" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="246" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="247" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="248" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="264" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="265" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="266" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="267" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="268" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="269" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="270" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="271" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="272" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="273" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="274" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="275" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="276" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="277" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="278" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="279" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
<tile id="280" type="PerspectiveObject">
<properties>
<property name="Name" value="BlueHouse1"/>
</properties>
</tile>
</tileset>
<EFBFBD>PNG

IHDR°ßZÝÇzTXtRaw profile type exifxÚmPÁ Ă ü3EGŔ>C`h<>Ô :~Ml¤$ęI<C499>ă0ž<30>#ź&<26>$HÚJŽ9G<39>TŠÜT<C39C>hh'S<><53>Řłˇ|čK˛Fh<46>JśH+ż<><RS<52>.Fĺí<C4BA>~/TńçËĂČú<C48C><C3BA>M˝ťQu#°Č <0A>}+ćZśëú<>w[aR?´<>9#żüÜËŚÓŰ<C393>žćBT˛5<CB9B>š$ ŠŔÉI˛jARf<52>ů7§<37>đß×#ˇą<01>iCCPICC profilex<>}<7D>=HĂ@Ĺ_SkEŞvqČP<C48C>ě˘"<22>KŠb,<2C>śBŤ&<26>~M<1A>GÁľŕŕÇbŐÁĹYWWAüqvpRt<52>˙<>ZÄxpÜ<70>ĄQaŞŮTÍ2Ň<32>¸<EFBFBD>ËŻ<C38B>ÁWř@7fŃ/1SOf˛đ_÷đńő.ĘłźĎý9ú<39><C3BA>É<00>HcşaŻOoZ:ç}â0+K
ń9ń¸A$~äşěňç<>ĂĎ Ůôq<>X,u°ÜÁŹl¨ÄSÄEŐ(_ČšŹpŢâŹVjŹuOţÂPA[Îp<C38E>ćXD)<29><>ĽU#ĹD<C4B9>öăţaÇ<61>"<22>LŽ 0rĚŁ
<15>ă˙<>ßÝ<C39F>ĹÉ 7)/śý1
w<>fÝśż<C59B>mťyř<><C599>+­íŻ6<C5BB><36>OŇëm-r l×mMŢ.w<>Ą']2$GňÓ<14>Eŕý<C595>ž) Ţ˝Ťno­}<7D>>Yęjé88ĆJ<C486>˝ćńî<C584>ÎŢţ=Óęď<07>űrľÉb<C389>âUiTXtXML:com.adobe.xmp<?xpacket begin="ďťż" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:GIMP="http://www.gimp.org/xmp/"
xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:DocumentID="gimp:docid:gimp:dfee2470-fbb2-46ff-8f41-1f82143f8895"
xmpMM:InstanceID="xmp.iid:a1c2a389-d76b-4cad-9f2d-65107acb6ab3"
xmpMM:OriginalDocumentID="xmp.did:61ee3da2-3b95-46a3-9082-bc4ee6636679"
dc:Format="image/png"
GIMP:API="2.0"
GIMP:Platform="Windows"
GIMP:TimeStamp="1709678726242178"
GIMP:Version="2.10.36"
tiff:Orientation="1"
xmp:CreatorTool="GIMP 2.10"
xmp:MetadataDate="2024:03:05T16:45:21-06:00"
xmp:ModifyDate="2024:03:05T16:45:21-06:00">
<xmpMM:History>
<rdf:Seq>
<rdf:li
stEvt:action="saved"
stEvt:changed="/"
stEvt:instanceID="xmp.iid:6caab071-227d-49cb-9312-258b97c505a0"
stEvt:softwareAgent="Gimp 2.10 (Windows)"
stEvt:when="2024-02-23T16:34:41"/>
<rdf:li
stEvt:action="saved"
stEvt:changed="/"
stEvt:instanceID="xmp.iid:6f73116e-2a6b-4df3-8ee9-1b19e74acb2b"
stEvt:softwareAgent="Gimp 2.10 (Windows)"
stEvt:when="2024-03-05T16:45:26"/>
</rdf:Seq>
</xmpMM:History>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end="w"?>ő<>ąÉbKGD<06>?<3F> pHYsĂĂÇo¨dtIMEč-<1A>^Ĺú IDATxÚíÝ}<7D>$e<>'đ_<0F>Ăôź<C3B4>3ÂŔź(Â<>
çp(xĂ)r<>캡*§Ąa (xŢé<C5A2>§L(*ĄěĂË/'+Ę<> ęK¸<4B>ÁáŞç<C59E>¨°"<22>ŕ*ŤăËźŃŔô=ŻźőýŃ<C3BD>ŐYŮ<59>Őő^YŐ<59>OA÷SůTUVNç÷<C3A7>O><3E>5´öSkĆŁ<C486><C581>:ůîŚű.ýÝŞXý<58>K<EFBFBD>Ś[nĺđpSëx˙Î<CB99>Ó>÷;Nů<4E>=ůüNçŰâşëo<C3AB>E<EFBFBD>EDÄĆ<C384><C486>âŘWÝđóŹ˝đŇĄ<>ÝŻo|éďVĹ[<5B>9%VÇ%Ó<>˙ľˇßÖÔkź˙ő'<27>OW\zާťžî÷=řŤ8ęČ<C499>ÇĽç}:>Ĺ<7F><C4B9>}ţőů_{űm1vö'<27>z<EFBFBD>koż­Ž" á<>ţ4c<34>đ/6vö'âÚŰokúB§Ă?"<22>?<00>_t3üËVä<>? |Đ<>đ/K ü<01><>@/Ăż×E<C397>đ`Fe˙^Â<1F>NiËUGwBSýî˝óśž ˙lĐéŤ<03>?Ľ<01>.Č;ţ_˝ýöŽ<C3B6>ˇF<02>?}1Đnő<6E><EFBFBD><7F>˙u]Ë=yöÇ <0B>­őXň¸#f|ĐĚ)<29>Ł<EFBFBD>;!w á?ݲÓ=ĎÂ<C48E>˙:ĆŁý˙ýţešOPß-ĚĄm@3§:uä_tt<74>}źhůlřç=_#<23>ĆL˙űś=ě/ zŕĆo<>Ňśö<C59B><0F>+čZĐëđďwýţ?úí/cttÔ_tŮmˇý?-)Ĺe<C4B9>ÂżĂ(WřŻ˝ć<CB9D>NËŃ#ýţ÷=řŤR<GˇĂ?"â <0A>á/z`í5_<35>üů<C3BC>çśCÇ <0B>c^ů<>Śű^wý<77>qú+ßÖ<C39F>|ü#Ťc˙/\Y×9üvúýŽ<C3BD><C5BD>ęwČÜĂ<C39C>î<EFBFBD>ôoőóo6ü_pĚqUm<55>6o<36><6F><EFBFBD>eKW4ő<34>úëŻýýˇýüÎŞđ_xńŞ~_{Í'ţ3<17>NÍ_Ż9w],ZꍭĂß<C482>duŐďIAĐJ<30>żfF/<2F>a˙Ł˘šuďői<C591>d<EFBFBD><64>Hv\Ůöz鯿ţő÷<1F>[<5B>Ľh%üűŐ<C5B1>g<\|IOÂť s<06><>T<EFBFBD>=Ň_ýŘźąĆË<17>Đ<> šžż]<5D>ůu2ü÷˙Â<CB99>šŁíűv<19>đ <0B>ôÍ}<7D>nÚSĆ#˙¤¨7Ŕ;qM˙ <CB99>Ţů {śýüÎĘDżěů˙ůËVÄöM<1B>PˇYÓ<59>'<27>ü7nÜÔÖ#őlŘ×
˙f<0F>Íüe+|´><02>ţ­ý<17>˙ąŻ>şí+TŢyíÝ(<02>?Đíđ7
@Ă#ýţ÷ďÜ9tňÉo<C389>ç_rI×>´_ďý ÓŢs[řݲ}Ó#4Wôó<C3B4>˙Öm<C396>˝ń<CB9D>'wĽ<08>Šá_ëü˙ŚÍ<1B>žJýőŻŻ­ó˙yá<79><C3A1>D¸; ůf÷{ř§<C599><C2A7>Ó<EFBFBD>?aüŤˇßŢą<C5A2>˙Ěô#˙˘<CB99><CB98>ë¸ő׿óý<C3B3>ůÓî`Â?q˙Î<CB99>Cď{ýë;Rö<>ţ:e×qëŻçú<>˙¤ŘžiCŐ(<28>šä<>5(á<>)Úzy<7A>đĘ(/üĄî řýţ<>(<02>żë˙Ą×j<C397>˙<EFBFBD>.üÍ ćŔ˝wŢ60á<30>-<02>˝eŻđúA6ü<36>ß<EFBFBD>0<>ś|@ŮÂ?]ź˙ő'<27>_{{sĹÍ <C38D>˙<EFBFBD>s×ů <0B> ˙˘QshkPÖđĎÍö<C38D>n<EFBFBD>뎿ąo7~?!P{@vB ´ľ¸ű<C2B8>{ăÔżřÓŰž#nzöÚJűËOZOĚ˙iĺ÷š ö-|<7C>ŤśŢÝ<C5A2>" ýűĘááńÓĎ?/<><C3A4><EFBFBD>ŘźysüâŰ7D3qŤ!:şu´ę9-<2D><>yĺ+~Í뎿ąî÷]Ďůß玿ţ<C5BC>ë_tţż<C5A3>đ7
@G
<EFBFBD>ťďš7žtÉyńí<EFBFBD>7={mŹX˛¸ňŘ<C588>ůűÔţDË#'<27><>>hć <0B>Śť>ŮuÜúëßšţĂÓôŻ÷4´ĽHÂ?"*á?oţáßĺđoTłßĆXď<58><C48F>ë¸ő׿ýý<C3BD>Ž˙Ż'üÝ<17>śéđ<C3A9><C491>JřĎ<C599>żOěŮţě<C5A3> îVíěQřˇóŰ<18>îŞ7üĄ-@6ü#"49@5<13>ţË2Ůą<C5AE>đ?öŐGÇwřŁÂ~Ž˙<C5BD>ŢŞuýłáo<14>ÄŹVÂż<C382>Ą˙ţ ?5ţî @K@=á<><C3A1>žđţ@šÂżh ÂÝÂ_ř}ĽŃđ7'<27><>
<EFBFBD><EFBFBD>Á
˙FÎ˙ű>wýőo˙Zç˙ŰţF<01>ÝJř3ŘGţőîÔ\Ç­żţíď?ěČ<C49B>^Â_ř§wL<77>Z^ýő/î_tý+áÍţÂčíČ-<00>żđ<C5BC>pý?ôZ­ó˙í˙y+_k.ŔL/ĘţťĆ<C5A5>Éý=Ű<>#<><7F>Z ßHUĐëđ/
ůl{Ńă3<C483>đáßęH<C499>Q<EFBFBD><51>ivĂżV° ýbÂ<06>9´ľřĐűŢ÷=řŤŚ:_wý<77>qú;ßŰô<C5B0>_wý<77>ń­<C584>ţąŻg<C5BB>Ž˝đŇ<C491>ž˙+˙×'*<2A>ú+ăŕ<C483><C595>Ż<EFBFBD>ó˙žĎ]ýŰ׿čüťĂ?}5@zŔhôűäkÎ]o:ńřhľ˙ˇnúG[Ąo9ć<39><C487>úŻ<C3BA>K
wHőrˇţúˇŻ˙p<CB99><70>ü<EFBFBD>P)<00> ďמćU1ś}Gô˘?<3F>Őě<C590><C49B>ë¸ő׿őţE×˙w*üwÜ˙<C39C>Şß<C59E>š<00>ţ<00>á}Ół×FDÄ<C384>?kŠ?Ókwř'Ă˙<C482><>ŐČÂéđ^ądqźü°ĽŃÍţt<C5A3>ë˙Ąˇ<C484>Î˙w"ü<> î 9gߏVűĚTÂ<54><C382>Ix<49>mßQ9z<39>7<4E>żOtŁ?<3F>đţtšţ˝×Š9Ě\ł<>?­<>˙wˇţúˇŢxóĆÂű˙wj<0E>"@ĐtxĎ]°otŞ?Ýç:lýőď]˙˘Ë˙L¤Ť@6źŐjzĂuŘúëßťţE<C5A3>?]+ň<>Ü#˘îŁ÷VűĐůđ7üĎŹéÂ{Ţü9-<2D>#ýé ×˙Co]˙ßÉđ7ŔěéÂ;"Z
˙zűwÓĹ×^ßźůÖXştiUŰ<55>ŢyĆ<79>Ţĺ#üéhPë&=<3D><>˙tý#Şď8ŮÍŻöýţő×Tž5ď<35>7˙(""8đŔĘ˙żyó<79>Ş<EFBFBD>yÓ;Ď<>ˇÇ\9<<<3C>y˝÷Łßţ2ŢpŘąđâ/:[¤<>Ü#˘áűőöOÂż<C382>Ą<EFBFBD>öŚw<C59A>1<EFBFBD>ř´ű~ń<>Şâ¤<C3A2>ÂÍšëZ~<7E>ţ <>Ě <><C2A0>nţťżośóu×ß<18>/Şj۸qS|pőÇúb寞ňň8ęSŐÉă[vÇţď7ĽmÎüŮ1wÁě)ŁéśFúiôő/{ë<>-++<2B><>Çý@ů,ýťďt4ü<34>űüxő<78>ž <68>uäË<C3A4>>ňě÷đ˙Ň%çĹU[ĎŠ
ÚŰ÷Dl<44>Ř˙ŕýâń-ť#"&Ú2ölŚň˙$°é<><C3A9>y:đ<>yýV5úM`+<2B><>Ç˙ä˙<C3A4>/EţđĂďĆÜ<03><>ęHßir <0B>v<EFBFBD>˙ąŻ>:î˝óśŇŻôÝ÷Ü_şäźŞŁé=Ű<><C5B0>Ű÷Ä<C3B7><C384>­ą"Gl<47> ŢJ[JU(o<>lŤˇR$<24>ßh˙ź˘č?Â<>^<5E>Őh<C590>Zá߲á<CB9B>őąšËbĂČÖJoŮZŐ<5A>ü<EFBFBD><<3C>nĎ.[Ťrtßl˙ä1@ř7ű;F<00>NpůČŚřŘÜeSÚŇż'<27>ö¤­¨<šwů]<5D>*Gůéç<C3A9>ŽŢëß<1A>şţ9î~âq9Đçá<C3A7>Ě5z:<3A>ţ7´áwÔ5 lPĂ˙Ňß<C587>]5ü<35>ÝN¸|׌ĘUűź_Źş§ľĄüSÎţYW˙hW<0F>ńó<C584>üĺ@<40>˝ţkÓÎ(Cř'?żkĎ#qőgĎW<01>yGţ˝ űoď)ĹűXđ?żncĚ #˙Äťö<<12>ňbE0óÂ?bbś}l<>X<11>§ ťˇ[2<><32> ˙+<78>gâꍿԹçôá<C3B4>Ó.łöź m<>ţo^<>đWĚÜđ§9Oţîˇ><3E>v<1F>/<2F>×ţŃ<C5A3>m<EFBFBD>Ĺ/\\ť@xlkÜyĎ˝ąĘ6ţ(fbř÷r {{ä~°đ%<25>ůËi<C38B>Ń=ďŘśÇlÓůŮO<C5AE>?ý[Ě´#˙ä<>0gţě<C5A3>xÖżB*<2A><>[ xj×Xź`Ѣ<C583>Ëlőa;ň<><C588><EFBFBD>sŢóÂżŰá?q3 g+<2B>ĽG ˛ýŞ.;Üľ)w9òC^˙őôÓ:öü<C3B6>üÔ˛đţT<33>7<7F>˙<EFBFBD><CB99><EFBFBD><EFBFBD><EFBFBD>K&ĎŐ&ď#ýXş-Y6}_<>n2 ó:Ň]xŠm*ü<>ŔL<C594>đ×Ë" óyóçLśí}éÇŇmɲˇî~ŕ|qű<71>e Ţ6m<36>íXĂ/ţôG0(_ěSvU÷JÂ|b>@TÉcéĽę[ĘťŽż<ćđ<C487><C491>/óÍ<C3B3>Ę´.ţËł*?ńo.Ë},Űn<C5B0>ön]<5D>?Ľ.<00>d%Á<>÷UÁéű$EŔ<45>ś<EFBFBD>îLŻůÁ<C5AF>qčaőU<>§ÖŘ!w3Hʸ.éĐń<7F>šíéDzíÍśiëë"ü)}řŕ%Öő­~wßso|č}ďîé
,_ž,>Ĺ<7F>Ť<EFBFBD><C5A4>FN[ěZőLĎŢűÜł+ßD8úđ<C3BA>L2ą9{<7B>ॸüˇë{~7ÁźóĹwŹ Ö˙î÷<C3AE>ßO?éÍńńË/<2F><65>×ő<C397>×Ýrs<72><>ăş[n<><6E><EFBFBD>C_rHÜőł{âď:˝ëç§Ë´.ţËł*á}ÖY<C396><59><EFBFBD><EFBFBD>§ö<C2A7>Žě<C5BD>\éö<C3A9>GFâ˛Ë.*,lÓέË<C2AD><C38B>-ńÜsĎ<73>2ü_wő<77>ńş<C584>ńv}Ž_<ínĹD?ÍvlÇMvî{đWqÔ<71>/oé9ţ÷˙˝­éđďśVo\<5C>[ <17>/>ô%<25>T~žäďŻ<C48F>X<1C>˙Â7âEË<0E><><EFBFBD>?nz8>|Ú<>'v߸šŞý39-îX˙@CŻ×IÝZ<C39D>éćĚyŢó""bíÚ â %K*!<21>ţó˙mUř'?´ˇĎÚľçL_DďyĘ6măşôz@­đo'á?C <0B>˛<EFBFBD>Złá<C582>zďĹ$Ŕ^ż~;Ľ<>°Ňţ¸éáşÚÓýÓ;këâsč×uţ T0Háßm­~@ŮżK ˝S|äŃ­<C583><C2AD>˙ÝŃ;<3B>ş÷ÁŞĺłíe
ĘAZ<17>CoÖEř3P<05>đ/_Đ Eço<C3A7><6F>°˛;Ö˘ö˘#Ź^\ŁŢ­uŮwöÔ?Áĺ{<7B><>ŇöÄOÄÜýűˇŇČňśiűÖĽs<00>?-ĘţŃrř'<27>đző<7A>Ŕ<EFBFBD>ž~ćÔsž89ÂJΊfĺľa-|ÉaąíÁűăGŽěéŃbťÖ%mŹÁ÷<C381><C3B7>󯡽ĚŰ´ #<00>X<EFBFBD>ţt´(křˇC/ĂżŃ×/Ë$ŔF<C594>°<EFBFBD>é_ÖóĹ˝X<CB9D>dö˙Ă##<23>ýŰ~ꊪŤlÓîŻ<C3AE>đ§Ż <0B>A˙<>Ţ~ŕţď×Đë÷ă<1C>ělęZłŹË~ž¸ë<>\Ęg<C498>ößşúşôđ§9<C2A7><39>/nu<6E>ő<EFBFBD>żűmě3<ŻŤç<C5A4>;š.ié=ëŘśÇböĐsí źWźjâ˝üË?<3F>r<EFBFBD><72>e ÝëŇ<C3AB>9Â<><C382>3)üűy 9_Ńú,ë˛<C3AB>/îÄş<C384>ĽÂż­ď˙Ż<>Í?ţtDD,}ĹŤŚ-lÓö­K§ç:ZĚ´#˙^~%pŁŻ<C581>׿,:5ËzĐ×ĺŃ<C4BA>/\Ü<>őXúşuu<75>ŘŚ<C598>YáO_Â??tÓ<74>%_Ó<5F>×<EFBFBD>mĎöO<C3B6>÷Üł[
˙źďčĽNͲś.ÍŮśĺ_}=\áO_<33>zřýŰą;"˘ĆI¨ŻX294<39><34>pDÄĺ#<23>Ą<EFBFBD>´%íEýk˝~żÜ°ŃóĹÍĄ<>ő|qť×ĽÓ{Úżőö8´<38>SśiűÖĽs<00>?-<66>ż$<24>+až7<C5BE><37>P<EFBFBD>7NU[ň5˝y_ë;m˙<6D><CB99>űžhä|q;fY<66>ĺ|q'ÖeŹCďýżüsC<73>mÓö­Kťç:Z<řË_ÍřŮţŮóé+b2čÓ]u ţ<>ű7¨j` šo|šÖĽ<C396>s˙śi9ž @řÓŃŕÁ_ţ*""Ö<>ťŽ/W ďë<C48F><C3AB><EFBFBD>w>=ÔI<C394>gŰv<C5B0>=Ót˙D7'!vű+Â}ă[qŃ<71><C583>śĺy>ůŠ5śi<C59B>×EřSú <>˝ű<CB9D>{cxîÜ<C3AE>ŽŔS'ß=%Lł!űř<C5B1>ÝS&Í%ÁcEwă<1B>Řź'ójym<79>gëXvjŰ]Ż<>Ř?ö<>e/}~|<>÷ż*­ź˙7<ôlźáâ×ÔýÝŢy<C5A2>/8é<38><C3A9>˙ř=[ď,ëv˝^'ľ{]Śűđ<19><09äEM˝ßß˙ţ<CB99>ńČ#<23>ŘŚ]\<5C>ţtĽh%ü[=mĐ<6D>ä<EFBFBD>ĂşÖT39<33>N<EFBFBD>´ß21ŠoÇöŠĄ˝gűDĐëKéŇKăďż7ť<7F><C5A5>żýĚGNk¨˝Ő×ë¤NŹK=s<00>{îŮ8<C4BE>zĎë×˙Î6íňş´:@řSę ,á_ Ç˝çâ<C3A7>Łřä&9IpVÚŇUúŢÇŇGŰ˝<C5B0><CB9D>×ÚűŻ.A§/!Ě<>_=đ<>Ćç)čż)ĹĹ ­<>ĎĄˇë"ü¨ <4C> ÇĘĺ{{'Ęm<18><38>7y.ylŮK<C5AE>ßÓ ĐŇű/Ń|<7C>ÓO<C393>zÝôÇ/ż0<C5BC>-_^W˙'<27>x"""<22>řůCÖĹ6<1D>uţ TPśđO<C491>cňsş-}$<24>^.˝ě]=Ţ­ž˙^Č<>ó\ţ­ďUýžń×üŕĆ8ô°ú<C2B0>yGˇn<CB87>Sß~Z,˙Ö÷z~n¸ŰëR<C3AB>=ąmÚžuif<0E>đ§Ô@ĂżVÖŰśkě<6B>Ž~%pťßŁ<7F>FzĄŮÓÓ<>ż=âçĹÇŢĐs<C490>őhšÓë2V<32>ő´Mۡ.<2E>Îţ<>ş(sřˇŞ×áß<C3A1>Ń<EFBFBD>¤čä­<C3A4>ű}ř{P×ĹçĐÝuţ<>ŮŹ<C5AE>ţ<13>çÍ<C3A7>3qťŢÔýüQz"`ł7#<02>?3` _Ă˙Ž}wÄŞ§çMů<4D>ö(Ó5ÜýnČ68őĚţ<>şčçđŻU<14>ôŰňôňčż,×p<0F>Ě<>ľOÜů<C39C>挍Î<C5A4>ľO´d<C2B4>mÚÍ#˙ićJ] °6ôk<01>r+ŢZŞÎ˙Ü<><C39C>ňIÂű<C382>ŘĐ\0$zZ úŠ´sţŤ<C5A3><C5A4><EFBFBD>;*ĐîđOĎČ>Ď坪G<15>eť]ld<6C><64><05>çř (šfďá<C48F>đ<EFBFBD><C491>
<EFBFBD>A<EFBFBD>đ<EFBFBD>­˙'a<>|őoDT<44>'ýXş-YśŰ§ÚuŔůâö1`đäÍţ<>ş<18>đOń'˙_őôź<C3B4>ÍHÂ<ůęß<C499>ÉçI?<3F>nK<6E>]<11>#<23>ěŻđ<C5BB>¸<C5BE>˛sś<><C59B>vôőnžú<C5BE>řŕßg<C39F>vňČ?3@řSę<>ýÓ<C3BD>@ť%a<>ýRĄ1ôéŁ*<2A>ˇD×
 ű<C2A0>?Ľ.Ęţé˙ˇł¨W+ó<00>ŕĎťŠNúH;)Ś´~˝p{ukŕ5+6Vý~Ć<>ĺ]é[ö÷RdĂO˙)""}lkUűťO;łc˙˛Że<C5BB>wć˝ĘnčŹď7ŢÍťáeż<65>ŢŮŇ?Ţ<>.~Íx­ÇÓ#yEÁ×üÂ<C3BC>Ú GŃŘHĘÚ /mčó_9<<<3C>Ü[ý^<5E>?<3F>pΚ_<C5A1><5F><EFBFBD>=罡ŇööŰ÷äö)jĎ>><3E><32>Fl|Ç<><C387>âßMö~ůýđ9<C491>u<EFBFBD><75>üě'ńţ<C584>@/ <0B>éÂ?"âč?ýM<>\tň<0E>ÓYsîşX´xQu<51>Çžúč<C3BA>w<>ÜZ¸łM~O$íŤ<C3AD><C5A4>é~E<>7b<7F>§ś<C2A7>8šírúŽZ2ńx<C584>ŢK<C5A2>Ż˙úÂÇŢóŚwĆwú<7F><C3BA>ďţâß˙Ů´ďÓ6Ż<C5BB>đüĎ
úÂěôĐu§o<EFBFBD>Óéď¤o4ü<EFBFBD>5(áߨ<C39F>ĂĂăoűŘę);ßäç=ç˝7ö<37>÷Ţ);ĺ<>ÖÝPľÍŰÉŚŰ<C59A><C5B0><EFBFBD>ÇóvÜw<C39C>Ü­ťĄ<C5A5>ďĺĹ/ZŁ[Găk˙ýâXzĐ<7A>š<EFBFBD>ĺI˙ö Ľ˙äÔ[­÷i<C3B7>7śÍ<C59B>7g<37>đ§/ĚÄ<>Ę ˙ä2@áßZř/Üôݸ<6A>U;Řź<C598><C5BA>߯Z}f,ÜôÝÂ<C39D>lZz<5A><7A>Ý9'˧ű|ňÓ§<C393>꽤<CB9D> ť<>ĘţľŢ§mŢÚ6ţ<>z ŃP­u4<75> Ř^Ü<>żčVŔíx?ÂrGzŐę3ăCW~ĽjÇ{Őę3cóŠŐŁGK#bóŠË㳡ţU<C5A3>âçâŠí'N9Kvčşň+U;Ţä5j<1D><>ĺ˝\´î<C2B4>Ş Ý::0áo<C3A1>7ˇÍĎyĎâţ<C3A2>;<3B>î?ínIC)Ő5 <>`/:şÎ.Űé9ŮŁ˙éNÔ;`PĂş9Ůđ?`ÁžńčŘÓSwś7l<37>ͧ.ßűóĆ˝<C486>ĹŇ ö<><47>ŽěPÓ;ŮŘť<C598><C5A5>Ď}žóOü\ŐN8ťă<C5A5>č_˙{I´ë˝äÁ˘Ĺ<CB98>âň5<C588><35>ňy<C588>1üĎůĎ<1F>˛<EFBFBD>mŢü6_}ńçăĘł?÷ďÜéH<C3A9>rţĆąă<C485><C483>^<5E>ć-Sëh;]´:<3A><>7 0}Äß<C384>`<60><>ük<45>ű<19>|`D ĹQ?Š´=:ötĺç¤ďÄr<C384><72>úá#qßÉK*;íę<C3AD>űäÎ;ťăţě­<C2AD>z<EFBFBD><7A>Ü÷<C39C>~žź÷ß<C3B7>÷RÉůŕ<C5AF>žyTDDÜňîűJţé!ęđÁ°Í[Űć!üé<C3BC>ŕ<>[<5B>Ż÷:ř˘<C599><CB98>F<EFBFBD>Řłw¤ťŕ¤;:r@rŰßéŢŰtŔ űŮ äŰg<C5B0>ĄŢoî@<40>?Íoóäót<C3B3><74>~0í<1C>˘ ué<75>­§Oˇ%ŻŰĘëĎÔsţ<73>c<EFBFBD>>Ę_Č4ţđÇ 1<o¸ďĂ˙<C482>§Ý=´rxxÜ6o~<7E>ˇ{˛¨÷^řIŕç}Ă^ś8Č ßvŢ<76>ž<>ţ<11><ö¨ż<C2A8>i<EFBFBD>>ž-vďŢÝ÷áo<C3A1>ˇśÍ<C59B>?}[Ô:<05>w_ý˘"`ş#˙~ůNzá?áŔ6N~Íń<C38D>ĺŐ˙66lÜTŐ<54>,ťbů˛Â~Ů>Ů~Ye~ý<><C3BD>];wW<77>ű=ümóćśy6ü ˙Ó7@=ç˙<C3A7>&üĺ łO7ä<37>-Ú%ůęÝä5˛<35>ĽŰ<C4BD>eóÖWř§><3E><1E>[gMŢlĺÄŢ´$ś<<1ëÖY_ŤjK<6A><>÷öKúDDnżt{ňe}ý<>ZR9<1C>đˇÍßćÂ<C487>~ÖĐ$Ŕvu;'<01>řšeă<11><11>őH<C591><>ĹUmɲFśĆuoůűţE<C5A3><00>>ס/ühüĂ<C3BC>WT}ŽI[ús-ę<>ô<EFBFBD><C3B4>Ü~éö˛żţŰ~4<>{úłç DřŰć<C5B0>msáĎ@­}#^łá-§iĺxÄä×ňFDe=<3D>?äyóçTľ%ËîŘž'>żęofô<66>ś8ë;Ç<>ßwߍ>ťf>ע~I<>ôN;Ý/ť3/óëoŮ<1A>]´-NúćQqŮ[ďZ9<<~Áß^Qş?ňéÂß6on<6F>ďŮţ<C5AE>ŕ§ŻÍî÷HţX<C5A3>ŻĺMŹ<4D>É?ňô$ÇŞ <09>[fî<66>-/?liĺçZ<C3A7>kňXŇ<58>^ś¨_ş=Ż­č5Ęřú1qôĹ<C3B4>ˇ|3Ť^<5E>żm>xŰ*şu
 <13><00>?Öź/J?R<64>ő<7F>ŕÔŕř<C595>Ď:o§[kG<6B>]ŚhŮźÇËüúGő˘)<29>áČŁ<C48C>őô/l(ümóÖˇ9ôŤĘ)<29>´ Nşcę<63>Ä-Ç×ý¤­ö§{j<><6A>9ë;ŤĆ#zu <75>üł,÷ë'G<>+<2B><>ÇËtî?ţ<> QŰćőos¸ ď ń˛<C584>7zgĽ}ѢEuyŇ˙7÷^<1A>^üž<C3BC>űS<C5B1> čh1˝#Lˇ%;ĆłžsÜxz'<27>]&ďyň<79>?ťł-ăëRřŰćőos¸ŕ<><C595>î<EFBFBD> ń˛Ę<CB9B>é <>żŕ¤;â7÷^:š|ŞPôĆÎ'<27><>áçďŰ<C48F> oG[ÔÖlż¤­č9Ëöú<C3B6>ţśyýŻ}]dĂ?-]ěXt\Ź<>_O ńlřWýĂWăO<C483>čbř§<C599><C2A7>lAĐęU3ŮL <0B>$üç<C3BC>Ţ;WWÇt<11><>˙˘ż/F˙đŐşúg<C3BA><67><EFBFBD>Ţ<11>´´°O˛L"˝ě]?^Ť^wha˙d<CB99>D­eáhżč÷tť3´<00><>ńŃŃŃŞĆZE@Ţź<C5A2>l˙ZE@v^Ŕ9ˇ_3Ř<33>Â?˝l=Á<><>E@=ĹI­ĺîúńúiűć<C5B1>{=<3D><>3ÓŹ<C393><C5B9>Ůłg<17>|ş-Ż=ŻöÜŇ<7F>×<EFBFBD>ěŮśźe?hinřç<C599>}Ţ2Ť^whŰÿ轚rišriaRkš¤˝Vß<56><C39F><36>]á ŚŮçÜr|,\¸0÷Hžđ(>3<>ŻŐţyA˙ĐĂ<C490>§<EFBFBD>ä<> ¤C<<1B>Ů<EFBFBD>ďäŃ~:¨<>×,Ü/Ć<>Ü]ł`Č[.űx=# Â]řÔU¤<>8 ć<>ÔŽü<C5BD> îşúÇ<C3BA>ÜţéĐO>iKC<05>ÂčovO ř$(<28><>ÎÓÁÚjQ0öäîxđţÍšA<C5A1><41>z­ĐO$Ë-X¸_ĺ9<C4BA>Ç<EFBFBD>Ç<EFBFBD>ßë9%<25>đ¨eĘ}śm<C59B>ÔŤŢsw|yÝâ<>EóâÔ˙rE|čëÇFDÄ <0B>Öž{ߜ͝"b(§˙1{űĎ-<ęĎ+?hiU!<21>-<18>Î˙§<CB99><C2A7>łGĺíH<>Ú<EFBFBD> Îţ<C38E>].úEĎYôxRtä<18>23ÓŹtđ'á<>¸ţŠďĹŁŁ;"[ d<>K<EFBFBD>? ˙ä<CB99>Zůý<C5AF>ĺŞ?[¤Ű<C2A4>j<EFBFBD>äM<C3A4>+
÷N<EFBFBD>äé Îţ<C38E>m/zźŢâ %@řŰB@łf§<66>úÓNüܲxŮĄKăúőß+8Ňß] HzţýŽŃWe4 öy!˙ŇÔă<C394>ĚHÚÓ<C39A>ĘĐyŤGţ`fúĐ×<C490><C397>r+Ě_Żß/;tiáďŐŚt<C59A>_Żß/;ôŕĘhŔäďSeO Đ]N<14><EFBFBD>žÚWřm<01><<3C><>Č<>}Qř§ç¤GŞ<>Úűű¸đá<0F>ĽhścńdŔĄ<C594><C484><EFBFBD>!áOßéőWűFD\qÎůÂčl<01>7PčOző|<7C>¨*<06>>ýâţ<C3A2>;<3B>Ž8çüń^żátĘĐW._Ă<5F><C482>˝yIDAT×Ó<C397>Ü<EFBFBD>ű´tYĺ2Ŕąí;*˙eeŰŇËő+z<>źv ťf'<27>|Ół×VOŮţţX0Kˇ%Ë<>˛ýý<C3BD>ý<EFBFBD>><11>Ű/işočÄĎ-<1B><>XądqĽqĂČÖ8e<38>Ép_ądqU[˛ě<CB9B><C49B>­<EFBFBD>ý<EFBFBD>><11>Ű/i˙Řg>ď8ýK+Ç#"ćÍ<C487>SiÜą}OU¸Ď<C2B8>?§Ş-YvÇö=<3D>ý<EFBFBD>>éB!Ý/iżőŻ6) Ëf'Ą<g~ő<15>+b2°<32>Ç<EFBFBD>śô˛EýŇíymI{Ä&[ş]L<>ňř<C588> úZá<5A>]ŚhŮźÇ<01>.<00>Á?<3F>ćÓľŐł<C590> <07>ŇÁ?wÁdHď{ŚjĄš fWľ%Ëî{ڰ_śOśĐ;ł˛á<CB9B>ţ}î<>ŮU?g<>­ŐݍŃs],<00>B8Ż˝<C5BB>Ŕގ<C5BD>đ<07><1E>
@(0řţ?3ř,SÎ&ů}IENDŽB`<60><>PNG

IHDR08łĽŞÉzTXtRaw profile type exifxÚmPA<0E>0 ť÷{B<><42>śyN í{ţ\&@XjęÚŤIë÷łĽ×gM:ŐVŹÔÔ¸<C394>4rô˝fŇ˝î¨[xůŞ' <09>Ň8<C587>ĐJÜ?ôüđ­<C491> öŚ<>ßnAě<41><C49B><EFBFBD>_"Č"HŘ<48>Ý<>EĹZ=?a^é<>ć+<2B>2očgĚ(>ž<>ľbzË<7A>˙ó*YU¤x2<><20><>M<>+¸ÂęP-:Á@<40>ćt ýôBZŃIzý<01>iCCPICC profilex<>}<7D>=HĂ@Ĺ_SĽ*-vqČP<C48C>ěbEK<15>`Ą´Zu0šô <0B>4$).<2E><>kÁÁ<C381>ĹŞ<C4B9><C59E>łŽŽ<> řâěŕ¤č"%ţ/)´<>ńŕ¸ďî=îŢBŤĆTł/¨<>ed<65> 1_XŻđ#<23>AD<10><>Ч˛<C2A7>9x<39>Ż{řřzĺYŢçţ!Ľh2Ŕ'Ç<>nXÄÄł<C384><C582>Îy<C38E>8Ě*<2A>B|N<eĐ<05>š.ťüĆšě°Ŕ3ĂF.3O&Ë=,÷0Ť qDQ5Ęň.+<2B>ˇ8ŤľëÜ<C3AB>ż0XÔV˛\§9<C2A7>$<24><>B"d4PE ˘´<6A>ČĐ~ÂĂ?ćřÓä<C393>ÉUęP!9~đ?řÝ­Y<C2AD>MťIÁĐ˙bŰ@`h7műűŘśŰ'<27>˙¸Ňşţz <0B>ű$˝ŮŐ"GŔđ6pqÝŐä=ŕr}Ň%Cr$?MĄTŢĎč<C48E>
ŔČ-0´ćöÖŮÇé<03>ŁŽ<C581>o<EFBFBD><6F>C`˛LŮëďčííß3<C39F>ţ~Ő>rÎ<72>şmÓ viTXtXML:com.adobe.xmp<?xpacket begin="ďťż" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:GIMP="http://www.gimp.org/xmp/"
xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:DocumentID="gimp:docid:gimp:bfac6453-3cc6-4601-9579-bc0279b9b793"
xmpMM:InstanceID="xmp.iid:e891c682-cb82-4452-b610-a5154b1cdef1"
xmpMM:OriginalDocumentID="xmp.did:cdff7874-d247-45fb-bbf3-84ace2d0078e"
dc:Format="image/png"
GIMP:API="2.0"
GIMP:Platform="Windows"
GIMP:TimeStamp="1710322961523252"
GIMP:Version="2.10.36"
tiff:Orientation="1"
xmp:CreatorTool="GIMP 2.10"
xmp:MetadataDate="2024:03:13T04:42:39-05:00"
xmp:ModifyDate="2024:03:13T04:42:39-05:00">
<xmpMM:History>
<rdf:Seq>
<rdf:li
stEvt:action="saved"
stEvt:changed="/"
stEvt:instanceID="xmp.iid:d18a9fbb-3c4c-4728-a473-58e36ae49d0f"
stEvt:softwareAgent="Gimp 2.10 (Windows)"
stEvt:when="2024-03-13T04:42:41"/>
</rdf:Seq>
</xmpMM:History>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end="w"?>'VkšbKGD<06>?<3F> pHYsĂĂÇo¨dtIMEč *)Ąţ<>ëIDATxÚí\Ý<><C39D> ,Oď˙ĘíUç´ŽÂ<00>Z<EFBFBD>WűmI˘Ăřłm`9oe{xy<78><0E>R<<3C>Őëźë˙ŢÎ<C5A2>
s@Q}<7D>>ĘčŮ<C48D><18>ľłĎó<÷}ß<>zם<C397>ç<EFBFBD>ě{<7B>ĽöŻbD<62><44>eĆŔˇfÖ^<5E>Ź<EFBFBD>hŽ:׍ üśmŰn@Żr÷ŮŮŞß<C59E>_w¨T?ÚéŻĐ3Ć<33>¨ZĺłôKłśşxâ7<C3A2>5˛0âúľwf<77>Đ<EFBFBD>ü(Ú<>1<>ű˙ë÷z3;);ćg>Eö,ëDb~=OBű,ů˝~ů<>ÚŻüŞ@'­žôź<C3B4>Űú­M~¤>đf3äýnű­nŐę&ŮżŁŽ-Ť=<3D>vf<76>Őŕ.čG%ËŇŹnDzaÉ$˛Ú<CB9B><C39A>jjß<6A>toń'G]9K<01><>)lX;ÎĘđeLh<4C>ßC<><43><EFBFBD>Ҩ ÷<1B>ĂvËŮa&[Ž5˝Jaš.Ťĺ>Š0<C5A0>ńF=<0F><>d<EFBFBD>ü<EFBFBD>ۧ }<06>ÖĐżf <33>'Ąý<C484>מ2#ϡ¸4-<2D>öäů¨×čź(ĺPy­YŞy$m!Kkżęš´x˛Ňďl<C48F>]<5D>ďÉ<C48F>ŽôţçŐď@-gĽ|ŘłGóŻüĂb<C482>ŹÎg î^.Ë
]KĹć[ţŢŰľäáitfXb`<60><>3äŐd<C590>E?ćf ú~ŃrÁ<72>yóŰx<C5B0>S<><1A>yć÷Ü+ćjôŠ5Ďśśů>Ş[+_śČď b´˙3ő˙Ę[óüě<Ýś´źýÍČ<C38D>Y<@Ëk 8 <20>Ą[%oĎŘ/`<60>éá9źzDů<44>h)SÜÍŔ<C38D>ÓÂ3<C382>¨Ű#<23>ľdl-+O<>žŮD<C5AE><44>ŚŃö36c<36>ě<EFBFBD>R§y<C2A7>ĆKs<>żbާůŇôc \´oŹuKĆě<19>×ßż+<2B>ľË<C4BE>]L<>^°<>W>ŠAZś<>GÝ>R?2°żÎŻ9ĺ yşeSĘ:JíW<C3AD>áŰŘ˙? íł<C3AD>g´1f<31>íGĺOCű3<C5B1>˛éáUÓXZŞç>ń<>đÜű} cg<63><67>ĆkĎŽ<C48E>(<28>ŹÁ^ęÄwöXö"DwyÜ~<7E>ÔN{wöĽFşFdp{<7B>Ďâf<>Ć<EFBFBD>GkeThýëwą(ÍZď÷ <0C>tmË=ÍAHŚ<19>q&šŐşÝÄ<C39D>ç{brô8<14>Τ<C38E>ľx<C4BE>pčf<C48D>ăűÖóż˛íÖ=ď<>Öó<C396>t3˘gćeS.Rb$W˙<1F>Ć<EFBFBD>.l*#C<0E>°<0F><>ŘĚ<C598>Ţ6<16>é<19>ą°]<5D>t<EFBFBD>TBÜÚ<C39C>éŇąłŇËCb1yô[GëeiEÎ<45>ĂĎD<C48E>˝ҲŻwÖyođ´Ävé<76><C3A9>y<EFBFBD><79>wí8"'ăňÄm[ŢÉŇŠK˝<>oĄDYˇoZ.j´.ň\Â+ Gá<10>Ő9ńNł[IENDŽB`<60>

View File

@ -35,7 +35,7 @@ var Module = {
})(), })(),
}; };
</script> </script>
<script async type="text/javascript" src="C++ProjectTemplate.js"></script> <script async type="text/javascript" src="TiledCollisionEditor.js"></script>
<script type="text/javascript"> <script type="text/javascript">
Module.canvas.addEventListener("resize", (e) => { Module.canvas.addEventListener("resize", (e) => {

1
TiledCollisionEditor.js Normal file

File diff suppressed because one or more lines are too long

BIN
TiledCollisionEditor.wasm Executable file

Binary file not shown.

View File

@ -6,13 +6,17 @@
using namespace olc; using namespace olc;
using namespace olc::utils; using namespace olc::utils;
const std::string TILESET_DIR="./Tiles/"; const std::string TILESET_DIR="./assets/Tiles/";
class TiledCollisionEditor : public olc::PixelGameEngine class TiledCollisionEditor : public olc::PixelGameEngine
{ {
std::unordered_map<std::string,Tileset>tilesets; std::unordered_map<std::string,Tileset>tilesets;
std::unordered_map<std::string,Renderable>images; std::unordered_map<std::string,Renderable>images;
std::string activeTileset; std::string activeTileset;
Quadrilateral*editingQuad=nullptr;
Quadrilateral originalQuad;
std::string selectedObj="";
int editingPoint=4; //Which point we are editing (0-3.)
public: public:
TiledCollisionEditor() TiledCollisionEditor()
@ -23,7 +27,7 @@ public:
public: public:
bool OnUserCreate() override bool OnUserCreate() override
{ {
SetFontSprite("font.png"); SetFontSprite("assets/font.png");
std::string tilesetFilename=TILESET_DIR+"Basic Tileset.tsx"; std::string tilesetFilename=TILESET_DIR+"Basic Tileset.tsx";
Tileset&tileset=tilesets[tilesetFilename]=TSXParser{tilesetFilename}.GetData(); Tileset&tileset=tilesets[tilesetFilename]=TSXParser{tilesetFilename}.GetData();
@ -49,7 +53,9 @@ public:
} }
} }
if(editingQuad==nullptr){
std::string selectedObj=""; std::string selectedObj="";
}
for(auto&[objName,obj]:tileset.objects){ for(auto&[objName,obj]:tileset.objects){
FillRectDecal(obj.bounds.pos,vf2d{2.f,float(obj.bounds.size.y)},YELLOW); FillRectDecal(obj.bounds.pos,vf2d{2.f,float(obj.bounds.size.y)},YELLOW);
@ -75,6 +81,47 @@ public:
} }
} }
} }
const TilesetObject&obj=tileset.objects.at(selectedObj);
const bool EditingQuad=editingPoint<4&&editingQuad!=nullptr;
if(EditingQuad){
(*editingQuad)[editingPoint]=GetMousePos();
}
if(GetMouse(Mouse::LEFT).bPressed){
if(EditingQuad){
(*editingQuad)[editingPoint]=GetMousePos();
editingPoint++;
}else{
if(obj.collisionTiles.size()==0){
Quadrilateral newQuad;
newQuad.fill(obj.bounds.middle());
tilesets[activeTileset].objects[selectedObj].collisionTiles.push_back(newQuad);
}
editingPoint=0;
editingQuad=const_cast<Quadrilateral*>(&obj.collisionTiles.back());
originalQuad=*editingQuad;
}
}
if(GetMouse(Mouse::RIGHT).bPressed||GetKey(ESCAPE).bPressed){
if(EditingQuad){
editingPoint=4;
*editingQuad=originalQuad;
editingQuad=nullptr;
}
}
for(const Quadrilateral&quad:obj.collisionTiles){
std::vector<vf2d>points;
std::vector<vf2d>uvs;
std::vector<Pixel>cols;
points.assign(quad.begin(),quad.end());
uvs.assign(4,{0.f,0.f});
cols.assign(4,{255,40,40,128});
DrawPolygonDecal(nullptr,points,uvs,cols);
}
} }
/* Font test. /* Font test.

View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

@ -35,7 +35,7 @@ var Module = {
})(), })(),
}; };
</script> </script>
<script async type="text/javascript" src="_REPLACEME_"></script> <script async type="text/javascript" src="TiledCollisionEditor.js"></script>
<script type="text/javascript"> <script type="text/javascript">
Module.canvas.addEventListener("resize", (e) => { Module.canvas.addEventListener("resize", (e) => {

Binary file not shown.

Binary file not shown.

4
sig
View File

@ -1,8 +1,8 @@
export AUTO_UPDATE=true export AUTO_UPDATE=false
source utils/define.sh source utils/define.sh
define PROJECT_NAME "C++ProjectTemplate" define PROJECT_NAME "TiledCollisionEditor"
define CUSTOM_PARAMS "-std=c++17 -lX11 -lGL -lpthread -lpng -lstdc++fs -I/usr/include/lua5.3" define CUSTOM_PARAMS "-std=c++17 -lX11 -lGL -lpthread -lpng -lstdc++fs -I/usr/include/lua5.3"
define EMSCRIPTEN_CUSTOM_PARAMS "" define EMSCRIPTEN_CUSTOM_PARAMS ""
define LANGUAGE "C++" define LANGUAGE "C++"