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); }
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()); }
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 }
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); }
public void AgentDidUpdate(GKAgent2D agent) { Position = new CGPoint(agent.Position.X, agent.Position.Y); ZRotation = agent.Rotation; }
public void AgentDidUpdate(GKAgent2D agent) { Position = new CGPoint (agent.Position.X, agent.Position.Y); ZRotation = agent.Rotation; }
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); }
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 ()); }