@quenty/camera 7.1.0 → 7.2.1-canary.276.672e37b.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/package.json +14 -14
- package/src/Client/CameraStackService.lua +15 -1
- package/src/Client/Effects/DefaultCamera.lua +13 -4
- package/test/default.project.json +11 -1
- package/test/scripts/Client/ClientMain.client.lua +11 -0
- package/test/scripts/Server/ServerMain.server.lua +8 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,25 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [7.2.1-canary.276.672e37b.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/camera@7.2.0...@quenty/camera@7.2.1-canary.276.672e37b.0) (2022-07-31)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @quenty/camera
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# [7.2.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/camera@7.1.0...@quenty/camera@7.2.0) (2022-07-02)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Bug Fixes
|
|
18
|
+
|
|
19
|
+
* Can clean up services properly ([eb45e03](https://github.com/Quenty/NevermoreEngine/commit/eb45e03ce2897b18f1ae460974bf2bbb9e27cb97))
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
6
25
|
# [7.1.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/camera@7.0.0...@quenty/camera@7.1.0) (2022-06-21)
|
|
7
26
|
|
|
8
27
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quenty/camera",
|
|
3
|
-
"version": "7.1.0",
|
|
3
|
+
"version": "7.2.1-canary.276.672e37b.0",
|
|
4
4
|
"description": "Quenty's camera system for Roblox",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Roblox",
|
|
@@ -25,23 +25,23 @@
|
|
|
25
25
|
"Quenty"
|
|
26
26
|
],
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@quenty/acceltween": "
|
|
29
|
-
"@quenty/baseobject": "
|
|
30
|
-
"@quenty/cframeutils": "
|
|
31
|
-
"@quenty/cubicspline": "
|
|
32
|
-
"@quenty/inputobjectutils": "
|
|
33
|
-
"@quenty/loader": "
|
|
34
|
-
"@quenty/maid": "
|
|
35
|
-
"@quenty/math": "
|
|
36
|
-
"@quenty/qframe": "
|
|
37
|
-
"@quenty/servicebag": "
|
|
38
|
-
"@quenty/spring": "
|
|
28
|
+
"@quenty/acceltween": "2.2.0",
|
|
29
|
+
"@quenty/baseobject": "5.0.1-canary.276.672e37b.0",
|
|
30
|
+
"@quenty/cframeutils": "4.0.0",
|
|
31
|
+
"@quenty/cubicspline": "5.0.0",
|
|
32
|
+
"@quenty/inputobjectutils": "3.0.0",
|
|
33
|
+
"@quenty/loader": "5.0.0",
|
|
34
|
+
"@quenty/maid": "2.3.1-canary.276.672e37b.0",
|
|
35
|
+
"@quenty/math": "2.2.0",
|
|
36
|
+
"@quenty/qframe": "5.1.1-canary.276.672e37b.0",
|
|
37
|
+
"@quenty/servicebag": "5.0.1-canary.276.672e37b.0",
|
|
38
|
+
"@quenty/spring": "5.0.0"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@quenty/camerastoryutils": "
|
|
41
|
+
"@quenty/camerastoryutils": "5.1.1-canary.276.672e37b.0"
|
|
42
42
|
},
|
|
43
43
|
"publishConfig": {
|
|
44
44
|
"access": "public"
|
|
45
45
|
},
|
|
46
|
-
"gitHead": "
|
|
46
|
+
"gitHead": "672e37b9bbb8b2d4c4c6c69ed2647335be0bc469"
|
|
47
47
|
}
|
|
@@ -15,6 +15,7 @@ local CustomCameraEffect = require("CustomCameraEffect")
|
|
|
15
15
|
local DefaultCamera = require("DefaultCamera")
|
|
16
16
|
local ImpulseCamera = require("ImpulseCamera")
|
|
17
17
|
local ServiceBag = require("ServiceBag")
|
|
18
|
+
local Maid = require("Maid")
|
|
18
19
|
|
|
19
20
|
assert(RunService:IsClient(), "[CameraStackService] - Only require CameraStackService on client")
|
|
20
21
|
|
|
@@ -27,18 +28,23 @@ local CameraStackService = {}
|
|
|
27
28
|
function CameraStackService:Init(serviceBag)
|
|
28
29
|
assert(ServiceBag.isServiceBag(serviceBag), "Not a valid service bag")
|
|
29
30
|
|
|
31
|
+
self._maid = Maid.new()
|
|
32
|
+
self._key = HttpService:GenerateGUID(false)
|
|
33
|
+
|
|
30
34
|
self._stack = {}
|
|
31
35
|
self._disabledSet = {}
|
|
32
36
|
|
|
33
37
|
-- Initialize default cameras
|
|
34
38
|
self._rawDefaultCamera = DefaultCamera.new()
|
|
39
|
+
self._maid:GiveTask(self._rawDefaultCamera)
|
|
40
|
+
|
|
35
41
|
self._impulseCamera = ImpulseCamera.new()
|
|
36
42
|
self._defaultCamera = (self._rawDefaultCamera + self._impulseCamera):SetMode("Relative")
|
|
37
43
|
|
|
38
44
|
-- Add camera to stack
|
|
39
45
|
self:Add(self._defaultCamera)
|
|
40
46
|
|
|
41
|
-
RunService:BindToRenderStep("CameraStackUpdateInternal", Enum.RenderPriority.Camera.Value + 75, function()
|
|
47
|
+
RunService:BindToRenderStep("CameraStackUpdateInternal" .. self._key, Enum.RenderPriority.Camera.Value + 75, function()
|
|
42
48
|
debug.profilebegin("CameraStackUpdate")
|
|
43
49
|
|
|
44
50
|
if next(self._disabledSet) then
|
|
@@ -52,6 +58,10 @@ function CameraStackService:Init(serviceBag)
|
|
|
52
58
|
|
|
53
59
|
debug.profileend()
|
|
54
60
|
end)
|
|
61
|
+
|
|
62
|
+
self._maid:GiveTask(function()
|
|
63
|
+
RunService:UnbindFromRenderStep("CameraStackUpdateInternal" .. self._key)
|
|
64
|
+
end)
|
|
55
65
|
end
|
|
56
66
|
|
|
57
67
|
function CameraStackService:Start()
|
|
@@ -271,4 +281,8 @@ function CameraStackService:Add(state)
|
|
|
271
281
|
table.insert(self._stack, state)
|
|
272
282
|
end
|
|
273
283
|
|
|
284
|
+
function CameraStackService:Destroy()
|
|
285
|
+
self._maid:DoCleaning()
|
|
286
|
+
end
|
|
287
|
+
|
|
274
288
|
return CameraStackService
|
|
@@ -10,6 +10,7 @@ local require = require(script.Parent.loader).load(script)
|
|
|
10
10
|
|
|
11
11
|
local RunService = game:GetService("RunService")
|
|
12
12
|
local Workspace = game:GetService("Workspace")
|
|
13
|
+
local HttpService = game:GetService("HttpService")
|
|
13
14
|
|
|
14
15
|
local CameraState = require("CameraState")
|
|
15
16
|
local SummedCamera = require("SummedCamera")
|
|
@@ -25,6 +26,7 @@ DefaultCamera.ClassName = "DefaultCamera"
|
|
|
25
26
|
function DefaultCamera.new()
|
|
26
27
|
local self = setmetatable({}, DefaultCamera)
|
|
27
28
|
|
|
29
|
+
self._key = HttpService:GenerateGUID(false)
|
|
28
30
|
self._cameraState = CameraState.new(Workspace.CurrentCamera)
|
|
29
31
|
|
|
30
32
|
return self
|
|
@@ -54,11 +56,11 @@ end
|
|
|
54
56
|
:::
|
|
55
57
|
]=]
|
|
56
58
|
function DefaultCamera:BindToRenderStep()
|
|
57
|
-
RunService:BindToRenderStep("DefaultCamera_Preupdate", Enum.RenderPriority.Camera.Value-2, function()
|
|
59
|
+
RunService:BindToRenderStep("DefaultCamera_Preupdate" .. self._key, Enum.RenderPriority.Camera.Value-2, function()
|
|
58
60
|
self._cameraState:Set(Workspace.CurrentCamera)
|
|
59
61
|
end)
|
|
60
62
|
|
|
61
|
-
RunService:BindToRenderStep("DefaultCamera_PostUpdate", Enum.RenderPriority.Camera.Value+2, function()
|
|
63
|
+
RunService:BindToRenderStep("DefaultCamera_PostUpdate" .. self._key, Enum.RenderPriority.Camera.Value+2, function()
|
|
62
64
|
self._cameraState = CameraState.new(Workspace.CurrentCamera)
|
|
63
65
|
end)
|
|
64
66
|
|
|
@@ -69,8 +71,15 @@ end
|
|
|
69
71
|
Unbinds the camera from the RunService
|
|
70
72
|
]=]
|
|
71
73
|
function DefaultCamera:UnbindFromRenderStep()
|
|
72
|
-
RunService:UnbindFromRenderStep("DefaultCamera_Preupdate")
|
|
73
|
-
RunService:UnbindFromRenderStep("DefaultCamera_PostUpdate")
|
|
74
|
+
RunService:UnbindFromRenderStep("DefaultCamera_Preupdate" .. self._key)
|
|
75
|
+
RunService:UnbindFromRenderStep("DefaultCamera_PostUpdate" .. self._key)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
--[=[
|
|
79
|
+
Cleans up the binding
|
|
80
|
+
]=]
|
|
81
|
+
function DefaultCamera:Destroy()
|
|
82
|
+
self:UnbindFromRenderStep()
|
|
74
83
|
end
|
|
75
84
|
|
|
76
85
|
--[=[
|
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "
|
|
2
|
+
"name": "CameraTest",
|
|
3
3
|
"tree": {
|
|
4
4
|
"$className": "DataModel",
|
|
5
5
|
"ServerScriptService": {
|
|
6
6
|
"camera": {
|
|
7
7
|
"$path": ".."
|
|
8
|
+
},
|
|
9
|
+
"Script": {
|
|
10
|
+
"$path": "scripts/Server"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"StarterPlayer": {
|
|
14
|
+
"StarterPlayerScripts": {
|
|
15
|
+
"Main": {
|
|
16
|
+
"$path": "scripts/Client"
|
|
17
|
+
}
|
|
8
18
|
}
|
|
9
19
|
}
|
|
10
20
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
--[[
|
|
2
|
+
@class ClientMain
|
|
3
|
+
]]
|
|
4
|
+
|
|
5
|
+
local packages = game:GetService("ReplicatedStorage"):WaitForChild("Packages")
|
|
6
|
+
|
|
7
|
+
local serviceBag = require(packages.ServiceBag).new()
|
|
8
|
+
serviceBag:GetService(require(packages.CameraStackService))
|
|
9
|
+
|
|
10
|
+
serviceBag:Init()
|
|
11
|
+
serviceBag:Start()
|