public void createGameEntities() { ulong id = ComponentManager.GetNewId(); ChopperComponent chopper = new ChopperComponent(); TransformComponent transform = new TransformComponent(new Vector3(200.0f, 300.0f, 100.0f), 0f, 10f); Model model = Content.Load <Model>(@"Models/Chopper"); CameraComponent camera = new CameraComponent(graphics.GraphicsDevice, cameraPosition, Vector3.Zero, Vector3.Up, id); ComponentManager.StoreComponent(id, camera); ComponentManager.StoreComponent(id, new ModelComponent(model, CHOPPER_SCALE, CHOPPER_TRANSLATION, 0f, 0f, MathHelper.PiOver2, true) { world = Matrix.Identity }); ComponentManager.StoreComponent(id, transform); ComponentManager.StoreComponent(id, chopper); }
public void Update() { List <ulong> models = ComponentManager.GetAllEntitiesWithComp <ModelComponent>(); foreach (ulong mC in models) { if (!ComponentManager.HasComponent <ChopperComponent>(mC)) { continue; } ModelComponent m = ComponentManager.GetComponent <ModelComponent>(mC); ChopperComponent chopper = ComponentManager.GetComponent <ChopperComponent>(mC); Quaternion qX, qY; //qy = Quaternion.CreateFromRotationMatrix(Matrix.CreateRotationY(chopper.rotorAngle)); //qx = Quaternion.CreateFromRotationMatrix(Matrix.CreateRotationX(chopper.rotorAngle)); qY = m.model.Meshes[0].ParentBone.Transform.Rotation * Quaternion.CreateFromRotationMatrix(Matrix.CreateRotationY(chopper.rotorAngle)); qX = m.model.Meshes[2].ParentBone.Transform.Rotation * Quaternion.CreateFromRotationMatrix(Matrix.CreateRotationX(chopper.rotorAngle)); qY.Normalize(); qX.Normalize(); m.modelMeshWorldMatrices[0] = Matrix.CreateTranslation(m.modelMeshWorldMatrices[0].Translation) //* Matrix.CreateRotationY(chopper.rotorAngle) * Matrix.CreateFromQuaternion(qY) * Matrix.CreateTranslation(-m.modelMeshWorldMatrices[0].Translation); m.modelMeshWorldMatrices[1] = Matrix.CreateTranslation(Vector3.Zero); m.modelMeshWorldMatrices[2] = Matrix.CreateTranslation(m.modelMeshWorldMatrices[2].Translation) //* Matrix.CreateRotationX(chopper.rotorAngle) * Matrix.CreateFromQuaternion(qX) * Matrix.CreateTranslation(-m.modelMeshWorldMatrices[2].Translation); chopper.rotorAngle += .003f; } }