void CreateMap(List <TriangleNet.Geometry.Vertex> vertices, List <ISegment> segments, float maxz, float yOffset)
    {
        Dictionary <int, Star> id2star = new Dictionary <int, Star>();
        int v_id = 0;

        foreach (TriangleNet.Geometry.Vertex v in vertices)
        {
            Vector3 pos  = new Vector3((float)v.x, Random.Range(0.0f, maxz) + yOffset, (float)v.y);
            Star    star = CreateStar(pos);

            star.my_text.text = "" + v.id;

            v.id          = v_id++;
            id2star[v.id] = star;

            AddStar(star);
        }

        foreach (Segment s in segments)
        {
            Star start = id2star[s.GetVertex(0).id];
            Star end   = id2star[s.GetVertex(1).id];

            HyperspaceCorridor corridor = CreateCorridor(start, end);
            AddCorridor(corridor);
        }
    }
    public void Exit()
    {
        traveling_through.BeforeExit(this);

        SetOrbiting(target);
        HyperspaceCorridor corridor = traveling_through;

        traveling_through = null;

        corridor.AfterExit(this);
    }
    public void Enter(HyperspaceCorridor corridor, Star destination)
    {
        corridor.BeforeEnter(this);

        traveling_through = corridor;

        SetTarget(destination);
        UnsetOrbiting();

        UpdateSpeed();

        corridor.AfterEnter(this);
    }
Beispiel #4
0
    public override void ClickedOn(Player player)
    {
        if (player.selected_type == SelectedType.Ship)
        {
            Ship ship = (Ship)player.selected;
            if (ship.orbiting != this)
            {
                HyperspaceCorridor corridor = GetCorridor(ship.orbiting);
                if (corridor != null)
                {
                    ship.Enter(corridor, this);
                }
                return;
            }
        }

        player.Select(this);
    }
    private HyperspaceCorridor CreateCorridor(Star start, Star end)
    {
        Vector3 pos = (end.pos - start.pos) * 0.5f + start.pos;

        pos += Game.inst.gameWorld.transform.position;

        Quaternion rot = Quaternion.FromToRotation(Vector3.up, end.pos - start.pos);

        HyperspaceCorridor corridor = Object.Instantiate(Game.inst.corridor_prefab, pos, rot).GetComponent <HyperspaceCorridor>();

        corridor.SetStartEnd(start, end);
        corridor.SetColor(Color.yellow);
        // corridor.SetThickness(0.1f);
        corridor.SetCurrentSpeed(Random.Range(0.0f, 1.0f));

        corridor.gameObject.transform.SetParent(map_obj.transform);

        return(corridor);
    }
 public void AddCorridor(HyperspaceCorridor corridor)
 {
     corridors.Add(corridor);
 }