public override void Render(SpriteBatch spriteBatch, Vector2i position, ReactorLayer layer, Color color, float zOrder, ImageSize imageSize, bool forDragAndDrop) { OriginalRender(spriteBatch, position, layer, color, zOrder, imageSize, forDragAndDrop); int priority = 1; foreach (ReactorMember member in ownerReactor.GetMembers()) { if (member == this) { break; } else if (member is SplitterFeature) { priority++; } } RenderPriority(spriteBatch, position, color, zOrder, priority); }
public override void Render(SpriteBatch spriteBatch, Vector2i position, ReactorLayer layer, Color color, float zOrder, ImageSize imageSize, bool forDragAndDrop) { base.Render(spriteBatch, position, layer, GetFeatureColor() * color, zOrder, imageSize, forDragAndDrop); List <QuantumTunnelFeature> allTunnels; List <Vector2i> tunnelPositions; CollectTunnels(ownerReactor, out allTunnels, out tunnelPositions); int tunnelIndex = allTunnels.IndexOf(this); RenderPriority(spriteBatch, position, color, zOrder, tunnelIndex + 1); if (!laserState.isPresent && !sensorCircleState.isPresent) { return; } if (sensorCircleState.isPresent) { TextureElement sensorCircle = isSensorActivatedForRed ? redSensorCircle : blueSensorCircle; float fineCircleState = sensorCircleState.GetValue() + SimulationGlobals.partialCycle / ANIMATION_LENGTH; Color circleColor = Color.WHITE.WithAlpha(0.75f - fineCircleState); Vector2i circleSize = (Vector2i)(sensorCircle.GetDimensions() * (float)(1.0 + 1.0 * (double)fineCircleState)); spriteBatch.AddSprite(sensorCircle, new BoundingBox(boundingBox.GetCenter() + new Vector2i(-1, 0), circleSize), new BoundingBox?(), circleColor, (AngleInRadians)0.0f, circleSize / 2, FlipOptions.None, zOrder - 0.02f); } allTunnels.Add(allTunnels[0]); tunnelPositions.Add(tunnelPositions[0]); if (laserState.isPresent) { TextureElement laserBeam = isActivatedForRed ? redLaser : blueLaser; float fineLaserState = laserState.GetValue() + SimulationGlobals.partialCycle / ANIMATION_LENGTH; Vector2i startTunnelCenter = allTunnels[tunnelIndex].boundingBox.GetCenter(); Vector2i endTunnelCenter = allTunnels[tunnelIndex + 1].boundingBox.GetCenter(); Vector2f beamVector = endTunnelCenter - startTunnelCenter; Vector2f beamDirectionVector = beamVector / beamVector.Length(); Vector2i beamStart = startTunnelCenter + (Vector2i)(beamDirectionVector * 29f); Vector2i beamEnd = endTunnelCenter + (Vector2i)(beamDirectionVector * -29f); SpriteHelper.AddTextureStretchedBetween(spriteBatch, laserBeam, beamStart, beamEnd, Color.WHITE.WithAlpha((float)((1.0 - (double)fineLaserState) / 2.0)), zOrder - 0.02f); } }
public override void Render(SpriteBatch spriteBatch, Vector2i position, ReactorLayer layer, Color color, float zOrder, ImageSize imageSize, bool forDragAndDrop) { }
public void AddMember(Vector2i coords, ReactorLayer layer, ReactorMember member) { }