public uint PushInstance(Vector3 Position, float scale, Vector3 rotation) { Matrix matRot = Matrix.Identity; matRot *= Matrix.RotationX(rotation.X); matRot *= Matrix.RotationY(rotation.Y); matRot *= Matrix.RotationZ(rotation.Z); Matrix matTrans = Matrix.Translation(Position); Matrix matScale = Matrix.Scaling(scale, scale, scale); Models.MDX.MdxInstanceData inst = new Models.MDX.MdxInstanceData() { ModelMatrix = matRot * matScale * matTrans, IsSelected = 0xFFFFFFFF, }; uint id = 0; lock (mInstLock) { id = RequestInstanceId(); inst.InstanceId = id; WaitingInstances.Add(inst); } Game.GameManager.GraphicsThread.CallOnThread( () => { ExecuteTask(); }, true ); return(id); }
public uint PushInstance(Vector3 Position, float scale, Vector3 rotation) { Matrix matRot = Matrix.Identity; matRot *= Matrix.RotationX(rotation.X); matRot *= Matrix.RotationY(rotation.Y); matRot *= Matrix.RotationZ(rotation.Z); Matrix matTrans = Matrix.Translation(Position); Matrix matScale = Matrix.Scaling(scale, scale, scale); Models.MDX.MdxInstanceData inst = new Models.MDX.MdxInstanceData() { ModelMatrix = matRot * matScale * matTrans, IsSelected = 0xFFFFFFFF, }; uint id = 0; lock (mInstLock) { id = RequestInstanceId(); inst.InstanceId = id; WaitingInstances.Add(inst); } Game.GameManager.GraphicsThread.CallOnThread( () => { ExecuteTask(); }, true ); return id; }