@quenty/humanoidtracker 9.0.0-canary.c90a5c7.0 → 10.0.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,7 +3,59 @@
|
|
|
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
|
-
# [
|
|
6
|
+
# [10.0.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/humanoidtracker@9.0.0...@quenty/humanoidtracker@10.0.0) (2024-02-13)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* New loader (breaking changes), fixing loader issues ([#439](https://github.com/Quenty/NevermoreEngine/issues/439)) ([3534345](https://github.com/Quenty/NevermoreEngine/commit/353434522918812953bd9f13fece73e27a4d034d))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### BREAKING CHANGES
|
|
15
|
+
|
|
16
|
+
* Standard loader
|
|
17
|
+
|
|
18
|
+
Adds new loader version which replicates full structure instead of some partial structure. This allows us to have hot-reloading (in the future), as well as generally do less computation, handle dependencies more carefully, and other changes.
|
|
19
|
+
|
|
20
|
+
This means you'll need to change you how require client-side modules, as we export a simple `loader` module instead of all modules available.
|
|
21
|
+
|
|
22
|
+
Signed-off-by: James Onnen <jonnen0@gmail.com>
|
|
23
|
+
|
|
24
|
+
* fix: Fix missing dependency in ResetService
|
|
25
|
+
|
|
26
|
+
* feat: Add RxPhysicsUtils.observePartMass
|
|
27
|
+
|
|
28
|
+
* fix: Fix package discovery for games
|
|
29
|
+
|
|
30
|
+
* feat: Add UIAlignmentUtils.verticalToHorizontalAlignment(verticalAlignment) and UIAlignmentUtils.horizontalToVerticalAlignment(horizontalAlignment)
|
|
31
|
+
|
|
32
|
+
* feat: AdorneeData:InitAttributes() does not require data as a secondparameter
|
|
33
|
+
|
|
34
|
+
* ci: Upgrade to new rojo 7.4.0
|
|
35
|
+
|
|
36
|
+
* fix: Update loader to handle hoarcekat properly
|
|
37
|
+
|
|
38
|
+
* docs: Fix spacing in Maid
|
|
39
|
+
|
|
40
|
+
* fix: Add new ragdoll constants
|
|
41
|
+
|
|
42
|
+
* fix: Compress influxDB sends
|
|
43
|
+
|
|
44
|
+
* style: Errors use string.format
|
|
45
|
+
|
|
46
|
+
* fix: Handle motor animations
|
|
47
|
+
|
|
48
|
+
* ci: Upgrade rojo version
|
|
49
|
+
|
|
50
|
+
* feat!: Maid no longer is includd in ValueObject.Changed event
|
|
51
|
+
|
|
52
|
+
* docs: Fix docs
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
# [9.0.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/humanoidtracker@8.4.0...@quenty/humanoidtracker@9.0.0) (2024-01-10)
|
|
7
59
|
|
|
8
60
|
**Note:** Version bump only for package @quenty/humanoidtracker
|
|
9
61
|
|
|
@@ -11,6 +63,17 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
|
|
|
11
63
|
|
|
12
64
|
|
|
13
65
|
|
|
66
|
+
# [8.4.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/humanoidtracker@8.3.0...@quenty/humanoidtracker@8.4.0) (2024-01-08)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
### Features
|
|
70
|
+
|
|
71
|
+
* Add HumanoidTrackerService API methods that allow for use on server too ([e674fda](https://github.com/Quenty/NevermoreEngine/commit/e674fda95746f87e052da7087aea298084dfb381))
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
|
|
14
77
|
# [8.3.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/humanoidtracker@8.2.0...@quenty/humanoidtracker@8.3.0) (2023-12-28)
|
|
15
78
|
|
|
16
79
|
**Note:** Version bump only for package @quenty/humanoidtracker
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quenty/humanoidtracker",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "10.0.0",
|
|
4
4
|
"description": "HumanoidTracker for Roblox - Tracks a player's character's humanoid",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Roblox",
|
|
@@ -25,14 +25,15 @@
|
|
|
25
25
|
"Quenty"
|
|
26
26
|
],
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@quenty/
|
|
29
|
-
"@quenty/
|
|
30
|
-
"@quenty/
|
|
31
|
-
"@quenty/
|
|
32
|
-
"@quenty/
|
|
28
|
+
"@quenty/baseobject": "^8.0.0",
|
|
29
|
+
"@quenty/loader": "^8.0.0",
|
|
30
|
+
"@quenty/maid": "^3.0.0",
|
|
31
|
+
"@quenty/promise": "^8.0.0",
|
|
32
|
+
"@quenty/signal": "^5.0.0",
|
|
33
|
+
"@quenty/valueobject": "^10.0.0"
|
|
33
34
|
},
|
|
34
35
|
"publishConfig": {
|
|
35
36
|
"access": "public"
|
|
36
37
|
},
|
|
37
|
-
"gitHead": "
|
|
38
|
+
"gitHead": "5736b108e4d23cd4c9e761bbe4cc9fed6fb32dfa"
|
|
38
39
|
}
|
|
@@ -9,8 +9,9 @@ local Maid = require("Maid")
|
|
|
9
9
|
local Signal = require("Signal")
|
|
10
10
|
local ValueObject = require("ValueObject")
|
|
11
11
|
local Promise = require("Promise")
|
|
12
|
+
local BaseObject = require("BaseObject")
|
|
12
13
|
|
|
13
|
-
local HumanoidTracker = {}
|
|
14
|
+
local HumanoidTracker = setmetatable({}, BaseObject)
|
|
14
15
|
HumanoidTracker.ClassName = "HumanoidTracker"
|
|
15
16
|
HumanoidTracker.__index = HumanoidTracker
|
|
16
17
|
|
|
@@ -42,24 +43,27 @@ HumanoidTracker.__index = HumanoidTracker
|
|
|
42
43
|
@return HumanoidTracker
|
|
43
44
|
]=]
|
|
44
45
|
function HumanoidTracker.new(player)
|
|
45
|
-
local self = setmetatable(
|
|
46
|
+
local self = setmetatable(BaseObject.new(), HumanoidTracker)
|
|
46
47
|
|
|
47
48
|
self._player = player or error("No player")
|
|
48
|
-
|
|
49
|
+
|
|
50
|
+
self.HumanoidDied = self._maid:Add(Signal.new())
|
|
49
51
|
|
|
50
52
|
-- Tracks the current character humanoid, may be nil
|
|
51
|
-
self.Humanoid = ValueObject.new()
|
|
52
|
-
self._maid:GiveTask(self.Humanoid)
|
|
53
|
+
self.Humanoid = self._maid:Add(ValueObject.new())
|
|
53
54
|
|
|
54
55
|
-- Tracks the alive humanoid, may be nil
|
|
55
|
-
self.AliveHumanoid = ValueObject.new()
|
|
56
|
-
|
|
56
|
+
self.AliveHumanoid = self._maid:Add(ValueObject.new())
|
|
57
|
+
|
|
58
|
+
self._maid:GiveTask(self.Humanoid.Changed:Connect(function(newHumanoid, oldHumanoid)
|
|
59
|
+
local maid = Maid.new()
|
|
57
60
|
|
|
58
|
-
self._maid:GiveTask(self.Humanoid.Changed:Connect(function(newHumanoid, oldHumanoid, maid)
|
|
59
61
|
if not self.Destroy then
|
|
60
62
|
return
|
|
61
63
|
end
|
|
62
64
|
self:_handleHumanoidChanged(newHumanoid, oldHumanoid, maid)
|
|
65
|
+
|
|
66
|
+
self._maid._current = maid
|
|
63
67
|
end))
|
|
64
68
|
|
|
65
69
|
self._maid:GiveTask(self._player:GetPropertyChangedSignal("Character"):Connect(function()
|
|
@@ -69,9 +73,6 @@ function HumanoidTracker.new(player)
|
|
|
69
73
|
self:_onCharacterChanged()
|
|
70
74
|
end))
|
|
71
75
|
|
|
72
|
-
self.HumanoidDied = Signal.new()
|
|
73
|
-
self._maid:GiveTask(self.HumanoidDied)
|
|
74
|
-
|
|
75
76
|
self:_onCharacterChanged()
|
|
76
77
|
|
|
77
78
|
return self
|
|
@@ -168,12 +169,4 @@ function HumanoidTracker:_handleHumanoidChanged(newHumanoid, _, maid)
|
|
|
168
169
|
end))
|
|
169
170
|
end
|
|
170
171
|
|
|
171
|
-
--[=[
|
|
172
|
-
Cleans up the humanoid tracker and sets the metatable to be nil.
|
|
173
|
-
]=]
|
|
174
|
-
function HumanoidTracker:Destroy()
|
|
175
|
-
self._maid:DoCleaning()
|
|
176
|
-
setmetatable(self, nil)
|
|
177
|
-
end
|
|
178
|
-
|
|
179
172
|
return HumanoidTracker
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
--[=[
|
|
2
|
+
Centralized humanoid tracking service.
|
|
3
|
+
|
|
4
|
+
@class HumanoidTrackerService
|
|
5
|
+
]=]
|
|
6
|
+
|
|
7
|
+
local require = require(script.Parent.loader).load(script)
|
|
8
|
+
|
|
9
|
+
local Players = game:GetService("Players")
|
|
10
|
+
|
|
11
|
+
local HumanoidTracker = require("HumanoidTracker")
|
|
12
|
+
local Maid = require("Maid")
|
|
13
|
+
|
|
14
|
+
local HumanoidTrackerService = {}
|
|
15
|
+
HumanoidTrackerService.ServiceName = "HumanoidTrackerService"
|
|
16
|
+
|
|
17
|
+
function HumanoidTrackerService:Init()
|
|
18
|
+
assert(not self._maid, "Already initialized")
|
|
19
|
+
self._maid = Maid.new()
|
|
20
|
+
|
|
21
|
+
self._humanoidTrackerMap = {}
|
|
22
|
+
|
|
23
|
+
self._maid:GiveTask(Players.PlayerRemoving:Connect(function(player)
|
|
24
|
+
self._maid[player] = nil
|
|
25
|
+
end))
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
--[=[
|
|
29
|
+
Gets a humanoid tracker for a given player
|
|
30
|
+
|
|
31
|
+
@param player Player? -- If not set, uses local player
|
|
32
|
+
@return HumanoidTracker
|
|
33
|
+
]=]
|
|
34
|
+
function HumanoidTrackerService:GetHumanoidTracker(player)
|
|
35
|
+
assert((typeof(player) == "Instance" and player:IsA("Player")) or player == nil, "Bad player")
|
|
36
|
+
|
|
37
|
+
player = player or Players.LocalPlayer
|
|
38
|
+
|
|
39
|
+
if self._humanoidTrackerMap[player] then
|
|
40
|
+
return self._humanoidTrackerMap[player]
|
|
41
|
+
else
|
|
42
|
+
local maid = Maid.new()
|
|
43
|
+
local tracker = maid:Add(HumanoidTracker.new(player))
|
|
44
|
+
|
|
45
|
+
maid:GiveTask(function()
|
|
46
|
+
self._maid[player] = nil
|
|
47
|
+
self._humanoidTrackerMap[player] = nil
|
|
48
|
+
end)
|
|
49
|
+
|
|
50
|
+
self._maid[player] = maid
|
|
51
|
+
self._humanoidTrackerMap[player] = tracker
|
|
52
|
+
|
|
53
|
+
return tracker
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
--[=[
|
|
58
|
+
Gets a player's humanoid
|
|
59
|
+
|
|
60
|
+
@param player Player? -- If not set, uses local player
|
|
61
|
+
@return Humanoid?
|
|
62
|
+
]=]
|
|
63
|
+
function HumanoidTrackerService:GetHumanoid(player)
|
|
64
|
+
assert((typeof(player) == "Instance" and player:IsA("Player")) or player == nil, "Bad player")
|
|
65
|
+
|
|
66
|
+
player = player or Players.LocalPlayer
|
|
67
|
+
return self:GetHumanoidTracker(player).Humanoid.Value
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
--[=[
|
|
71
|
+
Observe a player's humanoid
|
|
72
|
+
|
|
73
|
+
@param player Player? -- If not set, uses local player
|
|
74
|
+
@return Observable<Humanoid | nil>
|
|
75
|
+
]=]
|
|
76
|
+
function HumanoidTrackerService:ObserveHumanoid(player)
|
|
77
|
+
assert((typeof(player) == "Instance" and player:IsA("Player")) or player == nil, "Bad player")
|
|
78
|
+
|
|
79
|
+
player = player or Players.LocalPlayer
|
|
80
|
+
|
|
81
|
+
return self:GetHumanoidTracker(player).Humanoid:Observe()
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
--[=[
|
|
85
|
+
Observe a player's humanoid
|
|
86
|
+
|
|
87
|
+
@param player Player? -- If not set, uses local player
|
|
88
|
+
@return Observable<Brio<Humanoid>>
|
|
89
|
+
]=]
|
|
90
|
+
function HumanoidTrackerService:ObserveHumanoidBrio(player)
|
|
91
|
+
assert((typeof(player) == "Instance" and player:IsA("Player")) or player == nil, "Bad player")
|
|
92
|
+
|
|
93
|
+
player = player or Players.LocalPlayer
|
|
94
|
+
|
|
95
|
+
return self:GetHumanoidTracker(player).Humanoid:ObserveBrio(function(value)
|
|
96
|
+
return value ~= nil
|
|
97
|
+
end)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
--[=[
|
|
101
|
+
Gets a player's alive humanoid
|
|
102
|
+
|
|
103
|
+
@param player Player? -- If not set, uses local player
|
|
104
|
+
@return Humanoid?
|
|
105
|
+
]=]
|
|
106
|
+
function HumanoidTrackerService:GetAliveHumanoid(player)
|
|
107
|
+
assert((typeof(player) == "Instance" and player:IsA("Player")) or player == nil, "Bad player")
|
|
108
|
+
|
|
109
|
+
player = player or Players.LocalPlayer
|
|
110
|
+
return self:GetHumanoidTracker(player).AliveHumanoid.Value
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
--[=[
|
|
114
|
+
Observe a player's alive humanoid
|
|
115
|
+
|
|
116
|
+
@param player Player? -- If not set, uses local player
|
|
117
|
+
@return Observable<Humanoid | nil>
|
|
118
|
+
]=]
|
|
119
|
+
function HumanoidTrackerService:ObserveAliveHumanoid(player)
|
|
120
|
+
assert((typeof(player) == "Instance" and player:IsA("Player")) or player == nil, "Bad player")
|
|
121
|
+
|
|
122
|
+
player = player or Players.LocalPlayer
|
|
123
|
+
|
|
124
|
+
return self:GetHumanoidTracker(player).AliveHumanoid:Observe()
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
--[=[
|
|
128
|
+
Observe a player's alive humanoid
|
|
129
|
+
|
|
130
|
+
@param player Player? -- If not set, uses local player
|
|
131
|
+
@return Observable<Brio<Humanoid>>
|
|
132
|
+
]=]
|
|
133
|
+
function HumanoidTrackerService:ObserveAliveHumanoidBrio(player)
|
|
134
|
+
assert((typeof(player) == "Instance" and player:IsA("Player")) or player == nil, "Bad player")
|
|
135
|
+
|
|
136
|
+
player = player or Players.LocalPlayer
|
|
137
|
+
|
|
138
|
+
return self:GetHumanoidTracker(player).AliveHumanoid:ObserveBrio(function(value)
|
|
139
|
+
return value ~= nil
|
|
140
|
+
end)
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
--[=[
|
|
144
|
+
Cleans up the humanoid tracking service
|
|
145
|
+
]=]
|
|
146
|
+
function HumanoidTrackerService:Destroy()
|
|
147
|
+
self._maid:DoCleaning()
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
return HumanoidTrackerService
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
--[=[
|
|
2
|
-
@class HumanoidTrackerService
|
|
3
|
-
]=]
|
|
4
|
-
|
|
5
|
-
local require = require(script.Parent.loader).load(script)
|
|
6
|
-
|
|
7
|
-
local Players = game:GetService("Players")
|
|
8
|
-
|
|
9
|
-
local HumanoidTracker = require("HumanoidTracker")
|
|
10
|
-
|
|
11
|
-
local HumanoidTrackerService = {}
|
|
12
|
-
HumanoidTrackerService.ServiceName = "HumanoidTrackerService"
|
|
13
|
-
|
|
14
|
-
function HumanoidTrackerService:Init()
|
|
15
|
-
assert(not self._humanoidTracker, "Already initialized")
|
|
16
|
-
|
|
17
|
-
self._humanoidTracker = HumanoidTracker.new(Players.LocalPlayer)
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
function HumanoidTrackerService:GetHumanoidTracker()
|
|
21
|
-
assert(self._humanoidTracker, "Not initialized")
|
|
22
|
-
|
|
23
|
-
return self._humanoidTracker
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
return HumanoidTrackerService
|