Example #1
0
        public static SCNMatrix4 GetTransform(this GKAgent2D agent)
        {
            var quat      = Quaternion.FromAxisAngle(new Vector3(0, 1, 0), -(agent.Rotation - ((float)Math.PI / 2f)));
            var transform = SCNMatrix4.Rotate(quat);

            transform.M41 = agent.Position.X;
            transform.M42 = BaseComponent.EnemyAltitude;
            transform.M43 = agent.Position.Y;
            transform.M44 = 1f;

            return(transform);
        }
Example #2
0
        public override void DidMoveToView(SKView view)
        {
                        #if TARGET_OS_MAC
            var fontName = NSFont.SystemFontOfSize(65).FontName;
            var label    = SKLabelNode.FromFont(fontName);
            label.Text     = SceneName;
            label.FontSize = 65;
            label.HorizontalAlignmentMode = SKLabelHorizontalAlignmentMode.Left;
            label.VerticalAlignmentMode   = SKLabelVerticalAlignmentMode.Top;
            label.Position = new CGPoint(Frame.GetMinX() + 10, Frame.GetMaxY() - 46);
            AddChild(label);
                        #endif

            AgentSystem            = new GKComponentSystem <GKAgent2D> ();
            TrackingAgent          = new GKAgent2D();
            TrackingAgent.Position = new Vector2((float)Frame.GetMidX(), (float)Frame.GetMidY());
        }
Example #3
0
        public static void SetTransform(this GKAgent2D agent, SCNMatrix4 newTransform)
        {
            var quatf = new SCNQuaternion(newTransform.Column3.Xyz, newTransform.Column3.W);

            SCNVector3 axis;

#if !__OSX__
            float angle;
            quatf.ToAxisAngle(out axis, out angle);
            agent.Rotation = -(angle + ((float)Math.PI / 2f));
            agent.Position = new Vector2(newTransform.M41, newTransform.M43);
#else
            nfloat angle;
            quatf.ToAxisAngle(out axis, out angle);
            agent.Rotation = -((float)angle + ((float)Math.PI / 2f));
            agent.Position = new Vector2((float)newTransform.M41, (float)newTransform.M43);
#endif
        }
Example #4
0
        public void InitAgent(SKScene scene, float radius, CGPoint position)
        {
            Position  = position;
            ZPosition = 10f;
            scene.AddChild(this);

            Agent = new GKAgent2D {
                Radius          = radius,
                Position        = new Vector2((float)position.X, (float)position.Y),
                Delegate        = this,
                MaxSpeed        = 100f,
                MaxAcceleration = 50f
            };

            var circleShape = SKShapeNode.FromCircle(radius);

            circleShape.LineWidth = 2.5f;
            circleShape.FillColor = SKColor.Gray;
            circleShape.ZPosition = 1f;
            AddChild(circleShape);

            const float triangleBackSideAngle = (float)((135f / 360f) * (2 * Math.PI));
            var         points = new [] {
                new CGPoint(radius, 0f),                                                                          // Tip
                new CGPoint(radius * Math.Cos(triangleBackSideAngle), radius * Math.Sin(triangleBackSideAngle)),  // Back bottom
                new CGPoint(radius * Math.Cos(triangleBackSideAngle), -radius * Math.Sin(triangleBackSideAngle)), // Back top
                new CGPoint(radius, 0f)                                                                           // Back top
            };

            TriangleShape           = SKShapeNode.FromPoints(ref points [0], (nuint)points.Length);
            TriangleShape.LineWidth = 2.5f;
            TriangleShape.ZPosition = 1f;
            AddChild(TriangleShape);

            Particles            = SKNode.FromFile <SKEmitterNode> ("Trail.sks");
            DefaultParticleRate  = (float)Particles.ParticleBirthRate;
            Particles.Position   = new CGPoint(-radius + 5, 0);
            Particles.TargetNode = scene;
            Particles.ZPosition  = 0f;
            AddChild(Particles);
        }
Example #5
0
 public void AgentDidUpdate(GKAgent2D agent)
 {
     Position  = new CGPoint(agent.Position.X, agent.Position.Y);
     ZRotation = agent.Rotation;
 }
Example #6
0
 public void AgentDidUpdate(GKAgent2D agent)
 {
     Position = new CGPoint (agent.Position.X, agent.Position.Y);
     ZRotation = agent.Rotation;
 }
Example #7
0
        public void InitAgent(SKScene scene, float radius, CGPoint position)
        {
            Position = position;
            ZPosition = 10f;
            scene.AddChild (this);

            Agent = new GKAgent2D {
                Radius = radius,
                Position = new Vector2 ((float)position.X, (float)position.Y),
                Delegate = this,
                MaxSpeed = 100f,
                MaxAcceleration = 50f
            };

            var circleShape = SKShapeNode.FromCircle (radius);
            circleShape.LineWidth = 2.5f;
            circleShape.FillColor = SKColor.Gray;
            circleShape.ZPosition = 1f;
            AddChild (circleShape);

            const float triangleBackSideAngle = (float)((135f / 360f) * (2 * Math.PI));
            var points = new [] {
                new CGPoint (radius, 0f), // Tip
                new CGPoint (radius * Math.Cos (triangleBackSideAngle), radius * Math.Sin (triangleBackSideAngle)), // Back bottom
                new CGPoint (radius * Math.Cos (triangleBackSideAngle), -radius * Math.Sin (triangleBackSideAngle)), // Back top
                new CGPoint (radius, 0f) // Back top
            };

            TriangleShape = SKShapeNode.FromPoints (ref points [0], (nuint)points.Length);
            TriangleShape.LineWidth = 2.5f;
            TriangleShape.ZPosition = 1f;
            AddChild (TriangleShape);

            Particles = SKNode.FromFile<SKEmitterNode> ("Trail.sks");
            DefaultParticleRate = (float)Particles.ParticleBirthRate;
            Particles.Position = new CGPoint (-radius + 5, 0);
            Particles.TargetNode = scene;
            Particles.ZPosition = 0f;
            AddChild (Particles);
        }
Example #8
0
        public override void DidMoveToView(SKView view)
        {
            #if TARGET_OS_MAC
            var fontName = NSFont.SystemFontOfSize (65).FontName;
            var label = SKLabelNode.FromFont (fontName);
            label.Text = SceneName;
            label.FontSize = 65;
            label.HorizontalAlignmentMode = SKLabelHorizontalAlignmentMode.Left;
            label.VerticalAlignmentMode = SKLabelVerticalAlignmentMode.Top;
            label.Position = new CGPoint (Frame.GetMinX () + 10, Frame.GetMaxY () - 46);
            AddChild (label);
            #endif

            AgentSystem = new GKComponentSystem (typeof(GKAgent2D));
            TrackingAgent = new GKAgent2D ();
            TrackingAgent.Position = new Vector2 ((float)Frame.GetMidX (), (float)Frame.GetMidY ());
        }