Ejemplo n.º 1
0
    private void AddBeamSource(BeamSourceData data)
    {
        BeamSource prop = new BeamSource(this, data);

        allObjects.Add(prop);
        objectsAddedThisMove.Add(prop);
        beamSources.Add(prop);
    }
Ejemplo n.º 2
0
 // ----------------------------------------------------------------
 //  Initialize / Destroy
 // ----------------------------------------------------------------
 override public void Initialize(BoardView _myBoardView, BoardObject bo)
 {
     MyBeamSource = bo as BeamSource;
     BeamColor    = Colors.GetBeamColor(MyBeamSource.ChannelID);
     base.Initialize(_myBoardView, bo);
     beamView.Initialize(_myBoardView.tf_beamLines);
     i_body.color  = BeamColor;
     i_body.sprite = MyBoardOccupant.IsMovable ? s_bodyMovable : s_bodyNotMovable;
 }
Ejemplo n.º 3
0
    public void MirrorBeam(Vector3 hitPoint, Vector3 _reflectedVector, int n, BeamSource beamSource)
    {
        beamSource.linePoints.Add(hitPoint);

        if (n > 60)
        {
            Debug.Log("Infinite loop?"); return;
        }
        RaycastHit hit;

        if (Physics.Raycast(hitPoint, _reflectedVector, out hit, 50, dontIgnoreLayers, QueryTriggerInteraction.Ignore))
        {
            if (hit.collider.tag == "Mirror" && hit.collider.gameObject != gameObject)
            {
                Vector3 reflectedVector = Vector3.Reflect(_reflectedVector, hit.normal);
                //print(hit.collider.transform.parent.name);
                hit.collider.transform.parent.GetComponent <Mirror>().MirrorBeam(hit.point, reflectedVector, n, beamSource);

                if (isFinalMirror)
                {
                    hasHitFinalMirror = true;
                }
            }

            else
            {
                if (hit.collider.tag == "BeamTarget")
                {
                    hit.collider.GetComponent <Objective>().PerformAction();
                    lastHitBeamTarget = hit.collider.gameObject;
                    hasHitBeamTarget  = true;
                }
                else if (hasHitBeamTarget)
                {
                    lastHitBeamTarget.GetComponent <Objective>().DisperformAction();
                    hasHitBeamTarget = false;
                }

                beamSource.linePoints.Add(hit.point);
                beamSource.SetLineRenderer();
            }

            Debug.DrawLine(hitPoint, hitPoint + _reflectedVector * hit.distance, Color.green);
        }
    }
Ejemplo n.º 4
0
 // ----------------------------------------------------------------
 //  Initialize
 // ----------------------------------------------------------------
 public Beam(BeamSource _mySource)
 {
     mySource = _mySource;
 }