/// <summary> /// Moves the cube to the place vector. /// The vector should be a grid vector. /// Returns if the move was sucessful. /// </summary> public bool Move(Engine engine, Vector3 place) { if (place != GridPosition) { if (Cube.IsMoveBlockSafe(engine, place)) { Cube _placeCube = Cube.IsMoveCubeSafe(engine, place); if (_placeCube == null) { Mode = CubeMode.Moving; Direction = (place * Block.Size - DrawPosition) / Speed; AnimationStep = Speed; GridPosition = place; return(true); } else { FoundCollision(engine, _placeCube, Vector3.Normalize(place * Block.Size - DrawPosition)); return(false); } } else { return(false); } } return(true); }
/// <summary> /// The update method for this block. /// </summary> public override void Update(Engine engine) { if (Mode == CubeMode.Moving) { if (AnimationStep > 0) { DrawPosition += Direction; } else { Mode = CubeMode.Normal; DrawPosition = GridPosition * Block.Size; NewStep(engine); } AnimationStep--; } }
/// <summary> /// Moves the cube to the place vector. /// The vector should be a grid vector. /// Returns if the move was sucessful. /// </summary> public bool Move(Engine engine, Vector3 place) { if (place != GridPosition) if (Cube.IsMoveBlockSafe(engine, place)) { Cube _placeCube = Cube.IsMoveCubeSafe(engine, place); if (_placeCube == null) { Mode = CubeMode.Moving; Direction = (place * Block.Size - DrawPosition) / Speed; AnimationStep = Speed; GridPosition = place; return true; } else { FoundCollision(engine, _placeCube, Vector3.Normalize(place * Block.Size - DrawPosition)); return false; } } else return false; return true; }