@quenty/camera 7.0.0 → 7.1.1-canary.270.0fe7bd3.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 +22 -0
- package/package.json +14 -14
- package/src/Client/CameraStackService.lua +32 -13
- package/src/Client/Effects/DefaultCamera.lua +13 -4
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,28 @@
|
|
|
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.1.1-canary.270.0fe7bd3.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/camera@7.1.0...@quenty/camera@7.1.1-canary.270.0fe7bd3.0) (2022-07-02)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* Can clean up services properly ([eb45e03](https://github.com/Quenty/NevermoreEngine/commit/eb45e03ce2897b18f1ae460974bf2bbb9e27cb97))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
# [7.1.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/camera@7.0.0...@quenty/camera@7.1.0) (2022-06-21)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Bug Fixes
|
|
21
|
+
|
|
22
|
+
* Delay CameraStackService starting until start method so that configuration has time to be set ([02d68d1](https://github.com/Quenty/NevermoreEngine/commit/02d68d1d8fbba5b9685c29c503520796c55fa3fa))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
6
28
|
# [7.0.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/camera@6.3.0...@quenty/camera@7.0.0) (2022-05-21)
|
|
7
29
|
|
|
8
30
|
**Note:** Version bump only for package @quenty/camera
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quenty/camera",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.1.1-canary.270.0fe7bd3.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.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.0",
|
|
35
|
+
"@quenty/math": "2.2.0",
|
|
36
|
+
"@quenty/qframe": "5.1.0",
|
|
37
|
+
"@quenty/servicebag": "5.0.0",
|
|
38
|
+
"@quenty/spring": "5.0.0"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@quenty/camerastoryutils": "
|
|
41
|
+
"@quenty/camerastoryutils": "5.1.0"
|
|
42
42
|
},
|
|
43
43
|
"publishConfig": {
|
|
44
44
|
"access": "public"
|
|
45
45
|
},
|
|
46
|
-
"gitHead": "
|
|
46
|
+
"gitHead": "0fe7bd3216177265038ff7d3f83d1d47e748141c"
|
|
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,29 +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
|
-
if self._doNotUseDefaultCamera then
|
|
39
|
-
Workspace.CurrentCamera.CameraType = Enum.CameraType.Scriptable
|
|
40
|
-
|
|
41
|
-
-- TODO: Handle camera deleted too!
|
|
42
|
-
Workspace.CurrentCamera:GetPropertyChangedSignal("CameraType"):Connect(function()
|
|
43
|
-
Workspace.CurrentCamera.CameraType = Enum.CameraType.Scriptable
|
|
44
|
-
end)
|
|
45
|
-
else
|
|
46
|
-
self._rawDefaultCamera:BindToRenderStep()
|
|
47
|
-
end
|
|
48
|
-
|
|
49
44
|
-- Add camera to stack
|
|
50
45
|
self:Add(self._defaultCamera)
|
|
51
46
|
|
|
52
|
-
RunService:BindToRenderStep("CameraStackUpdateInternal", Enum.RenderPriority.Camera.Value + 75, function()
|
|
47
|
+
RunService:BindToRenderStep("CameraStackUpdateInternal" .. self._key, Enum.RenderPriority.Camera.Value + 75, function()
|
|
53
48
|
debug.profilebegin("CameraStackUpdate")
|
|
54
49
|
|
|
55
50
|
if next(self._disabledSet) then
|
|
@@ -63,6 +58,26 @@ function CameraStackService:Init(serviceBag)
|
|
|
63
58
|
|
|
64
59
|
debug.profileend()
|
|
65
60
|
end)
|
|
61
|
+
|
|
62
|
+
self._maid:GiveTask(function()
|
|
63
|
+
RunService:UnbindFromRenderStep("CameraStackUpdateInternal" .. self._key)
|
|
64
|
+
end)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
function CameraStackService:Start()
|
|
68
|
+
self._started = true
|
|
69
|
+
|
|
70
|
+
-- TODO: Allow rebinding
|
|
71
|
+
if self._doNotUseDefaultCamera then
|
|
72
|
+
Workspace.CurrentCamera.CameraType = Enum.CameraType.Scriptable
|
|
73
|
+
|
|
74
|
+
-- TODO: Handle camera deleted too!
|
|
75
|
+
Workspace.CurrentCamera:GetPropertyChangedSignal("CameraType"):Connect(function()
|
|
76
|
+
Workspace.CurrentCamera.CameraType = Enum.CameraType.Scriptable
|
|
77
|
+
end)
|
|
78
|
+
else
|
|
79
|
+
self._rawDefaultCamera:BindToRenderStep()
|
|
80
|
+
end
|
|
66
81
|
end
|
|
67
82
|
|
|
68
83
|
--[=[
|
|
@@ -70,7 +85,7 @@ end
|
|
|
70
85
|
@param doNotUseDefaultCamera boolean
|
|
71
86
|
]=]
|
|
72
87
|
function CameraStackService:SetDoNotUseDefaultCamera(doNotUseDefaultCamera)
|
|
73
|
-
assert(not self.
|
|
88
|
+
assert(not self._started, "Already started")
|
|
74
89
|
|
|
75
90
|
self._doNotUseDefaultCamera = doNotUseDefaultCamera
|
|
76
91
|
end
|
|
@@ -266,4 +281,8 @@ function CameraStackService:Add(state)
|
|
|
266
281
|
table.insert(self._stack, state)
|
|
267
282
|
end
|
|
268
283
|
|
|
284
|
+
function CameraStackService:Destroy()
|
|
285
|
+
self._maid:DoCleaning()
|
|
286
|
+
end
|
|
287
|
+
|
|
269
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
|
--[=[
|