private void RemoveImpl(LandoltData data) { if (landolts_.ContainsKey(data.id)) { Destroy(landolts_[data.id].gameObject); landolts_.Remove(data.id); } }
private void UpdateImpl(LandoltData data) { if (!landolts_.ContainsKey(data.id)) { Create(data); } else { var landolt = landolts_[data.id]; landolt.Update(data); } }
private void CreateImpl(LandoltData data) { if (!landolts_.ContainsKey(data.id)) { var gameObj = Instantiate(landoltPrefab) as GameObject; gameObj.transform.SetParent(GlobalObjects.localStage.transform); var landolt = gameObj.GetComponent <Landolt>(); landolts_.Add(data.id, landolt); Sound.Play("LandoltDetected"); } Update(data); }
public void Update(LandoltData data) { if (float.IsNaN(data.pos.x) || float.IsNaN(data.pos.y)) { return; } if (float.IsInfinity(data.pos.x) || float.IsInfinity(data.pos.y)) { return; } data_ = data; rawPos_ = new Vector3(data.pos.x, 0f, data.pos.y); transform.localScale = new Vector3(data_.width * scaleRatio, localScaleY_, data_.height * scaleRatio); lostCount_ = 0; var dt = Time.time - lastTime_; if (dt == 0) { return; } velocity_ = (rawPos_ - prePos_) / dt; prePos_ = rawPos_; angleVelocity_ = (data.angle - preAngle_) / dt; currentAngle_ = preAngle_ = data.angle; lastTime_ = lastInterpTime_ = Time.time; ++updateCount_; interpCount_ = 0; if (touched_ != data.touched) { touched_ = data.touched; if (touched_) { SendMessage("OnTouchStart", data.touchPos, SendMessageOptions.DontRequireReceiver); Sound.Play("LandoltTouch"); } else { SendMessage("OnTouchEnd", data.touchPos, SendMessageOptions.DontRequireReceiver); } } else { if (touched_) { SendMessage("OnTouchMove", data.touchPos, SendMessageOptions.DontRequireReceiver); } } }
LandoltData convertToLandoltData(JSONNode json) { LandoltData data = new LandoltData(); data.id = json["id"].AsInt; data.pos = new Vector2(sign * json["x"].AsFloat, sign * json["y"].AsFloat); data.radius = json["radius"].AsFloat; data.width = json["width"].AsFloat; data.height = json["height"].AsFloat; data.angle = json["angle"].AsFloat + offsetAngle; data.cnt = 0; data.touched = json["touched"].AsBool; data.touchPos = new Vector2(json["touchX"].AsFloat, json["touchY"].AsFloat); return(data); }
static public void Remove(LandoltData data) { Instance.RemoveImpl(data); }
static public void Update(LandoltData data) { Instance.UpdateImpl(data); }
static public void Create(LandoltData data) { Instance.CreateImpl(data); }