GetPosition() public method

public GetPosition ( ) : Vector2
return Vector2
Example #1
0
    public Vector2 GetPositionRelativeToAncestor(FContainer ancestor)
    {
        FNode target = this;

        Vector2 position = new Vector2(0, 0);

        FContainer container;

        while (true)
        {
            position += target.GetPosition();
            container = target.container;
            if (container == null)
            {
                break;
            }
            if (container == ancestor)
            {
                break;
            }
            target = container;
        }

        return(position);
    }
Example #2
0
    public void addPlayer(Player p)
    {
        p.addToMiniMap(miniMap);
        if (p.isControlled)
        {
            p.SetPosition(playerSpawn.GetPosition());
        }
        else
        {
            p.SetPosition(spawnPoints[RXRandom.Int(spawnPoints.Count)].GetPosition());
        }
        float scaleChance = RXRandom.Float();

        if (scaleChance < .15f)
        {
            p.setScale(3.0f);
        }
        else if (scaleChance < .4f)
        {
            p.setScale(2.0f);
        }
        playerLayer.AddChild(p);
        playerList.Add(p);
        p.setWorld(this);
    }
Example #3
0
    public FNodeFollower(FNode follower,FNode following)
    {
        _follower=follower;
        _following=following;

        Vector2 globalPos=_following.LocalToGlobal(Vector2.zero);
        Vector2 localPos=_follower.container.GlobalToLocal(globalPos);
        _offset=_follower.GetPosition()-localPos;

        ((IFNodeWatcher)this).Watch(_following);
    }
Example #4
0
 public void go(FNode node_, float duration_, float amplitude_)
 {
     Cancel(node_);
     oPosition = node_.GetPosition();
     curDuration = duration = duration_;
     curAmplitude = amplitude = amplitude_;
     _pendings.Add(node_, this);
     if (node == null)
     {
         Futile.instance.SignalUpdate += HandleUpdate;
     }
     node = node_;
 }
Example #5
0
 public void go(FNode node_, float duration_, float amplitude_)
 {
     oPosition    = node_.GetPosition();
     curDuration  = duration = duration_;
     curAmplitude = amplitude = amplitude_;
     if (_pendings.ContainsKey(node_))
     {
         _pendings.Remove(node_);
     }
     _pendings.Add(node_, this);
     if (node == null)
     {
         Futile.instance.SignalUpdate += HandleUpdate;
     }
     node = node_;
 }
Example #6
0
    virtual public void Update()
    {
        if (_clipNode != null && !_skipZero)
        {
            // get position of _clipNode relative to this
            Vector2 relPos = StageToLocal(_clipNode.GetPosition());

            float xMin = relPos.x - _clipWidth / 2 - _tileWidth * 0.75f;
            float yMin = relPos.y - _clipHeight / 2 - _tileHeight * 0.75f;

            // check if the _clipNode has moved enough to check tile positions
            if (Mathf.Round(xMin / _tileWidth) == _clipPos.x && Mathf.Round(yMin / _tileHeight) == _clipPos.y)
            {
                return;
            }
            _clipPos = new Vector2(Mathf.Round(xMin / _tileWidth), Mathf.Round(yMin / _tileHeight));

            float tileOffsetX = (Mathf.Floor(_clipWidth / _tileWidth) + 2) * _tileWidth;
            float tileOffsetY = (Mathf.Floor(_clipHeight / _tileHeight) + 2) * _tileHeight;

            float xMax = xMin + tileOffsetX;
            float yMax = yMin + tileOffsetY;

            foreach (FSprite tile in _tiles)
            {
                bool tileChangedX = false;
                bool tileChangedY = false;
                while (tile.x < xMin)
                {
                    tile.x      += tileOffsetX;
                    tileChangedX = true;
                }
                if (!tileChangedX)
                {
                    while (tile.x > xMax)
                    {
                        tile.x      -= tileOffsetX;
                        tileChangedX = true;
                    }
                }
                while (tile.y < yMin)
                {
                    tile.y      += tileOffsetY;
                    tileChangedY = true;
                }
                if (!tileChangedY)
                {
                    while (tile.y > yMax)
                    {
                        tile.y      -= tileOffsetY;
                        tileChangedY = true;
                    }
                }

                if (tileChangedX || tileChangedY)
                {
                    int tileX = Mathf.FloorToInt((tile.x - _tileWidth / 2) / _tileWidth);
                    int tileY = Mathf.FloorToInt((-tile.y - _tileHeight / 2) / _tileHeight);

                    if (repeatX)
                    {
                        while (tileX < 0)
                        {
                            tileX += _tilesWide;
                        }
                        while (tileX >= _tilesWide)
                        {
                            tileX -= _tilesWide;
                        }
                    }
                    else if (tileX < 0 || tileX >= _tilesWide)
                    { // display empty tile, outside of known data
                        tileX = -1;
                        tileY = -1;
                    }
                    if (repeatY)
                    {
                        while (tileY < 0)
                        {
                            tileY += _tilesHigh;
                        }
                        while (tileY >= _tilesHigh)
                        {
                            tileY -= _tilesHigh;
                        }
                    }
                    else if (tileY < 0 || tileY >= _tilesHigh)
                    { // display empty tile, outside of known data
                        tileX = -1;
                        tileY = -1;
                    }

                    int frame = tileX + tileY * _tilesWide;
                    if (frame >= 0 && frame < _tileArray.GetLength(0))
                    {
                        uint frameNum             = _tileArray[frame];
                        bool flipped_horizontally = FTmxMap.FlippedHorizontally(frameNum);
                        bool flipped_vertically   = FTmxMap.FlippedVertically(frameNum);
                        bool flipped_diagonally   = FTmxMap.FlippedDiagonally(frameNum);

                        tile.element = Futile.atlasManager.GetElementWithName(_baseName + "_" + FTmxMap.RemoveFrameFlags(frameNum));

                        tile.rotation = flipped_diagonally ? -90 : 0;
                        if (flipped_diagonally)
                        {
                            tile.scaleY = flipped_vertically ? 1 : -1;
                            tile.scaleX = flipped_horizontally ? -1 : 1;
                            if (!(flipped_horizontally || flipped_vertically))
                            {
                                tile.scaleX   = -1;
                                tile.scaleY   = 1;
                                tile.rotation = -90;
                            }
                            else if (flipped_vertically && flipped_horizontally)
                            {
                                tile.scaleX = 1;
                                tile.scaleY = -1;
                            }
                        }
                        else
                        {
                            tile.scaleY = flipped_vertically ? -1 : 1;
                            tile.scaleX = flipped_horizontally ? -1 : 1;
                        }
                        tile.isVisible = true;
                    }
                    else
                    {
                        tile.isVisible = false;
                    }
                }
            }
        }
    }
Example #7
0
    internal void loadMap(string mapName)
    {
        this.clearMap();
        this.LoadTMX("Maps/" + mapName);

        tilemap = (FTilemap)(getLayerNamed("Tilemap"));

        for (int x = 0; x < 3; x++)
        {
            otherTilemaps[x] = new FTilemap(tilemap.BaseElementName + "_" + (x + 1), 1);
            otherTilemaps[x].LoadText(tilemap.dataString, false);
        }

        tilemapCollision = (FTilemap)(getLayerNamed("Meta"));
        objectGroup      = (FContainer)(getLayerNamed("Objects"));



        foreach (XMLNode xml in this.objects)
        {
            switch (xml.attributes["type"])
            {
            case "Spawn":
                FNode spawnPoint = new FNode();
                spawnPoint.SetPosition(int.Parse(xml.attributes["x"]) + 8, -int.Parse(xml.attributes["y"]) + 8);
                spawnPoints.Add(spawnPoint);
                player.SetPosition(spawnPoint.GetPosition());
                break;

            case "Warp":
                int     warpX          = 0;
                int     warpY          = 0;
                XMLNode propertiesNode = (XMLNode)xml.children[0];
                foreach (XMLNode property in propertiesNode.children)
                {
                    switch (property.attributes["name"])
                    {
                    case "warpTileX":
                        warpX = int.Parse(property.attributes["value"]);
                        break;

                    case "warpTileY":
                        warpY = int.Parse(property.attributes["value"]);
                        break;
                    }
                }
                WarpPoint warpPoint = new WarpPoint(warpX, warpY, xml.attributes["name"], int.Parse(xml.attributes["x"]) + 8, -int.Parse(xml.attributes["y"]) + 8);
                warpPoints.Add(warpPoint);
                break;
            }
        }
        for (int x = 0; x < 100; x++)
        {
            Scientist s = new Scientist(tilemap.width * RXRandom.Float(), -tilemap.height * RXRandom.Float());
            while (BaseGameObject.isWalkable(tilemap, s.x, s.y))
            {
                s.SetPosition(tilemap.width * RXRandom.Float(), -tilemap.height * RXRandom.Float());
            }
            addEnemy(s);
        }

        backgroundLayer.AddChild(tilemap);
        foreach (FTilemap f in otherTilemaps)
        {
            backgroundLayer.AddChild(f);
        }
        backgroundLayer.AddChild(tilemapCollision);
        backgroundLayer.AddChild(objectGroup);

        player.setMap(this);
        playerLayer.AddChild(player);
    }
Example #8
0
    public void go(FNode node_,float duration_,float amplitudeX_,float periodX_,float amplitudeY_,float periodY_,float delay_)
    {
        Cancel(node_);

        oPosition=node_.GetPosition();
        //Debug.Log("oPosition="+oPosition);
        curDuration=duration=duration_;
        curAmplitudeX=amplitudeX=amplitudeX_;
        curAmplitudeY=amplitudeY=amplitudeY_;
        periodX=periodX_;
        periodY=periodY_;
        curDelay=delay_;
        pendings.Add(node_,this);
        if (node==null) {
            Futile.instance.SignalUpdate+=HandleUpdate;
        }
        node=node_;
    }