public NewObjectForm(IObjectController controller) { InitializeComponent(); rightNextButton.Click += nextButton_Click; middlePreviousButton.Click += previousButton_Click; leftCancelButton.Click += cancelButton_Click; middleCancelButton.Click += cancelButton_Click; rightFinishButton.Click += finishButton_Click; _controller = controller; objectSelectionPanel.Visible = true; featuresPanel.Visible = false; positionPanel.Visible = false; materialPanel.Visible = false; _currentPanel = objectSelectionPanel; _currentPanel.Controller = _controller; topLabel.Text = Properties.Strings.AddObjectMessageEmpty; SetController(); controller.UpdateModelFromUI = () => { ChooseOrder(); UpdateForModel(); materialPanel.UpdateFromModel(); }; ChooseOrder(); foreach (var panel in _order) { panel.UpdateFromModel(); } }
private void ObjectChosen(IObjectController chosenObject) { Debug.Log("CC ObjectChosen"); isChosenObject = true; lastChosenObject = chosenObject; ShowCreateButton(); }
public static IObjectController CreateObjectController(ObjectSettings settings) { IObjectController result = (settings.PINK ? new PinkObject() : (IObjectController) new BlueObject()); result.Initialise(settings); return(result); }
private void SetController(IObjectController controller) { _controller = controller; foreach (var panel in _order) { panel.Controller = _controller; } }
public EditObjectForm(IObjectController controller) { InitializeComponent(); FormClosed += EditObjectForm_FormClosed; rightNextButton.Click += nextButton_Click; middlePreviousButton.Click += previousButton_Click; leftCancelButton.Click += cancelButton_Click; leftCancelButton.Text = "OK"; middleCancelButton.Click += cancelButton_Click; middleCancelButton.Text = "OK"; rightFinishButton.Click += finishButton_Click; _controller = controller; featuresPanel.Visible = false; positionPanel.Visible = false; materialPanel.Visible = false; var model = _controller.GetModel(); var featureTypes = new List <Type> { typeof(Cylinder), typeof(Rectangle), typeof(Cuboid) }; if (featureTypes.Contains(model.GetType())) { _order = new List <IPanelBase> { featuresPanel, positionPanel, materialPanel } } ; else { _order = new List <IPanelBase> { positionPanel, materialPanel } }; _currentPanel = _order[0]; _currentPanel.ShowPanel(); SetController(controller); foreach (var panel in _order) { panel.UpdateFromModel(); } topLabel.Text = String.Format(Properties.Strings.EditObjectMessage, _controller.GetModel().ToString().ToLower()); }
Vector3 CalcOffset(IObjectController selfObjectController, IObjectController otherObjectController, Vector3 offset) { Vector3 forcedOffset = Vector3.zero; var otherToSelfOffset = selfObjectController.transform.position - otherObjectController.transform.position; if (Mathf.Abs(otherToSelfOffset.x) < Mathf.Abs(offset.x)) { forcedOffset = otherToSelfOffset + new Vector3(offset.x * selfObjectController.GetDirectionInt(), offset.y, offset.z); } forcedOffset.y = 0; forcedOffset.z = 0; return forcedOffset; }
public bool Hurt(DamageData damageData, HurtPart hurtPart) { IObjectController ownerObjectController = damageData.owner.GetComponent<IObjectController>(); // 强制位移 add by TangJian 2019/4/30 10:29 Vector3 forcedOffset = Vector3.zero; if(damageData.useForcedOffset && ownerObjectController != null && ObjectController is RoleController) { forcedOffset = CalcOffset(ownerObjectController, ObjectController, damageData.forcedOffset); // 如果是角色则执行移动 add by TangJian 2019/5/10 17:54 (ObjectController as RoleController)?.DoMoveBy(forcedOffset, damageData.forcedOffsetDuration).SetEase(Ease.OutSine); } // 播放特效 if (damageData is HitAble selfHitAble && ObjectController is HurtAble hurtAble) { Vector3 rendererOffset = Vector3.zero; if (damageData.effectOrientation.z > 0) { rendererOffset.z += 0.1f; } else { rendererOffset.z -= 0.1f; } Vector3 worldPos; if (TryGetHitPos(out worldPos)) { // 打击特效 BothAnimManager.Instance.PlayHurtEffect(selfHitAble.GetHitEffectType(), hurtPart.MatType, worldPos + rendererOffset + forcedOffset, damageData.direction.x > 0 ? Direction.Right : Direction.Left, 0, damageData.targetMoveBy); } else { // 打击特效 BothAnimManager.Instance.PlayHurtEffect(selfHitAble.GetHitEffectType(), hurtPart.MatType, damageData.collidePoint + rendererOffset + forcedOffset, damageData.direction.x > 0 ? Direction.Right : Direction.Left, 0, damageData.targetMoveBy); } AudioManager.Instance.PlayEffect(selfHitAble.GetHitEffectType(), hurtPart.MatType, worldPos + rendererOffset + forcedOffset); } return true; }
public void Activate(AttachmentTrigger trigger) { activated = true; if (trigger != null) { attachedObjectTrigger = trigger; attachedObject = trigger.GetOwningObject(); attachedObjectMover = attachedObject.GetObjectMover(); attachedObjectGrabbedBy = attachedObjectMover.GetGrabbedBy(); } if (attachedObject != null && attachedObjectMover && attachedObjectGrabbedBy) { attachedObject.SetBusy(true); inlineRot = GetLocalInlineRotation(attachedObjectMover.transform); attachedObjectGrabbedBy.Release(); //attachedObjectMover.SetMoveMode(2); //attachedObjectGrabbedBy.Grab(attachedObjectMover); moveGuide.SetParent(this.transform); moveGuide.SetPositionAndRotation(attachedObjectTrigger.transform.position, attachedObjectTrigger.transform.rotation); attachedObject.KillCollision(); attachedObject.KillPhysics(); attachedObject.IgnoreCollision(owningObject.GetGameObject().GetComponent <BoxCollider>(), true); attachedObjectMover.transform.localRotation = inlineRot; //moveObjectOffeset = Vector3.Magnitude(attachedObjectMover.transform.position - attachedObjectGrabbedBy.transform.position); attachedObjectMover.transform.SetParent(moveGuide); //attachedObjectMover.transform.SetParent(moveGuide); tracking = true; owningObject.SetBusy(true); } else { Deactivate(); } }
public HitAndHurtController(IObjectController objectController) { this.ObjectController = objectController; }
public void Delete(IObjectController someObject) { }
public void Create(IWallController wall, IObjectController someObject) { someObject.Init(wall.GetCentre()); }