public void MoveSphape(Vector3 position, Quaternion rotation, Vector3 scale, float radius) { _position = position; _rotation = rotation; _localScale = scale; _radius = radius; _realRadius = radius * LocalScale.Maximum(); _circle.MoveSphape(_position, _rotation * Vector3.up, _realRadius); }
private void UpdateMatrix() { _cylinderMatrix = Matrix4x4.TRS(_position, _rotation, _localScale * _radius); Vector3 size = new Vector3(0, _lenght / 2, 0); _p1 = _cylinderMatrix.MultiplyPoint3x4(Vector3.zero - ((-size))); _p2 = _cylinderMatrix.MultiplyPoint3x4(Vector3.zero + ((-size))); _delta = _p2 - _p1; _deltaSquared = Vector3.Dot(_delta, _delta); _circle1.MoveSphape(_p1, _cylinderMatrix.UpFast(), _realRadius); _circle2.MoveSphape(_p2, _cylinderMatrix.DownFast(), _realRadius); }
private void UpdateMatrix() { _coneMatrix = Matrix4x4.TRS(_position, _rotation, _localScale * _radius); Vector3 size = new Vector3(0, _lenght / 2, 0); _p1 = _coneMatrix.MultiplyPoint3x4(Vector3.zero - ((-size))); _p2 = _coneMatrix.MultiplyPoint3x4(Vector3.zero + ((-size))); _delta = _p2 - _p1; _deltaUnit = _delta.FastNormalized(); _deltaDist = _delta.magnitude; _deltaDistSquared = Vector3.Dot(_delta, _delta); _constantIsInsideShape = (_realSquaredRadius) / _deltaDist; _heightAtApex = Vector3.Dot(_deltaUnit, _p1);// _deltaUnit.x * _p1.x + _deltaUnit.y * _p1.y + _deltaUnit.z * _p1.z; _circleBase.MoveSphape(_p2, _coneMatrix.DownFast(), _realRadius); }
private void UpdateMatrix() { _discMatrix = Matrix4x4.TRS(_position, _rotation, _localScale * _radius); _circle.MoveSphape(_position, _discMatrix.UpFast(), _realRadius); }