void IStateModifier.ModifyWith(object targ, StateToken token) { var cam = ComponentUtil.GetComponentFromSource <Camera>(targ); if (cam == null) { return; } token.CopyTo(cam); }
void IStateModifier.Modify(object targ) { var cam = ComponentUtil.GetComponentFromSource <Camera>(targ); if (cam == null) { return; } _cameraSettings.CopyTo(cam); }
void IStateModifier.ModifyWith(object targ, object source) { var cam = ComponentUtil.GetComponentFromSource <Camera>(targ); if (cam == null) { return; } DynamicUtil.CopyState(cam, source); }
void IPersistantUnityObject.OnDeserialize(SerializationInfo info, StreamingContext context, IAssetBundle assetBundle) { this.transform.position = (Vector3)info.GetValue("pos", typeof(Vector3)); this.transform.rotation = (Quaternion)info.GetValue("rot", typeof(Quaternion)); this.transform.localScale = (Vector3)info.GetValue("scale", typeof(Vector3)); int cnt = info.GetInt32("count"); for (int i = 0; i < cnt; i++) { ChildObjectData data = (ChildObjectData)info.GetValue(i.ToString(), typeof(ChildObjectData)); if (data != null && data.ComponentType != null) { IPersistantUnityObject pobj = ComponentUtil.GetComponentFromSource(data.ComponentType, (data.Path != null) ? this.transform.Find(data.Path) : this.transform) as IPersistantUnityObject; if (pobj != null) { pobj.OnDeserialize(data.DeserializeInfo, data.DeserializeContext, assetBundle); } } } }
public void LerpToTarget(object targ, float t, float lerpT) { if (_dur == 0f) { t = 1f; } else { t = t / _dur; } if (_updateTranslation > TranslationOptions.None || _updateRotation >= RotationOptions.Heading) { var trans = GameObjectUtil.GetTransformFromSource(targ); if (trans != null) { if (_updateRotation == RotationOptions.Heading) { var wp = _path.Path.GetWaypointAt(t); this.SetPosition(trans, wp.Position, float.NaN); this.SetRotation(trans, Quaternion.LookRotation(wp.Heading), lerpT); } else if (_updateTranslation > TranslationOptions.None) { this.SetPosition(trans, _path.Path.GetPositionAt(t), lerpT); } } } bool useModifiers = (_modifierTable != null && _modifierTable.Count > 0); if (useModifiers || _updateRotation == RotationOptions.Rotation || _updateRotation == RotationOptions.LocalRotation) { var data = _path.Path.GetRelativePositionData(t); var cnt = _path.Path.Count; int i = data.Index; int j = (_path.Path.IsClosed) ? (i + 1) % cnt : i + 1; if (_updateRotation == RotationOptions.Rotation || _updateRotation == RotationOptions.LocalRotation) { var trans = GameObjectUtil.GetTransformFromSource(targ); if (trans != null) { var a = (i >= 0 && i < cnt) ? ComponentUtil.GetComponentFromSource <Transform>(_path.Path.ControlPoint(i)) : null; var b = (j >= 0 && j < cnt) ? ComponentUtil.GetComponentFromSource <Transform>(_path.Path.ControlPoint(j)) : null; if (a != null) { bool useRelative = _path.TransformRelativeTo != null; var r = (useRelative) ? a.GetRelativeRotation(_path.TransformRelativeTo) : a.rotation; if (b != null) { var rb = (useRelative) ? b.GetRelativeRotation(_path.TransformRelativeTo) : b.rotation; r = Quaternion.LerpUnclamped(r, rb, data.TPrime); } this.SetRotation(trans, r, lerpT); } } } if (useModifiers) { var e = _modifierTable.GetEnumerator(); while (e.MoveNext()) { var len = e.Current.Value.Length; var ma = (i >= 0 && i < len) ? e.Current.Value[i] : null; var mb = (j >= 0 && j < len) ? e.Current.Value[j] : null; if (float.IsNaN(lerpT)) { if (ma != null) { if (mb != null) { using (var state = StateToken.GetToken()) { ma.CopyTo(state); mb.LerpTo(state, data.TPrime); ma.ModifyWith(targ, state); } } else { ma.Modify(targ); } } else if (mb != null) { mb.Modify(targ); } } else { using (var curState = StateToken.GetToken()) using (var state = StateToken.GetToken()) { IStateModifier m = null; if (ma != null) { m = ma; if (mb != null) { ma.CopyTo(state); mb.LerpTo(state, data.TPrime); } else { ma.CopyTo(state); } } else if (mb != null) { m = mb; mb.CopyTo(state); } if (m != null) { state.CopyTo(curState); curState.SyncFrom(targ); curState.LerpTo(state, lerpT); m.ModifyWith(state, curState); } } } } } } }