public virtual void RenderUpdate(SpriteLeaser spriteLeaser, WorldCamera camera) { if (world != null) { FSprite sprite = spriteLeaser.sprites[0]; if (element != null) { sprite.isVisible = true; sprite.element = element; } else { sprite.isVisible = false; } sprite.SetPosition(camera.GetScreenPosition(worldPosition) + _positionOffset); sprite.rotation = _rotation; sprite.scaleX = scale.x; sprite.scaleY = scale.y; if (doesFlip) { sprite.scaleX *= (camera.GetFlipXByViewAngle(viewAngle) ? -1f : 1f); } sprite.sortZ = camera.GetSortZ(worldPosition) + sortZOffset; sprite.color = color; // new Color(worldPosition.x, worldPosition.y, worldPosition.z); } else { spriteLeaser.Erase(); } }
public void AddRenderer(IRenderer renderer) { SpriteLeaser spriteLeaser = new SpriteLeaser(this, renderer); renderer.OnInitializeSprite(spriteLeaser, this); _spriteLeasers.Add(spriteLeaser); }
public virtual void OnInitializeSprite(SpriteLeaser spriteLeaser, WorldCamera camera) { FSprite sprite = new FSprite(element == null ? Futile.whiteElement : element); sprite.shader = shader; spriteLeaser.sprites.Add(sprite); }
public override void OnInitializeSprite(SpriteLeaser spriteLeaser, WorldCamera camera) { if (_sprites == null) { LoadSprites(); } base.OnInitializeSprite(spriteLeaser, camera); }
public void UpdateTileRender(SpriteLeaser spriteLeaser, WorldCamera camera) { while (_tilesQueue.Count > 0) { Tile tile = _tilesQueue.Dequeue(); if (tile != null) { bool showing = false; if (tile.block.sprite != null) { if (GetTileShowing(tile)) { showing = true; } } int index = _drawTiles.IndexOf(tile); if (showing) { FSprite sprite; if (index < 0) { sprite = new FSprite(tile.block.sprite); sprite.shader = _shader; _drawTiles.Add(tile); spriteLeaser.sprites.Add(sprite); } else { sprite = spriteLeaser.sprites[index]; sprite.element = tile.block.sprite; } SetSpriteByTile(sprite, tile, camera, true); } else { if (index < 0) { continue; } _drawTiles.RemoveAt(index); spriteLeaser.sprites[index].RemoveFromContainer(); spriteLeaser.sprites.RemoveAt(index); } } } }
private void InitializeRenderer() { do { IRenderer renderer = _renderersQueue.Peek(); if (renderer != null) { SpriteLeaser spriteLeaser = new SpriteLeaser(this, renderer); renderer.OnInitializeSprite(spriteLeaser, this); _spriteLeasers.Add(spriteLeaser); } _renderersQueue.Dequeue(); } while (_renderersQueue.Count > 0); }
public void RenderUpdate(SpriteLeaser spriteLeaser, WorldCamera camera) { bool inRange = ((_chunk.coordination + Vector2.one * 0.5f) * Chunk.Length - new Vector2(_chunk.world.player.worldPosition.x, _chunk.world.player.worldPosition.z)).sqrMagnitude < 1024f; if (_showing && !inRange) { spriteLeaser.RemoveFromContainer(); _showing = false; } else if (!_showing && inRange) { _showing = true; } if (_showing) { UpdateTileRender(spriteLeaser, camera); for (int index = 0; index < _drawTiles.Count; index++) { Tile tile = _drawTiles[index]; FSprite sprite = spriteLeaser.sprites[index]; // if (camera.turning) SetSpriteByTile(sprite, tile, camera, true); bool inScreenRect = spriteLeaser.InScreenRect(sprite); if (sprite.container != null && !inScreenRect) { sprite.RemoveFromContainer(); } else if (sprite.container == null && inScreenRect) { camera.worldContainer.AddChild(sprite); } } } }
public void GraphicUpdate(float deltaTime) { if (Input.GetKeyDown(KeyCode.Q)) { TurnViewDirection(false); } else if (Input.GetKeyDown(KeyCode.E)) { TurnViewDirection(true); } viewAngle = Mathf.LerpAngle(_lastViewAngle, GetAngle(_viewDirection), CustomMath.Curve(1f - _turn, -3f)); _turn -= deltaTime; _shake = Mathf.Lerp(_shake, 0f, deltaTime * 10f); if (_cameraTarget != null) { _targetPosition = Vector3.Lerp(_targetPosition, _cameraTarget.worldPosition, deltaTime * 10f); } Vector2 cameraPosition = -GetScreenPosition(_targetPosition) + Random.insideUnitCircle * _shake; worldContainer.SetPosition(cameraPosition); while (_renderersQueue.Count > 0) { IRenderer renderer = _renderersQueue.Peek(); if (renderer != null) { SpriteLeaser spriteLeaser = new SpriteLeaser(this, renderer); renderer.OnInitializeSprite(spriteLeaser, this); _spriteLeasers.Add(spriteLeaser); } _renderersQueue.Dequeue(); } for (int index = 0; index < _spriteLeasers.Count; index++) { _spriteLeasers[index].GraphicUpdate(); if (_spriteLeasers[index].removeInNextFrame) { _spriteLeasers[index].RemoveFromContainer(); _spriteLeasers.RemoveAt(index); index--; } } Color skyColor = new Color(0.35f, 0.85f, 0.97f); // Color.Lerp(new Color(0.35f, 0.85f, 0.97f), Color.black, Mathf.Sin(Time.time * 0.1f) * 0.5f + 0.5f); Shader.SetGlobalVector("_CameraPosition", _targetPosition); Shader.SetGlobalVector("_SkyColor", skyColor); _worldMicrophone.worldPosition = _targetPosition; _worldMicrophone.viewAngle = _viewAngle; _worldMicrophone.Update(deltaTime); _worldCameraUI.Update(deltaTime); }
public virtual bool GetShownByCamera(SpriteLeaser spriteLeaser, WorldCamera camera) { return(spriteLeaser.InScreenRect(spriteLeaser.sprites[0])); }
public override void RenderUpdate(SpriteLeaser spriteLeaser, WorldCamera camera) { base.RenderUpdate(spriteLeaser, camera); spriteLeaser.sprites[0].element = camera.GetFlipZByViewAngle(viewAngle) ? _flipedAtlasElement : element; }
public override void RenderUpdate(SpriteLeaser spriteLeaser, WorldCamera camera) { base.RenderUpdate(spriteLeaser, camera); }
public bool GetShownByCamera(SpriteLeaser spriteLeaser, WorldCamera camera) { return(false); }
public void OnInitializeSprite(SpriteLeaser spriteLeaser, WorldCamera camera) { _initialized = true; UpdateTileRender(spriteLeaser, camera); }