This commit is contained in:
CortexCore 2024-03-18 21:47:41 +08:00
parent 8acd61ea57
commit 0da2773ea6
19 changed files with 403 additions and 121 deletions

View File

@ -14,17 +14,18 @@ MonoBehaviour:
m_EditorClassIdentifier: m_EditorClassIdentifier:
id: 3070 id: 3070
addressablePath: Cosmetic_26 addressablePath: Cosmetic_26
icon: {fileID: 0} icon: {fileID: 21300000, guid: b075e06940f2a2e40b7e6046c4fd0be3, type: 3}
type: type:
rid: -2 rid: -2
contents: contents:
- rid: 1055089212959490104 - rid: 3736623591745912971
references: references:
version: 2 version: 2
RefIds: RefIds:
- rid: -2 - rid: -2
type: {class: , ns: , asm: } type: {class: , ns: , asm: }
- rid: 1055089212959490104 - rid: 3736623591745912971
type: {class: CosmeticTextureContent, ns: BITFALL.Cosmetic, asm: BITFALL.Cosmetic.Runtime} type: {class: CosmeticModelContent, ns: BITFALL.Cosmetic, asm: BITFALL.Cosmetic.Runtime}
data: data:
texture: {fileID: 2800000, guid: fececaf19d25e1f409adb32147d3087a, type: 3} model: {fileID: 4018032812772508551, guid: 4ae346c12d703d1478b150af4b7b110a,
type: 3}

Binary file not shown.

After

Width:  |  Height:  |  Size: 685 KiB

View File

@ -14,7 +14,7 @@ MonoBehaviour:
m_EditorClassIdentifier: m_EditorClassIdentifier:
id: 3071 id: 3071
addressablePath: Cosmetic_6C addressablePath: Cosmetic_6C
icon: {fileID: 0} icon: {fileID: 21300000, guid: 7b28db226034ae44b93dd84516f8e6ca, type: 3}
type: type:
rid: -2 rid: -2
contents: contents:

Binary file not shown.

After

Width:  |  Height:  |  Size: 317 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 313 KiB

View File

@ -14,7 +14,7 @@ MonoBehaviour:
m_EditorClassIdentifier: m_EditorClassIdentifier:
id: 3070 id: 3070
addressablePath: Cosmetic_Steve addressablePath: Cosmetic_Steve
icon: {fileID: 0} icon: {fileID: 21300000, guid: 9421e3a9c212c724b9a25c9a6e04c652, type: 3}
type: type:
rid: -2 rid: -2
contents: contents:

View File

@ -26,7 +26,7 @@ Transform:
m_GameObject: {fileID: 500116121299416468} m_GameObject: {fileID: 500116121299416468}
serializedVersion: 2 serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0.0000015497208, y: 1.240993, z: 0.25499707} m_LocalPosition: {x: 0.000001776565, y: 1.240993, z: 0.25499713}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
@ -167,7 +167,7 @@ Transform:
m_GameObject: {fileID: 1114388079014775081} m_GameObject: {fileID: 1114388079014775081}
serializedVersion: 2 serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0.999996, z: 0} m_LocalPosition: {x: -0.00000006556674, y: 0.999996, z: -0.000000059604645}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: m_Children:
@ -665,8 +665,8 @@ Transform:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2316171592450128199} m_GameObject: {fileID: 2316171592450128199}
serializedVersion: 2 serializedVersion: 2
m_LocalRotation: {x: 0.70710665, y: 0.70710695, z: 0.00000033102063, w: -0.00000019861227} m_LocalRotation: {x: 0.70710665, y: 0.70710695, z: 0.00000033102063, w: -0.0000001986123}
m_LocalPosition: {x: 0.7999986, y: 1.099999, z: -0.00000011920929} m_LocalPosition: {x: 0.7999984, y: 1.099999, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: m_Children:
@ -851,7 +851,7 @@ ParentConstraint:
m_TranslationOffsets: m_TranslationOffsets:
- {x: 0, y: 0, z: 0} - {x: 0, y: 0, z: 0}
m_RotationOffsets: m_RotationOffsets:
- {x: -89.89165, y: 0, z: 179.99997} - {x: -89.89165, y: 0, z: 179.99995}
m_AffectTranslationX: 1 m_AffectTranslationX: 1
m_AffectTranslationY: 1 m_AffectTranslationY: 1
m_AffectTranslationZ: 1 m_AffectTranslationZ: 1
@ -1468,7 +1468,7 @@ Transform:
m_GameObject: {fileID: 4384995658573422445} m_GameObject: {fileID: 4384995658573422445}
serializedVersion: 2 serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -0.000000074505806, y: 1.1, z: 0.27000034} m_LocalPosition: {x: 0, y: 1.1, z: 0.27000016}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: m_Children:
@ -1558,6 +1558,7 @@ GameObject:
- component: {fileID: 1864257874290245771} - component: {fileID: 1864257874290245771}
- component: {fileID: 9057491770586552412} - component: {fileID: 9057491770586552412}
- component: {fileID: 3821349879728530083} - component: {fileID: 3821349879728530083}
- component: {fileID: 7501788603299284274}
m_Layer: 6 m_Layer: 6
m_Name: Player m_Name: Player
m_TagString: Untagged m_TagString: Untagged
@ -2993,13 +2994,13 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 7a830f58f533f474e8b7683cff1134b9, type: 3} m_Script: {fileID: 11500000, guid: 7a830f58f533f474e8b7683cff1134b9, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
steamService: cosmeticService:
rid: 1055089212959490105 rid: 3736623591745913040
references: references:
version: 2 version: 2
RefIds: RefIds:
- rid: 1055089212959490105 - rid: 3736623591745913040
type: {class: SteamServiceSingleton, ns: BITKit.Steamwork, asm: BITKit.Extension.Steamwork} type: {class: CosmeticServiceSingleton, ns: BITFALL.Cosmetic, asm: BITFALL.Cosmetic.Runtime}
data: data:
--- !u!114 &1131982008252475633 --- !u!114 &1131982008252475633
MonoBehaviour: MonoBehaviour:
@ -3216,6 +3217,28 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 77e631bb6c04dda48a4905dd5e093df8, type: 3} m_Script: {fileID: 11500000, guid: 77e631bb6c04dda48a4905dd5e093df8, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
--- !u!114 &7501788603299284274
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4826102346843731729}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e582a0447ab49324f944f5d4635d233d, type: 3}
m_Name:
m_EditorClassIdentifier:
currentRenderers:
- {fileID: 7305805713099462304}
- {fileID: 6175183981451570083}
- {fileID: 8577244862334749759}
- {fileID: 1036846622460757989}
- {fileID: 6102918721534868980}
- {fileID: 6097241474274289012}
- {fileID: 1705118708203355834}
armature: {fileID: 4209372041148271106}
meshRoot: {fileID: 3669033169141628990}
--- !u!1 &4826102347057741775 --- !u!1 &4826102347057741775
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -3309,7 +3332,7 @@ Transform:
m_GameObject: {fileID: 5029524798424683285} m_GameObject: {fileID: 5029524798424683285}
serializedVersion: 2 serializedVersion: 2
m_LocalRotation: {x: 1, y: -0.00000009362675, z: -0, w: 0} m_LocalRotation: {x: 1, y: -0.00000009362675, z: -0, w: 0}
m_LocalPosition: {x: 0.099999905, y: 0.6, z: 0.000000007450581} m_LocalPosition: {x: 0.09999986, y: 0.6, z: -0.000000059604645}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: m_Children:
@ -4305,7 +4328,7 @@ Transform:
m_GameObject: {fileID: 7147149369621539321} m_GameObject: {fileID: 7147149369621539321}
serializedVersion: 2 serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -0.00000011920929, y: 0.9000001, z: -0.00000020647656} m_LocalPosition: {x: -0.00000007868051, y: 0.9000001, z: -0.00000011920929}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: m_Children:
@ -5845,7 +5868,7 @@ PrefabInstance:
- target: {fileID: 2699172070614207317, guid: 9fca9f6a9cb170842bc149a7236856d5, - target: {fileID: 2699172070614207317, guid: 9fca9f6a9cb170842bc149a7236856d5,
type: 3} type: 3}
propertyPath: m_RotationOffsets.Array.data[0].x propertyPath: m_RotationOffsets.Array.data[0].x
value: -89.97203 value: -89.980225
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 2699172070614207317, guid: 9fca9f6a9cb170842bc149a7236856d5, - target: {fileID: 2699172070614207317, guid: 9fca9f6a9cb170842bc149a7236856d5,
type: 3} type: 3}
@ -8441,6 +8464,12 @@ CapsuleCollider:
type: 3} type: 3}
m_PrefabInstance: {fileID: 3648022406799836390} m_PrefabInstance: {fileID: 3648022406799836390}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
--- !u!137 &1036846622460757989 stripped
SkinnedMeshRenderer:
m_CorrespondingSourceObject: {fileID: 4378624254320444163, guid: 5f9e9216c9925af4bafec02dca8c438e,
type: 3}
m_PrefabInstance: {fileID: 3648022406799836390}
m_PrefabAsset: {fileID: 0}
--- !u!54 &1237133944160143214 stripped --- !u!54 &1237133944160143214 stripped
Rigidbody: Rigidbody:
m_CorrespondingSourceObject: {fileID: 2561228540091958152, guid: 5f9e9216c9925af4bafec02dca8c438e, m_CorrespondingSourceObject: {fileID: 2561228540091958152, guid: 5f9e9216c9925af4bafec02dca8c438e,
@ -8562,6 +8591,12 @@ Rigidbody:
type: 3} type: 3}
m_PrefabInstance: {fileID: 3648022406799836390} m_PrefabInstance: {fileID: 3648022406799836390}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
--- !u!4 &3669033169141628990 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 21224110552532184, guid: 5f9e9216c9925af4bafec02dca8c438e,
type: 3}
m_PrefabInstance: {fileID: 3648022406799836390}
m_PrefabAsset: {fileID: 0}
--- !u!54 &3805063173658066897 stripped --- !u!54 &3805063173658066897 stripped
Rigidbody: Rigidbody:
m_CorrespondingSourceObject: {fileID: 463358143652920119, guid: 5f9e9216c9925af4bafec02dca8c438e, m_CorrespondingSourceObject: {fileID: 463358143652920119, guid: 5f9e9216c9925af4bafec02dca8c438e,
@ -8640,18 +8675,36 @@ Rigidbody:
type: 3} type: 3}
m_PrefabInstance: {fileID: 3648022406799836390} m_PrefabInstance: {fileID: 3648022406799836390}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
--- !u!137 &6097241474274289012 stripped
SkinnedMeshRenderer:
m_CorrespondingSourceObject: {fileID: 7367222540271198610, guid: 5f9e9216c9925af4bafec02dca8c438e,
type: 3}
m_PrefabInstance: {fileID: 3648022406799836390}
m_PrefabAsset: {fileID: 0}
--- !u!137 &6102918721534868980 stripped --- !u!137 &6102918721534868980 stripped
SkinnedMeshRenderer: SkinnedMeshRenderer:
m_CorrespondingSourceObject: {fileID: 7354814916988172562, guid: 5f9e9216c9925af4bafec02dca8c438e, m_CorrespondingSourceObject: {fileID: 7354814916988172562, guid: 5f9e9216c9925af4bafec02dca8c438e,
type: 3} type: 3}
m_PrefabInstance: {fileID: 3648022406799836390} m_PrefabInstance: {fileID: 3648022406799836390}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
--- !u!137 &6175183981451570083 stripped
SkinnedMeshRenderer:
m_CorrespondingSourceObject: {fileID: 7427218707016986437, guid: 5f9e9216c9925af4bafec02dca8c438e,
type: 3}
m_PrefabInstance: {fileID: 3648022406799836390}
m_PrefabAsset: {fileID: 0}
--- !u!4 &7096961398375027653 stripped --- !u!4 &7096961398375027653 stripped
Transform: Transform:
m_CorrespondingSourceObject: {fileID: 5826841836839622435, guid: 5f9e9216c9925af4bafec02dca8c438e, m_CorrespondingSourceObject: {fileID: 5826841836839622435, guid: 5f9e9216c9925af4bafec02dca8c438e,
type: 3} type: 3}
m_PrefabInstance: {fileID: 3648022406799836390} m_PrefabInstance: {fileID: 3648022406799836390}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
--- !u!137 &7305805713099462304 stripped
SkinnedMeshRenderer:
m_CorrespondingSourceObject: {fileID: 6323914363302859334, guid: 5f9e9216c9925af4bafec02dca8c438e,
type: 3}
m_PrefabInstance: {fileID: 3648022406799836390}
m_PrefabAsset: {fileID: 0}
--- !u!4 &8095626919936485443 stripped --- !u!4 &8095626919936485443 stripped
Transform: Transform:
m_CorrespondingSourceObject: {fileID: 4825906924822146213, guid: 5f9e9216c9925af4bafec02dca8c438e, m_CorrespondingSourceObject: {fileID: 4825906924822146213, guid: 5f9e9216c9925af4bafec02dca8c438e,
@ -9613,7 +9666,7 @@ PrefabInstance:
- target: {fileID: 8708888658787439598, guid: acb664f54d0fe754187a8a585f97658a, - target: {fileID: 8708888658787439598, guid: acb664f54d0fe754187a8a585f97658a,
type: 3} type: 3}
propertyPath: m_RotationOffsets.Array.data[0].x propertyPath: m_RotationOffsets.Array.data[0].x
value: -89.97203 value: -89.980225
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 8708888658787439598, guid: acb664f54d0fe754187a8a585f97658a, - target: {fileID: 8708888658787439598, guid: acb664f54d0fe754187a8a585f97658a,
type: 3} type: 3}
@ -11787,7 +11840,7 @@ PrefabInstance:
- target: {fileID: 510493149151740240, guid: 3d2cb9f79a32fde4ba7e7aa43affde80, - target: {fileID: 510493149151740240, guid: 3d2cb9f79a32fde4ba7e7aa43affde80,
type: 3} type: 3}
propertyPath: m_LocalPosition.x propertyPath: m_LocalPosition.x
value: -0.000000059604645 value: -0.0000000029802436
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 510493149151740240, guid: 3d2cb9f79a32fde4ba7e7aa43affde80, - target: {fileID: 510493149151740240, guid: 3d2cb9f79a32fde4ba7e7aa43affde80,
type: 3} type: 3}
@ -11797,7 +11850,7 @@ PrefabInstance:
- target: {fileID: 510493149151740240, guid: 3d2cb9f79a32fde4ba7e7aa43affde80, - target: {fileID: 510493149151740240, guid: 3d2cb9f79a32fde4ba7e7aa43affde80,
type: 3} type: 3}
propertyPath: m_LocalPosition.z propertyPath: m_LocalPosition.z
value: 0.00000011920929 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 510493149151740240, guid: 3d2cb9f79a32fde4ba7e7aa43affde80, - target: {fileID: 510493149151740240, guid: 3d2cb9f79a32fde4ba7e7aa43affde80,
type: 3} type: 3}
@ -12445,7 +12498,7 @@ PrefabInstance:
- target: {fileID: 1658157669171736235, guid: d1407a692f82a9e45bf6dfb03e65b2aa, - target: {fileID: 1658157669171736235, guid: d1407a692f82a9e45bf6dfb03e65b2aa,
type: 3} type: 3}
propertyPath: m_LocalPosition.x propertyPath: m_LocalPosition.x
value: -0.000000059604645 value: -0.000000004292019
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 1658157669171736235, guid: d1407a692f82a9e45bf6dfb03e65b2aa, - target: {fileID: 1658157669171736235, guid: d1407a692f82a9e45bf6dfb03e65b2aa,
type: 3} type: 3}
@ -12455,12 +12508,12 @@ PrefabInstance:
- target: {fileID: 1658157669171736235, guid: d1407a692f82a9e45bf6dfb03e65b2aa, - target: {fileID: 1658157669171736235, guid: d1407a692f82a9e45bf6dfb03e65b2aa,
type: 3} type: 3}
propertyPath: m_LocalPosition.z propertyPath: m_LocalPosition.z
value: -0.049095035 value: -0.049095094
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 3516031247899474845, guid: d1407a692f82a9e45bf6dfb03e65b2aa, - target: {fileID: 3516031247899474845, guid: d1407a692f82a9e45bf6dfb03e65b2aa,
type: 3} type: 3}
propertyPath: m_RotationOffsets.Array.data[0].x propertyPath: m_RotationOffsets.Array.data[0].x
value: -89.97203 value: -89.980225
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 3516031247899474845, guid: d1407a692f82a9e45bf6dfb03e65b2aa, - target: {fileID: 3516031247899474845, guid: d1407a692f82a9e45bf6dfb03e65b2aa,
type: 3} type: 3}
@ -12470,7 +12523,7 @@ PrefabInstance:
- target: {fileID: 4398408068529648195, guid: d1407a692f82a9e45bf6dfb03e65b2aa, - target: {fileID: 4398408068529648195, guid: d1407a692f82a9e45bf6dfb03e65b2aa,
type: 3} type: 3}
propertyPath: m_LocalPosition.x propertyPath: m_LocalPosition.x
value: -0.000000059604645 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 4398408068529648195, guid: d1407a692f82a9e45bf6dfb03e65b2aa, - target: {fileID: 4398408068529648195, guid: d1407a692f82a9e45bf6dfb03e65b2aa,
type: 3} type: 3}
@ -12480,27 +12533,27 @@ PrefabInstance:
- target: {fileID: 4398408068529648195, guid: d1407a692f82a9e45bf6dfb03e65b2aa, - target: {fileID: 4398408068529648195, guid: d1407a692f82a9e45bf6dfb03e65b2aa,
type: 3} type: 3}
propertyPath: m_LocalPosition.z propertyPath: m_LocalPosition.z
value: 0.00000011920929
objectReference: {fileID: 0}
- target: {fileID: 4398408068529648195, guid: d1407a692f82a9e45bf6dfb03e65b2aa,
type: 3}
propertyPath: m_LocalRotation.w
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 4398408068529648195, guid: d1407a692f82a9e45bf6dfb03e65b2aa,
type: 3}
propertyPath: m_LocalRotation.w
value: 0.00000006621555
objectReference: {fileID: 0}
- target: {fileID: 4398408068529648195, guid: d1407a692f82a9e45bf6dfb03e65b2aa, - target: {fileID: 4398408068529648195, guid: d1407a692f82a9e45bf6dfb03e65b2aa,
type: 3} type: 3}
propertyPath: m_LocalRotation.x propertyPath: m_LocalRotation.x
value: -0 value: -0.00000006619268
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 4398408068529648195, guid: d1407a692f82a9e45bf6dfb03e65b2aa, - target: {fileID: 4398408068529648195, guid: d1407a692f82a9e45bf6dfb03e65b2aa,
type: 3} type: 3}
propertyPath: m_LocalRotation.y propertyPath: m_LocalRotation.y
value: 0.7071068 value: -0.7069847
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 4398408068529648195, guid: d1407a692f82a9e45bf6dfb03e65b2aa, - target: {fileID: 4398408068529648195, guid: d1407a692f82a9e45bf6dfb03e65b2aa,
type: 3} type: 3}
propertyPath: m_LocalRotation.z propertyPath: m_LocalRotation.z
value: 0.7071068 value: -0.7072289
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 5150045246718051008, guid: d1407a692f82a9e45bf6dfb03e65b2aa, - target: {fileID: 5150045246718051008, guid: d1407a692f82a9e45bf6dfb03e65b2aa,
type: 3} type: 3}
@ -12974,7 +13027,7 @@ PrefabInstance:
- target: {fileID: 4116833917040748021, guid: 0d423fa73ece789458e513f5f701eaa6, - target: {fileID: 4116833917040748021, guid: 0d423fa73ece789458e513f5f701eaa6,
type: 3} type: 3}
propertyPath: m_LocalPosition.x propertyPath: m_LocalPosition.x
value: -0.000000059604645 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 4116833917040748021, guid: 0d423fa73ece789458e513f5f701eaa6, - target: {fileID: 4116833917040748021, guid: 0d423fa73ece789458e513f5f701eaa6,
type: 3} type: 3}
@ -12984,27 +13037,27 @@ PrefabInstance:
- target: {fileID: 4116833917040748021, guid: 0d423fa73ece789458e513f5f701eaa6, - target: {fileID: 4116833917040748021, guid: 0d423fa73ece789458e513f5f701eaa6,
type: 3} type: 3}
propertyPath: m_LocalPosition.z propertyPath: m_LocalPosition.z
value: 0.00000011920929 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 4116833917040748021, guid: 0d423fa73ece789458e513f5f701eaa6, - target: {fileID: 4116833917040748021, guid: 0d423fa73ece789458e513f5f701eaa6,
type: 3} type: 3}
propertyPath: m_LocalRotation.w propertyPath: m_LocalRotation.w
value: 0.000000066204116 value: 0.00000006621555
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 4116833917040748021, guid: 0d423fa73ece789458e513f5f701eaa6, - target: {fileID: 4116833917040748021, guid: 0d423fa73ece789458e513f5f701eaa6,
type: 3} type: 3}
propertyPath: m_LocalRotation.x propertyPath: m_LocalRotation.x
value: -0.000000066204116 value: -0.00000006619268
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 4116833917040748021, guid: 0d423fa73ece789458e513f5f701eaa6, - target: {fileID: 4116833917040748021, guid: 0d423fa73ece789458e513f5f701eaa6,
type: 3} type: 3}
propertyPath: m_LocalRotation.y propertyPath: m_LocalRotation.y
value: 0.7071068 value: 0.7069847
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 4116833917040748021, guid: 0d423fa73ece789458e513f5f701eaa6, - target: {fileID: 4116833917040748021, guid: 0d423fa73ece789458e513f5f701eaa6,
type: 3} type: 3}
propertyPath: m_LocalRotation.z propertyPath: m_LocalRotation.z
value: 0.7071068 value: 0.7072289
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 6156840148688175370, guid: 0d423fa73ece789458e513f5f701eaa6, - target: {fileID: 6156840148688175370, guid: 0d423fa73ece789458e513f5f701eaa6,
type: 3} type: 3}
@ -13064,7 +13117,7 @@ PrefabInstance:
- target: {fileID: 6985491524115399640, guid: 0d423fa73ece789458e513f5f701eaa6, - target: {fileID: 6985491524115399640, guid: 0d423fa73ece789458e513f5f701eaa6,
type: 3} type: 3}
propertyPath: m_RotationOffsets.Array.data[0].x propertyPath: m_RotationOffsets.Array.data[0].x
value: -89.97203 value: -89.980225
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 6985491524115399640, guid: 0d423fa73ece789458e513f5f701eaa6, - target: {fileID: 6985491524115399640, guid: 0d423fa73ece789458e513f5f701eaa6,
type: 3} type: 3}

View File

@ -86,6 +86,7 @@ GameObject:
- component: {fileID: 7871355712240718068} - component: {fileID: 7871355712240718068}
- component: {fileID: 3572850690277305562} - component: {fileID: 3572850690277305562}
- component: {fileID: 9020706379512857235} - component: {fileID: 9020706379512857235}
- component: {fileID: 930148704001361127}
m_Layer: 0 m_Layer: 0
m_Name: Framework m_Name: Framework
m_TagString: Untagged m_TagString: Untagged
@ -804,6 +805,22 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 0fcacd6a30c7f3d4aae646f0717125ac, type: 3} m_Script: {fileID: 11500000, guid: 0fcacd6a30c7f3d4aae646f0717125ac, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
--- !u!114 &930148704001361127
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 594564951014165300}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7244e4f9036d839448d1b688ce4b5b19, type: 3}
m_Name:
m_EditorClassIdentifier:
initialCosmetics:
- {fileID: 11400000, guid: 43354319a89aa5e42afc30b631405f76, type: 2}
- {fileID: 11400000, guid: bdd962192ebaf0e4194a30caa3187db5, type: 2}
- {fileID: 11400000, guid: de7344e90b711ec45a4764294a1f6c80, type: 2}
--- !u!1 &842760063283004380 --- !u!1 &842760063283004380
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -1661,6 +1678,7 @@ GameObject:
- component: {fileID: 8878668931328478029} - component: {fileID: 8878668931328478029}
- component: {fileID: 6846980077375805636} - component: {fileID: 6846980077375805636}
- component: {fileID: 6877416267079111868} - component: {fileID: 6877416267079111868}
- component: {fileID: 799091227054309177}
m_Layer: 0 m_Layer: 0
m_Name: Menu m_Name: Menu
m_TagString: Untagged m_TagString: Untagged
@ -1850,6 +1868,28 @@ MonoBehaviour:
- rid: 7707057777320395011 - rid: 7707057777320395011
type: {class: GameNet, ns: BITKit.Net, asm: BITKit} type: {class: GameNet, ns: BITKit.Net, asm: BITKit}
data: data:
--- !u!114 &799091227054309177
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3506318474073017514}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a4a99dd3d155a2949b923495e42dbf6b, type: 3}
m_Name:
m_EditorClassIdentifier:
_cosmeticService:
rid: 3736623591745913007
cosmeticsTemplate: {fileID: 9197481963319205126, guid: 10fc544374045db408be2c05caf9be17,
type: 3}
references:
version: 2
RefIds:
- rid: 3736623591745913007
type: {class: CosmeticServiceSingleton, ns: BITFALL.Cosmetic, asm: BITFALL.Cosmetic.Runtime}
data:
--- !u!1 &3702482717942338853 --- !u!1 &3702482717942338853
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@ -8340,7 +8340,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: c8725edae6a1fd4408036dedaf0199f0, type: 3} m_Script: {fileID: 11500000, guid: c8725edae6a1fd4408036dedaf0199f0, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
_projectionSettings: {fileID: 414302140} _projectionSettings: {fileID: 1678015835}
_dragAndDropGuide: {fileID: 0} _dragAndDropGuide: {fileID: 0}
--- !u!114 &115302397 --- !u!114 &115302397
MonoBehaviour: MonoBehaviour:
@ -93968,7 +93968,7 @@ MonoBehaviour:
_extensionPlane: _extensionPlane:
_refOBBFace: 4 _refOBBFace: 4
_heightPatternDirection: 0 _heightPatternDirection: 0
_modularSnapSession: {fileID: 594047965} _modularSnapSession: {fileID: 759762237}
_mirrorGizmo: {fileID: 1959357466} _mirrorGizmo: {fileID: 1959357466}
--- !u!1001 &153410394 --- !u!1001 &153410394
PrefabInstance: PrefabInstance:
@ -99457,7 +99457,7 @@ MonoBehaviour:
_spawnGuide: {fileID: 884730363} _spawnGuide: {fileID: 884730363}
_extensionPlane: _extensionPlane:
_refOBBFace: 4 _refOBBFace: 4
_modularSnapSession: {fileID: 406157289} _modularSnapSession: {fileID: 1519423986}
_mirrorGizmo: {fileID: 839743558} _mirrorGizmo: {fileID: 839743558}
--- !u!1001 &220243287 --- !u!1001 &220243287
PrefabInstance: PrefabInstance:
@ -111509,21 +111509,6 @@ MeshFilter:
type: 3} type: 3}
m_PrefabInstance: {fileID: 400538603} m_PrefabInstance: {fileID: 400538603}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
--- !u!114 &406157289
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 38a40404d9721ed4f984030fbce11d53, type: 3}
m_Name:
m_EditorClassIdentifier:
_snapMode: 0
_snapHalfSpace: 0
_projectionSettings: {fileID: 0}
--- !u!1001 &406935682 --- !u!1001 &406935682
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -112449,26 +112434,6 @@ MeshFilter:
type: 3} type: 3}
m_PrefabInstance: {fileID: 680140436} m_PrefabInstance: {fileID: 680140436}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
--- !u!114 &414302140
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 49490255aaf1a2641a4c5771511bd253, type: 3}
m_Name:
m_EditorClassIdentifier:
_halfSpace: 1
_alignAxis: 0
_alignmentAxis: 1
_invertAlignmentAxis: 0
_projectAsUnit: 0
_embedInSurface: 1
_inFrontOffset: 0
_behindOffset: 0
--- !u!1001 &414800686 --- !u!1001 &414800686
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -128587,21 +128552,6 @@ LODGroup:
type: 3} type: 3}
m_PrefabInstance: {fileID: 593817163} m_PrefabInstance: {fileID: 593817163}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
--- !u!114 &594047965
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 38a40404d9721ed4f984030fbce11d53, type: 3}
m_Name:
m_EditorClassIdentifier:
_snapMode: 0
_snapHalfSpace: 0
_projectionSettings: {fileID: 0}
--- !u!1001 &596198748 --- !u!1001 &596198748
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -175401,6 +175351,21 @@ LODGroup:
type: 3} type: 3}
m_PrefabInstance: {fileID: 759498680} m_PrefabInstance: {fileID: 759498680}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
--- !u!114 &759762237
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 38a40404d9721ed4f984030fbce11d53, type: 3}
m_Name:
m_EditorClassIdentifier:
_snapMode: 0
_snapHalfSpace: 0
_projectionSettings: {fileID: 0}
--- !u!1001 &759906531 --- !u!1001 &759906531
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -242641,6 +242606,21 @@ MeshFilter:
type: 3} type: 3}
m_PrefabInstance: {fileID: 1519044242} m_PrefabInstance: {fileID: 1519044242}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
--- !u!114 &1519423986
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 38a40404d9721ed4f984030fbce11d53, type: 3}
m_Name:
m_EditorClassIdentifier:
_snapMode: 0
_snapHalfSpace: 0
_projectionSettings: {fileID: 0}
--- !u!1001 &1520760032 --- !u!1001 &1520760032
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -253478,6 +253458,26 @@ LODGroup:
type: 3} type: 3}
m_PrefabInstance: {fileID: 1677629281} m_PrefabInstance: {fileID: 1677629281}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
--- !u!114 &1678015835
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 49490255aaf1a2641a4c5771511bd253, type: 3}
m_Name:
m_EditorClassIdentifier:
_halfSpace: 1
_alignAxis: 0
_alignmentAxis: 1
_invertAlignmentAxis: 0
_projectAsUnit: 0
_embedInSurface: 1
_inFrontOffset: 0
_behindOffset: 0
--- !u!1 &1678358382 stripped --- !u!1 &1678358382 stripped
GameObject: GameObject:
m_CorrespondingSourceObject: {fileID: 2657968701223619286, guid: 22c543a201d947146a7c654abeb26d98, m_CorrespondingSourceObject: {fileID: 2657968701223619286, guid: 22c543a201d947146a7c654abeb26d98,

View File

@ -1,6 +1,7 @@
using System; using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using BITKit.Modification;
using UnityEngine; using UnityEngine;
// ReSharper disable ConvertToAutoProperty // ReSharper disable ConvertToAutoProperty
@ -12,6 +13,12 @@ namespace BITFALL.Cosmetic
[SerializeField] private Texture texture; [SerializeField] private Texture texture;
public Texture Texture => texture; public Texture Texture => texture;
} }
[Serializable]
public struct CosmeticModelContent:ICosmeticContent
{
[SerializeField] private GameObject model;
public GameObject Model => model;
}
public class AssetableCosmetic : ScriptableObject,ICosmetic public class AssetableCosmetic : ScriptableObject,ICosmetic
{ {
[SerializeField] private ulong id; [SerializeField] private ulong id;
@ -19,12 +26,15 @@ namespace BITFALL.Cosmetic
[SerializeField] private Sprite icon; [SerializeField] private Sprite icon;
[SerializeReference, SubclassSelector] private ICosmeticType type; [SerializeReference, SubclassSelector] private ICosmeticType type;
[SerializeReference, SubclassSelector] private ICosmeticContent[] contents; [SerializeReference, SubclassSelector] private ICosmeticContent[] contents;
[SerializeReference, SubclassSelector] private IModifyElement[] require;
[SerializeReference, SubclassSelector] private IModifyElement[] incompatible;
public Sprite Icon => icon; public Sprite Icon => icon;
public string AddressablePath=> addressablePath; public string AddressablePath=> addressablePath;
public ulong Id => id; public ulong Id => id;
public ICosmeticType Type=> type; public ICosmeticType Type=> type;
public ICosmeticContent[] Contents=> contents; public ICosmeticContent[] Contents=> contents;
public IModifyElement[] Require=> require;
public IModifyElement[] Incompatible=> incompatible;
} }
} }

View File

@ -0,0 +1,61 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using BITKit.Modification;
using UnityEngine;
namespace BITFALL.Cosmetic
{
[Serializable]
public struct CosmeticServiceSingleton:ICosmeticService
{
public ICosmetic[] Cosmetics=>CosmeticService.Singleton.Cosmetics;
public event Action OnCosmeticsChanged
{
add => CosmeticService.Singleton.OnCosmeticsChanged += value;
remove => CosmeticService.Singleton.OnCosmeticsChanged -= value;
}
public IDictionary<IModifyElement, object> Modifies { get; set; }
public IDictionary<IModifyElement, object> Modified { get; set; }
public void Add(IModifyElement modify, object obj)=>CosmeticService.Singleton.Add(modify,obj);
public void Remove(IModifyElement modify, out object obj)=>CosmeticService.Singleton.Remove(modify,out obj);
}
public class CosmeticService : MonoBehaviour,ICosmeticService
{
internal static ICosmeticService Singleton { get; private set; }
[SerializeField] private AssetableCosmetic[] initialCosmetics;
public ICosmetic[] Cosmetics { get; set; } = Array.Empty<ICosmetic>();
public event Action OnCosmeticsChanged;
private void Awake()
{
Singleton = this;
}
private void Start()
{
Cosmetics = initialCosmetics.OfType<ICosmetic>().ToArray();
OnCosmeticsChanged?.Invoke();
}
private readonly IModifyManager _modifyManager = new ModifyManager();
public IDictionary<IModifyElement, object> Modifies => _modifyManager.Modifies;
public IDictionary<IModifyElement, object> Modified => _modifyManager.Modified;
public void Add(IModifyElement modify, object obj)
{
_modifyManager.Add(modify, obj);
OnCosmeticsChanged?.Invoke();
}
public void Remove(IModifyElement modify, out object obj)
{
_modifyManager.Remove(modify, out obj);
OnCosmeticsChanged?.Invoke();
}
}
}

View File

@ -0,0 +1,81 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using BITFALL.Cosmetic;
using BITKit;
using BITKit.Entities;
using UnityEngine;
namespace BITFALL.Entities.Cosmetic
{
public class CosmeticModelBehaviour : EntityBehavior
{
[Inject(true)] private ICosmeticService _cosmeticService;
[SerializeField] private SkinnedMeshRenderer[] currentRenderers;
[SerializeField] private Transform armature;
[SerializeField] private Transform meshRoot;
public override void OnAwake()
{
if (_cosmeticService is null) return;
_cosmeticService.OnCosmeticsChanged += OnCosmeticsChanged;
destroyCancellationToken.Register(() => _cosmeticService.OnCosmeticsChanged -= OnCosmeticsChanged);
}
private void OnCosmeticsChanged()
{
foreach (var cosmetic in _cosmeticService.Cosmetics)
{
foreach (var content in cosmetic.Contents.OfType<CosmeticModelContent>())
{
foreach (var _renderer in currentRenderers)
{
Destroy(_renderer);
}
var instance = Instantiate(content.Model, armature);
currentRenderers = instance.GetComponentsInChildren<SkinnedMeshRenderer>(true);
TransferSkinnedMeshes(currentRenderers, meshRoot, armature);
}
}
}
private static void TransferSkinnedMeshes(SkinnedMeshRenderer[] skinnedMeshRenderersList, Transform newParent, Transform newArmature)
{
foreach (var t in skinnedMeshRenderersList)
{
var cachedRootBoneName = t.rootBone.name;
var newBones = new Transform[t.bones.Length];
for (var x = 0; x < t.bones.Length; x++)
foreach (var newBone in newArmature.GetComponentsInChildren<Transform>(true))
{
try
{
if (newBone.name == t.bones[x].name)
{
newBones[x] = newBone;
}
}
catch (Exception e)
{
BIT4Log.LogException(e);
}
}
var matchingRootBone = GetRootBoneByName(newArmature, cachedRootBoneName);
t.rootBone = matchingRootBone != null ? matchingRootBone : newArmature.transform;
t.bones = newBones;
Transform transform;
(transform = t.transform).SetParent(newParent);
transform.localPosition = Vector3.zero;
}
}
private static Transform GetRootBoneByName(Component parentTransform, string name)
{
return parentTransform.GetComponentsInChildren<Transform>().FirstOrDefault(transformChild => transformChild.name == name);
}
}
}

View File

@ -1,3 +1,4 @@
using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@ -18,7 +19,10 @@ namespace BITFALL.Entities.Cosmetic
public override void OnAwake() public override void OnAwake()
{ {
if (_cosmeticService is not null) if (_cosmeticService is not null)
{
_cosmeticService.OnCosmeticsChanged += OnCosmeticsChanged; _cosmeticService.OnCosmeticsChanged += OnCosmeticsChanged;
destroyCancellationToken.Register(() => _cosmeticService.OnCosmeticsChanged -= OnCosmeticsChanged);
}
} }
private void OnCosmeticsChanged() private void OnCosmeticsChanged()

View File

@ -13,24 +13,13 @@ using Object = UnityEngine.Object;
namespace BITFALL.Entities.Cosmetic namespace BITFALL.Entities.Cosmetic
{ {
[CustomType(typeof(ICosmeticService))] public class EntityCosmeticService : EntityBehavior
public class EntityCosmeticService : EntityBehavior,ICosmeticService
{ {
[SerializeReference, SubclassSelector] private ISteamService steamService; [SerializeReference, SubclassSelector] private ICosmeticService cosmeticService;
public override void Initialize(IEntity _entity)
public ICosmetic[] Cosmetics { get; private set; }
public event Action OnCosmeticsChanged;
public override async void OnStart()
{ {
base.OnStart();var items =await steamService.GetInventoryItemDefsAsync(destroyCancellationToken); base.Initialize(_entity);
List<ICosmetic> cosmetics=new List<ICosmetic>(); _entity.As<Entity>().AddService<ICosmeticService>(cosmeticService);
foreach (var x in items.Select(x=>YooAssets.LoadAssetAsync<Object>(x.AddressablePath) ))
{
x.WaitForAsyncComplete();
cosmetics.Add(x.AssetObject as ICosmetic);
}
Cosmetics = cosmetics.ToArray();
OnCosmeticsChanged?.Invoke();
} }
} }
} }

View File

@ -1,9 +1,11 @@
using System; using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using BITFALL.Cosmetic; using BITFALL.Cosmetic;
using BITKit; using BITKit;
using BITKit.IO; using BITKit.IO;
using BITKit.Modification;
using BITKit.UX; using BITKit.UX;
using Cysharp.Threading.Tasks; using Cysharp.Threading.Tasks;
using UnityEngine; using UnityEngine;
@ -29,20 +31,43 @@ namespace BITFALL.UX
Rebuild(); Rebuild();
} }
private async void Rebuild() private void Rebuild()
{ {
_cosmeticsContainer.Clear(); _cosmeticsContainer.Clear();
var modified = _cosmeticService.Modified.Values.ToArray();
foreach (var cosmetic in _cosmeticService.Cosmetics) foreach (var cosmetic in _cosmeticService.Cosmetics)
{ {
var assetHandle = YooAssets.LoadAssetAsync(cosmetic.AddressablePath); var assetHandle = YooAssets.LoadAssetAsync(cosmetic.AddressablePath);
await assetHandle; assetHandle.WaitForAsyncComplete();
if(destroyCancellationToken.IsCancellationRequested) return; if(destroyCancellationToken.IsCancellationRequested) return;
var so = assetHandle.AssetObject.As<AssetableCosmetic>(); var so = assetHandle.AssetObject.As<AssetableCosmetic>();
var instance =new UXContainer(_cosmeticsContainer.Create(cosmeticsTemplate)) ; var instance =new UXContainer(_cosmeticsContainer.Create(cosmeticsTemplate)) ;
instance.icon.style.backgroundImage = new StyleBackground(so.Icon); instance.icon.style.backgroundImage = new StyleBackground(so.Icon);
instance.contextLabel.text = so.name; instance.contextLabel.text = so.name;
if(modified.Contains(cosmetic))
{
instance.visualElement.AddToClassList("--toggled");
}
instance.button.clicked += () =>
{
try
{
_cosmeticService.Add(so.Type, cosmetic);
}
catch (NotRequireModifyException e)
{
Alert.Print("需要前置",e.Message);
}
catch (IncompatibleModifyException e)
{
Alert.Print("不兼容的修改",e.Message);
}
};
} }
} }
} }

View File

@ -0,0 +1,20 @@
using System;
using System.Collections;
using System.Collections.Generic;
using BITKit.Modification;
namespace BITFALL.Cosmetic.Types
{
[Serializable]
public struct PlayerAgent:ICosmeticType
{
public IModifyElement[] Require => Array.Empty<IModifyElement>();
public IModifyElement[] Incompatible => Array.Empty<IModifyElement>();
}
[Serializable]
public struct PlayerWeaponSkin:ICosmeticType
{
public IModifyElement[] Require => Array.Empty<IModifyElement>();
public IModifyElement[] Incompatible => Array.Empty<IModifyElement>();
}
}

View File

@ -2,17 +2,15 @@ using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using BITKit; using BITKit;
using BITKit.Modification;
namespace BITFALL.Cosmetic namespace BITFALL.Cosmetic
{ {
public interface ICosmeticType public interface ICosmeticType:IModifyElement
{ {
/// <summary>
/// 排除的饰品类型
/// </summary>
ICosmeticType[] Excludes { get; }
} }
public interface ICosmeticContent{} public interface ICosmeticContent{}
public interface ICosmetic:IAddressable public interface ICosmetic:IAddressable
{ {
ulong Id { get; } ulong Id { get; }
@ -20,7 +18,7 @@ namespace BITFALL.Cosmetic
ICosmeticContent[] Contents { get; } ICosmeticContent[] Contents { get; }
} }
public interface ICosmeticService public interface ICosmeticService:IModifyManager
{ {
ICosmetic[] Cosmetics { get; } ICosmetic[] Cosmetics { get; }
event Action OnCosmeticsChanged; event Action OnCosmeticsChanged;

View File

@ -65,7 +65,7 @@ namespace BITKit.Modification
} }
public class ModifyManager : IModifyManager public class ModifyManager : IModifyManager
{ {
public virtual IDictionary<IModifyElement, object> Modifies { get;private set; } =new Dictionary<IModifyElement,object>(); public virtual IDictionary<IModifyElement, object> Modifies { get; } =new Dictionary<IModifyElement,object>();
public virtual IDictionary<IModifyElement, object> Modified => new Dictionary<IModifyElement, object>(Modifies.Where(x=>x.Value is not null)); public virtual IDictionary<IModifyElement, object> Modified => new Dictionary<IModifyElement, object>(Modifies.Where(x=>x.Value is not null));
public virtual void Add(IModifyElement modify, object obj) public virtual void Add(IModifyElement modify, object obj)