using StructureHelperCommon.Infrastructures.Interfaces; using StructureHelperCommon.Models.Forces; using StructureHelperCommon.Models.Shapes; using StructureHelperCommon.Services; namespace StructureHelperLogics.NdmCalculations.Primitives.Logics { public class INdmElementUpdateStrategy : IUpdateStrategy { private readonly IUpdateStrategy point2DUpdateStrategy; private readonly IUpdateStrategy tupleUpdateStrategy; public INdmElementUpdateStrategy(IUpdateStrategy point2DUpdateStrategy, IUpdateStrategy tupleUpdateStrategy) { this.point2DUpdateStrategy = point2DUpdateStrategy; this.tupleUpdateStrategy = tupleUpdateStrategy; } public INdmElementUpdateStrategy() : this ( new Point2DUpdateStrategy(), new ForceTupleUpdateStrategy()) { } /// public void Update(INdmElement targetObject, INdmElement sourceObject) { CheckObject.IsNull(targetObject, sourceObject); if (ReferenceEquals(targetObject, sourceObject)) { return; } point2DUpdateStrategy.Update(targetObject.Center, sourceObject.Center); if (sourceObject.HeadMaterial != null) { targetObject.HeadMaterial = sourceObject.HeadMaterial; } targetObject.Triangulate = sourceObject.Triangulate; tupleUpdateStrategy.Update(targetObject.UsersPrestrain, sourceObject.UsersPrestrain); } } }