@quenty/ik 15.8.1 → 15.9.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 +16 -0
- package/package.json +25 -24
- package/src/Client/IKServiceClient.lua +1 -0
- package/src/Client/Rig/IKRigClient.lua +1 -1
- package/src/Server/IKService.lua +1 -0
- package/src/Server/Rig/IKRig.lua +1 -1
- package/src/Shared/Arm/ArmIKBase.lua +9 -5
- package/src/Shared/Arm/ArmIKBase.story.lua +3 -1
- package/src/Shared/Arm/ArmIKUtils.lua +1 -1
- package/src/Shared/Rig/IKRigBase.lua +6 -5
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,22 @@
|
|
|
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
|
+
# [15.9.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/ik@15.8.1...@quenty/ik@15.9.0) (2024-09-12)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* Fix tie realm dependency ([d0dc3ee](https://github.com/Quenty/NevermoreEngine/commit/d0dc3ee3084e51e7ba0d7ddb309bab2e28202d58))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
* Unedited all changes ([60e64e3](https://github.com/Quenty/NevermoreEngine/commit/60e64e3efce17c10c4b8965871187d231b338dd4))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
6
22
|
## [15.8.1](https://github.com/Quenty/NevermoreEngine/compare/@quenty/ik@15.8.0...@quenty/ik@15.8.1) (2024-08-27)
|
|
7
23
|
|
|
8
24
|
**Note:** Version bump only for package @quenty/ik
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quenty/ik",
|
|
3
|
-
"version": "15.
|
|
3
|
+
"version": "15.9.0",
|
|
4
4
|
"description": "Inverse Kinematics for characters on Roblox",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Roblox",
|
|
@@ -26,35 +26,36 @@
|
|
|
26
26
|
"Quenty"
|
|
27
27
|
],
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@quenty/acceltween": "^2.
|
|
30
|
-
"@quenty/baseobject": "^10.
|
|
31
|
-
"@quenty/binder": "^14.
|
|
32
|
-
"@quenty/brio": "^14.
|
|
33
|
-
"@quenty/camera": "^14.
|
|
34
|
-
"@quenty/characterutils": "^12.
|
|
35
|
-
"@quenty/humanoidtracker": "^13.
|
|
36
|
-
"@quenty/instanceutils": "^13.
|
|
37
|
-
"@quenty/loader": "^10.
|
|
38
|
-
"@quenty/maid": "^3.
|
|
29
|
+
"@quenty/acceltween": "^2.5.0",
|
|
30
|
+
"@quenty/baseobject": "^10.4.0",
|
|
31
|
+
"@quenty/binder": "^14.6.0",
|
|
32
|
+
"@quenty/brio": "^14.5.0",
|
|
33
|
+
"@quenty/camera": "^14.7.0",
|
|
34
|
+
"@quenty/characterutils": "^12.5.0",
|
|
35
|
+
"@quenty/humanoidtracker": "^13.5.0",
|
|
36
|
+
"@quenty/instanceutils": "^13.5.0",
|
|
37
|
+
"@quenty/loader": "^10.4.0",
|
|
38
|
+
"@quenty/maid": "^3.3.0",
|
|
39
39
|
"@quenty/math": "^2.7.0",
|
|
40
|
-
"@quenty/motor6d": "^7.
|
|
41
|
-
"@quenty/optional": "^11.
|
|
42
|
-
"@quenty/promise": "^10.
|
|
43
|
-
"@quenty/qframe": "^10.
|
|
44
|
-
"@quenty/r15utils": "^13.
|
|
45
|
-
"@quenty/ragdoll": "^15.
|
|
46
|
-
"@quenty/remoting": "^12.
|
|
47
|
-
"@quenty/rx": "^13.
|
|
48
|
-
"@quenty/servicebag": "^11.
|
|
49
|
-
"@quenty/signal": "^7.
|
|
40
|
+
"@quenty/motor6d": "^7.7.0",
|
|
41
|
+
"@quenty/optional": "^11.4.0",
|
|
42
|
+
"@quenty/promise": "^10.4.0",
|
|
43
|
+
"@quenty/qframe": "^10.4.0",
|
|
44
|
+
"@quenty/r15utils": "^13.5.0",
|
|
45
|
+
"@quenty/ragdoll": "^15.8.0",
|
|
46
|
+
"@quenty/remoting": "^12.6.0",
|
|
47
|
+
"@quenty/rx": "^13.5.0",
|
|
48
|
+
"@quenty/servicebag": "^11.5.0",
|
|
49
|
+
"@quenty/signal": "^7.4.0",
|
|
50
50
|
"@quenty/table": "^3.5.0",
|
|
51
|
-
"@quenty/
|
|
51
|
+
"@quenty/tie": "^10.7.0",
|
|
52
|
+
"@quenty/valueobject": "^13.5.0"
|
|
52
53
|
},
|
|
53
54
|
"devDependencies": {
|
|
54
|
-
"@quenty/rigbuilderutils": "^10.
|
|
55
|
+
"@quenty/rigbuilderutils": "^10.7.0"
|
|
55
56
|
},
|
|
56
57
|
"publishConfig": {
|
|
57
58
|
"access": "public"
|
|
58
59
|
},
|
|
59
|
-
"gitHead": "
|
|
60
|
+
"gitHead": "fb172906f3ee725269ec1e5f4daf9dca227e729d"
|
|
60
61
|
}
|
|
@@ -48,6 +48,7 @@ function IKServiceClient:Init(serviceBag)
|
|
|
48
48
|
|
|
49
49
|
-- External
|
|
50
50
|
self._serviceBag:GetService(require("CameraStackService"))
|
|
51
|
+
self._serviceBag:GetService(require("TieRealmService"))
|
|
51
52
|
self._serviceBag:GetService(require("Motor6DServiceClient"))
|
|
52
53
|
|
|
53
54
|
-- Internal
|
|
@@ -19,7 +19,7 @@ IKRigClient.__index = IKRigClient
|
|
|
19
19
|
require("PromiseRemoteEventMixin"):Add(IKRigClient, IKConstants.REMOTE_EVENT_NAME)
|
|
20
20
|
|
|
21
21
|
function IKRigClient.new(humanoid, serviceBag)
|
|
22
|
-
local self = setmetatable(IKRigBase.new(humanoid), IKRigClient)
|
|
22
|
+
local self = setmetatable(IKRigBase.new(humanoid, serviceBag), IKRigClient)
|
|
23
23
|
|
|
24
24
|
self._serviceBag = assert(serviceBag, "No serviceBag")
|
|
25
25
|
|
package/src/Server/IKService.lua
CHANGED
|
@@ -50,6 +50,7 @@ function IKService:Init(serviceBag)
|
|
|
50
50
|
|
|
51
51
|
-- External
|
|
52
52
|
self._serviceBag:GetService(require("Motor6DService"))
|
|
53
|
+
self._serviceBag:GetService(require("TieRealmService"))
|
|
53
54
|
self._humanoidTrackerService = self._serviceBag:GetService(require("HumanoidTrackerService"))
|
|
54
55
|
|
|
55
56
|
-- Binders
|
package/src/Server/Rig/IKRig.lua
CHANGED
|
@@ -19,7 +19,7 @@ IKRig.ClassName = "IKRig"
|
|
|
19
19
|
IKRig.__index = IKRig
|
|
20
20
|
|
|
21
21
|
function IKRig.new(humanoid, serviceBag)
|
|
22
|
-
local self = setmetatable(IKRigBase.new(humanoid), IKRig)
|
|
22
|
+
local self = setmetatable(IKRigBase.new(humanoid, serviceBag), IKRig)
|
|
23
23
|
|
|
24
24
|
self._serviceBag = assert(serviceBag, "No serviceBag")
|
|
25
25
|
|
|
@@ -21,6 +21,7 @@ local RxBrioUtils = require("RxBrioUtils")
|
|
|
21
21
|
local RxInstanceUtils = require("RxInstanceUtils")
|
|
22
22
|
local RxR15Utils = require("RxR15Utils")
|
|
23
23
|
local ValueObject = require("ValueObject")
|
|
24
|
+
local TieRealmService = require("TieRealmService")
|
|
24
25
|
|
|
25
26
|
local CFA_90X = CFrame.Angles(math.pi/2, 0, 0)
|
|
26
27
|
local USE_OLD_IK_SYSTEM = (not LimbIKUtils) or false
|
|
@@ -30,11 +31,14 @@ local ArmIKBase = setmetatable({}, BaseObject)
|
|
|
30
31
|
ArmIKBase.ClassName = "ArmIKBase"
|
|
31
32
|
ArmIKBase.__index = ArmIKBase
|
|
32
33
|
|
|
33
|
-
function ArmIKBase.new(humanoid, armName)
|
|
34
|
+
function ArmIKBase.new(humanoid, armName, serviceBag)
|
|
34
35
|
local self = setmetatable(BaseObject.new(), ArmIKBase)
|
|
35
36
|
|
|
36
37
|
self._humanoid = humanoid or error("No humanoid")
|
|
37
38
|
self._armName = assert(armName, "No armName")
|
|
39
|
+
self._serviceBag = assert(serviceBag, "No serviceBag")
|
|
40
|
+
|
|
41
|
+
self._tieRealmService = self._serviceBag:GetService(TieRealmService)
|
|
38
42
|
|
|
39
43
|
self._grips = {}
|
|
40
44
|
|
|
@@ -109,7 +113,7 @@ function ArmIKBase:_ensureAnimator(character, partName, motorName, getTranform)
|
|
|
109
113
|
|
|
110
114
|
topMaid:GiveTask(RxR15Utils.observeRigMotorBrio(character, partName, motorName):Pipe({
|
|
111
115
|
RxBrioUtils.switchMapBrio(function(motor)
|
|
112
|
-
return Motor6DStackInterface:ObserveLastImplementationBrio(motor)
|
|
116
|
+
return Motor6DStackInterface:ObserveLastImplementationBrio(motor, self._tieRealmService:GetTieRealm())
|
|
113
117
|
end);
|
|
114
118
|
}):Subscribe(function(brio)
|
|
115
119
|
if brio:IsDead() then
|
|
@@ -199,19 +203,19 @@ function ArmIKBase:_observeStateBrio()
|
|
|
199
203
|
|
|
200
204
|
ShoulderMotor6DStack = observeShoulderBrio:Pipe({
|
|
201
205
|
RxBrioUtils.switchMapBrio(function(motor)
|
|
202
|
-
return Motor6DStackInterface:ObserveLastImplementationBrio(motor);
|
|
206
|
+
return Motor6DStackInterface:ObserveLastImplementationBrio(motor, self._tieRealmService:GetTieRealm());
|
|
203
207
|
end);
|
|
204
208
|
Rx.defaultsToNil;
|
|
205
209
|
});
|
|
206
210
|
ElbowMotor6DStack = observeElbowBrio:Pipe({
|
|
207
211
|
RxBrioUtils.switchMapBrio(function(motor)
|
|
208
|
-
return Motor6DStackInterface:ObserveLastImplementationBrio(motor);
|
|
212
|
+
return Motor6DStackInterface:ObserveLastImplementationBrio(motor, self._tieRealmService:GetTieRealm());
|
|
209
213
|
end);
|
|
210
214
|
Rx.defaultsToNil;
|
|
211
215
|
});
|
|
212
216
|
WristMotor6DStack = observeWristBrio:Pipe({
|
|
213
217
|
RxBrioUtils.switchMapBrio(function(motor)
|
|
214
|
-
return Motor6DStackInterface:ObserveLastImplementationBrio(motor);
|
|
218
|
+
return Motor6DStackInterface:ObserveLastImplementationBrio(motor, self._tieRealmService:GetTieRealm());
|
|
215
219
|
end);
|
|
216
220
|
Rx.defaultsToNil;
|
|
217
221
|
});
|
|
@@ -10,9 +10,11 @@ local RunService = game:GetService("RunService")
|
|
|
10
10
|
local Maid = require("Maid")
|
|
11
11
|
local RigBuilderUtils = require("RigBuilderUtils")
|
|
12
12
|
local ArmIKBase = require("ArmIKBase")
|
|
13
|
+
local ServiceBag = require("ServiceBag")
|
|
13
14
|
|
|
14
15
|
return function(_target)
|
|
15
16
|
local maid = Maid.new()
|
|
17
|
+
local serviceBag = maid:Add(ServiceBag.new())
|
|
16
18
|
|
|
17
19
|
maid:GivePromise(RigBuilderUtils.promisePlayerRig(4397833)):Then(function(character)
|
|
18
20
|
maid:GiveTask(character)
|
|
@@ -20,7 +22,7 @@ return function(_target)
|
|
|
20
22
|
local humanoid = character.Humanoid
|
|
21
23
|
local position = Workspace.CurrentCamera.CFrame:pointToWorldSpace(Vector3.new(0, 0, -10))
|
|
22
24
|
|
|
23
|
-
local armIKBase = ArmIKBase.new(humanoid, "Right")
|
|
25
|
+
local armIKBase = ArmIKBase.new(humanoid, "Right", serviceBag)
|
|
24
26
|
maid:GiveTask(armIKBase)
|
|
25
27
|
|
|
26
28
|
local attachment = Instance.new("Attachment")
|
|
@@ -19,7 +19,7 @@ function ArmIKUtils.ensureMotorAnimated(character, armName)
|
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
local maid, motor = brio:ToMaidAndValue()
|
|
22
|
-
local ragdollMotorData = RagdollMotorData:
|
|
22
|
+
local ragdollMotorData = RagdollMotorData:Create(motor)
|
|
23
23
|
|
|
24
24
|
ragdollMotorData.IsMotorAnimated.Value = true
|
|
25
25
|
maid:GiveTask(function()
|
|
@@ -15,11 +15,12 @@ local IKRigBase = setmetatable({}, BaseObject)
|
|
|
15
15
|
IKRigBase.ClassName = "IKRigBase"
|
|
16
16
|
IKRigBase.__index = IKRigBase
|
|
17
17
|
|
|
18
|
-
function IKRigBase.new(humanoid)
|
|
19
|
-
local self = setmetatable(BaseObject.new(humanoid), IKRigBase)
|
|
18
|
+
function IKRigBase.new(humanoid, serviceBag)
|
|
19
|
+
local self = setmetatable(BaseObject.new(humanoid, serviceBag), IKRigBase)
|
|
20
20
|
|
|
21
|
-
self.
|
|
22
|
-
|
|
21
|
+
self._serviceBag = assert(serviceBag, "No serviceBag")
|
|
22
|
+
|
|
23
|
+
self.Updating = self._maid:Add(Signal.new())
|
|
23
24
|
|
|
24
25
|
self._ikTargets = {}
|
|
25
26
|
self._character = humanoid.Parent or error("No character")
|
|
@@ -107,7 +108,7 @@ function IKRigBase:_getNewArm(armName)
|
|
|
107
108
|
return nil
|
|
108
109
|
end
|
|
109
110
|
|
|
110
|
-
local newIk = ArmIKBase.new(self._obj, armName)
|
|
111
|
+
local newIk = ArmIKBase.new(self._obj, armName, self._serviceBag)
|
|
111
112
|
table.insert(self._ikTargets, newIk)
|
|
112
113
|
|
|
113
114
|
return newIk
|