public override void OnSetAction() { base.ActiveObject = null; // line = new Line(); base.TitleId = "ToolsCutOffMultiple"; iCurve1 = null; iCurve2 = null; cutOffLen = ConstrDefaults.DefaultCutOffLength; cutOffAng = ConstrDefaults.DefaultCutOffAngle; methodSelect = ConstrDefaults.DefaultCutOffMethod; cutOffObject = new CurveInput("ToolsCutOff.Object"); cutOffObject.MouseOverCurvesEvent += new CurveInput.MouseOverCurvesDelegate(CutOffObject); cutOffObject.CurveSelectionChangedEvent += new CurveInput.CurveSelectionChangedDelegate(CutOffObjectChanged); cutOffObject.HitCursor = CursorTable.GetCursor("CutOff.cur"); cutOffObject.ModifiableOnly = true; cutOffLength = new LengthInput("ToolsCutOff.Length"); // cutOffLength.Optional = true; cutOffLength.ForwardMouseInputTo = cutOffObject; cutOffLength.DefaultLength = ConstrDefaults.DefaultCutOffLength; cutOffLength.SetLengthEvent += new CADability.Actions.ConstructAction.LengthInput.SetLengthDelegate(CutOffLength); cutOffAngle = new AngleInput("ToolsCutOff.Angle"); cutOffAngle.DefaultAngle = ConstrDefaults.DefaultCutOffAngle; // cutOffAngle.Optional = true; cutOffAngle.ForwardMouseInputTo = cutOffObject; cutOffAngle.SetAngleEvent += new CADability.Actions.ConstructAction.AngleInput.SetAngleDelegate(cutOffSetAngle); cutOffMethod = new MultipleChoiceInput("ToolsCutOff.Method", "ToolsCutOff.Method.Values"); cutOffMethod.DefaultChoice = ConstrDefaults.DefaultCutOffMethod; cutOffMethod.ForwardMouseInputTo = cutOffObject; cutOffMethod.SetChoiceEvent += new CADability.Actions.ConstructAction.MultipleChoiceInput.SetChoiceDelegate(SetMethod); base.SetInput(cutOffObject, cutOffLength, cutOffAngle, cutOffMethod); base.ShowActiveObject = false; base.OnSetAction(); }
public override void OnSetAction() { base.ActiveObject = Face.Construct(); if (axisVector.IsNullVector()) { axisVector = GeoVector.XAxis; } if (angleRotation == 0.0) { angleRotation = Math.PI; } base.TitleId = "Constr.Face.PathRotate"; curveInput = new CurveInput("Constr.Face.PathRotate.Path"); curveInput.MouseOverCurvesEvent += new CurveInput.MouseOverCurvesDelegate(curveInputPath); curveInput.CurveSelectionChangedEvent += new CurveInput.CurveSelectionChangedDelegate(curveInputPathChanged); if (selectedMode) { curveInput.Fixed = true; } rotateLineInput = new CurveInput("Constr.Face.PathRotate.AxisLine"); rotateLineInput.Decomposed = true; // nur Einzelelemente, auch bei Polyline und Pfad rotateLineInput.MouseOverCurvesEvent += new CurveInput.MouseOverCurvesDelegate(RotateLine); rotateLineInput.CurveSelectionChangedEvent += new CurveInput.CurveSelectionChangedDelegate(RotateLineChanged); axisPointInput = new GeoPointInput("Constr.Face.PathRotate.AxisPoint", axisPoint); axisPointInput.SetGeoPointEvent += new GeoPointInput.SetGeoPointDelegate(SetAxisPoint); axisPointInput.GetGeoPointEvent += new GeoPointInput.GetGeoPointDelegate(GetAxisPoint); axisPointInput.ForwardMouseInputTo = curveInput; axisPointInput.DefinesBasePoint = true; axisVectorInput = new GeoVectorInput("Constr.Face.PathRotate.AxisVector", axisVector); axisVectorInput.SetGeoVectorEvent += new GeoVectorInput.SetGeoVectorDelegate(SetAxisVector); axisVectorInput.GetGeoVectorEvent += new GeoVectorInput.GetGeoVectorDelegate(GetAxisVector); // vectorInput.DefaultGeoVector = ConstrDefaults.DefaultExtrudeDirection; axisVectorInput.ForwardMouseInputTo = curveInput; optionalOrg(); AngleInput angleInput = new AngleInput("Constr.Face.PathRotate.Angle", angleRotation); angleInput.SetAngleEvent += new AngleInput.SetAngleDelegate(SetAngleInput); angleInput.GetAngleEvent += new AngleInput.GetAngleDelegate(GetAngleInput); AngleInput angleOffsetInput = new AngleInput("Constr.Face.PathRotate.AngleOffset", angleOffsetRotation); angleOffsetInput.SetAngleEvent += new AngleInput.SetAngleDelegate(SetAngleOffsetInput); angleOffsetInput.GetAngleEvent += new AngleInput.GetAngleDelegate(GetAngleOffsetInput); angleOffsetInput.Optional = true; base.SetInput(curveInput, rotateLineInput, axisPointInput, axisVectorInput, angleInput, angleOffsetInput); base.ShowAttributes = true; base.OnSetAction(); }
/// <summary> /// Overrides <see cref="CADability.Actions.ConstructAction.OnSetAction ()"/> /// </summary> public override void OnSetAction() { base.TitleId = "CopyCircularObjects"; BoundingRect result = originals.GetExtent(Frame.ActiveView.ProjectedModel.Projection, true, false); centerPoint = base.ActiveDrawingPlane.ToGlobal(result.GetCenter()); // rotationPoint = base.ActiveDrawingPlane.ToGlobal(result.GetLowerLeft()); rotationPoint = centerPoint; distX = result.Width; if (copCount == 0) { copCount = 4; copAngle = Math.PI / 2.0; } GeoPointInput rotPoint = new GeoPointInput("CopyCircularObjects.RotationPoint"); rotPoint.SetGeoPointEvent += new CADability.Actions.ConstructAction.GeoPointInput.SetGeoPointDelegate(SetRotPoint); rotPoint.GetGeoPointEvent += new CADability.Actions.ConstructAction.GeoPointInput.GetGeoPointDelegate(GetRotPoint); rotPoint.Optional = true; rotPoint.DefinesHotSpot = true; rotPoint.HotSpotSource = "Hotspots.png:0"; IntInput copiesCount = new IntInput("CopyCircularObjects.CopiesCount", copCount); copiesCount.SetMinMax(0, int.MaxValue, true); copiesCount.SetIntEvent += new CADability.Actions.ConstructAction.IntInput.SetIntDelegate(SetCopiesCount); // copiesCount.CalculateIntEvent +=new CADability.Actions.ConstructAction.IntInput.CalculateIntDelegate(CalcCopiesCount); BooleanInput fullCircle = new BooleanInput("CopyCircularObjects.FullCircle", "CopyCircularObjects.FullCircle.Values"); fullCircle.SetBooleanEvent += new CADability.Actions.ConstructAction.BooleanInput.SetBooleanDelegate(SetFullCircle); fullCircle.GetBooleanEvent += new CADability.Actions.ConstructAction.BooleanInput.GetBooleanDelegate(GetFullCircle); copiesAngle = new AngleInput("CopyCircularObjects.CopiesAngle", copAngle); copiesAngle.ReadOnly = !partOfCircle; copiesAngle.Optional = !partOfCircle; copiesAngle.SetAngleEvent += new CADability.Actions.ConstructAction.AngleInput.SetAngleDelegate(SetCopAngle); copiesAngle.GetAngleEvent += new CADability.Actions.ConstructAction.AngleInput.GetAngleDelegate(GetCopAngle); copiesAngle.CalculateAngleEvent += new CADability.Actions.ConstructAction.AngleInput.CalculateAngleDelegate(CalculateCopAngle); BooleanInput rotObject = new BooleanInput("CopyCircularObjects.ObjectsRotation", "CopyCircularObjects.ObjectsRotation.Values"); rotObject.SetBooleanEvent += new CADability.Actions.ConstructAction.BooleanInput.SetBooleanDelegate(SetObjectsRotation); rotObject.GetBooleanEvent += new CADability.Actions.ConstructAction.BooleanInput.GetBooleanDelegate(GetObjectsRotation); base.SetInput(rotPoint, copiesCount, fullCircle, copiesAngle, rotObject); base.OnSetAction(); showCirc(); }
/// <summary> /// Overrides <see cref="CADability.Actions.ConstructAction.OnSetAction ()"/> /// </summary> public override void OnSetAction() { base.TitleId = "Construct.PolarPoint"; feedBackLine = Line.Construct(); Color backColor = base.Frame.GetColorSetting("Colors.Feedback", Color.DarkGray); feedBackLine.ColorDef = new ColorDef("", backColor); lengthPolar = new DefaultLength(ConstructAction.DefaultLength.StartValue.ViewWidth4); startPointInput = new GeoPointInput("Construct.PolarPoint.StartPoint"); startPointInput.DefinesBasePoint = true; startPointInput.SetGeoPointEvent += new CADability.Actions.ConstructAction.GeoPointInput.SetGeoPointDelegate(SetStartPoint); startPointInput.GetGeoPointEvent += new CADability.Actions.ConstructAction.GeoPointInput.GetGeoPointDelegate(GetStartPoint); ang = new AngleInput("Construct.PolarPoint.Angle", 0.0); ang.SetAngleEvent += new CADability.Actions.ConstructAction.AngleInput.SetAngleDelegate(angSetAngle); ang.ForwardMouseInputTo = startPointInput; len = new LengthInput("Construct.PolarPoint.Length", lengthPolar); len.SetLengthEvent += new CADability.Actions.ConstructAction.LengthInput.SetLengthDelegate(lenSetLength); len.CalculateLengthEvent += new CADability.Actions.ConstructAction.LengthInput.CalculateLengthDelegate(lenOnCalculateLength); len.ForwardMouseInputTo = startPointInput; GeoPointInput measureText = new GeoPointInput("MeasurePoint"); measureText.GetGeoPointEvent += new CADability.Actions.ConstructAction.GeoPointInput.GetGeoPointDelegate(GetMeasureText); // geht nur mit readOnly, da sonst die Mausbewegung den angezeigten Wert überschreibt measureText.ReadOnly = true; if (measure) { base.SetInput(startPointInput, ang, len, measureText); } else { base.SetInput(startPointInput, ang, len); } base.OnSetAction(); base.FeedBack.Add(feedBackLine); }
public override void OnSetAction() { base.TitleId = "ConstructAequidist"; if (theBaseCurve == null) { baseCurve = new CurveInput("ConstructAequidist.BaseCurve"); baseCurve.MouseOverCurvesEvent += new CADability.Actions.ConstructAction.CurveInput.MouseOverCurvesDelegate(OnMouseOverCurves); baseCurve.CurveSelectionChangedEvent += new CADability.Actions.ConstructAction.CurveInput.CurveSelectionChangedDelegate(OnCurveSelectionChanged); baseCurve.HitCursor = CursorTable.GetCursor("RoundIn.cur"); baseCurve.ModifiableOnly = false; baseCurve.PreferPath = true; } distance = new LengthInput("ConstructAequidist.Distance"); distance.GetLengthEvent += new CADability.Actions.ConstructAction.LengthInput.GetLengthDelegate(OnGetDistance); distance.SetLengthEvent += new CADability.Actions.ConstructAction.LengthInput.SetLengthDelegate(OnSetDistance); distance.DefaultLength = defaultDistance; distance.CalculateLengthEvent += new CADability.Actions.ConstructAction.LengthInput.CalculateLengthDelegate(OnCalculateDist); distance.ForwardMouseInputTo = baseCurve; // kann ja auch null sein theDistance = defaultDistance; minAngle = new AngleInput("ConstructAequidist.SharpCornerMinAngle"); minAngle.GetAngleEvent += new AngleInput.GetAngleDelegate(OnGetMinAngle); minAngle.SetAngleEvent += new AngleInput.SetAngleDelegate(OnSetMinAngle); minAngle.DefaultAngle = defaultMinAngle; minAngle.Optional = true; minAngle.ForwardMouseInputTo = baseCurve; if (baseCurve != null) { SetInput(baseCurve, distance, minAngle); } else { SetInput(distance, minAngle); } base.OnSetAction(); }
protected override void OnUpdate() { var group = World.GetExistingSystem <ServerSimulationSystemGroup>(); var tick = group.ServerTick; var deltaTime = Time.DeltaTime; Entities.ForEach((ref Shield shield, ref Usable usable, ref OwningPlayer player, ref AngleInput angle, ref Releasable releasable) => { if (releasable.released) { usable.inuse = false; releasable.released = false; } if (usable.inuse) { usable.canuse = true; // keep this true always DestinationComponent dest = EntityManager.GetComponentData <DestinationComponent>(player.Value); dest.Valid = false; EntityManager.SetComponentData <DestinationComponent>(player.Value, dest); } else { // pass } }); Entities.ForEach((ref ShieldHitbox hitbox, ref AssociatedEntity shield, ref Rotation rot, ref OwningPlayer player) => { AngleInput angle = EntityManager.GetComponentData <AngleInput>(shield.Value); // just hack to make it match the animation float clampedAngle = Mathf.Clamp(angle.Value, -90, 0) + 15; Rotation playerRot = EntityManager.GetComponentData <Rotation>(player.Value); rot.Value = playerRot.Value * Quaternion.AngleAxis(clampedAngle, Vector3.up); }); }
protected override void OnUpdate() { var group = World.GetExistingSystem <ServerSimulationSystemGroup>(); var tick = group.ServerTick; var deltaTime = Time.DeltaTime; Entities.ForEach((DynamicBuffer <AgentInput> inputBuffer, ref DestinationComponent destination, ref Rotating rotating) => { AgentInput input; inputBuffer.GetDataAtTick(tick, out input); rotating.Value = 0; if (input.tick > last_processed_tick) { last_processed_tick = input.tick; if (input.DestinationUpdated()) { destination.Value = input.location; destination.Valid = true; } // if input.OrientationUdpdated // target_orientation.Value = input.target_orientation; // TODO can we process canuse somewhere else? if (input.AbilityUsed()) { Entity ability = GhostServerSystem.getGhost(input.ghostId); Usable usable = EntityManager.GetComponentData <Usable>(ability); if (usable.canuse) { usable.inuse = true; usable.canuse = false; EntityManager.SetComponentData <Usable>(ability, usable); if (input.AngleSent()) { AngleInput angle = EntityManager.GetComponentData <AngleInput>(ability); angle.Value = input.angle; EntityManager.SetComponentData <AngleInput>(ability, angle); } } } if (input.RotatingLeft()) { rotating.Value = -1; } if (input.RotatingRight()) { rotating.Value = +1; } if (input.AbilityReleased()) { Entity ability = GhostServerSystem.getGhost(input.ghostId_released); Releasable releasable = EntityManager.GetComponentData <Releasable>(ability); releasable.released = true; EntityManager.SetComponentData <Releasable>(ability, releasable); } } }); }
public override void OnSetAction() { // base.ActiveObject = block; base.TitleId = "RotateObjects"; copyObject = ConstrDefaults.DefaultCopyObjects; axisVector = base.ActiveDrawingPlane.Normal; feedBackEllipse = Ellipse.Construct(); feedBackEllipse.SetEllipseCenterAxis(GeoPoint.Origin, GeoVector.XAxis, GeoVector.YAxis); // damit nicht alles 0 Color backColor = base.Frame.GetColorSetting("Colors.Feedback", Color.DarkGray); feedBackEllipse.ColorDef = new ColorDef("", backColor); base.FeedBack.Add(feedBackEllipse); base.SetCursor(SnapPointFinder.DidSnapModes.DidNotSnap, "RotateSmall"); //--> diese Inputs werden gebraucht GeoPointInput refPointInput = new GeoPointInput("Objects.RefPoint"); refPointInput.Optional = true; refPointInput.SetGeoPointEvent += new CADability.Actions.ConstructAction.GeoPointInput.SetGeoPointDelegate(SetRefPoint); refPointInput.GetGeoPointEvent += new CADability.Actions.ConstructAction.GeoPointInput.GetGeoPointDelegate(GetRefPoint); refPointInput.DefinesHotSpot = true; refPointInput.HotSpotSource = "Hotspots.png:0"; rotAngleInput = new AngleInput("RotateObjects.Angle"); rotAngleInput.SetAngleEvent += new CADability.Actions.ConstructAction.AngleInput.SetAngleDelegate(OnSetRotationAngle); rotAngleInput.GetAngleEvent += new CADability.Actions.ConstructAction.AngleInput.GetAngleDelegate(OnGetRotationAngle); rotAngleInput.CalculateAngleEvent += new CADability.Actions.ConstructAction.AngleInput.CalculateAngleDelegate(OnCalculateRotationAngle); rotAngleInput.MouseClickEvent += new MouseClickDelegate(OnMouseClickRotationAngle); startPointInput = new GeoPointInput("Objects.StartPoint"); startPointInput.Optional = true; startPointInput.SetGeoPointEvent += new CADability.Actions.ConstructAction.GeoPointInput.SetGeoPointDelegate(OnSetStartPoint); startPointInput.GetGeoPointEvent += new CADability.Actions.ConstructAction.GeoPointInput.GetGeoPointDelegate(OnGetStartPoint); endPointInput = new GeoPointInput("Objects.EndPoint"); endPointInput.Optional = true; endPointInput.SetGeoPointEvent += new CADability.Actions.ConstructAction.GeoPointInput.SetGeoPointDelegate(OnSetEndPoint); endPointInput.GetGeoPointEvent += new CADability.Actions.ConstructAction.GeoPointInput.GetGeoPointDelegate(OnGetEndPoint); rotateLineInput = new CurveInput("Constr.Rotate.AxisLine"); rotateLineInput.Decomposed = true; // nur Einzelelemente, auch bei Polyline und Pfad rotateLineInput.MouseOverCurvesEvent += new CurveInput.MouseOverCurvesDelegate(RotateLine); rotateLineInput.CurveSelectionChangedEvent += new CurveInput.CurveSelectionChangedDelegate(RotateLineChanged); rotateLineInput.Optional = true; srcPlane = new PlaneInput("Constr.Rotate.SourcePlane"); srcPlane.SetPlaneEvent += SrcPlane_OnSetPlane; srcPlane.GetPlaneEvent += SrcPlane_OnGetPlane; srcPlane.Optional = true; trgPlane = new PlaneInput("Constr.Rotate.TargetPlane"); trgPlane.SetPlaneEvent += TrgPlane_OnSetPlane; trgPlane.GetPlaneEvent += TrgPlane_OnGetPlane; trgPlane.Optional = true; offset = new MultipleChoiceInput("Constr.Rotate.Offset", "Constr.Rotate.Offset.Values"); offset.Optional = true; offsetVal = 0; offset.GetChoiceEvent += OnGetOffset; offset.SetChoiceEvent += OnSetOffset; BooleanInput copy = new BooleanInput("Modify.CopyObjects", "YesNo.Values"); copy.DefaultBoolean = ConstrDefaults.DefaultCopyObjects; copy.SetBooleanEvent += new CADability.Actions.ConstructAction.BooleanInput.SetBooleanDelegate(SetCopy); base.SetInput(refPointInput, rotAngleInput, startPointInput, endPointInput, rotateLineInput, srcPlane, trgPlane, offset, copy); BoundingCube result = BoundingCube.EmptyBoundingCube; foreach (IGeoObject go in originals) { result.MinMax(go.GetBoundingCube()); } GeoPoint blockCenter = result.GetCenter(); block.RefPoint = blockCenter; refPoint = blockCenter; base.BasePoint = blockCenter; // für die Winkelberechnung base.OnSetAction(); rotateLineInput.SetContextMenu("MenuId.Axis", this); // kann man erst hier machen, zuvor gibts die Property noch nicht }
public override void OnSetAction() { base.ActiveObject = Face.Construct(); if (axisVector.IsNullVector()) { axisVector = GeoVector.YAxis; } if (angleRotation == 0.0) { angleRotation = Math.PI; } base.TitleId = "Constr.Solid.FaceRotate"; geoObjectInput = new GeoObjectInput("Constr.Solid.FaceRotate.Path"); geoObjectInput.MouseOverGeoObjectsEvent += new GeoObjectInput.MouseOverGeoObjectsDelegate(geoObjectInputFace); geoObjectInput.GeoObjectSelectionChangedEvent += new GeoObjectInput.GeoObjectSelectionChangedDelegate(geoObjectInputFaceChanged); if (selectedMode) { geoObjectInput.Fixed = true; } innerPointInput = new GeoPointInput("Constr.Solid.FaceRotate.InnerPoint"); innerPointInput.SetGeoPointEvent += new GeoPointInput.SetGeoPointDelegate(SetInnerPointInput); innerPointInput.MouseClickEvent += new MouseClickDelegate(innerPointInputMouseClickEvent); innerPointInput.Optional = true; rotateLineInput = new CurveInput("Constr.Face.PathRotate.AxisLine"); rotateLineInput.Decomposed = true; // nur Einzelelemente, auch bei Polyline und Pfad rotateLineInput.MouseOverCurvesEvent += new CurveInput.MouseOverCurvesDelegate(RotateAxis); rotateLineInput.CurveSelectionChangedEvent += new CurveInput.CurveSelectionChangedDelegate(RotateAxisChanged); axisPointInput = new GeoPointInput("Constr.Face.PathRotate.AxisPoint", axisPoint); axisPointInput.SetGeoPointEvent += new GeoPointInput.SetGeoPointDelegate(SetAxisPoint); axisPointInput.GetGeoPointEvent += new GeoPointInput.GetGeoPointDelegate(GetAxisPoint); axisPointInput.ForwardMouseInputTo = geoObjectInput; axisPointInput.DefinesBasePoint = true; axisVectorInput = new GeoVectorInput("Constr.Face.PathRotate.AxisVector", axisVector); axisVectorInput.SetGeoVectorEvent += new GeoVectorInput.SetGeoVectorDelegate(SetAxisVector); axisVectorInput.GetGeoVectorEvent += new GeoVectorInput.GetGeoVectorDelegate(GetAxisVector); // vectorInput.DefaultGeoVector = ConstrDefaults.DefaultExtrudeDirection; axisVectorInput.ForwardMouseInputTo = geoObjectInput; updateOptional(); AngleInput angleInput = new AngleInput("Constr.Face.PathRotate.Angle", angleRotation); angleInput.SetAngleEvent += new AngleInput.SetAngleDelegate(SetAngleInput); angleInput.GetAngleEvent += new AngleInput.GetAngleDelegate(GetAngleInput); AngleInput angleOffsetInput = new AngleInput("Constr.Face.PathRotate.AngleOffset", angleOffsetRotation); angleOffsetInput.SetAngleEvent += new AngleInput.SetAngleDelegate(SetAngleOffsetInput); angleOffsetInput.GetAngleEvent += new AngleInput.GetAngleDelegate(GetAngleOffsetInput); angleOffsetInput.Optional = true; MultipleChoiceInput insertMode = new MultipleChoiceInput("Constr.Solid.SolidInsertMode", "Constr.Solid.SolidInsertMode.Values"); insertMode.GetChoiceEvent += new MultipleChoiceInput.GetChoiceDelegate(GetInsertMode); insertMode.SetChoiceEvent += new CADability.Actions.ConstructAction.MultipleChoiceInput.SetChoiceDelegate(SetInsertMode); base.SetInput(geoObjectInput, innerPointInput, rotateLineInput, axisPointInput, axisVectorInput, angleInput, angleOffsetInput, insertMode); base.ShowAttributes = true; base.ShowActiveObject = false; base.OnSetAction(); if (selectedMode) { rotateOrg(false); // zum Zeichnen und organisieren } }