Exemple #1
0
 // Returns true if the segment moves past the deleter's position.
 private bool CheckDelete(SegmentController segment)
 {
     if (segment.Back < transform.position.x)
     {
         return(true);
     }
     return(false);
 }
    public RingManager(float distance, List <SegmentCollisionBehaviour> segmentCollisionBehaviours, List <SegmentTickBehaviour> segmentTickBehaviours, List <SegmentTriggerBehaviour> segmentTriggerBehaviours, Sprite sprite)
    {
        if (segmentPrefab == null)
        {
            segmentPrefab = Resources.Load("Segment") as GameObject;
        }
        segmentControlers = new List <SegmentController> ();

        int max = (int)Mathf.Floor(distance * Mathf.PI * 1.25f);          // number of segments

        segments = new List <GameObject> (max);

        float min  = -Mathf.PI;                                 //First segment position
        float step = (2 * Mathf.PI / (float)max);               //Distance between segments

        //SegmentTickBehaviourMove stbm = new SegmentTickBehaviourMove (tickMove); //Segments with this tick behaviour will move
        //SegmentTriggerBehaviourDestroy stbd = new SegmentTriggerBehaviourDestroy (); //Segments with this tick behaviour will be destroyed upon getting shot

        SegmentsParent      = new GameObject();
        SegmentsParent.name = "SegmentsParent" + max;
        SegmentsParent.transform.position = Vector3.zero;
        SegmentsParent.transform.rotation = Quaternion.identity;
        SegmentsParent.transform.SetParent(GameManager.GMInstance.root.transform);

        for (int i = 0; i < max; i++)
        {
            GameObject        currentSegment        = MonoBehaviour.Instantiate(segmentPrefab) as GameObject;
            SegmentController currentSegmentManager = currentSegment.GetComponentInChildren <SegmentController> ();
            segmentControlers.Add(currentSegmentManager);
            segments.Add(currentSegment);

            currentSegmentManager.SetPosition(new Vector2((min + step * i + 0.0001f), distance));

            currentSegmentManager.mesh.transform.Find("barrier").GetComponent <SpriteRenderer> ().sprite = sprite;


            for (int j = 0; j < segmentCollisionBehaviours.Count; j++)
            {
                currentSegmentManager.addBehaviour(segmentCollisionBehaviours [j]);
            }
            for (int j = 0; j < segmentTriggerBehaviours.Count; j++)
            {
                currentSegmentManager.addBehaviour(segmentTriggerBehaviours[j]);
            }
            for (int j = 0; j < segmentTickBehaviours.Count; j++)
            {
                currentSegmentManager.addBehaviour(segmentTickBehaviours[j]);
            }

            currentSegment.transform.SetParent(SegmentsParent.transform);
        }
    }
Exemple #3
0
    void SegmentTriggerBehaviour.Enter(Collider2D other, SegmentController segmentController)
    {
        if (other.gameObject.tag == "Shot" || other.gameObject.tag == "PiercingShot" || other.gameObject.tag == "StarPulse")
        {
            Vector3    explodePosition   = UtilityScript.transformToCartesian(other.transform.position);
            GameObject explosionInstance = MonoBehaviour.Instantiate(segmentController.shotFart, explodePosition, Quaternion.identity) as GameObject;

            CamShakeManager.PlayShake(0.1f, 0.5f);
            //SoundManager.PlayExplosionClip();
            // segmentController.mesh.transform.GetChild(0).gameObject.SetActive(false);
            explosionInstance.transform.SetParent(segmentController.mesh.transform);
        }
    }
        protected SegmentController BuildSegmentController(string mediaTypeName)
        {
            var httpContext = new DefaultHttpContext();

            httpContext.Request.Headers[HeaderNames.Accept] = mediaTypeName;

            var controller = new SegmentController(FakeLogger, FakeHowToBecomeSegmentService, FakeMapper, FakeJobProfileSegmentRefreshService)
            {
                ControllerContext = new ControllerContext()
                {
                    HttpContext = httpContext,
                },
            };

            return(controller);
        }
Exemple #5
0
    private void AppendSegment(SegmentController segment)
    {
        segment.LoadParameters(loadedSegmentParameters);

        if (segments.Count > 0)
        {
            segment.AlignToSegment(segments.Last());
        }
        else
        {
            segment.transform.position = Vector3.zero;
        }

        segments.Add(segment);
        lastSegmentZ = segment.transform.position.z;
    }
    public void AlignToSegment(SegmentController otherSegment)
    {
        var deviationDecay = globalAppliedAngleDeviation * 0.65f;

        globalAppliedAngleDeviation -= deviationDecay;
        var outAngle = angle - deviationDecay;

        if (loadedParameters != null)
        {
            var angleDeviation = (Random.value - 0.5f) * LoadedParameters.AngleDeviation;
            outAngle += angleDeviation;
            globalAppliedAngleDeviation = angleDeviation;
        }

        var corePivotOffset = corePivot.transform.position - transform.position;

        transform.position = otherSegment.CoreSocket.transform.position - corePivotOffset;

        leftWall.localEulerAngles = new Vector3(0, outAngle, 0);
        var leftWallPivotOffset = leftWallPivot.transform.position - leftWall.transform.position;

        leftWall.transform.position = otherSegment.leftWallSocket.transform.position - leftWallPivotOffset;

        rightWall.localEulerAngles = new Vector3(0, -outAngle, 0);
        var rightWallPivotOffset = rightWallPivot.transform.position - rightWall.transform.position;

        rightWall.transform.position = otherSegment.rightWallSocket.transform.position - rightWallPivotOffset;

        // Wall offset at longer ranges fix
        var leftWallLocalPosition = leftWall.transform.localPosition;

        leftWallLocalPosition.x          = Mathf.Lerp(leftWallLocalPosition.x, 0, 0.25f);
        leftWall.transform.localPosition = leftWallLocalPosition;

        var rightWallLocalPosition = rightWall.transform.localPosition;

        rightWallLocalPosition.x          = Mathf.Lerp(rightWallLocalPosition.x, 0, 0.25f);
        rightWall.transform.localPosition = rightWallLocalPosition;

        CleanupObstacles();
        if (loadedParameters.Forest)
        {
            GenerateObstacles();
        }
    }
 void SegmentTriggerBehaviour.Enter(Collider2D other, SegmentController segmentController)
 {
     if (other.gameObject.tag == "Shot")
     {
         ShotDestroyerScript SDS = other.GetComponent <ShotDestroyerScript> ();
         if (SDS.IsUsed == false)                    //if the shot has not yet hit something, destroy the segment and mark the shot used
         {
             Vector3 spawnPos = UtilityScript.transformToCartesian(other.transform.position);
             segmentController.DestroySegment(spawnPos);
             SDS.IsUsed = true;
         }
     }
     else if (other.gameObject.tag == "PiercingShot" || other.gameObject.tag == "StarPulse")
     {
         Vector3 spawnPos = UtilityScript.transformToCartesian(other.transform.position);
         segmentController.DestroySegment(spawnPos);
     }
 }
Exemple #8
0
    public RingManagerMulti(float distance, float tickMove)
    {
        if (segmentPrefab == null)
        {
            segmentPrefab = Resources.Load("SegmentMulti") as GameObject;
        }
        segmentControlers = new List <SegmentController> ();

        int max = (int)Mathf.Floor(distance * Mathf.PI * 1.25f);

        segments = new List <GameObject> (max);

        float min  = -Mathf.PI;
        float step = (2 * Mathf.PI / (float)max);
        //Debug.Log ("# segments in ring " + max);

        SegmentTickBehaviourMove       stbm = new SegmentTickBehaviourMove(tickMove);
        SegmentTriggerBehaviourDestroy stbd = new SegmentTriggerBehaviourDestroy();

        GameObject SegmentsParent = new GameObject();

        SegmentsParent.name = "SegmentsParent" + max;
        SegmentsParent.transform.position = Vector3.zero;
        SegmentsParent.transform.rotation = Quaternion.identity;
        for (int i = 0; i < max; i++)
        {
            GameObject currentSegment = MonoBehaviour.Instantiate(segmentPrefab /*, new Vector3(min + step * i, distance, 0), new Quaternion()*/) as GameObject;
            NetworkServer.Spawn(currentSegment);
            SegmentController currentSegmentManager = currentSegment.GetComponentInChildren <SegmentController> ();
            segmentControlers.Add(currentSegmentManager);
            currentSegmentManager.SetPosition(new Vector2((min + step * i + 0.0001f), distance));
            currentSegmentManager.addBehaviour(stbm);
            currentSegmentManager.addBehaviour(stbd);
            //currentSegmentManager.SetPosition (new Vector2 ((min + step * i), distance));
            segments.Add(currentSegment);
            currentSegment.transform.SetParent(SegmentsParent.transform);
        }
    }
 private void RemoveSegment(SegmentController segment)
 {
     segment.OnExitSegmentBegin -= AddNextSegment;
     segment.OnExitSegmentEnd   -= RemoveSegment;
     resourseManager.RemoveSegment(segment);
 }
Exemple #10
0
 public ConcurrentQueue <DataEntry> SegmentData(int NumOfSplits = 50)
 {
     return(SegmentController.SegmentData(AllDataEntries, NumOfSplits));
 }
 void OnEnable()
 {
     segment = GetComponentInParent <SegmentController>();
 }
 public void RemoveSegment(SegmentController segment)
 {
     Destroy(segment.transform.parent.gameObject);
 }
Exemple #13
0
 void SegmentTickBehaviour.Tick(SegmentController segmentController)
 {
 }
Exemple #14
0
 void SegmentTickBehaviour.FixedTick(SegmentController segmentController)
 {
     segmentController.physics.transform.Translate(speed * Time.fixedDeltaTime);
 }