Merge remote-tracking branch 'origin/main' into SP3-15-Tools
This commit is contained in:
commit
b164e95b12
|
@ -0,0 +1,5 @@
|
||||||
|
root = true
|
||||||
|
|
||||||
|
[*.{c,cpp,h,hpp}]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
|
@ -0,0 +1,27 @@
|
||||||
|
---
|
||||||
|
name: Bug report
|
||||||
|
about: Report a bug that should be fixed
|
||||||
|
title: ''
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Describe the bug**
|
||||||
|
A clear and concise description of what the bug is.
|
||||||
|
|
||||||
|
**To Reproduce**
|
||||||
|
Steps to reproduce the behavior:
|
||||||
|
1. Go to '...'
|
||||||
|
2. Click on '....'
|
||||||
|
3. Scroll down to '....'
|
||||||
|
4. See error
|
||||||
|
|
||||||
|
**Expected behavior**
|
||||||
|
A clear and concise description of what you expected to happen.
|
||||||
|
|
||||||
|
**Screenshots**
|
||||||
|
If applicable, add screenshots to help explain your problem.
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context about the problem here.
|
|
@ -0,0 +1,20 @@
|
||||||
|
---
|
||||||
|
name: Feature request
|
||||||
|
about: Suggest a feature for the project
|
||||||
|
title: ''
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Is your feature request related to a problem? Please describe.**
|
||||||
|
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||||
|
|
||||||
|
**Describe the solution you'd like**
|
||||||
|
A clear and concise description of what you want to happen.
|
||||||
|
|
||||||
|
**Describe alternatives you've considered**
|
||||||
|
A clear and concise description of any alternative solutions or features you've considered.
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context or screenshots about the feature request here.
|
|
@ -31,6 +31,7 @@ x86/
|
||||||
bld/
|
bld/
|
||||||
[Bb]in/
|
[Bb]in/
|
||||||
[Bb]in-int/
|
[Bb]in-int/
|
||||||
|
[Bb]in_int/
|
||||||
[Oo]bj/
|
[Oo]bj/
|
||||||
[Ll]og/
|
[Ll]og/
|
||||||
[Ll]ogs/
|
[Ll]ogs/
|
||||||
|
@ -353,4 +354,13 @@ MigrationBackup/
|
||||||
# Ionide (cross platform F# VS Code tools) working folder
|
# Ionide (cross platform F# VS Code tools) working folder
|
||||||
.ionide/
|
.ionide/
|
||||||
|
|
||||||
|
# Generated Files
|
||||||
[Dd]ependencies/
|
[Dd]ependencies/
|
||||||
|
*.vcxproj
|
||||||
|
*.vcxproj.filters
|
||||||
|
*.sln
|
||||||
|
*.csproj
|
||||||
|
|
||||||
|
*.filters
|
||||||
|
|
||||||
|
Assets/Editor/Layouts/UserLayout.ini
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
Start in Fullscreen: false
|
||||||
|
Starting Scene ID: 94283040
|
||||||
|
Window Size: {x: 1920, y: 1080}
|
||||||
|
Window Title: SHADE Engine
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,121 @@
|
||||||
|
[Window][MainStatusBar]
|
||||||
|
Pos=0,1007
|
||||||
|
Size=1920,20
|
||||||
|
Collapsed=0
|
||||||
|
|
||||||
|
[Window][SHEditorMenuBar]
|
||||||
|
Pos=0,48
|
||||||
|
Size=1920,959
|
||||||
|
Collapsed=0
|
||||||
|
|
||||||
|
[Window][Hierarchy Panel]
|
||||||
|
Pos=0,189
|
||||||
|
Size=308,818
|
||||||
|
Collapsed=0
|
||||||
|
DockId=0x00000004,0
|
||||||
|
|
||||||
|
[Window][Debug##Default]
|
||||||
|
Pos=60,60
|
||||||
|
Size=400,400
|
||||||
|
Collapsed=0
|
||||||
|
|
||||||
|
[Window][Inspector]
|
||||||
|
Pos=1528,48
|
||||||
|
Size=392,959
|
||||||
|
Collapsed=0
|
||||||
|
DockId=0x00000006,0
|
||||||
|
|
||||||
|
[Window][Profiler]
|
||||||
|
Pos=0,48
|
||||||
|
Size=308,139
|
||||||
|
Collapsed=0
|
||||||
|
DockId=0x00000003,0
|
||||||
|
|
||||||
|
[Window][Viewport]
|
||||||
|
Pos=227,48
|
||||||
|
Size=1457,1012
|
||||||
|
Collapsed=0
|
||||||
|
DockId=0x0000000B,0
|
||||||
|
|
||||||
|
[Window][ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌð‡Žoû]
|
||||||
|
Pos=60,60
|
||||||
|
Size=32,64
|
||||||
|
Collapsed=0
|
||||||
|
|
||||||
|
[Window][ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ]
|
||||||
|
Pos=60,60
|
||||||
|
Size=999,581
|
||||||
|
Collapsed=0
|
||||||
|
|
||||||
|
[Window][ð‡–oû]
|
||||||
|
Pos=60,60
|
||||||
|
Size=32,64
|
||||||
|
Collapsed=0
|
||||||
|
|
||||||
|
[Window][ÌÌÌÌ]
|
||||||
|
Pos=60,60
|
||||||
|
Size=553,422
|
||||||
|
Collapsed=0
|
||||||
|
|
||||||
|
[Window][]
|
||||||
|
Pos=60,60
|
||||||
|
Size=770,394
|
||||||
|
Collapsed=0
|
||||||
|
|
||||||
|
[Window][ Viewport]
|
||||||
|
Pos=227,48
|
||||||
|
Size=1457,1012
|
||||||
|
Collapsed=0
|
||||||
|
DockId=0x0000000B,0
|
||||||
|
|
||||||
|
[Window][ Viewport]
|
||||||
|
Pos=227,48
|
||||||
|
Size=1457,1012
|
||||||
|
Collapsed=0
|
||||||
|
DockId=0x0000000B,0
|
||||||
|
|
||||||
|
[Window][î<>‹ Viewport]
|
||||||
|
Pos=310,48
|
||||||
|
Size=1216,662
|
||||||
|
Collapsed=0
|
||||||
|
DockId=0x0000000B,0
|
||||||
|
|
||||||
|
[Window][V]
|
||||||
|
Pos=310,722
|
||||||
|
Size=1501,338
|
||||||
|
Collapsed=0
|
||||||
|
DockId=0x00000008,0
|
||||||
|
|
||||||
|
[Window][p›£€Ê]
|
||||||
|
Pos=310,750
|
||||||
|
Size=1501,310
|
||||||
|
Collapsed=0
|
||||||
|
DockId=0x0000000A,0
|
||||||
|
|
||||||
|
[Window][ Asset Browser]
|
||||||
|
Pos=310,712
|
||||||
|
Size=1216,295
|
||||||
|
Collapsed=0
|
||||||
|
DockId=0x0000000C,0
|
||||||
|
|
||||||
|
[Window][Material Inspector]
|
||||||
|
Pos=1528,48
|
||||||
|
Size=392,959
|
||||||
|
Collapsed=0
|
||||||
|
DockId=0x00000006,1
|
||||||
|
|
||||||
|
[Docking][Data]
|
||||||
|
DockSpace ID=0xC5C9B8AB Window=0xBE4044E9 Pos=0,71 Size=1920,959 Split=X
|
||||||
|
DockNode ID=0x00000005 Parent=0xC5C9B8AB SizeRef=1526,1036 Split=X
|
||||||
|
DockNode ID=0x00000001 Parent=0x00000005 SizeRef=308,1036 Split=Y Selected=0x1E6EB881
|
||||||
|
DockNode ID=0x00000003 Parent=0x00000001 SizeRef=225,147 Selected=0x1E6EB881
|
||||||
|
DockNode ID=0x00000004 Parent=0x00000001 SizeRef=225,863 Selected=0xE096E5AE
|
||||||
|
DockNode ID=0x00000002 Parent=0x00000005 SizeRef=1216,1036 Split=Y Selected=0xB41284E7
|
||||||
|
DockNode ID=0x00000007 Parent=0x00000002 SizeRef=1501,672 Split=Y Selected=0xB41284E7
|
||||||
|
DockNode ID=0x00000009 Parent=0x00000007 SizeRef=1501,700 Split=Y Selected=0xB41284E7
|
||||||
|
DockNode ID=0x0000000B Parent=0x00000009 SizeRef=1501,715 CentralNode=1 Selected=0xB41284E7
|
||||||
|
DockNode ID=0x0000000C Parent=0x00000009 SizeRef=1501,295 Selected=0xB128252A
|
||||||
|
DockNode ID=0x0000000A Parent=0x00000007 SizeRef=1501,310 Selected=0xD446F7B6
|
||||||
|
DockNode ID=0x00000008 Parent=0x00000002 SizeRef=1501,338 Selected=0xD9F31532
|
||||||
|
DockNode ID=0x00000006 Parent=0xC5C9B8AB SizeRef=392,1036 Selected=0xD3697FB6
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
- VertexShader: 39210065
|
||||||
|
FragmentShader: 46377769
|
||||||
|
SubPass: G-Buffer Write
|
||||||
|
Properties:
|
||||||
|
data.color: {x: 1, y: 1, z: 1, w: 1}
|
||||||
|
data.textureIndex: 58303057
|
||||||
|
data.alpha: 0
|
||||||
|
data.beta: {x: 1, y: 1, z: 1}
|
|
@ -0,0 +1,3 @@
|
||||||
|
Name: BagMaterial
|
||||||
|
ID: 123745521
|
||||||
|
Type: 7
|
|
@ -0,0 +1,8 @@
|
||||||
|
- VertexShader: 39210065
|
||||||
|
FragmentShader: 46377769
|
||||||
|
SubPass: G-Buffer Write
|
||||||
|
Properties:
|
||||||
|
data.color: {x: 1, y: 1, z: 1, w: 1}
|
||||||
|
data.textureIndex: 64651793
|
||||||
|
data.alpha: 0
|
||||||
|
data.beta: {x: 1, y: 1, z: 1}
|
|
@ -0,0 +1,3 @@
|
||||||
|
Name: TestMat
|
||||||
|
ID: 126974645
|
||||||
|
Type: 7
|
|
@ -0,0 +1,8 @@
|
||||||
|
- VertexShader: 39210065
|
||||||
|
FragmentShader: 46377769
|
||||||
|
SubPass: G-Buffer Write
|
||||||
|
Properties:
|
||||||
|
data.color: {x: 1, y: 1, z: 1, w: 1}
|
||||||
|
data.textureIndex: 0
|
||||||
|
data.alpha: 0
|
||||||
|
data.beta: {x: 1, y: 1, z: 1}
|
|
@ -0,0 +1,3 @@
|
||||||
|
Name: WhiteMat
|
||||||
|
ID: 124370424
|
||||||
|
Type: 7
|
File diff suppressed because one or more lines are too long
Binary file not shown.
|
@ -0,0 +1,55 @@
|
||||||
|
Name: HouseModular
|
||||||
|
ID: 75328301
|
||||||
|
Type: 4
|
||||||
|
Sub Assets:
|
||||||
|
Name: FloorLarge
|
||||||
|
ID: 142812576
|
||||||
|
Type: 8
|
||||||
|
Name: FloorSmall
|
||||||
|
ID: 139921228
|
||||||
|
Type: 8
|
||||||
|
Name: FloorLong
|
||||||
|
ID: 136991843
|
||||||
|
Type: 8
|
||||||
|
Name: Pillar
|
||||||
|
ID: 150352316
|
||||||
|
Type: 8
|
||||||
|
Name: WallEnd
|
||||||
|
ID: 139594893
|
||||||
|
Type: 8
|
||||||
|
Name: WallCorner
|
||||||
|
ID: 134714737
|
||||||
|
Type: 8
|
||||||
|
Name: WallDefault
|
||||||
|
ID: 140834166
|
||||||
|
Type: 8
|
||||||
|
Name: WallLarge
|
||||||
|
ID: 142689599
|
||||||
|
Type: 8
|
||||||
|
Name: WallDiagonal
|
||||||
|
ID: 144002377
|
||||||
|
Type: 8
|
||||||
|
Name: WallTBlock
|
||||||
|
ID: 149359798
|
||||||
|
Type: 8
|
||||||
|
Name: WindowLarge
|
||||||
|
ID: 148351779
|
||||||
|
Type: 8
|
||||||
|
Name: WindowSmallOpened
|
||||||
|
ID: 149786048
|
||||||
|
Type: 8
|
||||||
|
Name: WindowSmallClosed
|
||||||
|
ID: 147863396
|
||||||
|
Type: 8
|
||||||
|
Name: WindowLargeOpen
|
||||||
|
ID: 138781993
|
||||||
|
Type: 8
|
||||||
|
Name: WallDoorHole
|
||||||
|
ID: 150924328
|
||||||
|
Type: 8
|
||||||
|
Name: Door
|
||||||
|
ID: 147152385
|
||||||
|
Type: 8
|
||||||
|
Name: DoorFrame
|
||||||
|
ID: 146862321
|
||||||
|
Type: 8
|
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
|
@ -0,0 +1,10 @@
|
||||||
|
Name: racoon
|
||||||
|
ID: 77816045
|
||||||
|
Type: 4
|
||||||
|
Sub Assets:
|
||||||
|
Name: Bag
|
||||||
|
ID: 144838771
|
||||||
|
Type: 8
|
||||||
|
Name: Raccoon
|
||||||
|
ID: 149697411
|
||||||
|
Type: 8
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,3 @@
|
||||||
|
Name: RaccoonBag_Color_Ver4
|
||||||
|
ID: 58303057
|
||||||
|
Type: 3
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,3 @@
|
||||||
|
Name: RaccoonPreTexturedVer1_Base9
|
||||||
|
ID: 64651793
|
||||||
|
Type: 3
|
|
@ -0,0 +1,226 @@
|
||||||
|
- EID: 0
|
||||||
|
Name: Camera
|
||||||
|
IsActive: true
|
||||||
|
NumberOfChildren: 0
|
||||||
|
Components:
|
||||||
|
Camera Component:
|
||||||
|
Position: {x: 0, y: 0, z: 8}
|
||||||
|
Pitch: 0
|
||||||
|
Yaw: 0
|
||||||
|
Roll: 0
|
||||||
|
Width: 1920
|
||||||
|
Height: 1080
|
||||||
|
Near: 0.00999999978
|
||||||
|
Far: 10000
|
||||||
|
Perspective: true
|
||||||
|
Light Component:
|
||||||
|
Position: {x: 0, y: 0, z: 0}
|
||||||
|
Type: Directional
|
||||||
|
Direction: {x: 1.79999995, y: 0, z: 1}
|
||||||
|
Color: {x: 0.951541841, y: 0.921719015, z: 0.553319454, w: 1}
|
||||||
|
Layer: 4294967295
|
||||||
|
Strength: 0
|
||||||
|
Scripts: ~
|
||||||
|
- EID: 1
|
||||||
|
Name: Floor
|
||||||
|
IsActive: true
|
||||||
|
NumberOfChildren: 0
|
||||||
|
Components:
|
||||||
|
Transform Component:
|
||||||
|
Translate: {x: -1.440328, y: -4.41369677, z: -5}
|
||||||
|
Rotate: {x: -0, y: 0, z: -0}
|
||||||
|
Scale: {x: 49.4798889, y: 0.5, z: 17.5}
|
||||||
|
Renderable Component:
|
||||||
|
Mesh: 149697411
|
||||||
|
Material: 126974645
|
||||||
|
RigidBody Component:
|
||||||
|
Type: Static
|
||||||
|
Mass: 1
|
||||||
|
Drag: 0.00999999978
|
||||||
|
Angular Drag: 0.00999999978
|
||||||
|
Use Gravity: true
|
||||||
|
Interpolate: true
|
||||||
|
Freeze Position X: false
|
||||||
|
Freeze Position Y: false
|
||||||
|
Freeze Position Z: false
|
||||||
|
Freeze Rotation X: false
|
||||||
|
Freeze Rotation Y: false
|
||||||
|
Freeze Rotation Z: false
|
||||||
|
Collider Component:
|
||||||
|
Colliders:
|
||||||
|
- Is Trigger: false
|
||||||
|
Type: Box
|
||||||
|
Half Extents: {x: 1, y: 1, z: 1}
|
||||||
|
Friction: 0.400000006
|
||||||
|
Bounciness: 0
|
||||||
|
Density: 1
|
||||||
|
Position Offset: {x: 0, y: 0, z: 0}
|
||||||
|
Scripts: ~
|
||||||
|
- EID: 10
|
||||||
|
Name: Default
|
||||||
|
IsActive: true
|
||||||
|
NumberOfChildren: 0
|
||||||
|
Components:
|
||||||
|
Transform Component:
|
||||||
|
Translate: {x: -4.40482807, y: 2.57871056, z: -5.21213436}
|
||||||
|
Rotate: {x: -0.361265004, y: 1.11661232, z: -0.626627684}
|
||||||
|
Scale: {x: 0.999982238, y: 0.999987125, z: 0.999981165}
|
||||||
|
RigidBody Component:
|
||||||
|
Type: Dynamic
|
||||||
|
Mass: 1
|
||||||
|
Drag: 0
|
||||||
|
Angular Drag: 0
|
||||||
|
Use Gravity: true
|
||||||
|
Interpolate: true
|
||||||
|
Freeze Position X: false
|
||||||
|
Freeze Position Y: false
|
||||||
|
Freeze Position Z: false
|
||||||
|
Freeze Rotation X: false
|
||||||
|
Freeze Rotation Y: false
|
||||||
|
Freeze Rotation Z: false
|
||||||
|
Collider Component:
|
||||||
|
Colliders:
|
||||||
|
- Is Trigger: false
|
||||||
|
Type: Box
|
||||||
|
Half Extents: {x: 1, y: 1, z: 1}
|
||||||
|
Friction: 0.400000006
|
||||||
|
Bounciness: 0
|
||||||
|
Density: 1
|
||||||
|
Position Offset: {x: 0, y: 0, z: 0}
|
||||||
|
Scripts: ~
|
||||||
|
- EID: 3
|
||||||
|
Name: Empty
|
||||||
|
IsActive: true
|
||||||
|
NumberOfChildren: 0
|
||||||
|
Components:
|
||||||
|
Transform Component:
|
||||||
|
Translate: {x: -0.0094268322, y: 0, z: 0}
|
||||||
|
Rotate: {x: -0, y: 0, z: -0}
|
||||||
|
Scale: {x: 1, y: 1, z: 1}
|
||||||
|
Scripts: ~
|
||||||
|
- EID: 4
|
||||||
|
Name: Empty2
|
||||||
|
IsActive: true
|
||||||
|
NumberOfChildren: 0
|
||||||
|
Components:
|
||||||
|
Transform Component:
|
||||||
|
Translate: {x: 0, y: 0, z: 0}
|
||||||
|
Rotate: {x: 0, y: 0, z: 0}
|
||||||
|
Scale: {x: 1, y: 1, z: 1}
|
||||||
|
Scripts: ~
|
||||||
|
- EID: 9
|
||||||
|
Name: Bag
|
||||||
|
IsActive: true
|
||||||
|
NumberOfChildren: 0
|
||||||
|
Components:
|
||||||
|
Transform Component:
|
||||||
|
Translate: {x: 0, y: 0, z: 0}
|
||||||
|
Rotate: {x: 0, y: 0, z: 0}
|
||||||
|
Scale: {x: 1, y: 1, z: 1}
|
||||||
|
Renderable Component:
|
||||||
|
Mesh: 144838771
|
||||||
|
Material: 123745521
|
||||||
|
Scripts: ~
|
||||||
|
- EID: 6
|
||||||
|
Name: AI
|
||||||
|
IsActive: true
|
||||||
|
NumberOfChildren: 0
|
||||||
|
Components:
|
||||||
|
Transform Component:
|
||||||
|
Translate: {x: -8, y: -2, z: 2.5}
|
||||||
|
Rotate: {x: 0, y: 0, z: 0}
|
||||||
|
Scale: {x: 1, y: 1, z: 1}
|
||||||
|
Renderable Component:
|
||||||
|
Mesh: 149697411
|
||||||
|
Material: 126974645
|
||||||
|
RigidBody Component:
|
||||||
|
Type: Dynamic
|
||||||
|
Mass: 1
|
||||||
|
Drag: 0
|
||||||
|
Angular Drag: 0
|
||||||
|
Use Gravity: true
|
||||||
|
Interpolate: false
|
||||||
|
Freeze Position X: false
|
||||||
|
Freeze Position Y: false
|
||||||
|
Freeze Position Z: false
|
||||||
|
Freeze Rotation X: true
|
||||||
|
Freeze Rotation Y: true
|
||||||
|
Freeze Rotation Z: true
|
||||||
|
Collider Component:
|
||||||
|
Colliders:
|
||||||
|
- Is Trigger: false
|
||||||
|
Type: Box
|
||||||
|
Half Extents: {x: 0.5, y: 0.5, z: 0.5}
|
||||||
|
Friction: 0.400000006
|
||||||
|
Bounciness: 0
|
||||||
|
Density: 1
|
||||||
|
Position Offset: {x: 0, y: 0.5, z: 0}
|
||||||
|
Scripts: ~
|
||||||
|
- EID: 7
|
||||||
|
Name: BigBoi
|
||||||
|
IsActive: true
|
||||||
|
NumberOfChildren: 0
|
||||||
|
Components:
|
||||||
|
Transform Component:
|
||||||
|
Translate: {x: 0, y: -16.8647861, z: -14.039052}
|
||||||
|
Rotate: {x: -0, y: 0, z: -0}
|
||||||
|
Scale: {x: 28.1434975, y: 28.1434975, z: 28.1434975}
|
||||||
|
Renderable Component:
|
||||||
|
Mesh: 149697411
|
||||||
|
Material: 126974645
|
||||||
|
Scripts: ~
|
||||||
|
- EID: 8
|
||||||
|
Name: AmbientLight
|
||||||
|
IsActive: true
|
||||||
|
NumberOfChildren: 0
|
||||||
|
Components:
|
||||||
|
Light Component:
|
||||||
|
Position: {x: 0, y: 0, z: 0}
|
||||||
|
Type: Ambient
|
||||||
|
Direction: {x: 0, y: 0, z: 1}
|
||||||
|
Color: {x: 1, y: 1, z: 1, w: 1}
|
||||||
|
Layer: 4294967295
|
||||||
|
Strength: 0.25
|
||||||
|
Scripts: ~
|
||||||
|
- EID: 5
|
||||||
|
Name: item
|
||||||
|
IsActive: true
|
||||||
|
NumberOfChildren: 0
|
||||||
|
Components:
|
||||||
|
Transform Component:
|
||||||
|
Translate: {x: 0, y: -2, z: -5}
|
||||||
|
Rotate: {x: 0, y: 0, z: 0}
|
||||||
|
Scale: {x: 2, y: 2, z: 2}
|
||||||
|
Renderable Component:
|
||||||
|
Mesh: 144838771
|
||||||
|
Material: 123745521
|
||||||
|
RigidBody Component:
|
||||||
|
Type: Dynamic
|
||||||
|
Mass: 1
|
||||||
|
Drag: 0
|
||||||
|
Angular Drag: 0
|
||||||
|
Use Gravity: true
|
||||||
|
Interpolate: false
|
||||||
|
Freeze Position X: false
|
||||||
|
Freeze Position Y: false
|
||||||
|
Freeze Position Z: false
|
||||||
|
Freeze Rotation X: true
|
||||||
|
Freeze Rotation Y: true
|
||||||
|
Freeze Rotation Z: true
|
||||||
|
Collider Component:
|
||||||
|
Colliders:
|
||||||
|
- Is Trigger: false
|
||||||
|
Type: Box
|
||||||
|
Half Extents: {x: 1, y: 1, z: 1}
|
||||||
|
Friction: 0.400000006
|
||||||
|
Bounciness: 0
|
||||||
|
Density: 1
|
||||||
|
Position Offset: {x: 0, y: 0.5, z: 0}
|
||||||
|
- Is Trigger: true
|
||||||
|
Type: Box
|
||||||
|
Half Extents: {x: 2, y: 2, z: 2}
|
||||||
|
Friction: 0.400000006
|
||||||
|
Bounciness: 0
|
||||||
|
Density: 1
|
||||||
|
Position Offset: {x: 0, y: 0.5, z: 0}
|
||||||
|
Scripts: ~
|
|
@ -0,0 +1,3 @@
|
||||||
|
Name: M2Scene
|
||||||
|
ID: 94283040
|
||||||
|
Type: 5
|
|
@ -0,0 +1,72 @@
|
||||||
|
- EID: 0
|
||||||
|
Name: Default
|
||||||
|
IsActive: true
|
||||||
|
NumberOfChildren: 0
|
||||||
|
Components:
|
||||||
|
Transform Component:
|
||||||
|
Translate: {x: 0, y: 0.304069757, z: 1.73034382}
|
||||||
|
Rotate: {x: 0, y: 0, z: 0}
|
||||||
|
Scale: {x: 1, y: 1, z: 1}
|
||||||
|
Camera Component:
|
||||||
|
Position: {x: 0, y: 0.304069757, z: 1.73034382}
|
||||||
|
Pitch: 0
|
||||||
|
Yaw: 0
|
||||||
|
Roll: 0
|
||||||
|
Width: 1200
|
||||||
|
Height: 1080
|
||||||
|
Near: 0.00999999978
|
||||||
|
Far: 10000
|
||||||
|
Perspective: true
|
||||||
|
Scripts: ~
|
||||||
|
- EID: 1
|
||||||
|
Name: Raccoon
|
||||||
|
IsActive: true
|
||||||
|
NumberOfChildren: 1
|
||||||
|
Components:
|
||||||
|
Transform Component:
|
||||||
|
Translate: {x: 0, y: 0, z: 0}
|
||||||
|
Rotate: {x: 0, y: 0, z: 0}
|
||||||
|
Scale: {x: 1, y: 1, z: 1}
|
||||||
|
Renderable Component:
|
||||||
|
Mesh: 149697411
|
||||||
|
Material: 126974645
|
||||||
|
Scripts: ~
|
||||||
|
- EID: 3
|
||||||
|
Name: Bag
|
||||||
|
IsActive: true
|
||||||
|
NumberOfChildren: 0
|
||||||
|
Components:
|
||||||
|
Transform Component:
|
||||||
|
Translate: {x: 0.006237939, y: -0.000393368304, z: 0}
|
||||||
|
Rotate: {x: -0, y: 2.79945588, z: 0}
|
||||||
|
Scale: {x: 1.0000881, y: 1, z: 1.0000881}
|
||||||
|
Renderable Component:
|
||||||
|
Mesh: 144838771
|
||||||
|
Material: 123745521
|
||||||
|
Scripts: ~
|
||||||
|
- EID: 2
|
||||||
|
Name: DirectionalLight
|
||||||
|
IsActive: true
|
||||||
|
NumberOfChildren: 0
|
||||||
|
Components:
|
||||||
|
Light Component:
|
||||||
|
Position: {x: 0, y: 0, z: 0}
|
||||||
|
Type: Directional
|
||||||
|
Direction: {x: 0, y: 0, z: 1}
|
||||||
|
Color: {x: 1, y: 1, z: 1, w: 1}
|
||||||
|
Layer: 4294967295
|
||||||
|
Strength: 0
|
||||||
|
Scripts: ~
|
||||||
|
- EID: 4
|
||||||
|
Name: AmbientLight
|
||||||
|
IsActive: true
|
||||||
|
NumberOfChildren: 0
|
||||||
|
Components:
|
||||||
|
Light Component:
|
||||||
|
Position: {x: 0, y: 0, z: 0}
|
||||||
|
Type: Ambient
|
||||||
|
Direction: {x: 0, y: 0, z: 1}
|
||||||
|
Color: {x: 1, y: 1, z: 1, w: 1}
|
||||||
|
Layer: 4294967295
|
||||||
|
Strength: 0.600000024
|
||||||
|
Scripts: ~
|
|
@ -0,0 +1,3 @@
|
||||||
|
Name: Scene2
|
||||||
|
ID: 87285316
|
||||||
|
Type: 5
|
|
@ -0,0 +1,183 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Security.Cryptography.X509Certificates;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using SHADE;
|
||||||
|
|
||||||
|
public class AIPrototype : Script
|
||||||
|
{
|
||||||
|
//This object's relevant components
|
||||||
|
private Transform transform;
|
||||||
|
private RigidBody rb;
|
||||||
|
|
||||||
|
/*[SerializeField]
|
||||||
|
[Tooltip("The list of waypoints that the object will move around on")]
|
||||||
|
private Vector3[] waypoints;*/
|
||||||
|
|
||||||
|
private Vector3[] waypoints = { new Vector3(-8.0f, -2.0f, 3.5f), new Vector3(-8.0f, -2.0f, -13.0f), new Vector3(8.0f, -2.0f, -13.0f), new Vector3(8.0f, -2.0f, 3.5f) };
|
||||||
|
|
||||||
|
[SerializeField]
|
||||||
|
[Tooltip("How much force is applied in movement")]
|
||||||
|
private float movementForceMultiplier = 100.0f;
|
||||||
|
|
||||||
|
[SerializeField]
|
||||||
|
[Tooltip("How fast the object moves about waypoints")]
|
||||||
|
private float patrolSpeed = 0.4f;
|
||||||
|
|
||||||
|
[SerializeField]
|
||||||
|
[Tooltip("How fast the object moves while chasing")]
|
||||||
|
private float chaseSpeed = 0.8f;
|
||||||
|
|
||||||
|
[SerializeField]
|
||||||
|
[Tooltip("How near the player must be to the AI for capture")]
|
||||||
|
private float distanceToCapture = 1.2f;
|
||||||
|
|
||||||
|
[SerializeField]
|
||||||
|
[Tooltip("How near the player must be for the chase to begin. Should be less than distanceToEndChase")]
|
||||||
|
private float distanceToStartChase = 2.0f;
|
||||||
|
|
||||||
|
[SerializeField]
|
||||||
|
[Tooltip("How far the player must be for the chase to end. Should be greater than distanceToStartChase")]
|
||||||
|
private float distanceToEndChase = 2.5f;
|
||||||
|
|
||||||
|
//Whether the AI is chasing or not
|
||||||
|
private bool chaseMode;
|
||||||
|
|
||||||
|
//To cycle depending on the length of waypoints
|
||||||
|
private int currentTargetWaypointIndex;
|
||||||
|
|
||||||
|
private GameObject? player;
|
||||||
|
|
||||||
|
|
||||||
|
protected override void awake()
|
||||||
|
{
|
||||||
|
transform = GetComponent<Transform>();
|
||||||
|
if (transform == null)
|
||||||
|
{
|
||||||
|
Debug.LogError("Transform is NULL!");
|
||||||
|
}
|
||||||
|
|
||||||
|
rb = GetComponent<RigidBody>();
|
||||||
|
if (rb == null)
|
||||||
|
{
|
||||||
|
Debug.LogError("Rigidbody is NULL!");
|
||||||
|
}
|
||||||
|
|
||||||
|
currentTargetWaypointIndex = 0;
|
||||||
|
|
||||||
|
player = GameObject.Find("Player");
|
||||||
|
if (player == null)
|
||||||
|
{
|
||||||
|
Debug.LogError("Player is NULL!");
|
||||||
|
}
|
||||||
|
|
||||||
|
chaseMode = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void fixedUpdate()
|
||||||
|
{
|
||||||
|
//Patrolling
|
||||||
|
if (!chaseMode)
|
||||||
|
{
|
||||||
|
//Head towards the next target
|
||||||
|
Vector3 normalisedDifference = waypoints[currentTargetWaypointIndex] - transform.GlobalPosition;
|
||||||
|
normalisedDifference /= normalisedDifference.GetMagnitude();
|
||||||
|
|
||||||
|
//transform.GlobalPosition += normalisedDifference * moveSpeed * (float)Time.DeltaTime;
|
||||||
|
//rb.LinearVelocity = normalisedDifference * patrolSpeed;
|
||||||
|
|
||||||
|
//ORIGINAL INTENDED CODE
|
||||||
|
/*rb.AddForce(new Vector3(normalisedDifference.x, 0.0f, normalisedDifference.z) * movementForceMultiplier);
|
||||||
|
float currentSpeed = MathF.Sqrt(rb.LinearVelocity.x * rb.LinearVelocity.x + rb.LinearVelocity.z * rb.LinearVelocity.z);
|
||||||
|
if (currentSpeed > patrolSpeed)
|
||||||
|
{
|
||||||
|
float adjustmentFactor = patrolSpeed / currentSpeed;
|
||||||
|
Vector3 adjustedVelocity = rb.LinearVelocity;
|
||||||
|
//adjustedVelocity *= adjustmentFactor;
|
||||||
|
adjustedVelocity.x = patrolSpeed;
|
||||||
|
adjustedVelocity.z = patrolSpeed;
|
||||||
|
rb.LinearVelocity = adjustedVelocity;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
//TODO delete this when original intended code above works with velocity being limited correctly
|
||||||
|
rb.LinearVelocity = normalisedDifference * patrolSpeed;
|
||||||
|
|
||||||
|
//transform.GlobalRotation.SetLookRotation(waypoints[currentTargetWaypointIndex], Vector3.Up);
|
||||||
|
|
||||||
|
//Cycle to next waypoint if near enough current waypoint
|
||||||
|
if ((waypoints[currentTargetWaypointIndex] - transform.GlobalPosition).GetSqrMagnitude() <= 0.5f)
|
||||||
|
{
|
||||||
|
++currentTargetWaypointIndex;
|
||||||
|
if (currentTargetWaypointIndex >= waypoints.Length)
|
||||||
|
{
|
||||||
|
currentTargetWaypointIndex = 0; //Recycle
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Go chase if near enough to player
|
||||||
|
if (player != null)
|
||||||
|
{
|
||||||
|
Transform pTransform = player.GetValueOrDefault().GetComponent<Transform>();
|
||||||
|
if ((pTransform.GlobalPosition - transform.GlobalPosition).GetMagnitude() <= distanceToStartChase)
|
||||||
|
{
|
||||||
|
//Start the chase
|
||||||
|
chaseMode = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else //Chasing
|
||||||
|
{
|
||||||
|
if (player != null)
|
||||||
|
{
|
||||||
|
Transform pTransform = player.GetValueOrDefault().GetComponent<Transform>();
|
||||||
|
|
||||||
|
//Chase the player
|
||||||
|
Vector3 normalisedDifference = pTransform.GlobalPosition - transform.GlobalPosition;
|
||||||
|
normalisedDifference /= normalisedDifference.GetMagnitude();
|
||||||
|
|
||||||
|
//transform.GlobalPosition += normalisedDifference * moveSpeed * (float)Time.DeltaTime;
|
||||||
|
|
||||||
|
//ORIGINAL INTENDED CODE
|
||||||
|
/*rb.AddForce(new Vector3(normalisedDifference.x, 0.0f, normalisedDifference.z) * movementForceMultiplier);
|
||||||
|
float currentSpeed = MathF.Sqrt(rb.LinearVelocity.x * rb.LinearVelocity.x + rb.LinearVelocity.z * rb.LinearVelocity.z);
|
||||||
|
if (currentSpeed > chaseSpeed)
|
||||||
|
{
|
||||||
|
float adjustmentFactor = chaseSpeed / currentSpeed;
|
||||||
|
Vector3 adjustedVelocity = rb.LinearVelocity;
|
||||||
|
adjustedVelocity *= adjustmentFactor;
|
||||||
|
rb.LinearVelocity = adjustedVelocity;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
//TODO delete this when original intended code above works with velocity being limited correctly
|
||||||
|
rb.LinearVelocity = normalisedDifference * chaseSpeed;
|
||||||
|
|
||||||
|
//Capture player if near enough
|
||||||
|
if ((pTransform.GlobalPosition - transform.GlobalPosition).GetMagnitude() <= distanceToCapture)
|
||||||
|
{
|
||||||
|
player.GetValueOrDefault().GetScript<PlayerController>().currentState = PlayerController.RaccoonStates.CAUGHT;
|
||||||
|
}
|
||||||
|
|
||||||
|
//End chase if too far
|
||||||
|
if ((pTransform.GlobalPosition - transform.GlobalPosition).GetMagnitude() >= distanceToEndChase)
|
||||||
|
{
|
||||||
|
//Stop the chase
|
||||||
|
chaseMode = false;
|
||||||
|
|
||||||
|
//Find the nearest waypoint to go instead
|
||||||
|
float nearestWaypointDistance = 99999999999999.9f;
|
||||||
|
for (int i = 0; i < waypoints.Length; ++i)
|
||||||
|
{
|
||||||
|
if ((waypoints[i] - transform.GlobalPosition).GetSqrMagnitude() < nearestWaypointDistance)
|
||||||
|
{
|
||||||
|
nearestWaypointDistance = waypoints[i].GetSqrMagnitude();
|
||||||
|
currentTargetWaypointIndex = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
Name: AIPrototype
|
||||||
|
ID: 163215061
|
||||||
|
Type: 9
|
|
@ -0,0 +1,21 @@
|
||||||
|
using System;
|
||||||
|
using SHADE;
|
||||||
|
|
||||||
|
namespace SHADE_Scripting
|
||||||
|
{
|
||||||
|
public class CameraControl :Script
|
||||||
|
{
|
||||||
|
public float turnSpeed = 0.5f;
|
||||||
|
|
||||||
|
protected override void update()
|
||||||
|
{
|
||||||
|
//Camera
|
||||||
|
Camera cam = GetComponent<Camera>();
|
||||||
|
Vector2 mouseVel = Input.GetMouseVelocity();
|
||||||
|
|
||||||
|
cam.Pitch -= mouseVel.y * turnSpeed * (float)Time.DeltaTime;
|
||||||
|
cam.Yaw += mouseVel.x * turnSpeed * (float)Time.DeltaTime;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
Name: CameraControl
|
||||||
|
ID: 158782344
|
||||||
|
Type: 9
|
|
@ -0,0 +1,23 @@
|
||||||
|
using SHADE;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
public class CameraFix : Script
|
||||||
|
{
|
||||||
|
|
||||||
|
private Transform tranform;
|
||||||
|
public Vector3 pos = Vector3.Zero;
|
||||||
|
public Vector3 rot = Vector3.Zero;
|
||||||
|
protected override void awake()
|
||||||
|
{
|
||||||
|
tranform = GetComponent<Transform>();
|
||||||
|
if (tranform == null)
|
||||||
|
Debug.LogError("tranform is NULL!");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tranform.LocalPosition = pos;
|
||||||
|
tranform.LocalEulerAngles = rot;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
Name: CameraFix
|
||||||
|
ID: 162231964
|
||||||
|
Type: 9
|
|
@ -0,0 +1,17 @@
|
||||||
|
using SHADE;
|
||||||
|
using System;
|
||||||
|
public class Item : Script
|
||||||
|
{
|
||||||
|
public enum ItemCategory
|
||||||
|
{
|
||||||
|
LIGHT,
|
||||||
|
MEDIUM,
|
||||||
|
HEAVY
|
||||||
|
}
|
||||||
|
|
||||||
|
public ItemCategory currCategory;
|
||||||
|
|
||||||
|
protected override void awake()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
Name: Item
|
||||||
|
ID: 163145289
|
||||||
|
Type: 9
|
|
@ -0,0 +1,71 @@
|
||||||
|
using SHADE;
|
||||||
|
using System;
|
||||||
|
public class PhysicsTest : Script
|
||||||
|
{
|
||||||
|
[SerializeField]
|
||||||
|
[Tooltip("Force to apply when pressing Space.")]
|
||||||
|
private Vector3 Force = new Vector3(0.0f, 200.0f, 0.0f);
|
||||||
|
private Transform Transform;
|
||||||
|
private RigidBody RigidBody;
|
||||||
|
private Collider Collider;
|
||||||
|
|
||||||
|
protected override void awake()
|
||||||
|
{
|
||||||
|
Transform = GetComponent<Transform>();
|
||||||
|
if (Transform == null)
|
||||||
|
{
|
||||||
|
Debug.LogError("Transform is NULL!");
|
||||||
|
}
|
||||||
|
RigidBody = GetComponent<RigidBody>();
|
||||||
|
if (RigidBody == null)
|
||||||
|
{
|
||||||
|
Debug.LogError("RigidBody is NULL!");
|
||||||
|
}
|
||||||
|
Collider = GetComponent<Collider>();
|
||||||
|
if (Collider == null)
|
||||||
|
{
|
||||||
|
Debug.LogError("Collider is NULL!");
|
||||||
|
}
|
||||||
|
|
||||||
|
var subColider = Collider.CollisionShapeCount;
|
||||||
|
Debug.Log($"There are {subColider} colliders.");
|
||||||
|
}
|
||||||
|
protected override void update()
|
||||||
|
{
|
||||||
|
if (Input.GetKeyUp(Input.KeyCode.Space))
|
||||||
|
{
|
||||||
|
RigidBody.AddForce(Force);
|
||||||
|
Debug.Log($"Jump!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void fixedUpdate()
|
||||||
|
{
|
||||||
|
Debug.Log("Fixed Update");
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void onCollisionEnter(CollisionInfo info)
|
||||||
|
{
|
||||||
|
Debug.Log($"Collision Enter: {info.GameObject.Name}");
|
||||||
|
}
|
||||||
|
protected override void onCollisionStay(CollisionInfo info)
|
||||||
|
{
|
||||||
|
Debug.Log($"Collision Stay: {info.GameObject.Name}");
|
||||||
|
}
|
||||||
|
protected override void onCollisionExit(CollisionInfo info)
|
||||||
|
{
|
||||||
|
Debug.Log($"Collision Exit: {info.GameObject.Name}");
|
||||||
|
}
|
||||||
|
protected override void onTriggerEnter(CollisionInfo info)
|
||||||
|
{
|
||||||
|
Debug.Log($"Trigger Enter: {info.GameObject.Name}");
|
||||||
|
}
|
||||||
|
protected override void onTriggerStay(CollisionInfo info)
|
||||||
|
{
|
||||||
|
Debug.Log($"Trigger Stay: {info.GameObject.Name}");
|
||||||
|
}
|
||||||
|
protected override void onTriggerExit(CollisionInfo info)
|
||||||
|
{
|
||||||
|
Debug.Log($"Trigger Exit: {info.GameObject.Name}");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
Name: PhysicsTest
|
||||||
|
ID: 159771801
|
||||||
|
Type: 9
|
|
@ -0,0 +1,98 @@
|
||||||
|
using SHADE;
|
||||||
|
using System;
|
||||||
|
using static PlayerController;
|
||||||
|
|
||||||
|
public class PickAndThrow : Script
|
||||||
|
{
|
||||||
|
public Vector3 throwForce = new Vector3(100.0f, 200.0f, 100.0f);
|
||||||
|
public GameObject item;
|
||||||
|
private PlayerController pc;
|
||||||
|
private Camera cam;
|
||||||
|
private Transform itemTransform;
|
||||||
|
private RigidBody itemRidibody;
|
||||||
|
private Transform raccoonHoldLocation;
|
||||||
|
private float lastXDir;
|
||||||
|
private float lastZDir;
|
||||||
|
private bool inRange = false;
|
||||||
|
|
||||||
|
protected override void awake()
|
||||||
|
{
|
||||||
|
pc = GetScript<PlayerController>();
|
||||||
|
raccoonHoldLocation = GetComponentInChildren<Transform>();
|
||||||
|
if (raccoonHoldLocation == null)
|
||||||
|
Debug.Log("CHILD EMPTY");
|
||||||
|
else
|
||||||
|
raccoonHoldLocation.LocalPosition = new Vector3(0.0f, 1.0f, 0.0f);
|
||||||
|
}
|
||||||
|
protected override void update()
|
||||||
|
{
|
||||||
|
if (cam == null)
|
||||||
|
cam = GetComponentInChildren<Camera>();
|
||||||
|
else if (cam != null)
|
||||||
|
{
|
||||||
|
Vector3 camerAixs = cam.GetForward();
|
||||||
|
camerAixs.y = 0;
|
||||||
|
camerAixs.Normalise();
|
||||||
|
lastXDir = camerAixs.x;
|
||||||
|
lastZDir = camerAixs.z;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (item.GetScript<Item>() != null && itemTransform == null && itemRidibody == null)
|
||||||
|
{
|
||||||
|
itemTransform = item.GetComponent<Transform>();
|
||||||
|
if (itemTransform == null)
|
||||||
|
Debug.Log("Item transform EMPTY");
|
||||||
|
|
||||||
|
itemRidibody = item.GetComponent<RigidBody>();
|
||||||
|
if (itemRidibody == null)
|
||||||
|
Debug.Log("Item rb EMPTY");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pc != null && inRange && !pc.holdItem && Input.GetKey(Input.KeyCode.E))
|
||||||
|
pc.holdItem = true;
|
||||||
|
|
||||||
|
if (pc != null && itemRidibody != null && itemTransform != null && pc.holdItem)
|
||||||
|
{
|
||||||
|
itemTransform.LocalPosition = raccoonHoldLocation.GlobalPosition;
|
||||||
|
itemRidibody.IsGravityEnabled = false;
|
||||||
|
itemRidibody.LinearVelocity = Vector3.Zero;
|
||||||
|
itemRidibody.AngularVelocity = Vector3.Zero;
|
||||||
|
|
||||||
|
if (Input.GetMouseButtonDown(Input.MouseCode.LeftButton))
|
||||||
|
{
|
||||||
|
pc.holdItem = false;
|
||||||
|
inRange = false;
|
||||||
|
itemRidibody.IsGravityEnabled = true;
|
||||||
|
itemRidibody.AddForce(new Vector3(throwForce.x * lastXDir, throwForce.y, throwForce.z * lastZDir));
|
||||||
|
itemRidibody.LinearVelocity += pc.rb.LinearVelocity;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(!pc.holdItem && itemRidibody != null)
|
||||||
|
itemRidibody.IsGravityEnabled = true;
|
||||||
|
}
|
||||||
|
protected override void onCollisionEnter(CollisionInfo info)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
protected override void onTriggerEnter(CollisionInfo info)
|
||||||
|
{
|
||||||
|
//Debug.Log("ENTER");
|
||||||
|
if (info.GameObject.GetScript<Item>() != null && !pc.holdItem)
|
||||||
|
{
|
||||||
|
item = info.GameObject;
|
||||||
|
inRange = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
protected override void onTriggerStay(CollisionInfo info)
|
||||||
|
{
|
||||||
|
//Debug.Log("STAY");
|
||||||
|
}
|
||||||
|
protected override void onTriggerExit(CollisionInfo info)
|
||||||
|
{
|
||||||
|
//Debug.Log("EXIT");
|
||||||
|
if (info.GameObject.GetScript<Item>() != null && !pc.holdItem)
|
||||||
|
{
|
||||||
|
inRange = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
Name: PickAndThrow
|
||||||
|
ID: 165331952
|
||||||
|
Type: 9
|
|
@ -0,0 +1,358 @@
|
||||||
|
using SHADE;
|
||||||
|
using System;
|
||||||
|
using static Item;
|
||||||
|
|
||||||
|
public class PlayerController : Script
|
||||||
|
{
|
||||||
|
public enum RaccoonStates
|
||||||
|
{
|
||||||
|
IDILE,
|
||||||
|
WALKING,
|
||||||
|
RUNNING,
|
||||||
|
JUMP,
|
||||||
|
FALLING,
|
||||||
|
CAUGHT,
|
||||||
|
TOTAL
|
||||||
|
}
|
||||||
|
|
||||||
|
public RigidBody rb { get; set; }
|
||||||
|
private Transform tranform;
|
||||||
|
private Camera cam;
|
||||||
|
private PickAndThrow pat;
|
||||||
|
|
||||||
|
//to be remove
|
||||||
|
public float drag = 2.0f;
|
||||||
|
public bool holdItem { get; set; }
|
||||||
|
[SerializeField]
|
||||||
|
[Tooltip("The current state fo the raccoon")]
|
||||||
|
public RaccoonStates currentState = RaccoonStates.IDILE;
|
||||||
|
|
||||||
|
//Movement variables============================================================
|
||||||
|
[SerializeField]
|
||||||
|
[Tooltip("Max vel for walking")]
|
||||||
|
public float maxMoveVel = 2.0f;
|
||||||
|
[SerializeField]
|
||||||
|
[Tooltip("how much force is apply for walking")]
|
||||||
|
public float moveForce = 50.0f;
|
||||||
|
[SerializeField]
|
||||||
|
[Tooltip("increase the moveForce and maxMoveVel by its amt")]
|
||||||
|
public float sprintMultiplier = 2.0f;
|
||||||
|
|
||||||
|
private float oldForce;
|
||||||
|
private float maxOldVel;
|
||||||
|
private bool sprintIncreaseOnce = false;
|
||||||
|
|
||||||
|
public float xAxisMove { get; set; }
|
||||||
|
public float zAxisMove { get; set; }
|
||||||
|
|
||||||
|
public Vector2 axisMove { get; set; }
|
||||||
|
|
||||||
|
public bool isMoveKeyPress { get; set; }
|
||||||
|
|
||||||
|
[SerializeField]
|
||||||
|
[Tooltip("curr not working")]
|
||||||
|
public float rotationFactorPerFrame = 1.0f;
|
||||||
|
|
||||||
|
//Jumping vars==================================================================
|
||||||
|
[SerializeField]
|
||||||
|
[Tooltip("max height of the jump")]
|
||||||
|
public float maxJumpHeight = 4.0f;
|
||||||
|
[SerializeField]
|
||||||
|
[Tooltip("max amt of time it will take for the jump")]
|
||||||
|
public float maxJumpTime = 0.75f;
|
||||||
|
[SerializeField]
|
||||||
|
[Tooltip("increase gravity when falling")]
|
||||||
|
public float fallMultipler = 2.0f;
|
||||||
|
private float initialJumpVel;
|
||||||
|
private bool isGrounded = true;
|
||||||
|
private float gravity = -9.8f;
|
||||||
|
private float groundGravity = -0.5f;
|
||||||
|
|
||||||
|
//ItemMultipler==================================================================
|
||||||
|
public float lightMultiper = 0.75f;
|
||||||
|
public float mediumMultiper = 0.5f;
|
||||||
|
public float heavyMultiper = 0.25f;
|
||||||
|
|
||||||
|
protected override void awake()
|
||||||
|
{
|
||||||
|
//default setup
|
||||||
|
isMoveKeyPress = false;
|
||||||
|
holdItem = false;
|
||||||
|
|
||||||
|
//Jump setup
|
||||||
|
float timeToApex = maxJumpTime / 2;
|
||||||
|
gravity = (-2 * maxJumpHeight) / MathF.Pow(timeToApex, 2);
|
||||||
|
initialJumpVel = (2 * maxJumpHeight) / timeToApex;
|
||||||
|
|
||||||
|
//rigidbody check
|
||||||
|
rb = GetComponent<RigidBody>();
|
||||||
|
if (rb == null)
|
||||||
|
Debug.LogError("RigidBody is NULL!");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rb.IsGravityEnabled = false;
|
||||||
|
rb.FreezeRotationX = true;
|
||||||
|
rb.FreezeRotationY = true;
|
||||||
|
rb.FreezeRotationZ = true;
|
||||||
|
rb.Drag = drag;
|
||||||
|
rb.Interpolating = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Transform check
|
||||||
|
tranform = GetComponent<Transform>();
|
||||||
|
if(tranform == null)
|
||||||
|
Debug.LogError("tranform is NULL!");
|
||||||
|
|
||||||
|
//PickAndThrow checl
|
||||||
|
pat = GetScript<PickAndThrow>();
|
||||||
|
if (pat == null)
|
||||||
|
Debug.LogError("PickAndThrow is NULL!");
|
||||||
|
|
||||||
|
//toRemove
|
||||||
|
tranform.LocalPosition = new Vector3(-3.0f, -2.0f, -5.0f);
|
||||||
|
tranform.LocalRotation = Quaternion.Euler(0.0f, 0.0f, 0.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void update()
|
||||||
|
{
|
||||||
|
if (cam == null)
|
||||||
|
cam = GetComponentInChildren<Camera>();
|
||||||
|
|
||||||
|
//toRemove
|
||||||
|
if (Input.GetKey(Input.KeyCode.G))
|
||||||
|
{
|
||||||
|
tranform.LocalRotation = Quaternion.Euler(0.0f, 0.0f, 0.0f);
|
||||||
|
tranform.LocalPosition = new Vector3(-3.0f, -2.0f, -5.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
GotCaught();
|
||||||
|
MoveKey();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//Debug.Log(currentState.ToString() + " x:" + rb.LinearVelocity.x.ToString() + " y:" + rb.LinearVelocity.y.ToString() + " z:" + rb.LinearVelocity.z.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void fixedUpdate()
|
||||||
|
{
|
||||||
|
//Rotation();
|
||||||
|
Move();
|
||||||
|
Sprint();
|
||||||
|
Jump();
|
||||||
|
Gravity();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void MoveKey()
|
||||||
|
{
|
||||||
|
/* if (Input.GetKey(Input.KeyCode.A))
|
||||||
|
xAxisMove = -1;
|
||||||
|
else if (Input.GetKey(Input.KeyCode.D))
|
||||||
|
xAxisMove = 1;
|
||||||
|
else
|
||||||
|
xAxisMove = 0;
|
||||||
|
|
||||||
|
if (Input.GetKey(Input.KeyCode.W))
|
||||||
|
zAxisMove = -1;
|
||||||
|
else if (Input.GetKey(Input.KeyCode.S))
|
||||||
|
zAxisMove = 1;
|
||||||
|
else
|
||||||
|
zAxisMove = 0;*/
|
||||||
|
|
||||||
|
|
||||||
|
xAxisMove = 0;
|
||||||
|
zAxisMove = 0;
|
||||||
|
axisMove = Vector2.Zero;
|
||||||
|
if (Input.GetKey(Input.KeyCode.W))
|
||||||
|
{
|
||||||
|
Vector3 camerAixs = cam.GetForward();
|
||||||
|
camerAixs.y = 0;
|
||||||
|
camerAixs.Normalise();
|
||||||
|
xAxisMove = camerAixs.x;
|
||||||
|
zAxisMove = camerAixs.z;
|
||||||
|
axisMove += new Vector2(camerAixs.x, camerAixs.z);
|
||||||
|
}
|
||||||
|
if (Input.GetKey(Input.KeyCode.S))
|
||||||
|
{
|
||||||
|
Vector3 camerAixs = cam.GetForward();
|
||||||
|
camerAixs.y = 0;
|
||||||
|
camerAixs.Normalise();
|
||||||
|
xAxisMove = -camerAixs.x;
|
||||||
|
zAxisMove = -camerAixs.z;
|
||||||
|
axisMove -= new Vector2(camerAixs.x, camerAixs.z);
|
||||||
|
}
|
||||||
|
if (Input.GetKey(Input.KeyCode.A))
|
||||||
|
{
|
||||||
|
Vector3 camerAixs = cam.GetRight();
|
||||||
|
camerAixs.y = 0;
|
||||||
|
camerAixs.Normalise();
|
||||||
|
xAxisMove = -camerAixs.x;
|
||||||
|
zAxisMove = -camerAixs.z;
|
||||||
|
axisMove -= new Vector2(camerAixs.x, camerAixs.z);
|
||||||
|
}
|
||||||
|
if (Input.GetKey(Input.KeyCode.D))
|
||||||
|
{
|
||||||
|
Vector3 camerAixs = cam.GetRight();
|
||||||
|
camerAixs.y = 0;
|
||||||
|
camerAixs.Normalise();
|
||||||
|
xAxisMove = camerAixs.x;
|
||||||
|
zAxisMove = camerAixs.z;
|
||||||
|
axisMove += new Vector2(camerAixs.x, camerAixs.z);
|
||||||
|
}
|
||||||
|
axisMove.Normalise();
|
||||||
|
isMoveKeyPress = xAxisMove != 0 || zAxisMove != 0;
|
||||||
|
|
||||||
|
if(isMoveKeyPress && currentState != RaccoonStates.RUNNING && isGrounded)
|
||||||
|
currentState = RaccoonStates.WALKING;
|
||||||
|
|
||||||
|
if (!isMoveKeyPress && isGrounded)
|
||||||
|
currentState = RaccoonStates.IDILE;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Move()
|
||||||
|
{
|
||||||
|
if (rb != null)
|
||||||
|
{
|
||||||
|
rb.AddForce(new Vector3(axisMove.x, 0.0f,axisMove.y) * moveForce);
|
||||||
|
|
||||||
|
if (isMoveKeyPress)
|
||||||
|
{
|
||||||
|
if (rb.LinearVelocity.x > maxMoveVel || rb.LinearVelocity.x < -maxMoveVel)
|
||||||
|
{
|
||||||
|
Vector3 v = rb.LinearVelocity;
|
||||||
|
v.x = System.Math.Clamp(v.x, -maxMoveVel, maxMoveVel);
|
||||||
|
rb.LinearVelocity = v;
|
||||||
|
}
|
||||||
|
if (rb.LinearVelocity.z > maxMoveVel || rb.LinearVelocity.z < -maxMoveVel)
|
||||||
|
{
|
||||||
|
Vector3 v = rb.LinearVelocity;
|
||||||
|
v.z = System.Math.Clamp(v.z, -maxMoveVel, maxMoveVel);
|
||||||
|
rb.LinearVelocity = v;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Sprint()
|
||||||
|
{
|
||||||
|
if (Input.GetKey(Input.KeyCode.LeftShift) && isMoveKeyPress && isGrounded)
|
||||||
|
{
|
||||||
|
currentState = RaccoonStates.RUNNING;
|
||||||
|
holdItem = false;
|
||||||
|
if (!sprintIncreaseOnce)
|
||||||
|
{
|
||||||
|
sprintIncreaseOnce = true;
|
||||||
|
oldForce = moveForce;
|
||||||
|
moveForce *= sprintMultiplier;
|
||||||
|
|
||||||
|
maxOldVel = maxMoveVel;
|
||||||
|
maxMoveVel *= sprintMultiplier;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Input.GetKeyUp(Input.KeyCode.LeftShift))
|
||||||
|
{
|
||||||
|
if(isMoveKeyPress)
|
||||||
|
currentState = RaccoonStates.WALKING;
|
||||||
|
sprintIncreaseOnce = false;
|
||||||
|
moveForce = oldForce;
|
||||||
|
maxMoveVel = maxOldVel;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//press and hold jump
|
||||||
|
private void Jump()
|
||||||
|
{
|
||||||
|
if (currentState == RaccoonStates.WALKING || currentState == RaccoonStates.RUNNING || currentState == RaccoonStates.IDILE)
|
||||||
|
{
|
||||||
|
if (Input.GetKeyDown(Input.KeyCode.Space) && isGrounded && rb != null)
|
||||||
|
{
|
||||||
|
currentState = RaccoonStates.JUMP;
|
||||||
|
Vector3 v = rb.LinearVelocity;
|
||||||
|
v.y = initialJumpVel * 0.5f;
|
||||||
|
if (pat != null && pat.item.GetScript<Item>() != null && holdItem)
|
||||||
|
{
|
||||||
|
Item item = pat.item.GetScript<Item>();
|
||||||
|
if (item.currCategory == ItemCategory.LIGHT)
|
||||||
|
v.y *= lightMultiper;
|
||||||
|
if (item.currCategory == ItemCategory.MEDIUM)
|
||||||
|
v.y *= mediumMultiper;
|
||||||
|
if (item.currCategory == ItemCategory.HEAVY)
|
||||||
|
v.y *= heavyMultiper;
|
||||||
|
}
|
||||||
|
rb.LinearVelocity = v;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(rb != null && !isGrounded && (rb.LinearVelocity.y < 0.0f || Input.GetKeyUp(Input.KeyCode.Space)))
|
||||||
|
currentState = RaccoonStates.FALLING;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Rotation()
|
||||||
|
{
|
||||||
|
Vector3 poitionToLookAt;
|
||||||
|
poitionToLookAt.x = xAxisMove;
|
||||||
|
poitionToLookAt.y = 0.0f;
|
||||||
|
poitionToLookAt.z = zAxisMove;
|
||||||
|
|
||||||
|
if (tranform != null)
|
||||||
|
{
|
||||||
|
Quaternion currentRotation = tranform.LocalRotation;
|
||||||
|
if (currentState == RaccoonStates.WALKING || currentState == RaccoonStates.RUNNING)
|
||||||
|
{
|
||||||
|
Quaternion targetRotation = Quaternion.LookRotation(poitionToLookAt, new Vector3(0.0f, 1.0f, 0.0f));
|
||||||
|
tranform.LocalRotation = Quaternion.Slerp(currentRotation, targetRotation, rotationFactorPerFrame * (float)Time.DeltaTime);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Gravity()
|
||||||
|
{
|
||||||
|
if (rb != null)
|
||||||
|
{
|
||||||
|
//check player vel.y if its close to zero its on the ground
|
||||||
|
if (SHADE.Math.CompareFloat(rb.LinearVelocity.y, 0.0f))
|
||||||
|
isGrounded = true;
|
||||||
|
else
|
||||||
|
isGrounded = false;
|
||||||
|
|
||||||
|
Vector3 v = rb.LinearVelocity;
|
||||||
|
|
||||||
|
if (isGrounded)
|
||||||
|
v.y = groundGravity;
|
||||||
|
else if (currentState == RaccoonStates.FALLING)
|
||||||
|
{
|
||||||
|
float prevYVel = v.y;
|
||||||
|
float newYVel = v.y + (gravity * fallMultipler * (float)Time.DeltaTime);
|
||||||
|
float nextYVel = (prevYVel + newYVel) * 0.5f;
|
||||||
|
v.y = nextYVel;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
float prevYVel = v.y;
|
||||||
|
float newYVel = v.y + (gravity * (float)Time.DeltaTime);
|
||||||
|
float nextYVel = (prevYVel + newYVel) * 0.5f;
|
||||||
|
v.y = nextYVel;
|
||||||
|
}
|
||||||
|
|
||||||
|
rb.LinearVelocity = v;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void GotCaught()
|
||||||
|
{
|
||||||
|
if (currentState == RaccoonStates.CAUGHT && tranform != null)
|
||||||
|
{
|
||||||
|
currentState = RaccoonStates.IDILE;
|
||||||
|
tranform.LocalPosition = new Vector3(-3.0f, -2.0f, -5.0f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void onCollisionEnter(CollisionInfo info)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
Name: PlayerController
|
||||||
|
ID: 164563088
|
||||||
|
Type: 9
|
|
@ -0,0 +1,9 @@
|
||||||
|
using SHADE;
|
||||||
|
|
||||||
|
public class PrintWhenActive : Script
|
||||||
|
{
|
||||||
|
protected override void update()
|
||||||
|
{
|
||||||
|
Debug.Log("Active!");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
Name: PrintWhenActive
|
||||||
|
ID: 162536221
|
||||||
|
Type: 9
|
|
@ -0,0 +1,55 @@
|
||||||
|
using SHADE;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
public class RaccoonShowcase : Script
|
||||||
|
{
|
||||||
|
[SerializeField]
|
||||||
|
[Tooltip("Speed of the rotation in radians per second.")]
|
||||||
|
[Range(-1.0f, 2.0f)]
|
||||||
|
private double RotateSpeed = 1.0;
|
||||||
|
//[SerializeField]
|
||||||
|
//[Range(-5, 20)]
|
||||||
|
//private int test = 5;
|
||||||
|
[SerializeField]
|
||||||
|
[Tooltip("Speed of the scaling in radians per second around each axis.")]
|
||||||
|
private Vector3 ScaleSpeed = Vector3.One;
|
||||||
|
private Transform Transform;
|
||||||
|
private double rotation = 0.0;
|
||||||
|
private Vector3 scale = Vector3.Zero;
|
||||||
|
private double originalScale = 1.0f;
|
||||||
|
[Tooltip("Sample list of Vector3s.")]
|
||||||
|
public List<Vector3> vecList = new List<Vector3>(new Vector3[] { new Vector3(1, 2, 3), new Vector3(4, 5, 6) });
|
||||||
|
[Range(-5, 5)]
|
||||||
|
public List<int> intList = new List<int>(new int[] { 2, 8, 2, 6, 8, 0, 1 });
|
||||||
|
public List<Light.Type> enumList = new List<Light.Type>(new Light.Type[] { Light.Type.Point, Light.Type.Directional, Light.Type.Ambient });
|
||||||
|
|
||||||
|
protected override void awake()
|
||||||
|
{
|
||||||
|
Transform = GetComponent<Transform>();
|
||||||
|
if (Transform == null)
|
||||||
|
{
|
||||||
|
Debug.LogError("Transform is NULL!");
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var child in Owner)
|
||||||
|
{
|
||||||
|
Debug.Log(child.Name);
|
||||||
|
}
|
||||||
|
|
||||||
|
originalScale = Transform.LocalScale.z;
|
||||||
|
}
|
||||||
|
protected override void update()
|
||||||
|
{
|
||||||
|
//rotation += RotateSpeed * 0.16;
|
||||||
|
//scale += ScaleSpeed * 0.16;
|
||||||
|
//Transform.LocalRotation = new Vector3(0.0f, rotation, 0.0f);
|
||||||
|
//Transform.LocalScale = new Vector3(System.Math.Abs(System.Math.Sin(scale.x)) * originalScale, System.Math.Abs(System.Math.Cos(scale.y)) * originalScale, System.Math.Abs(System.Math.Sin(scale.z)) * originalScale);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void onDrawGizmos()
|
||||||
|
{
|
||||||
|
Gizmos.DrawLine(new Vector3(-1.0f, 0.0f, 0.0f), new Vector3(1.0f, 0.0f, 0.0f));
|
||||||
|
Gizmos.DrawLine(new Vector3(-1.0f, 1.0f, 0.0f), new Vector3(1.0f, 1.0f, 0.0f), Color.Red);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
Name: RaccoonShowcase
|
||||||
|
ID: 159969631
|
||||||
|
Type: 9
|
|
@ -0,0 +1,32 @@
|
||||||
|
using SHADE;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
public class RaccoonSpin : Script
|
||||||
|
{
|
||||||
|
[SerializeField]
|
||||||
|
[Tooltip("Speed of the rotation in radians per second.")]
|
||||||
|
private float RotateSpeed = 1.0f;
|
||||||
|
private float rotation = 0.0f;
|
||||||
|
[SerializeField]
|
||||||
|
private CallbackEvent emptyEvent;
|
||||||
|
[SerializeField]
|
||||||
|
private CallbackEvent<int> testEvent;
|
||||||
|
[SerializeField]
|
||||||
|
private CallbackEvent<int, double, Vector3> testEvent3 = new CallbackEvent<int, double, Vector3>();
|
||||||
|
private Transform Transform;
|
||||||
|
|
||||||
|
protected override void awake()
|
||||||
|
{
|
||||||
|
emptyEvent = new CallbackEvent();
|
||||||
|
emptyEvent.RegisterAction(() => Debug.Log("Empty event action!"));
|
||||||
|
testEvent = new CallbackEvent<int>();
|
||||||
|
Action<int> action = (x) => Debug.Log($"{x}");
|
||||||
|
testEvent.RegisterAction(action);
|
||||||
|
|
||||||
|
Transform = GetComponent<Transform>();
|
||||||
|
if (Transform == null)
|
||||||
|
{
|
||||||
|
Debug.LogError("Transform is NULL!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
Name: RaccoonSpin
|
||||||
|
ID: 157367824
|
||||||
|
Type: 9
|
|
@ -0,0 +1,60 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using SHADE;
|
||||||
|
|
||||||
|
|
||||||
|
namespace SHADE_Scripting
|
||||||
|
{
|
||||||
|
public class ThirdPersonCamera: Script
|
||||||
|
{
|
||||||
|
|
||||||
|
public float armLength = 2.0f;
|
||||||
|
public float turnSpeedPitch = 0.3f;
|
||||||
|
public float turnSpeedYaw = 0.5f;
|
||||||
|
public float pitchClamp = 45.0f;
|
||||||
|
|
||||||
|
protected override void awake()
|
||||||
|
{
|
||||||
|
AddComponent<Transform>();
|
||||||
|
|
||||||
|
if(!GetComponent<Camera>())
|
||||||
|
{
|
||||||
|
AddComponent<Camera>();
|
||||||
|
}
|
||||||
|
GetComponent<Camera>().SetMainCamera();
|
||||||
|
if (!GetComponent<CameraArm>())
|
||||||
|
{
|
||||||
|
AddComponent<CameraArm>();
|
||||||
|
}
|
||||||
|
GetComponent<CameraArm>().ArmLength = armLength;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void update()
|
||||||
|
{
|
||||||
|
if (Input.GetMouseButton(Input.MouseCode.RightButton))
|
||||||
|
{
|
||||||
|
CameraArm arm = GetComponent<CameraArm>();
|
||||||
|
if (arm)
|
||||||
|
{
|
||||||
|
Vector2 vel = Input.GetMouseVelocity();
|
||||||
|
arm.Pitch -= vel.y * turnSpeedPitch * Time.DeltaTimeF;
|
||||||
|
arm.Yaw += vel.x * turnSpeedYaw * Time.DeltaTimeF;
|
||||||
|
|
||||||
|
if (arm.Pitch > pitchClamp)
|
||||||
|
{
|
||||||
|
arm.Pitch = pitchClamp;
|
||||||
|
}
|
||||||
|
else if (arm.Pitch < 0)
|
||||||
|
{
|
||||||
|
arm.Pitch = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
Name: ThirdPersonCamera
|
||||||
|
ID: 154161201
|
||||||
|
Type: 9
|
|
@ -0,0 +1,17 @@
|
||||||
|
#version 450
|
||||||
|
#extension GL_ARB_separate_shader_objects : enable
|
||||||
|
#extension GL_ARB_shading_language_420pack : enable
|
||||||
|
#extension GL_EXT_nonuniform_qualifier : require
|
||||||
|
|
||||||
|
layout(location = 0) in struct
|
||||||
|
{
|
||||||
|
vec4 vertColor;
|
||||||
|
} In;
|
||||||
|
|
||||||
|
|
||||||
|
layout(location = 0) out vec4 outColor;
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
outColor = In.vertColor;
|
||||||
|
}
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
||||||
|
Name: DebugDraw_FS
|
||||||
|
ID: 36671027
|
||||||
|
Type: 2
|
|
@ -0,0 +1,24 @@
|
||||||
|
#version 450
|
||||||
|
#extension GL_KHR_vulkan_glsl : enable
|
||||||
|
|
||||||
|
layout(location = 0) in vec4 aVertexPos;
|
||||||
|
layout(location = 1) in vec4 aVertColor;
|
||||||
|
|
||||||
|
|
||||||
|
layout(location = 0) out struct
|
||||||
|
{
|
||||||
|
vec4 vertColor; // location 0
|
||||||
|
|
||||||
|
} Out;
|
||||||
|
|
||||||
|
layout(set = 2, binding = 0) uniform CameraData
|
||||||
|
{
|
||||||
|
vec4 position;
|
||||||
|
mat4 vpMat;
|
||||||
|
} cameraData;
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
gl_Position = cameraData.vpMat * vec4 (aVertexPos.xyz, 1.0f);
|
||||||
|
Out.vertColor = aVertColor;
|
||||||
|
}
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
||||||
|
Name: DebugDraw_VS
|
||||||
|
ID: 48002439
|
||||||
|
Type: 2
|
|
@ -0,0 +1,97 @@
|
||||||
|
#version 450
|
||||||
|
|
||||||
|
struct DirectionalLightStruct
|
||||||
|
{
|
||||||
|
vec3 direction;
|
||||||
|
uint isActive;
|
||||||
|
uint cullingMask;
|
||||||
|
vec4 diffuseColor;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct AmbientLightStruct
|
||||||
|
{
|
||||||
|
vec4 ambientColor;
|
||||||
|
float strength;
|
||||||
|
uint isActive;
|
||||||
|
uint cullingMask;
|
||||||
|
};
|
||||||
|
|
||||||
|
layout(local_size_x = 16, local_size_y = 16) in;
|
||||||
|
layout(set = 4, binding = 0, rgba32f) uniform image2D positions;
|
||||||
|
layout(set = 4, binding = 1, rgba32f) uniform image2D normals;
|
||||||
|
layout(set = 4, binding = 2, rgba8) uniform image2D albedo;
|
||||||
|
layout(set = 4, binding = 3, r32ui) uniform uimage2D lightLayerData;
|
||||||
|
layout(set = 4, binding = 4, r8) uniform image2D ssaoBlurredImage;
|
||||||
|
layout(set = 4, binding = 5, rgba8) uniform image2D targetImage;
|
||||||
|
|
||||||
|
layout(set = 1, binding = 0) uniform LightCounts
|
||||||
|
{
|
||||||
|
uint directionalLights;
|
||||||
|
uint pointLights;
|
||||||
|
uint spotLights;
|
||||||
|
uint ambientLights;
|
||||||
|
|
||||||
|
} lightCounts;
|
||||||
|
|
||||||
|
layout(std430, set = 1, binding = 1) buffer DirectionalLightData
|
||||||
|
{
|
||||||
|
DirectionalLightStruct dLightData[];
|
||||||
|
} DirLightData;
|
||||||
|
|
||||||
|
layout(std430, set = 1, binding = 4) buffer AmbientLightData
|
||||||
|
{
|
||||||
|
AmbientLightStruct aLightData[];
|
||||||
|
} AmbLightData;
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
// convenient variables
|
||||||
|
ivec2 globalThread = ivec2(gl_GlobalInvocationID);
|
||||||
|
|
||||||
|
// Get the diffuse color of the pixel
|
||||||
|
vec3 pixelDiffuse = imageLoad (albedo, globalThread).rgb;
|
||||||
|
|
||||||
|
// Get position of fragment in world space
|
||||||
|
vec3 positionView = imageLoad (positions, globalThread).rgb;
|
||||||
|
|
||||||
|
// normal of fragment
|
||||||
|
vec3 normalView = imageLoad(normals, globalThread).rgb;
|
||||||
|
|
||||||
|
// light layer index
|
||||||
|
uint lightLayer = imageLoad (lightLayerData, globalThread).r;
|
||||||
|
|
||||||
|
vec3 fragColor = vec3 (0.0f);
|
||||||
|
|
||||||
|
for (int i = 0; i < lightCounts.directionalLights; ++i)
|
||||||
|
{
|
||||||
|
if ((lightLayer & DirLightData.dLightData[i].cullingMask) != 0)
|
||||||
|
{
|
||||||
|
// get normalized direction of light
|
||||||
|
vec3 dLightNormalized = normalize (DirLightData.dLightData[i].direction);
|
||||||
|
|
||||||
|
// Get diffuse strength
|
||||||
|
float diffuseStrength = max (0, dot (dLightNormalized, normalView));
|
||||||
|
|
||||||
|
// Calculate the fragment color
|
||||||
|
fragColor += DirLightData.dLightData[i].diffuseColor.rgb * diffuseStrength.rrr * pixelDiffuse;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < lightCounts.ambientLights; ++i)
|
||||||
|
{
|
||||||
|
if ((lightLayer & AmbLightData.aLightData[i].cullingMask) != 0)
|
||||||
|
{
|
||||||
|
// Just do some add
|
||||||
|
//fragColor += pixelDiffuse.rgb * AmbLightData.aLightData[i].ambientColor.rgb * vec3 (0.5f);
|
||||||
|
fragColor += pixelDiffuse.rgb * AmbLightData.aLightData[i].ambientColor.rgb * vec3 (AmbLightData.aLightData[i].strength);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
float ssaoVal = imageLoad (ssaoBlurredImage, globalThread).r;
|
||||||
|
fragColor *= ssaoVal;
|
||||||
|
|
||||||
|
// store result into result image
|
||||||
|
imageStore(targetImage, ivec2(gl_GlobalInvocationID.xy), vec4(fragColor.rgb, 1.0f));
|
||||||
|
//imageStore(targetImage, ivec2(gl_GlobalInvocationID.xy), vec4(ssaoVal.rrr, 1.0f));
|
||||||
|
|
||||||
|
}
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
||||||
|
Name: DeferredComposite_CS
|
||||||
|
ID: 45072428
|
||||||
|
Type: 2
|
|
@ -0,0 +1,167 @@
|
||||||
|
//#version 450
|
||||||
|
//
|
||||||
|
//layout(local_size_x = 16, local_size_y = 16) in;
|
||||||
|
//layout(set = 4, binding = 0, rgba8) uniform image2D targetImage;
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//void main()
|
||||||
|
//{
|
||||||
|
// ivec2 imageSize = imageSize (targetImage);
|
||||||
|
//
|
||||||
|
// if (gl_GlobalInvocationID.x >= imageSize.x && gl_GlobalInvocationID.y >= imageSize.y)
|
||||||
|
// return;
|
||||||
|
//
|
||||||
|
// // load the image
|
||||||
|
// vec4 color = imageLoad (targetImage, ivec2 (gl_GlobalInvocationID));
|
||||||
|
//
|
||||||
|
// // get the average
|
||||||
|
// float average = 0.2126 * color.r + 0.7152 * color.g + 0.0722 * color.b;
|
||||||
|
//
|
||||||
|
// // store result into result image
|
||||||
|
// imageStore(targetImage, ivec2(gl_GlobalInvocationID), vec4(average, average, average, 1.0f));
|
||||||
|
//
|
||||||
|
//}
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
|
||||||
|
/* Start Header *****************************************************************/
|
||||||
|
|
||||||
|
/*! \file (e.g. kirsch.comp)
|
||||||
|
|
||||||
|
\author William Zheng, william.zheng, 60001906. Brandon Mak, brandon.hao 390003920.
|
||||||
|
|
||||||
|
\par william.zheng\@digipen.edu. brandon.hao\@digipen.edu.
|
||||||
|
|
||||||
|
\date Sept 20, 2022
|
||||||
|
|
||||||
|
\brief Copyright (C) 20xx DigiPen Institute of Technology.
|
||||||
|
|
||||||
|
Reproduction or disclosure of this file or its contents without the prior written consent of DigiPen Institute of Technology is prohibited. */
|
||||||
|
|
||||||
|
/* End Header *******************************************************************/
|
||||||
|
|
||||||
|
#version 450
|
||||||
|
|
||||||
|
#define MASK_WIDTH 3
|
||||||
|
#define HALF_M_WIDTH MASK_WIDTH / 2
|
||||||
|
#define SHM_WIDTH 18
|
||||||
|
#define NUM_MASKS 8
|
||||||
|
|
||||||
|
layout(local_size_x = 16, local_size_y = 16) in;
|
||||||
|
layout(set = 4, binding = 0, rgba8) uniform image2D inputImage;
|
||||||
|
layout(set = 4, binding = 1, rgba8) uniform image2D resultImage;
|
||||||
|
|
||||||
|
const float kirsch[8][3][3] = {
|
||||||
|
{
|
||||||
|
{5, 5, 5},
|
||||||
|
{-3, 0, -3}, /*rotation 1 */
|
||||||
|
{-3, -3, -3}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{5, 5, -3},
|
||||||
|
{5, 0, -3}, /*rotation 2 */
|
||||||
|
{-3, -3, -3}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{5, -3, -3},
|
||||||
|
{5, 0, -3}, /*rotation 3 */
|
||||||
|
{5, -3, -3}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{-3, -3, -3},
|
||||||
|
{5, 0, -3}, /*rotation 4 */
|
||||||
|
{5, 5, -3}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{-3, -3, -3},
|
||||||
|
{-3, 0, -3}, /*rotation 5 */
|
||||||
|
{5, 5, 5}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{-3, -3, -3},
|
||||||
|
{-3, 0, 5}, /*rotation 6 */
|
||||||
|
{-3, 5, 5}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{-3, -3, 5},
|
||||||
|
{-3, 0, 5}, /*rotation 7 */
|
||||||
|
{-3, -3, 5}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{-3, 5, 5},
|
||||||
|
{-3, 0, 5}, /*rotation 8 */
|
||||||
|
{-3, -3, -3}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
vec3 GetImageValues(ivec2 uv, ivec2 inputImageSize)
|
||||||
|
{
|
||||||
|
if (uv.x >= 0 && uv.y >= 0 && uv.x < inputImageSize.x && uv.y < inputImageSize.y)
|
||||||
|
{
|
||||||
|
return imageLoad(inputImage, uv).rgb;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return vec3(0.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
//two extra row/col
|
||||||
|
shared vec3 sData[16 + 2][16 + 2];
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
// convenient variables
|
||||||
|
ivec3 globalThread = ivec3(gl_GlobalInvocationID);
|
||||||
|
ivec3 localThread = ivec3(gl_LocalInvocationID);
|
||||||
|
ivec2 inputImageSize = imageSize(inputImage);
|
||||||
|
|
||||||
|
// load shared memory
|
||||||
|
ivec2 start = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize) - ivec2(HALF_M_WIDTH);
|
||||||
|
for (int i = localThread.x; i < SHM_WIDTH; i += int(gl_WorkGroupSize.x))
|
||||||
|
{
|
||||||
|
for (int j = localThread.y; j < SHM_WIDTH; j += int(gl_WorkGroupSize.y))
|
||||||
|
{
|
||||||
|
// get from source image (either real values or 0)
|
||||||
|
vec3 sourceValue = GetImageValues(start + ivec2(i, j), inputImageSize);
|
||||||
|
sData[i][j] = sourceValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// wait for shared memory to finish loading
|
||||||
|
barrier();
|
||||||
|
|
||||||
|
// max (between all 8 masks)
|
||||||
|
vec3 maxSum = vec3(0.0f);
|
||||||
|
|
||||||
|
// loop through all masks
|
||||||
|
for (int i = 0; i < NUM_MASKS; ++i)
|
||||||
|
{
|
||||||
|
vec3 sum = vec3(0.0f);
|
||||||
|
|
||||||
|
// start of shared memory
|
||||||
|
ivec2 shmStart = ivec2(localThread + HALF_M_WIDTH);
|
||||||
|
for (int j = -1; j < HALF_M_WIDTH + 1; ++j)
|
||||||
|
{
|
||||||
|
for (int k = -1; k < HALF_M_WIDTH + 1; ++k)
|
||||||
|
{
|
||||||
|
// Perform convolution using shared_memory
|
||||||
|
sum += sData[shmStart.x + j][shmStart.y + k] * kirsch[i][j + 1][k + 1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get highest sum
|
||||||
|
maxSum = max(sum, maxSum);
|
||||||
|
}
|
||||||
|
|
||||||
|
// average the max sum
|
||||||
|
maxSum = min(max(maxSum / 8, 0), 1.0f);
|
||||||
|
|
||||||
|
// store result into result image
|
||||||
|
imageStore(resultImage, ivec2(gl_GlobalInvocationID.xy), vec4(maxSum, 1.0f));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
||||||
|
Name: Kirsch_CS
|
||||||
|
ID: 39301863
|
||||||
|
Type: 2
|
|
@ -0,0 +1,67 @@
|
||||||
|
//#version 450
|
||||||
|
//
|
||||||
|
//layout(local_size_x = 16, local_size_y = 16) in;
|
||||||
|
//layout(set = 4, binding = 0, rgba8) uniform image2D targetImage;
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//void main()
|
||||||
|
//{
|
||||||
|
// ivec2 imageSize = imageSize (targetImage);
|
||||||
|
//
|
||||||
|
// if (gl_GlobalInvocationID.x >= imageSize.x && gl_GlobalInvocationID.y >= imageSize.y)
|
||||||
|
// return;
|
||||||
|
//
|
||||||
|
// // load the image
|
||||||
|
// vec4 color = imageLoad (targetImage, ivec2 (gl_GlobalInvocationID));
|
||||||
|
//
|
||||||
|
// // get the average
|
||||||
|
// float average = 0.2126 * color.r + 0.7152 * color.g + 0.0722 * color.b;
|
||||||
|
//
|
||||||
|
// // store result into result image
|
||||||
|
// imageStore(targetImage, ivec2(gl_GlobalInvocationID), vec4(average, average, average, 1.0f));
|
||||||
|
//
|
||||||
|
//}
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
|
||||||
|
/* Start Header *****************************************************************/
|
||||||
|
|
||||||
|
/*! \file (e.g. kirsch.comp)
|
||||||
|
|
||||||
|
\author William Zheng, william.zheng, 60001906. Brandon Mak, brandon.hao 390003920.
|
||||||
|
|
||||||
|
\par william.zheng\@digipen.edu. brandon.hao\@digipen.edu.
|
||||||
|
|
||||||
|
\date Sept 20, 2022
|
||||||
|
|
||||||
|
\brief Copyright (C) 20xx DigiPen Institute of Technology.
|
||||||
|
|
||||||
|
Reproduction or disclosure of this file or its contents without the prior written consent of DigiPen Institute of Technology is prohibited. */
|
||||||
|
|
||||||
|
/* End Header *******************************************************************/
|
||||||
|
|
||||||
|
#version 450
|
||||||
|
|
||||||
|
|
||||||
|
layout(local_size_x = 16, local_size_y = 16) in;
|
||||||
|
layout(set = 4, binding = 0, rgba8) uniform image2D inputImage;
|
||||||
|
layout(set = 4, binding = 1, rgba8) uniform image2D targetImage;
|
||||||
|
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
// convenient variables
|
||||||
|
ivec2 globalThread = ivec2(gl_GlobalInvocationID);
|
||||||
|
|
||||||
|
vec3 color = imageLoad (inputImage, globalThread).rgb;
|
||||||
|
|
||||||
|
// store result into result image
|
||||||
|
imageStore(targetImage, ivec2(gl_GlobalInvocationID.xy), vec4(color, 1.0f));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
||||||
|
Name: PureCopy_CS
|
||||||
|
ID: 34987209
|
||||||
|
Type: 2
|
|
@ -0,0 +1,58 @@
|
||||||
|
#version 450
|
||||||
|
|
||||||
|
#define BLUR_WIDTH 5
|
||||||
|
#define BLUR_HALF_WIDTH BLUR_WIDTH / 2
|
||||||
|
#define SHM_WIDTH BLUR_WIDTH + 16 - 1
|
||||||
|
|
||||||
|
layout(local_size_x = 16, local_size_y = 16) in;
|
||||||
|
layout(set = 4, binding = 0, r8) uniform image2D ssaoImage;
|
||||||
|
layout(set = 4, binding = 1, r8) uniform image2D ssaoBlurImage;
|
||||||
|
|
||||||
|
|
||||||
|
float GetSSAOValue(ivec2 uv, ivec2 imageSize)
|
||||||
|
{
|
||||||
|
if (uv.x >= 0 && uv.y >= 0 && uv.x < imageSize.x && uv.y < imageSize.y)
|
||||||
|
{
|
||||||
|
return imageLoad (ssaoImage, uv).r;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
shared float sharedPixels[16 + BLUR_WIDTH - 1][16 + BLUR_WIDTH - 1];
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
ivec2 globalThread = ivec2 (gl_GlobalInvocationID.xy);
|
||||||
|
ivec2 localThread = ivec2 (gl_LocalInvocationID.xy);
|
||||||
|
ivec2 inputImageSize = imageSize(ssaoImage);
|
||||||
|
|
||||||
|
// Load color into shared memory
|
||||||
|
ivec2 start = ivec2 (gl_WorkGroupID) * ivec2 (gl_WorkGroupSize) - (BLUR_HALF_WIDTH);
|
||||||
|
for (int i = localThread.x; i < SHM_WIDTH; i += int (gl_WorkGroupSize.x))
|
||||||
|
{
|
||||||
|
for (int j = localThread.y; j < SHM_WIDTH; j += int (gl_WorkGroupSize.y))
|
||||||
|
{
|
||||||
|
float value = GetSSAOValue (start + ivec2 (i, j), inputImageSize);
|
||||||
|
sharedPixels[i][j] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// wait for all shared memory to load
|
||||||
|
barrier();
|
||||||
|
|
||||||
|
ivec2 shmStart = ivec2 (localThread + (BLUR_HALF_WIDTH));
|
||||||
|
|
||||||
|
float sum = 0;
|
||||||
|
for (int i = -BLUR_HALF_WIDTH; i <= BLUR_HALF_WIDTH; ++i)
|
||||||
|
{
|
||||||
|
for (int j = -BLUR_HALF_WIDTH; j <= BLUR_HALF_WIDTH; ++j)
|
||||||
|
{
|
||||||
|
float sharedVal = sharedPixels[shmStart.x + i][shmStart.y + j];
|
||||||
|
sum += sharedVal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sum /= (BLUR_WIDTH * BLUR_WIDTH);
|
||||||
|
imageStore(ssaoBlurImage, globalThread, vec4(sum.rrr, 1.0f));
|
||||||
|
}
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
||||||
|
Name: SSAOBlur_CS
|
||||||
|
ID: 39760835
|
||||||
|
Type: 2
|
|
@ -0,0 +1,104 @@
|
||||||
|
#version 450
|
||||||
|
|
||||||
|
const uint NUM_SAMPLES = 64;
|
||||||
|
const uint NUM_ROTATIONS = 16;
|
||||||
|
const int ROTATION_KERNEL_W = 4;
|
||||||
|
const int ROTATION_KERNEL_H = 4;
|
||||||
|
|
||||||
|
// can perhaps pass in as push constant.
|
||||||
|
const float RADIUS = 0.5f;
|
||||||
|
const float BIAS = 0.025f;
|
||||||
|
|
||||||
|
layout(local_size_x = 16, local_size_y = 16) in;
|
||||||
|
layout(set = 4, binding = 0, rgba32f) uniform image2D positions;
|
||||||
|
layout(set = 4, binding = 1, rgba32f) uniform image2D normals;
|
||||||
|
layout(set = 4, binding = 2, rgba32f) uniform image2D outputImage;
|
||||||
|
|
||||||
|
|
||||||
|
// SSAO data
|
||||||
|
layout(std430, set = 5, binding = 0) buffer SSAOData
|
||||||
|
{
|
||||||
|
vec4 samples[NUM_SAMPLES];
|
||||||
|
|
||||||
|
} ssaoData;
|
||||||
|
|
||||||
|
layout (set = 5, binding = 1) uniform sampler2D noiseTexture;
|
||||||
|
|
||||||
|
layout(set = 2, binding = 0) uniform CameraData
|
||||||
|
{
|
||||||
|
vec4 position;
|
||||||
|
mat4 vpMat;
|
||||||
|
mat4 viewMat;
|
||||||
|
mat4 projMat;
|
||||||
|
|
||||||
|
} cameraData;
|
||||||
|
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
// image size of the SSAO image
|
||||||
|
ivec2 ssaoSize = imageSize (outputImage);
|
||||||
|
|
||||||
|
// global thread
|
||||||
|
ivec2 globalThread = ivec2 (gl_GlobalInvocationID.xy);
|
||||||
|
|
||||||
|
// load all the necessary variables
|
||||||
|
vec3 viewSpacePos = imageLoad (positions, globalThread).rgb;
|
||||||
|
vec3 viewSpaceNormal = normalize (imageLoad (normals, globalThread).rgb);
|
||||||
|
|
||||||
|
// Get the noise dimension. This should be 4x4
|
||||||
|
vec2 noiseDim = vec2 (textureSize(noiseTexture, 0));
|
||||||
|
|
||||||
|
// Get normlized thread UV coordinates
|
||||||
|
vec2 threadUV = (vec2(globalThread)) / vec2(ssaoSize);
|
||||||
|
vec2 noiseUVMult = vec2 (vec2(ssaoSize) / noiseDim);
|
||||||
|
noiseUVMult *= threadUV;
|
||||||
|
|
||||||
|
// sample from the noise
|
||||||
|
vec3 randomVec = texture(noiseTexture, noiseUVMult).rgb;
|
||||||
|
|
||||||
|
// Gram schmidt
|
||||||
|
vec3 tangent = normalize (randomVec - (viewSpaceNormal * dot(viewSpaceNormal, randomVec)));
|
||||||
|
vec3 bitangent = normalize (cross (tangent, viewSpaceNormal));
|
||||||
|
|
||||||
|
// matrix for tangent space to view space
|
||||||
|
mat3 TBN = mat3(tangent, bitangent, viewSpaceNormal);
|
||||||
|
|
||||||
|
float occlusion = 0.0f;
|
||||||
|
for (int i = 0; i < NUM_SAMPLES; ++i)
|
||||||
|
{
|
||||||
|
// We want to get a position at an offset from the view space position. Offset scaled by radius.
|
||||||
|
vec3 displacementVector = TBN * ssaoData.samples[i].rgb;
|
||||||
|
|
||||||
|
// Why are we adding positions?
|
||||||
|
displacementVector = viewSpacePos + displacementVector * RADIUS;
|
||||||
|
|
||||||
|
// Now we take that offset position and bring it to clip space
|
||||||
|
vec4 offsetPos = vec4 (displacementVector, 1.0f);
|
||||||
|
offsetPos = cameraData.projMat * offsetPos;
|
||||||
|
|
||||||
|
// then we do perspective division
|
||||||
|
offsetPos.xyz /= offsetPos.w;
|
||||||
|
|
||||||
|
// and bring it from [-1, 1] to screen coordinates
|
||||||
|
offsetPos.xyz = ((offsetPos.xyz * 0.5f) + 0.5f);
|
||||||
|
offsetPos.xy *= vec2(ssaoSize.xy);
|
||||||
|
|
||||||
|
// Now we attempt to get a position at that point.
|
||||||
|
float sampleDepth = imageLoad (positions, ivec2 (offsetPos.xy)).z;
|
||||||
|
|
||||||
|
// skip checks
|
||||||
|
if (sampleDepth == 0.0f)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// if sampled fragment is in front of current fragment, just occlude
|
||||||
|
float rangeCheck = smoothstep (0.0f, 1.0f, RADIUS / abs (viewSpacePos.z - sampleDepth));
|
||||||
|
occlusion += (sampleDepth <= displacementVector.z - BIAS ? 1.0f : 0.0f) * rangeCheck;
|
||||||
|
}
|
||||||
|
|
||||||
|
occlusion = 1.0f - (occlusion / float(NUM_SAMPLES));
|
||||||
|
|
||||||
|
// store result into result image
|
||||||
|
imageStore(outputImage, globalThread, occlusion.rrrr);
|
||||||
|
|
||||||
|
}
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
||||||
|
Name: SSAO_CS
|
||||||
|
ID: 38430899
|
||||||
|
Type: 2
|
|
@ -0,0 +1,50 @@
|
||||||
|
#version 450
|
||||||
|
#extension GL_ARB_separate_shader_objects : enable
|
||||||
|
#extension GL_ARB_shading_language_420pack : enable
|
||||||
|
#extension GL_EXT_nonuniform_qualifier : require
|
||||||
|
|
||||||
|
struct MatPropData
|
||||||
|
{
|
||||||
|
vec4 color;
|
||||||
|
int textureIndex;
|
||||||
|
float alpha;
|
||||||
|
vec3 beta;
|
||||||
|
};
|
||||||
|
|
||||||
|
layout(location = 0) in struct
|
||||||
|
{
|
||||||
|
vec4 vertPos; // location 0
|
||||||
|
vec2 uv; // location = 1
|
||||||
|
vec4 normal; // location = 2
|
||||||
|
|
||||||
|
} In;
|
||||||
|
|
||||||
|
// material stuff
|
||||||
|
layout(location = 3) flat in struct
|
||||||
|
{
|
||||||
|
int materialIndex;
|
||||||
|
uint eid;
|
||||||
|
uint lightLayerIndex;
|
||||||
|
} In2;
|
||||||
|
|
||||||
|
layout (set = 0, binding = 1) uniform sampler2D textures[]; // for textures (global)
|
||||||
|
layout (std430, set = 3, binding = 0) buffer MaterialProperties // For materials
|
||||||
|
{
|
||||||
|
MatPropData data[];
|
||||||
|
} MatProp;
|
||||||
|
|
||||||
|
layout(location = 0) out vec4 position;
|
||||||
|
layout(location = 1) out uint outEntityID;
|
||||||
|
layout(location = 2) out uint lightLayerIndices;
|
||||||
|
layout(location = 3) out vec4 normals;
|
||||||
|
layout(location = 4) out vec4 albedo;
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
position = In.vertPos;
|
||||||
|
normals = In.normal;
|
||||||
|
albedo = texture(textures[nonuniformEXT(MatProp.data[In2.materialIndex].textureIndex)], In.uv) * MatProp.data[In2.materialIndex].color;
|
||||||
|
|
||||||
|
outEntityID = In2.eid;
|
||||||
|
lightLayerIndices = In2.lightLayerIndex;
|
||||||
|
}
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
||||||
|
Name: TestCube_FS
|
||||||
|
ID: 46377769
|
||||||
|
Type: 2
|
|
@ -0,0 +1,63 @@
|
||||||
|
#version 450
|
||||||
|
#extension GL_KHR_vulkan_glsl : enable
|
||||||
|
|
||||||
|
//#include "ShaderDescriptorDefinitions.glsl"
|
||||||
|
|
||||||
|
|
||||||
|
layout(location = 0) in vec3 aVertexPos;
|
||||||
|
layout(location = 1) in vec2 aUV;
|
||||||
|
layout(location = 2) in vec3 aNormal;
|
||||||
|
layout(location = 3) in vec3 aTangent;
|
||||||
|
layout(location = 4) in mat4 worldTransform;
|
||||||
|
layout(location = 8) in uvec2 integerData;
|
||||||
|
|
||||||
|
|
||||||
|
layout(location = 0) out struct
|
||||||
|
{
|
||||||
|
vec4 vertPos; // location 0
|
||||||
|
vec2 uv; // location = 1
|
||||||
|
vec4 normal; // location = 2
|
||||||
|
|
||||||
|
} Out;
|
||||||
|
|
||||||
|
// material stuff
|
||||||
|
layout(location = 3) out struct
|
||||||
|
{
|
||||||
|
int materialIndex;
|
||||||
|
uint eid;
|
||||||
|
uint lightLayerIndex;
|
||||||
|
|
||||||
|
} Out2;
|
||||||
|
|
||||||
|
layout(set = 2, binding = 0) uniform CameraData
|
||||||
|
{
|
||||||
|
vec4 position;
|
||||||
|
mat4 vpMat;
|
||||||
|
mat4 viewMat;
|
||||||
|
mat4 projMat;
|
||||||
|
} cameraData;
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
Out2.materialIndex = gl_InstanceIndex;
|
||||||
|
Out2.eid = integerData[0];
|
||||||
|
Out2.lightLayerIndex = integerData[1];
|
||||||
|
|
||||||
|
// for transforming gBuffer position and normal data
|
||||||
|
mat4 modelViewMat = cameraData.viewMat * worldTransform;
|
||||||
|
|
||||||
|
// gBuffer position will be in view space
|
||||||
|
Out.vertPos = modelViewMat * vec4(aVertexPos, 1.0f);
|
||||||
|
|
||||||
|
// uvs for texturing in fragment shader
|
||||||
|
Out.uv = aUV;
|
||||||
|
|
||||||
|
mat3 transposeInv = mat3 (transpose(inverse(modelViewMat)));
|
||||||
|
|
||||||
|
// normals are also in view space
|
||||||
|
Out.normal.rgb = transposeInv * aNormal.rgb;
|
||||||
|
Out.normal.rgb = normalize (Out.normal.rgb);
|
||||||
|
|
||||||
|
// clip space for rendering
|
||||||
|
gl_Position = cameraData.vpMat * worldTransform * vec4 (aVertexPos, 1.0f);
|
||||||
|
}
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
||||||
|
Name: TestCube_VS
|
||||||
|
ID: 39210065
|
||||||
|
Type: 2
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,3 @@
|
||||||
|
Name: TD_Checker_Base_Color
|
||||||
|
ID: 51995224
|
||||||
|
Type: 3
|
125
Dependencies.bat
125
Dependencies.bat
|
@ -7,35 +7,41 @@ echo "SHADE DEPENDENCIES (Default - All in 10 Seconds)"
|
||||||
echo "A - All"
|
echo "A - All"
|
||||||
echo "B - VMA"
|
echo "B - VMA"
|
||||||
echo "C - msdf"
|
echo "C - msdf"
|
||||||
echo "D - assimp"
|
echo "D - ModelCompiler"
|
||||||
echo "E - ktx"
|
echo "E - spdlog"
|
||||||
echo "F - spdlog"
|
echo "F - reactphysics3d"
|
||||||
echo "G - reactphysics3d"
|
echo "G - imgui"
|
||||||
echo "H - imgui"
|
echo "H - imguizmo"
|
||||||
echo "I - imguizmo"
|
echo "I - imnodes"
|
||||||
echo "J - imnodes"
|
echo "J - tracy"
|
||||||
echo "K - tracy"
|
echo "K - RTTR"
|
||||||
echo "L - RTTR"
|
echo "L - yamlcpp"
|
||||||
echo "M - yamlcpp"
|
echo "M - SDL"
|
||||||
|
echo "N - dotnet"
|
||||||
|
echo "O - tinyddsloader"
|
||||||
|
echo "P - fmod"
|
||||||
echo ---------------------------------------------------
|
echo ---------------------------------------------------
|
||||||
echo.
|
echo.
|
||||||
|
|
||||||
choice /C ABCDEFGHIJKLM /T 10 /D A
|
choice /C ABCDEFGHIJKLMNOP /T 10 /D A
|
||||||
set _e=%ERRORLEVEL%
|
set _e=%ERRORLEVEL%
|
||||||
|
|
||||||
if %_e%==1 goto VMA
|
if %_e%==1 goto VMA
|
||||||
if %_e%==2 goto VMA
|
if %_e%==2 goto VMA
|
||||||
if %_e%==3 goto MSDF
|
if %_e%==3 goto MSDF
|
||||||
if %_e%==4 goto assimp
|
if %_e%==4 goto ModelCompiler
|
||||||
if %_e%==5 goto ktx
|
if %_e%==5 goto spdlog
|
||||||
if %_e%==6 goto spdlog
|
if %_e%==6 goto reactphysics3d
|
||||||
if %_e%==7 goto reactphysics3d
|
if %_e%==7 goto imgui
|
||||||
if %_e%==8 goto imgui
|
if %_e%==8 goto imguizmo
|
||||||
if %_e%==9 goto imguizmo
|
if %_e%==9 goto imnodes
|
||||||
if %_e%==10 goto imnodes
|
if %_e%==10 goto tracy
|
||||||
if %_e%==11 goto tracy
|
if %_e%==11 goto RTTR
|
||||||
if %_e%==12 goto RTTR
|
if %_e%==12 goto yamlcpp
|
||||||
if %_e%==13 goto yamlcpp
|
if %_e%==13 goto SDL
|
||||||
|
if %_e%==14 goto dotnet
|
||||||
|
if %_e%==15 goto tinyddsloader
|
||||||
|
if %_e%==16 goto fmod
|
||||||
|
|
||||||
:VMA
|
:VMA
|
||||||
echo -----------------------VMA----------------------------
|
echo -----------------------VMA----------------------------
|
||||||
|
@ -47,66 +53,107 @@ if %_e%==2 (goto :done) else (goto :MSDF)
|
||||||
echo -----------------------MSDF----------------------------
|
echo -----------------------MSDF----------------------------
|
||||||
rmdir "Dependencies/msdf" /S /Q
|
rmdir "Dependencies/msdf" /S /Q
|
||||||
git clone --recurse-submodules https://github.com/SHADE-DP/msdf-atlas-gen.git "Dependencies/msdf"
|
git clone --recurse-submodules https://github.com/SHADE-DP/msdf-atlas-gen.git "Dependencies/msdf"
|
||||||
if %_e%==3 (goto :done) else (goto :assimp)
|
if %_e%==3 (goto :done) else (goto :ModelCompiler)
|
||||||
|
|
||||||
:assimp
|
:ModelCompiler
|
||||||
echo -----------------------assimp----------------------------
|
echo -----------------------ModelCompiler----------------------------
|
||||||
rmdir "Dependencies/assimp" /S /Q
|
rmdir "Dependencies/ModelCompiler" /S /Q
|
||||||
git clone https://github.com/SHADE-DP/assimp.git "Dependencies/assimp"
|
git clone https://github.com/SHADE-DP/ModelCompiler.git "Dependencies/ModelCompiler"
|
||||||
if %_e%==4 (goto :done) else (goto :ktx)
|
git clone https://github.com/SHADE-DP/assimp.git "Dependencies/ModelCompiler/Dependencies/assimp"
|
||||||
|
if %_e%==4 (goto :done) else (goto :spdlog)
|
||||||
|
|
||||||
:ktx
|
@REM :ktx
|
||||||
rmdir "Dependencies/ktx" /S /Q
|
@REM rmdir "Dependencies/ktx" /S /Q
|
||||||
echo -----------------------ktx----------------------------
|
@REM echo -----------------------ktx----------------------------
|
||||||
git clone https://github.com/SHADE-DP/ktx.git "Dependencies/ktx"
|
@REM git clone https://github.com/SHADE-DP/ktx.git "Dependencies/ktx"
|
||||||
if %_e%==5 (goto :done) else (goto :spdlog)
|
@REM if %_e%==5 (goto :done) else (goto :spdlog)
|
||||||
|
|
||||||
:spdlog
|
:spdlog
|
||||||
echo -----------------------spdlog----------------------------
|
echo -----------------------spdlog----------------------------
|
||||||
rmdir "Dependencies/spdlog" /S /Q
|
rmdir "Dependencies/spdlog" /S /Q
|
||||||
git clone https://github.com/SHADE-DP/spdlog.git "Dependencies/spdlog"
|
git clone https://github.com/SHADE-DP/spdlog.git "Dependencies/spdlog"
|
||||||
if %_e%==6 (goto :done) else (goto :reactphysics3d)
|
if %_e%==5 (goto :done) else (goto :reactphysics3d)
|
||||||
|
|
||||||
:reactphysics3d
|
:reactphysics3d
|
||||||
echo -----------------------reactphysics3d----------------------------
|
echo -----------------------reactphysics3d----------------------------
|
||||||
rmdir "Dependencies/reactphysics3d" /S /Q
|
rmdir "Dependencies/reactphysics3d" /S /Q
|
||||||
git clone https://github.com/SHADE-DP/reactphysics3d.git "Dependencies/reactphysics3d"
|
git clone https://github.com/SHADE-DP/reactphysics3d.git "Dependencies/reactphysics3d"
|
||||||
if %_e%==7 (goto :done) else (goto :imgui)
|
if %_e%==6 (goto :done) else (goto :imgui)
|
||||||
|
|
||||||
:imgui
|
:imgui
|
||||||
echo -----------------------imgui----------------------------
|
echo -----------------------imgui----------------------------
|
||||||
rmdir "Dependencies/imgui" /S /Q
|
rmdir "Dependencies/imgui" /S /Q
|
||||||
git clone https://github.com/SHADE-DP/imgui.git "Dependencies/imgui"
|
git clone https://github.com/SHADE-DP/imgui.git "Dependencies/imgui"
|
||||||
if %_e%==8 (goto :done) else (goto :imguizmo)
|
if %_e%==7 (goto :done) else (goto :imguizmo)
|
||||||
|
|
||||||
:imguizmo
|
:imguizmo
|
||||||
echo -----------------------imguizmo----------------------------
|
echo -----------------------imguizmo----------------------------
|
||||||
rmdir "Dependencies/imguizmo" /S /Q
|
rmdir "Dependencies/imguizmo" /S /Q
|
||||||
git clone https://github.com/SHADE-DP/ImGuizmo.git "Dependencies/imguizmo"
|
git clone https://github.com/SHADE-DP/ImGuizmo.git "Dependencies/imguizmo"
|
||||||
if %_e%==9 (goto :done) else (goto :imnodes)
|
if %_e%==8 (goto :done) else (goto :imnodes)
|
||||||
|
|
||||||
:imnodes
|
:imnodes
|
||||||
echo -----------------------imnodes----------------------------
|
echo -----------------------imnodes----------------------------
|
||||||
rmdir "Dependencies/imnodes" /S /Q
|
rmdir "Dependencies/imnodes" /S /Q
|
||||||
git clone https://github.com/SHADE-DP/imnodes.git "Dependencies/imnodes"
|
git clone https://github.com/SHADE-DP/imnodes.git "Dependencies/imnodes"
|
||||||
if %_e%==10 (goto :done) else (goto :tracy)
|
if %_e%==9 (goto :done) else (goto :tracy)
|
||||||
|
|
||||||
:tracy
|
:tracy
|
||||||
echo -----------------------tracy----------------------------
|
echo -----------------------tracy----------------------------
|
||||||
rmdir "Dependencies/tracy" /S /Q
|
rmdir "Dependencies/tracy" /S /Q
|
||||||
git clone https://github.com/SHADE-DP/tracy.git "Dependencies/tracy"
|
git clone https://github.com/SHADE-DP/tracy.git "Dependencies/tracy"
|
||||||
if %_e%==11 (goto :done) else (goto :RTTR)
|
if %_e%==10 (goto :done) else (goto :RTTR)
|
||||||
|
|
||||||
:RTTR
|
:RTTR
|
||||||
echo -----------------------RTTR----------------------------
|
echo -----------------------RTTR----------------------------
|
||||||
rmdir "Dependencies/RTTR" /S /Q
|
rmdir "Dependencies/RTTR" /S /Q
|
||||||
git clone https://github.com/SHADE-DP/RTTR.git "Dependencies/RTTR"
|
git clone https://github.com/SHADE-DP/RTTR.git "Dependencies/RTTR"
|
||||||
if %_e%==12 (goto :done) else (goto :yamlcpp)
|
if %_e%==11 (goto :done) else (goto :yamlcpp)
|
||||||
|
|
||||||
:yamlcpp
|
:yamlcpp
|
||||||
echo -----------------------yamlcpp----------------------------
|
echo -----------------------yamlcpp----------------------------
|
||||||
rmdir "Dependencies/yamlcpp" /S /Q
|
rmdir "Dependencies/yamlcpp" /S /Q
|
||||||
git clone https://github.com/SHADE-DP/yaml-cpp.git "Dependencies/yamlcpp"
|
git clone https://github.com/SHADE-DP/yaml-cpp.git "Dependencies/yamlcpp"
|
||||||
|
if %_e%==12 (goto :done) else (goto :SDL)
|
||||||
|
|
||||||
|
:SDL
|
||||||
|
echo -----------------------SDL----------------------------
|
||||||
|
rmdir "Dependencies/SDL" /S /Q
|
||||||
|
mkdir "Dependencies/SDL/include"
|
||||||
|
mkdir "Dependencies/SDL/lib"
|
||||||
|
powershell -Command "& {wget https://github.com/libsdl-org/SDL/releases/download/release-2.24.0/SDL2-devel-2.24.0-VC.zip -OutFile "Dependencies/SDL/SDL.zip"}"
|
||||||
|
powershell -Command "& {Expand-Archive -LiteralPath Dependencies/SDL/SDL.zip -DestinationPath Dependencies/SDL/tmp}"
|
||||||
|
robocopy "Dependencies/SDL/tmp/SDL2-2.24.0/lib/x64" "Dependencies/SDL/lib/" /ns /nfl /ndl /nc /njh
|
||||||
|
robocopy "Dependencies/SDL/tmp/SDL2-2.24.0/include/" "Dependencies/SDL/include/" /ns /nfl /ndl /nc /njh
|
||||||
|
rmdir "Dependencies/SDL/tmp/" /s /q
|
||||||
|
powershell -Command "& {Remove-Item "Dependencies/SDL/SDL.zip"}"
|
||||||
|
if %_e%==13 (goto :done) else (goto :dotnet)
|
||||||
|
|
||||||
|
:dotnet
|
||||||
|
echo -----------------------dotnet----------------------------
|
||||||
|
rmdir "Dependencies/dotnet" /S /Q
|
||||||
|
mkdir "Dependencies/dotnet/include"
|
||||||
|
mkdir "Dependencies/dotnet/bin"
|
||||||
|
powershell -Command "& {wget https://raw.githubusercontent.com/dotnet/runtime/main/src/coreclr/hosts/inc/coreclrhost.h -OutFile "Dependencies/dotnet/include/coreclrhost.h"}"
|
||||||
|
powershell -Command "& {wget https://download.visualstudio.microsoft.com/download/pr/8686fa48-b378-424e-908b-afbd66d6e120/2d75d5c3574fb5d917c5a3cd3f624287/dotnet-sdk-6.0.400-win-x64.zip -OutFile "Dependencies/dotnet/dotnet.zip"}"
|
||||||
|
powershell -Command "& {Expand-Archive -LiteralPath Dependencies/dotnet/dotnet.zip -DestinationPath Dependencies/dotnet/tmp}"
|
||||||
|
robocopy "Dependencies/dotnet/tmp/shared/Microsoft.NETCore.App/6.0.8/" "Dependencies/dotnet/bin/" *.dll /ns /nfl /ndl /nc /njh
|
||||||
|
rmdir "Dependencies/dotnet/tmp/" /s /q
|
||||||
|
del "Dependencies/dotnet/dotnet.zip"
|
||||||
|
powershell -Command "& {Remove-Item "Dependencies/dotnet/dotnet.zip"}"
|
||||||
|
if %_e%==14 (goto :done) else (goto :tinyddsloader)
|
||||||
|
|
||||||
|
|
||||||
|
:tinyddsloader
|
||||||
|
echo --------------------tinyddsloader-------------------------
|
||||||
|
rmdir "Dependencies/tinyddsloader" /S /Q
|
||||||
|
git clone https://github.com/SHADE-DP/tinyddsloader.git "Dependencies/tinyddsloader"
|
||||||
|
if %_e%==15 (goto :done) else (goto :fmod)
|
||||||
|
|
||||||
|
:fmod
|
||||||
|
echo --------------------fmod-------------------------
|
||||||
|
rmdir "Dependencies/fmod" /S /Q
|
||||||
|
git clone https://github.com/SHADE-DP/FMOD.git "Dependencies/fmod"
|
||||||
|
|
||||||
:done
|
:done
|
||||||
echo DONE!
|
echo DONE!
|
||||||
|
|
|
@ -1,15 +1,18 @@
|
||||||
IncludeDir = {}
|
IncludeDir = {}
|
||||||
IncludeDir["assimp"] = "%{wks.location}/Dependencies/assimp"
|
IncludeDir["ModelCompiler"] = "%{wks.location}\\Dependencies\\ModelCompiler"
|
||||||
IncludeDir["imgui"] = "%{wks.location}/Dependencies/imgui"
|
IncludeDir["imgui"] = "%{wks.location}\\Dependencies\\imgui"
|
||||||
IncludeDir["imguizmo"] = "%{wks.location}/Dependencies/imguizmo"
|
IncludeDir["imguizmo"] = "%{wks.location}\\Dependencies\\imguizmo"
|
||||||
IncludeDir["imnodes"] = "%{wks.location}/Dependencies/imnodes"
|
IncludeDir["imnodes"] = "%{wks.location}\\Dependencies\\imnodes"
|
||||||
IncludeDir["msdf_atlas_gen"] = "%{wks.location}/Dependencies/msdf"
|
IncludeDir["msdf_atlas_gen"] = "%{wks.location}\\Dependencies\\msdf"
|
||||||
IncludeDir["msdfgen"] = "%{wks.location}/Dependencies/msdf/msdfgen"
|
IncludeDir["msdfgen"] = "%{wks.location}\\Dependencies\\msdf\\msdfgen"
|
||||||
IncludeDir["spdlog"] = "%{wks.location}/Dependencies/spdlog"
|
IncludeDir["spdlog"] = "%{wks.location}\\Dependencies\\spdlog"
|
||||||
IncludeDir["tracy"] = "%{wks.location}/Dependencies/tracy"
|
IncludeDir["tracy"] = "%{wks.location}\\Dependencies\\tracy"
|
||||||
IncludeDir["VMA"] = "%{wks.location}/Dependencies/VMA"
|
IncludeDir["VMA"] = "%{wks.location}\\Dependencies\\VMA"
|
||||||
IncludeDir["yamlcpp"] = "%{wks.location}/Dependencies/yamlcpp/include"
|
IncludeDir["yamlcpp"] = "%{wks.location}\\Dependencies\\yamlcpp\\include"
|
||||||
IncludeDir["RTTR"] = "%{wks.location}/Dependencies/RTTR"
|
IncludeDir["RTTR"] = "%{wks.location}\\Dependencies\\RTTR"
|
||||||
IncludeDir["ktx"] = "%{wks.location}/Dependencies/ktx"
|
IncludeDir["reactphysics3d"] = "%{wks.location}\\Dependencies\\reactphysics3d"
|
||||||
IncludeDir["reactphysics3d"] = "%{wks.location}/Dependencies/reactphysics3d"
|
IncludeDir["SDL"] = "%{wks.location}\\Dependencies\\SDL"
|
||||||
IncludeDir["VULKAN"] = "$(VULKAN_SDK)"
|
IncludeDir["VULKAN"] = "$(VULKAN_SDK)"
|
||||||
|
IncludeDir["dotnet"] = "%{wks.location}\\Dependencies\\dotnet"
|
||||||
|
IncludeDir["tinyddsloader"] = "%{wks.location}\\Dependencies\\tinyddsloader"
|
||||||
|
IncludeDir["fmod"] = "%{wks.location}\\Dependencies\\fmod"
|
Binary file not shown.
87
SHADE.sln
87
SHADE.sln
|
@ -1,87 +0,0 @@
|
||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
|
||||||
# Visual Studio Version 16
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SHADE_Application", "SHADE_Application\SHADE_Application.vcxproj", "{BDC70008-29DE-FE9D-7255-8ABFDEAACF25}"
|
|
||||||
EndProject
|
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Dependencies", "Dependencies", "{53E47842-3FC8-3998-A828-34EB942B241A}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ImGui", "Dependencies\imgui\ImGui.vcxproj", "{C0FF640D-2C14-8DBE-F595-301E616989EF}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "Dependencies\msdf\msdfgen\freetype\freetype.vcxproj", "{89895BD8-7556-B6E3-9E6F-A48B8A9BEB71}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msdf-atlas-gen", "Dependencies\msdf\msdf-atlas-gen.vcxproj", "{38BD587B-248B-4C81-0D1F-BDA7F98B28E6}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msdfgen", "Dependencies\msdf\msdfgen\msdfgen.vcxproj", "{8900D8DD-F5DF-5679-FEF7-E14F6A56BDDA}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "reactphysics3d", "Dependencies\reactphysics3d\reactphysics3d.vcxproj", "{2ECAB41A-1A98-A820-032C-1947EF988485}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spdlog", "Dependencies\spdlog\spdlog.vcxproj", "{8EAD431C-7A4F-6EF2-630A-82464F4BF542}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "yaml-cpp", "Dependencies\yamlcpp\yaml-cpp.vcxproj", "{88F1A057-74BE-FB62-9DD7-E90A890331F1}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SHADE_Engine", "SHADE_Engine\SHADE_Engine.vcxproj", "{3F92E998-2BF5-783D-D47A-B1F3C0BC44C0}"
|
|
||||||
ProjectSection(ProjectDependencies) = postProject
|
|
||||||
{88F1A057-74BE-FB62-9DD7-E90A890331F1} = {88F1A057-74BE-FB62-9DD7-E90A890331F1}
|
|
||||||
{8900D8DD-F5DF-5679-FEF7-E14F6A56BDDA} = {8900D8DD-F5DF-5679-FEF7-E14F6A56BDDA}
|
|
||||||
{38BD587B-248B-4C81-0D1F-BDA7F98B28E6} = {38BD587B-248B-4C81-0D1F-BDA7F98B28E6}
|
|
||||||
{2ECAB41A-1A98-A820-032C-1947EF988485} = {2ECAB41A-1A98-A820-032C-1947EF988485}
|
|
||||||
{C0FF640D-2C14-8DBE-F595-301E616989EF} = {C0FF640D-2C14-8DBE-F595-301E616989EF}
|
|
||||||
{8EAD431C-7A4F-6EF2-630A-82464F4BF542} = {8EAD431C-7A4F-6EF2-630A-82464F4BF542}
|
|
||||||
EndProjectSection
|
|
||||||
EndProject
|
|
||||||
Global
|
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
|
||||||
Debug|x64 = Debug|x64
|
|
||||||
Release|x64 = Release|x64
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
|
||||||
{BDC70008-29DE-FE9D-7255-8ABFDEAACF25}.Debug|x64.ActiveCfg = Debug|x64
|
|
||||||
{BDC70008-29DE-FE9D-7255-8ABFDEAACF25}.Debug|x64.Build.0 = Debug|x64
|
|
||||||
{BDC70008-29DE-FE9D-7255-8ABFDEAACF25}.Release|x64.ActiveCfg = Release|x64
|
|
||||||
{BDC70008-29DE-FE9D-7255-8ABFDEAACF25}.Release|x64.Build.0 = Release|x64
|
|
||||||
{C0FF640D-2C14-8DBE-F595-301E616989EF}.Debug|x64.ActiveCfg = Debug|x64
|
|
||||||
{C0FF640D-2C14-8DBE-F595-301E616989EF}.Debug|x64.Build.0 = Debug|x64
|
|
||||||
{C0FF640D-2C14-8DBE-F595-301E616989EF}.Release|x64.ActiveCfg = Release|x64
|
|
||||||
{C0FF640D-2C14-8DBE-F595-301E616989EF}.Release|x64.Build.0 = Release|x64
|
|
||||||
{89895BD8-7556-B6E3-9E6F-A48B8A9BEB71}.Debug|x64.ActiveCfg = Debug|x64
|
|
||||||
{89895BD8-7556-B6E3-9E6F-A48B8A9BEB71}.Debug|x64.Build.0 = Debug|x64
|
|
||||||
{89895BD8-7556-B6E3-9E6F-A48B8A9BEB71}.Release|x64.ActiveCfg = Release|x64
|
|
||||||
{89895BD8-7556-B6E3-9E6F-A48B8A9BEB71}.Release|x64.Build.0 = Release|x64
|
|
||||||
{38BD587B-248B-4C81-0D1F-BDA7F98B28E6}.Debug|x64.ActiveCfg = Debug|x64
|
|
||||||
{38BD587B-248B-4C81-0D1F-BDA7F98B28E6}.Debug|x64.Build.0 = Debug|x64
|
|
||||||
{38BD587B-248B-4C81-0D1F-BDA7F98B28E6}.Release|x64.ActiveCfg = Release|x64
|
|
||||||
{38BD587B-248B-4C81-0D1F-BDA7F98B28E6}.Release|x64.Build.0 = Release|x64
|
|
||||||
{8900D8DD-F5DF-5679-FEF7-E14F6A56BDDA}.Debug|x64.ActiveCfg = Debug|x64
|
|
||||||
{8900D8DD-F5DF-5679-FEF7-E14F6A56BDDA}.Debug|x64.Build.0 = Debug|x64
|
|
||||||
{8900D8DD-F5DF-5679-FEF7-E14F6A56BDDA}.Release|x64.ActiveCfg = Release|x64
|
|
||||||
{8900D8DD-F5DF-5679-FEF7-E14F6A56BDDA}.Release|x64.Build.0 = Release|x64
|
|
||||||
{2ECAB41A-1A98-A820-032C-1947EF988485}.Debug|x64.ActiveCfg = Debug|x64
|
|
||||||
{2ECAB41A-1A98-A820-032C-1947EF988485}.Debug|x64.Build.0 = Debug|x64
|
|
||||||
{2ECAB41A-1A98-A820-032C-1947EF988485}.Release|x64.ActiveCfg = Release|x64
|
|
||||||
{2ECAB41A-1A98-A820-032C-1947EF988485}.Release|x64.Build.0 = Release|x64
|
|
||||||
{8EAD431C-7A4F-6EF2-630A-82464F4BF542}.Debug|x64.ActiveCfg = Debug|x64
|
|
||||||
{8EAD431C-7A4F-6EF2-630A-82464F4BF542}.Debug|x64.Build.0 = Debug|x64
|
|
||||||
{8EAD431C-7A4F-6EF2-630A-82464F4BF542}.Release|x64.ActiveCfg = Release|x64
|
|
||||||
{8EAD431C-7A4F-6EF2-630A-82464F4BF542}.Release|x64.Build.0 = Release|x64
|
|
||||||
{88F1A057-74BE-FB62-9DD7-E90A890331F1}.Debug|x64.ActiveCfg = Debug|x64
|
|
||||||
{88F1A057-74BE-FB62-9DD7-E90A890331F1}.Debug|x64.Build.0 = Debug|x64
|
|
||||||
{88F1A057-74BE-FB62-9DD7-E90A890331F1}.Release|x64.ActiveCfg = Release|x64
|
|
||||||
{88F1A057-74BE-FB62-9DD7-E90A890331F1}.Release|x64.Build.0 = Release|x64
|
|
||||||
{3F92E998-2BF5-783D-D47A-B1F3C0BC44C0}.Debug|x64.ActiveCfg = Debug|x64
|
|
||||||
{3F92E998-2BF5-783D-D47A-B1F3C0BC44C0}.Debug|x64.Build.0 = Debug|x64
|
|
||||||
{3F92E998-2BF5-783D-D47A-B1F3C0BC44C0}.Release|x64.ActiveCfg = Release|x64
|
|
||||||
{3F92E998-2BF5-783D-D47A-B1F3C0BC44C0}.Release|x64.Build.0 = Release|x64
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
|
||||||
HideSolutionNode = FALSE
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(NestedProjects) = preSolution
|
|
||||||
{C0FF640D-2C14-8DBE-F595-301E616989EF} = {53E47842-3FC8-3998-A828-34EB942B241A}
|
|
||||||
{89895BD8-7556-B6E3-9E6F-A48B8A9BEB71} = {53E47842-3FC8-3998-A828-34EB942B241A}
|
|
||||||
{38BD587B-248B-4C81-0D1F-BDA7F98B28E6} = {53E47842-3FC8-3998-A828-34EB942B241A}
|
|
||||||
{8900D8DD-F5DF-5679-FEF7-E14F6A56BDDA} = {53E47842-3FC8-3998-A828-34EB942B241A}
|
|
||||||
{2ECAB41A-1A98-A820-032C-1947EF988485} = {53E47842-3FC8-3998-A828-34EB942B241A}
|
|
||||||
{8EAD431C-7A4F-6EF2-630A-82464F4BF542} = {53E47842-3FC8-3998-A828-34EB942B241A}
|
|
||||||
{88F1A057-74BE-FB62-9DD7-E90A890331F1} = {53E47842-3FC8-3998-A828-34EB942B241A}
|
|
||||||
EndGlobalSection
|
|
||||||
EndGlobal
|
|
|
@ -1,121 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
|
||||||
<ProjectConfiguration Include="Debug|x64">
|
|
||||||
<Configuration>Debug</Configuration>
|
|
||||||
<Platform>x64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Release|x64">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>x64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>{BDC70008-29DE-FE9D-7255-8ABFDEAACF25}</ProjectGuid>
|
|
||||||
<IgnoreWarnCompileDuplicatedFilename>true</IgnoreWarnCompileDuplicatedFilename>
|
|
||||||
<Keyword>Win32Proj</Keyword>
|
|
||||||
<RootNamespace>SHADE_Application</RootNamespace>
|
|
||||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<PlatformToolset>v142</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<PlatformToolset>v142</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
||||||
<ImportGroup Label="ExtensionSettings">
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
|
||||||
<LinkIncremental>true</LinkIncremental>
|
|
||||||
<OutDir>bin\Debug_x86_64\SHADE_Application\</OutDir>
|
|
||||||
<IntDir>bin-int\Debug_x86_64\SHADE_Application\</IntDir>
|
|
||||||
<TargetName>SHADE_Application</TargetName>
|
|
||||||
<TargetExt>.exe</TargetExt>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
<OutDir>bin\Release_x86_64\SHADE_Application\</OutDir>
|
|
||||||
<IntDir>bin-int\Release_x86_64\SHADE_Application\</IntDir>
|
|
||||||
<TargetName>SHADE_Application</TargetName>
|
|
||||||
<TargetExt>.exe</TargetExt>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
|
||||||
<ClCompile>
|
|
||||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
|
||||||
<PrecompiledHeaderFile>SBpch.h</PrecompiledHeaderFile>
|
|
||||||
<WarningLevel>Level4</WarningLevel>
|
|
||||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<AdditionalIncludeDirectories>..\Dependencies\spdlog\include;..\SHADE_Engine\src;src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
|
||||||
<Optimization>Disabled</Optimization>
|
|
||||||
<MinimalRebuild>false</MinimalRebuild>
|
|
||||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
|
||||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
|
||||||
<LanguageStandard>stdcpplatest</LanguageStandard>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<EntryPointSymbol>wWinMainCRTStartup</EntryPointSymbol>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
<ClCompile>
|
|
||||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
|
||||||
<PrecompiledHeaderFile>SBpch.h</PrecompiledHeaderFile>
|
|
||||||
<WarningLevel>Level4</WarningLevel>
|
|
||||||
<PreprocessorDefinitions>_RELEASE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<AdditionalIncludeDirectories>..\Dependencies\spdlog\include;..\SHADE_Engine\src;src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<Optimization>Full</Optimization>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<MinimalRebuild>false</MinimalRebuild>
|
|
||||||
<StringPooling>true</StringPooling>
|
|
||||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
|
||||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
|
||||||
<LanguageStandard>stdcpplatest</LanguageStandard>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<EntryPointSymbol>wWinMainCRTStartup</EntryPointSymbol>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClInclude Include="src\Application\SBApplication.h" />
|
|
||||||
<ClInclude Include="src\SBpch.h" />
|
|
||||||
<ClInclude Include="src\Scenes\SBTestScene.h" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="src\Application\SBApplication.cpp" />
|
|
||||||
<ClCompile Include="src\SBpch.cpp">
|
|
||||||
<PrecompiledHeader>Create</PrecompiledHeader>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="src\Scenes\SBTestScene.cpp" />
|
|
||||||
<ClCompile Include="src\WinMain.cpp" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\SHADE_Engine\SHADE_Engine.vcxproj">
|
|
||||||
<Project>{3F92E998-2BF5-783D-D47A-B1F3C0BC44C0}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Label="ExtensionTargets">
|
|
||||||
</ImportGroup>
|
|
||||||
</Project>
|
|
|
@ -1,30 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup>
|
|
||||||
<Filter Include="Application">
|
|
||||||
<UniqueIdentifier>{D9DE78AF-4594-F1A4-CE88-EB7B3A3DE8A8}</UniqueIdentifier>
|
|
||||||
</Filter>
|
|
||||||
<Filter Include="Scenes">
|
|
||||||
<UniqueIdentifier>{86EEB3D0-7290-DEA6-5B4B-F2FA478C65F7}</UniqueIdentifier>
|
|
||||||
</Filter>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClInclude Include="src\Application\SBApplication.h">
|
|
||||||
<Filter>Application</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="src\SBpch.h" />
|
|
||||||
<ClInclude Include="src\Scenes\SBTestScene.h">
|
|
||||||
<Filter>Scenes</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="src\Application\SBApplication.cpp">
|
|
||||||
<Filter>Application</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="src\SBpch.cpp" />
|
|
||||||
<ClCompile Include="src\Scenes\SBTestScene.cpp">
|
|
||||||
<Filter>Scenes</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="src\WinMain.cpp" />
|
|
||||||
</ItemGroup>
|
|
||||||
</Project>
|
|
|
@ -1,9 +1,9 @@
|
||||||
project "SHADE_Application"
|
project "SHADE_Application"
|
||||||
kind "WindowedApp"
|
kind "WindowedApp"
|
||||||
language "C++"
|
language "C++"
|
||||||
cppdialect "C++latest"
|
cppdialect "C++20"
|
||||||
targetdir ("bin/" .. outputdir .. "/%{prj.name}")
|
targetdir (outputdir)
|
||||||
objdir ("bin-int/" .. outputdir .. "/%{prj.name}")
|
objdir (interdir)
|
||||||
systemversion "latest"
|
systemversion "latest"
|
||||||
pchheader "SBpch.h"
|
pchheader "SBpch.h"
|
||||||
pchsource "%{prj.location}/src/SBpch.cpp"
|
pchsource "%{prj.location}/src/SBpch.cpp"
|
||||||
|
@ -14,6 +14,7 @@ project "SHADE_Application"
|
||||||
files
|
files
|
||||||
{
|
{
|
||||||
"%{prj.location}/src/**.h",
|
"%{prj.location}/src/**.h",
|
||||||
|
"%{prj.location}/src/**.hpp",
|
||||||
"%{prj.location}/src/**.c",
|
"%{prj.location}/src/**.c",
|
||||||
"%{prj.location}/src/**.cpp",
|
"%{prj.location}/src/**.cpp",
|
||||||
"%{prj.location}/src/**.glsl",
|
"%{prj.location}/src/**.glsl",
|
||||||
|
@ -21,11 +22,27 @@ project "SHADE_Application"
|
||||||
|
|
||||||
includedirs
|
includedirs
|
||||||
{
|
{
|
||||||
"%{IncludeDir.spdlog}/include",
|
|
||||||
"../SHADE_Engine/src",
|
"../SHADE_Engine/src",
|
||||||
"src"
|
"src",
|
||||||
|
"%{IncludeDir.dotnet}/include",
|
||||||
|
"%{IncludeDir.SDL}/include",
|
||||||
|
}
|
||||||
|
|
||||||
|
externalincludedirs
|
||||||
|
{
|
||||||
|
"%{IncludeDir.RTTR}\\include",
|
||||||
|
"%{IncludeDir.fmod}/include",
|
||||||
|
"%{IncludeDir.VULKAN}/Source/SPIRV-Reflect",
|
||||||
|
"%{IncludeDir.VMA}/include",
|
||||||
|
"%{IncludeDir.VULKAN}/include",
|
||||||
|
"%{IncludeDir.spdlog}/include",
|
||||||
|
"%{IncludeDir.tinyddsloader}",
|
||||||
|
"%{IncludeDir.reactphysics3d}\\include",
|
||||||
|
"%{IncludeDir.yamlcpp}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
externalwarnings "Off"
|
||||||
|
|
||||||
flags
|
flags
|
||||||
{
|
{
|
||||||
"MultiProcessorCompile"
|
"MultiProcessorCompile"
|
||||||
|
@ -33,19 +50,47 @@ project "SHADE_Application"
|
||||||
|
|
||||||
links
|
links
|
||||||
{
|
{
|
||||||
"SHADE_Engine"
|
"SHADE_Engine",
|
||||||
|
"SHADE_Managed",
|
||||||
|
"yaml-cpp",
|
||||||
|
"SDL2.lib",
|
||||||
|
"SDL2main.lib"
|
||||||
}
|
}
|
||||||
|
|
||||||
postbuildcommands
|
libdirs
|
||||||
{
|
{
|
||||||
|
"%{IncludeDir.spdlog}/lib",
|
||||||
|
"%{IncludeDir.SDL}/lib"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
defines
|
||||||
|
{
|
||||||
|
"NOMINMAX"
|
||||||
|
}
|
||||||
|
|
||||||
|
disablewarnings
|
||||||
|
{
|
||||||
|
"4251",
|
||||||
|
"26812",
|
||||||
|
"26439",
|
||||||
|
"26451",
|
||||||
|
"26437",
|
||||||
|
"4275",
|
||||||
|
"4635"
|
||||||
|
}
|
||||||
|
|
||||||
|
linkoptions { "-IGNORE:4006" }
|
||||||
|
|
||||||
warnings 'Extra'
|
warnings 'Extra'
|
||||||
|
|
||||||
filter "configurations:Debug"
|
filter "configurations:Debug"
|
||||||
symbols "On"
|
symbols "On"
|
||||||
defines {"_DEBUG"}
|
defines {"_DEBUG", "SHEDITOR"}
|
||||||
|
|
||||||
filter "configurations:Release"
|
filter "configurations:Release"
|
||||||
optimize "On"
|
optimize "On"
|
||||||
defines{"_RELEASE"}
|
defines{"_RELEASE", "SHEDITOR"}
|
||||||
|
|
||||||
|
filter "configurations:Publish"
|
||||||
|
optimize "On"
|
||||||
|
defines{"_RELEASE", "_PUBLISH"}
|
||||||
|
|
|
@ -1,16 +1,53 @@
|
||||||
#include "SBpch.h"
|
#include "SBpch.h"
|
||||||
#include "SBApplication.h"
|
#include "SBApplication.h"
|
||||||
|
#include "ECS_Base/Managers/SHSystemManager.h"
|
||||||
|
|
||||||
|
//#define SHEDITOR
|
||||||
#ifdef SHEDITOR
|
#ifdef SHEDITOR
|
||||||
#include "Editor/SHEditor.h"
|
#include "Editor/SHEditor.h"
|
||||||
#include "Scenes/SBEditorScene.h"
|
//#include "Scenes/SBEditorScene.h"
|
||||||
#endif // SHEDITOR
|
#endif // SHEDITOR
|
||||||
|
|
||||||
#include "Tools/SHLogger.h"
|
#include "Tools/SHLogger.h"
|
||||||
|
#include "Tools/SHFileUtilties.h"
|
||||||
|
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
#include <ratio>
|
#include <ratio>
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
|
#include <SDL.h>
|
||||||
|
|
||||||
|
|
||||||
|
#include "Graphics/MiddleEnd/Meshes/SHPrimitiveGenerator.h"
|
||||||
|
|
||||||
|
// Managers
|
||||||
|
#include "ECS_Base/Managers/SHEntityManager.h"
|
||||||
|
#include "Scene/SHSceneManager.h"
|
||||||
|
|
||||||
|
// Systems
|
||||||
|
#include "AudioSystem/SHAudioSystem.h"
|
||||||
|
#include "Camera/SHCameraSystem.h"
|
||||||
|
#include "FRC/SHFramerateController.h"
|
||||||
|
#include "Graphics/MiddleEnd/Interface/SHDebugDrawSystem.h"
|
||||||
|
#include "Input/SHInputManager.h"
|
||||||
|
#include "Math/Transform/SHTransformSystem.h"
|
||||||
|
#include "Physics/System/SHPhysicsSystem.h"
|
||||||
|
#include "Physics/System/SHPhysicsDebugDrawSystem.h"
|
||||||
|
#include "Scripting/SHScriptEngine.h"
|
||||||
|
|
||||||
|
// Components
|
||||||
|
#include "Graphics/MiddleEnd/Interface/SHRenderable.h"
|
||||||
|
#include "Math/Transform/SHTransformComponent.h"
|
||||||
|
|
||||||
|
#include "Scenes/SBTestScene.h"
|
||||||
|
|
||||||
|
#include "Assets/SHAssetManager.h"
|
||||||
|
#include "Scenes/SBMainScene.h"
|
||||||
|
#include "Serialization/Configurations/SHConfigurationManager.h"
|
||||||
|
|
||||||
|
#include "Tools/SHLogger.h"
|
||||||
|
#include "Tools/SHDebugDraw.h"
|
||||||
|
|
||||||
|
using namespace SHADE;
|
||||||
|
|
||||||
namespace Sandbox
|
namespace Sandbox
|
||||||
{
|
{
|
||||||
|
@ -19,37 +56,139 @@ namespace Sandbox
|
||||||
(
|
(
|
||||||
_In_ HINSTANCE hInstance,
|
_In_ HINSTANCE hInstance,
|
||||||
_In_opt_ HINSTANCE hPrevInstance,
|
_In_opt_ HINSTANCE hPrevInstance,
|
||||||
_In_ LPWSTR lpCmdLine,
|
_In_ LPWSTR lpCmdLine,
|
||||||
_In_ INT nCmdShow
|
_In_ INT nCmdShow
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
SHLOG_TITLE("Initialising SBApplication")
|
// Set working directory
|
||||||
|
SHFileUtilities::SetWorkDirToExecDir();
|
||||||
|
WindowData wndData{};
|
||||||
|
auto& appConfig = SHConfigurationManager::LoadApplicationConfig(&wndData);
|
||||||
|
window.Create(hInstance, hPrevInstance, lpCmdLine, nCmdShow, wndData);
|
||||||
|
|
||||||
window.Create(hInstance, hPrevInstance, lpCmdLine, nCmdShow);
|
// Create Systems
|
||||||
|
|
||||||
|
SHSystemManager::CreateSystem<SHScriptEngine>();
|
||||||
|
SHSystemManager::CreateSystem<SHTransformSystem>();
|
||||||
|
SHSystemManager::CreateSystem<SHPhysicsSystem>();
|
||||||
|
SHSystemManager::CreateSystem<SHPhysicsDebugDrawSystem>();
|
||||||
|
|
||||||
#ifdef SHEDITOR
|
SHSystemManager::CreateSystem<SHAudioSystem>();
|
||||||
#else
|
SHSystemManager::CreateSystem<SHCameraSystem>();
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
SHSystemManager::CreateSystem<SHGraphicsSystem>();
|
||||||
|
SHGraphicsSystem* graphicsSystem = static_cast<SHGraphicsSystem*>(SHSystemManager::GetSystem<SHGraphicsSystem>());
|
||||||
|
|
||||||
|
// Link up SHDebugDraw
|
||||||
|
SHSystemManager::CreateSystem<SHDebugDrawSystem>();
|
||||||
|
SHDebugDraw::Init(SHSystemManager::GetSystem<SHDebugDrawSystem>());
|
||||||
|
|
||||||
|
#ifdef SHEDITOR
|
||||||
|
SDL_Init(SDL_INIT_VIDEO);
|
||||||
|
sdlWindow = SDL_CreateWindowFrom(window.GetHWND());
|
||||||
|
SHSystemManager::CreateSystem<SHEditor>();
|
||||||
|
if(auto editor = SHSystemManager::GetSystem<SHEditor>())
|
||||||
|
{
|
||||||
|
editor->SetSDLWindow(sdlWindow);
|
||||||
|
editor->SetSHWindow(&window);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Create Routines
|
||||||
|
SHSystemManager::RegisterRoutine<SHScriptEngine, SHScriptEngine::FrameSetUpRoutine>();
|
||||||
|
SHSystemManager::RegisterRoutine<SHScriptEngine, SHScriptEngine::UpdateRoutine>();
|
||||||
|
SHSystemManager::RegisterRoutine<SHScriptEngine, SHScriptEngine::LateUpdateRoutine>();
|
||||||
|
SHSystemManager::RegisterRoutine<SHScriptEngine, SHScriptEngine::FrameCleanUpRoutine>();
|
||||||
|
|
||||||
|
SHSystemManager::RegisterRoutine<SHTransformSystem, SHTransformSystem::TransformPostLogicUpdate>();
|
||||||
|
|
||||||
|
SHSystemManager::RegisterRoutine<SHPhysicsSystem, SHPhysicsSystem::PhysicsPreUpdate>();
|
||||||
|
SHSystemManager::RegisterRoutine<SHPhysicsSystem, SHPhysicsSystem::PhysicsFixedUpdate>();
|
||||||
|
SHSystemManager::RegisterRoutine<SHPhysicsSystem, SHPhysicsSystem::PhysicsPostUpdate>();
|
||||||
|
|
||||||
|
SHSystemManager::RegisterRoutine<SHPhysicsDebugDrawSystem, SHPhysicsDebugDrawSystem::PhysicsDebugDrawRoutine>();
|
||||||
|
|
||||||
|
SHSystemManager::RegisterRoutine<SHTransformSystem, SHTransformSystem::TransformPostPhysicsUpdate>();
|
||||||
|
SHSystemManager::RegisterRoutine<SHDebugDrawSystem, SHDebugDrawSystem::ProcessPointsRoutine>();
|
||||||
|
|
||||||
|
SHSystemManager::RegisterRoutine<SHScriptEngine, SHScriptEngine::GizmosDrawRoutine>();
|
||||||
|
SHSystemManager::RegisterRoutine<SHGraphicsSystem, SHGraphicsSystem::BatcherDispatcherRoutine>();
|
||||||
|
SHSystemManager::RegisterRoutine<SHGraphicsSystem, SHGraphicsSystem::BeginRoutine>();
|
||||||
|
|
||||||
|
//SHSystemManager::RegisterRoutine<SHCameraSystem, SHCameraSystem::EditorCameraUpdate>();
|
||||||
|
SHSystemManager::RegisterRoutine<SHCameraSystem, SHCameraSystem::CameraSystemUpdate>();
|
||||||
|
|
||||||
|
#ifdef SHEDITOR
|
||||||
|
SHSystemManager::RegisterRoutine<SHEditor, SHEditor::EditorRoutine>();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
SHSystemManager::RegisterRoutine<SHGraphicsSystem, SHGraphicsSystem::RenderRoutine>();
|
||||||
|
SHSystemManager::RegisterRoutine<SHGraphicsSystem, SHGraphicsSystem::EndRoutine>();
|
||||||
|
|
||||||
|
SHComponentManager::CreateComponentSparseSet<SHRigidBodyComponent>();
|
||||||
|
SHComponentManager::CreateComponentSparseSet<SHColliderComponent>();
|
||||||
|
SHComponentManager::CreateComponentSparseSet<SHTransformComponent>();
|
||||||
|
SHComponentManager::CreateComponentSparseSet<SHRenderable>();
|
||||||
|
//SHComponentManager::CreateComponentSparseSet<SHCameraComponent>();
|
||||||
|
|
||||||
|
SHAssetManager::Load();
|
||||||
|
|
||||||
|
|
||||||
|
SHSystemManager::RegisterRoutine<SHAudioSystem, SHAudioSystem::AudioRoutine>();
|
||||||
|
|
||||||
|
// Set up graphics system and windows
|
||||||
|
graphicsSystem->SetWindow(&window);
|
||||||
|
|
||||||
|
SHSystemManager::Init();
|
||||||
|
|
||||||
|
SHSceneManager::InitSceneManager<SBMainScene>(appConfig.startingSceneID);
|
||||||
|
|
||||||
|
SHFrameRateController::UpdateFRC();
|
||||||
|
|
||||||
|
// Link up SHDebugDraw
|
||||||
|
SHDebugDraw::Init(SHSystemManager::GetSystem<SHDebugDrawSystem>());
|
||||||
}
|
}
|
||||||
|
|
||||||
void SBApplication::Update(void)
|
void SBApplication::Update(void)
|
||||||
{
|
{
|
||||||
|
SHGraphicsSystem* graphicsSystem = SHADE::SHSystemManager::GetSystem<SHGraphicsSystem>();
|
||||||
|
SHEditor* editor = SHADE::SHSystemManager::GetSystem<SHEditor>();
|
||||||
//TODO: Change true to window is open
|
//TODO: Change true to window is open
|
||||||
while (!window.WindowShouldClose())
|
while (!window.WindowShouldClose())
|
||||||
{
|
{
|
||||||
#ifdef SHEDITOR
|
SHFrameRateController::UpdateFRC();
|
||||||
#else
|
SHInputManager::UpdateInput(SHFrameRateController::GetRawDeltaTime());
|
||||||
#endif
|
SHSceneManager::UpdateSceneManager();
|
||||||
|
#ifdef SHEDITOR
|
||||||
|
if(editor->editorState == SHEditor::State::PLAY)
|
||||||
|
SHSceneManager::SceneUpdate(0.016f);
|
||||||
|
#endif
|
||||||
|
SHSystemManager::RunRoutines(editor->editorState != SHEditor::State::PLAY, 0.016f);
|
||||||
|
editor->PollPicking();
|
||||||
|
|
||||||
|
static bool drawColliders = false;
|
||||||
|
if (SHInputManager::GetKeyDown(SHInputManager::SH_KEYCODE::F10))
|
||||||
|
{
|
||||||
|
drawColliders = !drawColliders;
|
||||||
|
SHSystemManager::GetSystem<SHPhysicsDebugDrawSystem>()->SetDebugDrawFlag(SHPhysicsDebugDrawSystem::DebugDrawFlags::COLLIDER, drawColliders);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
// Finish all graphics jobs first
|
||||||
|
graphicsSystem->AwaitGraphicsExecution();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SBApplication::Exit(void)
|
void SBApplication::Exit(void)
|
||||||
{
|
{
|
||||||
#ifdef SHEDITOR
|
#ifdef SHEDITOR
|
||||||
#else
|
SDL_DestroyWindow(sdlWindow);
|
||||||
#endif
|
SDL_Quit();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
SHSceneManager::Exit();
|
||||||
|
SHSystemManager::Exit();
|
||||||
|
SHAssetManager::Exit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
#ifndef SB_APPLICATION_H
|
#ifndef SB_APPLICATION_H
|
||||||
#define SB_APPLICATION_H
|
#define SB_APPLICATION_H
|
||||||
#include <Graphics/Windowing/SHWindow.h>
|
#include <Graphics/Windowing/SHWindow.h>
|
||||||
|
#include "Graphics/MiddleEnd/Interface/SHGraphicsSystem.h"
|
||||||
|
#include <SDL_video.h>
|
||||||
//using namespace SHADE;
|
//using namespace SHADE;
|
||||||
|
|
||||||
namespace Sandbox
|
namespace Sandbox
|
||||||
|
@ -9,6 +11,7 @@ namespace Sandbox
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
SHADE::SHWindow window;
|
SHADE::SHWindow window;
|
||||||
|
SDL_Window* sdlWindow;
|
||||||
//SHAppConfig config;
|
//SHAppConfig config;
|
||||||
public:
|
public:
|
||||||
SBApplication() = default;
|
SBApplication() = default;
|
||||||
|
|
|
@ -0,0 +1,62 @@
|
||||||
|
#include "SBpch.h"
|
||||||
|
#include "SBMainScene.h"
|
||||||
|
|
||||||
|
#include "ECS_Base/Managers/SHSystemManager.h"
|
||||||
|
#include "Graphics/MiddleEnd/Meshes/SHPrimitiveGenerator.h"
|
||||||
|
#include "ECS_Base/Managers/SHEntityManager.h"
|
||||||
|
#include "Graphics/MiddleEnd/Interface/SHRenderable.h"
|
||||||
|
#include "Scene/SHSceneManager.h"
|
||||||
|
#include "Graphics/MiddleEnd/Interface/SHGraphicsSystem.h"
|
||||||
|
#include "Scripting/SHScriptEngine.h"
|
||||||
|
#include "Math/Transform/SHTransformComponent.h"
|
||||||
|
#include "Graphics/MiddleEnd/Interface/SHMaterialInstance.h"
|
||||||
|
#include "Physics/Interface/SHRigidBodyComponent.h"
|
||||||
|
#include "Physics/Interface/SHColliderComponent.h"
|
||||||
|
#include "Graphics/MiddleEnd/Lights/SHLightComponent.h"
|
||||||
|
|
||||||
|
#include "Assets/SHAssetManager.h"
|
||||||
|
#include "Camera/SHCameraComponent.h"
|
||||||
|
#include "Resource/SHResourceManager.h"
|
||||||
|
#include "Serialization/SHSerialization.h"
|
||||||
|
|
||||||
|
using namespace SHADE;
|
||||||
|
|
||||||
|
namespace Sandbox
|
||||||
|
{
|
||||||
|
|
||||||
|
void SBMainScene::WindowFocusFunc([[maybe_unused]] void* window, int focused)
|
||||||
|
{
|
||||||
|
if (focused)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void SBMainScene::Load()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void SBMainScene::Init()
|
||||||
|
{
|
||||||
|
sceneName = SHSerialization::DeserializeSceneFromFile(sceneAssetID);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SBMainScene::Update(float dt)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void SBMainScene::Render()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void SBMainScene::Unload()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void SBMainScene::Free()
|
||||||
|
{
|
||||||
|
//SHSerialization::SerializeScene("resources/scenes/Scene01.SHADE");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "Scene/SHScene.h"
|
||||||
|
#include "Scene/SHSceneManager.h"
|
||||||
|
|
||||||
|
namespace Sandbox
|
||||||
|
{
|
||||||
|
class SBMainScene : public SHADE::SHScene
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
EntityID camera;
|
||||||
|
EntityID testObj;
|
||||||
|
std::vector<EntityID> stressTestObjects;
|
||||||
|
|
||||||
|
public:
|
||||||
|
virtual void Load();
|
||||||
|
virtual void Init();
|
||||||
|
virtual void Update(float dt);
|
||||||
|
virtual void Render();
|
||||||
|
virtual void Free();
|
||||||
|
virtual void Unload();
|
||||||
|
|
||||||
|
//TODO: Change to new window DO IT IN CPP TOO
|
||||||
|
void WindowFocusFunc(void* window, int focused);
|
||||||
|
|
||||||
|
SBMainScene(void) = default;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -1,14 +1,34 @@
|
||||||
#include "SBpch.h"
|
#include "SBpch.h"
|
||||||
#include "SBTestScene.h"
|
#include "SBTestScene.h"
|
||||||
|
|
||||||
|
#include "ECS_Base/Managers/SHSystemManager.h"
|
||||||
|
#include "Graphics/MiddleEnd/Meshes/SHPrimitiveGenerator.h"
|
||||||
|
#include "ECS_Base/Managers/SHEntityManager.h"
|
||||||
|
#include "Graphics/MiddleEnd/Interface/SHRenderable.h"
|
||||||
|
#include "Scene/SHSceneManager.h"
|
||||||
|
#include "Graphics/MiddleEnd/Interface/SHGraphicsSystem.h"
|
||||||
|
#include "Scripting/SHScriptEngine.h"
|
||||||
|
#include "Math/Transform/SHTransformComponent.h"
|
||||||
|
#include "Graphics/MiddleEnd/Interface/SHMaterialInstance.h"
|
||||||
|
#include "Physics/Interface/SHRigidBodyComponent.h"
|
||||||
|
#include "Physics/Interface/SHColliderComponent.h"
|
||||||
|
#include "Graphics/MiddleEnd/Lights/SHLightComponent.h"
|
||||||
|
|
||||||
|
#include "Assets/SHAssetManager.h"
|
||||||
|
#include "Camera/SHCameraComponent.h"
|
||||||
|
#include "Math/SHColour.h"
|
||||||
|
#include "Resource/SHResourceManager.h"
|
||||||
|
#include "Graphics/MiddleEnd/Interface/SHDebugDrawSystem.h"
|
||||||
|
#include "Tools/SHDebugDraw.h"
|
||||||
|
|
||||||
using namespace SHADE;
|
using namespace SHADE;
|
||||||
|
|
||||||
namespace Sandbox
|
namespace Sandbox
|
||||||
{
|
{
|
||||||
|
|
||||||
void SBTestScene::WindowFocusFunc([[maybe_unused]]void* window, int focused)
|
void SBTestScene::WindowFocusFunc([[maybe_unused]] void* window, int focused)
|
||||||
{
|
{
|
||||||
if(focused)
|
if (focused)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -21,16 +41,203 @@ namespace Sandbox
|
||||||
}
|
}
|
||||||
void SBTestScene::Init()
|
void SBTestScene::Init()
|
||||||
{
|
{
|
||||||
|
SHADE::SHGraphicsSystem* graphicsSystem = static_cast<SHADE::SHGraphicsSystem*>(SHADE::SHSystemManager::GetSystem<SHADE::SHGraphicsSystem>());
|
||||||
|
// Create temp meshes
|
||||||
|
const auto CUBE_MESH = SHADE::SHPrimitiveGenerator::Cube(*graphicsSystem);
|
||||||
|
|
||||||
|
//Test Racoon mesh
|
||||||
|
std::vector<Handle<SHMesh>> handles;
|
||||||
|
std::vector<Handle<SHTexture>> texHandles;
|
||||||
|
for (const auto& asset : SHAssetManager::GetAllAssets())
|
||||||
|
{
|
||||||
|
switch (asset.type)
|
||||||
|
{
|
||||||
|
case AssetType::MESH:
|
||||||
|
if (asset.name == "Raccoon")
|
||||||
|
handles.emplace_back(SHResourceManager::LoadOrGet<SHMesh>(asset.id));
|
||||||
|
break;
|
||||||
|
case AssetType::TEXTURE:
|
||||||
|
if (asset.name == "RaccoonPreTexturedVer1_Base9")
|
||||||
|
texHandles.emplace_back(SHResourceManager::LoadOrGet<SHTexture>(asset.id));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SHResourceManager::FinaliseChanges();
|
||||||
|
|
||||||
|
// Create Materials
|
||||||
|
auto baseRaccoonMat = graphicsSystem->AddOrGetBaseMaterialInstance();
|
||||||
|
auto baseRaccoonMatInstant = graphicsSystem->AddMaterialInstanceCopy(baseRaccoonMat);
|
||||||
|
baseRaccoonMatInstant->SetProperty("data.color", SHVec4(1.0f, 1.0f, 1.0f, 1.0f));
|
||||||
|
baseRaccoonMatInstant->SetProperty("data.textureIndex", 0);
|
||||||
|
baseRaccoonMatInstant->SetProperty("data.alpha", 0.1f);
|
||||||
|
|
||||||
|
auto baseFloorMatInstant = graphicsSystem->AddMaterialInstanceCopy(baseRaccoonMat);
|
||||||
|
baseFloorMatInstant->SetProperty("data.color", SHVec4(1.0f, 1.0f, 1.0f, 1.0f));
|
||||||
|
baseFloorMatInstant->SetProperty("data.textureIndex", 0);
|
||||||
|
baseFloorMatInstant->SetProperty("data.alpha", 0.1f);
|
||||||
|
|
||||||
|
auto dummy = SHEntityManager::CreateEntity<>();
|
||||||
|
|
||||||
|
auto floor = SHEntityManager::CreateEntity<SHTransformComponent,SHRenderable, SHRigidBodyComponent, SHColliderComponent>();
|
||||||
|
auto& floorRenderable = *SHComponentManager::GetComponent_s<SHRenderable>(floor);
|
||||||
|
auto& floorTransform = *SHComponentManager::GetComponent_s<SHTransformComponent>(floor);
|
||||||
|
auto& floorRigidBody = *SHComponentManager::GetComponent_s<SHRigidBodyComponent>(floor);
|
||||||
|
auto& floorCollider = *SHComponentManager::GetComponent_s<SHColliderComponent>(floor);
|
||||||
|
|
||||||
|
floorRenderable.SetMesh(CUBE_MESH);
|
||||||
|
floorRenderable.SetMaterial(graphicsSystem->GetDefaultMaterialInstance());
|
||||||
|
|
||||||
|
floorTransform.SetWorldScale({ 17.5f, 0.5f, 17.5f });
|
||||||
|
floorTransform.SetWorldPosition({ 0.0f, -3.0f, -5.0f });
|
||||||
|
|
||||||
|
floorRigidBody.SetType(SHRigidBodyComponent::Type::STATIC);
|
||||||
|
|
||||||
|
floorCollider.AddBoundingBox();
|
||||||
|
|
||||||
|
// Create blank entity with a script
|
||||||
|
//testObj = SHADE::SHEntityManager::CreateEntity<SHRenderable, SHTransformComponent>();
|
||||||
|
//auto& testObjRenderable = *SHComponentManager::GetComponent<SHRenderable>(testObj);
|
||||||
|
//testObjRenderable.Mesh = CUBE_MESH;
|
||||||
|
//testObjRenderable.SetMaterial(matInst);
|
||||||
|
|
||||||
|
//raccoon =======================================================================================================================
|
||||||
|
auto racoon = SHEntityManager::CreateEntity<SHRenderable, SHTransformComponent, SHRigidBodyComponent, SHColliderComponent>(MAX_EID, "Player");
|
||||||
|
auto& racoonRenderable = *SHComponentManager::GetComponent_s<SHRenderable>(racoon);
|
||||||
|
auto& racoonTransform = *SHComponentManager::GetComponent_s<SHTransformComponent>(racoon);
|
||||||
|
auto& racoonRigidBody = *SHComponentManager::GetComponent_s<SHRigidBodyComponent>(racoon);
|
||||||
|
auto& racoonCollider = *SHComponentManager::GetComponent_s<SHColliderComponent>(racoon);
|
||||||
|
|
||||||
|
racoonRenderable.SetMesh(handles.front());
|
||||||
|
racoonRenderable.SetMaterial(baseRaccoonMatInstant);
|
||||||
|
|
||||||
|
racoonTransform.SetWorldScale({ 2.0f, 2.0f, 2.0f });
|
||||||
|
racoonTransform.SetWorldPosition({ -3.0f, -2.0f, -5.0f });
|
||||||
|
|
||||||
|
racoonCollider.AddBoundingBox();
|
||||||
|
racoonCollider.GetCollisionShape(0).SetPositionOffset(SHVec3(0.0f,0.5f,0.0f));
|
||||||
|
racoonCollider.GetCollisionShape(0).SetBoundingBox(SHVec3(0.5f, 0.5f, 0.5f));
|
||||||
|
|
||||||
|
auto racoonItemLocation = SHEntityManager::CreateEntity<SHTransformComponent>();
|
||||||
|
auto& racoonItemLocationTransform = *SHComponentManager::GetComponent_s<SHTransformComponent>(racoonItemLocation);
|
||||||
|
SHSceneManager::GetCurrentSceneGraph().SetParent(racoonItemLocation, racoon);
|
||||||
|
|
||||||
|
auto racoonCamera = SHEntityManager::CreateEntity<SHTransformComponent>();
|
||||||
|
SHSceneManager::GetCurrentSceneGraph().SetParent(racoonCamera, racoon);
|
||||||
|
//================================================================================================================================
|
||||||
|
|
||||||
|
//item ===========================================================================================================================
|
||||||
|
auto item = SHEntityManager::CreateEntity<SHRenderable, SHTransformComponent, SHRigidBodyComponent, SHColliderComponent>(MAX_EID, "item");
|
||||||
|
auto& itemRenderable = *SHComponentManager::GetComponent_s<SHRenderable>(item);
|
||||||
|
auto& itemTransform = *SHComponentManager::GetComponent_s<SHTransformComponent>(item);
|
||||||
|
auto& itemRigidBody = *SHComponentManager::GetComponent_s<SHRigidBodyComponent>(item);
|
||||||
|
auto& itemCollider = *SHComponentManager::GetComponent_s<SHColliderComponent>(item);
|
||||||
|
|
||||||
|
itemRenderable.SetMesh(handles.front());
|
||||||
|
itemRenderable.SetMaterial(baseRaccoonMatInstant);
|
||||||
|
|
||||||
|
itemTransform.SetWorldScale({ 2.0f, 2.0f, 2.0f });
|
||||||
|
itemTransform.SetWorldPosition({ 0.0f, -2.0f, -5.0f });
|
||||||
|
|
||||||
|
itemCollider.AddBoundingBox();
|
||||||
|
itemCollider.AddBoundingBox(SHVec3(2.0f,2.0f,2.0f));
|
||||||
|
itemCollider.GetCollisionShape(1).SetIsTrigger(true);
|
||||||
|
|
||||||
|
itemCollider.GetCollisionShape(0).SetPositionOffset(SHVec3(0.0f, 0.5f, 0.0f));
|
||||||
|
itemCollider.GetCollisionShape(0).SetBoundingBox(SHVec3(0.5f, 0.5f, 0.5f));
|
||||||
|
|
||||||
|
itemCollider.GetCollisionShape(1).SetPositionOffset(SHVec3(0.0f, 0.5f, 0.0f));
|
||||||
|
itemCollider.GetCollisionShape(1).SetBoundingBox(SHVec3(1.0f, 1.0f, 1.0f));
|
||||||
|
|
||||||
|
itemRigidBody.SetInterpolate(false);
|
||||||
|
itemRigidBody.SetFreezeRotationX(true);
|
||||||
|
itemRigidBody.SetFreezeRotationY(true);
|
||||||
|
itemRigidBody.SetFreezeRotationZ(true);
|
||||||
|
//================================================================================================================================
|
||||||
|
|
||||||
|
//AI =============================================================================================================================
|
||||||
|
auto AI = SHEntityManager::CreateEntity<SHRenderable, SHTransformComponent, SHRigidBodyComponent, SHColliderComponent>(MAX_EID, "AI");
|
||||||
|
auto& AIRenderable = *SHComponentManager::GetComponent_s<SHRenderable>(AI);
|
||||||
|
auto& AITransform = *SHComponentManager::GetComponent_s<SHTransformComponent>(AI);
|
||||||
|
auto& AIRigidBody = *SHComponentManager::GetComponent_s<SHRigidBodyComponent>(AI);
|
||||||
|
auto& AICollider = *SHComponentManager::GetComponent_s<SHColliderComponent>(AI);
|
||||||
|
|
||||||
|
AIRenderable.SetMesh(handles.front());
|
||||||
|
AIRenderable.SetMaterial(baseRaccoonMatInstant);
|
||||||
|
|
||||||
|
AITransform.SetWorldScale({ 2.0f, 2.0f, 2.0f });
|
||||||
|
AITransform.SetWorldPosition({ -8.0f, -2.0f, 2.5f });
|
||||||
|
|
||||||
|
AICollider.AddBoundingBox();
|
||||||
|
AICollider.GetCollisionShape(0).SetPositionOffset(SHVec3(0.0f, 0.5f, 0.0f));
|
||||||
|
AICollider.GetCollisionShape(0).SetBoundingBox(SHVec3(0.5f, 0.5f, 0.5f));
|
||||||
|
|
||||||
|
AIRigidBody.SetInterpolate(false);
|
||||||
|
AIRigidBody.SetFreezeRotationX(true);
|
||||||
|
AIRigidBody.SetFreezeRotationY(true);
|
||||||
|
AIRigidBody.SetFreezeRotationZ(true);
|
||||||
|
//================================================================================================================================
|
||||||
|
|
||||||
|
SHADE::SHScriptEngine* scriptEngine = static_cast<SHADE::SHScriptEngine*>(SHADE::SHSystemManager::GetSystem<SHADE::SHScriptEngine>());
|
||||||
|
scriptEngine->AddScript(racoon, "PlayerController");
|
||||||
|
scriptEngine->AddScript(racoon, "PickAndThrow");
|
||||||
|
scriptEngine->AddScript(racoonCamera, "ThirdPersonCamera");
|
||||||
|
scriptEngine->AddScript(AI, "AIPrototype");
|
||||||
|
scriptEngine->AddScript(item, "Item");
|
||||||
|
|
||||||
|
auto raccoonShowcase = SHEntityManager::CreateEntity<SHRenderable, SHTransformComponent>();
|
||||||
|
auto& renderableShowcase = *SHComponentManager::GetComponent_s<SHRenderable>(raccoonShowcase);
|
||||||
|
auto& transformShowcase = *SHComponentManager::GetComponent_s<SHTransformComponent>(raccoonShowcase);
|
||||||
|
|
||||||
|
renderableShowcase.SetMesh(handles.front());
|
||||||
|
renderableShowcase.SetMaterial(baseRaccoonMatInstant);
|
||||||
|
renderableShowcase.GetModifiableMaterial()->SetProperty("data.color", SHVec4(1.0f, 1.0f, 1.0f, 1.0f));
|
||||||
|
renderableShowcase.GetModifiableMaterial()->SetProperty("data.alpha", 1.0f);
|
||||||
|
renderableShowcase.GetModifiableMaterial()->SetProperty("data.textureIndex", 0);
|
||||||
|
|
||||||
|
transformShowcase.SetWorldPosition({ 3.0f, -1.0f, -1.0f });
|
||||||
|
transformShowcase.SetLocalScale({ 5.0f, 5.0f, 5.0f });
|
||||||
|
scriptEngine->AddScript(raccoonShowcase, "RaccoonShowcase");
|
||||||
|
|
||||||
|
SHComponentManager::AddComponent<SHCameraComponent>(0);
|
||||||
|
SHComponentManager::AddComponent<SHLightComponent>(0);
|
||||||
|
SHComponentManager::RemoveComponent <SHRigidBodyComponent>(0);
|
||||||
|
SHComponentManager::RemoveComponent <SHColliderComponent>(0);
|
||||||
|
|
||||||
|
auto ambientLight = SHEntityManager::CreateEntity<SHLightComponent>();
|
||||||
|
SHComponentManager::GetComponent<SHLightComponent>(ambientLight)->SetColor(SHColour::WHITE);
|
||||||
|
SHComponentManager::GetComponent<SHLightComponent>(ambientLight)->SetStrength(0.25f);
|
||||||
|
SHComponentManager::GetComponent<SHLightComponent>(ambientLight)->SetType(SH_LIGHT_TYPE::AMBIENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SBTestScene::Update(float dt)
|
void SBTestScene::Update(float dt)
|
||||||
{
|
{
|
||||||
(void)dt;
|
static float rotation = 0.0f;
|
||||||
|
SHVec3 direction{0.0f, 0.0f, 1.0f};
|
||||||
|
direction = SHVec3::RotateY(direction, rotation);
|
||||||
|
|
||||||
|
auto* lightComp =SHComponentManager::GetComponent<SHLightComponent>(0);
|
||||||
|
lightComp->SetDirection (direction);
|
||||||
|
rotation += 0.005f;
|
||||||
|
//auto& transform = *SHADE::SHComponentManager::GetComponent_s<SHADE::SHTransformComponent>(testObj);
|
||||||
|
|
||||||
|
//transform.SetWorldPosition({1.0f, 1.0f, -1.0f});
|
||||||
|
//transform.SetWorldRotation(0.0f, 0.0f + rotation, 0.0f);
|
||||||
|
//rotation += dt * 0.2f;
|
||||||
|
|
||||||
|
// Destroy entity if space is pressed
|
||||||
|
if (GetKeyState(VK_SPACE) & 0x8000)
|
||||||
|
{
|
||||||
|
rotation = 0.0f;
|
||||||
|
SHADE::SHScriptEngine* scriptEngine = static_cast<SHADE::SHScriptEngine*>(SHADE::SHSystemManager::GetSystem<SHADE::SHScriptEngine>());
|
||||||
|
scriptEngine->RemoveAllScripts(testObj);
|
||||||
|
}
|
||||||
|
|
||||||
|
SHDebugDraw::Cube(SHColour::CRIMSON, SHVec3(1.0f, 0.0f, 0.0f), SHVec3(1.0f, 1.0f, 1.0f));
|
||||||
}
|
}
|
||||||
|
|
||||||
void SBTestScene::Render()
|
void SBTestScene::Render()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SBTestScene::Unload()
|
void SBTestScene::Unload()
|
||||||
|
@ -41,8 +248,4 @@ namespace Sandbox
|
||||||
{
|
{
|
||||||
//SHSerialization::SerializeScene("resources/scenes/Scene01.SHADE");
|
//SHSerialization::SerializeScene("resources/scenes/Scene01.SHADE");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,8 @@ namespace Sandbox
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
EntityID camera;
|
EntityID camera;
|
||||||
|
EntityID testObj;
|
||||||
|
std::vector<EntityID> stressTestObjects;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual void Load();
|
virtual void Load();
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue