partial collision
This commit is contained in:
parent
1224a6e1ad
commit
916041667b
1
Makefile
1
Makefile
@ -103,6 +103,7 @@ MAIN_OBJS = \
|
|||||||
src/glad.o \
|
src/glad.o \
|
||||||
src/opengl.o \
|
src/opengl.o \
|
||||||
src/render.o \
|
src/render.o \
|
||||||
|
src/collision.o \
|
||||||
$(patsubst %.glsl,%.glsl.o,$(wildcard src/shader/*.glsl)) \
|
$(patsubst %.glsl,%.glsl.o,$(wildcard src/shader/*.glsl)) \
|
||||||
$(patsubst %.data,%.data.o,$(wildcard src/level/*.data)) \
|
$(patsubst %.data,%.data.o,$(wildcard src/level/*.data)) \
|
||||||
$(patsubst %.data.pal,%.data.pal.o,$(wildcard src/level/*.data.pal)) \
|
$(patsubst %.data.pal,%.data.pal.o,$(wildcard src/level/*.data.pal)) \
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
6
include/collision.hpp
Normal file
6
include/collision.hpp
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "math/float_types.hpp"
|
||||||
|
|
||||||
|
vec4 collision(mat4x4 trans,
|
||||||
|
vec3 point, vec3 velocity);
|
||||||
File diff suppressed because it is too large
Load Diff
@ -2,296 +2,296 @@
|
|||||||
# www.blender.org
|
# www.blender.org
|
||||||
mtllib block.mtl
|
mtllib block.mtl
|
||||||
o Cube
|
o Cube
|
||||||
v 0.728013 0.440923 -0.381697
|
v 1.456025 0.440923 -0.381697
|
||||||
v 0.644238 0.452916 -0.461143
|
v 1.288476 0.452916 -0.461143
|
||||||
v 0.622394 0.500000 -0.343897
|
v 1.244787 0.500000 -0.343897
|
||||||
v 0.709167 0.454219 -0.412896
|
v 1.418335 0.454219 -0.412896
|
||||||
v 0.701099 0.469791 -0.369685
|
v 1.402199 0.469791 -0.369685
|
||||||
v 0.690111 0.474526 -0.398518
|
v 1.380222 0.474526 -0.398518
|
||||||
v 0.637305 0.475900 -0.427367
|
v 1.274610 0.475900 -0.427367
|
||||||
v 0.678710 0.458580 -0.441779
|
v 1.357419 0.458580 -0.441779
|
||||||
v 0.669937 0.476518 -0.416845
|
v 1.339874 0.476518 -0.416845
|
||||||
v 0.662611 0.491320 -0.355910
|
v 1.325221 0.491320 -0.355910
|
||||||
v 0.629327 0.493098 -0.384544
|
v 1.258653 0.493098 -0.384544
|
||||||
v 0.664788 0.486997 -0.389481
|
v 1.329576 0.486997 -0.389481
|
||||||
v -0.728013 0.440923 -0.381697
|
v -1.456025 0.440923 -0.381697
|
||||||
v -0.622394 0.500000 -0.343897
|
v -1.244787 0.500000 -0.343897
|
||||||
v -0.644238 0.452916 -0.461143
|
v -1.288476 0.452916 -0.461143
|
||||||
v -0.701099 0.469791 -0.369685
|
v -1.402199 0.469791 -0.369685
|
||||||
v -0.709167 0.454219 -0.412896
|
v -1.418335 0.454219 -0.412896
|
||||||
v -0.690111 0.474526 -0.398518
|
v -1.380222 0.474526 -0.398518
|
||||||
v -0.629326 0.493098 -0.384544
|
v -1.258653 0.493098 -0.384544
|
||||||
v -0.662611 0.491320 -0.355910
|
v -1.325221 0.491320 -0.355910
|
||||||
v -0.664788 0.486997 -0.389481
|
v -1.329576 0.486997 -0.389481
|
||||||
v -0.678710 0.458580 -0.441780
|
v -1.357419 0.458580 -0.441780
|
||||||
v -0.637305 0.475900 -0.427367
|
v -1.274610 0.475900 -0.427367
|
||||||
v -0.669937 0.476518 -0.416845
|
v -1.339874 0.476518 -0.416845
|
||||||
v 0.728013 0.440923 0.381697
|
v 1.456025 0.440923 0.381697
|
||||||
v 0.622394 0.500000 0.343897
|
v 1.244787 0.500000 0.343897
|
||||||
v 0.644238 0.452916 0.461143
|
v 1.288476 0.452916 0.461143
|
||||||
v 0.701099 0.469791 0.369685
|
v 1.402199 0.469791 0.369685
|
||||||
v 0.709167 0.454219 0.412896
|
v 1.418335 0.454219 0.412896
|
||||||
v 0.690111 0.474526 0.398518
|
v 1.380222 0.474526 0.398518
|
||||||
v 0.629326 0.493098 0.384544
|
v 1.258653 0.493098 0.384544
|
||||||
v 0.662611 0.491320 0.355910
|
v 1.325221 0.491320 0.355910
|
||||||
v 0.664788 0.486997 0.389481
|
v 1.329576 0.486997 0.389481
|
||||||
v 0.678710 0.458580 0.441780
|
v 1.357419 0.458580 0.441780
|
||||||
v 0.637305 0.475900 0.427367
|
v 1.274610 0.475900 0.427367
|
||||||
v 0.669937 0.476518 0.416845
|
v 1.339874 0.476518 0.416845
|
||||||
v -0.644238 0.452916 0.461143
|
v -1.288476 0.452916 0.461143
|
||||||
v -0.622394 0.500000 0.343897
|
v -1.244787 0.500000 0.343897
|
||||||
v -0.728013 0.440923 0.381697
|
v -1.456025 0.440923 0.381697
|
||||||
v -0.637305 0.475900 0.427367
|
v -1.274610 0.475900 0.427367
|
||||||
v -0.678710 0.458580 0.441779
|
v -1.357419 0.458580 0.441779
|
||||||
v -0.669937 0.476518 0.416845
|
v -1.339874 0.476518 0.416845
|
||||||
v -0.662611 0.491320 0.355910
|
v -1.325221 0.491320 0.355910
|
||||||
v -0.629327 0.493098 0.384544
|
v -1.258653 0.493098 0.384544
|
||||||
v -0.664788 0.486997 0.389481
|
v -1.329576 0.486997 0.389481
|
||||||
v -0.709167 0.454219 0.412896
|
v -1.418335 0.454219 0.412896
|
||||||
v -0.701099 0.469791 0.369685
|
v -1.402199 0.469791 0.369685
|
||||||
v -0.690111 0.474526 0.398518
|
v -1.380222 0.474526 0.398518
|
||||||
v 0.887658 -0.000000 -0.857357
|
v 1.775316 -0.000000 -0.857357
|
||||||
v 0.871802 0.049732 -0.877005
|
v 1.743604 0.049732 -0.877005
|
||||||
v 0.890004 0.006663 -0.885957
|
v 1.780008 0.006663 -0.885957
|
||||||
v 0.884201 0.024866 -0.893148
|
v 1.768401 0.024866 -0.893148
|
||||||
v 0.902222 0.000000 -0.828995
|
v 1.804443 0.000000 -0.828995
|
||||||
v 0.948146 0.050904 -0.783980
|
v 1.896293 0.050904 -0.783980
|
||||||
v 0.935700 0.006820 -0.825706
|
v 1.871401 0.006820 -0.825706
|
||||||
v 0.952510 0.025452 -0.809229
|
v 1.905020 0.025452 -0.809229
|
||||||
v 0.893715 -0.000000 -0.855422
|
v 1.787430 -0.000000 -0.855422
|
||||||
v 0.910149 0.049848 -0.864452
|
v 1.820297 0.049848 -0.864452
|
||||||
v 0.912263 0.006678 -0.878805
|
v 1.824526 0.006678 -0.878805
|
||||||
v 0.918278 0.024924 -0.882110
|
v 1.836557 0.024924 -0.882110
|
||||||
v 0.897222 -0.000000 -0.851240
|
v 1.794445 -0.000000 -0.851240
|
||||||
v 0.938053 0.050306 -0.830395
|
v 1.876107 0.050306 -0.830395
|
||||||
v 0.928072 0.006740 -0.859850
|
v 1.856144 0.006740 -0.859850
|
||||||
v 0.943017 0.025153 -0.852220
|
v 1.886035 0.025153 -0.852220
|
||||||
v -0.902222 -0.000000 -0.828995
|
v -1.804443 -0.000000 -0.828995
|
||||||
v -0.948146 0.050904 -0.783980
|
v -1.896293 0.050904 -0.783980
|
||||||
v -0.935700 0.006820 -0.825706
|
v -1.871401 0.006820 -0.825706
|
||||||
v -0.952510 0.025452 -0.809229
|
v -1.905020 0.025452 -0.809229
|
||||||
v -0.887658 0.000000 -0.857357
|
v -1.775316 0.000000 -0.857357
|
||||||
v -0.871802 0.049732 -0.877005
|
v -1.743604 0.049732 -0.877005
|
||||||
v -0.890004 0.006663 -0.885957
|
v -1.780008 0.006663 -0.885957
|
||||||
v -0.884201 0.024866 -0.893148
|
v -1.768401 0.024866 -0.893148
|
||||||
v -0.897222 0.000000 -0.851240
|
v -1.794445 0.000000 -0.851240
|
||||||
v -0.938053 0.050306 -0.830395
|
v -1.876107 0.050306 -0.830395
|
||||||
v -0.928072 0.006740 -0.859850
|
v -1.856144 0.006740 -0.859850
|
||||||
v -0.943017 0.025153 -0.852220
|
v -1.886035 0.025153 -0.852220
|
||||||
v -0.893715 0.000000 -0.855422
|
v -1.787430 0.000000 -0.855422
|
||||||
v -0.910149 0.049848 -0.864452
|
v -1.820297 0.049848 -0.864452
|
||||||
v -0.912263 0.006678 -0.878805
|
v -1.824526 0.006678 -0.878805
|
||||||
v -0.918278 0.024924 -0.882110
|
v -1.836557 0.024924 -0.882110
|
||||||
v 0.902222 -0.000000 0.828995
|
v 1.804443 -0.000000 0.828995
|
||||||
v 0.948146 0.050904 0.783980
|
v 1.896293 0.050904 0.783980
|
||||||
v 0.935700 0.006820 0.825706
|
v 1.871401 0.006820 0.825706
|
||||||
v 0.952510 0.025452 0.809229
|
v 1.905020 0.025452 0.809229
|
||||||
v 0.887658 0.000000 0.857357
|
v 1.775316 0.000000 0.857357
|
||||||
v 0.871802 0.049732 0.877005
|
v 1.743604 0.049732 0.877005
|
||||||
v 0.890004 0.006663 0.885957
|
v 1.780008 0.006663 0.885957
|
||||||
v 0.884201 0.024866 0.893148
|
v 1.768401 0.024866 0.893148
|
||||||
v 0.897222 0.000000 0.851240
|
v 1.794445 0.000000 0.851240
|
||||||
v 0.938053 0.050306 0.830395
|
v 1.876107 0.050306 0.830395
|
||||||
v 0.928072 0.006740 0.859850
|
v 1.856144 0.006740 0.859850
|
||||||
v 0.943017 0.025153 0.852220
|
v 1.886035 0.025153 0.852220
|
||||||
v 0.893715 0.000000 0.855422
|
v 1.787430 0.000000 0.855422
|
||||||
v 0.910149 0.049848 0.864452
|
v 1.820297 0.049848 0.864452
|
||||||
v 0.912263 0.006678 0.878805
|
v 1.824526 0.006678 0.878805
|
||||||
v 0.918278 0.024924 0.882110
|
v 1.836557 0.024924 0.882110
|
||||||
v -0.887658 -0.000000 0.857357
|
v -1.775316 -0.000000 0.857357
|
||||||
v -0.871802 0.049732 0.877005
|
v -1.743604 0.049732 0.877005
|
||||||
v -0.890004 0.006663 0.885957
|
v -1.780008 0.006663 0.885957
|
||||||
v -0.884201 0.024866 0.893148
|
v -1.768401 0.024866 0.893148
|
||||||
v -0.902222 0.000000 0.828995
|
v -1.804443 0.000000 0.828995
|
||||||
v -0.948146 0.050904 0.783980
|
v -1.896293 0.050904 0.783980
|
||||||
v -0.935700 0.006820 0.825706
|
v -1.871401 0.006820 0.825706
|
||||||
v -0.952510 0.025452 0.809229
|
v -1.905020 0.025452 0.809229
|
||||||
v -0.893715 -0.000000 0.855422
|
v -1.787430 -0.000000 0.855422
|
||||||
v -0.910149 0.049848 0.864452
|
v -1.820297 0.049848 0.864452
|
||||||
v -0.912263 0.006678 0.878805
|
v -1.824526 0.006678 0.878805
|
||||||
v -0.918278 0.024924 0.882110
|
v -1.836557 0.024924 0.882110
|
||||||
v -0.897222 -0.000000 0.851240
|
v -1.794445 -0.000000 0.851240
|
||||||
v -0.938053 0.050306 0.830395
|
v -1.876107 0.050306 0.830395
|
||||||
v -0.928072 0.006740 0.859850
|
v -1.856144 0.006740 0.859850
|
||||||
v -0.943017 0.025153 0.852220
|
v -1.886035 0.025153 0.852220
|
||||||
vn -0.0000 -1.0000 -0.0000
|
vn -0.0000 -1.0000 -0.0000
|
||||||
vn 0.7680 0.6161 -0.1749
|
vn 0.5143 0.8250 -0.2343
|
||||||
vn 0.5160 0.7394 0.4325
|
vn 0.2884 0.8265 0.4834
|
||||||
vn -0.2198 0.7587 -0.6133
|
vn -0.1120 0.7728 -0.6247
|
||||||
vn -0.0000 1.0000 -0.0000
|
vn -0.0000 1.0000 -0.0000
|
||||||
vn 0.6999 0.7036 -0.1229
|
vn 0.4400 0.8846 -0.1545
|
||||||
vn 0.4765 0.7600 -0.4419
|
vn 0.2616 0.8344 -0.4852
|
||||||
vn 0.1624 0.8309 -0.5321
|
vn 0.0820 0.8393 -0.5375
|
||||||
vn 0.0922 0.9356 -0.3409
|
vn 0.0463 0.9386 -0.3420
|
||||||
vn 0.1698 0.9759 -0.1368
|
vn 0.0858 0.9867 -0.1383
|
||||||
vn 0.4635 0.8821 -0.0835
|
vn 0.2530 0.9631 -0.0912
|
||||||
vn 0.3422 0.8972 -0.2792
|
vn 0.1791 0.9394 -0.2923
|
||||||
vn -0.6999 0.7036 -0.1229
|
vn -0.4400 0.8846 -0.1545
|
||||||
vn -0.4364 0.8996 -0.0186
|
vn -0.2357 0.9716 -0.0201
|
||||||
vn -0.1698 0.9759 -0.1368
|
vn -0.0858 0.9867 -0.1383
|
||||||
vn -0.1108 0.9292 -0.3525
|
vn -0.0557 0.9335 -0.3542
|
||||||
vn -0.1624 0.8309 -0.5321
|
vn -0.0820 0.8393 -0.5375
|
||||||
vn -0.4841 0.7821 -0.3924
|
vn -0.2666 0.8615 -0.4322
|
||||||
vn -0.3422 0.8972 -0.2792
|
vn -0.1791 0.9394 -0.2923
|
||||||
vn 0.6999 0.7036 0.1229
|
vn 0.4400 0.8846 0.1545
|
||||||
vn 0.4364 0.8996 0.0186
|
vn 0.2357 0.9716 0.0201
|
||||||
vn 0.1698 0.9759 0.1368
|
vn 0.0858 0.9867 0.1383
|
||||||
vn 0.1108 0.9292 0.3525
|
vn 0.0557 0.9335 0.3542
|
||||||
vn 0.1624 0.8309 0.5321
|
vn 0.0820 0.8393 0.5375
|
||||||
vn 0.4841 0.7821 0.3924
|
vn 0.2666 0.8615 0.4322
|
||||||
vn 0.3422 0.8972 0.2792
|
vn 0.1791 0.9394 0.2923
|
||||||
vn -0.1624 0.8309 0.5321
|
vn -0.0820 0.8393 0.5375
|
||||||
vn -0.0922 0.9356 0.3409
|
vn -0.0463 0.9386 0.3420
|
||||||
vn -0.1698 0.9759 0.1368
|
vn -0.0858 0.9867 0.1383
|
||||||
vn -0.4635 0.8821 0.0835
|
vn -0.2530 0.9631 0.0912
|
||||||
vn -0.6999 0.7036 0.1229
|
vn -0.4400 0.8846 0.1545
|
||||||
vn -0.4765 0.7600 0.4419
|
vn -0.2616 0.8344 0.4852
|
||||||
vn -0.3422 0.8972 0.2792
|
vn -0.1791 0.9394 0.2923
|
||||||
vn 0.7314 0.6819 -0.0000
|
vn 0.4726 0.8813 -0.0000
|
||||||
vn 0.4882 0.8728 -0.0000
|
vn 0.2693 0.9630 -0.0000
|
||||||
vn 0.2110 0.9775 -0.0000
|
vn 0.1073 0.9942 -0.0000
|
||||||
vn -0.0000 0.8267 0.5626
|
vn -0.0000 0.8267 0.5626
|
||||||
vn -0.0000 0.9280 0.3727
|
vn -0.0000 0.9280 0.3727
|
||||||
vn -0.0000 0.9859 0.1674
|
vn -0.0000 0.9859 0.1674
|
||||||
vn -0.7314 0.6819 -0.0000
|
vn -0.4726 0.8813 -0.0000
|
||||||
vn -0.4882 0.8728 -0.0000
|
vn -0.2693 0.9630 -0.0000
|
||||||
vn -0.2110 0.9775 -0.0000
|
vn -0.1073 0.9942 -0.0000
|
||||||
vn -0.0000 0.8267 -0.5626
|
vn -0.0000 0.8267 -0.5626
|
||||||
vn -0.0000 0.9280 -0.3727
|
vn -0.0000 0.9280 -0.3727
|
||||||
vn -0.0000 0.9859 -0.1674
|
vn -0.0000 0.9859 -0.1674
|
||||||
vn -0.5160 0.7394 0.4325
|
vn -0.2884 0.8265 0.4834
|
||||||
vn -0.7572 0.6246 0.1912
|
vn -0.5015 0.8273 0.2532
|
||||||
vn -0.0000 0.7180 0.6961
|
vn -0.0000 0.7180 0.6961
|
||||||
vn -0.2198 0.7587 0.6133
|
vn -0.1120 0.7728 0.6247
|
||||||
vn 0.2198 0.7587 0.6133
|
vn 0.1120 0.7728 0.6247
|
||||||
vn -0.5160 0.7394 -0.4325
|
vn -0.2884 0.8265 -0.4834
|
||||||
vn 0.7572 0.6246 0.1912
|
vn 0.5015 0.8273 0.2532
|
||||||
vn -0.8709 0.4915 -0.0000
|
vn -0.6631 0.7485 -0.0000
|
||||||
vn -0.0000 0.7180 -0.6961
|
vn -0.0000 0.7180 -0.6961
|
||||||
vn -0.7572 0.6246 -0.1912
|
vn -0.5015 0.8273 -0.2532
|
||||||
vn 0.8709 0.4915 -0.0000
|
vn 0.6631 0.7485 -0.0000
|
||||||
vn 0.5158 0.7394 -0.4326
|
vn 0.2883 0.8265 -0.4835
|
||||||
vn -0.2035 -0.9781 0.0432
|
vn -0.1034 -0.9937 0.0439
|
||||||
vn -0.8026 -0.5709 0.1732
|
vn -0.5581 -0.7940 0.2410
|
||||||
vn -0.9116 0.3575 0.2028
|
vn -0.7426 0.5825 0.3305
|
||||||
vn -0.1734 -0.9746 0.1415
|
vn -0.0877 -0.9858 0.1431
|
||||||
vn -0.7254 -0.3411 0.5978
|
vn -0.4662 -0.4384 0.7684
|
||||||
vn -0.6279 0.5771 0.5222
|
vn -0.3741 0.6876 0.6223
|
||||||
vn -0.0717 -0.9726 0.2209
|
vn -0.0359 -0.9745 0.2214
|
||||||
vn -0.2952 -0.2637 0.9183
|
vn -0.1527 -0.2728 0.9499
|
||||||
vn -0.2427 0.6123 0.7525
|
vn -0.1241 0.6263 0.7697
|
||||||
vn 0.0706 -0.9728 0.2208
|
vn 0.0353 -0.9746 0.2213
|
||||||
vn 0.2974 -0.2673 0.9166
|
vn 0.1539 -0.2766 0.9486
|
||||||
vn 0.2447 0.6108 0.7530
|
vn 0.1252 0.6250 0.7705
|
||||||
vn 0.1706 -0.9749 0.1431
|
vn 0.0863 -0.9857 0.1447
|
||||||
vn 0.7210 -0.3464 0.6002
|
vn 0.4615 -0.4435 0.7684
|
||||||
vn 0.6276 0.5759 0.5239
|
vn 0.3739 0.6861 0.6241
|
||||||
vn 0.2012 -0.9785 0.0452
|
vn 0.1021 -0.9937 0.0459
|
||||||
vn 0.7988 -0.5750 0.1771
|
vn 0.5531 -0.7962 0.2453
|
||||||
vn 0.9117 0.3568 0.2038
|
vn 0.7428 0.5813 0.3321
|
||||||
vn -0.0706 -0.9728 -0.2208
|
vn -0.0353 -0.9746 -0.2213
|
||||||
vn -0.2974 -0.2673 -0.9166
|
vn -0.1539 -0.2766 -0.9486
|
||||||
vn -0.2447 0.6108 -0.7530
|
vn -0.1252 0.6250 -0.7705
|
||||||
vn -0.1706 -0.9749 -0.1431
|
vn -0.0863 -0.9857 -0.1447
|
||||||
vn -0.7210 -0.3464 -0.6002
|
vn -0.4615 -0.4435 -0.7684
|
||||||
vn -0.6276 0.5759 -0.5239
|
vn -0.3739 0.6861 -0.6241
|
||||||
vn -0.2012 -0.9785 -0.0452
|
vn -0.1021 -0.9937 -0.0459
|
||||||
vn -0.7988 -0.5750 -0.1771
|
vn -0.5531 -0.7962 -0.2453
|
||||||
vn -0.9117 0.3568 -0.2038
|
vn -0.7428 0.5813 -0.3321
|
||||||
vn 0.0717 -0.9726 -0.2209
|
vn 0.0359 -0.9745 -0.2214
|
||||||
vn 0.2952 -0.2637 -0.9183
|
vn 0.1527 -0.2728 -0.9499
|
||||||
vn 0.2427 0.6123 -0.7525
|
vn 0.1241 0.6263 -0.7697
|
||||||
vn 0.1734 -0.9746 -0.1415
|
vn 0.0877 -0.9858 -0.1431
|
||||||
vn 0.7254 -0.3411 -0.5978
|
vn 0.4662 -0.4384 -0.7684
|
||||||
vn 0.6279 0.5771 -0.5222
|
vn 0.3741 0.6876 -0.6223
|
||||||
vn 0.2035 -0.9781 -0.0432
|
vn 0.1034 -0.9937 -0.0439
|
||||||
vn 0.8026 -0.5709 -0.1732
|
vn 0.5581 -0.7940 -0.2410
|
||||||
vn 0.9116 0.3575 -0.2028
|
vn 0.7426 0.5825 -0.3305
|
||||||
vn 0.1996 -0.9799 -0.0000
|
vn 0.1013 -0.9949 -0.0000
|
||||||
vn 0.7425 -0.6699 -0.0000
|
vn 0.4847 -0.8747 -0.0000
|
||||||
vn 0.9856 0.1690 -0.0000
|
vn 0.9459 0.3244 -0.0000
|
||||||
vn -0.0000 -0.9739 -0.2269
|
vn -0.0000 -0.9739 -0.2269
|
||||||
vn -0.0000 -0.3674 -0.9300
|
vn -0.0000 -0.3674 -0.9300
|
||||||
vn -0.0000 0.5445 -0.8387
|
vn -0.0000 0.5445 -0.8387
|
||||||
vn -0.1996 -0.9799 -0.0000
|
vn -0.1013 -0.9949 -0.0000
|
||||||
vn -0.7425 -0.6699 -0.0000
|
vn -0.4847 -0.8747 -0.0000
|
||||||
vn -0.9856 0.1690 -0.0000
|
vn -0.9459 0.3244 -0.0000
|
||||||
vn -0.0000 -0.9739 0.2269
|
vn -0.0000 -0.9739 0.2269
|
||||||
vn -0.0000 -0.3674 0.9300
|
vn -0.0000 -0.3674 0.9300
|
||||||
vn -0.0000 0.5445 0.8387
|
vn -0.0000 0.5445 0.8387
|
||||||
vn 0.2016 0.7561 -0.6227
|
vn 0.1024 0.7678 -0.6324
|
||||||
vn 0.7572 0.6246 -0.1912
|
vn 0.5015 0.8273 -0.2532
|
||||||
vn 0.5158 0.7394 0.4326
|
vn 0.2883 0.8265 0.4835
|
||||||
vn -0.2016 0.7561 -0.6227
|
vn -0.1024 0.7678 -0.6324
|
||||||
vn 0.6722 0.7276 -0.1367
|
vn 0.4134 0.8949 -0.1681
|
||||||
vn 0.4841 0.7821 -0.3924
|
vn 0.2666 0.8615 -0.4322
|
||||||
vn 0.1583 0.8271 -0.5393
|
vn 0.0799 0.8350 -0.5445
|
||||||
vn 0.1108 0.9292 -0.3525
|
vn 0.0557 0.9335 -0.3542
|
||||||
vn 0.1526 0.9814 -0.1165
|
vn 0.0770 0.9901 -0.1175
|
||||||
vn 0.4364 0.8996 -0.0186
|
vn 0.2357 0.9716 -0.0201
|
||||||
vn -0.6722 0.7276 -0.1367
|
vn -0.4134 0.8949 -0.1681
|
||||||
vn -0.4635 0.8821 -0.0835
|
vn -0.2530 0.9631 -0.0912
|
||||||
vn -0.1526 0.9814 -0.1165
|
vn -0.0770 0.9901 -0.1175
|
||||||
vn -0.0922 0.9356 -0.3409
|
vn -0.0463 0.9386 -0.3420
|
||||||
vn -0.1583 0.8271 -0.5393
|
vn -0.0799 0.8350 -0.5445
|
||||||
vn -0.4765 0.7600 -0.4419
|
vn -0.2616 0.8344 -0.4852
|
||||||
vn 0.6722 0.7276 0.1367
|
vn 0.4134 0.8949 0.1681
|
||||||
vn 0.4635 0.8821 0.0835
|
vn 0.2530 0.9631 0.0912
|
||||||
vn 0.1526 0.9814 0.1165
|
vn 0.0770 0.9901 0.1175
|
||||||
vn 0.0922 0.9356 0.3409
|
vn 0.0463 0.9386 0.3420
|
||||||
vn 0.1583 0.8271 0.5393
|
vn 0.0799 0.8350 0.5445
|
||||||
vn 0.4765 0.7600 0.4419
|
vn 0.2616 0.8344 0.4852
|
||||||
vn -0.1583 0.8271 0.5393
|
vn -0.0799 0.8350 0.5445
|
||||||
vn -0.1108 0.9292 0.3525
|
vn -0.0557 0.9335 0.3542
|
||||||
vn -0.1526 0.9814 0.1165
|
vn -0.0770 0.9901 0.1175
|
||||||
vn -0.4364 0.8996 0.0186
|
vn -0.2357 0.9716 0.0201
|
||||||
vn -0.6722 0.7276 0.1367
|
vn -0.4134 0.8949 0.1681
|
||||||
vn -0.4841 0.7821 0.3924
|
vn -0.2666 0.8615 0.4322
|
||||||
vn -0.5158 0.7394 0.4326
|
vn -0.2883 0.8265 0.4835
|
||||||
vn -0.7680 0.6161 0.1749
|
vn -0.5143 0.8250 0.2343
|
||||||
vn -0.2016 0.7561 0.6227
|
vn -0.1024 0.7678 0.6324
|
||||||
vn 0.2016 0.7561 0.6227
|
vn 0.1024 0.7678 0.6324
|
||||||
vn -0.5158 0.7394 -0.4326
|
vn -0.2883 0.8265 -0.4835
|
||||||
vn 0.7680 0.6161 0.1749
|
vn 0.5143 0.8250 0.2343
|
||||||
vn -0.7680 0.6161 -0.1749
|
vn -0.5143 0.8250 -0.2343
|
||||||
vn 0.5160 0.7394 -0.4325
|
vn 0.2884 0.8265 -0.4834
|
||||||
vn -0.2012 -0.9785 0.0452
|
vn -0.1021 -0.9937 0.0459
|
||||||
vn -0.7988 -0.5749 0.1771
|
vn -0.5531 -0.7962 0.2453
|
||||||
vn -0.9117 0.3568 0.2038
|
vn -0.7428 0.5813 0.3321
|
||||||
vn -0.1706 -0.9749 0.1431
|
vn -0.0863 -0.9857 0.1447
|
||||||
vn -0.7210 -0.3464 0.6002
|
vn -0.4615 -0.4435 0.7684
|
||||||
vn -0.6276 0.5759 0.5239
|
vn -0.3739 0.6861 0.6241
|
||||||
vn -0.0706 -0.9728 0.2208
|
vn -0.0353 -0.9746 0.2212
|
||||||
vn -0.2974 -0.2673 0.9166
|
vn -0.1539 -0.2766 0.9486
|
||||||
vn -0.2447 0.6108 0.7530
|
vn -0.1252 0.6250 0.7705
|
||||||
vn 0.0717 -0.9726 0.2209
|
vn 0.0359 -0.9745 0.2214
|
||||||
vn 0.2952 -0.2637 0.9183
|
vn 0.1527 -0.2728 0.9499
|
||||||
vn 0.2427 0.6123 0.7525
|
vn 0.1241 0.6263 0.7697
|
||||||
vn 0.1734 -0.9746 0.1415
|
vn 0.0877 -0.9858 0.1431
|
||||||
vn 0.7254 -0.3411 0.5978
|
vn 0.4662 -0.4384 0.7684
|
||||||
vn 0.6279 0.5771 0.5222
|
vn 0.3741 0.6876 0.6223
|
||||||
vn 0.2035 -0.9781 0.0432
|
vn 0.1034 -0.9937 0.0439
|
||||||
vn 0.8026 -0.5709 0.1732
|
vn 0.5581 -0.7940 0.2410
|
||||||
vn 0.9116 0.3575 0.2028
|
vn 0.7426 0.5825 0.3305
|
||||||
vn -0.0717 -0.9726 -0.2209
|
vn -0.0359 -0.9745 -0.2214
|
||||||
vn -0.2952 -0.2637 -0.9183
|
vn -0.1527 -0.2728 -0.9499
|
||||||
vn -0.2427 0.6123 -0.7525
|
vn -0.1241 0.6263 -0.7697
|
||||||
vn -0.1734 -0.9746 -0.1415
|
vn -0.0877 -0.9858 -0.1431
|
||||||
vn -0.7254 -0.3411 -0.5978
|
vn -0.4662 -0.4384 -0.7684
|
||||||
vn -0.6279 0.5771 -0.5222
|
vn -0.3741 0.6876 -0.6223
|
||||||
vn -0.2035 -0.9781 -0.0432
|
vn -0.1034 -0.9937 -0.0439
|
||||||
vn -0.8026 -0.5709 -0.1732
|
vn -0.5581 -0.7940 -0.2410
|
||||||
vn -0.9116 0.3575 -0.2028
|
vn -0.7426 0.5825 -0.3305
|
||||||
vn 0.0706 -0.9728 -0.2208
|
vn 0.0353 -0.9746 -0.2212
|
||||||
vn 0.2974 -0.2673 -0.9166
|
vn 0.1539 -0.2766 -0.9486
|
||||||
vn 0.2447 0.6108 -0.7530
|
vn 0.1252 0.6250 -0.7705
|
||||||
vn 0.1706 -0.9749 -0.1431
|
vn 0.0863 -0.9857 -0.1447
|
||||||
vn 0.7210 -0.3464 -0.6002
|
vn 0.4615 -0.4435 -0.7684
|
||||||
vn 0.6276 0.5759 -0.5239
|
vn 0.3739 0.6861 -0.6241
|
||||||
vn 0.2012 -0.9785 -0.0452
|
vn 0.1021 -0.9937 -0.0459
|
||||||
vn 0.7988 -0.5749 -0.1771
|
vn 0.5531 -0.7962 -0.2453
|
||||||
vn 0.9117 0.3568 -0.2038
|
vn 0.7428 0.5813 -0.3321
|
||||||
vn 0.2198 0.7587 -0.6133
|
vn 0.1120 0.7728 -0.6247
|
||||||
vt 0.044995 0.962648
|
vt 0.044995 0.962648
|
||||||
vt 0.962429 0.947171
|
vt 0.962429 0.947171
|
||||||
vt 0.955005 0.037352
|
vt 0.955005 0.037352
|
||||||
|
|||||||
@ -18,30 +18,30 @@ const int cube_Cube_triangles[] = {
|
|||||||
const int cube_Cube_triangles_length = (sizeof (cube_Cube_triangles)) / (sizeof (cube_Cube_triangles[0]));
|
const int cube_Cube_triangles_length = (sizeof (cube_Cube_triangles)) / (sizeof (cube_Cube_triangles[0]));
|
||||||
|
|
||||||
const float cube_vertices[] = {
|
const float cube_vertices[] = {
|
||||||
-1.000000f, 1.000000f, 1.000000f, 0.625000f, 0.000000f, -1.0000f, -0.0000f, -0.0000f,
|
-2.000000f, 1.000000f, 1.000000f, 0.625000f, 0.000000f, -1.0000f, -0.0000f, -0.0000f,
|
||||||
-1.000000f, -1.000000f, -1.000000f, 0.375000f, 0.250000f, -1.0000f, -0.0000f, -0.0000f,
|
-2.000000f, -1.000000f, -1.000000f, 0.375000f, 0.250000f, -1.0000f, -0.0000f, -0.0000f,
|
||||||
-1.000000f, -1.000000f, 1.000000f, 0.375000f, 0.000000f, -1.0000f, -0.0000f, -0.0000f,
|
-2.000000f, -1.000000f, 1.000000f, 0.375000f, 0.000000f, -1.0000f, -0.0000f, -0.0000f,
|
||||||
-1.000000f, 1.000000f, -1.000000f, 0.625000f, 0.250000f, -0.0000f, -0.0000f, -1.0000f,
|
-2.000000f, 1.000000f, -1.000000f, 0.625000f, 0.250000f, -0.0000f, -0.0000f, -1.0000f,
|
||||||
1.000000f, -1.000000f, -1.000000f, 0.375000f, 0.500000f, -0.0000f, -0.0000f, -1.0000f,
|
2.000000f, -1.000000f, -1.000000f, 0.375000f, 0.500000f, -0.0000f, -0.0000f, -1.0000f,
|
||||||
-1.000000f, -1.000000f, -1.000000f, 0.375000f, 0.250000f, -0.0000f, -0.0000f, -1.0000f,
|
-2.000000f, -1.000000f, -1.000000f, 0.375000f, 0.250000f, -0.0000f, -0.0000f, -1.0000f,
|
||||||
1.000000f, 1.000000f, -1.000000f, 0.625000f, 0.500000f, 1.0000f, -0.0000f, -0.0000f,
|
2.000000f, 1.000000f, -1.000000f, 0.625000f, 0.500000f, 1.0000f, -0.0000f, -0.0000f,
|
||||||
1.000000f, -1.000000f, 1.000000f, 0.375000f, 0.750000f, 1.0000f, -0.0000f, -0.0000f,
|
2.000000f, -1.000000f, 1.000000f, 0.375000f, 0.750000f, 1.0000f, -0.0000f, -0.0000f,
|
||||||
1.000000f, -1.000000f, -1.000000f, 0.375000f, 0.500000f, 1.0000f, -0.0000f, -0.0000f,
|
2.000000f, -1.000000f, -1.000000f, 0.375000f, 0.500000f, 1.0000f, -0.0000f, -0.0000f,
|
||||||
1.000000f, 1.000000f, 1.000000f, 0.625000f, 0.750000f, -0.0000f, -0.0000f, 1.0000f,
|
2.000000f, 1.000000f, 1.000000f, 0.625000f, 0.750000f, -0.0000f, -0.0000f, 1.0000f,
|
||||||
-1.000000f, -1.000000f, 1.000000f, 0.375000f, 1.000000f, -0.0000f, -0.0000f, 1.0000f,
|
-2.000000f, -1.000000f, 1.000000f, 0.375000f, 1.000000f, -0.0000f, -0.0000f, 1.0000f,
|
||||||
1.000000f, -1.000000f, 1.000000f, 0.375000f, 0.750000f, -0.0000f, -0.0000f, 1.0000f,
|
2.000000f, -1.000000f, 1.000000f, 0.375000f, 0.750000f, -0.0000f, -0.0000f, 1.0000f,
|
||||||
1.000000f, -1.000000f, -1.000000f, 0.375000f, 0.500000f, -0.0000f, -1.0000f, -0.0000f,
|
2.000000f, -1.000000f, -1.000000f, 0.375000f, 0.500000f, -0.0000f, -1.0000f, -0.0000f,
|
||||||
-1.000000f, -1.000000f, 1.000000f, 0.125000f, 0.750000f, -0.0000f, -1.0000f, -0.0000f,
|
-2.000000f, -1.000000f, 1.000000f, 0.125000f, 0.750000f, -0.0000f, -1.0000f, -0.0000f,
|
||||||
-1.000000f, -1.000000f, -1.000000f, 0.125000f, 0.500000f, -0.0000f, -1.0000f, -0.0000f,
|
-2.000000f, -1.000000f, -1.000000f, 0.125000f, 0.500000f, -0.0000f, -1.0000f, -0.0000f,
|
||||||
-1.000000f, 1.000000f, -1.000000f, 0.875000f, 0.500000f, -0.0000f, 1.0000f, -0.0000f,
|
-2.000000f, 1.000000f, -1.000000f, 0.875000f, 0.500000f, -0.0000f, 1.0000f, -0.0000f,
|
||||||
1.000000f, 1.000000f, 1.000000f, 0.625000f, 0.750000f, -0.0000f, 1.0000f, -0.0000f,
|
2.000000f, 1.000000f, 1.000000f, 0.625000f, 0.750000f, -0.0000f, 1.0000f, -0.0000f,
|
||||||
1.000000f, 1.000000f, -1.000000f, 0.625000f, 0.500000f, -0.0000f, 1.0000f, -0.0000f,
|
2.000000f, 1.000000f, -1.000000f, 0.625000f, 0.500000f, -0.0000f, 1.0000f, -0.0000f,
|
||||||
-1.000000f, 1.000000f, -1.000000f, 0.625000f, 0.250000f, -1.0000f, -0.0000f, -0.0000f,
|
-2.000000f, 1.000000f, -1.000000f, 0.625000f, 0.250000f, -1.0000f, -0.0000f, -0.0000f,
|
||||||
1.000000f, 1.000000f, -1.000000f, 0.625000f, 0.500000f, -0.0000f, -0.0000f, -1.0000f,
|
2.000000f, 1.000000f, -1.000000f, 0.625000f, 0.500000f, -0.0000f, -0.0000f, -1.0000f,
|
||||||
1.000000f, 1.000000f, 1.000000f, 0.625000f, 0.750000f, 1.0000f, -0.0000f, -0.0000f,
|
2.000000f, 1.000000f, 1.000000f, 0.625000f, 0.750000f, 1.0000f, -0.0000f, -0.0000f,
|
||||||
-1.000000f, 1.000000f, 1.000000f, 0.625000f, 1.000000f, -0.0000f, -0.0000f, 1.0000f,
|
-2.000000f, 1.000000f, 1.000000f, 0.625000f, 1.000000f, -0.0000f, -0.0000f, 1.0000f,
|
||||||
1.000000f, -1.000000f, 1.000000f, 0.375000f, 0.750000f, -0.0000f, -1.0000f, -0.0000f,
|
2.000000f, -1.000000f, 1.000000f, 0.375000f, 0.750000f, -0.0000f, -1.0000f, -0.0000f,
|
||||||
-1.000000f, 1.000000f, 1.000000f, 0.875000f, 0.750000f, -0.0000f, 1.0000f, -0.0000f,
|
-2.000000f, 1.000000f, 1.000000f, 0.875000f, 0.750000f, -0.0000f, 1.0000f, -0.0000f,
|
||||||
};
|
};
|
||||||
|
|
||||||
const int cube_vertices_length = (sizeof (cube_vertices)) / (sizeof (cube_vertices[0]));
|
const int cube_vertices_length = (sizeof (cube_vertices)) / (sizeof (cube_vertices[0]));
|
||||||
|
|||||||
@ -2,14 +2,14 @@
|
|||||||
# www.blender.org
|
# www.blender.org
|
||||||
mtllib cube.mtl
|
mtllib cube.mtl
|
||||||
o Cube
|
o Cube
|
||||||
v -1.000000 -1.000000 1.000000
|
v -2.000000 -1.000000 1.000000
|
||||||
v -1.000000 1.000000 1.000000
|
v -2.000000 1.000000 1.000000
|
||||||
v -1.000000 -1.000000 -1.000000
|
v -2.000000 -1.000000 -1.000000
|
||||||
v -1.000000 1.000000 -1.000000
|
v -2.000000 1.000000 -1.000000
|
||||||
v 1.000000 -1.000000 1.000000
|
v 2.000000 -1.000000 1.000000
|
||||||
v 1.000000 1.000000 1.000000
|
v 2.000000 1.000000 1.000000
|
||||||
v 1.000000 -1.000000 -1.000000
|
v 2.000000 -1.000000 -1.000000
|
||||||
v 1.000000 1.000000 -1.000000
|
v 2.000000 1.000000 -1.000000
|
||||||
vn -1.0000 -0.0000 -0.0000
|
vn -1.0000 -0.0000 -0.0000
|
||||||
vn -0.0000 -0.0000 -1.0000
|
vn -0.0000 -0.0000 -1.0000
|
||||||
vn 1.0000 -0.0000 -0.0000
|
vn 1.0000 -0.0000 -0.0000
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "state.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
@ -22,7 +24,7 @@ extern "C" {
|
|||||||
uint uniform_normal_trans,
|
uint uniform_normal_trans,
|
||||||
uint uniform_base_color,
|
uint uniform_base_color,
|
||||||
uint uniform_light_pos,
|
uint uniform_light_pos,
|
||||||
float paddle_x);
|
struct game_state * state);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
19
include/state.h
Normal file
19
include/state.h
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
struct game_state {
|
||||||
|
float paddle_x;
|
||||||
|
float paddle_y;
|
||||||
|
|
||||||
|
float ball_x;
|
||||||
|
float ball_y;
|
||||||
|
float ball_dx;
|
||||||
|
float ball_dy;
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@ -5,5 +5,6 @@ cd include/model
|
|||||||
python ~/model_generator2/generate_indexed_cpp2.py paddle.obj paddle > paddle.h
|
python ~/model_generator2/generate_indexed_cpp2.py paddle.obj paddle > paddle.h
|
||||||
python ~/model_generator2/generate_indexed_cpp2.py block.obj block > block.h
|
python ~/model_generator2/generate_indexed_cpp2.py block.obj block > block.h
|
||||||
python ~/model_generator2/generate_indexed_cpp2.py ball.obj ball > ball.h
|
python ~/model_generator2/generate_indexed_cpp2.py ball.obj ball > ball.h
|
||||||
|
python ~/model_generator2/generate_indexed_cpp2.py cube.obj cube > cube.h
|
||||||
|
|
||||||
rm -f *.mtl
|
rm -f *.mtl
|
||||||
|
|||||||
174
src/collision.cpp
Normal file
174
src/collision.cpp
Normal file
@ -0,0 +1,174 @@
|
|||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
#include "collision.hpp"
|
||||||
|
|
||||||
|
#include "model/cube.h"
|
||||||
|
|
||||||
|
// cube_vertices
|
||||||
|
// cube_Cube_triangles
|
||||||
|
|
||||||
|
vec3 _plane_normal(vec3 a,
|
||||||
|
vec3 b,
|
||||||
|
vec3 c)
|
||||||
|
{
|
||||||
|
return normalize(cross(b - a, c - a));
|
||||||
|
}
|
||||||
|
|
||||||
|
float _plane_d(vec3 normal,
|
||||||
|
vec3 origin)
|
||||||
|
{
|
||||||
|
return -dot(normal, origin);
|
||||||
|
}
|
||||||
|
|
||||||
|
float _signed_distance(vec3 plane_normal,
|
||||||
|
float plane_d,
|
||||||
|
vec3 point)
|
||||||
|
{
|
||||||
|
return dot(point, plane_normal) + plane_d;
|
||||||
|
}
|
||||||
|
|
||||||
|
float clamp(float v,
|
||||||
|
float min,
|
||||||
|
float max)
|
||||||
|
{
|
||||||
|
if (v > max)
|
||||||
|
return max;
|
||||||
|
if (v < min)
|
||||||
|
return min;
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
|
||||||
|
vec2 _t0_t1(float signed_distance,
|
||||||
|
float r_n_dot_v)
|
||||||
|
{
|
||||||
|
if (r_n_dot_v == 0.0)
|
||||||
|
return vec2(0.0, 1.0);
|
||||||
|
else {
|
||||||
|
float t0 = (-1.0 - signed_distance) * r_n_dot_v;
|
||||||
|
float t1 = ( 1.0 - signed_distance) * r_n_dot_v;
|
||||||
|
if (t0 > t1) {
|
||||||
|
float tmp = t0;
|
||||||
|
t0 = t1;
|
||||||
|
t1 = tmp;
|
||||||
|
}
|
||||||
|
t0 = clamp(t0, 0.0, 1.0);
|
||||||
|
t1 = clamp(t0, 0.0, 1.0);
|
||||||
|
return vec2(t0, t1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool point_in_triangle(vec3 point,
|
||||||
|
vec3 ap,
|
||||||
|
vec3 bp,
|
||||||
|
vec3 cp)
|
||||||
|
{
|
||||||
|
vec3 ba = bp - ap;
|
||||||
|
vec3 ca = cp - ap;
|
||||||
|
|
||||||
|
vec3 vp = point - ap;
|
||||||
|
|
||||||
|
float a = dot(ba, ba);
|
||||||
|
float b = dot(ba, ca);
|
||||||
|
float c = dot(ca, ca);
|
||||||
|
float d = dot(vp, ba);
|
||||||
|
float e = dot(vp, ca);
|
||||||
|
float x = (d * c) - (e * b);
|
||||||
|
float y = (e * a) - (d * b);
|
||||||
|
float z = x + y - ((a * c) - (b * b));
|
||||||
|
|
||||||
|
return (z < 0) and not ((x < 0) or (y < 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
vec2 collision_inner(vec3 plane_normal,
|
||||||
|
vec3 a, vec3 b, vec3 c,
|
||||||
|
vec3 point,
|
||||||
|
vec3 velocity)
|
||||||
|
{
|
||||||
|
vec3 plane_origin = a;
|
||||||
|
float plane_d = _plane_d(plane_normal, plane_origin);
|
||||||
|
float signed_distance = _signed_distance(plane_normal, plane_d, point);
|
||||||
|
|
||||||
|
float n_dot_v = dot(plane_normal, velocity);
|
||||||
|
float r_n_dot_v = 1.0f / n_dot_v;
|
||||||
|
|
||||||
|
//bool embedded = n_dot_v == 0.0f;
|
||||||
|
if (n_dot_v == 0.0f) {
|
||||||
|
if (fabsf(signed_distance) >= 1.0f)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
vec2 t0_t1 = _t0_t1(signed_distance, r_n_dot_v);
|
||||||
|
float t0 = t0_t1.x;
|
||||||
|
//float t1 = t0_t1.y;
|
||||||
|
|
||||||
|
vec3 plane_intersection_point = point - plane_normal + t0 * velocity;
|
||||||
|
bool inside = point_in_triangle(plane_intersection_point, a, b, c);
|
||||||
|
float inside_f = inside ? 1.0f : 0.0f;
|
||||||
|
|
||||||
|
return vec2(inside_f, t0);
|
||||||
|
}
|
||||||
|
|
||||||
|
vec4 collision(mat4x4 trans,
|
||||||
|
vec3 point, vec3 velocity)
|
||||||
|
{
|
||||||
|
bool collision = false;
|
||||||
|
float smallest = 0.0f;
|
||||||
|
vec3 smallest_normal = vec3(0, 0, 0);
|
||||||
|
|
||||||
|
for (int i = 0; i < cube_Cube_triangles_length / 3; i++) {
|
||||||
|
const float * a = &cube_vertices[cube_Cube_triangles[i * 3 + 0] * 8];
|
||||||
|
const float * b = &cube_vertices[cube_Cube_triangles[i * 3 + 1] * 8];
|
||||||
|
const float * c = &cube_vertices[cube_Cube_triangles[i * 3 + 2] * 8];
|
||||||
|
|
||||||
|
vec3 ap = trans * vec3(a[0], a[1], a[2]);
|
||||||
|
vec3 bp = trans * vec3(b[0], b[1], b[2]);
|
||||||
|
vec3 cp = trans * vec3(c[0], c[1], c[2]);
|
||||||
|
|
||||||
|
vec3 plane_normal = _plane_normal(ap, bp, cp);
|
||||||
|
|
||||||
|
vec2 res = collision_inner(plane_normal, ap, bp, cp, point, velocity);
|
||||||
|
bool inside = res.x == 1.0f;
|
||||||
|
float t0 = res.y;
|
||||||
|
if (!inside)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (collision == false || t0 < smallest) {
|
||||||
|
smallest = t0;
|
||||||
|
smallest_normal = plane_normal;
|
||||||
|
}
|
||||||
|
collision = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
float collision_f = collision ? 1.0 : 0.0;
|
||||||
|
|
||||||
|
return vec4(smallest_normal.x,
|
||||||
|
smallest_normal.y,
|
||||||
|
smallest_normal.z,
|
||||||
|
collision_f);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
bool collision(float ball_x, float ball_y,
|
||||||
|
float ball_dx, float ball_dy)
|
||||||
|
{
|
||||||
|
const uint8_t * level = (const uint8_t *)src_level_level1_data_start;
|
||||||
|
const uint8_t * pal = (const uint8_t *)src_level_level1_data_pal_start;
|
||||||
|
|
||||||
|
for (int y = 0; y < 28; y++) {
|
||||||
|
for (int x = 0; x < 13; x++) {
|
||||||
|
char tile = level[y * 13 + x];
|
||||||
|
if (tile == 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
//if ( (paddle_x + 1.0) >= ((float)x - 1.0)
|
||||||
|
//&& (paddle_x - 1.0) <= ((float)x + 1.0)
|
||||||
|
//&& (paddle_y + 1.0) >= ((float)y - 1.0)
|
||||||
|
//&& (paddle_y - 1.0) <= ((float)y + 1.0)) {
|
||||||
|
|
||||||
|
collision_inner(translate(vec3(x, y, 0)),
|
||||||
|
vec3(ball_x, ball_y, 0),
|
||||||
|
vec3(ball_dx, ball_dy, 0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
67
src/main.c
67
src/main.c
@ -1,5 +1,6 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
#include "glad/glad.h"
|
#include "glad/glad.h"
|
||||||
|
|
||||||
@ -14,9 +15,9 @@
|
|||||||
#include "model/block.h"
|
#include "model/block.h"
|
||||||
#include "model/paddle.h"
|
#include "model/paddle.h"
|
||||||
#include "model/ball.h"
|
#include "model/ball.h"
|
||||||
#include "model/cube.h"
|
//#include "model/cube.h"
|
||||||
|
|
||||||
int vp_width = 2400;
|
int vp_width = 1600;
|
||||||
int vp_height = 1200;
|
int vp_height = 1200;
|
||||||
|
|
||||||
void framebuffer_size_callback(GLFWwindow* window, int width, int height)
|
void framebuffer_size_callback(GLFWwindow* window, int width, int height)
|
||||||
@ -35,6 +36,14 @@ static const float triangle_vertex_buffer_data[] = {
|
|||||||
};
|
};
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
float deadzone(float n)
|
||||||
|
{
|
||||||
|
if (fabsf(n) < 0.02)
|
||||||
|
return 0.0f;
|
||||||
|
else
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
@ -114,10 +123,18 @@ int main()
|
|||||||
const double frame_rate = 60.0;
|
const double frame_rate = 60.0;
|
||||||
const double first_frame = glfwGetTime();
|
const double first_frame = glfwGetTime();
|
||||||
double last_frame = first_frame;
|
double last_frame = first_frame;
|
||||||
double frames = 0;
|
double frames = 1;
|
||||||
const char * last_gamepad_name = NULL;
|
const char * last_gamepad_name = NULL;
|
||||||
|
|
||||||
float paddle_x = 0.0;
|
struct game_state state;
|
||||||
|
state.paddle_x = 0.0;
|
||||||
|
state.paddle_y = 26.0;
|
||||||
|
|
||||||
|
state.ball_x = 0.0;
|
||||||
|
state.ball_y = 25.0;
|
||||||
|
|
||||||
|
state.ball_dx = 0.1;
|
||||||
|
state.ball_dy = 0.1;
|
||||||
|
|
||||||
while(!glfwWindowShouldClose(window)) {
|
while(!glfwWindowShouldClose(window)) {
|
||||||
if(glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
|
if(glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
|
||||||
@ -130,6 +147,8 @@ int main()
|
|||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
|
|
||||||
float paddle_dx = 0.0;
|
float paddle_dx = 0.0;
|
||||||
|
//float paddle_dy = 0.0;
|
||||||
|
|
||||||
for (int i = 0; i < 16; i++) {
|
for (int i = 0; i < 16; i++) {
|
||||||
int present = glfwJoystickPresent(GLFW_JOYSTICK_1 + i);
|
int present = glfwJoystickPresent(GLFW_JOYSTICK_1 + i);
|
||||||
int is_gamepad = glfwJoystickIsGamepad(GLFW_JOYSTICK_1 + i);
|
int is_gamepad = glfwJoystickIsGamepad(GLFW_JOYSTICK_1 + i);
|
||||||
@ -142,19 +161,44 @@ int main()
|
|||||||
printf("active gamepad: `%s`; axes: %d\n", name, count);
|
printf("active gamepad: `%s`; axes: %d\n", name, count);
|
||||||
last_gamepad_name = name;
|
last_gamepad_name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
float left = axes[2] * 0.5 + 0.5;
|
float left = axes[2] * 0.5 + 0.5;
|
||||||
float right = axes[5] * 0.5 + 0.5;
|
float right = axes[5] * 0.5 + 0.5;
|
||||||
paddle_dx = right - left;
|
paddle_dx = right - left;
|
||||||
|
|
||||||
|
//state.ball_dx = deadzone(axes[0]);
|
||||||
|
//state.ball_dy = deadzone(axes[1]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
float extent = 0.25;
|
float extent = 0.25;
|
||||||
paddle_x += paddle_dx * 0.4;
|
state.paddle_x += paddle_dx * 0.4;
|
||||||
if (paddle_x < extent)
|
if (state.paddle_x < extent)
|
||||||
paddle_x = extent;
|
state.paddle_x = extent;
|
||||||
if (paddle_x > 12 - extent)
|
if (state.paddle_x > 12 - extent)
|
||||||
paddle_x = 12 - extent;
|
state.paddle_x = 12 - extent;
|
||||||
|
//state.paddle_y += paddle_dy * 0.4;
|
||||||
|
|
||||||
|
if ((state.ball_x + state.ball_dx * 0.4) > 12.25f) {
|
||||||
|
state.ball_x = 12.25f;
|
||||||
|
state.ball_dx = -state.ball_dx;
|
||||||
|
} else if ((state.ball_x + state.ball_dx * 0.4) < -0.25f) {
|
||||||
|
state.ball_x = -0.25f;
|
||||||
|
state.ball_dx = -state.ball_dx;
|
||||||
|
} else {
|
||||||
|
state.ball_x += state.ball_dx * 0.4;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((state.ball_y + state.ball_dy * 0.4) > 27.0f) {
|
||||||
|
state.ball_y = 27.0f;
|
||||||
|
state.ball_dy = -state.ball_dy;
|
||||||
|
} else if ((state.ball_y + state.ball_dy * 0.4) < 0.0f) {
|
||||||
|
state.ball_y = 0.0f;
|
||||||
|
state.ball_dy = -state.ball_dy;
|
||||||
|
} else {
|
||||||
|
state.ball_y += state.ball_dy * 0.4;
|
||||||
|
}
|
||||||
|
|
||||||
render(paddle_mesh,
|
render(paddle_mesh,
|
||||||
block_mesh,
|
block_mesh,
|
||||||
@ -166,14 +210,17 @@ int main()
|
|||||||
uniform_normal_trans,
|
uniform_normal_trans,
|
||||||
uniform_base_color,
|
uniform_base_color,
|
||||||
uniform_light_pos,
|
uniform_light_pos,
|
||||||
paddle_x);
|
&state);
|
||||||
|
|
||||||
glfwSwapBuffers(window);
|
glfwSwapBuffers(window);
|
||||||
glfwPollEvents();
|
glfwPollEvents();
|
||||||
|
|
||||||
double next_frame = last_frame + 1.0 / frame_rate;
|
double next_frame = last_frame + 1.0 / frame_rate;
|
||||||
|
last_frame = glfwGetTime();
|
||||||
while (next_frame - glfwGetTime() > 0) {
|
while (next_frame - glfwGetTime() > 0) {
|
||||||
double delta = next_frame - glfwGetTime();
|
double delta = next_frame - glfwGetTime();
|
||||||
|
if (delta < 0)
|
||||||
|
break;
|
||||||
glfwWaitEventsTimeout(delta);
|
glfwWaitEventsTimeout(delta);
|
||||||
}
|
}
|
||||||
//printf("fps %f\n", frames / (glfwGetTime() - first_frame));
|
//printf("fps %f\n", frames / (glfwGetTime() - first_frame));
|
||||||
|
|||||||
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
#include "glad/glad.h"
|
#include "glad/glad.h"
|
||||||
|
|
||||||
|
#include "collision.hpp"
|
||||||
#include "render.hpp"
|
#include "render.hpp"
|
||||||
#include "math/float_types.hpp"
|
#include "math/float_types.hpp"
|
||||||
#include "math/transform.hpp"
|
#include "math/transform.hpp"
|
||||||
@ -57,14 +58,18 @@ mat4x4 perspective(float low1, float high1,
|
|||||||
return m3;
|
return m3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const float x_scale = 1.0f / 12.0f;
|
||||||
|
//static const float y_scale = 1.0f / 27.0f;
|
||||||
|
static const float y_scale = 1.0f / 12.0f;
|
||||||
|
|
||||||
static inline float px(float x)
|
static inline float px(float x)
|
||||||
{
|
{
|
||||||
return (x / 12.0) * 2.0 - 1.0 + 1.0f / 12.0f;
|
return (x * x_scale) * 2.0 - 1.0 + x_scale;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline float py(float y)
|
static inline float py(float y)
|
||||||
{
|
{
|
||||||
return (y / 27.0) * -2.0 + 1.0 - 1.0f / 27.0f;
|
return (y * y_scale) * -2.0 + 1.0 - y_scale;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -81,13 +86,15 @@ void render(mesh paddle_mesh,
|
|||||||
uint uniform_normal_trans,
|
uint uniform_normal_trans,
|
||||||
uint uniform_base_color,
|
uint uniform_base_color,
|
||||||
uint uniform_light_pos,
|
uint uniform_light_pos,
|
||||||
float paddle_x)
|
struct game_state * state)
|
||||||
{
|
{
|
||||||
static float theta = 0;
|
static float theta = 0;
|
||||||
|
|
||||||
float aspect = (float)vp_height / (float)vp_width;
|
float aspect = (float)vp_height / (float)vp_width;
|
||||||
|
|
||||||
mat4x4 a = scale(vec3(aspect, 1.0f, 1.0f));
|
mat4x4 p = perspective(-1, 1, 0, 1);
|
||||||
|
mat4x4 tt = translate(vec3(-1.2f, 1.4f, 2.0f));
|
||||||
|
mat4x4 a = scale(vec3(aspect, 1.0f, 1.0f)) * p * tt * scale(0.05f);// * rotate_x(PI / 4.0f);
|
||||||
|
|
||||||
theta += 0.01;
|
theta += 0.01;
|
||||||
|
|
||||||
@ -132,23 +139,27 @@ void render(mesh paddle_mesh,
|
|||||||
for (int y = 0; y < 28; y++) {
|
for (int y = 0; y < 28; y++) {
|
||||||
for (int x = 0; x < 13; x++) {
|
for (int x = 0; x < 13; x++) {
|
||||||
char tile = level[y * 13 + x];
|
char tile = level[y * 13 + x];
|
||||||
if (tile == 0)
|
//if (tile == 0)
|
||||||
continue;
|
//continue;
|
||||||
|
|
||||||
const float cs = 1.0f / 255.0f;
|
const float cs = 1.0f / 255.0f;
|
||||||
vec3 base_color = vec3(((float)pal[tile * 3 + 0]) * cs,
|
vec3 base_color = vec3(((float)pal[tile * 3 + 0]) * cs,
|
||||||
((float)pal[tile * 3 + 1]) * cs,
|
((float)pal[tile * 3 + 1]) * cs,
|
||||||
((float)pal[tile * 3 + 2]) * cs);
|
((float)pal[tile * 3 + 2]) * cs);
|
||||||
|
|
||||||
mat4x4 rx = rotate_x(PI / 2.0f);
|
mat4x4 rx = rotate_x(-PI / 2.0f);
|
||||||
//mat4x4 p = perspective(-1, 1, 0, 1);
|
mat4x4 t = translate(vec3(x * 4.0f, -y * 2.0f, 0.0f));
|
||||||
mat4x4 s = scale(vec3(1.0f / 12.0f,
|
|
||||||
1.0f / 27.0f,
|
|
||||||
1.0f / 27.0f));
|
|
||||||
|
|
||||||
mat4x4 t = translate(vec3(px(x), py(y), 0.0));
|
mat4x4 trans = a * t * rx;
|
||||||
|
|
||||||
mat4x4 trans = a * t * rx * s;
|
vec4 res = collision(t * rx,
|
||||||
|
vec3(state->ball_x * 4.0f, -state->ball_y * 2.0f, 0),
|
||||||
|
vec3(0, 0, 0));
|
||||||
|
bool collision = res.w == 1.0f;
|
||||||
|
if (collision) {
|
||||||
|
//vec3 normal = vec3(res.x, res.y, res.z);
|
||||||
|
base_color = vec3(1, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
//mat3x3 normal_trans = transpose(inverse(submatrix(trans, 0, 0)));
|
//mat3x3 normal_trans = transpose(inverse(submatrix(trans, 0, 0)));
|
||||||
mat3x3 normal_trans = submatrix(rx, 3, 3);
|
mat3x3 normal_trans = submatrix(rx, 3, 3);
|
||||||
@ -169,16 +180,10 @@ void render(mesh paddle_mesh,
|
|||||||
|
|
||||||
{
|
{
|
||||||
mat4x4 rx = rotate_y(PI / 2.0f);
|
mat4x4 rx = rotate_y(PI / 2.0f);
|
||||||
mat4x4 s = scale(1.0f / 12.0f);
|
|
||||||
/*
|
|
||||||
mat4x4 s = scale(vec3(1.0f,
|
|
||||||
1.3f,
|
|
||||||
1.5f));
|
|
||||||
*/
|
|
||||||
|
|
||||||
mat4x4 t = translate(vec3(px(paddle_x), py(26), 0.0));
|
mat4x4 t = translate(vec3(state->paddle_x * 4.0f, -state->paddle_y * 2.0f, 0.0));
|
||||||
|
|
||||||
mat4x4 trans = a * t * rx * s;
|
mat4x4 trans = a * t * rx;
|
||||||
mat3x3 normal_trans = submatrix(rx, 3, 3);
|
mat3x3 normal_trans = submatrix(rx, 3, 3);
|
||||||
//vec3 base_color = vec3(1, 1, 1);
|
//vec3 base_color = vec3(1, 1, 1);
|
||||||
vec3 base_color = vec3(1, 1, 1) * 0.5f;
|
vec3 base_color = vec3(1, 1, 1) * 0.5f;
|
||||||
@ -226,10 +231,9 @@ void render(mesh paddle_mesh,
|
|||||||
|
|
||||||
{
|
{
|
||||||
mat4x4 rx = rotate_y(PI / 2.0f);
|
mat4x4 rx = rotate_y(PI / 2.0f);
|
||||||
mat4x4 s = scale(1.0f / 27.0f);
|
mat4x4 t = translate(vec3(state->ball_x * 4.0f, -state->ball_y * 2.0f, 0.0));
|
||||||
mat4x4 t = translate(vec3(px(paddle_x), py(25), 0.0));
|
|
||||||
|
|
||||||
mat4x4 trans = a * t * rx * s;
|
mat4x4 trans = a * t * rx;
|
||||||
mat3x3 normal_trans = submatrix(rx, 3, 3);
|
mat3x3 normal_trans = submatrix(rx, 3, 3);
|
||||||
//vec3 base_color = vec3(1, 1, 1);
|
//vec3 base_color = vec3(1, 1, 1);
|
||||||
vec3 base_color = vec3(1, 1, 1) * 0.5f;
|
vec3 base_color = vec3(1, 1, 1) * 0.5f;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user