示例#1
0
        // Use this for initialization
        void Start()
        {
            var tr = transform;

            data.canvas  = GameObject.FindObjectOfType <Canvas>();
            data.machine = GameObject.Find("machine");

            data.progress = new Progress();
            data.player   = new Player();

            float radius = 200;
            // 左周り.
            var left = new CircleData();

            left.radius = radius;
            left.list   = new Rect[] {
                new Rect(0, 0, radius, radius),
                new Rect(radius, 0, radius, radius),
                new Rect(radius, radius, radius, radius),
                new Rect(0, radius, radius, radius),
            };
            left_ = left;
            // 右回り.
            var right = new CircleData();

            right.radius = radius;
            right.list   = new Rect[] {
                new Rect(0, 0, radius, radius),
                new Rect(0, radius, radius, radius),
                new Rect(radius, radius, radius, radius),
                new Rect(radius, 0, radius, radius),
            };
            right_ = right;
        }
示例#2
0
        public static void CheckCircle(CircleData c, Vector2 ipos)
        {
            c.preHitCount = c.hitCount;
            var preIndex = c.hitIndex;
            var offs     = new Vector2(
                (ScreenData.instance.exSize.x - c.radius * 2) * 0.5f,
                (ScreenData.instance.exSize.y - c.radius * 2) * 0.5f
                );
            int index = ArrayHelper.FindIndex(c.list, ipos - offs, (_item, _prm) => {
                return(_item.Contains(_prm));
            });

            c.hitIndex = index;
            if (index == -1)
            {
                c.hitCount = 0;
                return;
            }
            var diff = (index - preIndex + c.list.Length) % c.list.Length;

            if (diff == 0)
            {
                // stay
            }
            else if (diff == 1)
            {
                c.hitCount++;
            }
            else
            {
                c.hitCount = 0;
            }
        }
示例#3
0
 private static Vector2 CreateCircleVertexVectorV2(CircleData circleData)
 {
     return(circleData.center +
            circleData.radius *
            new Vector2((float)Math.Cos(circleData.theta + circleData.increment),
                        (float)Math.Sin(circleData.theta + circleData.increment)));
 }
示例#4
0
        public override void FromJson(Dictionary <string, Node> nodes, string data)
        {
            CircleData d = JsonConvert.DeserializeObject <CircleData>(data);

            SetBaseNodeDate(d);
            radius  = d.radius;
            outline = d.outline;
        }
示例#5
0
    // Use this for initialization
    void Start()
    {
        // da = GameObject.FindGameObjectWithTag("EditorOnly").GetComponent<RayCastF>();
        da = Camera.main.GetComponent <CircleData>();
        var spawnCircle = GameObject.Find("Quadri1");

        sc = spawnCircle.GetComponent <SpawnCircle1>();
    }
示例#6
0
    // Use this for initialization
    void Start()
    {
        // da = GameObject.FindGameObjectWithTag("EditorOnly").GetComponent<RayCastF>();
        da = Camera.main.GetComponent <CircleData>();
        var spawnCircle = GameObject.Find("Quadri");

        sc = spawnCircle.GetComponent <SpawnCircle>();
        SceneManager.UnloadSceneAsync("CircleTest 1");
    }
        public CircleGetResult Get(CircleGetCommand command)
        {
            var id     = new CircleId(command.Id);
            var circle = circleRepository.Find(id);

            var data = new CircleData(circle);

            return(new CircleGetResult(data));
        }
示例#8
0
 public void RemoveNextCircleData()
 {
     TurnLightOff();
     if (_nextCircleDataOutput != null)
     {
         _nextCircleDataOutput.RemoveNextCircleData();
         _nextCircleDataOutput = null;
     }
 }
示例#9
0
        public override string GetJson()
        {
            CircleData d = new CircleData();

            FillBaseNodeData(d);
            d.radius  = radius;
            d.outline = outline;

            return(JsonConvert.SerializeObject(d));
        }
示例#10
0
        public CircleData GetOuterCircle(Canvas c)
        {
            CircleData cd = new CircleData()
            {
                Centre = new Point(c.ActualWidth / 2, c.ActualHeight / 2)
            };

            cd.OuterRadius = (c.ActualWidth > c.ActualHeight) ? (c.ActualHeight / 2) * 0.9 : cd.OuterRadius = (c.ActualWidth / 2) * 0.9;

            return(cd);
        }
示例#11
0
    private bool _lockRotation; //allow rotation only on the drop location

    void Start()
    {
        _startCollider    = _collider.size;
        _circleData       = GetComponent <CircleData>();
        _lockRotation     = false;
        _orignalParent    = transform.parent;
        _originalPosition = transform.localPosition;
        _originalRotation = transform.localRotation.eulerAngles.z;

        _puzzleCam = GameObject.Find("PuzzleThree").transform.GetChild(0).GetComponent <Camera>();
    }
示例#12
0
    public void CheckSurrounding()
    {
        Direction missedHole = Direction.None;

        foreach (Direction hole in _holeLocations)
        {
            Point      targetPoint = DirectionExtensions.GetDirectionPoint(hole);
            GameObject side        = GridLevelManager.Instance.GetCircleData(targetPoint.X + GetPoint().X, targetPoint.Y + GetPoint().Y);
            if (side != null)
            {
                CircleData sideData = side.GetComponent <CircleData>();
                if (sideData != null)
                {
                    if (sideData.MatchConnectingHole(hole))
                    {
                        if (sideData.LightOn())
                        {
                            sideData.SetNextCircleData(this);
                            TurnLightOn();
                            if (missedHole != Direction.None)
                            {
                                targetPoint = DirectionExtensions.GetDirectionPoint(missedHole);
                                side        = GridLevelManager.Instance.GetCircleData(targetPoint.X + GetPoint().X, targetPoint.Y + GetPoint().Y);
                                sideData    = side.GetComponent <CircleData>();
                                sideData.CheckSurrounding();
                            }
                        }
                        else if (LightOn())
                        {
                            sideData.CheckSurrounding();
                        }
                        else
                        {
                            missedHole = hole;
                        }
                    }
                }
            }
        }

        if (GridLevelManager.Instance.CheckWinTile(GetPoint()))
        {
            if (_lightUp)
            {
                foreach (Direction hole in _holeLocations)
                {
                    if (GridLevelManager.Instance.DirectionFacingGoal(hole, GetPoint().X, GetPoint().Y))
                    {
                        GridLevelManager.Instance.ExecuteWin();
                    }
                }
            }
        }
    }
        protected override ValidationResult ValidatePropsValues(IDictionary <string, double> figureProps)
        {
            var data = new CircleData
            {
                Radius = figureProps[CircleInfo.PropNames.Radius]
            };

            var validator = new CircleDataValidator();

            return(validator.Validate(data));
        }
示例#14
0
 public void SetData(CircleData data)
 {
     this.data = data;
     if (spriteRenderer == null)
     {
         InitializeSprite(data.GetColor());
     }
     this.radius = data.GetRadius();
     UpdateRadius();
     UpdatePosition();
 }
示例#15
0
        public override void FromJson(Dictionary <string, Node> nodes, string data)
        {
            CircleData d = JsonConvert.DeserializeObject <CircleData>(data);

            SetBaseNodeDate(d);
            radius  = d.radius;
            outline = d.outline;

            SetConnections(nodes, d.outputs);

            OnWidthHeightSet();
        }
示例#16
0
        private void CheckCollisionWithWalls(CircleData circle, float deltaTime)
        {
            var   position = circle.GetPosition();
            var   radius   = circle.GetRadius();
            var   invertX  = false;
            var   invertY  = false;
            float deltaX   = 0;
            float deltaY   = 0;

            if (position.x + radius > halfWidth)
            {
                invertX = true;
                deltaX  = halfWidth - position.x - radius;
            }
            else if (position.x - radius < -halfWidth)
            {
                invertX = true;
                deltaX  = -halfWidth - position.x + radius;
            }

            if (position.y + radius > halfHeight)
            {
                invertY = true;
                deltaY  = halfHeight - position.y - radius;
            }
            else if (position.y - radius < -halfHeight)
            {
                invertY = true;
                deltaY  = -halfHeight - position.y + radius;
            }

            float updateTimeX = 0;
            float updateTimeY = 0;
            var   speed       = circle.GetSpeed();

            if (invertX)
            {
                updateTimeX = deltaX / speed.x;
            }
            if (invertY)
            {
                updateTimeY = deltaY / speed.y;
            }

            if (invertX || invertY)
            {
                var updateTime = Mathf.Min(updateTimeX, updateTimeY);
                circle.UpdatePosition(updateTime);
                circle.InvertSpeed(invertX, invertY);
                circle.UpdatePosition(-updateTime);
            }
        }
 //Save data
 public void Save()
 {
     man = GetComponent <GridManager>();
     foreach (GameObject obj in man.circles)
     {
         data            = GetComponent <CircleData>();
         data.circlename = obj.name;
         data.color      = obj.GetComponent <Renderer>().material.color;
         data.coordinate = obj.GetComponent <Transform>().position;
         string json = JsonUtility.ToJson(data);
         WriteToFile(json);
     }
 }
示例#18
0
        private static CircleData CreateCircleData(CircleShape circle, Transform xf)
        {
            var circleData = new CircleData
            {
                center    = MathUtils.Mul(ref xf, circle.Position),
                radius    = circle.Radius,
                segments  = CircleSegments,
                increment = Math.PI * 2.0 / 32,
                theta     = 0.0
            };

            return(circleData);
        }
        public Task <CircleGetOutputData> Handle(CircleGetCommand command, CancellationToken cancellationToken)
        {
            var data = _circleRepository.Find(new CircleId(command.Id));

            if (data is null)
            {
                throw new CircleNotFoundException($"IDが { command.Id } のサークルが見つかりませんでした");
            }

            var circle = new CircleData(data.Id.Value, data.Name.Value, data.Owner.Value, data.Members.Select(x => x.Value).ToList());

            return(Task.FromResult(new CircleGetOutputData(circle)));
        }
示例#20
0
        private void mAsyncChange(bool create)
        {
            if (!create && mIndexPacge == 0)
            {
                return;
            }

            if (create)
            {
                List <CircleData> end = mBuffs[mIndexs[mIndexs.Count - 1]];
                var newDataList       = new List <CircleData>();
                mBuffs[mIndexs.Count] = newDataList;
                mIndexs.Add(mIndexs.Count);

                for (int i = 0; i < end.Count; i++)
                {
                    var cd = end[i];

                    CircleData newCD     = null;
                    int        realIndex = GetIndex(mIndexPacge, i, true);
                    mGroupTransform.Add(1);
                    if (mTempObject.Count > realIndex)
                    {
                        newCD = mTempObject[realIndex];
                    }
                    else
                    {
                        //GameObject clone = SceneManager.CloneObject(cd.go);

                        GameObject clone = mGroupTransform.Last.gameObject;
                        clone.transform.position = cd.go.transform.position + mWorldSzie;
                        newCD    = new CircleData();
                        newCD.go = clone;
                        mTempObject.Add(newCD);
                    }

                    newDataList.Add(newCD);

                    if (SentEvent(newCD, realIndex))
                    {
                        newCD.go.SetActive(true);
                    }
                    else
                    {
                        newCD.go.SetActive(false);
                    }
                }
                mIndexs[0]++;
                mIndexPacge += 1;
            }
        }
示例#21
0
        public CircleGetOutputData Handle(CircleGetInputData inputData)
        {
            var id     = new CircleId(inputData.Id);
            var circle = circleRepository.Find(id);

            var data = new CircleData(
                circle.Id.Value,
                circle.Name.Value,
                circle.Owner?.Value,
                circle.Members.Select(x => x.Value).ToList()
                );

            return(new CircleGetOutputData(data));
        }
示例#22
0
        private Vector2D[] CreateCircleVertexArray(CircleData circleData)
        {
            var vertices = new List <Vector2D>();

            for (int i = 0; i < circleData.segments; i++)
            {
                Vector2 v1 = CreateCircleVertexVectorV1(circleData);
                Vector2 v2 = CreateCircleVertexVectorV2(circleData);
                vertices.Add(UnitConverter.Convert(UnitConverter.ToDisplayUnits(v1)));
                vertices.Add(UnitConverter.Convert(UnitConverter.ToDisplayUnits(v2)));
                circleData.theta += circleData.increment;
            }
            return(vertices.ToArray());
        }
示例#23
0
        public void DrawColourWheel()
        {
            if (WheelCanvas == null)
            {
                return;
            }

            WheelCanvas.Children.Clear();

            CircleData cd = GetOuterCircle(WheelCanvas);

            Brush[] rainbow = { Brushes.Red, Brushes.Orange, Brushes.Yellow, Brushes.Green, Brushes.Blue, Brushes.Indigo, Brushes.Violet };

            int numSegments = NumSegmentsBox.Value.HasValue ? NumSegmentsBox.Value.Value : 12;
            int numCircles  = NumCirclesBox.Value.HasValue ? NumCirclesBox.Value.Value : 3;

            var endColors = SetColourRange(numSegments);

            int    wheelWidth     = WheelWidth.Value.HasValue ? WheelWidth.Value.Value : 100;
            double startingRadius = cd.OuterRadius;
            double endingRadius   = Math.Max(cd.OuterRadius - wheelWidth, 1);
            double radiusChange   = (startingRadius - endingRadius) / numCircles;

            double sweep = (360.0 / numSegments);

            for (int j = 0; j < numCircles; ++j)
            {
                double     outerRadius = startingRadius - j * radiusChange;
                double     innerRadius = outerRadius - radiusChange;
                CircleData thisWheel   = new CircleData
                {
                    OuterRadius = outerRadius,
                    InnerRadius = innerRadius,
                    Centre      = cd.Centre
                };

                double circleLuminosity = numCircles == 1?0.5:(((double)j + 1) / numCircles) * .9;
                Color  startColour      = new HSLColor(endColors.Item1.Hue, 1, circleLuminosity);
                double endColourHue     = (double)(numSegments - 1) / numSegments;
                Color  endColour        = new HSLColor(endColors.Item2.Hue, 1, circleLuminosity);

                for (int i = 0; i < numSegments; ++i)
                {
                    double          start = (360.0 / numSegments) * i;
                    SolidColorBrush brush = new SolidColorBrush(IntepolateHSV(startColour, endColour, (double)i / numSegments));
                    WheelCanvas.Children.Add(CreateWheelSegment(thisWheel, start, sweep, brush, false, UseStraightEdges.IsChecked.HasValue?UseStraightEdges.IsChecked.Value:false));
                }
            }
        }
示例#24
0
        public void Create(OpenGL GL, string texPath, GShaderProgram shader)
        {
            CircleData c = DrawCircle(0f, 0f, 1f, _numSegments);

            vec3[] points  = c.points;
            vec3[] normals = new vec3[points.Length];
            vec2[] texCord = c.texture;
            for (int i = 0; i < normals.Length; i++)
            {
                normals[i] = new vec3(0.0f, 0.0f, -1.0f);
            }


            if (texPath == null || texPath == "")
            {
                _textureName = C_DUMMY_TEXTURE;
                TextureManager.Instance.CreateTexture1x1(C_DUMMY_TEXTURE, GL, false, Color.Blue);
            }
            else
            {
                _textureName = texPath;
                TextureManager.Instance.CreateTexture(texPath, GL, false);
            }

            compassVAO = new VertexBufferArray();
            compassVAO.Create(GL);
            compassVAO.Bind(GL);

            VertexBuffer[] cVBO = new VertexBuffer[3];

            cVBO[0] = new VertexBuffer();
            cVBO[0].Create(GL);
            cVBO[0].Bind(GL);
            cVBO[0].SetData(GL, (uint)shader.GetAttributeID(GL, "vPosition"), points, false, 3);

            //  Texture
            cVBO[1] = new VertexBuffer();
            cVBO[1].Create(GL);
            cVBO[1].Bind(GL);
            cVBO[1].SetData(GL, (uint)shader.GetAttributeID(GL, "vTextureCoord"), texCord, false, 2);

            //  Normals
            cVBO[2] = new VertexBuffer();
            cVBO[2].Create(GL);
            cVBO[2].Bind(GL);
            cVBO[2].SetData(GL, (uint)shader.GetAttributeID(GL, "vSurfaceNormal"), normals, false, 3);

            compassVAO.Unbind(GL);
        }
示例#25
0
 public CircleData CalculateAverageCircle(CircleData cFrom, CircleData cTo, float factor)
 {
     return(new CircleData()
     {
         X = cFrom.X + (cTo.X - cFrom.X) * factor,
         Y = cFrom.Y + (cTo.Y - cFrom.Y) * factor,
         Radius = Convert.ToInt32(cFrom.Radius + (cTo.Radius - cFrom.Radius) * factor),
         Segments = Convert.ToInt32(cFrom.Segments + (cTo.Segments - cFrom.Segments) * factor),
         R1 = Convert.ToByte(cFrom.R1 + (cTo.R1 - cFrom.R1) * factor),
         G1 = Convert.ToByte(cFrom.G1 + (cTo.G1 - cFrom.G1) * factor),
         B1 = Convert.ToByte(cFrom.B1 + (cTo.B1 - cFrom.B1) * factor),
         R2 = Convert.ToByte(cFrom.R2 + (cTo.R2 - cFrom.R2) * factor),
         G2 = Convert.ToByte(cFrom.G2 + (cTo.G2 - cFrom.G2) * factor),
         B2 = Convert.ToByte(cFrom.B2 + (cTo.B2 - cFrom.B2) * factor),
     });
 }
示例#26
0
        public bool SpawnCircle(CircleData circle)
        {
            var circlePosition = circle.GetPosition();
            var circleRadius   = circle.GetRadius();

            foreach (var circleOnField in circles)
            {
                var minDistance = circleRadius + circleOnField.GetRadius();
                var distance    = (circlePosition - circleOnField.GetPosition()).magnitude;
                if (minDistance > distance)
                {
                    return(false);
                }
            }
            circles.Add(circle);
            return(true);
        }
示例#27
0
        private bool SentEvent(CircleData go, int i)
        {
            if (mLoop)
            {
                i = i < 0?((mCurNum - Mathf.Abs(i) % mCurNum) % mCurNum):(i % mCurNum);
            }

            go.index = i;
            if (mAutoLen && mCurNum <= i)
            {
                return(false);
            }
            if (mCallEvent != null)
            {
                return(mCallEvent(i, go));
            }
            return(true);
        }
示例#28
0
        private void UpdateScale()
        {
            InitializeTransform();
            InitializeEffect();
            if (fSpriteBatch == null)
            {
                return;
            }

            int maxLines = 1000000;

            fLines = new DynamicPrimitiveLine(fSpriteBatch.GraphicsDevice);

            CircleData circleTo    = CreateRandomCircle();
            CircleData circleFrom  = null;
            int        currentStep = 0;
            int        maxSteps    = 0;

            while (fLines.Lines < maxLines)
            {
                CircleData currentCircle;
                currentStep++;
                if (currentStep >= maxSteps)
                {
                    circleFrom    = circleTo;
                    circleTo      = CreateRandomCircle();
                    currentStep   = 0;
                    maxSteps      = fRandom.Next(200) + 1;
                    currentCircle = circleFrom;
                }
                else
                {
                    float f = Convert.ToSingle(currentStep) / maxSteps;
                    currentCircle = CalculateAverageCircle(circleFrom, circleTo, f);
                }
                Color c1 = new Color(currentCircle.R1, currentCircle.G1, currentCircle.B1, (byte)255);
                Color c2 = new Color(currentCircle.R2, currentCircle.G2, currentCircle.B2, (byte)255);
                fLines.AddCircle(currentCircle.X, currentCircle.Y, 0,
                                 currentCircle.Radius, currentCircle.Radius,
                                 currentCircle.Segments, c1, c2);
            }
        }
示例#29
0
        CircleData DrawCircle(float cx, float cy, float r, int num_segments)
        {
            CircleData c = new CircleData();

            vec3[] circle_v = new vec3[num_segments];
            vec2[] cTex     = new vec2[num_segments];
            for (int ii = 0; ii < num_segments; ii++)
            {
                float theta = 2.0f * 3.1415926f * ii / num_segments; //get the current angle
                circle_v[ii].x = r * (float)Math.Cos(theta);         //calculate the x component
                circle_v[ii].y = r * (float)Math.Sin(theta);         //calculate the y component

                // Texture coordinates - (0,0) on circle must map to (0.5,0.5) texture and (1,1) maps to (1,1)..
                cTex[ii].x = (float)Math.Cos(theta) * 0.5f + 0.5f;
                cTex[ii].y = (float)Math.Sin(theta) * 0.5f + 0.5f;
            }
            c.points  = circle_v;
            c.texture = cTex;
            return(c);
        }
示例#30
0
 public static bool CalculateCircle(
     Vector2 p0,
     Vector2 p1,
     Vector2 p2,
     out Vector2 center,
     out float radius
     )
 {
     center = Vector2.zero;
     radius = 0f;
     try {
         CircleData cd = findCircle2(p0, p1, p2);
         if (cd.center == p0)
         {
             return(false);
         }
         center = cd.center;
         radius = cd.radius;
     }catch {
         return(false);
     }
     return(true);
 }
示例#31
0
		private Vector2D[] CreateCircleVertexArray(CircleData circleData)
		{
			var vertices = new List<Vector2D>();
			for (int i = 0; i < circleData.segments; i++)
			{
				Vector2 v1 = CreateCircleVertexVectorV1(circleData);
				Vector2 v2 = CreateCircleVertexVectorV2(circleData);
				vertices.Add(UnitConverter.Convert(UnitConverter.ToDisplayUnits(v1)));
				vertices.Add(UnitConverter.Convert(UnitConverter.ToDisplayUnits(v2)));
				circleData.theta += circleData.increment;
			}
			return vertices.ToArray();
		}
示例#32
0
		private static Vector2 CreateCircleVertexVectorV2(CircleData circleData)
		{
			return circleData.center +
				circleData.radius *
					new Vector2((float)Math.Cos(circleData.theta + circleData.increment),
						(float)Math.Sin(circleData.theta + circleData.increment));
		}
示例#33
0
		private static CircleData CreateCircleData(CircleShape circle, Transform xf)
		{
			var circleData = new CircleData
			{
				center = MathUtils.Mul(ref xf, circle.Position),
				radius = circle.Radius,
				segments = CircleSegments,
				increment = Math.PI * 2.0 / 32,
				theta = 0.0
			};
			return circleData;
		}