protected override void Init(MyObjectBuilder_DefinitionBase builder) { base.Init(builder); MyObjectBuilder_ToolItemDefinition definition = builder as MyObjectBuilder_ToolItemDefinition; if ((definition.VoxelMinings != null) && (definition.VoxelMinings.Length != 0)) { this.VoxelMinings = new Sandbox.Definitions.MyVoxelMiningDefinition[definition.VoxelMinings.Length]; for (int i = 0; i < definition.VoxelMinings.Length; i++) { this.VoxelMinings[i].MinedOre = definition.VoxelMinings[i].MinedOre; this.VoxelMinings[i].HitCount = definition.VoxelMinings[i].HitCount; this.VoxelMinings[i].PhysicalItemId = definition.VoxelMinings[i].PhysicalItemId; this.VoxelMinings[i].RemovedRadius = definition.VoxelMinings[i].RemovedRadius; this.VoxelMinings[i].OnlyApplyMaterial = definition.VoxelMinings[i].OnlyApplyMaterial; } } this.CopyActions(definition.PrimaryActions, this.PrimaryActions); this.CopyActions(definition.SecondaryActions, this.SecondaryActions); this.HitDistance = definition.HitDistance; }
void CopyActions(MyObjectBuilder_ToolItemDefinition.MyToolActionDefinition[] sourceActions, List<MyToolActionDefinition> targetList) { if (sourceActions != null && sourceActions.Length > 0) { for (int i = 0; i < sourceActions.Length; ++i) { MyToolActionDefinition actionDef = new MyToolActionDefinition(); actionDef.Name = MyStringId.GetOrCompute(sourceActions[i].Name); actionDef.StartTime = sourceActions[i].StartTime; actionDef.EndTime = sourceActions[i].EndTime; actionDef.Efficiency = sourceActions[i].Efficiency; actionDef.StatsEfficiency = sourceActions[i].StatsEfficiency; actionDef.SwingSound = sourceActions[i].SwingSound; actionDef.SwingSoundStart = sourceActions[i].SwingSoundStart; actionDef.HitStart = sourceActions[i].HitStart; actionDef.HitDuration = sourceActions[i].HitDuration; actionDef.HitSound = sourceActions[i].HitSound; actionDef.CustomShapeRadius = sourceActions[i].CustomShapeRadius; actionDef.Crosshair = sourceActions[i].Crosshair; if (sourceActions[i].HitConditions != null) { actionDef.HitConditions = new MyToolHitCondition[sourceActions[i].HitConditions.Length]; for (int j = 0; j < actionDef.HitConditions.Length; j++) { actionDef.HitConditions[j].EntityType = sourceActions[i].HitConditions[j].EntityType; actionDef.HitConditions[j].Animation = sourceActions[i].HitConditions[j].Animation; actionDef.HitConditions[j].AnimationTimeScale = sourceActions[i].HitConditions[j].AnimationTimeScale; actionDef.HitConditions[j].StatsAction = sourceActions[i].HitConditions[j].StatsAction; actionDef.HitConditions[j].StatsActionIfHit = sourceActions[i].HitConditions[j].StatsActionIfHit; actionDef.HitConditions[j].StatsModifier = sourceActions[i].HitConditions[j].StatsModifier; actionDef.HitConditions[j].StatsModifierIfHit = sourceActions[i].HitConditions[j].StatsModifierIfHit; actionDef.HitConditions[j].Component = sourceActions[i].HitConditions[j].Component; } } targetList.Add(actionDef); } // targetList.Sort((x, y) => y.Efficiency.CompareTo(x.Efficiency)); } }