public void PlayPattern(IPattern pattern) { lock (lockObject) { long startTime = getTimeMilliseconds(); if (pattern.GetType() == typeof(RepeatablePattern)) { foreach (RepeatPattern repeatP in repeatablePatternList) { if (repeatP.pattern.ID == ((RepeatablePattern)pattern).ID) { return; //Pattern already present } } RepeatablePattern repeatablePattern = (RepeatablePattern)pattern; List <SimplePattern> simplePatternList = repeatablePattern.GetSimplePatterns(); repeatablePatternList.Add(new RepeatPattern(repeatablePattern, startTime + Pattern.Utils.GetMaxDuration(simplePatternList))); PlaySimplePatterns(simplePatternList, startTime, false); } else { PlaySimplePatterns(pattern.GetSimplePatterns(), startTime, true); } } }
public void PlayPattern(IPattern pattern) { if (pattern.GetType() == typeof(RepeatablePattern)) { foreach (RepeatPattern repeatP in repeatablePatternList) { if (repeatP.pattern.ID == ((RepeatablePattern)pattern).ID) { return; //Pattern already present } } RepeatablePattern repeatablePattern = (RepeatablePattern)pattern; List <SimplePattern> simplePatternList = repeatablePattern.GetSimplePatterns(); repeatablePatternList.Add(new RepeatPattern(repeatablePattern, Environment.TickCount + Utils.GetMaxDuration(simplePatternList))); foreach (SimplePattern sp in simplePatternList) { StartPatternOnMotor(sp.GetMotor(), sp); } } else { foreach (SimplePattern p in pattern.GetSimplePatterns()) { int motor = p.GetMotor(); if (motor >= numberOfMotors || motor < 0) { Console.Error.WriteLine("Invalid motor id: " + motor + ". Vibration device has " + numberOfMotors + " motorThreads."); } StartPatternOnMotor(motor, p); } } }