示例#1
0
        protected virtual void OnSceneGUI()
        {
            PointContainer myTarget = (PointContainer)target;

            if (myTarget.points.Count <= 0)
            {
                return;
            }

            EditorGUI.BeginChangeCheck();
            Vector3 newTargetPosition = Vector3.zero;

            if (myTarget.activeId >= 0 && myTarget.activeId < myTarget.points.Count)
            {
                newTargetPosition = Handles.PositionHandle(myTarget.transform.position + myTarget.points[myTarget.activeId].LocalPosition, Quaternion.identity);
            }

            if (EditorGUI.EndChangeCheck())
            {
                Undo.RecordObject(myTarget, "Move Point");
                myTarget.points[myTarget.activeId].LocalPosition = newTargetPosition - myTarget.transform.position;
            }

            for (int i = 0; i < myTarget.points.Count; i++)
            {
                Handles.color = (i == myTarget.activeId) ? new Color(0, 1, 0, .4f) : new Color(1, .5f, 0, .4f);
                float radius = (myTarget.points[i].GetPointInRadius) ? myTarget.points[i].Radius : .5f;
                Handles.DrawSolidDisc(myTarget.transform.position + myTarget.points[i].LocalPosition, Vector3.up, radius);
                Handles.color = Color.black;
                Handles.Label(myTarget.transform.position + myTarget.points[i].LocalPosition, i.ToString());
            }
        }
示例#2
0
        public Window()
        {
            InitializeComponent();

            InfoVersion.Text = Core.Version;

            ConsoleOutput.Font = new System.Drawing.Font(Core.Fonts.Families[0], 10f);

            Package[] installedPackages = Workshop.GetInstalled();

            installedPackages.ToList().ForEach(x =>
            {
                Dictionary <string, string> packageInfo = x.GetInfo();

                PackageInfo p      = new PackageInfo();
                p.NameLabel.Text   = packageInfo["Name"];
                p.AuthorLabel.Text = packageInfo["Authors"];
                p.DescLabel.Text   = packageInfo["Description"];
                p.Package          = x;

                p.Anchor = AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Left;

                InstalledPackagesList.Controls.Add(p);

                p.RunButton.Click += (o, e) =>
                {
                    x.Run(true);
                };
            });

            var hoverColor = new ColorContainer(0, 0, 0);
            var cursorPos  = new PointContainer(0, 0);

            var timer = new System.Timers.Timer();

            timer.Interval = 1000;
            timer.Elapsed += (s, a) =>
            {
                if (this == null)
                {
                    return;
                }

                cursorPos  = InputWrapper.GetCursorPos();
                hoverColor = ScreenWrapper.GetPixels(cursorPos.X, cursorPos.Y, 1, 1)[0][0];

                Invoke(new Action(() =>
                {
                    if (IsDisposed)
                    {
                        return;
                    }

                    ColorDisplay.Text     = $"R: {hoverColor.R} G: {hoverColor.G} B: {hoverColor.B}";
                    CursorPosDisplay.Text = $"X: {cursorPos.X} Y: {cursorPos.Y}";
                }));
            };
            timer.Start();
        }
示例#3
0
        public void RemoveWorks()
        {
            var point          = Point.TryCreate(0, 0);
            var pointContainer = new PointContainer(5);

            pointContainer.Add(point);
            pointContainer.Remove(point);
            Assert.That(pointContainer.Count(), Is.EqualTo(0));
        }
示例#4
0
 private void Awake()
 {
     PointContainer = FindObjectOfType <PointContainer>();
     PointContainer.SelectPoint(PointContainer.Points[0]);
     _lineRenderer = GetComponent <LineRenderer>();
     _selectedDot  = PointContainer.selectedPoint;
     _targetDot    = PointContainer.Points[1];
     _lineRenderer.SetPosition(0, PointContainer.Points[0].position);
 }
示例#5
0
        public void CantAddDuplicate()
        {
            var point          = Point.TryCreate(0, 0);
            var pointContainer = new PointContainer(5);

            pointContainer.Add(point);
            Assert.Throws <ArgumentException>(() => pointContainer.Add(point));
            Assert.That(pointContainer.Count(), Is.EqualTo(1));
        }
示例#6
0
        public void Start()
        {
            _pointContainerObject  = pointContainer.GetComponent <PointContainer>();
            _vPointContainerObject = vPointContainer.GetComponent <VPointContainer>();
            _aPointContainerObject = aPointContainer.GetComponent <APointContainer>();

            labelInput.onValueChanged.AddListener((text) => new LabelValidator(labelInput).OnValueChanged());

            propertiesMenu.SetActive(false);
        }
示例#7
0
        private void SelectionCheck()
        {
            PointContainer myTarget = (PointContainer)target;

            //If the target has been deleted by the time this delegate gets called then don't run the following code
            if (myTarget != null)
            {
                Tools.current = (Selection.activeGameObject == myTarget.gameObject) ? Tool.None : Tool.Move;
            }
        }
示例#8
0
        public void AddWorks()
        {
            var point          = Point.TryCreate(5, 55);
            var pointContainer = new PointContainer(5);

            Assert.That(pointContainer.Count(), Is.EqualTo(0));
            pointContainer.Add(point);
            Assert.That(pointContainer.Count(), Is.EqualTo(1));
            Assert.That(pointContainer.Single().X, Is.EqualTo(5));
            Assert.That(pointContainer.Single().Y, Is.EqualTo(55));
        }
示例#9
0
        static void Construct(GridPoint point, PointContainer container)
        {
            IConstructable c = task as IConstructable;

            if (c != null)
            {
                c.ElementContainer = container;
                c.Start();
                Remove();
            }
        }
示例#10
0
        public override void OnInspectorGUI()
        {
            //Create a target to grab data from
            PointContainer myTarget = (PointContainer)target;

            //This makes sure that the active id is not out of bounds of the points array
            if (myTarget.activeId >= myTarget.points.Count)
            {
                myTarget.activeId = Mathf.Clamp(myTarget.points.Count - 1, 0, myTarget.points.Count);
            }

            GUILayout.Label("Tools");
            EditorGUILayout.BeginVertical("box");

            if (GUILayout.Button("Add New Point"))
            {
                Vector3 startPoint = (myTarget.points.Count > 0) ? myTarget.points[myTarget.activeId].LocalPosition : Vector3.zero;

                myTarget.AddPoint(1, startPoint);
                myTarget.activeId = myTarget.points.Count;
            }

            if (GUILayout.Button("Snap All To Ground"))
            {
                for (int i = 0; i < myTarget.points.Count; i++)
                {
                    myTarget.SnapToGround(i);
                }
            }

            //Change colour of points based on selected point
            GUI.color = (Tools.current == Tool.None) ? Color.red : Color.green;

            GUI.color = Color.white;

            EditorGUILayout.EndVertical();

            GUILayout.Label("Points");
            EditorGUILayout.BeginVertical("box");

            //If we have active points then update the UI with their editors
            if (myTarget.points.Count > 0)
            {
                for (int i = 0; i < myTarget.points.Count; i++)
                {
                    DrawPoint(i, myTarget);
                }
            }

            EditorGUILayout.EndVertical();
        }
示例#11
0
文件: Laser.cs 项目: Bagoum/danmokou
 public override void InvokeCull()
 {
     if (dying)
     {
         return;
     }
     ctr.Deactivate();
     if (endpt.exists)
     {
         endpt.beh !.InvokeCull();
         endpt = new PointContainer(null);
     }
     base.InvokeCull();
 }
示例#12
0
 private void Draw(PointContainer pointContainer)
 {
     pointContainer.Position = DrawPositionHandle(pointContainer.Position);
     Handles.Label(pointContainer.Position, pointContainer.gameObject.name);
     if (!pointContainer.IsLeaf)
     {
         foreach (var child in pointContainer.point.children)
         {
             Handles.DrawLine(pointContainer.point.point, child.point.point);
             Draw(child);
         }
     }
     else if (pathController.wrapPath)
     {
         Handles.DrawLine(pointContainer.point.point, pathController.path.First.point);
     }
 }
示例#13
0
文件: Laser.cs 项目: Bagoum/danmokou
 private void Initialize(bool isNew, BehaviorEntity?parent, Movement movement, ParametricInfo pi, SOPlayerHitbox _target, float cold, float hot, BEHStyleMetadata style, ref RealizedLaserOptions options)
 {
     pi.ctx.laserController = ctr;
     ctr.SetYScale(options.yScale * defaultWidthMultiplier);                      //Needs to be done before Colorize sets first frame
     base.Initialize(style, options.AsBEH, parent, movement, pi, _target, out _); // Call after Awake/Reset
     if (options.endpoint != null)
     {
         var beh = BEHPooler.INode(Movement.None, new ParametricInfo(Vector2.zero, bpi.index),
                                   Vector2.right, options.endpoint);
         endpt = new PointContainer(beh);
         ctr.SetupEndpoint(endpt);
     }
     else
     {
         ctr.SetupEndpoint(new PointContainer(null));
     }
     ctr.Initialize(this, config, style.RecolorOrThrow.material, isNew, bpi, ref options);
     SFXService.Request(options.firesfx);
     SetColdHot(cold, hot, options.hotsfx, options.repeat);
     ctr.Activate(); //This invokes UpdateMesh
 }
示例#14
0
        public void PointContainerSavingAndRetrieving()
        {
            var rep = new PointContainerRepository("test");

            rep.CleanAllDb();

            var cntnr = new PointContainer();

            cntnr.Add(Point.TryCreate(5, 0));
            cntnr.Add(Point.TryCreate(5, 1));
            cntnr.Add(Point.TryCreate(5, 2));
            cntnr.Add(Point.TryCreate(5, 3));
            cntnr.Add(Point.TryCreate(5, 4));
            cntnr.Add(Point.TryCreate(5, 5));
            cntnr.Add(Point.TryCreate(5, 6));
            cntnr.Add(Point.TryCreate(5, 7));
            cntnr.Add(Point.TryCreate(5, 8));
            cntnr.Add(Point.TryCreate(5, 9));

            Assert.That(rep.GetNames().Length, Is.EqualTo(0));
            rep.Save("testName", cntnr);
            Assert.That(rep.GetNames().Length, Is.EqualTo(1));
            Assert.That(rep.GetNames().Single(), Is.EqualTo("testName"));
            var loadedRep = rep.GetByName("testName").ToArray();

            Assert.That(loadedRep.Length, Is.EqualTo(10));

            Assert.That(loadedRep[0], Is.EqualTo(Point.TryCreate(5, 0)));
            Assert.That(loadedRep[1], Is.EqualTo(Point.TryCreate(5, 1)));
            Assert.That(loadedRep[2], Is.EqualTo(Point.TryCreate(5, 2)));
            Assert.That(loadedRep[3], Is.EqualTo(Point.TryCreate(5, 3)));
            Assert.That(loadedRep[4], Is.EqualTo(Point.TryCreate(5, 4)));
            Assert.That(loadedRep[5], Is.EqualTo(Point.TryCreate(5, 5)));
            Assert.That(loadedRep[6], Is.EqualTo(Point.TryCreate(5, 6)));
            Assert.That(loadedRep[7], Is.EqualTo(Point.TryCreate(5, 7)));
            Assert.That(loadedRep[8], Is.EqualTo(Point.TryCreate(5, 8)));
            Assert.That(loadedRep[9], Is.EqualTo(Point.TryCreate(5, 9)));
        }
示例#15
0
    // Update is called once per frame
    void Update()
    {
        //if (racingLine == null)
            //racingLine = new TrackTile[RaceSettings.trackData.trackData.tilesMapped.Count];

        if (cpHit.crash)
            ClearRacingLine();

        RaycastHit hit;
        if (Physics.Raycast(transform.position, -Vector3.up, out hit, 100.0f, 1 << LayerMask.NameToLayer("Track"))) {
            TrackTile newTile = TileFromTriangleIndex(hit.triangleIndex, RaceSettings.trackData.trackData.tiles);

            if (newTile != currentTile) {
                TrackTile start = new TrackTile();
                start.position = transform.position;
                //racingLine[newTile.index] = start;
                Point p = new Point();
                p.index = start.index;
                p.point = start.position;
                racingLine.Add(p);
                //Debug.DrawLine(racingLine[currentTile.index].position, racingLine[newTile.index].position, Color.cyan);
                currentTile = newTile;
                //Debug.Log(currentTile.index);
            }

            // Pintar la linea de carrea actual
            for (int i=0; i < racingLine.Count - 1; i++) {
                Point next = FindNextTile(racingLine, i + 1);
                if (racingLine[i] != null && next != null)
                    Debug.DrawLine(racingLine[i].point, next.point, Color.magenta);
            }

            // Pintar la mejor linea de carrera
            for (int i = 0; i < bestLine.Count - 1; i++) {
                    Debug.DrawLine(bestLine[i].point, bestLine[i + 1].point, Color.black);
            }

            // Guardar linea de carrera
            if (ship.currentLap != lap) {
                // Si el tiempo de la vuelta actual es el mejor
                if (ship.bestLap < bestLap) {
                    XmlSerializer serializer = new XmlSerializer(typeof(PointContainer));
                    Debug.Log(Application.dataPath);
                    FileStream stream = new FileStream(Application.dataPath + "/racinline.xml", FileMode.Create);
                    PointContainer pc = new PointContainer();
                    pc.Points = racingLine;
                    serializer.Serialize(stream, pc);
                    stream.Close();
                    Debug.Log("FIN!" + racingLine.Count);
                    bestLine = racingLine;
                    bestLap = ship.bestLap;
                }
                lap = ship.currentLap;
                ClearRacingLine();
            }
        }
    }
示例#16
0
 /// <summary>
 /// Emulate mouse button release.
 /// </summary>
 /// <param name="button">Number of mouse button to emulate.</param>
 public static void SendMouseUpEvent(int button, PointContainer pos) => Native.API.SendMouseUp(button, pos);
示例#17
0
 public PointInfo(PointContainer item)
 {
     Item = item;
 }
示例#18
0
 public MouseEnterPointEvent(PointContainer point) : base(point)
 {
 }
示例#19
0
 private void Awake()
 {
     _pointContainer = PointContainer.GetComponent <PointContainer>();
 }
示例#20
0
        private void DrawPoint(int id, PointContainer target)
        {
            EditorGUILayout.BeginVertical("box");
            EditorGUILayout.BeginHorizontal();

            GUI.color = (id == target.activeId) ? Color.green : Color.white;

            if (GUILayout.Button(string.Format("Select Point {0}", id)))
            {
                target.activeId = id;
            }

            GUI.color = Color.white;
            EditorGUILayout.BeginVertical("box");

            EditorGUILayout.BeginHorizontal();
            GUILayout.Label("X");
            target.points[id].LocalPosition.x = EditorGUILayout.FloatField(target.points[id].LocalPosition.x);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            GUILayout.Label("Y");
            target.points[id].LocalPosition.y = EditorGUILayout.FloatField(target.points[id].LocalPosition.y);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            GUILayout.Label("Z");
            target.points[id].LocalPosition.z = EditorGUILayout.FloatField(target.points[id].LocalPosition.z);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.EndVertical();

            if (target.points[id].GetPointInRadius)
            {
                EditorGUILayout.BeginVertical("box");
                GUILayout.Label("Radius");
                target.points[id].Radius = EditorGUILayout.Slider(target.points[id].Radius, .1f, 10f);
                EditorGUILayout.EndVertical();
            }

            if (GUILayout.Button("Snap To Ground"))
            {
                target.SnapToGround(id);
            }

            GUI.color = Color.red;
            if (GUILayout.Button("X"))
            {
                target.RemovePoint(id);
            }

            GUI.color = Color.white;

            EditorGUILayout.EndHorizontal();

            target.points[id].GetPointInRadius = EditorGUILayout.Toggle("Get random point within radius", target.points[id].GetPointInRadius);

            EditorGUILayout.EndVertical();


            SceneView.RepaintAll();
        }
示例#21
0
 public ClickPointEvent(PointContainer point)
 {
     Container = point;
     Point     = Container.Point;
 }
示例#22
0
        public void CantAddAfterMaxCapacity()
        {
            var pointContainer = new PointContainer(0);

            Assert.Throws <InvalidOperationException>(() => pointContainer.Add(Point.TryCreate(0, 0)));
        }