@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 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.0.0",
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": "^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.0.0",
37
- "@quenty/servicebag": "^5.0.0",
38
- "@quenty/spring": "^5.0.0"
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": "^5.0.0"
41
+ "@quenty/camerastoryutils": "5.1.0"
42
42
  },
43
43
  "publishConfig": {
44
44
  "access": "public"
45
45
  },
46
- "gitHead": "9f7eaea7543c33c89d2e32c38491b13f9271f4f7"
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._stack, "Already initialized")
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
  --[=[