59 lines
2.0 KiB
C#
Executable File
59 lines
2.0 KiB
C#
Executable File
using System;
|
|
using System.Collections.Generic;
|
|
using Microsoft.Xna.Framework;
|
|
|
|
|
|
namespace KinPortal {
|
|
public class DrawPortalStrategy : TargetingStrategy {
|
|
private TimeSpan m_leftLoadTime;
|
|
private TimeSpan m_rightLoadTime;
|
|
|
|
private bool m_leftActive = false;
|
|
private HandsProjection m_leftProj;
|
|
private bool m_rightActive = false;
|
|
private HandsProjection m_rightProj;
|
|
|
|
|
|
public void Update(DynamicObject obj, GameTime gameTime) {
|
|
KinPortal.Game game = (KinPortal.Game) obj.Game;
|
|
|
|
if(m_leftActive && game.HandsTracker.LeftHand.IsClosed) {
|
|
m_leftLoadTime += gameTime.ElapsedGameTime;
|
|
if(m_leftLoadTime.Milliseconds >= 300.0) {
|
|
obj.Scene.PortalManager.CreatePortal(m_leftProj.HitPoint + (m_leftProj.HitNormal * 0.01f), Geometry.GetRelativeRotation(Vector3.Right, m_leftProj.HitNormal), PortalManager.PortalType.RED);
|
|
m_leftActive = false;
|
|
}
|
|
} else {
|
|
m_leftActive = false;
|
|
}
|
|
|
|
if(m_rightActive && game.HandsTracker.RightHand.IsClosed) {
|
|
m_rightLoadTime += gameTime.ElapsedGameTime;
|
|
if(m_rightLoadTime.Milliseconds >= 300.0) {
|
|
obj.Scene.PortalManager.CreatePortal(m_rightProj.HitPoint + (m_rightProj.HitNormal * 0.01f), Geometry.GetRelativeRotation(Vector3.Right, m_rightProj.HitNormal), PortalManager.PortalType.BLUE);
|
|
m_rightActive = false;
|
|
}
|
|
} else {
|
|
m_rightActive = false;
|
|
}
|
|
}
|
|
|
|
public void Target(DynamicObject obj, HandsProjection leftHand, HandsProjection rightHand) {
|
|
KinPortal.Game game = (KinPortal.Game) obj.Game;
|
|
Vector3 orgNormal = Vector3.Right;
|
|
|
|
if(leftHand.IsProjected && game.HandsTracker.LeftHand.IsClosed == true && game.HandsTracker.LeftHand.PrevIsClosed == false) {
|
|
m_leftActive = true;
|
|
m_leftProj = leftHand;
|
|
m_leftLoadTime = TimeSpan.Zero;
|
|
}
|
|
|
|
if(rightHand.IsProjected && game.HandsTracker.RightHand.IsClosed == true && game.HandsTracker.RightHand.PrevIsClosed == false) {
|
|
m_rightActive = true;
|
|
m_rightProj = rightHand;
|
|
m_rightLoadTime = TimeSpan.Zero;
|
|
}
|
|
}
|
|
}
|
|
}
|