protected override void Handle(SpawnBullet message) { string polygonPath = message.BulletType switch { BulletType.Laser => "polygons/long_bullet", _ => "polygons/bullet" }; PolygonRenderer renderer = _polygonLoader.Load(polygonPath); _world .CreateEntity() .Attach(new Transform { Position = message.Position, Rotation = message.Rotation }) .Attach(new Rigidbody { Velocity = new Vector2(0, -Velocity).Rotate(message.Rotation) }) .Attach(new SpriteRenderer { Texture = message.BulletType switch { BulletType.Laser => _laserTexture, _ => _bulletTexture } })
public void Start() { Score = 0; World.Entities.With <LabelComponent>().ForEach(World.Destroy); PolygonRenderer polygon = _polygonLoader.Load("polygons/ship"); _timeToGiveLaser = LaserRechargeTime; World .CreateEntity() .Attach(new Transform { Position = new Vector2(World.Width / 2f, World.Height / 2f) }) .Attach(new Rigidbody()) .Attach(new SpriteRenderer()) .Attach(polygon) .Attach(new Collider(new Polygon2(polygon.Vertices))) .Attach(new Player()); World .CreateEntity() .Attach(new Transform { Position = new Vector2(10f) }) .Attach(new LabelComponent()) .Attach(new ScoreComponent()); _gameStarted = true; }
private void SpawnAsteroid(int size, Vector2 position) { float directionAngle = (float)(_world.Random.NextDouble() - 0.5d) * 4 * MathF.PI; float startingVelocity = MaxVelocity / size; string name = $"planetoids/planetoid_{MaxSize - size + 1}"; PolygonRenderer polygon = _polygonLoader.Load($"polygons/{name}"); _world .CreateEntity() .Attach(new Transform { Position = position }) .Attach(new Rigidbody { Velocity = new Vector2(startingVelocity, 0).Rotate(directionAngle), AngularVelocity = MathF.PI, MaxVelocity = new Vector2(200f) }) .Attach(new SpriteRenderer { Texture = _content.Load <Texture2D>(name) }) .Attach(polygon) .Attach(new Collider(new Polygon2(polygon.Vertices))) .Attach(new Asteroid { Size = size }); }
public Robot(RobotRenderer r, Color color, Color colorBloated, int id) { renderer = r; pathRenderer = new PathFromRobotRenderer(r, color, .1f); lidarRendererRear = new LidarRenderer("rear", 0, id, new SensorPose(-.36, 0, 0, Math.PI, 0, 0, 0)); lidarRendererFront = new LidarRenderer("front", 1, id, new SensorPose(0, 0, .20, 0, 0, 0, 0)); polyRenderer = new PolygonRenderer(color); bloatedPolygonRenderer = new PolygonRenderer(colorBloated); }
public void CalculateResult() { // Figure GameObject figureGO = GameObject.FindGameObjectWithTag(Tags.Figure); Figure figure = figureGO.GetComponent <Figure>(); List <Vector3> figureSidePolygon = figure.GetVisibleSidePoligon(); List <IntPoint> figureIntPoints = ConvertVectors3ToIntPoints(figureSidePolygon); // Line GameObject drawControllerGO = GameObject.FindGameObjectWithTag(Tags.DrawController); DrawController drawController = drawControllerGO.GetComponent <DrawController>(); LineRenderer line = drawController.Line; Vector3[] lineVectorsArray = new Vector3[line.positionCount]; line.GetPositions(lineVectorsArray); List <IntPoint> lineIntPoints = ConvertVectors3ToIntPoints(lineVectorsArray); Clipper c = new Clipper(); c.AddPaths(new List <List <IntPoint> >() { figureIntPoints }, PolyType.ptSubject, true); c.AddPaths(new List <List <IntPoint> >() { lineIntPoints }, PolyType.ptClip, true); var resultPolygons = new List <List <IntPoint> >(); bool succeeded = c.Execute(ClipType.ctIntersection, resultPolygons); Debug.Log("successed: " + succeeded); if (succeeded) { foreach (var polygon in resultPolygons) { GameObject go = new GameObject(); PolygonRenderer polRenderer = go.AddComponent <PolygonRenderer>(); List <Vector3> points = ConvertIntPointsToVectors3(polygon); points.Reverse(); polRenderer.Points = points; polRenderer.Mat = Resources.Load <Material>("Polygon"); } } }
private void SpawnUfo(Vector2 position) { PolygonRenderer polygon = _polygonLoader.Load($"polygons/ufo"); _world .CreateEntity() .Attach(new Transform { Position = position }) .Attach(new Rigidbody()) .Attach(polygon) .Attach(new Collider(new Polygon2(polygon.Vertices))) .Attach(new SpriteRenderer()) .Attach(new Ufo()) .Attach(_jsonLoader.Load <Animation>("animations/ufo")); }
public override void OnCreate() { base.OnCreate(); Entity entity = this; Camera camera = entity.AddComponent <Camera>().AddLayersUnder(ViewLayers.FOREGROUND).RemoveLayer(ViewLayers.BACKGROUND).RemoveLayer(ViewLayers.DAEMON_OBJECTS); entity.camera.enableLighting = true; entity.AddComponent <AudioListener>(); _fake3d = entity.AddComponent <Fake3DProjector>(); _fake3d.camera = camera; _handler = entity.AddComponent <CameraHandler>(); _handler.followSpeed = 20; _fake3dOverlay = entity.AddComponent <PolygonRenderer>(); _fake3dOverlay.SetMaterial(new Material(_fake3d.renderTexture.Texture, BlendMode.Multiply)).SetLayer(ViewLayers.FOREGROUND); //_fake3dSprite.CenterOrigin(); world.mainCamera = entity.camera; }
void OnEnable() { renderer = (PolygonRenderer)target; }