Example #1
0
        private static void HandleAddCollisionRelationshipAddClicked(NamedObjectPairRelationshipViewModel pairViewModel)
        {
            var addObjectModel = new AddObjectViewModel();

            addObjectModel.SourceType      = FlatRedBall.Glue.SaveClasses.SourceType.FlatRedBallType;
            addObjectModel.SourceClassType = "FlatRedBall.Math.Collision.CollisionRelationship";
            addObjectModel.ObjectName      = "ToBeRenamed";

            IElement selectedElement     = GlueState.Self.CurrentElement;
            var      selectedNamedObject = GlueState.Self.CurrentNamedObjectSave;

            var newNos =
                GlueCommands.Self.GluxCommands.AddNewNamedObjectTo(addObjectModel,
                                                                   selectedElement, namedObject: null);

            newNos.Properties.SetValue(nameof(CollisionRelationshipViewModel.IsAutoNameEnabled), true);

            bool needToInvert = selectedNamedObject.SourceType != SourceType.Entity &&
                                selectedNamedObject.IsList == false;

            if (needToInvert)
            {
                newNos.Properties.SetValue(nameof(CollisionRelationshipViewModel.FirstCollisionName),
                                           pairViewModel.OtherObjectName);
                newNos.Properties.SetValue(nameof(CollisionRelationshipViewModel.SecondCollisionName),
                                           pairViewModel.SelectedNamedObjectName);
            }
            else
            {
                newNos.Properties.SetValue(nameof(CollisionRelationshipViewModel.FirstCollisionName),
                                           pairViewModel.SelectedNamedObjectName);
                newNos.Properties.SetValue(nameof(CollisionRelationshipViewModel.SecondCollisionName),
                                           pairViewModel.OtherObjectName);
            }


            CollisionRelationshipViewModelController.TryFixSourceClassType(newNos);

            // this will regenerate and save everything too:
            CollisionRelationshipViewModelController.TryApplyAutoName(
                selectedElement, newNos);


            RefreshViewModelTo(selectedElement, selectedNamedObject, ViewModel);

            CollisionRelationshipViewModelController.TryFixMassesForTileShapeCollisionRelationship(selectedElement, newNos);
        }