public void SetLookAt(zVec3 lookAt) { zVec3 pos = GetPosition(); float[] dir = new float[] { lookAt.X - pos.X, lookAt.Y - pos.Y, lookAt.Z - pos.Z }; pos.Dispose(); float revScalar = (float)Math.Sqrt(dir[0] * dir[0] + dir[1] * dir[1] + dir[2] * dir[2]); dir[0] /= revScalar; dir[1] /= revScalar; dir[2] /= revScalar; float[] upVector = new float[] { TrafoObjToWorld.get(1), TrafoObjToWorld.get(5), TrafoObjToWorld.get(9) }; float[] rightVector = new float[3]; rightVector[0] = dir[1] * upVector[2] - dir[2] * upVector[1]; rightVector[1] = dir[2] * upVector[0] - dir[0] * upVector[2]; rightVector[2] = dir[0] * upVector[1] - dir[1] * upVector[0]; TrafoObjToWorld.set(0, -1 * rightVector[0]); TrafoObjToWorld.set(4, -1 * rightVector[1]); TrafoObjToWorld.set(8, -1 * rightVector[2]); TrafoObjToWorld.set(2, dir[0]); TrafoObjToWorld.set(6, dir[1]); TrafoObjToWorld.set(10, dir[2]); }
public void SetPosition(float x, float y, float z) { TrafoObjToWorld.set(3, x); TrafoObjToWorld.set(7, y); TrafoObjToWorld.set(11, z); }
public void SetPosition(zVec3 position) { TrafoObjToWorld.set(3, position.X); TrafoObjToWorld.set(7, position.Y); TrafoObjToWorld.set(11, position.Z); }