// Token: 0x0600357D RID: 13693 RVA: 0x000C4494 File Offset: 0x000C2694 protected override bool InstallToViewModel(ref global::ModViewModelAddArgs a) { if (this.isMesh && !a.isMesh) { return(base.InstallToViewModel(ref a)); } if (!this.isMesh && a.isMesh) { return(base.InstallToViewModel(ref a)); } if (a.vm == null) { Debug.Log("Viewmodel null for item attachment..."); } if (this.attachObjectVM != null) { global::WeaponModRep weaponModRep = (global::WeaponModRep)a.modRep; GameObject gameObject; if (a.isMesh) { global::Socket socketByName = this.GetSocketByName(a.vm, this.attachSocketName); gameObject = (Object.Instantiate(this.attachObjectVM, socketByName.offset, Quaternion.Euler(socketByName.eulerRotate)) as GameObject); gameObject.transform.parent = socketByName.parent; gameObject.transform.localPosition = socketByName.offset; gameObject.transform.localEulerAngles = socketByName.eulerRotate; } else { gameObject = this.GetSocketByName(a.vm, this.attachSocketName).InstantiateAsChild(this.attachObjectVM, true); } gameObject.name = this.attachObjectVM.name; weaponModRep.SetAttached(gameObject, true); global::ViewModelAttachment component = gameObject.GetComponent <global::ViewModelAttachment>(); if (component) { if (this.socketOverrideName != string.Empty && component is global::VMAttachmentSocketOverride) { global::VMAttachmentSocketOverride vmattachmentSocketOverride = (global::VMAttachmentSocketOverride)component; this.SetSocketByname(a.vm, this.socketOverrideName, vmattachmentSocketOverride.socketOverride); if (this.modifyZoomOffset) { a.vm.punchScalar = this.punchScalar; a.vm.zoomOffset.z = this.zoomOffsetZ; } } component.viewModel = a.vm; } } return(true); }
// Token: 0x0600357E RID: 13694 RVA: 0x000C4658 File Offset: 0x000C2858 protected override void UninstallFromViewModel(ref global::ModViewModelRemoveArgs a) { if (this.attachObjectVM != null) { global::WeaponModRep weaponModRep = (global::WeaponModRep)a.modRep; GameObject attached = weaponModRep.attached; global::ViewModelAttachment component = attached.GetComponent <global::ViewModelAttachment>(); if (component) { component.viewModel = null; } global::Socket socketByName = this.GetSocketByName(a.vm, this.attachSocketName); Transform transform = socketByName.attachParent; if (transform == null) { transform = socketByName.parent; } if (attached) { weaponModRep.SetAttached(null, true); Object.Destroy(attached.gameObject); } } }