public override MyObjectBuilder_EntityBase GetObjectBuilder(bool copy = false) { MyObjectBuilder_AutomaticRifle rifleBuilder = (MyObjectBuilder_AutomaticRifle)base.GetObjectBuilder(copy); rifleBuilder.SubtypeName = DefinitionId.SubtypeName; rifleBuilder.GunBase = m_gunBase.GetObjectBuilder(); return(rifleBuilder); }
public override void Init(MyObjectBuilder_EntityBase objectBuilder) { MyObjectBuilder_AutomaticRifle rifleBuilder = (MyObjectBuilder_AutomaticRifle)objectBuilder; m_handItemDefId = rifleBuilder.GetId(); if (string.IsNullOrEmpty(m_handItemDefId.SubtypeName)) { m_handItemDefId = new MyDefinitionId(typeof(MyObjectBuilder_AutomaticRifle), "RifleGun"); } var handItemDef = MyDefinitionManager.Static.TryGetHandItemDefinition(ref m_handItemDefId); m_physicalItemDef = MyDefinitionManager.Static.GetPhysicalItemForHandItem(m_handItemDefId); MyDefinitionId weaponDefinitionId; if (m_physicalItemDef is MyWeaponItemDefinition) { weaponDefinitionId = (m_physicalItemDef as MyWeaponItemDefinition).WeaponDefinitionId; } else { weaponDefinitionId = new MyDefinitionId(typeof(MyObjectBuilder_WeaponDefinition), "AutomaticRifleGun"); } // muzzle location m_gunBase.Init(rifleBuilder.GunBase, weaponDefinitionId, this); base.Init(objectBuilder); Init(new StringBuilder("Rifle"), m_physicalItemDef.Model, null, null, null); var model = VRage.Game.Models.MyModels.GetModelOnlyDummies(m_physicalItemDef.Model); m_gunBase.LoadDummies(model.Dummies); // backward compatibility for models without dummies or old dummies if (!m_gunBase.HasDummies) { Matrix muzzleMatrix = Matrix.CreateTranslation(handItemDef.MuzzlePosition); m_gunBase.AddMuzzleMatrix(MyAmmoType.HighSpeed, muzzleMatrix); } PhysicalObject = (MyObjectBuilder_PhysicalGunObject)MyObjectBuilderSerializer.CreateNewObject(m_physicalItemDef.Id.TypeId, m_physicalItemDef.Id.SubtypeName); PhysicalObject.GunEntity = (MyObjectBuilder_EntityBase)rifleBuilder.Clone(); PhysicalObject.GunEntity.EntityId = this.EntityId; CurrentAmmunition = rifleBuilder.CurrentAmmo; }