private void UpdateMovement() { if (Attacker != null) { if (relateToAttacker) { if (TempTransform.parent == null) { Transform damageLaunchTransform; Attacker.GetDamageLaunchTransform(isLeftHandWeapon, out damageLaunchTransform); TempTransform.SetParent(damageLaunchTransform); } var baseAngles = attacker.TempTransform.eulerAngles; TempTransform.rotation = Quaternion.Euler(baseAngles.x + addRotationX, baseAngles.y + addRotationY, baseAngles.z); TempRigidbody.velocity = Attacker.TempRigidbody.velocity + GetForwardVelocity(); } else { TempRigidbody.velocity = GetForwardVelocity(); } } else { TempRigidbody.velocity = GetForwardVelocity(); } }
protected void Awake() { foreach (var t in GetComponentsInChildren <Transform>()) { t.gameObject.layer = Constants.shipItemLayer; } _tempTransform = AddMyComponent <TempTransform>(); }
// Use this for initialization public override void Start() { transform = GetComponent <TempTransform>(); radius = behaviour.transform.localScale.x; force = Constants.worldGravity * radius; maxDistance = force / .1f; ships = new GravityList(this); }
void Awake() { tempTransform = AddMyComponent <TempTransform>(); rigidBody = GetComponent <Rigidbody>(); //rigidBody.isKinematic = true; //rigidBody.freezeRotation = true; rigidBody.useGravity = false; offenders = new List <Offender>(); // shipDriver turns it true enabled = false; }
public void SetTransform(Vector3 pos, Quaternion rot) { isReady = true; PreviousTransform = currentTransform; currentTransform = new TempTransform(pos, rot); currentLocalTransform = currentTransform; time_sinceLastTransformUpdate = Time.time - timePoint_prevTransformUpdate; timePoint_prevTransformUpdate = Time.time; // No scales at the moment.. }
public static TempTransform Clone(this Transform transform) { TempTransform td = new TempTransform(); td.position = transform.position; td.localPosition = transform.localPosition; td.rotation = transform.rotation; td.localRotation = transform.localRotation; td.localScale = transform.localScale; return(td); }
private void InitTransform() { if (Attacker == null) { return; } if (relateToAttacker) { Transform damageLaunchTransform; Attacker.GetDamageLaunchTransform(isLeftHandWeapon, out damageLaunchTransform); TempTransform.SetParent(damageLaunchTransform); var baseAngles = attacker.TempTransform.eulerAngles; TempTransform.rotation = Quaternion.Euler(baseAngles.x + addRotationX, baseAngles.y + addRotationY, baseAngles.z); } }
TempTransform UpdatePos(Transform dstTarget = null) { TempTransform newTransform = new TempTransform(); Vector3 tgt = GetTarget(dstTarget); //DOS Modified tweaked this to be selectable if (Input.GetMouseButton((int)mouseButtonToUse) && Input.touchCount == 0) { x += Input.GetAxis("Mouse X") * xSpeed * 0.04f; y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02f; } else if (Input.touchCount == 1 && EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId) == false) { Touch touchZero = Input.GetTouch(0); x += touchZero.deltaPosition.x * (xSpeed / 5) /* * distance */ * 0.04f; y -= touchZero.deltaPosition.y * (ySpeed / 5) * 0.02f; } if (EventSystem.current.currentSelectedGameObject == null || AlwaysOn == true) { if (Input.touchCount == 2) { // Store both touches. Touch touchZero = Input.GetTouch(0); Touch touchOne = Input.GetTouch(1); // Find the position in the previous frame of each touch. Vector2 touchZeroPrevPos = touchZero.position - touchZero.deltaPosition; Vector2 touchOnePrevPos = touchOne.position - touchOne.deltaPosition; // Find the magnitude of the vector (the distance) between the touches in each frame. float prevTouchDeltaMag = (touchZeroPrevPos - touchOnePrevPos).magnitude; float touchDeltaMag = (touchZero.position - touchOne.position).magnitude; // Find the difference in the distances between each frame. Flip it so it goes the right way float deltaMagnitudeDiff = (prevTouchDeltaMag - touchDeltaMag) * -1; distance = Mathf.Clamp(distance - (deltaMagnitudeDiff / 10) * (scrollrate / 10), distanceMin, distanceMax); } else { distance = Mathf.Clamp(distance - Input.GetAxis("Mouse ScrollWheel") * scrollrate, distanceMin, distanceMax); } } y = ClampAngle(y, yMinLimit, yMaxLimit); Quaternion rotation = Quaternion.Euler(y, x, 0); if (Clip) { RaycastHit hit; if (Physics.Linecast(tgt, transform.position, out hit)) { distance -= hit.distance; } } Vector3 negDistance = new Vector3(0.0f, 0.0f, -distance); Vector3 position = rotation * negDistance + tgt; newTransform.rotation = rotation; newTransform.position = position; if (dstTarget == null) { transform.rotation = rotation; transform.position = position; } return(newTransform); }
internal static bool Apply(CameraUpdate update, NiTransform transform, NiPoint3 result) { init(); if (update == null || transform == null || result == null) { return(false); } if (update.Values.CollisionEnabled.CurrentValue < 0.5) { return(false); } var actor = update.Target.Actor; if (actor == null) { return(false); } var cell = actor.ParentCell; if (cell == null) { return(false); } float safety = (float)(update.Values.NearClip.CurrentValue + 1.0); if (safety < 1.0f) { safety = 1.0f; } float safety2 = Math.Max(0.0f, Settings.Instance.CameraCollisionSafety); var tpos = transform.Position; TempPoint1.CopyFrom(actor.Position); TempPoint1.Z = tpos.Z; if (safety2 > 0.0f) { TempSafety.Y = -safety2 * 0.5f; TempTransform.CopyFrom(transform); TempTransform.Position.CopyFrom(TempPoint1); TempTransform.Translate(TempSafety, TempPoint1); } TempNormal.X = tpos.X - TempPoint1.X; TempNormal.Y = tpos.Y - TempPoint1.Y; TempNormal.Z = tpos.Z - TempPoint1.Z; float len = TempNormal.Length; if (len <= 0.0f) { return(false); } TempNormal.Normalize(TempNormal); TempNormal.Multiply(len + safety + safety2, TempNormal); TempPoint2.X = TempPoint1.X + TempNormal.X; TempPoint2.Y = TempPoint1.Y + TempNormal.Y; TempPoint2.Z = TempPoint1.Z + TempNormal.Z; var ls = TESObjectCELL.RayCast(new RayCastParameters() { Cell = cell, Begin = new float[] { TempPoint1.X, TempPoint1.Y, TempPoint1.Z }, End = new float[] { TempPoint2.X, TempPoint2.Y, TempPoint2.Z } }); if (ls == null || ls.Count == 0) { return(false); } RayCastResult best = null; float bestDist = 0.0f; List <NiAVObject> ignore = new List <NiAVObject>(3); { var sk = actor.GetSkeletonNode(true); if (sk != null) { ignore.Add(sk); } } { var sk = actor.GetSkeletonNode(false); if (sk != null) { ignore.Add(sk); } } if (update.CachedMounted) { var mount = actor.GetMount(); if (mount != null) { var sk = mount.GetSkeletonNode(false); if (sk != null) { ignore.Add(sk); } } } foreach (var r in ls) { if (!IsValid(r, ignore)) { continue; } float dist = r.Fraction; if (best == null) { best = r; bestDist = dist; } else if (dist < bestDist) { best = r; bestDist = dist; } } if (best == null) { return(false); } bestDist *= len + safety + safety2; bestDist -= safety + safety2; bestDist /= len + safety + safety2; // Negative is ok! result.X = (TempPoint2.X - TempPoint1.X) * bestDist + TempPoint1.X; result.Y = (TempPoint2.Y - TempPoint1.Y) * bestDist + TempPoint1.Y; result.Z = (TempPoint2.Z - TempPoint1.Z) * bestDist + TempPoint1.Z; return(true); }
protected void Awake() { tempTransform = AddMyComponent <TempTransform>(); OnAwake(); }