private void ExtractVariableExports(ModuleData module, ObjectPattern objectPattern) { for (int i = 0, n = objectPattern.Properties.Count; i < n; i++) { switch (objectPattern.Properties[i]) { case Property property: switch (property.Value) { case Identifier identifier: module.ExportsRaw.Add(new NamedExportData(identifier.Name)); break; case ArrayPattern nestedArrayPattern: ExtractVariableExports(module, nestedArrayPattern); break; case ObjectPattern nestedObjectPattern: ExtractVariableExports(module, nestedObjectPattern); break; } break; case RestElement restElement: ExtractVariableExports(module, restElement); break; } } }
private UstExprs.AnonymousObjectExpression VisitObjectPattern(ObjectPattern objectPattern) { // TODO: maybe add new UST type ObjectPattern? var properties = VisitProperties(objectPattern.Properties); return(new UstExprs.AnonymousObjectExpression(properties, GetTextSpan(objectPattern))); }
private void Update() { if (isDead) { return; } // 回転 transform.localEulerAngles = new Vector3(0f, 0f, transform.localEulerAngles.z + rotateSpeed * Time.deltaTime); foreach (var obj in objects) { obj.Proc(transform.position, rotateSpeed * Time.deltaTime); if (obj.Destoryed) { Destroy(obj.gameObject); } } objects.RemoveAll(p => p.Destoryed); if (isTitle) { return; } rotateSpeed += rotateSpeedAccel * Time.deltaTime; staticRotateSpeed = rotateSpeed; if (trail != null) { trail.SetOmega(rotateSpeed); } // オブジェクトを生成 rotateSum += rotateSpeed * Time.deltaTime; score += rotateSpeed * Time.deltaTime; scoreText.text = score.ToString("F2") + "m"; highScore = Mathf.Max(highScore, score); highScoreText.text = highScore.ToString("F2") + "m"; if (rotateSum >= spawnIntervalDegree) { rotateSum -= spawnIntervalDegree; int id = curPattern.Next(); while (id == -1) { // 終端に到達したので新しいパターンを使う curPattern = patterns[Random.Range(0, patterns.Count)]; curPattern.Reset(); id = curPattern.Next(); } if (id >= 0) { var obj = (BaseStageObject)Instantiate(objectPrefabs[id]); obj.Init(new Vector2(270.0f, 0.0f), transform.position); objects.Add(obj); } } }
private void Start() { staticRotateSpeed = rotateSpeed; if (trail != null) { trail.SetOmega(rotateSpeed); } foreach (var obj in objects) { obj.Init(new Vector2(120f, 7.0f), transform.position); } curPattern = patterns[Random.Range(0, patterns.Count)]; curPattern.Reset(); highScore = PlayerPrefs.GetFloat("highscore", 0); }
public virtual void VisitObjectPattern(ObjectPattern objectPattern) { }
protected virtual void VisitObjectPattern(ObjectPattern objectPattern) { }
protected override void VisitObjectPattern(ObjectPattern objectPattern) { using (StartNodeObject(objectPattern)) Member("properties", objectPattern.Properties); }
protected internal override void VisitObjectPattern(ObjectPattern objectPattern) { VisitingObjectPattern?.Invoke(this, objectPattern); base.VisitObjectPattern(objectPattern); VisitedObjectPattern?.Invoke(this, objectPattern); }
protected override void VisitObjectPattern(ObjectPattern objectPattern) { }
private static void HandleObjectPattern(Engine engine, ObjectPattern pattern, JsValue argument, LexicalEnvironment environment, bool checkReference) { var processedProperties = pattern.Properties.Count > 0 && pattern.Properties[pattern.Properties.Count - 1] is RestElement ? new HashSet <JsValue>() : null; var source = TypeConverter.ToObject(engine, argument); for (var i = 0; i < pattern.Properties.Count; i++) { if (pattern.Properties[i] is Property p) { JsValue sourceKey; var identifier = p.Key as Identifier; if (identifier == null || p.Computed) { var keyExpression = Build(engine, p.Key); sourceKey = TypeConverter.ToPropertyKey(keyExpression.GetValue()); } else { sourceKey = identifier.Name; } processedProperties?.Add(sourceKey.ToString()); if (p.Value is AssignmentPattern assignmentPattern) { source.TryGetValue(sourceKey, out var value); if (value.IsUndefined()) { var jintExpression = Build(engine, assignmentPattern.Right); value = jintExpression.GetValue(); } if (assignmentPattern.Left is BindingPattern bp) { ProcessPatterns(engine, bp, value, environment); continue; } var target = assignmentPattern.Left as Identifier ?? identifier; if (assignmentPattern.Right.IsFunctionWithName()) { ((FunctionInstance)value).SetFunctionName(target.Name); } AssignToIdentifier(engine, target.Name, value, environment); } else if (p.Value is BindingPattern bindingPattern) { source.TryGetValue(sourceKey, out var value); ProcessPatterns(engine, bindingPattern, value, environment); } else if (p.Value is MemberExpression memberExpression) { var reference = GetReferenceFromMember(engine, memberExpression); source.TryGetValue(sourceKey, out var value); AssignToReference(engine, reference, value, environment); } else { var identifierReference = p.Value as Identifier; var target = identifierReference ?? identifier; source.TryGetValue(sourceKey, out var v); AssignToIdentifier(engine, target.Name, v, environment, checkReference); } } else { var restElement = (RestElement)pattern.Properties[i]; if (restElement.Argument is Identifier leftIdentifier) { var count = Math.Max(0, source.Properties?.Count ?? 0) - processedProperties.Count; var rest = engine.Object.Construct(count); source.CopyDataProperties(rest, processedProperties); AssignToIdentifier(engine, leftIdentifier.Name, rest, environment); } else if (restElement.Argument is BindingPattern bp) { ProcessPatterns(engine, bp, argument, environment); } else if (restElement.Argument is MemberExpression memberExpression) { var left = GetReferenceFromMember(engine, memberExpression); var rest = engine.Object.Construct(0); source.CopyDataProperties(rest, processedProperties); AssignToReference(engine, left, rest, environment); } else { ExceptionHelper.ThrowArgumentException("cannot handle parameter type " + restElement.Argument); } } } }