diff --git a/Slang/CMakeLists.txt b/Slang/CMakeLists.txt
new file mode 100644
index 0000000..9b80dce
--- /dev/null
+++ b/Slang/CMakeLists.txt
@@ -0,0 +1,7 @@
+cmake_minimum_required(VERSION 3.21.4)
+
+# set the project name
+project(Slang)
+
+# add the executable
+add_executable(Slang Main.cpp)
\ No newline at end of file
diff --git a/Slang/Main.cpp b/Slang/Main.cpp
index 86b05a6..36ecf9f 100644
--- a/Slang/Main.cpp
+++ b/Slang/Main.cpp
@@ -663,7 +663,7 @@ int main(int argc, char* argv[])
}
#else
// If in developer mode
- std::string scriptPath = "./script.slg";
+ std::string scriptPath = "./Pong-Example-Project/script.slg";
#if DEVELOPER_MESSAGES == true
cout << scriptPath << endl;
#endif
diff --git a/Slang/Pong-Example-Project/arial.ttf b/Slang/Pong-Example-Project/arial.ttf
deleted file mode 100644
index ff0815c..0000000
Binary files a/Slang/Pong-Example-Project/arial.ttf and /dev/null differ
diff --git a/Slang/Pong-Example-Project/circle.png b/Slang/Pong-Example-Project/circle.png
deleted file mode 100644
index 9508851..0000000
Binary files a/Slang/Pong-Example-Project/circle.png and /dev/null differ
diff --git a/Slang/Pong-Example-Project/net.png b/Slang/Pong-Example-Project/net.png
deleted file mode 100644
index 4e3ca56..0000000
Binary files a/Slang/Pong-Example-Project/net.png and /dev/null differ
diff --git a/Slang/Pong-Example-Project/script.slg b/Slang/Pong-Example-Project/script.slg
deleted file mode 100644
index 986db94..0000000
--- a/Slang/Pong-Example-Project/script.slg
+++ /dev/null
@@ -1,215 +0,0 @@
-int SCREENW = 900
-int SCREENH = 600
-
-int scoreOne = 0
-int scoreTwo = 0
-
-float ballSpeed = 400
-
-float paddleMoveSpeed = 800
-
-// Main is always run at the VERY BEGINNING. Start() is the start of GRAPHICS
-// so if you never call SLB.Grapgics.Init, then Start won't run
-func Main()
-{
- // Immediately creates the window, then Start(), then the game loop. The game loop calls Update() every frame
- SLB.Graphics.Init("This is a pong game", SCREENW, SCREENH)
-}
-
-func Start()
-{
- float centerX = SCREENW / 2
- float centerY = SCREENH / 2
- global Vec2 centerOfScreen = NVec2(centerX, centerY)
-
- Vec2 ballScale = NVec2(10, 10)
- Vec2 ballPos = centerOfScreen
-
- Vec2 paddleScale = NVec2(4, 70)
- float yPosPaddle = centerOfScreen.y
-
- Vec2 lPaddlePosition = NVec2(15, yPosPaddle)
- global Vec2 lPaddleTargetPosition = NVec2(15, yPosPaddle)
-
- float rOffset = SCREENW - 15
- Vec2 rPaddlePosition = NVec2(rOffset, yPosPaddle)
- global Vec2 rPaddleTargetPosition = NVec2(rOffset, yPosPaddle)
-
- global Sprite ballSpr = SLB.Graphics.Sprite("./square.png", ballPos, ballScale, 0)
- global Sprite lPaddle = SLB.Graphics.Sprite("./square.png", lPaddlePosition, paddleScale, 0)
- global Sprite rPaddle = SLB.Graphics.Sprite("./square.png", rPaddlePosition, paddleScale, 0)
-
- Vec2 netScale = NVec2(1, SCREENH)
- global Sprite net = SLB.Graphics.Sprite("./net.png", centerOfScreen, netScale, 0)
-
- float leftOffset = SCREENW / 4
- Vec2 scoreOnePos = NVec2(leftOffset, 30)
- global Text scoreTextOne = SLB.Graphics.Text("0", "./arial.ttf", scoreOnePos, 60, 0, 255, 255, 255)
- float rightOffset = SCREENW - (SCREENW / 4)
- Vec2 scoreTwoPos = NVec2(rightOffset, 30)
- global Text scoreTextTwo = SLB.Graphics.Text("0", "./arial.ttf", scoreTwoPos, 60, 0, 255, 255, 255)
-
- global Vec2 ballVelocity = NVec2(ballSpeed, ballSpeed)
-}
-
-func Update(deltaTime)
-{
- float FPS = 1 / deltaTime
- print "FPS: " + FPS
-
- // Handles Left Paddle Movement
- //
- if GetKey("W") == true
- {
- float newX = lPaddle.position.x
- // Subtract from Y to move up, because vertical coordinates are reversed
- float newY = lPaddleTargetPosition.y - paddleMoveSpeed * deltaTime
- newY = Clamp(newY, 0 + lPaddle.scale.y / 2, SCREENH - lPaddle.scale.y / 2)
- lPaddleTargetPosition = NVec2(newX, newY)
- }
- if GetKey("S") == true
- {
- float newX = lPaddle.position.x
- // Add to Y to move down, because vertical coordinates are reversed
- float newY = lPaddleTargetPosition.y + paddleMoveSpeed * deltaTime
- newY = Clamp(newY, 0 + lPaddle.scale.y / 2, SCREENH - lPaddle.scale.y / 2)
- lPaddleTargetPosition = NVec2(newX, newY)
- }
- // Lerps from old position to destination smoothly
- float oldY = lPaddle.position.y
- float stopSpeed = deltaTime * 6
- float newY = lPaddleTargetPosition.y
- float lerpedY = Lerp(oldY, newY, stopSpeed)
- lPaddle.position = NVec2(newX, lerpedY)
-
- // Handles Right Paddle Movement
- //
- if GetKey("UP") == true
- {
- float newX = rPaddle.position.x
- // Subtract from Y to move up, because vertical coordinates are reversed
- float newY = rPaddleTargetPosition.y - paddleMoveSpeed * deltaTime
- newY = Clamp(newY, 0 + rPaddle.scale.y / 2, SCREENH - rPaddle.scale.y / 2)
- rPaddleTargetPosition = NVec2(newX, newY)
- }
- if GetKey("DOWN") == true
- {
- float newX = rPaddle.position.x
- // Add to Y to move down, because vertical coordinates are reversed
- float newY = rPaddleTargetPosition.y + paddleMoveSpeed * deltaTime
- newY = Clamp(newY, 0 + rPaddle.scale.y / 2, SCREENH - rPaddle.scale.y / 2)
- rPaddleTargetPosition = NVec2(newX, newY)
- }
- // Lerps from old position to destination smoothly
- float oldY = rPaddle.position.y
- float stopSpeed = deltaTime * 6
- float newY = rPaddleTargetPosition.y
- float lerpedY = Lerp(oldY, newY, stopSpeed)
- rPaddle.position = NVec2(newX, lerpedY)
-
- Vec2 scaledVelocity = ballVelocity
- scaledVelocity *= deltaTime
- ballSpr.position += scaledVelocity
-
- // Finally draws all of the sprites
- SLB.Graphics.Draw(ballSpr)
- SLB.Graphics.Draw(lPaddle)
- SLB.Graphics.Draw(rPaddle)
-
- SLB.Graphics.Draw(net)
-
- SLB.Graphics.DrawText(scoreTextOne)
- SLB.Graphics.DrawText(scoreTextTwo)
-
- HandleBallBounce()
-}
-
-func HandleBallBounce()
-{
- float ballX = ballSpr.position.x
- float ballY = ballSpr.position.y
- float scaleY = ballSpr.scale.y
-
- float topEdge = ballY - scaleY/2
- // Checks if the ball is touching the ceiling
- if topEdge <= 0
- {
- float vX = ballVelocity.x
- float vY = ballVelocity.y
- vY *= -1
- ballVelocity = NVec2(vX, vY)
- return 0
- }
- float bottomEdge = ballY + scaleY/2
- // Checks if the ball is touching the floor
- if bottomEdge >= SCREENH
- {
- float vX = ballVelocity.x
- float vY = ballVelocity.y
- vY *= -1
- ballVelocity = NVec2(vX, vY)
- return 0
- }
-
- // Checks if ball is in player 1 goal
- if ballX < 0
- {
- Vec2 ballPos = centerOfScreen
- ballPos -= ballSpr.scale
- ballPos.x -= SCREENW / 3
- scoreTwo += 1
- ballSpr.position = ballPos
- ballVelocity = NVec2(ballSpeed, 0)
- scoreTextTwo.content = Round(scoreTwo)
- }
- // Checks if ball is in player 2 goal
- if ballX > SCREENW
- {
- Vec2 ballPos = centerOfScreen
- ballPos -= ballSpr.scale
- ballPos.x += SCREENW / 3
- scoreOne += 1
- ballSpr.position = ballPos
- ballVelocity = NVec2(-ballSpeed, 0)
- scoreTextOne.content = Round(scoreOne)
- }
-
- // Checks if colliding with left paddle
- bool coll = Colliding(ballSpr, lPaddle)
- if coll == true
- {
- float difference = lPaddle.position.y
- difference -= ballY
- float paddleHeight = lPaddle.scale.y
- float normalizedRelativeIntersectionY = difference / (paddleHeight / 2)
- float bounceAngle = normalizedRelativeIntersectionY * 0.523599
- float ballVx = ballSpeed
- ballVx *= Cos(bounceAngle)
- float ballVy = ballSpeed
- ballVy *= Sin(bounceAngle)
- ballVy *= -1
- ballVelocity = NVec2(ballVx, ballVy)
- }
- // Checks if colliding with right paddle
- bool coll = Colliding(ballSpr, rPaddle)
- if coll == true
- {
- float difference = rPaddle.position.y
- difference -= ballY
- float paddleHeight = rPaddle.scale.y
- float normalizedRelativeIntersectionY = difference / (paddleHeight / 2)
- float bounceAngle = normalizedRelativeIntersectionY * 0.523599
- float ballVx = ballSpeed
- ballVx *= Cos(bounceAngle)
- ballVx *= -1
- float ballVy = ballSpeed
- ballVy *= Sin(bounceAngle)
- ballVelocity = NVec2(ballVx, ballVy)
- }
-}
-
-func Colliding(a, b)
-{
- bool b = SLB.Physics.AxisAlignedCollision(a, b)
- return b
-}
diff --git a/Slang/Pong-Example-Project/square.png b/Slang/Pong-Example-Project/square.png
deleted file mode 100644
index 89d23b0..0000000
Binary files a/Slang/Pong-Example-Project/square.png and /dev/null differ
diff --git a/Slang/Slang.vcxproj b/Slang/Slang.vcxproj
index 09e7f0a..cdbb0a0 100644
--- a/Slang/Slang.vcxproj
+++ b/Slang/Slang.vcxproj
@@ -171,7 +171,6 @@
-
diff --git a/Slang/Slang.vcxproj.filters b/Slang/Slang.vcxproj.filters
index d0a7217..5ddfc17 100644
--- a/Slang/Slang.vcxproj.filters
+++ b/Slang/Slang.vcxproj.filters
@@ -49,9 +49,6 @@
-
- Source Files
-
Resource Files